@eo-sdk/client 10.7.0-rc.5 → 11.0.0-rc.1

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 (890) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
  3. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +1 -1
  4. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
  5. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +3 -1
  6. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
  7. package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts +2 -0
  8. package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts.map +1 -1
  9. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +1 -1
  10. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +1 -1
  11. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +1 -1
  12. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
  13. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +1 -1
  14. package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +1 -1
  15. package/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.d.ts +1 -1
  16. package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +1 -1
  17. package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.d.ts +1 -1
  18. package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +1 -1
  19. package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.d.ts +1 -1
  20. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts +21 -0
  21. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts.map +1 -0
  22. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +15 -8
  23. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts.map +1 -1
  24. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.d.ts +7 -0
  25. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.d.ts.map +1 -0
  26. package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +1 -1
  27. package/app/eo-client/eo-client.module.d.ts +18 -17
  28. package/app/eo-client/eo-client.module.d.ts.map +1 -1
  29. package/app/eo-client/settings/settings.component.d.ts +2 -11
  30. package/app/eo-client/settings/settings.component.d.ts.map +1 -1
  31. package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
  32. package/app/eo-framework/accordion/simple-accordion/simple-accordion.component.d.ts +1 -1
  33. package/app/eo-framework/actions/action.module.d.ts.map +1 -1
  34. package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts +1 -1
  35. package/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.d.ts +1 -1
  36. package/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.d.ts +1 -1
  37. package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts +1 -1
  38. package/app/eo-framework/actions/actions/custom-actions/custom-actions.component.d.ts +1 -1
  39. package/app/eo-framework/actions/actions/delete-action/delete/delete.component.d.ts +1 -1
  40. package/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.d.ts +1 -1
  41. package/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.d.ts +1 -1
  42. package/app/eo-framework/actions/actions/email/email/email.component.d.ts +1 -1
  43. package/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.d.ts +1 -1
  44. package/app/eo-framework/actions/actions/open-document-action/open-document-action.component.d.ts +1 -1
  45. package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +1 -1
  46. package/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.d.ts +1 -1
  47. package/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.d.ts +1 -1
  48. package/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.d.ts +1 -1
  49. package/app/eo-framework/actions/actions/workflow-action/workflow-action.component.d.ts +1 -1
  50. package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +1 -1
  51. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +7 -3
  52. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  53. package/app/eo-framework/app-shell/app-bar/context-search/context-search.component.d.ts +1 -1
  54. package/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.d.ts +1 -1
  55. package/app/eo-framework/app-shell/app-shell.module.d.ts +17 -16
  56. package/app/eo-framework/app-shell/app-shell.module.d.ts.map +1 -1
  57. package/app/eo-framework/app-shell/index.d.ts +1 -0
  58. package/app/eo-framework/app-shell/index.d.ts.map +1 -1
  59. package/app/eo-framework/app-shell/license-warning/license-warning.component.d.ts +10 -0
  60. package/app/eo-framework/app-shell/license-warning/license-warning.component.d.ts.map +1 -0
  61. package/app/eo-framework/cta/component/cta.component.d.ts +1 -1
  62. package/app/eo-framework/form-elements/checkbox/checkbox.component.d.ts +1 -1
  63. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +1 -1
  64. package/app/eo-framework/form-elements/date/date.component.d.ts +1 -1
  65. package/app/eo-framework/form-elements/date/year-range/year-range.directive.d.ts +1 -1
  66. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +2 -1
  67. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
  68. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +1 -1
  69. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  70. package/app/eo-framework/form-elements/form-input/form-input.component.d.ts +1 -1
  71. package/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.d.ts +1 -1
  72. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +1 -1
  73. package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts +1 -1
  74. package/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.d.ts +1 -1
  75. package/app/eo-framework/form-elements/number/number.component.d.ts +1 -1
  76. package/app/eo-framework/form-elements/number-range/number-range.component.d.ts +1 -1
  77. package/app/eo-framework/form-elements/organization/organization.component.d.ts +1 -1
  78. package/app/eo-framework/form-elements/password/password.component.d.ts +1 -1
  79. package/app/eo-framework/form-elements/reference/reference.component.d.ts +1 -1
  80. package/app/eo-framework/form-elements/string/string.component.d.ts +1 -1
  81. package/app/eo-framework/grid/column-configurator/column-configurator.component.d.ts +1 -1
  82. package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts +1 -1
  83. package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts.map +1 -1
  84. package/app/eo-framework/grid/extensions/filter/abstract-filter.component.d.ts +3 -3
  85. package/app/eo-framework/grid/extensions/filter/abstract-filter.component.d.ts.map +1 -1
  86. package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts +1 -1
  87. package/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.d.ts +1 -1
  88. package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts +3 -3
  89. package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts.map +1 -1
  90. package/app/eo-framework/grid/extensions/pagination/pagination.component.d.ts +1 -1
  91. package/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.d.ts +1 -1
  92. package/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.d.ts +1 -1
  93. package/app/eo-framework/grid/extensions/total-count/total-count.component.d.ts +1 -1
  94. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
  95. package/app/eo-framework/grid/grid.component.d.ts +6 -17
  96. package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
  97. package/app/eo-framework/grid/grid.module.d.ts +0 -3
  98. package/app/eo-framework/grid/grid.module.d.ts.map +1 -1
  99. package/app/eo-framework/grid/row-grouping/batchRemover.d.ts +13 -0
  100. package/app/eo-framework/grid/row-grouping/batchRemover.d.ts.map +1 -0
  101. package/app/eo-framework/grid/row-grouping/group-stage.d.ts +14 -14
  102. package/app/eo-framework/grid/row-grouping/group-stage.d.ts.map +1 -1
  103. package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts +1 -0
  104. package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts.map +1 -1
  105. package/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.d.ts +1 -1
  106. package/app/eo-framework/inbox-details/inbox-details.component.d.ts +1 -1
  107. package/app/eo-framework/list-container/list-container.component.d.ts +1 -1
  108. package/app/eo-framework/media/media.component.d.ts +1 -1
  109. package/app/eo-framework/object-details/edit-icon/edit-icon.component.d.ts +1 -1
  110. package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts +1 -1
  111. package/app/eo-framework/object-details/object-details.component.d.ts +1 -1
  112. package/app/eo-framework/object-details/object-history/history-filter/history-filter.component.d.ts +1 -1
  113. package/app/eo-framework/object-details/object-history/object-history.component.d.ts +1 -1
  114. package/app/eo-framework/object-details/object-links/object-links.component.d.ts +1 -1
  115. package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts +1 -1
  116. package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts +1 -1
  117. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +4 -1
  118. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  119. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +1 -1
  120. package/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.d.ts +1 -1
  121. package/app/eo-framework/object-form/object-form/object-form.component.d.ts +1 -1
  122. package/app/eo-framework/object-form/object-form-edit/object-form-edit.component.d.ts +1 -1
  123. package/app/eo-framework/object-state-details/object-state-details.component.d.ts +1 -1
  124. package/app/eo-framework/plugins/plugin.component.d.ts +2 -2
  125. package/app/eo-framework/plugins/plugins.module.d.ts.map +1 -1
  126. package/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.d.ts +1 -1
  127. package/app/eo-framework/prepare-details/prepare-details.component.d.ts +1 -1
  128. package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
  129. package/app/eo-framework/process/details/process-details.component.d.ts +1 -1
  130. package/app/eo-framework/process/history/process-history.component.d.ts +1 -1
  131. package/app/eo-framework/process/process-file/process-file.component.d.ts +1 -1
  132. package/app/eo-framework/process-form/process-form.component.d.ts +1 -1
  133. package/app/eo-framework/quick-search/quick-search/quick-search.component.d.ts +1 -1
  134. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +1 -1
  135. package/app/eo-framework/result-list/result-list.component.d.ts +1 -1
  136. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  137. package/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.d.ts +1 -1
  138. package/app/eo-framework/settings/permissions/permissions.component.d.ts +1 -1
  139. package/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.d.ts +1 -1
  140. package/app/eo-framework/shortcuts/shortcuts.directive.d.ts +1 -1
  141. package/app/eo-framework/stored-query/stored-query/stored-query.component.d.ts +1 -1
  142. package/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.d.ts +1 -1
  143. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +1 -1
  144. package/app/eo-framework/tree/tree-node/tree-node.component.d.ts +1 -1
  145. package/app/eo-framework/tree/tree.component.d.ts +1 -1
  146. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +1 -1
  147. package/app/eo-framework/ui/eo-icon/eo-icon.component.d.ts +1 -1
  148. package/app/eo-framework/ui/error-message/error-message.component.d.ts +1 -1
  149. package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts +1 -1
  150. package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts.map +1 -1
  151. package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +1 -1
  152. package/app/eo-framework/ui/loading-spinner/loading-spinner.component.d.ts +1 -1
  153. package/app/eo-framework/ui/overlay/overlay.component.d.ts +1 -1
  154. package/app/eo-framework/ui/query-scope-select/query-scope-select.component.d.ts +1 -1
  155. package/app/eo-framework/ui/rtl-aware/rtl-aware.directive.d.ts +1 -1
  156. package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts +1 -1
  157. package/app/eo-framework/ui/user-avatar/user-avatar.component.d.ts +1 -1
  158. package/app/eo-framework/upload-overlay/upload-overlay-guard.service.d.ts +2 -2
  159. package/app/eo-framework/upload-overlay/upload-overlay-guard.service.d.ts.map +1 -1
  160. package/app/eo-framework/util/directive/prevent-double-click.directive.d.ts +1 -1
  161. package/app/eo-framework-core/api/grid.service.d.ts +4 -3
  162. package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
  163. package/app/eo-framework-core/error-handler/error-handler.service.d.ts.map +1 -1
  164. package/app/eo-framework-core/pending-changes/pending-changes-guard.service.d.ts +1 -2
  165. package/app/eo-framework-core/pending-changes/pending-changes-guard.service.d.ts.map +1 -1
  166. package/app/eo-framework-core/route-guards/auth/auth-guard.service.d.ts +2 -2
  167. package/app/eo-framework-core/route-guards/auth/auth-guard.service.d.ts.map +1 -1
  168. package/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.d.ts +2 -2
  169. package/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.d.ts.map +1 -1
  170. package/assets/_default/i18n/de.json +11 -5
  171. package/assets/_default/i18n/en.json +13 -7
  172. package/esm2022/app/eo-client/about-state/about-state.component.mjs +81 -0
  173. package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +307 -0
  174. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +296 -0
  175. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +296 -0
  176. package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +1 -1
  177. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +121 -0
  178. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +125 -0
  179. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +193 -0
  180. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +164 -0
  181. package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +59 -0
  182. package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +8 -8
  183. package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +60 -0
  184. package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +42 -0
  185. package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +69 -0
  186. package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +43 -0
  187. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +69 -0
  188. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +185 -0
  189. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.mjs +2 -0
  190. package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +123 -0
  191. package/{esm2020 → esm2022}/app/eo-client/eo-client-routing.module.mjs +5 -5
  192. package/esm2022/app/eo-client/eo-client.module.mjs +173 -0
  193. package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +150 -0
  194. package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +218 -0
  195. package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state-routing.module.mjs +5 -5
  196. package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state.module.mjs +13 -13
  197. package/esm2022/app/eo-client/login/login.component.mjs +111 -0
  198. package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +227 -0
  199. package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +342 -0
  200. package/{esm2020 → esm2022}/app/eo-client/object-state/object-state-routing.module.mjs +5 -5
  201. package/esm2022/app/eo-client/object-state/object-state-service/object-state.service.mjs +134 -0
  202. package/{esm2020 → esm2022}/app/eo-client/object-state/object-state.module.mjs +11 -11
  203. package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +159 -0
  204. package/{esm2020 → esm2022}/app/eo-client/prepare-state/prepare-state-routing.module.mjs +5 -5
  205. package/{esm2020 → esm2022}/app/eo-client/prepare-state/prepare-state.module.mjs +15 -15
  206. package/esm2022/app/eo-client/process-state/process-state.component.mjs +330 -0
  207. package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +150 -0
  208. package/esm2022/app/eo-client/result-state/result-state.component.mjs +71 -0
  209. package/esm2022/app/eo-client/settings/settings.component.mjs +275 -0
  210. package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +209 -0
  211. package/esm2022/app/eo-client/version-state/version-state.component.mjs +142 -0
  212. package/{esm2020 → esm2022}/app/eo-framework/accordion/accordion.module.mjs +5 -5
  213. package/{esm2020 → esm2022}/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +4 -4
  214. package/{esm2020 → esm2022}/app/eo-framework/actions/action-menu/action-component-anchor/action-component-anchor.directive.mjs +5 -5
  215. package/esm2022/app/eo-framework/actions/action-menu/action-menu.component.mjs +208 -0
  216. package/esm2022/app/eo-framework/actions/action-service/action.service.mjs +185 -0
  217. package/esm2022/app/eo-framework/actions/action-target.mjs +28 -0
  218. package/esm2022/app/eo-framework/actions/action.module.mjs +269 -0
  219. package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +201 -0
  220. package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +50 -0
  221. package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +134 -0
  222. package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +50 -0
  223. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.mjs +6 -6
  224. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing-action.mjs +5 -5
  225. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/clipboard/clipboard-action.mjs +5 -5
  226. package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +95 -0
  227. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/copy-action/copy-action.mjs +5 -5
  228. package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +88 -0
  229. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cut-action/cut-action.mjs +5 -5
  230. package/esm2022/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +111 -0
  231. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-action/delete-action.mjs +5 -5
  232. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-action/delete-prepared-action.mjs +5 -5
  233. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.mjs +6 -6
  234. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-content-action/delete-content-action.mjs +5 -5
  235. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/download-action/download-action.mjs +5 -5
  236. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.mjs +6 -6
  237. package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +97 -0
  238. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/email/email-action.mjs +5 -5
  239. package/esm2022/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +76 -0
  240. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/definalize-action.mjs +5 -5
  241. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/finalize-action.mjs +6 -6
  242. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.mjs +6 -6
  243. package/esm2022/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +56 -0
  244. package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +69 -0
  245. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/open-document-action/open-document-action.mjs +5 -5
  246. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/open-versions-action/open-versions-action.mjs +5 -5
  247. package/esm2022/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +45 -0
  248. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/restore-version-action/restore-version-action.mjs +5 -5
  249. package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +89 -0
  250. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/share-object-action/share-object-action.mjs +5 -5
  251. package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +184 -0
  252. package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +53 -0
  253. package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +146 -0
  254. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +5 -5
  255. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/unlock-action/unlock-action.mjs +5 -5
  256. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/update-resubmission-action/update-resubmission-action.mjs +5 -5
  257. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.mjs +5 -5
  258. package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +107 -0
  259. package/{esm2020 → esm2022}/app/eo-framework/actions/actions/workflow-action/workflow-action.component.mjs +5 -5
  260. package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +173 -0
  261. package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/app-add/app-add.component.mjs +5 -5
  262. package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +204 -0
  263. package/esm2022/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +112 -0
  264. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +805 -0
  265. package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +46 -0
  266. package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +6 -6
  267. package/esm2022/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +42 -0
  268. package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-shell-routing.module.mjs +5 -5
  269. package/esm2022/app/eo-framework/app-shell/app-shell.module.mjs +108 -0
  270. package/{esm2020 → esm2022}/app/eo-framework/app-shell/index.mjs +2 -1
  271. package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +26 -0
  272. package/{esm2020 → esm2022}/app/eo-framework/cta/component/cta.component.mjs +4 -4
  273. package/{esm2020 → esm2022}/app/eo-framework/cta/cta.module.mjs +5 -5
  274. package/{esm2020 → esm2022}/app/eo-framework/eo-framework.module.mjs +110 -110
  275. package/{esm2020 → esm2022}/app/eo-framework/error/error.module.mjs +9 -9
  276. package/{esm2020 → esm2022}/app/eo-framework/error/error404/error404.component.mjs +4 -4
  277. package/{esm2020 → esm2022}/app/eo-framework/error/not-found/not-found.component.mjs +5 -5
  278. package/esm2022/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +62 -0
  279. package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +312 -0
  280. package/esm2022/app/eo-framework/form-elements/date/date.component.mjs +101 -0
  281. package/esm2022/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +44 -0
  282. package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +188 -0
  283. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +306 -0
  284. package/{esm2020 → esm2022}/app/eo-framework/form-elements/form-elements.module.mjs +76 -76
  285. package/esm2022/app/eo-framework/form-elements/form-input/form-input.component.mjs +73 -0
  286. package/esm2022/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +35 -0
  287. package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +252 -0
  288. package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +253 -0
  289. package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +33 -0
  290. package/esm2022/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +106 -0
  291. package/esm2022/app/eo-framework/form-elements/number/number.component.mjs +171 -0
  292. package/esm2022/app/eo-framework/form-elements/number-range/number-range.component.mjs +138 -0
  293. package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +216 -0
  294. package/{esm2020 → esm2022}/app/eo-framework/form-elements/password/password.component.mjs +4 -4
  295. package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +223 -0
  296. package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +254 -0
  297. package/{esm2020 → esm2022}/app/eo-framework/frame/frame.component.mjs +5 -5
  298. package/esm2022/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +211 -0
  299. package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +83 -0
  300. package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/empty/empty.component.mjs +4 -4
  301. package/esm2022/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +65 -0
  302. package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +82 -0
  303. package/esm2022/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +85 -0
  304. package/esm2022/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +98 -0
  305. package/esm2022/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +52 -0
  306. package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.mjs +6 -6
  307. package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +4 -4
  308. package/esm2022/app/eo-framework/grid/extensions/services/list-settings.service.mjs +42 -0
  309. package/esm2022/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +36 -0
  310. package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +94 -0
  311. package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +75 -0
  312. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +96 -0
  313. package/esm2022/app/eo-framework/grid/filters/list-filter.component.mjs +54 -0
  314. package/esm2022/app/eo-framework/grid/filters/organization-filter.component.mjs +64 -0
  315. package/esm2022/app/eo-framework/grid/grid.component.mjs +420 -0
  316. package/esm2022/app/eo-framework/grid/grid.module.mjs +97 -0
  317. package/esm2022/app/eo-framework/grid/row-grouping/batchRemover.mjs +50 -0
  318. package/esm2022/app/eo-framework/grid/row-grouping/group-stage.mjs +623 -0
  319. package/{esm2020 → esm2022}/app/eo-framework/grid/row-grouping/row-grouping.module.mjs +2 -1
  320. package/{esm2020 → esm2022}/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.mjs +5 -5
  321. package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +457 -0
  322. package/esm2022/app/eo-framework/list-container/list-container.component.mjs +101 -0
  323. package/{esm2020 → esm2022}/app/eo-framework/list-container/list-container.module.mjs +7 -7
  324. package/esm2022/app/eo-framework/media/content-preview.service.mjs +42 -0
  325. package/esm2022/app/eo-framework/media/media.component.mjs +315 -0
  326. package/{esm2020 → esm2022}/app/eo-framework/media/media.module.mjs +13 -13
  327. package/{esm2020 → esm2022}/app/eo-framework/object-details/edit-icon/edit-icon.component.mjs +5 -5
  328. package/esm2022/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +104 -0
  329. package/esm2022/app/eo-framework/object-details/object-details.component.mjs +439 -0
  330. package/{esm2020 → esm2022}/app/eo-framework/object-details/object-details.module.mjs +42 -42
  331. package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +32 -0
  332. package/{esm2020 → esm2022}/app/eo-framework/object-details/object-history/history-filter/history-filter.component.mjs +4 -4
  333. package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +82 -0
  334. package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +292 -0
  335. package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +5 -5
  336. package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +123 -0
  337. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +639 -0
  338. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +238 -0
  339. package/esm2022/app/eo-framework/object-form/object-form/form-validation/form-validation.mjs +40 -0
  340. package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +81 -0
  341. package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +113 -0
  342. package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +267 -0
  343. package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +148 -0
  344. package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +216 -0
  345. package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +717 -0
  346. package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form.module.mjs +37 -37
  347. package/esm2022/app/eo-framework/object-state-details/object-state-details.component.mjs +135 -0
  348. package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.component.mjs +16 -16
  349. package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.directive.mjs +5 -5
  350. package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.service.mjs +6 -6
  351. package/esm2022/app/eo-framework/plugins/plugins.module.mjs +55 -0
  352. package/{esm2020 → esm2022}/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.mjs +4 -4
  353. package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +568 -0
  354. package/esm2022/app/eo-framework/process/details/process-details.component.mjs +226 -0
  355. package/{esm2020 → esm2022}/app/eo-framework/process/history/process-history.component.mjs +4 -4
  356. package/{esm2020 → esm2022}/app/eo-framework/process/process-file/process-file.component.mjs +6 -6
  357. package/esm2022/app/eo-framework/process-form/process-form.component.mjs +50 -0
  358. package/{esm2020 → esm2022}/app/eo-framework/process-form/process-form.module.mjs +11 -11
  359. package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +220 -0
  360. package/{esm2020 → esm2022}/app/eo-framework/quick-search/quick-search.module.mjs +11 -11
  361. package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +271 -0
  362. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +384 -0
  363. package/{esm2020 → esm2022}/app/eo-framework/result-list/result-list.module.mjs +11 -11
  364. package/esm2022/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +125 -0
  365. package/{esm2020 → esm2022}/app/eo-framework/settings/permissions/permissions.component.mjs +4 -4
  366. package/{esm2020 → esm2022}/app/eo-framework/settings/settings.module.mjs +13 -13
  367. package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +65 -0
  368. package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +130 -0
  369. package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcut.interface.mjs +1 -1
  370. package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcuts.directive.mjs +5 -5
  371. package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcuts.module.mjs +9 -9
  372. package/esm2022/app/eo-framework/shortcuts/shortcuts.service.mjs +45 -0
  373. package/esm2022/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +225 -0
  374. package/esm2022/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +46 -0
  375. package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +501 -0
  376. package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query.module.mjs +20 -20
  377. package/{esm2020 → esm2022}/app/eo-framework/tree/tree-node/tree-node.component.mjs +5 -5
  378. package/esm2022/app/eo-framework/tree/tree.component.mjs +281 -0
  379. package/{esm2020 → esm2022}/app/eo-framework/tree/tree.module.mjs +7 -7
  380. package/{esm2020 → esm2022}/app/eo-framework/ui/animations/panel-loading.animation.mjs +1 -1
  381. package/esm2022/app/eo-framework/ui/clipboard/clipboard.component.mjs +159 -0
  382. package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +130 -0
  383. package/esm2022/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +119 -0
  384. package/esm2022/app/eo-framework/ui/error-message/error-message.component.mjs +33 -0
  385. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +50 -0
  386. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +147 -0
  387. package/{esm2020 → esm2022}/app/eo-framework/ui/loading-spinner/loading-spinner.component.mjs +8 -8
  388. package/esm2022/app/eo-framework/ui/outside-click/outside-click.directive.mjs +60 -0
  389. package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +71 -0
  390. package/{esm2020 → esm2022}/app/eo-framework/ui/query-scope-select/query-scope-select.component.mjs +5 -5
  391. package/esm2022/app/eo-framework/ui/router-link/router-link.directive.mjs +26 -0
  392. package/esm2022/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +57 -0
  393. package/esm2022/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +32 -0
  394. package/{esm2020 → esm2022}/app/eo-framework/ui/ui.module.mjs +59 -59
  395. package/esm2022/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +54 -0
  396. package/esm2022/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +17 -0
  397. package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +397 -0
  398. package/{esm2020 → esm2022}/app/eo-framework/util/directive/prevent-double-click.directive.mjs +5 -5
  399. package/esm2022/app/eo-framework/util/directive/trap-focus.directive.mjs +69 -0
  400. package/esm2022/app/eo-framework/util/services/utilities.service.mjs +25 -0
  401. package/esm2022/app/eo-framework/util/sortable/order-by.pipe.mjs +48 -0
  402. package/{esm2020 → esm2022}/app/eo-framework/util/util.module.mjs +5 -5
  403. package/esm2022/app/eo-framework-core/agent/agent.service.mjs +178 -0
  404. package/esm2022/app/eo-framework-core/api/grid.service.mjs +728 -0
  405. package/esm2022/app/eo-framework-core/api/plugins.service.mjs +258 -0
  406. package/esm2022/app/eo-framework-core/empty-state/empty-state.service.mjs +53 -0
  407. package/esm2022/app/eo-framework-core/eo-framework-core.module.mjs +105 -0
  408. package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +89 -0
  409. package/esm2022/app/eo-framework-core/layout/layout.service.mjs +106 -0
  410. package/esm2022/app/eo-framework-core/location/location.service.mjs +146 -0
  411. package/esm2022/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +18 -0
  412. package/esm2022/app/eo-framework-core/pending-changes/pending-changes.service.mjs +112 -0
  413. package/esm2022/app/eo-framework-core/pipes/filesize.pipe.mjs +30 -0
  414. package/{esm2020 → esm2022}/app/eo-framework-core/pipes/keys.pipe.mjs +4 -4
  415. package/esm2022/app/eo-framework-core/pipes/locale-date.pipe.mjs +63 -0
  416. package/esm2022/app/eo-framework-core/pipes/locale-number.pipe.mjs +109 -0
  417. package/{esm2020 → esm2022}/app/eo-framework-core/pipes/pipes.module.mjs +19 -19
  418. package/{esm2020 → esm2022}/app/eo-framework-core/pipes/safe-html.pipe.mjs +5 -5
  419. package/esm2022/app/eo-framework-core/references/reference.service.mjs +266 -0
  420. package/esm2022/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +29 -0
  421. package/esm2022/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +55 -0
  422. package/esm2022/app/eo-framework-core/search/app-search.service.mjs +387 -0
  423. package/esm2022/app/eo-framework-core/selection/selection.service.mjs +63 -0
  424. package/esm2022/app/eo-framework-core/title/page-title.service.mjs +42 -0
  425. package/{fesm2020 → fesm2022}/eo-sdk-client.mjs +2617 -2254
  426. package/fesm2022/eo-sdk-client.mjs.map +1 -0
  427. package/misc/scripts/copy-client-assets.js +1 -1
  428. package/package.json +31 -44
  429. package/styles.css +725 -550
  430. package/styles.scss +3 -3
  431. package/esm2020/app/eo-client/about-state/about-state.component.mjs +0 -81
  432. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +0 -305
  433. package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +0 -288
  434. package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +0 -265
  435. package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +0 -121
  436. package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +0 -125
  437. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +0 -192
  438. package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +0 -164
  439. package/esm2020/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +0 -59
  440. package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +0 -60
  441. package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +0 -42
  442. package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +0 -69
  443. package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +0 -43
  444. package/esm2020/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +0 -116
  445. package/esm2020/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +0 -123
  446. package/esm2020/app/eo-client/eo-client.module.mjs +0 -170
  447. package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +0 -150
  448. package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +0 -218
  449. package/esm2020/app/eo-client/login/login.component.mjs +0 -111
  450. package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +0 -227
  451. package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +0 -342
  452. package/esm2020/app/eo-client/object-state/object-state-service/object-state.service.mjs +0 -134
  453. package/esm2020/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +0 -159
  454. package/esm2020/app/eo-client/process-state/process-state.component.mjs +0 -330
  455. package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +0 -150
  456. package/esm2020/app/eo-client/result-state/result-state.component.mjs +0 -71
  457. package/esm2020/app/eo-client/settings/settings.component.mjs +0 -287
  458. package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +0 -209
  459. package/esm2020/app/eo-client/version-state/version-state.component.mjs +0 -142
  460. package/esm2020/app/eo-framework/actions/action-menu/action-menu.component.mjs +0 -208
  461. package/esm2020/app/eo-framework/actions/action-service/action.service.mjs +0 -185
  462. package/esm2020/app/eo-framework/actions/action-target.mjs +0 -28
  463. package/esm2020/app/eo-framework/actions/action.module.mjs +0 -274
  464. package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +0 -201
  465. package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +0 -50
  466. package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +0 -134
  467. package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +0 -50
  468. package/esm2020/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +0 -95
  469. package/esm2020/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +0 -88
  470. package/esm2020/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +0 -111
  471. package/esm2020/app/eo-framework/actions/actions/email/email/email.component.mjs +0 -97
  472. package/esm2020/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +0 -76
  473. package/esm2020/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +0 -56
  474. package/esm2020/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +0 -69
  475. package/esm2020/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +0 -45
  476. package/esm2020/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +0 -89
  477. package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +0 -184
  478. package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +0 -53
  479. package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +0 -146
  480. package/esm2020/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +0 -107
  481. package/esm2020/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +0 -173
  482. package/esm2020/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +0 -203
  483. package/esm2020/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +0 -112
  484. package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +0 -793
  485. package/esm2020/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +0 -46
  486. package/esm2020/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +0 -42
  487. package/esm2020/app/eo-framework/app-shell/app-shell.module.mjs +0 -102
  488. package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +0 -62
  489. package/esm2020/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +0 -312
  490. package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +0 -101
  491. package/esm2020/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +0 -44
  492. package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +0 -184
  493. package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +0 -303
  494. package/esm2020/app/eo-framework/form-elements/form-input/form-input.component.mjs +0 -73
  495. package/esm2020/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +0 -35
  496. package/esm2020/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +0 -252
  497. package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +0 -253
  498. package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +0 -33
  499. package/esm2020/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +0 -106
  500. package/esm2020/app/eo-framework/form-elements/number/number.component.mjs +0 -171
  501. package/esm2020/app/eo-framework/form-elements/number-range/number-range.component.mjs +0 -138
  502. package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +0 -216
  503. package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +0 -223
  504. package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +0 -254
  505. package/esm2020/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +0 -211
  506. package/esm2020/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +0 -83
  507. package/esm2020/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +0 -65
  508. package/esm2020/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +0 -82
  509. package/esm2020/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +0 -85
  510. package/esm2020/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +0 -98
  511. package/esm2020/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +0 -52
  512. package/esm2020/app/eo-framework/grid/extensions/services/list-settings.service.mjs +0 -42
  513. package/esm2020/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +0 -36
  514. package/esm2020/app/eo-framework/grid/filters/codesystem-filter.component.mjs +0 -94
  515. package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +0 -75
  516. package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +0 -96
  517. package/esm2020/app/eo-framework/grid/filters/list-filter.component.mjs +0 -54
  518. package/esm2020/app/eo-framework/grid/filters/organization-filter.component.mjs +0 -64
  519. package/esm2020/app/eo-framework/grid/grid.component.mjs +0 -421
  520. package/esm2020/app/eo-framework/grid/grid.module.mjs +0 -107
  521. package/esm2020/app/eo-framework/grid/row-grouping/group-stage.mjs +0 -528
  522. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +0 -457
  523. package/esm2020/app/eo-framework/list-container/list-container.component.mjs +0 -101
  524. package/esm2020/app/eo-framework/media/content-preview.service.mjs +0 -42
  525. package/esm2020/app/eo-framework/media/media.component.mjs +0 -314
  526. package/esm2020/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +0 -104
  527. package/esm2020/app/eo-framework/object-details/object-details.component.mjs +0 -439
  528. package/esm2020/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +0 -32
  529. package/esm2020/app/eo-framework/object-details/object-history/object-history.component.mjs +0 -82
  530. package/esm2020/app/eo-framework/object-details/object-links/object-links.component.mjs +0 -292
  531. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +0 -123
  532. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +0 -634
  533. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +0 -238
  534. package/esm2020/app/eo-framework/object-form/object-form/form-validation/form-validation.mjs +0 -40
  535. package/esm2020/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +0 -81
  536. package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +0 -113
  537. package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +0 -267
  538. package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +0 -148
  539. package/esm2020/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +0 -216
  540. package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +0 -717
  541. package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +0 -134
  542. package/esm2020/app/eo-framework/plugins/plugins.module.mjs +0 -59
  543. package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +0 -557
  544. package/esm2020/app/eo-framework/process/details/process-details.component.mjs +0 -226
  545. package/esm2020/app/eo-framework/process-form/process-form.component.mjs +0 -50
  546. package/esm2020/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +0 -220
  547. package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +0 -271
  548. package/esm2020/app/eo-framework/result-list/result-list.component.mjs +0 -368
  549. package/esm2020/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +0 -125
  550. package/esm2020/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +0 -65
  551. package/esm2020/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +0 -130
  552. package/esm2020/app/eo-framework/shortcuts/shortcuts.service.mjs +0 -45
  553. package/esm2020/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +0 -225
  554. package/esm2020/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +0 -46
  555. package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +0 -501
  556. package/esm2020/app/eo-framework/tree/tree.component.mjs +0 -281
  557. package/esm2020/app/eo-framework/ui/clipboard/clipboard.component.mjs +0 -159
  558. package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +0 -130
  559. package/esm2020/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +0 -119
  560. package/esm2020/app/eo-framework/ui/error-message/error-message.component.mjs +0 -33
  561. package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +0 -41
  562. package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +0 -146
  563. package/esm2020/app/eo-framework/ui/outside-click/outside-click.directive.mjs +0 -60
  564. package/esm2020/app/eo-framework/ui/overlay/overlay.component.mjs +0 -71
  565. package/esm2020/app/eo-framework/ui/router-link/router-link.directive.mjs +0 -26
  566. package/esm2020/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +0 -57
  567. package/esm2020/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +0 -32
  568. package/esm2020/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +0 -54
  569. package/esm2020/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +0 -17
  570. package/esm2020/app/eo-framework/upload-overlay/upload-overlay.component.mjs +0 -397
  571. package/esm2020/app/eo-framework/util/directive/trap-focus.directive.mjs +0 -69
  572. package/esm2020/app/eo-framework/util/services/utilities.service.mjs +0 -25
  573. package/esm2020/app/eo-framework/util/sortable/order-by.pipe.mjs +0 -48
  574. package/esm2020/app/eo-framework-core/agent/agent.service.mjs +0 -178
  575. package/esm2020/app/eo-framework-core/api/grid.service.mjs +0 -732
  576. package/esm2020/app/eo-framework-core/api/plugins.service.mjs +0 -258
  577. package/esm2020/app/eo-framework-core/empty-state/empty-state.service.mjs +0 -53
  578. package/esm2020/app/eo-framework-core/eo-framework-core.module.mjs +0 -105
  579. package/esm2020/app/eo-framework-core/error-handler/error-handler.service.mjs +0 -89
  580. package/esm2020/app/eo-framework-core/layout/layout.service.mjs +0 -106
  581. package/esm2020/app/eo-framework-core/location/location.service.mjs +0 -146
  582. package/esm2020/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +0 -18
  583. package/esm2020/app/eo-framework-core/pending-changes/pending-changes.service.mjs +0 -112
  584. package/esm2020/app/eo-framework-core/pipes/filesize.pipe.mjs +0 -30
  585. package/esm2020/app/eo-framework-core/pipes/locale-date.pipe.mjs +0 -63
  586. package/esm2020/app/eo-framework-core/pipes/locale-number.pipe.mjs +0 -109
  587. package/esm2020/app/eo-framework-core/references/reference.service.mjs +0 -266
  588. package/esm2020/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +0 -29
  589. package/esm2020/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +0 -55
  590. package/esm2020/app/eo-framework-core/search/app-search.service.mjs +0 -387
  591. package/esm2020/app/eo-framework-core/selection/selection.service.mjs +0 -63
  592. package/esm2020/app/eo-framework-core/title/page-title.service.mjs +0 -42
  593. package/esm2020/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.mjs +0 -5
  594. package/esm2020/projects/eo-sdk/core/lib/config/core-config.mjs +0 -23
  595. package/esm2020/projects/eo-sdk/core/lib/config/core-init.service.mjs +0 -71
  596. package/esm2020/projects/eo-sdk/core/lib/config/core-init.tokens.mjs +0 -8
  597. package/esm2020/projects/eo-sdk/core/lib/config/initialize-module.mjs +0 -11
  598. package/esm2020/projects/eo-sdk/core/lib/config/missing-translation-handler.mjs +0 -15
  599. package/esm2020/projects/eo-sdk/core/lib/config/translate-json-loader.mjs +0 -130
  600. package/esm2020/projects/eo-sdk/core/lib/environment.enaio.mjs +0 -12
  601. package/esm2020/projects/eo-sdk/core/lib/eo-core-shared.module.mjs +0 -24
  602. package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +0 -117
  603. package/esm2020/projects/eo-sdk/core/lib/interface/change-password.interface.mjs +0 -2
  604. package/esm2020/projects/eo-sdk/core/lib/interface/event.interface.mjs +0 -2
  605. package/esm2020/projects/eo-sdk/core/lib/interface/http-options.interface.mjs +0 -2
  606. package/esm2020/projects/eo-sdk/core/lib/interface/logger.interface.mjs +0 -7
  607. package/esm2020/projects/eo-sdk/core/lib/interface/organization-objects.interface.mjs +0 -2
  608. package/esm2020/projects/eo-sdk/core/lib/interface/tree-node.interface.mjs +0 -2
  609. package/esm2020/projects/eo-sdk/core/lib/model/baseparams.model.mjs +0 -2
  610. package/esm2020/projects/eo-sdk/core/lib/model/bpm.model.mjs +0 -70
  611. package/esm2020/projects/eo-sdk/core/lib/model/custom-action.model.mjs +0 -2
  612. package/esm2020/projects/eo-sdk/core/lib/model/dms-object-history.model.mjs +0 -30
  613. package/esm2020/projects/eo-sdk/core/lib/model/dms-object.model.mjs +0 -140
  614. package/esm2020/projects/eo-sdk/core/lib/model/eo-error.model.mjs +0 -37
  615. package/esm2020/projects/eo-sdk/core/lib/model/eo-user.model.mjs +0 -86
  616. package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +0 -36
  617. package/esm2020/projects/eo-sdk/core/lib/model/object-type.model.mjs +0 -39
  618. package/esm2020/projects/eo-sdk/core/lib/model/org.model.mjs +0 -2
  619. package/esm2020/projects/eo-sdk/core/lib/model/prepared-item.model.mjs +0 -35
  620. package/esm2020/projects/eo-sdk/core/lib/model/range-value.model.mjs +0 -45
  621. package/esm2020/projects/eo-sdk/core/lib/model/upload-file-item.model.mjs +0 -17
  622. package/esm2020/projects/eo-sdk/core/lib/model/upload-target.model.mjs +0 -50
  623. package/esm2020/projects/eo-sdk/core/lib/model/work-item-history.model.mjs +0 -54
  624. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-interceptor.mjs +0 -29
  625. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.mjs +0 -2
  626. package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +0 -215
  627. package/esm2020/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.mjs +0 -2
  628. package/esm2020/projects/eo-sdk/core/lib/service/backend/backend.service.mjs +0 -358
  629. package/esm2020/projects/eo-sdk/core/lib/service/bpm/bpm.service.mjs +0 -286
  630. package/esm2020/projects/eo-sdk/core/lib/service/cache/app-cache.service.mjs +0 -117
  631. package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.mjs +0 -2
  632. package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.mjs +0 -60
  633. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.mjs +0 -6
  634. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.mjs +0 -2
  635. package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.mjs +0 -100
  636. package/esm2020/projects/eo-sdk/core/lib/service/config/config.enum.mjs +0 -6
  637. package/esm2020/projects/eo-sdk/core/lib/service/config/config.interface.mjs +0 -2
  638. package/esm2020/projects/eo-sdk/core/lib/service/config/config.service.mjs +0 -135
  639. package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +0 -507
  640. package/esm2020/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.mjs +0 -2
  641. package/esm2020/projects/eo-sdk/core/lib/service/events/event.service.mjs +0 -44
  642. package/esm2020/projects/eo-sdk/core/lib/service/events/events.mjs +0 -27
  643. package/esm2020/projects/eo-sdk/core/lib/service/inbox/inbox.service.mjs +0 -111
  644. package/esm2020/projects/eo-sdk/core/lib/service/logger/console-log.service.mjs +0 -41
  645. package/esm2020/projects/eo-sdk/core/lib/service/logger/logger.mjs +0 -47
  646. package/esm2020/projects/eo-sdk/core/lib/service/notifications/notifications.service.mjs +0 -136
  647. package/esm2020/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.mjs +0 -2
  648. package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +0 -305
  649. package/esm2020/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.mjs +0 -2
  650. package/esm2020/projects/eo-sdk/core/lib/service/search/search-query.model.mjs +0 -510
  651. package/esm2020/projects/eo-sdk/core/lib/service/search/search.service.mjs +0 -478
  652. package/esm2020/projects/eo-sdk/core/lib/service/signing/signing.service.mjs +0 -60
  653. package/esm2020/projects/eo-sdk/core/lib/service/storage/local-storage.service.mjs +0 -111
  654. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.mjs +0 -2
  655. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.mjs +0 -216
  656. package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.mjs +0 -98
  657. package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +0 -345
  658. package/esm2020/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.mjs +0 -2
  659. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system-status.service.mjs +0 -104
  660. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.enum.mjs +0 -9
  661. package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.interface.mjs +0 -2
  662. package/esm2020/projects/eo-sdk/core/lib/service/upload/upload.service.mjs +0 -46
  663. package/esm2020/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.mjs +0 -83
  664. package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +0 -399
  665. package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +0 -304
  666. package/esm2020/projects/eo-sdk/core/public_api.mjs +0 -85
  667. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6118
  668. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
  669. package/fesm2015/eo-sdk-client.mjs +0 -27040
  670. package/fesm2015/eo-sdk-client.mjs.map +0 -1
  671. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6133
  672. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
  673. package/fesm2020/eo-sdk-client.mjs.map +0 -1
  674. package/projects/eo-sdk/core/README.md +0 -113
  675. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.d.ts.map +0 -1
  676. package/projects/eo-sdk/core/index.d.ts +0 -6
  677. package/projects/eo-sdk/core/lib/config/core-config.d.ts +0 -14
  678. package/projects/eo-sdk/core/lib/config/core-config.d.ts.map +0 -1
  679. package/projects/eo-sdk/core/lib/config/core-init.service.d.ts +0 -33
  680. package/projects/eo-sdk/core/lib/config/core-init.service.d.ts.map +0 -1
  681. package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts +0 -8
  682. package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts.map +0 -1
  683. package/projects/eo-sdk/core/lib/config/initialize-module.d.ts +0 -7
  684. package/projects/eo-sdk/core/lib/config/initialize-module.d.ts.map +0 -1
  685. package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts +0 -14
  686. package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts.map +0 -1
  687. package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts +0 -21
  688. package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts.map +0 -1
  689. package/projects/eo-sdk/core/lib/environment.enaio.d.ts +0 -6
  690. package/projects/eo-sdk/core/lib/environment.enaio.d.ts.map +0 -1
  691. package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts +0 -12
  692. package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts.map +0 -1
  693. package/projects/eo-sdk/core/lib/eo-core.module.d.ts +0 -46
  694. package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +0 -1
  695. package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts +0 -8
  696. package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts.map +0 -1
  697. package/projects/eo-sdk/core/lib/interface/event.interface.d.ts +0 -14
  698. package/projects/eo-sdk/core/lib/interface/event.interface.d.ts.map +0 -1
  699. package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts +0 -17
  700. package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts.map +0 -1
  701. package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts +0 -20
  702. package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts.map +0 -1
  703. package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts +0 -20
  704. package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts.map +0 -1
  705. package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts +0 -24
  706. package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts.map +0 -1
  707. package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts +0 -58
  708. package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts.map +0 -1
  709. package/projects/eo-sdk/core/lib/model/bpm.model.d.ts +0 -253
  710. package/projects/eo-sdk/core/lib/model/bpm.model.d.ts.map +0 -1
  711. package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts +0 -34
  712. package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts.map +0 -1
  713. package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts +0 -59
  714. package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts.map +0 -1
  715. package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts +0 -137
  716. package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts.map +0 -1
  717. package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts +0 -19
  718. package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts.map +0 -1
  719. package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts +0 -107
  720. package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts.map +0 -1
  721. package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts +0 -71
  722. package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +0 -1
  723. package/projects/eo-sdk/core/lib/model/object-type.model.d.ts +0 -125
  724. package/projects/eo-sdk/core/lib/model/object-type.model.d.ts.map +0 -1
  725. package/projects/eo-sdk/core/lib/model/org.model.d.ts +0 -94
  726. package/projects/eo-sdk/core/lib/model/org.model.d.ts.map +0 -1
  727. package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts +0 -190
  728. package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts.map +0 -1
  729. package/projects/eo-sdk/core/lib/model/range-value.model.d.ts +0 -22
  730. package/projects/eo-sdk/core/lib/model/range-value.model.d.ts.map +0 -1
  731. package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts +0 -30
  732. package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts.map +0 -1
  733. package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts +0 -60
  734. package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts.map +0 -1
  735. package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts +0 -52
  736. package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts.map +0 -1
  737. package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts +0 -12
  738. package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts.map +0 -1
  739. package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts +0 -23
  740. package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts.map +0 -1
  741. package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +0 -104
  742. package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +0 -1
  743. package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts +0 -18
  744. package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts.map +0 -1
  745. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +0 -209
  746. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts.map +0 -1
  747. package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts +0 -150
  748. package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts.map +0 -1
  749. package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts +0 -59
  750. package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts.map +0 -1
  751. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts +0 -54
  752. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts.map +0 -1
  753. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts +0 -35
  754. package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts.map +0 -1
  755. package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts +0 -5
  756. package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts.map +0 -1
  757. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts +0 -16
  758. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts.map +0 -1
  759. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts +0 -49
  760. package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts.map +0 -1
  761. package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts +0 -5
  762. package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts.map +0 -1
  763. package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts +0 -55
  764. package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts.map +0 -1
  765. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +0 -80
  766. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts.map +0 -1
  767. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +0 -286
  768. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +0 -1
  769. package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts +0 -13
  770. package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts.map +0 -1
  771. package/projects/eo-sdk/core/lib/service/events/event.service.d.ts +0 -31
  772. package/projects/eo-sdk/core/lib/service/events/event.service.d.ts.map +0 -1
  773. package/projects/eo-sdk/core/lib/service/events/events.d.ts +0 -27
  774. package/projects/eo-sdk/core/lib/service/events/events.d.ts.map +0 -1
  775. package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts +0 -66
  776. package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts.map +0 -1
  777. package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts +0 -20
  778. package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts.map +0 -1
  779. package/projects/eo-sdk/core/lib/service/logger/logger.d.ts +0 -25
  780. package/projects/eo-sdk/core/lib/service/logger/logger.d.ts.map +0 -1
  781. package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts +0 -78
  782. package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts.map +0 -1
  783. package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts +0 -9
  784. package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts.map +0 -1
  785. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +0 -189
  786. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +0 -1
  787. package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts +0 -10
  788. package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts.map +0 -1
  789. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +0 -327
  790. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts.map +0 -1
  791. package/projects/eo-sdk/core/lib/service/search/search.service.d.ts +0 -173
  792. package/projects/eo-sdk/core/lib/service/search/search.service.d.ts.map +0 -1
  793. package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +0 -52
  794. package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts.map +0 -1
  795. package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts +0 -53
  796. package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts.map +0 -1
  797. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts +0 -15
  798. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts.map +0 -1
  799. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts +0 -108
  800. package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts.map +0 -1
  801. package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts +0 -74
  802. package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts.map +0 -1
  803. package/projects/eo-sdk/core/lib/service/system/system.service.d.ts +0 -125
  804. package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +0 -1
  805. package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts +0 -53
  806. package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts.map +0 -1
  807. package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts +0 -26
  808. package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts.map +0 -1
  809. package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts +0 -8
  810. package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts.map +0 -1
  811. package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts +0 -8
  812. package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts.map +0 -1
  813. package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +0 -28
  814. package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts.map +0 -1
  815. package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts +0 -50
  816. package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts.map +0 -1
  817. package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +0 -216
  818. package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +0 -1
  819. package/projects/eo-sdk/core/lib/util/utils.d.ts +0 -148
  820. package/projects/eo-sdk/core/lib/util/utils.d.ts.map +0 -1
  821. package/projects/eo-sdk/core/public_api.d.ts +0 -82
  822. package/projects/eo-sdk/core/public_api.d.ts.map +0 -1
  823. /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +0 -0
  824. /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +0 -0
  825. /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox.model.mjs +0 -0
  826. /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/info-intray-widget/info-intray.model.mjs +0 -0
  827. /package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state/inbox.types.enum.mjs +0 -0
  828. /package/{esm2020 → esm2022}/app/eo-client/index.mjs +0 -0
  829. /package/{esm2020 → esm2022}/app/eo-client/notifications-state/notifications-state.interface.mjs +0 -0
  830. /package/{esm2020 → esm2022}/app/eo-client/object-state/object-state-service/object-state.interface.mjs +0 -0
  831. /package/{esm2020 → esm2022}/app/eo-client/settings/agent-lock-settings.enum.mjs +0 -0
  832. /package/{esm2020 → esm2022}/app/eo-framework/accordion/index.mjs +0 -0
  833. /package/{esm2020 → esm2022}/app/eo-framework/actions/actions/signature-action/signature.model.mjs +0 -0
  834. /package/{esm2020 → esm2022}/app/eo-framework/actions/index.mjs +0 -0
  835. /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action-component.interface.mjs +0 -0
  836. /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action-list-entry.mjs +0 -0
  837. /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action.interface.mjs +0 -0
  838. /package/{esm2020 → esm2022}/app/eo-framework/actions/selection-range.enum.mjs +0 -0
  839. /package/{esm2020 → esm2022}/app/eo-framework/animations/animations.mjs +0 -0
  840. /package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/app-search/app-search.interface.mjs +0 -0
  841. /package/{esm2020 → esm2022}/app/eo-framework/cta/index.mjs +0 -0
  842. /package/{esm2020 → esm2022}/app/eo-framework/error/index.mjs +0 -0
  843. /package/{esm2020 → esm2022}/app/eo-framework/form-elements/id-reference/animation/reference-finder.animation.mjs +0 -0
  844. /package/{esm2020 → esm2022}/app/eo-framework/form-elements/id-reference/interface/reference-finder.interface.mjs +0 -0
  845. /package/{esm2020 → esm2022}/app/eo-framework/form-elements/index.mjs +0 -0
  846. /package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/filter/setFilters/set-filters.interface.mjs +0 -0
  847. /package/{esm2020 → esm2022}/app/eo-framework/grid/filters/filesize-filter.component.mjs +0 -0
  848. /package/{esm2020 → esm2022}/app/eo-framework/grid/grid-filter.model.mjs +0 -0
  849. /package/{esm2020 → esm2022}/app/eo-framework/grid/index.mjs +0 -0
  850. /package/{esm2020 → esm2022}/app/eo-framework/grid/loader.interface.mjs +0 -0
  851. /package/{esm2020 → esm2022}/app/eo-framework/index.mjs +0 -0
  852. /package/{esm2020 → esm2022}/app/eo-framework/list-container/index.mjs +0 -0
  853. /package/{esm2020 → esm2022}/app/eo-framework/media/index.mjs +0 -0
  854. /package/{esm2020 → esm2022}/app/eo-framework/object-details/index.mjs +0 -0
  855. /package/{esm2020 → esm2022}/app/eo-framework/object-details/object-history/history-filter/history-filter.mjs +0 -0
  856. /package/{esm2020 → esm2022}/app/eo-framework/object-form/form-status-changed-event.interface.mjs +0 -0
  857. /package/{esm2020 → esm2022}/app/eo-framework/object-form/index.mjs +0 -0
  858. /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.mjs +0 -0
  859. /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-control-wrapper.mjs +0 -0
  860. /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-control.mjs +0 -0
  861. /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-group.model.mjs +0 -0
  862. /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-script/object-form-script.interface.mjs +0 -0
  863. /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form.model.mjs +0 -0
  864. /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form-options.interface.mjs +0 -0
  865. /package/{esm2020 → esm2022}/app/eo-framework/plugins/index.mjs +0 -0
  866. /package/{esm2020 → esm2022}/app/eo-framework/process/process-file/file-entry-permissions.interface.mjs +0 -0
  867. /package/{esm2020 → esm2022}/app/eo-framework/quick-search/index.mjs +0 -0
  868. /package/{esm2020 → esm2022}/app/eo-framework/quick-search/quick-search/quick-search-result.interface.mjs +0 -0
  869. /package/{esm2020 → esm2022}/app/eo-framework/result-list/index.mjs +0 -0
  870. /package/{esm2020 → esm2022}/app/eo-framework/settings/change-password/change-password.interface.mjs +0 -0
  871. /package/{esm2020 → esm2022}/app/eo-framework/settings/index.mjs +0 -0
  872. /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/global-shortcut-action.interface.mjs +0 -0
  873. /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/global-shortcut-component.interface.mjs +0 -0
  874. /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/index.mjs +0 -0
  875. /package/{esm2020 → esm2022}/app/eo-framework/stored-query/index.mjs +0 -0
  876. /package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query-type-filter.enum.mjs +0 -0
  877. /package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query.interface.mjs +0 -0
  878. /package/{esm2020 → esm2022}/app/eo-framework/tree/index.mjs +0 -0
  879. /package/{esm2020 → esm2022}/app/eo-framework/tree/tree.component.interface.mjs +0 -0
  880. /package/{esm2020 → esm2022}/app/eo-framework/ui/index.mjs +0 -0
  881. /package/{esm2020 → esm2022}/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry.interface.mjs +0 -0
  882. /package/{esm2020 → esm2022}/app/eo-framework/util/index.mjs +0 -0
  883. /package/{esm2020 → esm2022}/app/eo-framework-core/agent/agent.interface.mjs +0 -0
  884. /package/{esm2020 → esm2022}/app/eo-framework-core/api/model/dms-object.api.interface.mjs +0 -0
  885. /package/{esm2020 → esm2022}/app/eo-framework-core/empty-state/empty-state.interface.mjs +0 -0
  886. /package/{esm2020 → esm2022}/app/eo-framework-core/error-handler/error-keys.mjs +0 -0
  887. /package/{esm2020 → esm2022}/app/eo-framework-core/index.mjs +0 -0
  888. /package/{esm2020 → esm2022}/app/eo-framework-core/pending-changes/pending-changes-component.interface.mjs +0 -0
  889. /package/{esm2020 → esm2022}/eo-sdk-client.mjs +0 -0
  890. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -1,717 +0,0 @@
1
- import { DatePipe } from '@angular/common';
2
- import { Injectable } from '@angular/core';
3
- import { Validators } from '@angular/forms';
4
- import { RangeValue, SearchService, Utils } from '@eo-sdk/core';
5
- import { forkJoin, of } from 'rxjs';
6
- import { debounceTime, tap } from 'rxjs/operators';
7
- import { FormValidation } from './object-form/form-validation/form-validation';
8
- import { ObjectFormControl } from './object-form/object-form-control';
9
- import { ObjectFormControlWrapper } from './object-form/object-form-control-wrapper';
10
- import { ObjectFormGroup } from './object-form/object-form-group.model';
11
- import { ObjectFormScriptingScope } from './object-form/object-form-script/object-form-scripting-scope';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@eo-sdk/core";
14
- import * as i2 from "../../eo-framework-core/references/reference.service";
15
- import * as i3 from "../../eo-framework-core/api/plugins.service";
16
- export class ObjectFormHelperService {
17
- constructor(logger, referenceService, searchService, pluginService, systemService) {
18
- this.logger = logger;
19
- this.referenceService = referenceService;
20
- this.searchService = searchService;
21
- this.pluginService = pluginService;
22
- this.systemService = systemService;
23
- this.datePipe = new DatePipe('en');
24
- this.TEMP_STORAGE_ENTRIES_KEY = 'eo.cmp.objectform.tmpstorage.entries';
25
- this._clearTemporaryStorageEntries();
26
- }
27
- /**
28
- * Generates a reactive form based on a form model that may also include form scripts.
29
- * @param formOptions `ObjectFormOptions` defining the form
30
- * @param formScriptService Instance of a `ObjectFormScriptService`. This service is supposed to be
31
- * scoped to the component rendering the form (providers array in component decorator).
32
- * @param isInnerTableForm whether or not the form is part of another form (as is with table edit forms)
33
- * @returns An `FormGenResult` object
34
- */
35
- buildReactiveForm(formOptions, formScriptService, isInnerTableForm) {
36
- const _scope = {
37
- gCount: 0,
38
- formOptions,
39
- isInnerTableForm,
40
- initialValidators: {},
41
- formGenResult: {
42
- formControls: {},
43
- formModel: {},
44
- controlValueSubscriptions: [],
45
- scriptingScope: undefined,
46
- scriptModel: {},
47
- form: null
48
- }
49
- };
50
- const formModel = this._dataToForm(_scope, formOptions.formModel, formOptions.data);
51
- _scope.formGenResult.formModel = formModel;
52
- if (!formModel)
53
- return;
54
- // if a script is available, we'll init the form scripting for the
55
- // current form
56
- let scriptingScope;
57
- if (_scope.isInnerTableForm || (formModel.script && formModel.script.length > 0)) {
58
- this.logger.debug('adding form scripting scope');
59
- scriptingScope = new ObjectFormScriptingScope(formModel.situation, this._getScriptingModelChanged(_scope), this.pluginService.getApi(), _scope.isInnerTableForm);
60
- scriptingScope.objectId = formOptions.objectId;
61
- }
62
- _scope.formGenResult.scriptingScope = scriptingScope;
63
- let form = new ObjectFormGroup({});
64
- if (formModel.elements[0] && formModel.elements[0].elements) {
65
- this._addFormControl(_scope, form, formModel.elements[0], 'core');
66
- }
67
- if (formModel.elements[1] && formModel.elements[1].elements) {
68
- this._addFormControl(_scope, form, formModel.elements[1], 'data');
69
- }
70
- _scope.formGenResult.form = form;
71
- this._initValidators(_scope.formGenResult.form, _scope);
72
- this._initScriptingScope(_scope, formScriptService);
73
- return _scope.formGenResult;
74
- }
75
- /**
76
- * Converts a form element object to an ObjectFormControlWrapper which then can be used to
77
- * render a from control. Result can be used as input for FormElementComponent.
78
- *
79
- * @param element - the element object or a json string
80
- * @param situation - optional property to set up a form situation for the control (default is EDIT)
81
- * @return the converted ObjectFormControlWrapper or null in case of an error
82
- */
83
- elementToFormControl(element, situation) {
84
- let formElement;
85
- if (typeof element === 'string') {
86
- try {
87
- formElement = JSON.parse(element);
88
- }
89
- catch (e) {
90
- this.logger.error('Unable to parse form element from json ', formElement);
91
- }
92
- }
93
- else {
94
- formElement = element;
95
- }
96
- if (!formElement) {
97
- return null;
98
- }
99
- // Create the ObjectFormControlWrapper
100
- let wrapper = new ObjectFormControlWrapper({});
101
- let formSituation = situation ? situation : 'EDIT';
102
- wrapper._eoFormControlWrapper = {
103
- controlName: formElement.name,
104
- situation: formSituation
105
- };
106
- // for codesystem elements add entries if not yet provided
107
- if (formElement.type === 'CODESYSTEM' && (!formElement.codesystem || !formElement.codesystem.entries)) {
108
- formElement.codesystem = this.systemService.getCodesystem(formElement.codesystem.id);
109
- }
110
- // create the actual form control
111
- let controlDisabled = !!formElement.readonly;
112
- let formControl = new ObjectFormControl({
113
- value: formElement.value,
114
- disabled: controlDisabled
115
- }, FormValidation.getValidators(formElement, formSituation));
116
- // Form elements in SEARCH situation may arrive with a value set to NULL (explicit search for
117
- // fields that are NOT set). In that case we need to prepare the form control
118
- if (formSituation === 'SEARCH' && formElement.value === null) {
119
- formElement.isNotSetValue = true;
120
- }
121
- formControl._eoFormElement = formElement;
122
- wrapper.addControl(formElement.name, formControl);
123
- return wrapper;
124
- }
125
- /**
126
- * Extract data from an object form based on situation.
127
- *
128
- * @param form - form to extract data from
129
- * @param situation - form situation
130
- * @param [initialData] - optional form data to match the current values against
131
- * This is required for editig indexdata (EDIT situation), because we have to compare new values
132
- * against the initial values. If a property that is contained in the forms initial data is removed
133
- * (e.g. set to null) then we have to set this null value, because otherwise the server would
134
- * ignore the changes.
135
- * @param isTableRowEditForm Flag indicating that the provided form is an inline form used by
136
- * a forms table element for editing rows. Those need a special handling.
137
- * @return extracted data as object
138
- */
139
- extractFormData(form, situation, initialData, isTableRowEditForm) {
140
- let extractedData = {};
141
- this.getElementValues(extractedData, form, situation || 'EDIT', initialData, isTableRowEditForm);
142
- return extractedData;
143
- }
144
- // Recursive method to get the values from each form control.
145
- getElementValues(data, formControl, situation, initialData, isTableRowEditForm) {
146
- if (!formControl || !formControl.controls) {
147
- return;
148
- }
149
- if (formControl instanceof ObjectFormControlWrapper) {
150
- const fc = formControl.controls[formControl._eoFormControlWrapper.controlName];
151
- if (fc._eoFormElement.isNotSetValue === true) {
152
- // form elements may explicitly set to have NULL value (e.g. from Search form if values are requested that have no values)
153
- if (isTableRowEditForm) {
154
- this.setDataValue(fc._eoFormElement.name, null, data, fc._eoFormElement, isTableRowEditForm);
155
- }
156
- else {
157
- this.setDataValue(fc._eoFormElement.qname, null, data, fc._eoFormElement, isTableRowEditForm);
158
- }
159
- }
160
- else if (fc.value !== undefined) {
161
- let val = fc.value;
162
- // make sure that meta data are also up to date
163
- if (fc._eoFormElement.type === 'CODESYSTEM') {
164
- const cs = this.systemService.getCodesystem(fc._eoFormElement.codesystem.id);
165
- fc._eoFormElement.dataMeta = cs.entries.find(e => e.data === val);
166
- }
167
- switch (situation) {
168
- case 'SEARCH': {
169
- if (val !== null) {
170
- // row editing forms use the name instead of the qname because otherwise the
171
- // tables grid isn't able to map the fields
172
- if (!isTableRowEditForm) {
173
- this.setDataValue(fc._eoFormElement.qname, val, data, fc._eoFormElement, isTableRowEditForm);
174
- }
175
- else {
176
- this.setDataValue(fc._eoFormElement.name, val, data, fc._eoFormElement, isTableRowEditForm);
177
- }
178
- }
179
- break;
180
- }
181
- case 'CREATE': {
182
- // also add NULL values (override existing defaultvalues)
183
- this.setDataValue(fc._eoFormElement.name, val, data, fc._eoFormElement, isTableRowEditForm);
184
- break;
185
- }
186
- case 'EDIT': {
187
- // in edit situation we have to compare new values against the initial values
188
- // If a property that is contained in the forms initial data is removed (e.g. set to null)
189
- // then we have to set this null value, because otherwise the server will ignore the changes
190
- if (val !== null || (initialData && initialData[fc._eoFormElement.name] !== undefined)) {
191
- // data[fc._eoFormElement.name] = val;
192
- this.setDataValue(fc._eoFormElement.name, val, data, fc._eoFormElement, isTableRowEditForm);
193
- }
194
- break;
195
- }
196
- }
197
- }
198
- }
199
- else {
200
- Object.keys(formControl.controls)
201
- .forEach(controlKey => {
202
- let formControlKeyed = formControl.controls[controlKey];
203
- this.getElementValues(data, formControlKeyed, situation, initialData, isTableRowEditForm);
204
- });
205
- }
206
- }
207
- setDataValue(key, value, data, formElement, isTableRowEditForm) {
208
- data[key] = this.formatValue(value, formElement);
209
- if (isTableRowEditForm && formElement.dataMeta) {
210
- // inner tables need to set up the meta data as well
211
- data[key + '_meta'] = formElement.dataMeta;
212
- }
213
- }
214
- formatValue(value, formElement) {
215
- if (formElement.type === 'DATETIME' && !formElement.withtime) {
216
- if (typeof value === 'string' || (value instanceof Date && !isNaN(value.getTime()))) {
217
- return this.datePipe.transform(value, 'yyyy-MM-dd');
218
- }
219
- else if (value instanceof RangeValue) {
220
- return new RangeValue(value.operator, value.firstValue && this.datePipe.transform(value.firstValue, 'yyyy-MM-dd'), value.secondValue && this.datePipe.transform(value.secondValue, 'yyyy-MM-dd'));
221
- }
222
- }
223
- if (formElement.type === 'TABLE') {
224
- (formElement.elements || []).forEach(el => {
225
- (value || []).forEach(v => v[el.name] = this.formatValue(v[el.name], el));
226
- });
227
- }
228
- return value;
229
- }
230
- // Functions involved in building an object form
231
- /**
232
- * Recursive method adding a new UntypedFormControl (group or control) to a parent form group
233
- *
234
- * @param parentGroup - the parent group to add the control to
235
- * @param formElement - the enaio form model element to create the child control from
236
- * @param [useName] - use this name instead of the one from the model
237
- */
238
- _addFormControl(scope, parentGroup, formElement, useName) {
239
- let ctrl;
240
- let name;
241
- // add a form group
242
- if (formElement.type === 'o2mGroup' || formElement.type === 'o2mGroupStack') {
243
- // do not add groups that are empty
244
- if (!formElement.elements || formElement.elements.length === 0) {
245
- this.logger.error('Found empty form group', formElement);
246
- return;
247
- }
248
- ctrl = new ObjectFormGroup({});
249
- ctrl._eoFormGroup = {
250
- label: formElement.label,
251
- layout: formElement.layout,
252
- type: formElement.type
253
- };
254
- if (useName === 'core' || useName === 'data') {
255
- ctrl._eoFormGroup.label = useName;
256
- }
257
- for (let e of formElement.elements) {
258
- this._addFormControl(scope, ctrl, e);
259
- }
260
- name = useName || 'fg' + scope.gCount++;
261
- ctrl._eoFormGroup.id = `${scope.formOptions.layoutSettingsID || scope.formOptions.formModel.name}.${name}`;
262
- }
263
- else {
264
- // add form control
265
- // To be able to integrate recursive form controls into the main form,
266
- // we have to wrap them in a form group
267
- ctrl = new ObjectFormControlWrapper({});
268
- ctrl._eoFormControlWrapper = {
269
- // the name of the wrapped UntypedFormControl
270
- controlName: formElement.name,
271
- situation: scope.formOptions.formModel.situation
272
- };
273
- if (scope.formOptions.formModel.situation === 'SEARCH' && formElement.value === null) {
274
- formElement.isNotSetValue = true;
275
- }
276
- // do not set a reference as the form controls value
277
- // otherwise we could not reset the form
278
- let value;
279
- if (Array.isArray(formElement.value)) {
280
- // copy by value for arrays of objects (e.g. table data)
281
- value = [];
282
- formElement.value.forEach((o) => {
283
- value.push(Utils.formDataParse(Utils.formDataStringify(o)));
284
- });
285
- }
286
- else {
287
- value = formElement.value;
288
- }
289
- // for codesystem elements add entries if not yet provided
290
- if (formElement.type === 'CODESYSTEM' && !formElement.codesystem.entries) {
291
- formElement.codesystem = this.systemService.getCodesystem(formElement.codesystem.id);
292
- }
293
- // create the actual form control
294
- let controlDisabled = scope.formOptions.disabled || !!formElement.readonly;
295
- let formControl = new ObjectFormControl({
296
- value: value,
297
- disabled: controlDisabled
298
- });
299
- formElement.readonly = controlDisabled;
300
- formControl._eoFormElement = formElement;
301
- scope.formGenResult.formControls[formElement.name] = formControl;
302
- if (formElement.type === 'CODESYSTEM' || (formElement.type === 'STRING' && formElement.classification === 'selector')) {
303
- formControl._eoFormElement.applyFilter = (func) => {
304
- formControl._eoFormElement.filterFunction = func;
305
- };
306
- formControl._eoFormElement.applyDisablingFilter = (func) => {
307
- formControl._eoFormElement.disablingFilterFunction = func;
308
- };
309
- }
310
- if (formElement.type === 'STRING' && formElement.classification === 'selector') {
311
- formControl._eoFormElement.setList = (listObject) => {
312
- formControl._eoFormElement.list = listObject;
313
- };
314
- }
315
- if (formElement.type === 'ORGANIZATION') {
316
- formControl._eoFormElement.setFilter = (filterObject) => {
317
- formControl._eoFormElement.filter = filterObject;
318
- };
319
- }
320
- if (formElement.type === 'TABLE') {
321
- formControl._eoFormElement.object = scope.formOptions.object;
322
- }
323
- if (formElement.type === 'REFERENCE') {
324
- formControl._eoFormElement.setQueryFilters = (queryFiltersObject, objectTypes) => {
325
- formControl._eoFormElement.queryFilters = queryFiltersObject;
326
- formControl._eoFormElement.objectTypesFilter = objectTypes;
327
- };
328
- }
329
- if (scope.formOptions.formModel.situation === 'SEARCH') {
330
- // in search situation even readonly fields should be editable ...
331
- formControl._eoFormElement.readonly = false;
332
- // ... and required makes no sense here
333
- formControl._eoFormElement.required = false;
334
- }
335
- // remove empty descriptions
336
- let desc = formControl._eoFormElement.description;
337
- if (desc && desc.trim().length === 0) {
338
- formControl._eoFormElement.description = null;
339
- }
340
- // add the form element to the script model that will be injected into
341
- // the forms scripting scope later on
342
- scope.formGenResult.scriptModel[formElement.name] = formControl._eoFormElement;
343
- // apply change listener to the form control, that will trigger
344
- // the form elements onChange listener
345
- let controlWatch = ctrl.valueChanges.pipe(debounceTime(formElement.type === 'TABLE' ? 0 : 500));
346
- controlWatch.subscribe((v) => {
347
- if (formControl._eoFormElement.type === 'REFERENCE') {
348
- this._getDataMeta(formControl._eoFormElement, v[formControl._eoFormElement.name]).subscribe(m => {
349
- if (m) {
350
- formControl._eoFormElement.dataMeta = formControl._eoFormElement.multiselect ? m : m[0];
351
- }
352
- else {
353
- delete formControl._eoFormElement.dataMeta;
354
- }
355
- });
356
- }
357
- if (scope.formGenResult.scriptingScope) {
358
- scope.formGenResult.scriptingScope.modelChanged(v);
359
- }
360
- });
361
- scope.formGenResult.controlValueSubscriptions.push(controlWatch);
362
- ctrl.addControl(formElement.name, formControl);
363
- name = 'fg_' + formElement.name;
364
- }
365
- parentGroup.addControl(name, ctrl);
366
- }
367
- /**
368
- * Merge data into a form model.
369
- *
370
- * @param model - form model
371
- * @param data - data object or array of SearchFilter objects in case of a search form
372
- */
373
- _dataToForm(scope, model, data) {
374
- if (model && data) {
375
- this._setElementValues(scope, model.elements, data);
376
- }
377
- return model;
378
- }
379
- // recursive method for adding values to model elements
380
- _setElementValues(scope, elements, data) {
381
- elements.forEach(element => {
382
- if (this._hasValue(data, element)) {
383
- element.value = this._getValue(scope, data, element);
384
- if (element.value) {
385
- // add meta data for some of the types
386
- this._fetchMetaData(scope, data, element);
387
- }
388
- }
389
- else {
390
- delete element.value;
391
- }
392
- if (element.type !== 'TABLE' && element.elements && element.elements.length > 0) {
393
- this._setElementValues(scope, element.elements, data);
394
- }
395
- });
396
- }
397
- // in some cases required meta data may not be available on the element itself
398
- // so they have to be fetched and added to the element for the form to be able
399
- // to render the element correctly
400
- _fetchMetaData(scope, data, element) {
401
- if (scope.formOptions.formModel.situation === 'SEARCH') {
402
- // todo: how to fetch meta data in search situation
403
- }
404
- else {
405
- if (element.type === 'ORGANIZATION' && data[element.name + '_meta']) {
406
- element.dataMeta = data[element.name + '_meta'];
407
- }
408
- else if (element.type === 'CODESYSTEM' && data[element.name + '_meta']) {
409
- element.dataMeta = data[element.name + '_meta'];
410
- element.defaultrepresentation = data[element.name + '_meta'].defaultrepresentation;
411
- }
412
- else if (element.type === 'REFERENCE' && data[element.name + '_meta']) {
413
- element.dataMeta = data[element.name + '_meta'];
414
- }
415
- }
416
- }
417
- _getDataMeta(formElement, newValue) {
418
- if (newValue) {
419
- switch (formElement.type) {
420
- case 'ORGANIZATION': {
421
- if (typeof newValue === 'string') {
422
- return this.systemService.getOrganizationObject(newValue);
423
- }
424
- else if (newValue.length === 1) {
425
- return this.systemService.getOrganizationObject(newValue[0]);
426
- }
427
- else if (newValue.length > 1) {
428
- return this.systemService.getOrganizationObjects(newValue);
429
- }
430
- break;
431
- }
432
- case 'REFERENCE': {
433
- return this.referenceService.fetchIDReferenceMetaData(Array.isArray(newValue) ? newValue : [newValue]);
434
- }
435
- case 'CODESYSTEM': {
436
- return of(this.systemService.getCodesystem(formElement.codesystem.id).entries.find((entry) => {
437
- return entry.defaultrepresentation === newValue;
438
- }));
439
- }
440
- }
441
- }
442
- return of(null);
443
- }
444
- _hasValue(data, element) {
445
- // differ between array of SearchFilters and a form data object
446
- if (Array.isArray(data)) {
447
- if (element.type === 'TABLE') {
448
- return !!(data.find((filter) => filter.property.startsWith(element.qname)));
449
- }
450
- else {
451
- return !!(data.find((filter) => filter.property === element.qname));
452
- }
453
- }
454
- else {
455
- return data.hasOwnProperty(element.name);
456
- }
457
- }
458
- _getValue(scope, data, element) {
459
- let value;
460
- if (scope.formOptions.formModel.situation === 'SEARCH') {
461
- if (scope.isInnerTableForm) {
462
- if (element.type === 'DATETIME' || element.type === 'NUMBER') {
463
- value = SearchService.toRangeValue(data[element.name]);
464
- }
465
- else {
466
- value = data[element.name];
467
- }
468
- }
469
- else if (element.type === 'TABLE') {
470
- value = this.searchService.tableFiltersToElementValue(this._getTableFilters(data, element.qname), element.elements);
471
- }
472
- else {
473
- const filter = data.find(f => f.property === element.qname);
474
- value = this.searchService.filterToElementValue(filter, element.type);
475
- }
476
- }
477
- else {
478
- if (element.type === 'DATETIME' && data[element.name]) {
479
- value = new Date(`${data[element.name]}${(typeof data[element.name] === 'string' ? data[element.name].indexOf('T') : data[element.name].toISOString().indexOf('T')) !== -1 ? '' : 'T00:00:00'}`);
480
- }
481
- else {
482
- value = data[element.name];
483
- }
484
- }
485
- return value;
486
- }
487
- _getTableFilters(filters, propertyName) {
488
- return filters.filter(f => f.property.startsWith(propertyName + '.'));
489
- }
490
- _initValidators(formControl, scope) {
491
- if (formControl) {
492
- for (let key in formControl.controls) {
493
- const control = formControl.controls[key];
494
- if (control.controls) {
495
- this._initValidators(control, scope);
496
- }
497
- else {
498
- scope.initialValidators[control._eoFormElement.name] = control.validator;
499
- control.setValidators(Validators.compose(this._getValidators(scope, control._eoFormElement).concat([scope.initialValidators[control._eoFormElement.name]])));
500
- control.updateValueAndValidity();
501
- }
502
- }
503
- }
504
- }
505
- /**
506
- * Build validators for the given form element to be attached to
507
- * a reactive formControl.
508
- *
509
- * @param formElement - form element object
510
- */
511
- _getValidators(scope, formElement) {
512
- let elmValidators = FormValidation.getValidators(formElement, scope.formOptions.formModel.situation);
513
- // add custom validator for script enabled forms
514
- if (scope.formGenResult.scriptingScope) {
515
- elmValidators.push(FormValidation.customScriptingValidation);
516
- }
517
- return elmValidators;
518
- }
519
- _initScriptingScope(scope, formScriptService) {
520
- let { data, actions, objects, context } = (scope.formOptions || {});
521
- if (scope.formGenResult.scriptingScope) {
522
- scope.formGenResult.scriptingScope.setModel(scope.formGenResult.scriptModel);
523
- /** provide access to actions (used inside of BPM-Forms) */
524
- scope.formGenResult.scriptingScope.actions = actions;
525
- /** provide access to additional objects (used for example in BPM-Start-Forms to
526
- * add data of DMS-Objects to start the process for)
527
- */
528
- scope.formGenResult.scriptingScope.objects = objects;
529
- scope.formGenResult.scriptingScope.context = context;
530
- /** provide readonly access to initial form data (which may also contain values that
531
- * are not rendered as form elements (invisible values))
532
- */
533
- scope.formGenResult.scriptingScope.data = data;
534
- /** by default, scripting scopes are applied to forms. But table elements create their own scope
535
- * for editing rows. Being one of those inner forms should not run the form script again, but
536
- * instead just provide the observing abilities of the scripting scope.
537
- */
538
- if (!scope.formOptions.disabled && !scope.isInnerTableForm && scope.formGenResult.formModel) {
539
- const scriptName = scope.formGenResult.formModel.name + '_' + scope.formGenResult.formModel.situation;
540
- this.logger.debug('executing form script ' + scriptName);
541
- formScriptService.runFormScript(scope.formGenResult.scriptingScope, scope.formGenResult.formModel.script, scriptName);
542
- }
543
- }
544
- }
545
- /**
546
- * This method will be called each time the script changes its internal model.
547
- * It is used to transfer the script changes to the actual form model.
548
- *
549
- * To ensure the right context, we define an instance method as callback for the scripting scope
550
- * @see: https://blog.johnnyreilly.com/2014/04/typescript-instance-methods.html
551
- *
552
- * @param formControlName
553
- * @param change
554
- */
555
- _getScriptingModelChanged(scope) {
556
- return (formControlName, change) => {
557
- // find the target control
558
- let fc = scope.formGenResult.formControls[formControlName];
559
- if (fc) {
560
- // change only allowed properties
561
- switch (change.name) {
562
- case 'value': {
563
- if (Array.isArray(change.newValue)) {
564
- this._processArrayValueChange(fc, change);
565
- }
566
- else {
567
- fc._eoFormElement.value = change.newValue;
568
- if (fc.value !== change.newValue) {
569
- fc.patchValue(change.newValue);
570
- fc.updateValueAndValidity();
571
- fc.markAsDirty();
572
- }
573
- }
574
- scope.formGenResult.form.markAsDirty();
575
- break;
576
- }
577
- case 'required': {
578
- if (fc._eoFormElement.required !== change.newValue) {
579
- fc._eoFormElement.required = change.newValue;
580
- // apply new validators
581
- // @see: https://scotch.io/tutorials/how-to-implement-conditional-validation-in-angular-2-model-driven-forms
582
- fc.setValidators(Validators.compose(this._getValidators(scope, fc._eoFormElement).concat([scope.initialValidators[fc._eoFormElement.name]])));
583
- // need to mark form control as touched because otherwise form validation will not show
584
- // error messages
585
- fc.markAsTouched();
586
- fc.updateValueAndValidity();
587
- }
588
- break;
589
- }
590
- case 'readonly': {
591
- fc._eoFormElement.readonly = change.newValue;
592
- if (change.newValue === true) {
593
- fc.disable();
594
- }
595
- else {
596
- fc.enable();
597
- }
598
- break;
599
- }
600
- case 'error': {
601
- if (JSON.stringify(fc._eoFormElement.error) !== JSON.stringify(change.newValue)) {
602
- fc._eoFormElement.error = change.newValue;
603
- fc.markAsTouched();
604
- fc.updateValueAndValidity();
605
- }
606
- break;
607
- }
608
- // new onrowedit function was applied by the script
609
- case 'onrowedit': {
610
- fc._eoFormElement.onrowedit = change.newValue;
611
- break;
612
- }
613
- // new onchange function was applied by the script
614
- case 'onchange': {
615
- fc._eoFormElement.onchange = change.newValue;
616
- break;
617
- }
618
- // new contextId was applied by the script
619
- case 'contextId': {
620
- fc._eoFormElement.contextId = change.newValue;
621
- break;
622
- }
623
- }
624
- }
625
- };
626
- }
627
- _processArrayValueChange(fc, change) {
628
- const newVal = change.newValue;
629
- const targetType = fc._eoFormElement.type;
630
- // for some types we have to ensure that meta data are provided as well
631
- switch (targetType) {
632
- case 'ORGANIZATION': {
633
- this._getDataMeta(fc._eoFormElement, newVal).subscribe(m => {
634
- fc._eoFormElement.dataMeta = m;
635
- });
636
- break;
637
- }
638
- case 'CODESYSTEM': {
639
- if (!fc._eoFormElement.codesystem.entries) {
640
- fc._eoFormElement.codesystem = this.systemService.getCodesystem(fc._eoFormElement.codesystem.id);
641
- }
642
- break;
643
- }
644
- case 'TABLE': {
645
- const dataToBeProcessed = {};
646
- fc._eoFormElement.elements.forEach(e => {
647
- if (e.type === 'ORGANIZATION' || e.type === 'CODESYSTEM') {
648
- dataToBeProcessed[e.name] = e;
649
- }
650
- });
651
- if (Object.keys(dataToBeProcessed).length) {
652
- let obs = [];
653
- newVal.forEach(rowData => {
654
- Object.keys(rowData).forEach(key => {
655
- if (dataToBeProcessed[key]) {
656
- obs.push(this._getDataMeta(dataToBeProcessed[key], rowData[key]).pipe(tap(m => {
657
- if (m) {
658
- rowData[key + '_meta'] = m;
659
- }
660
- else {
661
- delete rowData[key + '_meta'];
662
- }
663
- })));
664
- }
665
- });
666
- });
667
- forkJoin(obs).subscribe(() => this._updateArrayValue(fc, newVal));
668
- }
669
- break;
670
- }
671
- }
672
- this._updateArrayValue(fc, newVal);
673
- }
674
- _updateArrayValue(fc, newValue) {
675
- fc._eoFormElement.value = [].concat(newValue);
676
- fc.patchValue([].concat(newValue));
677
- fc.updateValueAndValidity();
678
- fc.markAsDirty();
679
- }
680
- /**
681
- * Add a reference to a temporary localstorage entry that should be cleared when a
682
- * new browser session starts. In context of forms this will be used to cleanup the
683
- * layout state of forms (selected tabs etc.) that are stored locally but should only
684
- * be pesisted for one browser session.
685
- * @param storageKey Key of the localstorage item
686
- */
687
- addTemporaryStorageEntry(storageKey) {
688
- // entries will themselves be stored in localstorage so we can check for entries
689
- // to be removed once the application starts
690
- const current = this._getTemporaryStorageEntries();
691
- if (!current.includes(storageKey))
692
- localStorage.setItem(this.TEMP_STORAGE_ENTRIES_KEY, JSON.stringify([...current, storageKey]));
693
- }
694
- _clearTemporaryStorageEntries() {
695
- this._getTemporaryStorageEntries().forEach(e => localStorage.removeItem(e));
696
- localStorage.removeItem(this.TEMP_STORAGE_ENTRIES_KEY);
697
- }
698
- _getTemporaryStorageEntries() {
699
- let res = [];
700
- try {
701
- const entries = JSON.parse(localStorage.getItem(this.TEMP_STORAGE_ENTRIES_KEY));
702
- if (Array.isArray(entries))
703
- res = entries;
704
- }
705
- catch (e) {
706
- console.debug(e);
707
- }
708
- console.debug(`Found ${res.length} tmp entries to be removed`);
709
- return res;
710
- }
711
- }
712
- ObjectFormHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectFormHelperService, deps: [{ token: i1.Logger }, { token: i2.ReferenceService }, { token: i1.SearchService }, { token: i3.PluginsService }, { token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Injectable });
713
- ObjectFormHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectFormHelperService });
714
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectFormHelperService, decorators: [{
715
- type: Injectable
716
- }], ctorParameters: function () { return [{ type: i1.Logger }, { type: i2.ReferenceService }, { type: i1.SearchService }, { type: i3.PluginsService }, { type: i1.SystemService }]; } });
717
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFTLFVBQVUsRUFBZ0IsYUFBYSxFQUFpQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbkcsT0FBTyxFQUFDLFFBQVEsRUFBYyxFQUFFLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUtqRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRXRFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhEQUE4RCxDQUFDOzs7OztBQXlCdEcsTUFBTSxPQUFPLHVCQUF1QjtJQUlsQyxZQUFvQixNQUFjLEVBQ3hCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixhQUE2QixFQUM3QixhQUE0QjtRQUpsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixh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QUFFLENBQUM7UUFDbkQsSUFBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ2hDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVPLDZCQUE2QjtRQUNuQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUk7WUFDRixNQUFNLE9BQU8sR0FBYSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztZQUMxRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUFFLEdBQUcsR0FBRyxPQUFPLENBQUM7U0FDM0M7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDakI7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLE1BQU0sNEJBQTRCLENBQUMsQ0FBQztRQUMvRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O29IQWp3QlUsdUJBQXVCO3dIQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMb2dnZXIsIFJhbmdlVmFsdWUsIFNlYXJjaEZpbHRlciwgU2VhcmNoU2VydmljZSwgU3lzdGVtU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge2ZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtQbHVnaW5zU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL3BsdWdpbnMuc2VydmljZSc7XG5pbXBvcnQge1JlZmVyZW5jZVNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3JlZmVyZW5jZXMvcmVmZXJlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi9vYmplY3QtZm9ybS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQge0Zvcm1WYWxpZGF0aW9ufSBmcm9tICcuL29iamVjdC1mb3JtL2Zvcm0tdmFsaWRhdGlvbi9mb3JtLXZhbGlkYXRpb24nO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbH0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1jb250cm9sJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyfSBmcm9tICcuL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge09iamVjdEZvcm1Hcm91cH0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1ncm91cC5tb2RlbCc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRTZXJ2aWNlfSBmcm9tICcuL29iamVjdC1mb3JtL29iamVjdC1mb3JtLXNjcmlwdC9vYmplY3QtZm9ybS1zY3JpcHQuc2VydmljZSc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRpbmdTY29wZX0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0aW5nLXNjb3BlJztcbmltcG9ydCB7T2JqZWN0Rm9ybU1vZGVsfSBmcm9tICcuL29iamVjdC1mb3JtL29iamVjdC1mb3JtLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtR2VuU2NvcGUge1xuICBnQ291bnQ6IG51bWJlcjtcbiAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zO1xuICBpc0lubmVyVGFibGVGb3JtOiBib29sZWFuO1xuICBpbml0aWFsVmFsaWRhdG9yczoge1tuYW1lOiBzdHJpbmddOiBWYWxpZGF0b3JGbiB8IG51bGx9O1xuICBmb3JtR2VuUmVzdWx0OiBGb3JtR2VuUmVzdWx0O1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtR2VuUmVzdWx0IHtcbiAgLy8gRm9ybSBjb250cm9scyBnZW5lcmF0ZWQgZnJvbSB0aGUgbW9kZWwgYXMgJ1F1aWNrIGFjY2VzcyBvYmplY3QnXG4gIC8vIEZvcm0gZWxlbWVudHMgbmFtZSBpcyBrZXkgYW5kIHRoZSB2YWx1ZSBpcyB0aGUgZm9ybSBjb250cm9sIGl0c2VsZlxuICBmb3JtQ29udHJvbHM6IHtbbmFtZTogc3RyaW5nXTogT2JqZWN0Rm9ybUNvbnRyb2x9O1xuICBmb3JtTW9kZWw6IGFueSxcbiAgLy8gU3Vic2NyaXB0aW9ucyB0byB2YWx1ZSBjaGFuZ2VzIG9mIHRoZSBnZW5lcmF0ZWQgZm9ybSBjb250cm9sc1xuICAvLyBZb3Ugc2hvdWxkIGFsd2F5cyB1bnN1YnNjcmliZSBmcm9tIGFsbCBvZiB0aGVtIHdoZW4gY29uc3VtaW5nXG4gIC8vIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgY29udHJvbFZhbHVlU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG4gIHNjcmlwdGluZ1Njb3BlOiBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGU7XG4gIHNjcmlwdE1vZGVsOiB7W25hbWU6IHN0cmluZ106IGFueX07XG4gIGZvcm06IE9iamVjdEZvcm1Hcm91cDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbicpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgcHJpdmF0ZSByZWZlcmVuY2VTZXJ2aWNlOiBSZWZlcmVuY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpblNlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSkge1xuICAgIHRoaXMuX2NsZWFyVGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSByZWFjdGl2ZSBmb3JtIGJhc2VkIG9uIGEgZm9ybSBtb2RlbCB0aGF0IG1heSBhbHNvIGluY2x1ZGUgZm9ybSBzY3JpcHRzLlxuICAgKiBAcGFyYW0gZm9ybU9wdGlvbnMgYE9iamVjdEZvcm1PcHRpb25zYCBkZWZpbmluZyB0aGUgZm9ybVxuICAgKiBAcGFyYW0gZm9ybVNjcmlwdFNlcnZpY2UgSW5zdGFuY2Ugb2YgYSBgT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2VgLiBUaGlzIHNlcnZpY2UgaXMgc3VwcG9zZWQgdG8gYmVcbiAgICogc2NvcGVkIHRvIHRoZSBjb21wb25lbnQgcmVuZGVyaW5nIHRoZSBmb3JtIChwcm92aWRlcnMgYXJyYXkgaW4gY29tcG9uZW50IGRlY29yYXRvcikuXG4gICAqIEBwYXJhbSBpc0lubmVyVGFibGVGb3JtIHdoZXRoZXIgb3Igbm90IHRoZSBmb3JtIGlzIHBhcnQgb2YgYW5vdGhlciBmb3JtIChhcyBpcyB3aXRoIHRhYmxlIGVkaXQgZm9ybXMpXG4gICAqIEByZXR1cm5zIEFuIGBGb3JtR2VuUmVzdWx0YCBvYmplY3RcbiAgICovXG4gIGJ1aWxkUmVhY3RpdmVGb3JtKFxuICAgIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucyxcbiAgICBmb3JtU2NyaXB0U2VydmljZTogT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2UsXG4gICAgaXNJbm5lclRhYmxlRm9ybT86IGJvb2xlYW4pOiBGb3JtR2VuUmVzdWx0IHtcblxuICAgIGNvbnN0IF9zY29wZTogRm9ybUdlblNjb3BlID0ge1xuICAgICAgZ0NvdW50OiAwLFxuICAgICAgZm9ybU9wdGlvbnMsXG4gICAgICBpc0lubmVyVGFibGVGb3JtLFxuICAgICAgaW5pdGlhbFZhbGlkYXRvcnM6IHt9LFxuICAgICAgZm9ybUdlblJlc3VsdDoge1xuICAgICAgICBmb3JtQ29udHJvbHM6IHt9LFxuICAgICAgICBmb3JtTW9kZWw6IHt9LFxuICAgICAgICBjb250cm9sVmFsdWVTdWJzY3JpcHRpb25zOiBbXSxcbiAgICAgICAgc2NyaXB0aW5nU2NvcGU6IHVuZGVmaW5lZCxcbiAgICAgICAgc2NyaXB0TW9kZWw6IHt9LFxuICAgICAgICBmb3JtOiBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybU1vZGVsID0gdGhpcy5fZGF0YVRvRm9ybShfc2NvcGUsIGZvcm1PcHRpb25zLmZvcm1Nb2RlbCwgZm9ybU9wdGlvbnMuZGF0YSk7XG4gICAgX3Njb3BlLmZvcm1HZW5SZXN1bHQuZm9ybU1vZGVsID0gZm9ybU1vZGVsO1xuICAgIGlmICghZm9ybU1vZGVsKSByZXR1cm47XG5cbiAgICAvLyBpZiBhIHNjcmlwdCBpcyBhdmFpbGFibGUsIHdlJ2xsIGluaXQgdGhlIGZvcm0gc2NyaXB0aW5nIGZvciB0aGVcbiAgICAvLyBjdXJyZW50IGZvcm1cbiAgICBsZXQgc2NyaXB0aW5nU2NvcGU6IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZTtcbiAgICBpZiAoX3Njb3BlLmlzSW5uZXJUYWJsZUZvcm0gfHwgKGZvcm1Nb2RlbC5zY3JpcHQgJiYgZm9ybU1vZGVsLnNjcmlwdC5sZW5ndGggPiAwKSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2FkZGluZyBmb3JtIHNjcmlwdGluZyBzY29wZScpO1xuICAgICAgc2NyaXB0aW5nU2NvcGUgPSBuZXcgT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlKFxuICAgICAgICBmb3JtTW9kZWwuc2l0dWF0aW9uLFxuICAgICAgICB0aGlzLl9nZXRTY3JpcHRpbmdNb2RlbENoYW5nZWQoX3Njb3BlKSxcbiAgICAgICAgdGhpcy5wbHVnaW5TZXJ2aWNlLmdldEFwaSgpLFxuICAgICAgICBfc2NvcGUuaXNJbm5lclRhYmxlRm9ybVxuICAgICAgKTtcbiAgICAgIHNjcmlwdGluZ1Njb3BlLm9iamVjdElkID0gZm9ybU9wdGlvbnMub2JqZWN0SWQ7XG4gICAgfVxuICAgIF9zY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlID0gc2NyaXB0aW5nU2NvcGU7XG5cblxuICAgIGxldCBmb3JtID0gbmV3IE9iamVjdEZvcm1Hcm91cCh7fSk7XG4gICAgaWYgKGZvcm1Nb2RlbC5lbGVtZW50c1swXSAmJiBmb3JtTW9kZWwuZWxlbWVudHNbMF0uZWxlbWVudHMpIHtcbiAgICAgIHRoaXMuX2FkZEZvcm1Db250cm9sKF9zY29wZSwgZm9ybSwgZm9ybU1vZGVsLmVsZW1lbnRzWzBdLCAnY29yZScpO1xuICAgIH1cbiAgICBpZiAoZm9ybU1vZGVsLmVsZW1lbnRzWzFdICYmIGZvcm1Nb2RlbC5lbGVtZW50c1sxXS5lbGVtZW50cykge1xuICAgICAgdGhpcy5fYWRkRm9ybUNvbnRyb2woX3Njb3BlLCBmb3JtLCBmb3JtTW9kZWwuZWxlbWVudHNbMV0sICdkYXRhJyk7XG4gICAgfVxuICAgIF9zY29wZS5mb3JtR2VuUmVzdWx0LmZvcm0gPSBmb3JtO1xuICAgIHRoaXMuX2luaXRWYWxpZGF0b3JzKF9zY29wZS5mb3JtR2VuUmVzdWx0LmZvcm0sIF9zY29wZSk7XG4gICAgdGhpcy5faW5pdFNjcmlwdGluZ1Njb3BlKF9zY29wZSwgZm9ybVNjcmlwdFNlcnZpY2UpO1xuICAgIHJldHVybiBfc2NvcGUuZm9ybUdlblJlc3VsdDtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQ29udmVydHMgYSBmb3JtIGVsZW1lbnQgb2JqZWN0IHRvIGFuIE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB3aGljaCB0aGVuIGNhbiBiZSB1c2VkIHRvXG4gICAqIHJlbmRlciBhIGZyb20gY29udHJvbC4gUmVzdWx0IGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciBGb3JtRWxlbWVudENvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgLSB0aGUgZWxlbWVudCBvYmplY3Qgb3IgYSBqc29uIHN0cmluZ1xuICAgKiBAcGFyYW0gc2l0dWF0aW9uIC0gb3B0aW9uYWwgcHJvcGVydHkgdG8gc2V0IHVwIGEgZm9ybSBzaXR1YXRpb24gZm9yIHRoZSBjb250cm9sIChkZWZhdWx0IGlzIEVESVQpXG4gICAqIEByZXR1cm4gdGhlIGNvbnZlcnRlZCBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIgb3IgbnVsbCBpbiBjYXNlIG9mIGFuIGVycm9yXG4gICAqL1xuICBlbGVtZW50VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnksIHNpdHVhdGlvbj86IHN0cmluZyk6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB7XG5cbiAgICBsZXQgZm9ybUVsZW1lbnQ7XG4gICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9ybUVsZW1lbnQgPSBKU09OLnBhcnNlKGVsZW1lbnQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignVW5hYmxlIHRvIHBhcnNlIGZvcm0gZWxlbWVudCBmcm9tIGpzb24gJywgZm9ybUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKCFmb3JtRWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJcbiAgICBsZXQgd3JhcHBlciA9IG5ldyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoe30pO1xuICAgIGxldCBmb3JtU2l0dWF0aW9uID0gc2l0dWF0aW9uID8gc2l0dWF0aW9uIDogJ0VESVQnO1xuXG4gICAgd3JhcHBlci5fZW9Gb3JtQ29udHJvbFdyYXBwZXIgPSB7XG4gICAgICBjb250cm9sTmFtZTogZm9ybUVsZW1lbnQubmFtZSxcbiAgICAgIHNpdHVhdGlvbjogZm9ybVNpdHVhdGlvblxuICAgIH07XG5cbiAgICAvLyBmb3IgY29kZXN5c3RlbSBlbGVtZW50cyBhZGQgZW50cmllcyBpZiBub3QgeWV0IHByb3ZpZGVkXG4gICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyAmJiAoIWZvcm1FbGVtZW50LmNvZGVzeXN0ZW0gfHwgIWZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uZW50cmllcykpIHtcbiAgICAgIGZvcm1FbGVtZW50LmNvZGVzeXN0ZW0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKTtcbiAgICB9XG4gICAgLy8gY3JlYXRlIHRoZSBhY3R1YWwgZm9ybSBjb250cm9sXG4gICAgbGV0IGNvbnRyb2xEaXNhYmxlZCA9ICEhZm9ybUVsZW1lbnQucmVhZG9ubHk7XG4gICAgbGV0IGZvcm1Db250cm9sID0gbmV3IE9iamVjdEZvcm1Db250cm9sKHtcbiAgICAgIHZhbHVlOiBmb3JtRWxlbWVudC52YWx1ZSxcbiAgICAgIGRpc2FibGVkOiBjb250cm9sRGlzYWJsZWRcbiAgICB9LCBGb3JtVmFsaWRhdGlvbi5nZXRWYWxpZGF0b3JzKGZvcm1FbGVtZW50LCBmb3JtU2l0dWF0aW9uKSk7XG5cbiAgICAvLyBGb3JtIGVsZW1lbnRzIGluIFNFQVJDSCBzaXR1YXRpb24gbWF5IGFycml2ZSB3aXRoIGEgdmFsdWUgc2V0IHRvIE5VTEwgKGV4cGxpY2l0IHNlYXJjaCBmb3JcbiAgICAvLyBmaWVsZHMgdGhhdCBhcmUgTk9UIHNldCkuIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIHByZXBhcmUgdGhlIGZvcm0gY29udHJvbFxuICAgIGlmIChmb3JtU2l0dWF0aW9uID09PSAnU0VBUkNIJyAmJiBmb3JtRWxlbWVudC52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudDtcbiAgICB3cmFwcGVyLmFkZENvbnRyb2woZm9ybUVsZW1lbnQubmFtZSwgZm9ybUNvbnRyb2wpO1xuXG4gICAgcmV0dXJuIHdyYXBwZXI7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBkYXRhIGZyb20gYW4gb2JqZWN0IGZvcm0gYmFzZWQgb24gc2l0dWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZm9ybSAtIGZvcm0gdG8gZXh0cmFjdCBkYXRhIGZyb21cbiAgICogQHBhcmFtIHNpdHVhdGlvbiAtIGZvcm0gc2l0dWF0aW9uXG4gICAqIEBwYXJhbSBbaW5pdGlhbERhdGFdIC0gb3B0aW9uYWwgZm9ybSBkYXRhIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlcyBhZ2FpbnN0XG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGVkaXRpZyBpbmRleGRhdGEgKEVESVQgc2l0dWF0aW9uKSwgYmVjYXVzZSB3ZSBoYXZlIHRvIGNvbXBhcmUgbmV3IHZhbHVlc1xuICAgKiBhZ2FpbnN0IHRoZSBpbml0aWFsIHZhbHVlcy4gSWYgYSBwcm9wZXJ0eSB0aGF0IGlzIGNvbnRhaW5lZCBpbiB0aGUgZm9ybXMgaW5pdGlhbCBkYXRhIGlzIHJlbW92ZWRcbiAgICogKGUuZy4gc2V0IHRvIG51bGwpIHRoZW4gd2UgaGF2ZSB0byBzZXQgdGhpcyBudWxsIHZhbHVlLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgc2VydmVyIHdvdWxkXG4gICAqIGlnbm9yZSB0aGUgY2hhbmdlcy5cbiAgICogQHBhcmFtIGlzVGFibGVSb3dFZGl0Rm9ybSBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgcHJvdmlkZWQgZm9ybSBpcyBhbiBpbmxpbmUgZm9ybSB1c2VkIGJ5XG4gICAqIGEgZm9ybXMgdGFibGUgZWxlbWVudCBmb3IgZWRpdGluZyByb3dzLiBUaG9zZSBuZWVkIGEgc3BlY2lhbCBoYW5kbGluZy5cbiAgICogQHJldHVybiBleHRyYWN0ZWQgZGF0YSBhcyBvYmplY3RcbiAgICovXG4gIGV4dHJhY3RGb3JtRGF0YShmb3JtOiBPYmplY3RGb3JtR3JvdXAsIHNpdHVhdGlvbjogc3RyaW5nLCBpbml0aWFsRGF0YT86IGFueSwgaXNUYWJsZVJvd0VkaXRGb3JtPzogYm9vbGVhbikge1xuICAgIGxldCBleHRyYWN0ZWREYXRhID0ge307XG4gICAgdGhpcy5nZXRFbGVtZW50VmFsdWVzKGV4dHJhY3RlZERhdGEsIGZvcm0sIHNpdHVhdGlvbiB8fCAnRURJVCcsIGluaXRpYWxEYXRhLCBpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgIHJldHVybiBleHRyYWN0ZWREYXRhO1xuICB9XG5cbiAgLy8gUmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgdGhlIHZhbHVlcyBmcm9tIGVhY2ggZm9ybSBjb250cm9sLlxuICBwcml2YXRlIGdldEVsZW1lbnRWYWx1ZXMoZGF0YTogYW55LCBmb3JtQ29udHJvbDogT2JqZWN0Rm9ybU1vZGVsLCBzaXR1YXRpb246IHN0cmluZywgaW5pdGlhbERhdGE/OiBhbnksIGlzVGFibGVSb3dFZGl0Rm9ybT86IGJvb2xlYW4pIHtcblxuICAgIGlmICghZm9ybUNvbnRyb2wgfHwgIWZvcm1Db250cm9sLmNvbnRyb2xzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGZvcm1Db250cm9sIGluc3RhbmNlb2YgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKSB7XG5cbiAgICAgIGNvbnN0IGZjOiBhbnkgPSBmb3JtQ29udHJvbC5jb250cm9sc1tmb3JtQ29udHJvbC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWVdO1xuXG4gICAgICBpZiAoZmMuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAvLyBmb3JtIGVsZW1lbnRzIG1heSBleHBsaWNpdGx5IHNldCB0byBoYXZlIE5VTEwgdmFsdWUgKGUuZy4gZnJvbSBTZWFyY2ggZm9ybSBpZiB2YWx1ZXMgYXJlIHJlcXVlc3RlZCB0aGF0IGhhdmUgbm8gdmFsdWVzKVxuICAgICAgICBpZiAoaXNUYWJsZVJvd0VkaXRGb3JtKSB7XG4gICAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgbnVsbCwgZGF0YSwgZmMuX2VvRm9ybUVsZW1lbnQsIGlzVGFibGVSb3dFZGl0Rm9ybSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQucW5hbWUsIG51bGwsIGRhdGEsIGZjLl9lb0Zvcm1FbGVtZW50LCBpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSBpZiAoZmMudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgdmFsID0gZmMudmFsdWU7XG5cbiAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgbWV0YSBkYXRhIGFyZSBhbHNvIHVwIHRvIGRhdGVcbiAgICAgICAgaWYgKGZjLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJykge1xuICAgICAgICAgIGNvbnN0IGNzID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldENvZGVzeXN0ZW0oZmMuX2VvRm9ybUVsZW1lbnQuY29kZXN5c3RlbS5pZCk7XG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSBjcy5lbnRyaWVzLmZpbmQoZSA9PiBlLmRhdGEgPT09IHZhbCk7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHNpdHVhdGlvbikge1xuICAgICAgICAgIGNhc2UgJ1NFQVJDSCc6IHtcbiAgICAgICAgICAgIGlmICh2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgLy8gcm93IGVkaXRpbmcgZm9ybXMgdXNlIHRoZSBuYW1lIGluc3RlYWQgb2YgdGhlIHFuYW1lIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZVxuICAgICAgICAgICAgICAvLyB0YWJsZXMgZ3JpZCBpc24ndCBhYmxlIHRvIG1hcCB0aGUgZmllbGRzXG4gICAgICAgICAgICAgIGlmICghaXNUYWJsZVJvd0VkaXRGb3JtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQucW5hbWUsIHZhbCwgZGF0YSwgZmMuX2VvRm9ybUVsZW1lbnQsIGlzVGFibGVSb3dFZGl0Rm9ybSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShmYy5fZW9Gb3JtRWxlbWVudC5uYW1lLCB2YWwsIGRhdGEsIGZjLl9lb0Zvcm1FbGVtZW50LCBpc1RhYmxlUm93RWRpdEZvcm0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdDUkVBVEUnOiB7XG4gICAgICAgICAgICAvLyBhbHNvIGFkZCBOVUxMIHZhbHVlcyAob3ZlcnJpZGUgZXhpc3RpbmcgZGVmYXVsdHZhbHVlcylcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YVZhbHVlKGZjLl9lb0Zvcm1FbGVtZW50Lm5hbWUsIHZhbCwgZGF0YSwgZmMuX2VvRm9ybUVsZW1lbnQsIGlzVGFibGVSb3dFZGl0Rm9ybSlcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdFRElUJzoge1xuICAgICAgICAgICAgLy8gaW4gZWRpdCBzaXR1YXRpb24gd2UgaGF2ZSB0byBjb21wYXJlIG5ldyB2YWx1ZXMgYWdhaW5zdCB0aGUgaW5pdGlhbCB2YWx1ZXNcbiAgICAgICAgICAgIC8vIElmIGEgcHJvcGVydHkgdGhhdCBpcyBjb250YWluZWQgaW4gdGhlIGZvcm1zIGluaXRpYWwgZGF0YSBpcyByZW1vdmVkIChlLmcuIHNldCB0byBudWxsKVxuICAgICAgICAgICAgLy8gdGhlbiB3ZSBoYXZlIHRvIHNldCB0aGlzIG51bGwgdmFsdWUsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBzZXJ2ZXIgd2lsbCBpZ25vcmUgdGhlIGNoYW5nZXNcbiAgICAgICAgICAgIGlmICh2YWwgIT09IG51bGwgfHwgKGluaXRpYWxEYXRhICYmIGluaXRpYWxEYXRhW2ZjLl9lb0Zvcm1FbGVtZW50Lm5hbWVdICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgIC8vIGRhdGFbZmMuX2VvRm9ybUVsZW1lbnQubmFtZV0gPSB2YWw7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RGF0YVZhbHVlKGZjLl9lb0Zvcm1FbGVtZW50Lm5hbWUsIHZhbCwgZGF0YSwgZmMuX2VvRm9ybUVsZW1lbnQsIGlzVGFibGVSb3dFZGl0Rm9ybSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3Qua2V5cyhmb3JtQ29udHJvbC5jb250cm9scylcbiAgICAgICAgLmZvckVhY2goY29udHJvbEtleSA9PiB7XG4gICAgICAgICAgbGV0IGZvcm1Db250cm9sS2V5ZWQgPSA8T2JqZWN0Rm9ybUdyb3VwPmZvcm1Db250cm9sLmNvbnRyb2xzW2NvbnRyb2xLZXldO1xuICAgICAgICAgIHRoaXMuZ2V0RWxlbWVudFZhbHVlcyhkYXRhLCBmb3JtQ29udHJvbEtleWVkLCBzaXR1YXRpb24sIGluaXRpYWxEYXRhLCBpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERhdGFWYWx1ZShrZXksIHZhbHVlLCBkYXRhLCBmb3JtRWxlbWVudCwgaXNUYWJsZVJvd0VkaXRGb3JtKSB7XG4gICAgZGF0YVtrZXldID0gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSwgZm9ybUVsZW1lbnQpO1xuXG4gICAgaWYgKGlzVGFibGVSb3dFZGl0Rm9ybSAmJiBmb3JtRWxlbWVudC5kYXRhTWV0YSkge1xuICAgICAgLy8gaW5uZXIgdGFibGVzIG5lZWQgdG8gc2V0IHVwIHRoZSBtZXRhIGRhdGEgYXMgd2VsbFxuICAgICAgZGF0YVtrZXkgKyAnX21ldGEnXSA9IGZvcm1FbGVtZW50LmRhdGFNZXRhO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFZhbHVlKHZhbHVlLCBmb3JtRWxlbWVudCkge1xuICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnREFURVRJTUUnICYmICFmb3JtRWxlbWVudC53aXRodGltZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4odmFsdWUuZ2V0VGltZSgpKSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAneXl5eS1NTS1kZCcpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZVZhbHVlKFxuICAgICAgICAgIHZhbHVlLm9wZXJhdG9yLFxuICAgICAgICAgIHZhbHVlLmZpcnN0VmFsdWUgJiYgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUuZmlyc3RWYWx1ZSwgJ3l5eXktTU0tZGQnKSxcbiAgICAgICAgICB2YWx1ZS5zZWNvbmRWYWx1ZSAmJiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS5zZWNvbmRWYWx1ZSwgJ3l5eXktTU0tZGQnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnVEFCTEUnKSB7XG4gICAgICAoZm9ybUVsZW1lbnQuZWxlbWVudHMgfHwgW10pLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAodmFsdWUgfHwgW10pLmZvckVhY2godiA9PiB2W2VsLm5hbWVdID0gdGhpcy5mb3JtYXRWYWx1ZSh2W2VsLm5hbWVdLCBlbCkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG5cbiAgLy8gRnVuY3Rpb25zIGludm9sdmVkIGluIGJ1aWxkaW5nIGFuIG9iamVjdCBmb3JtXG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZSBtZXRob2QgYWRkaW5nIGEgbmV3IFVudHlwZWRGb3JtQ29udHJvbCAoZ3JvdXAgb3IgY29udHJvbCkgdG8gYSBwYXJlbnQgZm9ybSBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gcGFyZW50R3JvdXAgLSB0aGUgcGFyZW50IGdyb3VwIHRvIGFkZCB0aGUgY29udHJvbCB0b1xuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnQgLSB0aGUgZW5haW8gZm9ybSBtb2RlbCBlbGVtZW50IHRvIGNyZWF0ZSB0aGUgY2hpbGQgY29udHJvbCBmcm9tXG4gICAqIEBwYXJhbSBbdXNlTmFtZV0gLSB1c2UgdGhpcyBuYW1lIGluc3RlYWQgb2YgdGhlIG9uZSBmcm9tIHRoZSBtb2RlbFxuICAgKi9cbiAgcHJpdmF0ZSBfYWRkRm9ybUNvbnRyb2woc2NvcGU6IEZvcm1HZW5TY29wZSwgcGFyZW50R3JvdXA6IE9iamVjdEZvcm1Hcm91cCwgZm9ybUVsZW1lbnQ6IGFueSwgdXNlTmFtZT86IHN0cmluZykge1xuXG4gICAgbGV0IGN0cmw7XG4gICAgbGV0IG5hbWU7XG5cbiAgICAvLyBhZGQgYSBmb3JtIGdyb3VwXG4gICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdvMm1Hcm91cCcgfHwgZm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwU3RhY2snKSB7XG5cbiAgICAgIC8vIGRvIG5vdCBhZGQgZ3JvdXBzIHRoYXQgYXJlIGVtcHR5XG4gICAgICBpZiAoIWZvcm1FbGVtZW50LmVsZW1lbnRzIHx8IGZvcm1FbGVtZW50LmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRm91bmQgZW1wdHkgZm9ybSBncm91cCcsIGZvcm1FbGVtZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjdHJsID0gbmV3IE9iamVjdEZvcm1Hcm91cCh7fSk7XG4gICAgICBjdHJsLl9lb0Zvcm1Hcm91cCA9IHtcbiAgICAgICAgbGFiZWw6IGZvcm1FbGVtZW50LmxhYmVsLFxuICAgICAgICBsYXlvdXQ6IGZvcm1FbGVtZW50LmxheW91dCxcbiAgICAgICAgdHlwZTogZm9ybUVsZW1lbnQudHlwZVxuICAgICAgfTtcblxuICAgICAgaWYgKHVzZU5hbWUgPT09ICdjb3JlJyB8fCB1c2VOYW1lID09PSAnZGF0YScpIHtcbiAgICAgICAgY3RybC5fZW9Gb3JtR3JvdXAubGFiZWwgPSB1c2VOYW1lO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBlIG9mIGZvcm1FbGVtZW50LmVsZW1lbnRzKSB7XG4gICAgICAgIHRoaXMuX2FkZEZvcm1Db250cm9sKHNjb3BlLCBjdHJsLCBlKTtcbiAgICAgIH1cbiAgICAgIG5hbWUgPSB1c2VOYW1lIHx8ICdmZycgKyBzY29wZS5nQ291bnQrKztcbiAgICAgIGN0cmwuX2VvRm9ybUdyb3VwLmlkID0gYCR7c2NvcGUuZm9ybU9wdGlvbnMubGF5b3V0U2V0dGluZ3NJRCB8fCBzY29wZS5mb3JtT3B0aW9ucy5mb3JtTW9kZWwubmFtZX0uJHtuYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFkZCBmb3JtIGNvbnRyb2xcbiAgICAgIC8vIFRvIGJlIGFibGUgdG8gaW50ZWdyYXRlIHJlY3Vyc2l2ZSBmb3JtIGNvbnRyb2xzIGludG8gdGhlIG1haW4gZm9ybSxcbiAgICAgIC8vIHdlIGhhdmUgdG8gd3JhcCB0aGVtIGluIGEgZm9ybSBncm91cFxuICAgICAgY3RybCA9IG5ldyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoe30pO1xuICAgICAgY3RybC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIgPSB7XG4gICAgICAgIC8vIHRoZSBuYW1lIG9mIHRoZSB3cmFwcGVkIFVudHlwZWRGb3JtQ29udHJvbFxuICAgICAgICBjb250cm9sTmFtZTogZm9ybUVsZW1lbnQubmFtZSxcbiAgICAgICAgc2l0dWF0aW9uOiBzY29wZS5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uXG4gICAgICB9O1xuICAgICAgaWYgKHNjb3BlLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24gPT09ICdTRUFSQ0gnICYmIGZvcm1FbGVtZW50LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgLy8gZG8gbm90IHNldCBhIHJlZmVyZW5jZSBhcyB0aGUgZm9ybSBjb250cm9scyB2YWx1ZVxuICAgICAgLy8gb3RoZXJ3aXNlIHdlIGNvdWxkIG5vdCByZXNldCB0aGUgZm9ybVxuICAgICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtRWxlbWVudC52YWx1ZSkpIHtcbiAgICAgICAgLy8gY29weSBieSB2YWx1ZSBmb3IgYXJyYXlzIG9mIG9iamVjdHMgKGUuZy4gdGFibGUgZGF0YSlcbiAgICAgICAgdmFsdWUgPSBbXTtcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICAgIHZhbHVlLnB1c2goVXRpbHMuZm9ybURhdGFQYXJzZShVdGlscy5mb3JtRGF0YVN0cmluZ2lmeShvKSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZm9ybUVsZW1lbnQudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIGZvciBjb2Rlc3lzdGVtIGVsZW1lbnRzIGFkZCBlbnRyaWVzIGlmIG5vdCB5ZXQgcHJvdmlkZWRcbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgJiYgIWZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uZW50cmllcykge1xuICAgICAgICBmb3JtRWxlbWVudC5jb2Rlc3lzdGVtID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldENvZGVzeXN0ZW0oZm9ybUVsZW1lbnQuY29kZXN5c3RlbS5pZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGNyZWF0ZSB0aGUgYWN0dWFsIGZvcm0gY29udHJvbFxuICAgICAgbGV0IGNvbnRyb2xEaXNhYmxlZCA9IHNjb3BlLmZvcm1PcHRpb25zLmRpc2FibGVkIHx8ICEhZm9ybUVsZW1lbnQucmVhZG9ubHk7XG4gICAgICBsZXQgZm9ybUNvbnRyb2wgPSBuZXcgT2JqZWN0Rm9ybUNvbnRyb2woe1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGRpc2FibGVkOiBjb250cm9sRGlzYWJsZWRcbiAgICAgIH0pO1xuXG4gICAgICBmb3JtRWxlbWVudC5yZWFkb25seSA9IGNvbnRyb2xEaXNhYmxlZDtcblxuICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudDtcbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuZm9ybUNvbnRyb2xzW2Zvcm1FbGVtZW50Lm5hbWVdID0gZm9ybUNvbnRyb2w7XG5cbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgfHwgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdTVFJJTkcnICYmIGZvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAnc2VsZWN0b3InKSkge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5hcHBseUZpbHRlciA9IChmdW5jOiBGdW5jdGlvbikgPT4ge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmZpbHRlckZ1bmN0aW9uID0gZnVuYztcbiAgICAgICAgfTtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuYXBwbHlEaXNhYmxpbmdGaWx0ZXIgPSAoZnVuYzogRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5kaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbiA9IGZ1bmM7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJiBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3NlbGVjdG9yJykge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5zZXRMaXN0ID0gKGxpc3RPYmplY3Q6IGFueSkgPT4ge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50Lmxpc3QgPSBsaXN0T2JqZWN0O1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuc2V0RmlsdGVyID0gKGZpbHRlck9iamVjdDogYW55KSA9PiB7XG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZmlsdGVyID0gZmlsdGVyT2JqZWN0O1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJykge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5vYmplY3QgPSBzY29wZS5mb3JtT3B0aW9ucy5vYmplY3Q7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnUkVGRVJFTkNFJykge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5zZXRRdWVyeUZpbHRlcnMgPSAocXVlcnlGaWx0ZXJzT2JqZWN0OiB7W2ZpZWxkUW5hbWU6IHN0cmluZ106IHtvOiBzdHJpbmcsIHYxOiBhbnksIHYyOiBhbnl9fSwgb2JqZWN0VHlwZXM/OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnF1ZXJ5RmlsdGVycyA9IHF1ZXJ5RmlsdGVyc09iamVjdDtcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5vYmplY3RUeXBlc0ZpbHRlciA9IG9iamVjdFR5cGVzO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoc2NvcGUuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgICAgLy8gaW4gc2VhcmNoIHNpdHVhdGlvbiBldmVuIHJlYWRvbmx5IGZpZWxkcyBzaG91bGQgYmUgZWRpdGFibGUgLi4uXG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgICAgIC8vIC4uLiBhbmQgcmVxdWlyZWQgbWFrZXMgbm8gc2Vuc2UgaGVyZVxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyByZW1vdmUgZW1wdHkgZGVzY3JpcHRpb25zXG4gICAgICBsZXQgZGVzYyA9IGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uO1xuICAgICAgaWYgKGRlc2MgJiYgZGVzYy50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIHRoZSBmb3JtIGVsZW1lbnQgdG8gdGhlIHNjcmlwdCBtb2RlbCB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgaW50b1xuICAgICAgLy8gdGhlIGZvcm1zIHNjcmlwdGluZyBzY29wZSBsYXRlciBvblxuICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRNb2RlbFtmb3JtRWxlbWVudC5uYW1lXSA9IGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50O1xuXG4gICAgICAvLyBhcHBseSBjaGFuZ2UgbGlzdGVuZXIgdG8gdGhlIGZvcm0gY29udHJvbCwgdGhhdCB3aWxsIHRyaWdnZXJcbiAgICAgIC8vIHRoZSBmb3JtIGVsZW1lbnRzIG9uQ2hhbmdlIGxpc3RlbmVyXG4gICAgICBsZXQgY29udHJvbFdhdGNoID0gY3RybC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJyA/IDAgOiA1MDApKTtcbiAgICAgIGNvbnRyb2xXYXRjaC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgICAgaWYgKGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICAgICAgdGhpcy5fZ2V0RGF0YU1ldGEoZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQsIHZbZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQubmFtZV0pLnN1YnNjcmliZShtID0+IHtcbiAgICAgICAgICAgIGlmIChtKSB7XG4gICAgICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBtIDogbVswXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRlbGV0ZSBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZSkge1xuICAgICAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUubW9kZWxDaGFuZ2VkKHYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuY29udHJvbFZhbHVlU3Vic2NyaXB0aW9ucy5wdXNoKGNvbnRyb2xXYXRjaCk7XG5cbiAgICAgIGN0cmwuYWRkQ29udHJvbChmb3JtRWxlbWVudC5uYW1lLCBmb3JtQ29udHJvbCk7XG4gICAgICBuYW1lID0gJ2ZnXycgKyBmb3JtRWxlbWVudC5uYW1lO1xuICAgIH1cbiAgICBwYXJlbnRHcm91cC5hZGRDb250cm9sKG5hbWUsIGN0cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGRhdGEgaW50byBhIGZvcm0gbW9kZWwuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIGZvcm0gbW9kZWxcbiAgICogQHBhcmFtIGRhdGEgLSBkYXRhIG9iamVjdCBvciBhcnJheSBvZiBTZWFyY2hGaWx0ZXIgb2JqZWN0cyBpbiBjYXNlIG9mIGEgc2VhcmNoIGZvcm1cbiAgICovXG4gIHByaXZhdGUgX2RhdGFUb0Zvcm0oc2NvcGU6IEZvcm1HZW5TY29wZSwgbW9kZWw6IGFueSwgZGF0YTogYW55KSB7XG4gICAgaWYgKG1vZGVsICYmIGRhdGEpIHtcbiAgICAgIHRoaXMuX3NldEVsZW1lbnRWYWx1ZXMoc2NvcGUsIG1vZGVsLmVsZW1lbnRzLCBkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLy8gcmVjdXJzaXZlIG1ldGhvZCBmb3IgYWRkaW5nIHZhbHVlcyB0byBtb2RlbCBlbGVtZW50c1xuICBwcml2YXRlIF9zZXRFbGVtZW50VmFsdWVzKHNjb3BlOiBGb3JtR2VuU2NvcGUsIGVsZW1lbnRzLCBkYXRhKSB7XG5cbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuX2hhc1ZhbHVlKGRhdGEsIGVsZW1lbnQpKSB7XG5cbiAgICAgICAgZWxlbWVudC52YWx1ZSA9IHRoaXMuX2dldFZhbHVlKHNjb3BlLCBkYXRhLCBlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAvLyBhZGQgbWV0YSBkYXRhIGZvciBzb21lIG9mIHRoZSB0eXBlc1xuICAgICAgICAgIHRoaXMuX2ZldGNoTWV0YURhdGEoc2NvcGUsIGRhdGEsIGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgZWxlbWVudC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChlbGVtZW50LnR5cGUgIT09ICdUQUJMRScgJiYgZWxlbWVudC5lbGVtZW50cyAmJiBlbGVtZW50LmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5fc2V0RWxlbWVudFZhbHVlcyhzY29wZSwgZWxlbWVudC5lbGVtZW50cywgZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBpbiBzb21lIGNhc2VzIHJlcXVpcmVkIG1ldGEgZGF0YSBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGUgZWxlbWVudCBpdHNlbGZcbiAgLy8gc28gdGhleSBoYXZlIHRvIGJlIGZldGNoZWQgYW5kIGFkZGVkIHRvIHRoZSBlbGVtZW50IGZvciB0aGUgZm9ybSB0byBiZSBhYmxlXG4gIC8vIHRvIHJlbmRlciB0aGUgZWxlbWVudCBjb3JyZWN0bHlcbiAgcHJpdmF0ZSBfZmV0Y2hNZXRhRGF0YShzY29wZTogRm9ybUdlblNjb3BlLCBkYXRhLCBlbGVtZW50KSB7XG5cbiAgICBpZiAoc2NvcGUuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIC8vIHRvZG86IGhvdyB0byBmZXRjaCBtZXRhIGRhdGEgaW4gc2VhcmNoIHNpdHVhdGlvblxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyAmJiBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddKSB7XG4gICAgICAgIGVsZW1lbnQuZGF0YU1ldGEgPSBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyAmJiBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddKSB7XG4gICAgICAgIGVsZW1lbnQuZGF0YU1ldGEgPSBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddO1xuICAgICAgICBlbGVtZW50LmRlZmF1bHRyZXByZXNlbnRhdGlvbiA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ10uZGVmYXVsdHJlcHJlc2VudGF0aW9uO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnICYmIGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ10pIHtcbiAgICAgICAgZWxlbWVudC5kYXRhTWV0YSA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGF0YU1ldGEoZm9ybUVsZW1lbnQ6IGFueSwgbmV3VmFsdWU6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgIHN3aXRjaCAoZm9ybUVsZW1lbnQudHlwZSkge1xuICAgICAgICBjYXNlICdPUkdBTklaQVRJT04nOiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0KG5ld1ZhbHVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3QobmV3VmFsdWVbMF0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3RzKG5ld1ZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnUkVGRVJFTkNFJzoge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVNlcnZpY2UuZmV0Y2hJRFJlZmVyZW5jZU1ldGFEYXRhKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpID8gbmV3VmFsdWUgOiBbbmV3VmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdDT0RFU1lTVEVNJzoge1xuICAgICAgICAgIHJldHVybiBvZih0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKS5lbnRyaWVzLmZpbmQoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuZGVmYXVsdHJlcHJlc2VudGF0aW9uID09PSBuZXdWYWx1ZTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFzVmFsdWUoZGF0YSwgZWxlbWVudCkge1xuXG4gICAgLy8gZGlmZmVyIGJldHdlZW4gYXJyYXkgb2YgU2VhcmNoRmlsdGVycyBhbmQgYSBmb3JtIGRhdGEgb2JqZWN0XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdUQUJMRScpIHtcbiAgICAgICAgcmV0dXJuICEhKGRhdGEuZmluZCgoZmlsdGVyKSA9PiBmaWx0ZXIucHJvcGVydHkuc3RhcnRzV2l0aChlbGVtZW50LnFuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICEhKGRhdGEuZmluZCgoZmlsdGVyKSA9PiBmaWx0ZXIucHJvcGVydHkgPT09IGVsZW1lbnQucW5hbWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRhdGEuaGFzT3duUHJvcGVydHkoZWxlbWVudC5uYW1lKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRWYWx1ZShzY29wZTogRm9ybUdlblNjb3BlLCBkYXRhLCBlbGVtZW50KSB7XG5cbiAgICBsZXQgdmFsdWU7XG4gICAgaWYgKHNjb3BlLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICBpZiAoc2NvcGUuaXNJbm5lclRhYmxlRm9ybSkge1xuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnREFURVRJTUUnIHx8IGVsZW1lbnQudHlwZSA9PT0gJ05VTUJFUicpIHtcbiAgICAgICAgICB2YWx1ZSA9IFNlYXJjaFNlcnZpY2UudG9SYW5nZVZhbHVlKGRhdGFbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBkYXRhW2VsZW1lbnQubmFtZV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnVEFCTEUnKSB7XG4gICAgICAgIHZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnRhYmxlRmlsdGVyc1RvRWxlbWVudFZhbHVlKHRoaXMuX2dldFRhYmxlRmlsdGVycyhkYXRhLCBlbGVtZW50LnFuYW1lKSwgZWxlbWVudC5lbGVtZW50cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBkYXRhLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBlbGVtZW50LnFuYW1lKTtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyVG9FbGVtZW50VmFsdWUoZmlsdGVyLCBlbGVtZW50LnR5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG5cbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEQVRFVElNRScgJiYgZGF0YVtlbGVtZW50Lm5hbWVdKSB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoYCR7ZGF0YVtlbGVtZW50Lm5hbWVdfSR7KHR5cGVvZiBkYXRhW2VsZW1lbnQubmFtZV0gPT09ICdzdHJpbmcnID8gZGF0YVtlbGVtZW50Lm5hbWVdLmluZGV4T2YoJ1QnKSA6IGRhdGFbZWxlbWVudC5uYW1lXS50b0lTT1N0cmluZygpLmluZGV4T2YoJ1QnKSkgIT09IC0xID8gJycgOiAnVDAwOjAwOjAwJ31gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZGF0YVtlbGVtZW50Lm5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUYWJsZUZpbHRlcnMoZmlsdGVyczogU2VhcmNoRmlsdGVyW10sIHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyW10ge1xuICAgIHJldHVybiBmaWx0ZXJzLmZpbHRlcihmID0+IGYucHJvcGVydHkuc3RhcnRzV2l0aChwcm9wZXJ0eU5hbWUgKyAnLicpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRWYWxpZGF0b3JzKGZvcm1Db250cm9sOiBPYmplY3RGb3JtR3JvdXAsIHNjb3BlOiBGb3JtR2VuU2NvcGUpIHtcbiAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgIGZvciAobGV0IGtleSBpbiBmb3JtQ29udHJvbC5jb250cm9scykge1xuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUNvbnRyb2wuY29udHJvbHNba2V5XSBhcyBhbnk7XG4gICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICAgICAgdGhpcy5faW5pdFZhbGlkYXRvcnMoY29udHJvbCwgc2NvcGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjb3BlLmluaXRpYWxWYWxpZGF0b3JzW2NvbnRyb2wuX2VvRm9ybUVsZW1lbnQubmFtZV0gPSBjb250cm9sLnZhbGlkYXRvcjtcbiAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFxuICAgICAgICAgICAgdGhpcy5fZ2V0VmFsaWRhdG9ycyhzY29wZSwgY29udHJvbC5fZW9Gb3JtRWxlbWVudCkuY29uY2F0KFxuICAgICAgICAgICAgICBbc2NvcGUuaW5pdGlhbFZhbGlkYXRvcnNbY29udHJvbC5fZW9Gb3JtRWxlbWVudC5uYW1lXV0pXG4gICAgICAgICAgKSk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgKiBCdWlsZCB2YWxpZGF0b3JzIGZvciB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IHRvIGJlIGF0dGFjaGVkIHRvXG4gICogYSByZWFjdGl2ZSBmb3JtQ29udHJvbC5cbiAgKlxuICAqIEBwYXJhbSBmb3JtRWxlbWVudCAtIGZvcm0gZWxlbWVudCBvYmplY3RcbiAgKi9cbiAgcHJpdmF0ZSBfZ2V0VmFsaWRhdG9ycyhzY29wZTogRm9ybUdlblNjb3BlLCBmb3JtRWxlbWVudDogYW55KTogVmFsaWRhdG9yRm5bXSB7XG4gICAgbGV0IGVsbVZhbGlkYXRvcnMgPSBGb3JtVmFsaWRhdGlvbi5nZXRWYWxpZGF0b3JzKGZvcm1FbGVtZW50LCBzY29wZS5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uKTtcbiAgICAvLyBhZGQgY3VzdG9tIHZhbGlkYXRvciBmb3Igc2NyaXB0IGVuYWJsZWQgZm9ybXNcbiAgICBpZiAoc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZSkge1xuICAgICAgZWxtVmFsaWRhdG9ycy5wdXNoKEZvcm1WYWxpZGF0aW9uLmN1c3RvbVNjcmlwdGluZ1ZhbGlkYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBlbG1WYWxpZGF0b3JzO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFNjcmlwdGluZ1Njb3BlKHNjb3BlOiBGb3JtR2VuU2NvcGUsIGZvcm1TY3JpcHRTZXJ2aWNlOiBPYmplY3RGb3JtU2NyaXB0U2VydmljZSkge1xuICAgIGxldCB7ZGF0YSwgYWN0aW9ucywgb2JqZWN0cywgY29udGV4dH0gPSA8T2JqZWN0Rm9ybU9wdGlvbnM+KHNjb3BlLmZvcm1PcHRpb25zIHx8IHt9KTtcblxuICAgIGlmIChzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlKSB7XG4gICAgICBzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlLnNldE1vZGVsKHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0TW9kZWwpO1xuICAgICAgLyoqIHByb3ZpZGUgYWNjZXNzIHRvIGFjdGlvbnMgKHVzZWQgaW5zaWRlIG9mIEJQTS1Gb3JtcykgKi9cbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWRkaXRpb25hbCBvYmplY3RzICh1c2VkIGZvciBleGFtcGxlIGluIEJQTS1TdGFydC1Gb3JtcyB0b1xuICAgICAgICogYWRkIGRhdGEgb2YgRE1TLU9iamVjdHMgdG8gc3RhcnQgdGhlIHByb2Nlc3MgZm9yKVxuICAgICAgICovXG4gICAgICBzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlLm9iamVjdHMgPSBvYmplY3RzO1xuICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgIC8qKiBwcm92aWRlIHJlYWRvbmx5IGFjY2VzcyB0byBpbml0aWFsIGZvcm0gZGF0YSAod2hpY2ggbWF5IGFsc28gY29udGFpbiB2YWx1ZXMgdGhhdFxuICAgICAgICogYXJlIG5vdCByZW5kZXJlZCBhcyBmb3JtIGVsZW1lbnRzIChpbnZpc2libGUgdmFsdWVzKSlcbiAgICAgICAqL1xuICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZS5kYXRhID0gZGF0YTtcblxuICAgICAgLyoqIGJ5IGRlZmF1bHQsIHNjcmlwdGluZyBzY29wZXMgYXJlIGFwcGxpZWQgdG8gZm9ybXMuIEJ1dCB0YWJsZSBlbGVtZW50cyBjcmVhdGUgdGhlaXIgb3duIHNjb3BlXG4gICAgICAgKiBmb3IgZWRpdGluZyByb3dzLiBCZWluZyBvbmUgb2YgdGhvc2UgaW5uZXIgZm9ybXMgc2hvdWxkIG5vdCBydW4gdGhlIGZvcm0gc2NyaXB0IGFnYWluLCBidXRcbiAgICAgICAqIGluc3RlYWQganVzdCBwcm92aWRlIHRoZSBvYnNlcnZpbmcgYWJpbGl0aWVzIG9mIHRoZSBzY3JpcHRpbmcgc2NvcGUuXG4gICAgICAgKi9cbiAgICAgIGlmICghc2NvcGUuZm9ybU9wdGlvbnMuZGlzYWJsZWQgJiYgIXNjb3BlLmlzSW5uZXJUYWJsZUZvcm0gJiYgc2NvcGUuZm9ybUdlblJlc3VsdC5mb3JtTW9kZWwpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0TmFtZSA9IHNjb3BlLmZvcm1HZW5SZXN1bHQuZm9ybU1vZGVsLm5hbWUgKyAnXycgKyBzY29wZS5mb3JtR2VuUmVzdWx0LmZvcm1Nb2RlbC5zaXR1YXRpb247XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdleGVjdXRpbmcgZm9ybSBzY3JpcHQgJyArIHNjcmlwdE5hbWUpO1xuICAgICAgICBmb3JtU2NyaXB0U2VydmljZS5ydW5Gb3JtU2NyaXB0KFxuICAgICAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUsXG4gICAgICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5mb3JtTW9kZWwuc2NyaXB0LFxuICAgICAgICAgIHNjcmlwdE5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBlYWNoIHRpbWUgdGhlIHNjcmlwdCBjaGFuZ2VzIGl0cyBpbnRlcm5hbCBtb2RlbC5cbiAgICAgKiBJdCBpcyB1c2VkIHRvIHRyYW5zZmVyIHRoZSBzY3JpcHQgY2hhbmdlcyB0byB0aGUgYWN0dWFsIGZvcm0gbW9kZWwuXG4gICAgICpcbiAgICAgKiBUbyBlbnN1cmUgdGhlIHJpZ2h0IGNvbnRleHQsIHdlIGRlZmluZSBhbiBpbnN0YW5jZSBtZXRob2QgYXMgY2FsbGJhY2sgZm9yIHRoZSBzY3JpcHRpbmcgc2NvcGVcbiAgICAgKiBAc2VlOiBodHRwczovL2Jsb2cuam9obm55cmVpbGx5LmNvbS8yMDE0LzA0L3R5cGVzY3JpcHQtaW5zdGFuY2UtbWV0aG9kcy5odG1sXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybUNvbnRyb2xOYW1lXG4gICAgICogQHBhcmFtIGNoYW5nZVxuICAgICAqL1xuXG4gIHByaXZhdGUgX2dldFNjcmlwdGluZ01vZGVsQ2hhbmdlZChzY29wZTogRm9ybUdlblNjb3BlKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiAoZm9ybUNvbnRyb2xOYW1lLCBjaGFuZ2UpID0+IHtcblxuICAgICAgLy8gZmluZCB0aGUgdGFyZ2V0IGNvbnRyb2xcbiAgICAgIGxldCBmYzogT2JqZWN0Rm9ybUNvbnRyb2wgPSBzY29wZS5mb3JtR2VuUmVzdWx0LmZvcm1Db250cm9sc1tmb3JtQ29udHJvbE5hbWVdIGFzIE9iamVjdEZvcm1Db250cm9sO1xuICAgICAgaWYgKGZjKSB7XG5cbiAgICAgICAgLy8gY2hhbmdlIG9ubHkgYWxsb3dlZCBwcm9wZXJ0aWVzXG4gICAgICAgIHN3aXRjaCAoY2hhbmdlLm5hbWUpIHtcbiAgICAgICAgICBjYXNlICd2YWx1ZSc6IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoYW5nZS5uZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0FycmF5VmFsdWVDaGFuZ2UoZmMsIGNoYW5nZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC52YWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGZjLnZhbHVlICE9PSBjaGFuZ2UubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmYy5wYXRjaFZhbHVlKGNoYW5nZS5uZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgZmMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgIGZjLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgaWYgKGZjLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkICE9PSBjaGFuZ2UubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICAgIC8vIGFwcGx5IG5ldyB2YWxpZGF0b3JzXG4gICAgICAgICAgICAgIC8vIEBzZWU6IGh0dHBzOi8vc2NvdGNoLmlvL3R1dG9yaWFscy9ob3ctdG8taW1wbGVtZW50LWNvbmRpdGlvbmFsLXZhbGlkYXRpb24taW4tYW5ndWxhci0yLW1vZGVsLWRyaXZlbi1mb3Jtc1xuICAgICAgICAgICAgICBmYy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZSh0aGlzLl9nZXRWYWxpZGF0b3JzKHNjb3BlLCBmYy5fZW9Gb3JtRWxlbWVudCkuY29uY2F0KFtzY29wZS5pbml0aWFsVmFsaWRhdG9yc1tmYy5fZW9Gb3JtRWxlbWVudC5uYW1lXV0pKSk7XG4gICAgICAgICAgICAgIC8vIG5lZWQgdG8gbWFyayBmb3JtIGNvbnRyb2wgYXMgdG91Y2hlZCBiZWNhdXNlIG90aGVyd2lzZSBmb3JtIHZhbGlkYXRpb24gd2lsbCBub3Qgc2hvd1xuICAgICAgICAgICAgICAvLyBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICBmYy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdyZWFkb25seSc6IHtcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5ID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgaWYgKGNoYW5nZS5uZXdWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBmYy5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmYy5lbmFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdlcnJvcic6IHtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShmYy5fZW9Gb3JtRWxlbWVudC5lcnJvcikgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZS5uZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZXJyb3IgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICAgIGZjLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgZmMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIG5ldyBvbnJvd2VkaXQgZnVuY3Rpb24gd2FzIGFwcGxpZWQgYnkgdGhlIHNjcmlwdFxuICAgICAgICAgIGNhc2UgJ29ucm93ZWRpdCc6IHtcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50Lm9ucm93ZWRpdCA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBuZXcgb25jaGFuZ2UgZnVuY3Rpb24gd2FzIGFwcGxpZWQgYnkgdGhlIHNjcmlwdFxuICAgICAgICAgIGNhc2UgJ29uY2hhbmdlJzoge1xuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQub25jaGFuZ2UgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gbmV3IGNvbnRleHRJZCB3YXMgYXBwbGllZCBieSB0aGUgc2NyaXB0XG4gICAgICAgICAgY2FzZSAnY29udGV4dElkJzoge1xuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuY29udGV4dElkID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcHJvY2Vzc0FycmF5VmFsdWVDaGFuZ2UoZmMsIGNoYW5nZSkge1xuICAgIGNvbnN0IG5ld1ZhbCA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICBjb25zdCB0YXJnZXRUeXBlID0gZmMuX2VvRm9ybUVsZW1lbnQudHlwZTtcbiAgICAvLyBmb3Igc29tZSB0eXBlcyB3ZSBoYXZlIHRvIGVuc3VyZSB0aGF0IG1ldGEgZGF0YSBhcmUgcHJvdmlkZWQgYXMgd2VsbFxuICAgIHN3aXRjaCAodGFyZ2V0VHlwZSkge1xuICAgICAgY2FzZSAnT1JHQU5JWkFUSU9OJzoge1xuICAgICAgICB0aGlzLl9nZXREYXRhTWV0YShmYy5fZW9Gb3JtRWxlbWVudCwgbmV3VmFsKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSBtO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDT0RFU1lTVEVNJzoge1xuICAgICAgICBpZiAoIWZjLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW0uZW50cmllcykge1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1RBQkxFJzoge1xuICAgICAgICBjb25zdCBkYXRhVG9CZVByb2Nlc3NlZCA9IHt9O1xuICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdPUkdBTklaQVRJT04nIHx8IGUudHlwZSA9PT0gJ0NPREVTWVNURU0nKSB7XG4gICAgICAgICAgICBkYXRhVG9CZVByb2Nlc3NlZFtlLm5hbWVdID0gZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZGF0YVRvQmVQcm9jZXNzZWQpLmxlbmd0aCkge1xuICAgICAgICAgIGxldCBvYnMgPSBbXTtcbiAgICAgICAgICBuZXdWYWwuZm9yRWFjaChyb3dEYXRhID0+IHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJvd0RhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgaWYgKGRhdGFUb0JlUHJvY2Vzc2VkW2tleV0pIHtcbiAgICAgICAgICAgICAgICBvYnMucHVzaCh0aGlzLl9nZXREYXRhTWV0YShkYXRhVG9CZVByb2Nlc3NlZFtrZXldLCByb3dEYXRhW2tleV0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YXAobSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtrZXkgKyAnX21ldGEnXSA9IG07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvd0RhdGFba2V5ICsgJ19tZXRhJ107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZvcmtKb2luKG9icykuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3VwZGF0ZUFycmF5VmFsdWUoZmMsIG5ld1ZhbCkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl91cGRhdGVBcnJheVZhbHVlKGZjLCBuZXdWYWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQXJyYXlWYWx1ZShmYywgbmV3VmFsdWUpIHtcbiAgICBmYy5fZW9Gb3JtRWxlbWVudC52YWx1ZSA9IFtdLmNvbmNhdChuZXdWYWx1ZSk7XG4gICAgZmMucGF0Y2hWYWx1ZShbXS5jb25jYXQobmV3VmFsdWUpKTtcbiAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgZmMubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgVEVNUF9TVE9SQUdFX0VOVFJJRVNfS0VZID0gJ2VvLmNtcC5vYmplY3Rmb3JtLnRtcHN0b3JhZ2UuZW50cmllcyc7XG5cbiAgLyoqXG4gICAqIEFkZCBhIHJlZmVyZW5jZSB0byBhIHRlbXBvcmFyeSBsb2NhbHN0b3JhZ2UgZW50cnkgdGhhdCBzaG91bGQgYmUgY2xlYXJlZCB3aGVuIGFcbiAgICogbmV3IGJyb3dzZXIgc2Vzc2lvbiBzdGFydHMuIEluIGNvbnRleHQgb2YgZm9ybXMgdGhpcyB3aWxsIGJlIHVzZWQgdG8gY2xlYW51cCB0aGVcbiAgICogbGF5b3V0IHN0YXRlIG9mIGZvcm1zIChzZWxlY3RlZCB0YWJzIGV0Yy4pIHRoYXQgYXJlIHN0b3JlZCBsb2NhbGx5IGJ1dCBzaG91bGQgb25seVxuICAgKiBiZSBwZXNpc3RlZCBmb3Igb25lIGJyb3dzZXIgc2Vzc2lvbi5cbiAgICogQHBhcmFtIHN0b3JhZ2VLZXkgS2V5IG9mIHRoZSBsb2NhbHN0b3JhZ2UgaXRlbVxuICAgKi9cbiAgYWRkVGVtcG9yYXJ5U3RvcmFnZUVudHJ5KHN0b3JhZ2VLZXk6IHN0cmluZykge1xuICAgIC8vIGVudHJpZXMgd2lsbCB0aGVtc2VsdmVzIGJlIHN0b3JlZCBpbiBsb2NhbHN0b3JhZ2Ugc28gd2UgY2FuIGNoZWNrIGZvciBlbnRyaWVzXG4gICAgLy8gdG8gYmUgcmVtb3ZlZCBvbmNlIHRoZSBhcHBsaWNhdGlvbiBzdGFydHNcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZ2V0VGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKTtcbiAgICBpZighY3VycmVudC5pbmNsdWRlcyhzdG9yYWdlS2V5KSlcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlRFTVBfU1RPUkFHRV9FTlRSSUVTX0tFWSwgSlNPTi5zdHJpbmdpZnkoWy4uLmN1cnJlbnQsIHN0b3JhZ2VLZXldKSlcbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFyVGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKSB7XG4gICAgdGhpcy5fZ2V0VGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKS5mb3JFYWNoKGUgPT4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZSkpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVEVNUF9TVE9SQUdFX0VOVFJJRVNfS0VZKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRlbXBvcmFyeVN0b3JhZ2VFbnRyaWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVudHJpZXM6IHN0cmluZ1tdID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRFTVBfU1RPUkFHRV9FTlRSSUVTX0tFWSkpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW50cmllcykpIHJlcyA9IGVudHJpZXM7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5kZWJ1ZyhlKVxuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKGBGb3VuZCAke3Jlcy5sZW5ndGh9IHRtcCBlbnRyaWVzIHRvIGJlIHJlbW92ZWRgKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG59XG4iXX0=