@eo-sdk/client 11.5.0-rc.3 → 11.6.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 (305) 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/eo-client.module.d.ts +4 -5
  4. package/app/eo-client/eo-client.module.d.ts.map +1 -1
  5. package/app/eo-client/index.d.ts +3 -0
  6. package/app/eo-client/index.d.ts.map +1 -1
  7. package/app/eo-client/process-state/filter-label.d.ts +10 -0
  8. package/app/eo-client/process-state/filter-label.d.ts.map +1 -0
  9. package/app/eo-framework/actions/actions/custom-actions/custom-actions.component.d.ts.map +1 -1
  10. package/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.d.ts.map +1 -1
  11. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +1 -1
  12. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  13. package/app/eo-framework/form-elements/organization/organization.component.d.ts +1 -0
  14. package/app/eo-framework/form-elements/organization/organization.component.d.ts.map +1 -1
  15. package/app/eo-framework/grid/grid.component.d.ts +9 -1
  16. package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
  17. package/app/eo-framework/media/media.component.d.ts +3 -2
  18. package/app/eo-framework/media/media.component.d.ts.map +1 -1
  19. package/app/eo-framework/object-details/object-details.component.d.ts +13 -4
  20. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  21. package/app/eo-framework/object-details/object-history/object-history.component.d.ts +3 -2
  22. package/app/eo-framework/object-details/object-history/object-history.component.d.ts.map +1 -1
  23. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +1 -0
  24. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  25. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  26. package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +50 -0
  27. package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts.map +1 -1
  28. package/app/eo-framework/ui/indexdata-summary/indexdata-summary.interface.d.ts +10 -0
  29. package/app/eo-framework/ui/indexdata-summary/indexdata-summary.interface.d.ts.map +1 -0
  30. package/app/eo-framework/ui/ui.module.d.ts +10 -11
  31. package/app/eo-framework/ui/ui.module.d.ts.map +1 -1
  32. package/app/eo-framework-core/agent/agent.service.d.ts.map +1 -1
  33. package/app/eo-framework-core/eo-framework-core.module.d.ts +1 -2
  34. package/app/eo-framework-core/eo-framework-core.module.d.ts.map +1 -1
  35. package/app/eo-framework-core/error-handler/error-handler.service.d.ts.map +1 -1
  36. package/app/eo-framework-core/search/app-search.service.d.ts +12 -1
  37. package/app/eo-framework-core/search/app-search.service.d.ts.map +1 -1
  38. package/assets/_default/i18n/de.json +5 -3
  39. package/assets/_default/i18n/en.json +10 -8
  40. package/esm2022/app/eo-client/about-state/about-state.component.mjs +6 -6
  41. package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +4 -4
  42. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +3 -3
  43. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +3 -3
  44. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +3 -3
  45. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +3 -3
  46. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +3 -3
  47. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +3 -3
  48. package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +3 -3
  49. package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +6 -6
  50. package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +3 -3
  51. package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +3 -3
  52. package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +3 -3
  53. package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +3 -3
  54. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +3 -3
  55. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +3 -3
  56. package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +3 -3
  57. package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.mjs +3 -3
  58. package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +3 -3
  59. package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.mjs +3 -3
  60. package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.mjs +3 -3
  61. package/esm2022/app/eo-client/eo-client-routing.module.mjs +4 -4
  62. package/esm2022/app/eo-client/eo-client.module.mjs +26 -28
  63. package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +3 -3
  64. package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +3 -3
  65. package/esm2022/app/eo-client/inbox-state/inbox-state-routing.module.mjs +4 -4
  66. package/esm2022/app/eo-client/inbox-state/inbox-state.module.mjs +4 -4
  67. package/esm2022/app/eo-client/index.mjs +4 -1
  68. package/esm2022/app/eo-client/login/login.component.mjs +3 -3
  69. package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +3 -3
  70. package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +3 -3
  71. package/esm2022/app/eo-client/object-state/object-state-routing.module.mjs +4 -4
  72. package/esm2022/app/eo-client/object-state/object-state-service/object-state.service.mjs +3 -3
  73. package/esm2022/app/eo-client/object-state/object-state.module.mjs +4 -4
  74. package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +3 -3
  75. package/esm2022/app/eo-client/prepare-state/prepare-state-routing.module.mjs +4 -4
  76. package/esm2022/app/eo-client/prepare-state/prepare-state.module.mjs +4 -4
  77. package/esm2022/app/eo-client/process-state/filter-label.mjs +11 -0
  78. package/esm2022/app/eo-client/process-state/process-state.component.mjs +3 -3
  79. package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +3 -3
  80. package/esm2022/app/eo-client/result-state/result-state.component.mjs +3 -3
  81. package/esm2022/app/eo-client/settings/settings.component.mjs +3 -3
  82. package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +3 -3
  83. package/esm2022/app/eo-client/version-state/version-state.component.mjs +3 -3
  84. package/esm2022/app/eo-framework/accordion/accordion.module.mjs +4 -4
  85. package/esm2022/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +3 -3
  86. package/esm2022/app/eo-framework/actions/action-menu/action-component-anchor/action-component-anchor.directive.mjs +3 -3
  87. package/esm2022/app/eo-framework/actions/action-menu/action-menu.component.mjs +3 -3
  88. package/esm2022/app/eo-framework/actions/action-service/action.service.mjs +3 -3
  89. package/esm2022/app/eo-framework/actions/action.module.mjs +4 -4
  90. package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +3 -3
  91. package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +3 -3
  92. package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +3 -3
  93. package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +3 -3
  94. package/esm2022/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.mjs +3 -3
  95. package/esm2022/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing-action.mjs +3 -3
  96. package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-action.mjs +3 -3
  97. package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +3 -3
  98. package/esm2022/app/eo-framework/actions/actions/copy-action/copy-action.mjs +3 -3
  99. package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +5 -4
  100. package/esm2022/app/eo-framework/actions/actions/cut-action/cut-action.mjs +3 -3
  101. package/esm2022/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +3 -3
  102. package/esm2022/app/eo-framework/actions/actions/delete-action/delete-action.mjs +3 -3
  103. package/esm2022/app/eo-framework/actions/actions/delete-action/delete-prepared-action.mjs +3 -3
  104. package/esm2022/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.mjs +3 -3
  105. package/esm2022/app/eo-framework/actions/actions/delete-content-action/delete-content-action.mjs +3 -3
  106. package/esm2022/app/eo-framework/actions/actions/download-action/download-action.mjs +3 -3
  107. package/esm2022/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.mjs +3 -3
  108. package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +3 -3
  109. package/esm2022/app/eo-framework/actions/actions/email/email-action.mjs +3 -3
  110. package/esm2022/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +3 -3
  111. package/esm2022/app/eo-framework/actions/actions/finalize/definalize-action.mjs +3 -3
  112. package/esm2022/app/eo-framework/actions/actions/finalize/finalize-action.mjs +4 -4
  113. package/esm2022/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.mjs +3 -3
  114. package/esm2022/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +3 -3
  115. package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +3 -3
  116. package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.mjs +3 -3
  117. package/esm2022/app/eo-framework/actions/actions/open-versions-action/open-versions-action.mjs +3 -3
  118. package/esm2022/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +3 -3
  119. package/esm2022/app/eo-framework/actions/actions/restore-version-action/restore-version-action.mjs +3 -3
  120. package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +3 -3
  121. package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object-action.mjs +3 -3
  122. package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +3 -3
  123. package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +3 -3
  124. package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +3 -3
  125. package/esm2022/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +3 -3
  126. package/esm2022/app/eo-framework/actions/actions/unlock-action/unlock-action.mjs +3 -3
  127. package/esm2022/app/eo-framework/actions/actions/update-resubmission-action/update-resubmission-action.mjs +3 -3
  128. package/esm2022/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.mjs +5 -5
  129. package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +3 -3
  130. package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow-action.component.mjs +3 -3
  131. package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +3 -3
  132. package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add.component.mjs +3 -3
  133. package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +3 -3
  134. package/esm2022/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +3 -3
  135. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +20 -6
  136. package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +3 -3
  137. package/esm2022/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +3 -3
  138. package/esm2022/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +3 -3
  139. package/esm2022/app/eo-framework/app-shell/app-shell-routing.module.mjs +4 -4
  140. package/esm2022/app/eo-framework/app-shell/app-shell.module.mjs +4 -4
  141. package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +3 -3
  142. package/esm2022/app/eo-framework/cta/component/cta.component.mjs +3 -3
  143. package/esm2022/app/eo-framework/cta/cta.module.mjs +4 -4
  144. package/esm2022/app/eo-framework/eo-framework.module.mjs +4 -4
  145. package/esm2022/app/eo-framework/error/error.module.mjs +4 -4
  146. package/esm2022/app/eo-framework/error/error404/error404.component.mjs +3 -3
  147. package/esm2022/app/eo-framework/error/not-found/not-found.component.mjs +3 -3
  148. package/esm2022/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +3 -3
  149. package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
  150. package/esm2022/app/eo-framework/form-elements/date/date.component.mjs +3 -3
  151. package/esm2022/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +3 -3
  152. package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +3 -3
  153. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +3 -3
  154. package/esm2022/app/eo-framework/form-elements/form-elements.module.mjs +4 -4
  155. package/esm2022/app/eo-framework/form-elements/form-input/form-input.component.mjs +3 -3
  156. package/esm2022/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +3 -3
  157. package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +3 -3
  158. package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +3 -3
  159. package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +3 -3
  160. package/esm2022/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +3 -3
  161. package/esm2022/app/eo-framework/form-elements/number/number.component.mjs +3 -3
  162. package/esm2022/app/eo-framework/form-elements/number-range/number-range.component.mjs +3 -3
  163. package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +28 -19
  164. package/esm2022/app/eo-framework/form-elements/password/password.component.mjs +3 -3
  165. package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +3 -3
  166. package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +3 -3
  167. package/esm2022/app/eo-framework/frame/frame.component.mjs +3 -3
  168. package/esm2022/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +3 -3
  169. package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +3 -3
  170. package/esm2022/app/eo-framework/grid/extensions/empty/empty.component.mjs +3 -3
  171. package/esm2022/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +3 -3
  172. package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +3 -3
  173. package/esm2022/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +3 -3
  174. package/esm2022/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +5 -5
  175. package/esm2022/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +3 -3
  176. package/esm2022/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.mjs +3 -3
  177. package/esm2022/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +3 -3
  178. package/esm2022/app/eo-framework/grid/extensions/services/list-settings.service.mjs +3 -3
  179. package/esm2022/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +3 -3
  180. package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +3 -3
  181. package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +3 -3
  182. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -3
  183. package/esm2022/app/eo-framework/grid/filters/list-filter.component.mjs +3 -3
  184. package/esm2022/app/eo-framework/grid/filters/organization-filter.component.mjs +3 -3
  185. package/esm2022/app/eo-framework/grid/grid.component.mjs +55 -25
  186. package/esm2022/app/eo-framework/grid/grid.module.mjs +4 -4
  187. package/esm2022/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.mjs +3 -3
  188. package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +3 -3
  189. package/esm2022/app/eo-framework/list-container/list-container.component.mjs +3 -3
  190. package/esm2022/app/eo-framework/list-container/list-container.module.mjs +4 -4
  191. package/esm2022/app/eo-framework/media/content-preview.service.mjs +3 -3
  192. package/esm2022/app/eo-framework/media/media.component.mjs +11 -7
  193. package/esm2022/app/eo-framework/media/media.module.mjs +4 -4
  194. package/esm2022/app/eo-framework/object-details/edit-icon/edit-icon.component.mjs +3 -3
  195. package/esm2022/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +3 -3
  196. package/esm2022/app/eo-framework/object-details/object-details.component.mjs +31 -16
  197. package/esm2022/app/eo-framework/object-details/object-details.module.mjs +4 -4
  198. package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +3 -3
  199. package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter.component.mjs +3 -3
  200. package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +12 -7
  201. package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +3 -3
  202. package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +3 -3
  203. package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
  204. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +22 -20
  205. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +3 -3
  206. package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +3 -3
  207. package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +4 -4
  208. package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -3
  209. package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +3 -3
  210. package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +3 -3
  211. package/esm2022/app/eo-framework/object-form/object-form.module.mjs +4 -4
  212. package/esm2022/app/eo-framework/object-state-details/object-state-details.component.mjs +3 -3
  213. package/esm2022/app/eo-framework/plugins/plugin.component.mjs +9 -9
  214. package/esm2022/app/eo-framework/plugins/plugin.directive.mjs +3 -3
  215. package/esm2022/app/eo-framework/plugins/plugin.service.mjs +3 -3
  216. package/esm2022/app/eo-framework/plugins/plugins.module.mjs +4 -4
  217. package/esm2022/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.mjs +3 -3
  218. package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +3 -3
  219. package/esm2022/app/eo-framework/process/details/process-details.component.mjs +3 -3
  220. package/esm2022/app/eo-framework/process/history/process-history.component.mjs +3 -3
  221. package/esm2022/app/eo-framework/process/process-file/process-file.component.mjs +3 -3
  222. package/esm2022/app/eo-framework/process-form/process-form.component.mjs +3 -3
  223. package/esm2022/app/eo-framework/process-form/process-form.module.mjs +4 -4
  224. package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +3 -3
  225. package/esm2022/app/eo-framework/quick-search/quick-search.module.mjs +4 -4
  226. package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +3 -3
  227. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +10 -5
  228. package/esm2022/app/eo-framework/result-list/result-list.module.mjs +4 -4
  229. package/esm2022/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +3 -3
  230. package/esm2022/app/eo-framework/settings/permissions/permissions.component.mjs +3 -3
  231. package/esm2022/app/eo-framework/settings/settings.module.mjs +4 -4
  232. package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +3 -3
  233. package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +3 -3
  234. package/esm2022/app/eo-framework/shortcuts/shortcuts.directive.mjs +3 -3
  235. package/esm2022/app/eo-framework/shortcuts/shortcuts.module.mjs +4 -4
  236. package/esm2022/app/eo-framework/shortcuts/shortcuts.service.mjs +3 -3
  237. package/esm2022/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +3 -3
  238. package/esm2022/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +3 -3
  239. package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +3 -3
  240. package/esm2022/app/eo-framework/stored-query/stored-query.module.mjs +4 -4
  241. package/esm2022/app/eo-framework/tree/tree-node/tree-node.component.mjs +3 -3
  242. package/esm2022/app/eo-framework/tree/tree.component.mjs +3 -3
  243. package/esm2022/app/eo-framework/tree/tree.module.mjs +4 -4
  244. package/esm2022/app/eo-framework/ui/clipboard/clipboard.component.mjs +3 -3
  245. package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +3 -3
  246. package/esm2022/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +3 -3
  247. package/esm2022/app/eo-framework/ui/error-message/error-message.component.mjs +3 -3
  248. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +4 -4
  249. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +141 -8
  250. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.interface.mjs +2 -0
  251. package/esm2022/app/eo-framework/ui/loading-spinner/loading-spinner.component.mjs +3 -3
  252. package/esm2022/app/eo-framework/ui/outside-click/outside-click.directive.mjs +3 -3
  253. package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +3 -3
  254. package/esm2022/app/eo-framework/ui/query-scope-select/query-scope-select.component.mjs +3 -3
  255. package/esm2022/app/eo-framework/ui/router-link/router-link.directive.mjs +3 -3
  256. package/esm2022/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +3 -3
  257. package/esm2022/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +3 -3
  258. package/esm2022/app/eo-framework/ui/ui.module.mjs +17 -28
  259. package/esm2022/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +3 -3
  260. package/esm2022/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +3 -3
  261. package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +3 -3
  262. package/esm2022/app/eo-framework/util/directive/prevent-double-click.directive.mjs +3 -3
  263. package/esm2022/app/eo-framework/util/directive/trap-focus.directive.mjs +3 -3
  264. package/esm2022/app/eo-framework/util/services/utilities.service.mjs +3 -3
  265. package/esm2022/app/eo-framework/util/sortable/order-by.pipe.mjs +3 -3
  266. package/esm2022/app/eo-framework/util/util.module.mjs +4 -4
  267. package/esm2022/app/eo-framework-core/agent/agent.service.mjs +4 -4
  268. package/esm2022/app/eo-framework-core/api/grid.service.mjs +6 -6
  269. package/esm2022/app/eo-framework-core/api/plugins.service.mjs +3 -3
  270. package/esm2022/app/eo-framework-core/empty-state/empty-state.service.mjs +3 -3
  271. package/esm2022/app/eo-framework-core/eo-framework-core.module.mjs +13 -19
  272. package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +4 -4
  273. package/esm2022/app/eo-framework-core/layout/layout.service.mjs +3 -3
  274. package/esm2022/app/eo-framework-core/location/location.service.mjs +3 -3
  275. package/esm2022/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +3 -3
  276. package/esm2022/app/eo-framework-core/pending-changes/pending-changes.service.mjs +3 -3
  277. package/esm2022/app/eo-framework-core/pipes/filesize.pipe.mjs +3 -3
  278. package/esm2022/app/eo-framework-core/pipes/keys.pipe.mjs +3 -3
  279. package/esm2022/app/eo-framework-core/pipes/locale-date.pipe.mjs +3 -3
  280. package/esm2022/app/eo-framework-core/pipes/locale-number.pipe.mjs +12 -12
  281. package/esm2022/app/eo-framework-core/pipes/pipes.module.mjs +4 -4
  282. package/esm2022/app/eo-framework-core/pipes/safe-html.pipe.mjs +3 -3
  283. package/esm2022/app/eo-framework-core/references/reference.service.mjs +3 -3
  284. package/esm2022/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +3 -3
  285. package/esm2022/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +3 -3
  286. package/esm2022/app/eo-framework-core/search/app-search.service.mjs +27 -6
  287. package/esm2022/app/eo-framework-core/selection/selection.service.mjs +3 -3
  288. package/esm2022/app/eo-framework-core/title/page-title.service.mjs +3 -3
  289. package/fesm2022/eo-sdk-client.mjs +1165 -1610
  290. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  291. package/misc/scripts/copy-client-assets.js +1 -1
  292. package/package.json +17 -17
  293. package/proxy.config.js +13 -0
  294. package/scss/_migrationTemp.scss +1 -0
  295. package/styles.css +1 -0
  296. package/app/eo-framework/grid/row-grouping/batchRemover.d.ts +0 -13
  297. package/app/eo-framework/grid/row-grouping/batchRemover.d.ts.map +0 -1
  298. package/app/eo-framework/grid/row-grouping/group-stage.d.ts +0 -45
  299. package/app/eo-framework/grid/row-grouping/group-stage.d.ts.map +0 -1
  300. package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts +0 -8
  301. package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts.map +0 -1
  302. package/esm2022/app/eo-framework/grid/row-grouping/batchRemover.mjs +0 -50
  303. package/esm2022/app/eo-framework/grid/row-grouping/group-stage.mjs +0 -623
  304. package/esm2022/app/eo-framework/grid/row-grouping/row-grouping.module.mjs +0 -8
  305. package/proxy.config.json +0 -97
@@ -170,13 +170,13 @@ export class AgentService {
170
170
  getHost() {
171
171
  return window.location.origin;
172
172
  }
173
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AgentService, deps: [{ token: CORE_CONFIG }, { token: i1.Logger }, { token: i2.HttpClient }, { token: i1.SystemService }, { token: i1.BackendService }, { token: i1.UserService }, { token: i1.TranslateService }, { token: i1.NotificationsService }, { token: i1.AppCacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
174
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AgentService }); }
173
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AgentService, deps: [{ token: CORE_CONFIG }, { token: i1.Logger }, { token: i2.HttpClient }, { token: i1.SystemService }, { token: i1.BackendService }, { token: i1.UserService }, { token: i1.TranslateService }, { token: i1.NotificationsService }, { token: i1.AppCacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
174
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AgentService }); }
175
175
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AgentService, decorators: [{
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: AgentService, decorators: [{
177
177
  type: Injectable
178
178
  }], ctorParameters: () => [{ type: i1.CoreConfig, decorators: [{
179
179
  type: Inject,
180
180
  args: [CORE_CONFIG]
181
181
  }] }, { type: i1.Logger }, { type: i2.HttpClient }, { type: i1.SystemService }, { type: i1.BackendService }, { type: i1.UserService }, { type: i1.TranslateService }, { type: i1.NotificationsService }, { type: i1.AppCacheService }] });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQThDLFdBQVcsRUFBeUYsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BMLE9BQU8sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLcEQsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qiw4Q0FBMkIsQ0FBQTtJQUMzQixnREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSFcsZUFBZSxLQUFmLGVBQWUsUUFHMUI7QUFXRCxNQUFNLE9BQU8sWUFBWTtJQWdCdkIsWUFDOEIsVUFBc0IsRUFDMUMsTUFBYyxFQUNkLElBQWdCLEVBQ2hCLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLFNBQTJCLEVBQzNCLGFBQW1DLEVBQ25DLGVBQWdDO1FBUlosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUMxQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXZCbEMsbUJBQWMsR0FBRyxXQUFXLENBQUM7UUFFckMsc0JBQWlCLEdBQUc7WUFDbEIsU0FBUyxFQUFFLGlDQUFpQztZQUM1QyxTQUFTLEVBQUUsaUNBQWlDO1lBQzVDLFdBQVcsRUFBRSxtQ0FBbUM7U0FDakQsQ0FBQztRQUVNLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHNCQUFpQixHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQXdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6RSxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUNoRSxpQkFBWSxHQUFzQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBWXZGLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQzthQUNsRixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDdkssQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWlCLG9DQUFvQyxFQUFFLEVBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2pJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDMUIsR0FBRyxDQUFDLENBQUMsTUFBc0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBQyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLEVBQzFFLEdBQUcsQ0FBQyxDQUFDLE1BQXNCLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxXQUFvQjtRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxZQUFZO1FBQ3pCLElBQUksT0FBTyxZQUFZLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQkFBa0IsQ0FBQyxhQUF3QixFQUFFLFFBQW1CO1FBRTlELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVwRCw2RUFBNkU7WUFDN0UsZ0ZBQWdGO1lBQ2hGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEUsSUFBSSxVQUFVLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixLQUFLLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzFCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixFQUFFLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckMsRUFBRSxFQUFFLEVBQUU7WUFDTixLQUFLLEVBQUUsS0FBSztZQUNaLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDN0IsU0FBUyxFQUFFLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdkUsSUFBSSxFQUFFLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDbkUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixLQUFLLG9CQUFvQixDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUk7UUFDekIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hELFFBQVEsQ0FBQyxJQUFJLEdBQUc7b0JBQ2QsRUFBRSxFQUFFO3dCQUNGLEVBQUUsRUFBRSxJQUFJO3dCQUNSLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUk7d0JBQzVDLEtBQUssRUFBRSxLQUFLO3FCQUNiO29CQUNELEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtpQkFDN0IsQ0FBQztnQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxTQUFTO1FBQ3ZCLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxFQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUMsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsU0FBUztRQUN2QixJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztZQUN0RixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLHFDQUFxQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEVBQUMsV0FBVyxFQUFFLE9BQU8sRUFBYztRQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9HQUFvRyxDQUFDLENBQUM7WUFDeEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7WUFDM0ksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBVSxFQUFFLElBQUk7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJO1FBQzlCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJO1lBQzVDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1NBQ3JCLENBQUM7UUFDRixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTyxPQUFPO1FBQ2IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDOzhHQXRMVSxZQUFZLGtCQWlCYixXQUFXO2tIQWpCVixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVOzswQkFrQk4sTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwcENhY2hlU2VydmljZSwgQmFja2VuZFNlcnZpY2UsIENvcmVDb25maWcsIENPUkVfQ09ORklHLCBEbXNPYmplY3QsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIFN5c3RlbVNlcnZpY2UsIFRyYW5zbGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrL3RyZWUvdHJlZS5jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7TG9ja1NldHRpbmdzfSBmcm9tICcuLy4uLy4uL2VvLWNsaWVudC9zZXR0aW5ncy9hZ2VudC1sb2NrLXNldHRpbmdzLmVudW0nO1xuaW1wb3J0IHtDdXN0b21FbWFpbH0gZnJvbSAnLi9hZ2VudC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgZW51bSBhZ2VudENvbmZpZ0tleXMge1xuICBBVVRPQ09OTkVDVCA9ICdhdXRvY29ubmVjdCcsXG4gIExPQ0tTRVRUSU5HUyA9ICdsb2Nrc2V0dGluZ3MnXG59XG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkQ29uZmlnIHtcbiAgYWdlbnQ6IHtcbiAgICBbYWdlbnRDb25maWdLZXlzLkFVVE9DT05ORUNUXT86IGJvb2xlYW47XG4gICAgW2FnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1NdPzogTG9ja1NldHRpbmdzXG4gIH1cbn1cbmV4cG9ydCB0eXBlIEFnZW50Q29ubmVjdGlvbkNvbmZpZyA9IEV4dGVuZGVkQ29uZmlnWydhZ2VudCddXG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFnZW50U2VydmljZSB7XG5cbiAgcHJpdmF0ZSBFTkFJT19QUk9UT0NPTCA9ICd5dXV2aXM6Ly8nO1xuXG4gIGFnZW50QXZhaWxhYmlsaXR5ID0ge1xuICAgIENPTk5FQ1RFRDogJ2VvLmFnZW50LmF2YWlsYWJpbGl0eS5jb25uZWN0ZWQnLFxuICAgIEFWQUlMQUJMRTogJ2VvLmFnZW50LmF2YWlsYWJpbGl0eS5hdmFpbGFibGUnLFxuICAgIFVOQVZBSUxBQkxFOiAnZW8uYWdlbnQuYXZhaWxhYmlsaXR5LnVuYXZhaWxhYmxlJ1xuICB9O1xuXG4gIHByaXZhdGUgX2lzQ29ubmVjdGVkID0gZmFsc2U7XG4gIHByaXZhdGUgaXNDb25uZWN0ZWRTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgcHVibGljIGlzQ29ubmVjdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNDb25uZWN0ZWRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gIHByaXZhdGUgYWdlbnRDb25maWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFnZW50Q29ubmVjdGlvbkNvbmZpZz4obnVsbCk7XG4gIHB1YmxpYyBhZ2VudENvbmZpZyQ6IE9ic2VydmFibGU8QWdlbnRDb25uZWN0aW9uQ29uZmlnPiA9IHRoaXMuYWdlbnRDb25maWcuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBDYWNoZVNlcnZpY2U6IEFwcENhY2hlU2VydmljZSkge1xuICAgIHRoaXMuZ2V0QWdlbnRDb25uZWN0aW9uU3RhdHVzKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEFnZW50Q29ubmVjdGlvblN0YXR1cygpIHtcbiAgICBmb3JrSm9pbihbdGhpcy5hcHBDYWNoZVNlcnZpY2UuZ2V0SXRlbSgnZW8uYWdlbnQuY29ubmVjdGVkJyksIHRoaXMuZ2V0QWdlbnRDb25maWcoKV0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChbc3RvcmFnZSwgY29uZmlnXSkgPT4gdGhpcy5pc0Nvbm5lY3RlZCA9IChjb25maWcgJiYgY29uZmlnLmhhc093blByb3BlcnR5KGFnZW50Q29uZmlnS2V5cy5BVVRPQ09OTkVDVCkgPyBjb25maWcuYXV0b2Nvbm5lY3QgOiBzdG9yYWdlICE9PSBudWxsID8gc3RvcmFnZSA6IG51bGwpKVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldEFnZW50Q29uZmlnKCk6IE9ic2VydmFibGU8QWdlbnRDb25uZWN0aW9uQ29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RXh0ZW5kZWRDb25maWc+KCdhc3NldHMvX2RlZmF1bHQvY29uZmlnL2V4dGVuZC5qc29uJywge3dpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSxcbiAgICAgIHRhcCgoY29uZmlnOiBFeHRlbmRlZENvbmZpZykgPT4gdGhpcy5hZ2VudENvbmZpZy5uZXh0KHsuLi5jb25maWc/LmFnZW50fSkpLFxuICAgICAgbWFwKChjb25maWc6IEV4dGVuZGVkQ29uZmlnKSA9PiBjb25maWc/LmFnZW50KSlcbiAgfVxuXG4gIHNldCBpc0Nvbm5lY3RlZChpc0Nvbm5lY3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzQ29ubmVjdGVkID0gaXNDb25uZWN0ZWQ7XG4gICAgdGhpcy5pc0Nvbm5lY3RlZFNvdXJjZS5uZXh0KGlzQ29ubmVjdGVkKTtcbiAgICB0aGlzLmFwcENhY2hlU2VydmljZS5zZXRJdGVtKCdlby5hZ2VudC5jb25uZWN0ZWQnLCBpc0Nvbm5lY3RlZCk7XG4gIH1cblxuICBnZXQgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQ29ubmVjdGVkO1xuICB9XG5cbiAgc2V0QWdlbnRTdGF0dXMoY29ubmVjdGFnZW50KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHR5cGVvZiBjb25uZWN0YWdlbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmlzQ29ubmVjdGVkID0gY29ubmVjdGFnZW50O1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbG9jYXRpb24gZW50cnkgdG8gdGhlIGFnZW50IHNlcnZpY2VzIGxvY2F0aW9uIGhpc3RvcnkuXG4gICAqIEBwYXJhbSBjb250ZXh0Rm9sZGVyIFRoZSBsb2NhdGlvbnMgY29udGV4dCBmb2xkZXJcbiAgICogQHBhcmFtIHRyZWVOb2RlIE5vZGUgZnJvbSB0aGUgY29udGV4dCBmb2xkZXJzIHN0cnVjdHVyZSB0cmVlXG4gICAqL1xuICB1cGRhdGVVc2VyTG9jYXRpb24oY29udGV4dEZvbGRlcjogRG1zT2JqZWN0LCB0cmVlTm9kZT86IFRyZWVOb2RlKSB7XG5cbiAgICBpZiAodHJlZU5vZGUgJiYgdHJlZU5vZGUuZGF0YSAmJiB0cmVlTm9kZS5kYXRhLnR5cGUpIHtcblxuICAgICAgLy8gaWYgYSBnaXZlbiB0cmVlTm9kZSBjb250YWlucyBhIHRhcmdldCB0eXBlLCB3ZSdsbCBvbmx5IGFkZCBhIHVzZXIgbG9jYXRpb25cbiAgICAgIC8vIHdoZW4gdGhlIHR5cGUgaXMgYWJsZSB0byBhY2NlcHQgY29udGVudCAob3RoZXJ3aXNlIHVzZWxlc3MgZm9yIG9mZmljZSBBZGRJbnMpXG4gICAgICBjb25zdCB0YXJnZXRUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUodHJlZU5vZGUuZGF0YS50eXBlKTtcbiAgICAgIGlmICh0YXJnZXRUeXBlLm1heEZpbGVzID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdGl0bGUgPSBjb250ZXh0Rm9sZGVyLnRpdGxlO1xuICAgIGlmICh0cmVlTm9kZSkge1xuICAgICAgdGl0bGUgKz0gJyA+ICcgKyB0cmVlTm9kZS5wYXRoLmpvaW4oJyA+ICcpO1xuICAgIH1cblxuICAgIGxldCBpZCA9IGNvbnRleHRGb2xkZXIuaWQ7XG4gICAgaWYgKHRyZWVOb2RlKSB7XG4gICAgICBpZCArPSAnXycgKyB0cmVlTm9kZS5kYXRhLmtleTtcbiAgICB9XG5cbiAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBvc3QoJy9sb2NhdGlvbnMnLCB7XG4gICAgICBpZDogaWQsXG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICB0eXBlOiBjb250ZXh0Rm9sZGVyLnR5cGUubmFtZSxcbiAgICAgIGNoaWxkVHlwZTogKHRyZWVOb2RlICYmIHRyZWVOb2RlLmRhdGEpID8gdHJlZU5vZGUuZGF0YS50eXBlIDogdW5kZWZpbmVkLFxuICAgICAgZGF0YTogKHRyZWVOb2RlICYmIHRyZWVOb2RlLmRhdGEpID8gdHJlZU5vZGUuZGF0YS5kYXRhIDogdW5kZWZpbmVkXG4gICAgfSwgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRBZ2VudEJhc2UoKSkuc3Vic2NyaWJlKHIgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYGFkZGVkIGxvY2F0aW9uICcke3RpdGxlfScgdG8gYWdlbnQgc2VydmljZWApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gYSBkb2N1bWVudCB2aWEgYWdlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBkb2N1bWVudCBBIGRvY3VtZW50IHRvIG9wZW4uXG4gICAqIEBwYXJhbSBsb2NrIEJvb2xlYW4sIGlmIHRoZSBkbXMgaXRlbSBzaG91bGQgYmUgbG9ja2VkLlxuICAgKi9cbiAgb3BlbkRvY3VtZW50KGRvY3VtZW50LCBsb2NrKSB7XG4gICAgY29uc3QgaWQgPSBkb2N1bWVudC5pZDtcbiAgICBpZiAobG9jaykge1xuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5wdXQoJy9kbXMvbG9jay8nICsgaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmxvY2sgPSB7XG4gICAgICAgICAgYnk6IHtcbiAgICAgICAgICAgIG1lOiB0cnVlLFxuICAgICAgICAgICAgbmFtZTogdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLm5hbWUsXG4gICAgICAgICAgICBvdGhlcjogZmFsc2VcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZSgnb3BlbkRvY3VtZW50JywgaWQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ29wZW5Eb2N1bWVudCcsIGlkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWQgY29udGVudCB2aWEgYWdlbnQuXG4gICAqIE9uIGNvbXBsZXRpb24sIHRoZSBhZ2VudCB3aWxsIHZpc3VhbGl6ZSB0aGUgZG93bmxvYWRlZCBpdGVtcy5cbiAgICpcbiAgICogQHBhcmFtIGRvY3VtZW50cyBBIGRvY3VtZW50IHRvIG9wZW4uXG4gICAqL1xuICBkb3dubG9hZENvbnRlbnQoZG9jdW1lbnRzKSB7XG4gICAgbGV0IGRvY3MgPSBkb2N1bWVudHMubWFwKGRvYyA9PiB7XG4gICAgICByZXR1cm4ge2lkOiBkb2MuaWQsIHRpdGxlOiBkb2MudGl0bGUsIHR5cGU6IGRvYy50eXBlLm5hbWUgfHwgJycsIHZlcnNpb246IGRvYy52ZXJzaW9ufTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbmRNZXNzYWdlKCdkb3dubG9hZENvbnRlbnQnLCBkb2NzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3B5IGl0ZW1zIHRvIGNsaXBib2FyZC5cbiAgICpcbiAgICogQHBhcmFtIGRvY3VtZW50cyBMaXN0IG9mIGRvY3VtZW50cyB3aXRoIGlkLCB0aXRsZSwgdHlwZSBhbmQgcmVuZGl0aW9uLlxuICAgKi9cbiAgY29weVRvQ2xpcGJvYXJkKGRvY3VtZW50cykge1xuICAgIGlmICghZG9jdW1lbnRzIHx8IGRvY3VtZW50cy5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignQWdlbnQgY29weVRvQ2xpcGJvYXJkIGVycm9yOiBkb2N1bWVudHMgZG9lcyBub3QgY29udGFpbiBlbGVtZW50cycpO1xuICAgICAgcmV0dXJuIFV0aWxzLnRocm93KG51bGwsICdkb2N1bWVudHMgZG9lcyBub3QgY29udGFpbiBlbGVtZW50cycpLmNhbGwodGhpcywge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbmRNZXNzYWdlKCdjb3B5VG9DbGlwYm9hcmQnLCBkb2N1bWVudHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIGl0ZW1zIGFzIGVtYWlsLlxuICAgKlxuICAgKiBAcGFyYW0gQ3VzdG9tRW1haWwgY29udGFpbiBhdHRhY2hlbW50cyBhbmQgbWVzc2FnZS4gTWVzc2FnZSBteSBjb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBtYWlsLlxuICAgKi9cbiAgc2VuZEFzTWFpbCh7YXR0YWNobWVudHMsIG1lc3NhZ2V9OiBDdXN0b21FbWFpbCkge1xuICAgIGlmICghYXR0YWNobWVudHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0FnZW50IHNlbmRBc01haWwgZXJyb3I6IGRvY3VtZW50cyBhcnJheSBkb2VzIG5vdCBjb250YWluIGVsZW1lbnRzLiBBdHRhY2htZW50cyBjb3VsZCBub3QgYmUgZm91bmQuJyk7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZG9jdW1lbnQub3Blbi5lcnJvci50aXRsZScpLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5kb2N1bWVudC5vcGVuLmVycm9yLm1lc3NhZ2UnKSk7XG4gICAgICByZXR1cm4gVXRpbHMudGhyb3cobnVsbCwgJ2RvY3VtZW50cyBhcnJheSBkb2VzIG5vdCBjb250YWluIGVsZW1lbnRzJykuY2FsbCh0aGlzLCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ3NlbmRBc01haWwnLCB7YXR0YWNobWVudHMsIG1lc3NhZ2V9KTtcbiAgICB9XG4gIH1cblxuICBzZW5kRXh0ZXJuYWxBY3Rpb24oZXhlY3V0YWJsZSwgYXJncykge1xuICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ2V4dGVybmFsJywge2V4ZWN1dGFibGUsIGFyZ3N9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZE1lc3NhZ2UoYWN0aW9uLCBkYXRhKSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkubmFtZSxcbiAgICAgIGhvc3Q6IHRoaXMuZ2V0SG9zdCgpXG4gICAgfTtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuRU5BSU9fUFJPVE9DT0wgKyBhY3Rpb24gKyAnLycgKyBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIb3N0KCkge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICB9XG5cbn1cbiJdfQ==
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQThDLFdBQVcsRUFBeUYsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BMLE9BQU8sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLcEQsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qiw4Q0FBMkIsQ0FBQTtJQUMzQixnREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSFcsZUFBZSxLQUFmLGVBQWUsUUFHMUI7QUFXRCxNQUFNLE9BQU8sWUFBWTtJQWdCdkIsWUFDOEIsVUFBc0IsRUFDMUMsTUFBYyxFQUNkLElBQWdCLEVBQ2hCLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLFNBQTJCLEVBQzNCLGFBQW1DLEVBQ25DLGVBQWdDO1FBUlosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUMxQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXZCbEMsbUJB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QVcsQ0FBQyxVQUFVLEVBQUUsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJO1FBQzlCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJO1lBQzVDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1NBQ3JCLENBQUM7UUFDRixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTyxPQUFPO1FBQ2IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDOzhHQXRMVSxZQUFZLGtCQWlCYixXQUFXO2tIQWpCVixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVOzswQkFrQk4sTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBwQ2FjaGVTZXJ2aWNlLCBCYWNrZW5kU2VydmljZSwgQ29yZUNvbmZpZywgQ09SRV9DT05GSUcsIERtc09iamVjdCwgTG9nZ2VyLCBOb3RpZmljYXRpb25zU2VydmljZSwgU3lzdGVtU2VydmljZSwgVHJhbnNsYXRlU2VydmljZSwgVXNlclNlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmsvdHJlZS90cmVlLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2NrU2V0dGluZ3N9IGZyb20gJy4vLi4vLi4vZW8tY2xpZW50L3NldHRpbmdzL2FnZW50LWxvY2stc2V0dGluZ3MuZW51bSc7XG5pbXBvcnQge0N1c3RvbUVtYWlsfSBmcm9tICcuL2FnZW50LmludGVyZmFjZSc7XG5cbmV4cG9ydCBlbnVtIGFnZW50Q29uZmlnS2V5cyB7XG4gIEFVVE9DT05ORUNUID0gJ2F1dG9jb25uZWN0JyxcbiAgTE9DS1NFVFRJTkdTID0gJ2xvY2tzZXR0aW5ncydcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5kZWRDb25maWcge1xuICBhZ2VudDoge1xuICAgIFthZ2VudENvbmZpZ0tleXMuQVVUT0NPTk5FQ1RdPzogYm9vbGVhbjtcbiAgICBbYWdlbnRDb25maWdLZXlzLkxPQ0tTRVRUSU5HU10/OiBMb2NrU2V0dGluZ3NcbiAgfVxufVxuZXhwb3J0IHR5cGUgQWdlbnRDb25uZWN0aW9uQ29uZmlnID0gRXh0ZW5kZWRDb25maWdbJ2FnZW50J11cblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWdlbnRTZXJ2aWNlIHtcblxuICBwcml2YXRlIEVOQUlPX1BST1RPQ09MID0gJ3l1dXZpczovLyc7XG5cbiAgYWdlbnRBdmFpbGFiaWxpdHkgPSB7XG4gICAgQ09OTkVDVEVEOiAnZW8uYWdlbnQuYXZhaWxhYmlsaXR5LmNvbm5lY3RlZCcsXG4gICAgQVZBSUxBQkxFOiAnZW8uYWdlbnQuYXZhaWxhYmlsaXR5LmF2YWlsYWJsZScsXG4gICAgVU5BVkFJTEFCTEU6ICdlby5hZ2VudC5hdmFpbGFiaWxpdHkudW5hdmFpbGFibGUnXG4gIH07XG5cbiAgcHJpdmF0ZSBfaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc0Nvbm5lY3RlZFNvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICBwdWJsaWMgaXNDb25uZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc0Nvbm5lY3RlZFNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgcHJpdmF0ZSBhZ2VudENvbmZpZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWdlbnRDb25uZWN0aW9uQ29uZmlnPihudWxsKTtcbiAgcHVibGljIGFnZW50Q29uZmlnJDogT2JzZXJ2YWJsZTxBZ2VudENvbm5lY3Rpb25Db25maWc+ID0gdGhpcy5hZ2VudENvbmZpZy5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENPUkVfQ09ORklHKSBwdWJsaWMgY29yZUNvbmZpZzogQ29yZUNvbmZpZyxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kU2VydmljZTogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFwcENhY2hlU2VydmljZTogQXBwQ2FjaGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5nZXRBZ2VudENvbm5lY3Rpb25TdGF0dXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWdlbnRDb25uZWN0aW9uU3RhdHVzKCkge1xuICAgIGZvcmtKb2luKFt0aGlzLmFwcENhY2hlU2VydmljZS5nZXRJdGVtKCdlby5hZ2VudC5jb25uZWN0ZWQnKSwgdGhpcy5nZXRBZ2VudENvbmZpZygpXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKFtzdG9yYWdlLCBjb25maWddKSA9PiB0aGlzLmlzQ29ubmVjdGVkID0gKGNvbmZpZyAmJiBjb25maWcuaGFzT3duUHJvcGVydHkoYWdlbnRDb25maWdLZXlzLkFVVE9DT05ORUNUKSA/IGNvbmZpZy5hdXRvY29ubmVjdCA6IHN0b3JhZ2UgIT09IG51bGwgPyBzdG9yYWdlIDogbnVsbCkpXG4gICAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0QWdlbnRDb25maWcoKTogT2JzZXJ2YWJsZTxBZ2VudENvbm5lY3Rpb25Db25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFeHRlbmRlZENvbmZpZz4oJ2Fzc2V0cy9fZGVmYXVsdC9jb25maWcvZXh0ZW5kLmpzb24nLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzfSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpLFxuICAgICAgdGFwKChjb25maWc6IEV4dGVuZGVkQ29uZmlnKSA9PiB0aGlzLmFnZW50Q29uZmlnLm5leHQoey4uLmNvbmZpZz8uYWdlbnR9KSksXG4gICAgICBtYXAoKGNvbmZpZzogRXh0ZW5kZWRDb25maWcpID0+IGNvbmZpZz8uYWdlbnQpKVxuICB9XG5cbiAgc2V0IGlzQ29ubmVjdGVkKGlzQ29ubmVjdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNDb25uZWN0ZWQgPSBpc0Nvbm5lY3RlZDtcbiAgICB0aGlzLmlzQ29ubmVjdGVkU291cmNlLm5leHQoaXNDb25uZWN0ZWQpO1xuICAgIHRoaXMuYXBwQ2FjaGVTZXJ2aWNlLnNldEl0ZW0oJ2VvLmFnZW50LmNvbm5lY3RlZCcsIGlzQ29ubmVjdGVkKTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNDb25uZWN0ZWQ7XG4gIH1cblxuICBzZXRBZ2VudFN0YXR1cyhjb25uZWN0YWdlbnQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAodHlwZW9mIGNvbm5lY3RhZ2VudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBjb25uZWN0YWdlbnQ7XG4gICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsb2NhdGlvbiBlbnRyeSB0byB0aGUgYWdlbnQgc2VydmljZXMgbG9jYXRpb24gaGlzdG9yeS5cbiAgICogQHBhcmFtIGNvbnRleHRGb2xkZXIgVGhlIGxvY2F0aW9ucyBjb250ZXh0IGZvbGRlclxuICAgKiBAcGFyYW0gdHJlZU5vZGUgTm9kZSBmcm9tIHRoZSBjb250ZXh0IGZvbGRlcnMgc3RydWN0dXJlIHRyZWVcbiAgICovXG4gIHVwZGF0ZVVzZXJMb2NhdGlvbihjb250ZXh0Rm9sZGVyOiBEbXNPYmplY3QsIHRyZWVOb2RlPzogVHJlZU5vZGUpIHtcblxuICAgIGlmICh0cmVlTm9kZSAmJiB0cmVlTm9kZS5kYXRhICYmIHRyZWVOb2RlLmRhdGEudHlwZSkge1xuXG4gICAgICAvLyBpZiBhIGdpdmVuIHRyZWVOb2RlIGNvbnRhaW5zIGEgdGFyZ2V0IHR5cGUsIHdlJ2xsIG9ubHkgYWRkIGEgdXNlciBsb2NhdGlvblxuICAgICAgLy8gd2hlbiB0aGUgdHlwZSBpcyBhYmxlIHRvIGFjY2VwdCBjb250ZW50IChvdGhlcndpc2UgdXNlbGVzcyBmb3Igb2ZmaWNlIEFkZElucylcbiAgICAgIGNvbnN0IHRhcmdldFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSh0cmVlTm9kZS5kYXRhLnR5cGUpO1xuICAgICAgaWYgKHRhcmdldFR5cGUubWF4RmlsZXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB0aXRsZSA9IGNvbnRleHRGb2xkZXIudGl0bGU7XG4gICAgaWYgKHRyZWVOb2RlKSB7XG4gICAgICB0aXRsZSArPSAnID4gJyArIHRyZWVOb2RlLnBhdGguam9pbignID4gJyk7XG4gICAgfVxuXG4gICAgbGV0IGlkID0gY29udGV4dEZvbGRlci5pZDtcbiAgICBpZiAodHJlZU5vZGUpIHtcbiAgICAgIGlkICs9ICdfJyArIHRyZWVOb2RlLmRhdGEua2V5O1xuICAgIH1cblxuICAgIHRoaXMuYmFja2VuZFNlcnZpY2UucG9zdCgnL2xvY2F0aW9ucycsIHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIHR5cGU6IGNvbnRleHRGb2xkZXIudHlwZS5uYW1lLFxuICAgICAgY2hpbGRUeXBlOiAodHJlZU5vZGUgJiYgdHJlZU5vZGUuZGF0YSkgPyB0cmVlTm9kZS5kYXRhLnR5cGUgOiB1bmRlZmluZWQsXG4gICAgICBkYXRhOiAodHJlZU5vZGUgJiYgdHJlZU5vZGUuZGF0YSkgPyB0cmVlTm9kZS5kYXRhLmRhdGEgOiB1bmRlZmluZWRcbiAgICB9LCB0aGlzLmJhY2tlbmRTZXJ2aWNlLmdldEFnZW50QmFzZSgpKS5zdWJzY3JpYmUociA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgYWRkZWQgbG9jYXRpb24gJyR7dGl0bGV9JyB0byBhZ2VudCBzZXJ2aWNlYCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBhIGRvY3VtZW50IHZpYSBhZ2VudC5cbiAgICpcbiAgICogQHBhcmFtIGRvY3VtZW50IEEgZG9jdW1lbnQgdG8gb3Blbi5cbiAgICogQHBhcmFtIGxvY2sgQm9vbGVhbiwgaWYgdGhlIGRtcyBpdGVtIHNob3VsZCBiZSBsb2NrZWQuXG4gICAqL1xuICBvcGVuRG9jdW1lbnQoZG9jdW1lbnQsIGxvY2spIHtcbiAgICBjb25zdCBpZCA9IGRvY3VtZW50LmlkO1xuICAgIGlmIChsb2NrKSB7XG4gICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnB1dCgnL2Rtcy9sb2NrLycgKyBpZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQubG9jayA9IHtcbiAgICAgICAgICBieToge1xuICAgICAgICAgICAgbWU6IHRydWUsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkubmFtZSxcbiAgICAgICAgICAgIG90aGVyOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb246IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKCdvcGVuRG9jdW1lbnQnLCBpZCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZW5kTWVzc2FnZSgnb3BlbkRvY3VtZW50JywgaWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCBjb250ZW50IHZpYSBhZ2VudC5cbiAgICogT24gY29tcGxldGlvbiwgdGhlIGFnZW50IHdpbGwgdmlzdWFsaXplIHRoZSBkb3dubG9hZGVkIGl0ZW1zLlxuICAgKlxuICAgKiBAcGFyYW0gZG9jdW1lbnRzIEEgZG9jdW1lbnQgdG8gb3Blbi5cbiAgICovXG4gIGRvd25sb2FkQ29udGVudChkb2N1bWVudHMpIHtcbiAgICBsZXQgZG9jcyA9IGRvY3VtZW50cy5tYXAoZG9jID0+IHtcbiAgICAgIHJldHVybiB7aWQ6IGRvYy5pZCwgdGl0bGU6IGRvYy50aXRsZSwgdHlwZTogZG9jLnR5cGUubmFtZSB8fCAnJywgdmVyc2lvbjogZG9jLnZlcnNpb259O1xuICAgIH0pO1xuICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ2Rvd25sb2FkQ29udGVudCcsIGRvY3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgaXRlbXMgdG8gY2xpcGJvYXJkLlxuICAgKlxuICAgKiBAcGFyYW0gZG9jdW1lbnRzIExpc3Qgb2YgZG9jdW1lbnRzIHdpdGggaWQsIHRpdGxlLCB0eXBlIGFuZCByZW5kaXRpb24uXG4gICAqL1xuICBjb3B5VG9DbGlwYm9hcmQoZG9jdW1lbnRzKSB7XG4gICAgaWYgKCFkb2N1bWVudHMgfHwgZG9jdW1lbnRzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdBZ2VudCBjb3B5VG9DbGlwYm9hcmQgZXJyb3I6IGRvY3VtZW50cyBkb2VzIG5vdCBjb250YWluIGVsZW1lbnRzJyk7XG4gICAgICByZXR1cm4gVXRpbHMudGhyb3cobnVsbCwgJ2RvY3VtZW50cyBkb2VzIG5vdCBjb250YWluIGVsZW1lbnRzJykuY2FsbCh0aGlzLCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoJ2NvcHlUb0NsaXBib2FyZCcsIGRvY3VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgaXRlbXMgYXMgZW1haWwuXG4gICAqXG4gICAqIEBwYXJhbSBDdXN0b21FbWFpbCBjb250YWluIGF0dGFjaGVtbnRzIGFuZCBtZXNzYWdlLiBNZXNzYWdlIG15IGNvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIG1haWwuXG4gICAqL1xuICBzZW5kQXNNYWlsKHthdHRhY2htZW50cywgbWVzc2FnZX06IEN1c3RvbUVtYWlsKSB7XG4gICAgaWYgKCFhdHRhY2htZW50cz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignQWdlbnQgc2VuZEFzTWFpbCBlcnJvcjogZG9jdW1lbnRzIGFycmF5IGRvZXMgbm90IGNvbnRhaW4gZWxlbWVudHMuIEF0dGFjaG1lbnRzIGNvdWxkIG5vdCBiZSBmb3VuZC4nKTtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5kb2N1bWVudC5vcGVuLmVycm9yLnRpdGxlJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmRvY3VtZW50Lm9wZW4uZXJyb3IubWVzc2FnZScpKTtcbiAgICAgIHJldHVybiBVdGlscy50aHJvdyhudWxsLCAnZG9jdW1lbnRzIGFycmF5IGRvZXMgbm90IGNvbnRhaW4gZWxlbWVudHMnKS5jYWxsKHRoaXMsIHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZW5kTWVzc2FnZSgnc2VuZEFzTWFpbCcsIHthdHRhY2htZW50cywgbWVzc2FnZX0pO1xuICAgIH1cbiAgfVxuXG4gIHNlbmRFeHRlcm5hbEFjdGlvbihleGVjdXRhYmxlLCBhcmdzKSB7XG4gICAgdGhpcy5zZW5kTWVzc2FnZSgnZXh0ZXJuYWwnLCB7ZXhlY3V0YWJsZSwgYXJnc30pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kTWVzc2FnZShhY3Rpb24sIGRhdGEpIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgZGF0YTogZGF0YSxcbiAgICAgIHVzZXI6IHRoaXMudXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKS5uYW1lLFxuICAgICAgaG9zdDogdGhpcy5nZXRIb3N0KClcbiAgICB9O1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5FTkFJT19QUk9UT0NPTCArIGFjdGlvbiArICcvJyArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEhvc3QoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gIH1cblxufVxuIl19
@@ -69,7 +69,7 @@ export class GridService {
69
69
  copyToClipboard(event, grid, gridOptions) {
70
70
  event.preventDefault();
71
71
  event.stopPropagation();
72
- const viewport = grid.api['gridBodyCtrl'].bodyScrollFeature.centerRowContainerCtrl.eViewport;
72
+ const viewport = grid.api['gridBodyCtrl'].bodyScrollFeature.centerRowsCtrl.eViewport;
73
73
  const scrollLeft = viewport.scrollLeft;
74
74
  const focusedCell = grid.api.getFocusedCell();
75
75
  const rows = event.shiftKey ? grid.api.getSelectedNodes() : [grid.api.getDisplayedRowAtIndex(focusedCell.rowIndex)];
@@ -256,7 +256,7 @@ export class GridService {
256
256
  colDef.sortable = false;
257
257
  }
258
258
  if (!resultField.searchable) {
259
- colDef.suppressMenu = true;
259
+ colDef.suppressHeaderMenuButton = true;
260
260
  colDef.filter = false;
261
261
  }
262
262
  let sortField = sortFields.find(f => f.qname === resultField.qname);
@@ -495,10 +495,10 @@ export class GridService {
495
495
  -1);
496
496
  };
497
497
  }
498
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GridService, deps: [{ token: i1.TranslateService }, { token: i2.Router }, { token: i3.AppSearchService }, { token: i1.SystemService }, { token: i1.BackendService }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Injectable }); }
499
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GridService }); }
498
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GridService, deps: [{ token: i1.TranslateService }, { token: i2.Router }, { token: i3.AppSearchService }, { token: i1.SystemService }, { token: i1.BackendService }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Injectable }); }
499
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GridService }); }
500
500
  }
501
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GridService, decorators: [{
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GridService, decorators: [{
502
502
  type: Injectable
503
503
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.Router }, { type: i3.AppSearchService }, { type: i1.SystemService }, { type: i1.BackendService }, { type: i1.UserService }] });
504
504
  export class CellRenderer {
@@ -718,4 +718,4 @@ export class CellRenderer {
718
718
  return `<span class="no-value">${param.context.translate.instant('eo.form.input.null')}</span>`;
719
719
  }
720
720
  }
721
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUF3QyxDQUFDLEVBQXlDLE1BQU0seUJBQXlCLENBQUM7QUFDekgsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEVBS0wsS0FBSyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBRWIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJEQUEyRCxDQUFDOzs7OztBQUl6RixNQUFNLE9BQU8sV0FBVztJQUd0QixJQUFJLGVBQWU7UUFDakIsT0FBTztZQUNMLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUM5RSxtQkFBbUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM5QixPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7b0JBQzlFLENBQUMs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QU0sQ0FBQyxlQUFlLENBQUMsS0FBSztRQUMxQixPQUFPLDBCQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBQ2xHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTaW1wbGVGaWx0ZXIsIENvbERlZiwgQ3N2RXhwb3J0UGFyYW1zLCBfLCBSb3dOb2RlLCBDb2x1bW4sIEdyaWRPcHRpb25zLCBJUm93Tm9kZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudEVuYWlvLCBTZWFyY2hRdWVyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuLi9waXBlcy9maWxlc2l6ZS5waXBlJztcbmltcG9ydCB7TG9jYWxlTnVtYmVyUGlwZX0gZnJvbSAnLi4vcGlwZXMvbG9jYWxlLW51bWJlci5waXBlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgU3lzdGVtU2VydmljZSxcbiAgQmFja2VuZFNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBFb1VzZXIsXG4gIFV0aWxzLFxuICBSYW5nZVZhbHVlLFxuICBTZWFyY2hGaWx0ZXIsXG4gIFNlYXJjaFN0YXRlXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91dGlsJztcbmltcG9ydCB7RmlsZXNpemVGaWx0ZXJ9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZmlsZXNpemUtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0FnR3JpZEFuZ3VsYXJ9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdyaWRTZXJ2aWNlIHtcbiAgY29udGV4dDogYW55O1xuXG4gIGdldCBjc3ZFeHBvcnRQYXJhbXMoKTogQ3N2RXhwb3J0UGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZU5hbWU6ICdleHBvcnQnLFxuICAgICAgY29sdW1uU2VwYXJhdG9yOiB0aGlzLmNvbnRleHQ/Lm51bWJlclBpcGUuZGVjaW1hbFNlcGFyYXRvciA9PT0gJywnID8gJzsnIDogJywnLFxuICAgICAgcHJvY2Vzc0NlbGxDYWxsYmFjazogKHBhcmFtcykgPT4ge1xuICAgICAgICByZXR1cm4gKHBhcmFtcy5jb2x1bW4uZ2V0Q29sRGVmKCkuY2VsbENsYXNzIGFzIGFueSB8fCAnJykuaW5jbHVkZXMoJ2NvbC1udW1iZXInKVxuICAgICAgICAgID8gKHBhcmFtcy5jb2x1bW4uZ2V0Q29sRGVmKCkuY2VsbFJlbmRlcmVyIGFzIGFueSkocGFyYW1zKS5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFxgICsgdGhpcy5jb250ZXh0Py5udW1iZXJQaXBlLnNlcGFyYXRvciwgJ2cnKSwgJycpIC8vIHJlbW92ZWQgZ3JvdXBpbmdcbiAgICAgICAgICA6IHBhcmFtcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGVzY2FwZUh0bWwoc3RyKSB7XG4gICAgc3RyID0gc3RyID8gc3RyIDogJyc7XG4gICAgY29uc3QgZW50aXR5TWFwID0ge1xuICAgICAgJyYnOiAnJmFtcDsnLFxuICAgICAgJzwnOiAnJmx0OycsXG4gICAgICAnPic6ICcmZ3Q7JyxcbiAgICAgICdcIic6ICcmcXVvdDsnLFxuICAgICAgJ1xcJyc6ICcmIzM5OycsXG4gICAgICAnLyc6ICcmI3gyRjsnXG4gICAgfTtcbiAgICByZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZSgvWyY8PlwiJ1xcL10vZywgcyA9PiBlbnRpdHlNYXBbc10pO1xuICB9XG5cbiAgc3RhdGljIHFuYW1lRm9ybWF0dGVyKHFuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKHFuYW1lIHx8ICcnKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ3N5c29iamVjdC58c3lzZG9jdW1lbnQuJyksICcnKTtcbiAgfVxuXG4gIHN0YXRpYyBxbmFtZU1hdGNoKHFuYW1lOiBzdHJpbmcsIHFuYW1lMjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKHFuYW1lKSA9PT0gR3JpZFNlcnZpY2UucW5hbWVGb3JtYXR0ZXIocW5hbWUyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW06IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICB0cmFuc2xhdGUsXG4gICAgICBzeXN0ZW0sXG4gICAgICBiYWNrZW5kLFxuICAgICAgcm91dGVyLFxuICAgICAgZmlsZVNpemVQaXBlOiBuZXcgRmlsZVNpemVQaXBlKHRyYW5zbGF0ZSksXG4gICAgICBudW1iZXJQaXBlOiBuZXcgTG9jYWxlTnVtYmVyUGlwZSh0cmFuc2xhdGUpLFxuICAgICAgZGF0ZVBpcGU6IG5ldyBMb2NhbGVEYXRlUGlwZSh0cmFuc2xhdGUpLFxuICAgICAgY3I6IENlbGxSZW5kZXJlcixcbiAgICAgIGJhc2VIcmVmOiBFbnZpcm9ubWVudEVuYWlvLmlzV2ViRW52aXJvbm1lbnQoKSA/IHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgOiAnLi8nLFxuICAgICAgbWltZXR5cGVncm91cE9wdHM6IE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5Lk1JTUVUWVBFR1JPVVBfQlVDS0VUUykubWFwKGsgPT4gay50b0xvd2VyQ2FzZSgpKSxcbiAgICAgIHR5cGVPcHRzOiBbXVxuICAgIH07XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnVzZXIkLnN1YnNjcmliZShcbiAgICAgICh1c2VyOiBFb1VzZXIpID0+XG4gICAgICAgICh0aGlzLmNvbnRleHQuZGVmYXVsdFBvc2l0aW9uID1cbiAgICAgICAgICB1c2VyLnVpRGlyZWN0aW9uID09PSAncnRsJyA/ICdyaWdodCcgOiAnbGVmdCcpXG4gICAgKTtcblxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5xdWVyeVN0YXRlJC5zdWJzY3JpYmUoKHN0YXRlOiBTZWFyY2hTdGF0ZSkgPT4gdGhpcy51cGRhdGVDb250ZXh0KEFycmF5LmZyb20oc3RhdGUuYWdncmVnYXRpb25zLnR5cGUua2V5cygpKSkpO1xuICB9XG5cbiAgLy8gY29weSBjb250ZW50IG9mIGVpdGhlciByb3cgb3IgdGFibGUgY2VsbCB0byBjbGlwYm9hcmRcbiAgcHVibGljIGNvcHlUb0NsaXBib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCwgZ3JpZDogQWdHcmlkQW5ndWxhciwgZ3JpZE9wdGlvbnM/OiBHcmlkT3B0aW9ucykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB2aWV3cG9ydCA9IGdyaWQuYXBpWydncmlkQm9keUN0cmwnXS5ib2R5U2Nyb2xsRmVhdHVyZS5jZW50ZXJSb3dDb250YWluZXJDdHJsLmVWaWV3cG9ydDtcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gdmlld3BvcnQuc2Nyb2xsTGVmdDtcblxuICAgIGNvbnN0IGZvY3VzZWRDZWxsID0gZ3JpZC5hcGkuZ2V0Rm9jdXNlZENlbGwoKTtcbiAgICBjb25zdCByb3dzOiBJUm93Tm9kZVtdID0gZXZlbnQuc2hpZnRLZXkgPyBncmlkLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCkgOiBbZ3JpZC5hcGkuZ2V0RGlzcGxheWVkUm93QXRJbmRleChmb2N1c2VkQ2VsbC5yb3dJbmRleCldO1xuICAgIGNvbnN0IGNvbHM6IENvbHVtbltdID0gZXZlbnQuc2hpZnRLZXkgPyBncmlkLmFwaS5nZXRBbGxHcmlkQ29sdW1ucygpLmZpbHRlcigoYzogYW55KSA9PiBjLmNvbElkICE9PSAnX19zZWxlY3Rpb25GaWVsZCcpIDogW2ZvY3VzZWRDZWxsLmNvbHVtbl07XG4gICAgY29uc3QgZ2V0Q2VsbCA9IChjb2wsIHJvdykgPT4gdmlld3BvcnQucXVlcnlTZWxlY3RvcihgZGl2W3Jvdy1pbmRleD1cIiR7cm93LnJvd0luZGV4fVwiXSBbY29sLWlkPVwiJHtjb2wuY29sSWR9XCJdYCk7XG4gICAgY29uc3QgdmFsdWUgPSAoY29sLCByb3cpID0+IHtcbiAgICAgIGdyaWQuYXBpLmVuc3VyZUNvbHVtblZpc2libGUoY29sKTtcbiAgICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGNvbCwgcm93KTtcbiAgICAgIGlmICghY2VsbCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgY2hpcHMgPSBjZWxsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jaGlwJykgfHwgW107XG4gICAgICBjb25zdCB2YWwgPSBBcnJheS5mcm9tKGNoaXBzLmxlbmd0aCA/IGNoaXBzIDogW2NlbGxdKS5tYXAoKGM6IGFueSkgPT4gKGMgJiYgYy50ZXh0Q29udGVudCAmJiBjLnRleHRDb250ZW50LnRyaW0oKSkgfHwgJycpO1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWwudG9TdHJpbmcoKSB8fCBncmlkLmFwaS5nZXRWYWx1ZShjb2wsIHJvdyk7XG4gICAgICByZXR1cm4gIVV0aWxpdGllc1NlcnZpY2UuaXNFbXB0eSh2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxuJywgJ2cnKSwgJyAnKSA6ICcnO1xuICAgIH07XG5cbiAgICBsZXQgY29udGVudCA9ICcnO1xuICAgIGlmIChldmVudC5hbHRLZXkpIGNvbnRlbnQgKz0gY29scy5tYXAoKGNvbDogQ29sdW1uKSA9PiBjb2wuZ2V0Q29sRGVmKCkuaGVhZGVyTmFtZSkuam9pbignXHQnKSArICdcXG4nO1xuICAgIGNvbnRlbnQgKz0gcm93cy5tYXAoKHJvdykgPT4gY29scy5tYXAoKGNvbDogQ29sdW1uKSA9PiB2YWx1ZShjb2wsIHJvdykpLmpvaW4oJ1x0JykpLmpvaW4oJ1xcbicpO1xuXG4gICAgZ3JpZC5hcGkuZW5zdXJlQ29sdW1uVmlzaWJsZShmb2N1c2VkQ2VsbC5jb2x1bW4pO1xuICAgIHZpZXdwb3J0LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICAgIHNldFRpbWVvdXQoXG4gICAgICAoKSA9PlxuICAgICAgICByb3dzLm1hcCgocm93KSA9PlxuICAgICAgICAgIGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IGdldENlbGwoY29sLCByb3cpO1xuICAgICAgICAgICAgY2VsbCAmJiBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NvcHktY2VsbCcpO1xuICAgICAgICAgICAgY2VsbCAmJiBzZXRUaW1lb3V0KCgpID0+IGNlbGwgJiYgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjb3B5LWNlbGwnKSwgNDAwMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIDEwMFxuICAgICk7XG5cbiAgICAvLyBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb250ZW50KTsgLy8gb25seSBpZiBjbGllbnQgcnVucyBodHRwc1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICB0ZXh0QXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSk7XG4gICAgdGV4dEFyZWEuc2VsZWN0KCk7XG4gICAgY29uc3QgY29weVN1Y2Nlc3MgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xuICB9XG5cbiAgcHVibGljIG9wZW5MaW5rKHVyaTogc3RyaW5nLCBuZXdUYWIgPSBmYWxzZSkge1xuICAgIGlmIChuZXdUYWIpIHtcbiAgICAgIHdpbmRvdy5vcGVuKENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZvcmNlIHJlbG9hZCBpbiBjYXNlIG9mIHNhbWUgVVJMXG4gICAgICBjb25zdCBleHRyYXMgPSBDZWxsUmVuZGVyZXIud2luZG93VVJJKHRoaXMucm91dGVyLnVybCkgPT09IENlbGxSZW5kZXJlci53aW5kb3dVUkkodXJpKSA/IGAke3VyaS5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nfXJlbG9hZD10cnVlYCA6ICcnO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmkgKyBleHRyYXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dJbmRleChlbCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5nZXRBdHRyaWJ1dGUoJ3Jvdy1pbmRleCcpXG4gICAgICAgID8gcGFyc2VJbnQoZWwuZ2V0QXR0cmlidXRlKCdyb3ctaW5kZXgnKSwgMTApXG4gICAgICAgIDogdGhpcy5nZXRSb3dJbmRleChlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZXJMaW5rKGVsLCBwYXJlbnRDbGFzcykge1xuICAgIHJldHVybiBlbCAmJiAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKHBhcmVudENsYXNzKVxuICAgICAgPyBlbC5sb2NhbE5hbWUgPT09ICdhJyAmJiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JvdXRlci1saW5rJylcbiAgICAgICAgPyBlbFxuICAgICAgICA6IHRoaXMuZ2V0Um91dGVyTGluayhlbC5wYXJlbnRFbGVtZW50LCBwYXJlbnRDbGFzcylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUm91dGVyTGluayhldmVudDogTW91c2VFdmVudCwgcGFyZW50Q2xhc3M6IHN0cmluZykge1xuICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsoXG4gICAgICBldmVudC50YXJnZXQsXG4gICAgICBwYXJlbnRDbGFzc1xuICAgICkgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgaWYgKGxpbmsgJiYgbGluay5ocmVmKSB7XG4gICAgICB0aGlzLm9wZW5MaW5rKGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJyksIGV2ZW50LmN0cmxLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB7Li4udGhpcy5jb250ZXh0LCBjb3VudDogMCwgcm93Q291bnQ6IDB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbnRleHQodHlwZU9wdHM6IHN0cmluZ1tdLCBvcHRpb25zID0ge30pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY29udGV4dCwge3R5cGVPcHRzOiAodHlwZU9wdHMgJiYgdHlwZU9wdHMubGVuZ3RoID8gdHlwZU9wdHMgOiB0aGlzLnN5c3RlbS5nZXRPYmplY3RUeXBlcygpLm1hcChvID0+IG8ucW5hbWUpKX0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkRlZnMoXG4gICAgZWxlbWVudHM6IGFueVtdLFxuICAgIHNvcnRvcmRlcjogYW55W10gPSBbXSxcbiAgICBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHBpbm5lZDogYW55W10gPSBbXSxcbiAgICBhbGlnbm1lbnR4OiB7cW5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZ31bXSA9IFtdLFxuICAgIGVuYWJsZVJvd0dyb3VwID0gdHJ1ZSxcbiAgICBjYWNoZWRDb2x1bW5zID0gW10sXG4gICAgbW9kZT9cbiAgKTogQ29sRGVmW10ge1xuICAgIHJldHVybiBlbGVtZW50cy5tYXAoZiA9PlxuICAgICAgdGhpcy5nZXRDb2x1bW5EZWZpbml0aW9uKFxuICAgICAgICBmLFxuICAgICAgICBzb3J0b3JkZXIsXG4gICAgICAgIGdyb3Vwb3JkZXIsXG4gICAgICAgIHBpbm5lZCxcbiAgICAgICAgYWxpZ25tZW50eCxcbiAgICAgICAgZW5hYmxlUm93R3JvdXAsXG4gICAgICAgIGNhY2hlZENvbHVtbnMsXG4gICAgICAgIG1vZGVcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHZpc3VhbCBvdXRwdXQgb2YgZm9ybSBlbGVtZW50cyBiYXNlZCBvbiBpdHMgdHlwZSBldGMuIChzZWUgSW5kZXhkYXRhU3VtbWFyeUNvbXBvbmVudCBmb3IgdXNhZ2UgZGV0YWlscylcbiAgICogQHBhcmFtIGVsZW1lbnRzIC0gVGhlIGZvcm0gZWxlbWVudHMgdG8gYmUgcmVuZGVyZWRcbiAgICogQHJldHVybnMgVGhlIHJlbmRlcmVkIEhUTUwgZm9yIHRoZSBnaXZlbiBlbGVtZW50c1xuICAgKi9cbiAgcHVibGljIGdldFJlc29sdmVkRGVmcyhlbGVtZW50czogYW55W10pIHtcbiAgICByZXR1cm4gZWxlbWVudHMubWFwKGVsID0+IHtcbiAgICAgIGxldCBjb2xEZWY6IENvbERlZiA9IHRoaXMuZ2V0Q29sdW1uRGVmaW5pdGlvbihlbCk7XG4gICAgICBsZXQgdmFsdWUgPSBlbC52YWx1ZTtcbiAgICAgIGxldCBkYXRhID0ge307XG4gICAgICBkYXRhW2NvbERlZi5maWVsZF0gPSB2YWx1ZTtcbiAgICAgIGlmIChlbC5tZXRhKSB7XG4gICAgICAgIGRhdGFbY29sRGVmLmZpZWxkICsgJ19tZXRhJ10gPSBlbC5tZXRhO1xuICAgICAgfVxuICAgICAgLy8gaW52b2tlIHZhbHVlR2V0dGVyIGlmIHByb3ZpZGVkXG4gICAgICBpZiAoY29sRGVmLnZhbHVlR2V0dGVyKSB7XG4gICAgICAgIHZhbHVlID0gKGNvbERlZi52YWx1ZUdldHRlciBhcyBGdW5jdGlvbikuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgbm9kZToge30sXG4gICAgICAgICAgY29sRGVmOiBjb2xEZWZcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBydW4gdGhlIGNlbGwgcmVuZGVyZXIgd2l0aCB0aGUgb3V0cHV0IGdlbmVyYXRlZCBieSB0aGUgdmFsdWVHZXR0ZXJcbiAgICAgIGlmIChjb2xEZWYuY2VsbFJlbmRlcmVyKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB7XG4gICAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBub2RlOiB7fSxcbiAgICAgICAgICBjb2xEZWY6IGNvbERlZixcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH07XG4gICAgICAgIGVsLl92YWx1ZSA9IChjb2xEZWYuY2VsbFJlbmRlcmVyIGFzIEZ1bmN0aW9uKS5jYWxsKHRoaXMsIHBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbC5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjcmVhdGVzIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBmb3IgYSBnaXZlbiByZXN1bHQgZmllbGQuXG4gICAqXG4gICAqIEBwYXJhbSByZXN1bHRGaWVsZCAtIHRoZSByZXN1bHQgZmllbGQgKGFzIHJldHJpZXZlZCBmcm9tIC4uL3VzZXIvY29uZmlnL3Jlc3VsdC8qKSB0byBjcmVhdGUgdGhlXG4gICAqIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdCBmb3JcbiAgICpcbiAgICogQHBhcmFtIHNvcnRGaWVsZHMgLSBBcnJheSBvZiBmaWVsZHMgdG8gYmUgc29ydGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29sdW1uRGVmaW5pdGlvbihcbiAgICByZXN1bHRGaWVsZCxcbiAgICBzb3J0RmllbGRzOiBhbnlbXSA9IFtdLFxuICAgIGdyb3VwRmllbGRzOiBhbnlbXSA9IFtdLFxuICAgIHBpbm5lZEZpZWxkczogYW55W10gPSBbXSxcbiAgICBhbGlnbm1lbnRGaWVsZHM6IHtxbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdID0gW10sXG4gICAgZW5hYmxlUm93R3JvdXAgPSBmYWxzZSxcbiAgICBjYWNoZWRDb2x1bW5zID0gW10sXG4gICAgbW9kZT9cbiAgKSB7XG4gICAgbGV0IGNvbERlZiA9IDxDb2xEZWY+e307XG4gICAgY29sRGVmLmhlYWRlck5hbWUgPSByZXN1bHRGaWVsZC5sYWJlbDtcbiAgICBjb2xEZWYuZmllbGQgPSByZXN1bHRGaWVsZC5oaXRuYW1lIHx8IHJlc3VsdEZpZWxkLm5hbWU7XG4gICAgY29sRGVmLnNvcnRhYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYucmVzaXphYmxlID0gdHJ1ZTtcbiAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtidXR0b25zOiBbJ3Jlc2V0J119O1xuICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBwYXJhbXMgPT4gR3JpZFNlcnZpY2UuZXNjYXBlSHRtbChwYXJhbXMudmFsdWUpO1xuICAgIGNvbERlZi52YWx1ZUdldHRlciA9IHBhcmFtcyA9PiB7XG4gICAgICByZXR1cm4gcGFyYW1zLm5vZGUuZ3JvdXAgfHwgIXBhcmFtcy5kYXRhID8gJycgOiBwYXJhbXMuZGF0YVtjb2xEZWYuZmllbGRdO1xuICAgIH07XG4gICAgY29sRGVmLnJlZkRhdGEgPSB7cW5hbWU6IHJlc3VsdEZpZWxkLnFuYW1lIHx8ICcnfTtcblxuICAgIC8qKlxuICAgICAqIGhlYWRlckNsYXNzXG4gICAgICogYWRkIHNwZWNpYWwgaGVhZGVyIGNsYXNzIGZvciBmaWVsZHMgZnJvbSB0aGUgY29udGV4dGZvbGRlclxuICAgICAqL1xuICAgIGlmIChyZXN1bHRGaWVsZC5zZWxlY3RlZGZvcmVucmljaG1lbnQgJiYgbW9kZSAhPT0gJ0NPTU1PTicpIHtcbiAgICAgIGNvbERlZi5oZWFkZXJDbGFzcyA9ICdjb250ZXh0Zm9sZGVyJztcbiAgICB9XG4gICAgdGhpcy5hZGRDb2xEZWZBdHRyc0J5VHlwZShjb2xEZWYsIHJlc3VsdEZpZWxkKTtcbiAgICB0aGlzLmFkZENvbERlZkF0dHJzQnlGaWVsZChjb2xEZWYsIGNvbERlZi5maWVsZCk7XG5cbiAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgLi4uY29sRGVmLmZpbHRlclBhcmFtcyxcbiAgICAgIGRlYm91bmNlTXM6IDgwMCxcbiAgICAgIGNsZWFyQnV0dG9uOiBmYWxzZSxcbiAgICAgIG5ld1Jvd3NBY3Rpb246ICdrZWVwJyxcbiAgICAgIGZpbHRlck9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGlmIChjb2xEZWYuZmlsdGVyID09PSAnYWdUZXh0Q29sdW1uRmlsdGVyJykge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gY29sRGVmLnJlZkRhdGEucW5hbWUubWF0Y2goLyhec3lzb2JqZWN0XFwufF5zeXNkb2N1bWVudFxcLikodGl0bGUkfGRlc2NyaXB0aW9uJCkvKSA/IFsnZXF1YWxzJ10gOiBbXG4gICAgICAgICdjb250YWlucycsXG4gICAgICAgICdlcXVhbHMnLFxuICAgICAgICAnc3RhcnRzV2l0aCcsXG4gICAgICAgICdlbmRzV2l0aCdcbiAgICAgIF07XG5cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY29sRGVmLmZpbHRlciA9PT0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJyB8fFxuICAgICAgY29sRGVmLmZpbHRlciA9PT0gJ2FnRGF0ZUNvbHVtbkZpbHRlcidcbiAgICApIHtcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFtcbiAgICAgICAgJ2VxdWFscycsXG4gICAgICAgICdsZXNzVGhhbk9yRXF1YWwnLFxuICAgICAgICAnZ3JlYXRlclRoYW4nLFxuICAgICAgICAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICAgICAgJ2luUmFuZ2UnXG4gICAgICBdO1xuICAgIH1cblxuICAgIC8vIG1pbWV0eXBlIGZpbHRlciBzdXBwb3J0cyBvbmx5IGVxdWFscyBvcHRpb25cbiAgICBpZiAoY29sRGVmLmZpZWxkID09PSAnbWltZXR5cGUnKSB7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmRlZmF1bHRPcHRpb24gPSAnZXF1YWxzJztcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFsnZXF1YWxzJ107XG4gICAgfVxuXG4gICAgLy8gZmlsZXNpemUgZmlsdGVyIHN1cHBvcnRzIG9ubHkgaW50ZXJ2YWwgb3B0aW9uc1xuICAgIGlmIChjb2xEZWYuZmllbGQgPT09ICdmaWxlc2l6ZScpIHtcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZGVmYXVsdE9wdGlvbiA9ICdsZXNzVGhhbk9yRXF1YWwnO1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAnbGVzc1RoYW5PckVxdWFsJyxcbiAgICAgICAgJ2dyZWF0ZXJUaGFuT3JFcXVhbCcsXG4gICAgICAgICdpblJhbmdlJ1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3VsdEZpZWxkLnNvcnRhYmxlKSB7XG4gICAgICBjb2xEZWYuc29ydGFibGUgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFyZXN1bHRGaWVsZC5zZWFyY2hhYmxlKSB7XG4gICAgICBjb2xEZWYuc3VwcHJlc3NNZW51ID0gdHJ1ZTtcbiAgICAgIGNvbERlZi5maWx0ZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgc29ydEZpZWxkID0gc29ydEZpZWxkcy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gcmVzdWx0RmllbGQucW5hbWUpO1xuICAgIGlmIChzb3J0RmllbGQpIHtcbiAgICAgIGNvbERlZi5zb3J0ID0gc29ydEZpZWxkLmRpcmVjdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmIChlbmFibGVSb3dHcm91cCkge1xuICAgICAgbGV0IGdyb3VwRmllbGRJbmRleCA9IGdyb3VwRmllbGRzLmZpbmRJbmRleChcbiAgICAgICAgZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZVxuICAgICAgKTtcbiAgICAgIGlmICh+Z3JvdXBGaWVsZEluZGV4KSB7XG4gICAgICAgIGNvbERlZi5yb3dHcm91cEluZGV4ID0gZ3JvdXBGaWVsZEluZGV4O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwaW5uZWRGaWVsZCA9IHBpbm5lZEZpZWxkcy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gcmVzdWx0RmllbGQucW5hbWUpO1xuICAgIGlmIChwaW5uZWRGaWVsZCkge1xuICAgICAgY29sRGVmLnBpbm5lZCA9IHBpbm5lZEZpZWxkLnBvc2l0aW9uIHx8IHRoaXMuY29udGV4dC5kZWZhdWx0UG9zaXRpb247XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlZENvbHVtbiA9IGNhY2hlZENvbHVtbnMuZmluZChmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lKTtcbiAgICBpZiAoY2FjaGVkQ29sdW1uKSB7XG4gICAgICBjb2xEZWYud2lkdGggPSBjYWNoZWRDb2x1bW4ud2lkdGg7XG4gICAgfVxuXG4gICAgbGV0IGFsaWdubWVudEZpZWxkID0gYWxpZ25tZW50RmllbGRzLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKGFsaWdubWVudEZpZWxkICYmIGFsaWdubWVudEZpZWxkLnZhbHVlKSB7XG4gICAgICBjb2xEZWYuY2VsbFN0eWxlID0geydqdXN0aWZ5LWNvbnRlbnQnOiBhbGlnbm1lbnRGaWVsZC52YWx1ZX07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7J2p1c3RpZnktY29udGVudCc6IHJlc3VsdEZpZWxkLmFsaWdubWVudHggPyByZXN1bHRGaWVsZC5hbGlnbm1lbnR4IDogJyd9O1xuICAgIH1cblxuICAgIHJldHVybiBjb2xEZWY7XG4gIH1cblxuICAvKipcbiAgICogYWRkIHR5cGUgc3BlY2lmaWMgY29sdW1uIGRlZmluaXRpb24gYXR0cmlidXRlc1xuICAgKlxuICAgKiBAcGFyYW0gY29sRGVmIC0gdGhlIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdCB0byBiZSBleHRlbmRlZCBieSB0eXBlIHNwZWNpZmljIGF0dHJpYnV0ZXNcbiAgICogQHBhcmFtIHJlc3VsdEZpZWxkIC0gb2JqZWN0IGRlZmluaW5nIHRoZSByZXN1bHQgZmllbGRcbiAgICpcbiAgICogQHJldHVybnMgZW5yaWNoZWQgY29sdW1uIGRlZmluaXRpb24gb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgYWRkQ29sRGVmQXR0cnNCeVR5cGUoY29sRGVmOiBDb2xEZWYsIHJlc3VsdEZpZWxkKSB7XG4gICAgc3dpdGNoIChyZXN1bHRGaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICdSRUZFUkVOQ0UnOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0XG4gICAgICAgICAgICA/ICdtdWx0aUNlbGwgcm91dGVyLWxpbmstY2VsbCdcbiAgICAgICAgICAgIDogJ3JvdXRlci1saW5rLWNlbGwnO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5yZWZlcmVuY2VDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3JlZmVyZW5jZTogcmVzdWx0RmllbGQucmVmZXJlbmNlIHx8IHt9LCBjb2xEZWY6IGNvbERlZn1cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gcGFyYW0gPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgIHBhcmFtLm5vZGUuZ3JvdXAgfHwgIXBhcmFtLmRhdGEgPyAnJyA6IHBhcmFtLmRhdGFbY29sRGVmLmZpZWxkXTtcblxuICAgICAgICAgIGNvbnN0IHJlZk1ldGEgPSBwYXJhbSAmJiBwYXJhbS5kYXRhICYmIHBhcmFtLmRhdGEuX3JlZmVyZW5jZXM7XG4gICAgICAgICAgLy8gdXNlIG9iamVjdCB0eXBlIGxhYmVsIHdoZW4gbWV0YSBpcyBtaXNzaW5nIChzZWFyY2ggc3ZjIGRvZXMgbm90IHN1cHBvcnQgbWV0YSlcbiAgICAgICAgICByZXR1cm4gVXRpbGl0aWVzU2VydmljZS5pc0VtcHR5KHZhbHVlKVxuICAgICAgICAgICAgPyAnJyA6IHJlZk1ldGFcbiAgICAgICAgICAgICAgPyByZWZNZXRhW2NvbERlZi5maWVsZF1cbiAgICAgICAgICAgICAgOiB0aGlzLm1ldGFWYWx1ZUdldHRlcih2ID0+IHYudGl0bGUpKHBhcmFtKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdTVFJJTkcnOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0XG4gICAgICAgICAgPyAnbXVsdGlDZWxsIHN0cmluZydcbiAgICAgICAgICA6ICdzdHJpbmcnO1xuICAgICAgICB0aGlzLmFkZENvbERlZkF0dHJzQnlDbGFzc2lmaWNhdGlvbihjb2xEZWYsIHJlc3VsdEZpZWxkLmNsYXNzaWZpY2F0aW9uKTtcbiAgICAgICAgaWYgKHJlc3VsdEZpZWxkLnJlZmVyZW5jZSkge1xuICAgICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgICAgICA/ICdtdWx0aUNlbGwgcm91dGVyLWxpbmstY2VsbCdcbiAgICAgICAgICAgICAgOiAncm91dGVyLWxpbmstY2VsbCc7XG4gICAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICAgIENlbGxSZW5kZXJlci5saW5rQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgICAge3JlZmVyZW5jZTogcmVzdWx0RmllbGQucmVmZXJlbmNlfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLmNvbXBhcmF0b3IgPSAoYSwgYikgPT4gXy5kZWZhdWx0Q29tcGFyYXRvcihhLCBiLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdEQVRFVElNRSc6IHtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTUwO1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnRGF0ZUNvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtwYXR0ZXJuOiByZXN1bHRGaWVsZC53aXRodGltZSA/ICdlb1Nob3J0JyA6ICdlb1Nob3J0RGF0ZSd9XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtwYXR0ZXJuOiByZXN1bHRGaWVsZC53aXRodGltZSA/ICdlb1Nob3J0JyA6ICdlb1Nob3J0RGF0ZSd9XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgLi4uY29sRGVmLmZpbHRlclBhcmFtcyxcbiAgICAgICAgICBjb21wYXJhdG9yOiB0aGlzLmRhdGVDb21wYXJhdG9yKHRoaXMuY29udGV4dC5kYXRlUGlwZSwgcmVzdWx0RmllbGQud2l0aHRpbWUpLFxuICAgICAgICAgIHdpdGhUaW1lOiByZXN1bHRGaWVsZC53aXRodGltZSxcbiAgICAgICAgICBpblJhbmdlSW5jbHVzaXZlOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ09ERVNZU1RFTSc6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdDb2Rlc3lzdGVtRmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNvbElkID0gcmVzdWx0RmllbGQuZmllbGQ7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7Li4uY29sRGVmLmZpbHRlclBhcmFtcywgbXVsdGk6IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0fTtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gdGhpcy5tZXRhVmFsdWVHZXR0ZXIodiA9PiB2LmRlZmF1bHRyZXByZXNlbnRhdGlvbik7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgID8gJ211bHRpQ2VsbCBjb2Rlc3lzdGVtJ1xuICAgICAgICAgIDogJ2NvZGVzeXN0ZW0nO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ05VTUJFUic6IHtcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9ICdjb2wtbnVtYmVyJztcbiAgICAgICAgY29sRGVmLmhlYWRlckNsYXNzID0gJ2NvbC1oZWFkZXItbnVtYmVyJztcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdhZ051bWJlckNvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDE1MDtcbiAgICAgICAgY29uc3Qge3NjYWxlLCBncm91cGluZywgcGF0dGVybn0gPSByZXN1bHRGaWVsZDtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtzY2FsZSwgZ3JvdXBpbmcsIHBhdHRlcm59XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlcixcbiAgICAgICAgICB7c2NhbGUsIGdyb3VwaW5nLCBwYXR0ZXJufVxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0gey4uLmNvbERlZi5maWx0ZXJQYXJhbXMsIGluUmFuZ2VJbmNsdXNpdmUgOiB0cnVlfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPUkdBTklaQVRJT04nOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnT3JnYW5pemF0aW9uRmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNvbElkID0gcmVzdWx0RmllbGQucW5hbWU7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7Li4uY29sRGVmLmZpbHRlclBhcmFtcywgbXVsdGk6IHJlc3VsdEZpZWxkLm11bHRpc2VsZWN0fTtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5zdHJpbmdDZWxscmVuZGVyZXI7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIubXVsdGlTZWxlY3RDZWxsUmVuZGVyZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29sRGVmLnZhbHVlR2V0dGVyID0gdGhpcy5tZXRhVmFsdWVHZXR0ZXIodiA9PlxuICAgICAgICAgIHYudGl0bGUgJiYgdi5uYW1lID8gYCR7di50aXRsZX0gKCR7di5uYW1lfSlgIDogYCR7di5pZH1gXG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgID8gJ211bHRpQ2VsbCBvcmdhbml6YXRpb24nXG4gICAgICAgICAgOiAnb3JnYW5pemF0aW9uJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdCT09MRUFOJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0xpc3RGaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ2NvbC1ib29sZWFuJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci5ib29sZWFuQ2VsbFJlbmRlcmVyO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIC4uLmNvbERlZi5maWx0ZXJQYXJhbXMsXG4gICAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLmN1c3RvbUNvbnRleHQoQ2VsbFJlbmRlcmVyLmJvb2xlYW5DZWxsUmVuZGVyZXIpLFxuICAgICAgICAgIGNlbGxIZWlnaHQ6IDMwLFxuICAgICAgICAgIHZhbHVlczogW2ZhbHNlLCB0cnVlLCB1bmRlZmluZWRdLFxuICAgICAgICAgIHN1cHByZXNzTWluaUZpbHRlcjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBjb2xEZWYud2lkdGggPSAxMDA7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSAoKSA9PiAnJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb2xEZWY7XG4gIH1cblxuICAvKipcbiAgICogYWRkIGNsYXNzaWZpY2F0aW9uIHNwZWNpZmljIGNvbHVtbiBkZWZpbml0aW9uIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIGNvbERlZiAtIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcbiAgICogQHBhcmFtIGNsYXNzaWZpY2F0aW9uIC0gdGhlIGNsYXNzaWZpY2F0aW9uIHRvIGV2YWx1YXRlXG4gICAqXG4gICAqIEByZXR1cm5zIGVucmljaGVkIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRDb2xEZWZBdHRyc0J5Q2xhc3NpZmljYXRpb24oY29sRGVmOiBDb2xEZWYsIGNsYXNzaWZpY2F0aW9uKSB7XG4gICAgc3dpdGNoIChjbGFzc2lmaWNhdGlvbikge1xuICAgICAgY2FzZSAnZW1haWwnOiB7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIuZW1haWxDZWxsUmVuZGVyZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndXJsJzoge1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnVybENlbGxSZW5kZXJlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb2xEZWY7XG4gIH1cblxuICBwcml2YXRlIGFkZENvbERlZkF0dHJzQnlGaWVsZChjb2xEZWY6IENvbERlZiwgcmVzdWx0RmllbGROYW1lKSB7XG4gICAgc3dpdGNoIChyZXN1bHRGaWVsZE5hbWUpIHtcbiAgICAgIGNhc2UgJ3R5cGUnOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnTGlzdEZpbHRlckNvbXBvbmVudCc7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIudHlwZUNlbGxSZW5kZXJlcjtcbiAgICAgICAgY29sRGVmLndpZHRoID0gODA7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAncmVzLWljbyc7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSAoKSA9PiAnJztcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICAuLi5jb2xEZWYuZmlsdGVyUGFyYW1zLFxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jdXN0b21Db250ZXh0KENlbGxSZW5kZXJlci50eXBlQ2VsbFJlbmRlcmVyKSxcbiAgICAgICAgICB2YWx1ZXM6IHRoaXMuY29udGV4dC50eXBlT3B0c1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21pbWV0eXBlZ3JvdXAnOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnTGlzdEZpbHRlckNvbXBvbmVudCc7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDEwMTtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICAuLi5jb2xEZWYuZmlsdGVyUGFyYW1zLFxuICAgICAgICAgIHZhbHVlczogdGhpcy5jb250ZXh0Lm1pbWV0eXBlZ3JvdXBPcHRzXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAndmVyc2lvbic6IHtcbiAgICAgICAgY29sRGVmLndpZHRoID0gODA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZmlsZXNpemUnOiB7XG4gICAgICAgIGNvbERlZi5oZWFkZXJDbGFzcyA9ICdjb2wtaGVhZGVyLWZpbGVzaXplJztcbiAgICAgICAgY29sRGVmLmZpbHRlciA9IEZpbGVzaXplRmlsdGVyO1xuICAgICAgICBjb2xEZWYud2lkdGggPSAxMDA7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIuZmlsZXNpemVDZWxsUmVuZGVyZXI7XG4gICAgICAgIGNvbERlZi5nZXRRdWlja0ZpbHRlclRleHQgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmZpbGVzaXplQ2VsbFJlbmRlcmVyXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21Db250ZXh0KGZuYywgbWl4aW4/KSB7XG4gICAgcmV0dXJuIHBhcmFtID0+IHtcbiAgICAgIHJldHVybiBmbmMoT2JqZWN0LmFzc2lnbih7fSwgcGFyYW0sIHtjb250ZXh0OiB0aGlzLmNvbnRleHR9LCBtaXhpbikpO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbWV0YVZhbHVlR2V0dGVyKHRpdGxlRm5jOiBGdW5jdGlvbiwgbWFwRm5jOiBGdW5jdGlvbiA9IHYgPT4gdikge1xuICAgIHJldHVybiBwYXJhbXMgPT4ge1xuICAgICAgLy8gZGF0YSBjb3VsZCBiZSBlbXB0eSBvbiBmaXJzdCByZW5kZXJpbmcgYSBjZWxsIHdoaWxlIGluZmluaXRlIHNjcm9sbGluZ1xuICAgICAgaWYgKHBhcmFtcy5ub2RlLmdyb3VwIHx8ICFwYXJhbXMuZGF0YSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRvZG86IHN1cGVyIGhvdGZpeCAtIENPT0wtODk4OSAtIHNvbHZlcyBwcm9ibGVtIHdpdGggcmVzb2x2aW5nIG9mIE9SR0FOSVpBVElPTiB2YWx1ZSAodmlhIHFuYW1lKVxuICAgICAgY29uc3QgZmllbGRNZXRhID0gcGFyYW1zLmNvbERlZi5maWVsZCArICdfbWV0YSc7XG4gICAgICBjb25zdCB2YWx1ZSA9ICFwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShmaWVsZE1ldGEpXG4gICAgICAgID8gbWFwRm5jKFxuICAgICAgICAgIChwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXSAhPT0gdW5kZWZpbmVkKSA/IHBhcmFtcy5kYXRhW3BhcmFtcy5jb2xEZWYuZmllbGRdIDpcbiAgICAgICAgICBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLnJlZkRhdGEucW5hbWVdXG4gICAgICAgIClcbiAgICAgICAgOiBBcnJheS5pc0FycmF5KHBhcmFtcy5kYXRhW2ZpZWxkTWV0YV0pXG4gICAgICAgICAgPyBwYXJhbXMuZGF0YVtmaWVsZE1ldGFdLm1hcCh2ID0+IHRpdGxlRm5jKHYgfHwge30pKVxuICAgICAgICAgIDogdGl0bGVGbmMocGFyYW1zLmRhdGFbZmllbGRNZXRhXSB8fCB7fSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBkYXRlQ29tcGFyYXRvcihkYXRlUGlwZSwgd2l0aFRpbWUgPSBmYWxzZSkge1xuICAgIHJldHVybiAoYTogRGF0ZSwgYikgPT4ge1xuICAgICAgaWYgKCFiKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXR0ZXJuID0gd2l0aFRpbWUgPyAneXl5eS1NTS1kZCBISDptbScgOiAneXl5eS1NTS1kZCc7XG4gICAgICBsZXQgZGF0ZSA9IGIubGVuZ3RoID09PSAod2l0aFRpbWUgPyAxNiA6IDEwKSA/IGIgOiBkYXRlUGlwZS50cmFuc2Zvcm0oYiwgcGF0dGVybik7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBfLmRlZmF1bHRDb21wYXJhdG9yKGRhdGVQaXBlLnRyYW5zZm9ybShhLCBwYXR0ZXJuKSwgZGF0ZSkgKlxuICAgICAgICAtMVxuICAgICAgKTtcbiAgICB9O1xuICB9XG5cbn1cblxuZXhwb3J0IGNsYXNzIENlbGxSZW5kZXJlciB7XG5cbiAgc3RhdGljIHNpdHVhdGlvbiA9ICcnO1xuXG4gIHN0YXRpYyB3aW5kb3dVUkkodXJpOiBhbnkpIHtcbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCkucmVwbGFjZShuZXcgUmVnRXhwKCdeXFwvfF5cXFxcXFxcXCcpLCAnJyk7XG4gIH1cblxuICBzdGF0aWMgcmVuZGVyKHR5cGU6IHN0cmluZywgcGFyYW06IGFueSwgbmV3UGFyYW0/OiBhbnkpIHtcbiAgICByZXR1cm4gQ2VsbFJlbmRlcmVyW3R5cGUgKyAnQ2VsbFJlbmRlcmVyJ10oXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCBwYXJhbSwgbmV3UGFyYW0pXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBmaWxlc2l6ZUNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW0udmFsdWUgPyBwYXJhbS5jb250ZXh0LmZpbGVTaXplUGlwZS50cmFuc2Zvcm0ocGFyYW0udmFsdWUpIDogJyc7XG4gIH1cblxuICBzdGF0aWMgbnVtYmVyQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGlmIChwYXJhbS52YWx1ZSB8fCBwYXJhbS52YWx1ZSA9PT0gMCkge1xuICAgICAgaWYgKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSB7XG4gICAgICAgIC8vIHJhbmdlIHZhbHVlIGZyb20gc2VhcmNoIGZvcm0gdGFibGVcbiAgICAgICAgcmV0dXJuIHBhcmFtLnZhbHVlLm9wZXJhdG9yID09PVxuICAgICAgICAgIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEhcbiAgICAgICAgICA/IENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0uZ3JvdXBpbmcsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuLFxuICAgICAgICAgICAgcGFyYW0uc2NhbGVcbiAgICAgICAgICApICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChwYXJhbS52YWx1ZS5vcGVyYXRvcikgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuc2Vjb25kVmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0uZ3JvdXBpbmcsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuLFxuICAgICAgICAgICAgcGFyYW0uc2NhbGVcbiAgICAgICAgICApXG4gICAgICAgICAgOiBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwocGFyYW0udmFsdWUub3BlcmF0b3IpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0uZ3JvdXBpbmcsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuLFxuICAgICAgICAgICAgcGFyYW0uc2NhbGVcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICBwYXJhbS52YWx1ZSxcbiAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgIHBhcmFtLmdyb3VwaW5nLFxuICAgICAgICAgIHBhcmFtLnBhdHRlcm4sXG4gICAgICAgICAgcGFyYW0uc2NhbGVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBudW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICB2YWx1ZSxcbiAgICBjb250ZXh0LFxuICAgIGdyb3VwaW5nPyxcbiAgICBwYXR0ZXJuPyxcbiAgICBzY2FsZT9cbiAgKSB7XG4gICAgcmV0dXJuIGNvbnRleHQubnVtYmVyUGlwZS50cmFuc2Zvcm0oXG4gICAgICB2YWx1ZSxcbiAgICAgIGdyb3VwaW5nLFxuICAgICAgcGF0dGVybixcbiAgICAgIHNjYWxlXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBzdHJpbmdDZWxscmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgcmV0dXJuIEdyaWRTZXJ2aWNlLmVzY2FwZUh0bWwocGFyYW0udmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIHR5cGVDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHZhbCA9ICcnO1xuICAgIGlmIChwYXJhbS52YWx1ZSkge1xuICAgICAgbGV0IG9iamVjdFR5cGUgPSBwYXJhbS5jb250ZXh0LnN5c3RlbS5nZXRPYmplY3RUeXBlKHBhcmFtLnZhbHVlKTtcbiAgICAgIGlmICghb2JqZWN0VHlwZSkge1xuICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5pY29uQ2VsbFJlbmRlcmVyKFxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBwYXJhbSwge3ZhbHVlOiBvYmplY3RUeXBlfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzdGF0aWMgaWNvbkNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gJyc7XG4gICAgaWYgKHBhcmFtLnZhbHVlICYmIChwYXJhbS52YWx1ZS51cmwgfHwgcGFyYW0udmFsdWUuaWNvbklkKSkge1xuICAgICAgbGV0IGljb25VcmwgPSBwYXJhbS52YWx1ZS51cmxcbiAgICAgICAgPyBwYXJhbS5jb250ZXh0LmJhc2VIcmVmICsgcGFyYW0udmFsdWUudXJsXG4gICAgICAgIDogcGFyYW0uY29udGV4dC5iYWNrZW5kLmdldEJhc2VXaXRoQ29udGV4dChwYXJhbS5jb250ZXh0LmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSkgK1xuICAgICAgICAnL3VpL2ljb24vJyArXG4gICAgICAgIHBhcmFtLnZhbHVlLmljb25JZCArXG4gICAgICAgICcuc3ZnJztcbiAgICAgIGxldCBsYWJlbCA9IHBhcmFtLnZhbHVlLmxhYmVsO1xuICAgICAgdmFsID0gYDxpbWcgY2xhc3M9XCJvYmplY3QtdHlwZVwiIHNyYz1cIiR7aWNvblVybH1cIiB0aXRsZT1cIiR7bGFiZWx9XCI+PHNwYW4gY2xhc3M9XCJvYmplY3QtdHlwZS1sYWJlbFwiPiR7bGFiZWx9PC9zcGFuPmA7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzdGF0aWMgZW1haWxDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtLnZhbHVlXG4gICAgICA/IGA8YSBocmVmPVwibWFpbHRvOiR7cGFyYW0udmFsdWV9XCI+JHtHcmlkU2VydmljZS5lc2NhcGVIdG1sKFxuICAgICAgICBwYXJhbS52YWx1ZVxuICAgICAgKX08L2E+YFxuICAgICAgOiAnJztcbiAgfVxuXG4gIHN0YXRpYyB1cmxDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtLnZhbHVlXG4gICAgICA/IGA8YSB0YXJnZXQ9XCJfYmxhbmsgXCIgaHJlZj1cIiR7cGFyYW0udmFsdWV9XCI+JHtHcmlkU2VydmljZS5lc2NhcGVIdG1sKFxuICAgICAgICBwYXJhbS52YWx1ZVxuICAgICAgKX08L2E+YFxuICAgICAgOiAnJztcbiAgfVxuXG4gIHN0YXRpYyBkYXRlVGltZUNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIGlmIChwYXJhbS52YWx1ZS5vcGVyYXRvcikge1xuICAgICAgICAvLyByYW5nZSB2YWx1ZSBmcm9tIHNlYXJjaCBmb3JtIHRhYmxlXG4gICAgICAgIHJldHVybiBwYXJhbS52YWx1ZS5vcGVyYXRvciA9PT1cbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxfSU5DTFVERV9CT1RIXG4gICAgICAgICAgPyBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVyblxuICAgICAgICAgICkgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLnNlY29uZFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm5cbiAgICAgICAgICApXG4gICAgICAgICAgOiBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwocGFyYW0udmFsdWUub3BlcmF0b3IpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKFxuICAgICAgICAgICAgcGFyYW0udmFsdWUuZmlyc3RWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICBwYXJhbS52YWx1ZSxcbiAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgIHBhcmFtLnBhdHRlcm5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkYXRlVGltZUNlbGxSZW5kZXJlclRlbXBsYXRlKHZhbHVlLCBjb250ZXh0LCBwYXR0ZXJuKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwibm8tdmFsdWVcIj4ke2NvbnRleHQudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uaW5wdXQubnVsbCcpfTwvc3Bhbj5gO1xuICAgIH1cbiAgICByZXR1cm4gYDxzcGFuIGRhdGU9XCIke3ZhbHVlfVwiPiR7Y29udGV4dC5kYXRlUGlwZS50cmFuc2Zvcm0oXG4gICAgICB2YWx1ZSxcbiAgICAgIHBhdHRlcm5cbiAgICApfTwvc3Bhbj5gO1xuICB9XG5cbiAgc3RhdGljIGJvb2xlYW5DZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHZhbCA9IGA8cGF0aCBjbGFzcz1cIm91dGxpbmVcIiBkPVwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0gNSwxOSBMIDE5LDVcIiBzdHJva2U9XCJyZ2JhKDAsIDAsIDAsIDAuNTQpXCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5gO1xuXG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSB0cnVlIHx8IHBhcmFtLnZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgIHZhbCA9IGA8cGF0aCBjbGFzcz1cIm91dGxpbmVcIiBkPVwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHpcIi8+XG4gICAgICAgICAgICAgPHBvbHlsaW5lIGNsYXNzPVwiY2hlY2ttYXJrXCIgcG9pbnRzPVwiNi4zLDExLjggNy44LDEwLjMgMTAuOCwxMy4zIDE2LjMsNy44IDE3LjgsOS4zIDEwLjgsMTYuMyA2LjMsMTEuOFwiLz5gO1xuICAgIH0gZWxzZSBpZiAocGFyYW0udmFsdWUgPT09IGZhbHNlIHx8IHBhcmFtLnZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgICB2YWwgPSBgPHBhdGggY2xhc3M9XCJvdXRsaW5lXCIgZD1cIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCIvPmA7XG4gICAgfVxuICAgIHJldHVybiBgPHN2ZyBjbGFzcz1cImNoZWNrYm94XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4ke3ZhbH08L3N2Zz5gO1xuICB9XG5cbiAgc3RhdGljIG11bHRpU2VsZWN0Q2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIChBcnJheS5pc0FycmF5KHBhcmFtLnZhbHVlKSA/IHBhcmFtLnZhbHVlIDogW3BhcmFtLnZhbHVlXSkuZm9yRWFjaChcbiAgICAgICAgdmFsdWUgPT4ge1xuICAgICAgICAgIHZhbCArPSBgPGRpdiBjbGFzcz1cImNoaXBcIj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwodmFsdWUpfTwvZGl2PmA7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzdGF0aWMgbGlua0NlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gJyc7XG4gICAgaWYgKHBhcmFtLnZhbHVlKSB7XG4gICAgICAoQXJyYXkuaXNBcnJheShwYXJhbS52YWx1ZSkgPyBwYXJhbS52YWx1ZSA6IFtwYXJhbS52YWx1ZV0pLmZvckVhY2goXG4gICAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgICBjb25zdCBxdWVyeSA9IHtcbiAgICAgICAgICAgIHR5cGVzOiBbcGFyYW0ucmVmZXJlbmNlLnR5cGVdLFxuICAgICAgICAgICAgZmlsdGVyczoge31cbiAgICAgICAgICB9O1xuICAgICAgICAgIHF1ZXJ5LmZpbHRlcnNbcGFyYW0ucmVmZXJlbmNlLmVsZW1lbnRdID0ge1xuICAgICAgICAgICAgbzogJ2VxJyxcbiAgICAgICAgICAgIHYxOiB2YWx1ZVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgbGluayA9IFV0aWxzLmJ1aWxkVXJpKCdyZXN1bHQnLCB7XG4gICAgICAgICAgICBxdWVyeTogZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHF1ZXJ5KSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWwgKz0gYDxkaXYgY2xhc3M9XCJjaGlwXCI+YCArXG4gICAgICAgICAgYDxhIGNsYXNzPVwibGluayByb3V0ZXItbGlua1wiIGhyZWY9XCIke2xpbmt9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgb25jbGljaz1cInJldHVybiBmYWxzZTtcIj5gICtcbiAgICAgICAgICBgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPmAgK1xuICAgICAgICAgIGA8cGF0aCBkPVwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggYCArXG4gICAgICAgICAgYDEzaDh2LTJIOHYyem05LTZoLTR2MS45aDRjMS43MSAwIDMuMSAxLjM5IDMuMSAzLjFzLTEuMzkgMy4xLTMuMSAzLjFoLTRWMTdoNGMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXpcIj48L3BhdGg+YCArXG4gICAgICAgICAgYDwvc3ZnPjwvYT48c3Bhbj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwodmFsdWUpfTwvc3Bhbj48L2Rpdj5gO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3RhdGljIHJlZmVyZW5jZUNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdGV4dCA9ICcnO1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW0uZGF0YSA/IHBhcmFtLmRhdGFbcGFyYW0uY29sRGVmLmZpZWxkXSA6ICcnO1xuICAgIGNvbnN0IHR5cGUgPSBwYXJhbS5jb250ZXh0LnN5c3RlbS5nZXRPYmplY3RUeXBlKHBhcmFtLnJlZmVyZW5jZS50eXBlKTtcbiAgICBpZiAoIVV0aWxpdGllc1NlcnZpY2UuaXNFbXB0eSh2YWx1ZSkgJiYgdHlwZSkge1xuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKS5mb3JFYWNoKCh2YWwsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSAnb2JqZWN0LycgKyB2YWwgKyAnP3R5cGU9JyArIHBhcmFtLnJlZmVyZW5jZS50eXBlO1xuICAgICAgICBjb25zdCBpY29uVXJsID1cbiAgICAgICAgICBwYXJhbS5jb250ZXh0LmJhY2tlbmQuZ2V0QmFzZVdpdGhDb250ZXh0KHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpKSArXG4gICAgICAgICAgJy91aS9pY29uLycgK1xuICAgICAgICAgIHR5cGUuaWNvbklkICtcbiAgICAgICAgICAnLnN2Zyc7XG4gICAgICAgIGxldCB0aXRsZSA9IEFycmF5LmlzQXJyYXkocGFyYW0udmFsdWUpXG4gICAgICAgICAgPyBwYXJhbS52YWx1ZVtpbmRleF1cbiAgICAgICAgICA6IHBhcmFtLnZhbHVlO1xuXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGlzIG5vdCBhbGxvd2VkIHRvIHNlZSB0aGUgcmVmZXJlbmNlIG9iamVjdCBvciB0aGUgb2JqZWN0IHdhcyBkZWxldGVkLCB3ZSBkb24ndCBzaG93IHRoZSBsaW5rLlxuICAgICAgICB0ZXh0ICs9IGA8ZGl2IGNsYXNzPVwiY2hpcFwiPmAgK1xuICAgICAgICAgICghdGl0bGUgPyAnJyA6IGA8YSBjbGFzcz1cImxpbmsgcm91dGVyLWxpbmtcIiBocmVmPVwiJHtsaW5rfVwiIHRhcmdldD1cIl9ibGFua1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCI+YCArXG4gICAgICAgICAgICBgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPmAgK1xuICAgICAgICAgICAgYDxwYXRoIGQ9XCJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCBgICtcbiAgICAgICAgICAgIGAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCI+PC9wYXRoPmAgK1xuICAgICAgICAgICAgYDwvc3ZnPjwvYT5gKSArXG5cbiAgICAgICAgYDxpbWcgY2xhc3M9XCJ0eXBlLWljb25cIiBzcmM9XCIke2ljb25Vcmx9XCIgdGl0bGU9XCIke3R5cGUubGFiZWx9XCI+YCArXG4gICAgICAgIGA8c3Bhbj4ke0dyaWRTZXJ2aWNlLmVzY2FwZUh0bWwodGl0bGUgfHwgdHlwZS5sYWJlbCl9PC9zcGFuPjwvZGl2PmA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dCB8fCBwYXJhbS52YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBub1ZhbHVlUmVuZGVyZXIocGFyYW0pIHtcbiAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwibm8tdmFsdWVcIj4ke3BhcmFtLmNvbnRleHQudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0uaW5wdXQubnVsbCcpfTwvc3Bhbj5gO1xuICB9XG5cbn1cbiJdfQ==
721
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUF3QyxDQUFDLEVBQXlDLE1BQU0seUJBQXlCLENBQUM7QUFDekgsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEVBS0wsS0FBSyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBRWIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJEQUEyRCxDQUFDOzs7OztBQUl6RixNQUFNLE9BQU8sV0FBVztJQUd0QixJQUFJLGVBQWU7UUFDakIsT0FBTztZQUNMLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUM5RSxtQkFBbUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM5QixPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7b0JBQzlFLENBQUMs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QU0sQ0FBQyxlQUFlLENBQUMsS0FBSztRQUMxQixPQUFPLDBCQUEwQixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO0lBQ2xHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTaW1wbGVGaWx0ZXIsIENvbERlZiwgQ3N2RXhwb3J0UGFyYW1zLCBfLCBSb3dOb2RlLCBDb2x1bW4sIEdyaWRPcHRpb25zLCBJUm93Tm9kZX0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudEVuYWlvLCBTZWFyY2hRdWVyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7RmlsZVNpemVQaXBlfSBmcm9tICcuLi9waXBlcy9maWxlc2l6ZS5waXBlJztcbmltcG9ydCB7TG9jYWxlTnVtYmVyUGlwZX0gZnJvbSAnLi4vcGlwZXMvbG9jYWxlLW51bWJlci5waXBlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgU3lzdGVtU2VydmljZSxcbiAgQmFja2VuZFNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBFb1VzZXIsXG4gIFV0aWxzLFxuICBSYW5nZVZhbHVlLFxuICBTZWFyY2hGaWx0ZXIsXG4gIFNlYXJjaFN0YXRlXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91dGlsJztcbmltcG9ydCB7RmlsZXNpemVGaWx0ZXJ9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvZmlsZXNpemUtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0FnR3JpZEFuZ3VsYXJ9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdyaWRTZXJ2aWNlIHtcbiAgY29udGV4dDogYW55O1xuXG4gIGdldCBjc3ZFeHBvcnRQYXJhbXMoKTogQ3N2RXhwb3J0UGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZU5hbWU6ICdleHBvcnQnLFxuICAgICAgY29sdW1uU2VwYXJhdG9yOiB0aGlzLmNvbnRleHQ/Lm51bWJlclBpcGUuZGVjaW1hbFNlcGFyYXRvciA9PT0gJywnID8gJzsnIDogJywnLFxuICAgICAgcHJvY2Vzc0NlbGxDYWxsYmFjazogKHBhcmFtcykgPT4ge1xuICAgICAgICByZXR1cm4gKHBhcmFtcy5jb2x1bW4uZ2V0Q29sRGVmKCkuY2VsbENsYXNzIGFzIGFueSB8fCAnJykuaW5jbHVkZXMoJ2NvbC1udW1iZXInKVxuICAgICAgICAgID8gKHBhcmFtcy5jb2x1bW4uZ2V0Q29sRGVmKCkuY2VsbFJlbmRlcmVyIGFzIGFueSkocGFyYW1zKS5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFxgICsgdGhpcy5jb250ZXh0Py5udW1iZXJQaXBlLnNlcGFyYXRvciwgJ2cnKSwgJycpIC8vIHJlbW92ZWQgZ3JvdXBpbmdcbiAgICAgICAgICA6IHBhcmFtcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGVzY2FwZUh0bWwoc3RyKSB7XG4gICAgc3RyID0gc3RyID8gc3RyIDogJyc7XG4gICAgY29uc3QgZW50aXR5TWFwID0ge1xuICAgICAgJyYnOiAnJmFtcDsnLFxuICAgICAgJzwnOiAnJmx0OycsXG4gICAgICAnPic6ICcmZ3Q7JyxcbiAgICAgICdcIic6ICcmcXVvdDsnLFxuICAgICAgJ1xcJyc6ICcmIzM5OycsXG4gICAgICAnLyc6ICcmI3gyRjsnXG4gICAgfTtcbiAgICByZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZSgvWyY8PlwiJ1xcL10vZywgcyA9PiBlbnRpdHlNYXBbc10pO1xuICB9XG5cbiAgc3RhdGljIHFuYW1lRm9ybWF0dGVyKHFuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKHFuYW1lIHx8ICcnKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ3N5c29iamVjdC58c3lzZG9jdW1lbnQuJyksICcnKTtcbiAgfVxuXG4gIHN0YXRpYyBxbmFtZU1hdGNoKHFuYW1lOiBzdHJpbmcsIHFuYW1lMjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKHFuYW1lKSA9PT0gR3JpZFNlcnZpY2UucW5hbWVGb3JtYXR0ZXIocW5hbWUyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW06IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICB0cmFuc2xhdGUsXG4gICAgICBzeXN0ZW0sXG4gICAgICBiYWNrZW5kLFxuICAgICAgcm91dGVyLFxuICAgICAgZmlsZVNpemVQaXBlOiBuZXcgRmlsZVNpemVQaXBlKHRyYW5zbGF0ZSksXG4gICAgICBudW1iZXJQaXBlOiBuZXcgTG9jYWxlTnVtYmVyUGlwZSh0cmFuc2xhdGUpLFxuICAgICAgZGF0ZVBpcGU6IG5ldyBMb2NhbGVEYXRlUGlwZSh0cmFuc2xhdGUpLFxuICAgICAgY3I6IENlbGxSZW5kZXJlcixcbiAgICAgIGJhc2VIcmVmOiBFbnZpcm9ubWVudEVuYWlvLmlzV2ViRW52aXJvbm1lbnQoKSA/IHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgOiAnLi8nLFxuICAgICAgbWltZXR5cGVncm91cE9wdHM6IE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5Lk1JTUVUWVBFR1JPVVBfQlVDS0VUUykubWFwKGsgPT4gay50b0xvd2VyQ2FzZSgpKSxcbiAgICAgIHR5cGVPcHRzOiBbXVxuICAgIH07XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnVzZXIkLnN1YnNjcmliZShcbiAgICAgICh1c2VyOiBFb1VzZXIpID0+XG4gICAgICAgICh0aGlzLmNvbnRleHQuZGVmYXVsdFBvc2l0aW9uID1cbiAgICAgICAgICB1c2VyLnVpRGlyZWN0aW9uID09PSAncnRsJyA/ICdyaWdodCcgOiAnbGVmdCcpXG4gICAgKTtcblxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5xdWVyeVN0YXRlJC5zdWJzY3JpYmUoKHN0YXRlOiBTZWFyY2hTdGF0ZSkgPT4gdGhpcy51cGRhdGVDb250ZXh0KEFycmF5LmZyb20oc3RhdGUuYWdncmVnYXRpb25zLnR5cGUua2V5cygpKSkpO1xuICB9XG5cbiAgLy8gY29weSBjb250ZW50IG9mIGVpdGhlciByb3cgb3IgdGFibGUgY2VsbCB0byBjbGlwYm9hcmRcbiAgcHVibGljIGNvcHlUb0NsaXBib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCwgZ3JpZDogQWdHcmlkQW5ndWxhciwgZ3JpZE9wdGlvbnM/OiBHcmlkT3B0aW9ucykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCB2aWV3cG9ydCA9IGdyaWQuYXBpWydncmlkQm9keUN0cmwnXS5ib2R5U2Nyb2xsRmVhdHVyZS5jZW50ZXJSb3dzQ3RybC5lVmlld3BvcnQ7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHZpZXdwb3J0LnNjcm9sbExlZnQ7XG5cbiAgICBjb25zdCBmb2N1c2VkQ2VsbCA9IGdyaWQuYXBpLmdldEZvY3VzZWRDZWxsKCk7XG4gICAgY29uc3Qgcm93czogSVJvd05vZGVbXSA9IGV2ZW50LnNoaWZ0S2V5ID8gZ3JpZC5hcGkuZ2V0U2VsZWN0ZWROb2RlcygpIDogW2dyaWQuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgoZm9jdXNlZENlbGwucm93SW5kZXgpXTtcbiAgICBjb25zdCBjb2xzOiBDb2x1bW5bXSA9IGV2ZW50LnNoaWZ0S2V5ID8gZ3JpZC5hcGkuZ2V0QWxsR3JpZENvbHVtbnMoKS5maWx0ZXIoKGM6IGFueSkgPT4gYy5jb2xJZCAhPT0gJ19fc2VsZWN0aW9uRmllbGQnKSA6IFtmb2N1c2VkQ2VsbC5jb2x1bW5dO1xuICAgIGNvbnN0IGdldENlbGwgPSAoY29sLCByb3cpID0+IHZpZXdwb3J0LnF1ZXJ5U2VsZWN0b3IoYGRpdltyb3ctaW5kZXg9XCIke3Jvdy5yb3dJbmRleH1cIl0gW2NvbC1pZD1cIiR7Y29sLmNvbElkfVwiXWApO1xuICAgIGNvbnN0IHZhbHVlID0gKGNvbCwgcm93KSA9PiB7XG4gICAgICBncmlkLmFwaS5lbnN1cmVDb2x1bW5WaXNpYmxlKGNvbCk7XG4gICAgICBjb25zdCBjZWxsID0gZ2V0Q2VsbChjb2wsIHJvdyk7XG4gICAgICBpZiAoIWNlbGwpIHJldHVybiAnJztcbiAgICAgIGNvbnN0IGNoaXBzID0gY2VsbC5xdWVyeVNlbGVjdG9yQWxsKCcuY2hpcCcpIHx8IFtdO1xuICAgICAgY29uc3QgdmFsID0gQXJyYXkuZnJvbShjaGlwcy5sZW5ndGggPyBjaGlwcyA6IFtjZWxsXSkubWFwKChjOiBhbnkpID0+IChjICYmIGMudGV4dENvbnRlbnQgJiYgYy50ZXh0Q29udGVudC50cmltKCkpIHx8ICcnKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdmFsLnRvU3RyaW5nKCkgfHwgZ3JpZC5hcGkuZ2V0VmFsdWUoY29sLCByb3cpO1xuICAgICAgcmV0dXJuICFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcbicsICdnJyksICcgJykgOiAnJztcbiAgICB9O1xuXG4gICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSBjb250ZW50ICs9IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gY29sLmdldENvbERlZigpLmhlYWRlck5hbWUpLmpvaW4oJ1x0JykgKyAnXFxuJztcbiAgICBjb250ZW50ICs9IHJvd3MubWFwKChyb3cpID0+IGNvbHMubWFwKChjb2w6IENvbHVtbikgPT4gdmFsdWUoY29sLCByb3cpKS5qb2luKCdcdCcpKS5qb2luKCdcXG4nKTtcblxuICAgIGdyaWQuYXBpLmVuc3VyZUNvbHVtblZpc2libGUoZm9jdXNlZENlbGwuY29sdW1uKTtcbiAgICB2aWV3cG9ydC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT5cbiAgICAgICAgcm93cy5tYXAoKHJvdykgPT5cbiAgICAgICAgICBjb2xzLm1hcCgoY29sOiBDb2x1bW4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGNvbCwgcm93KTtcbiAgICAgICAgICAgIGNlbGwgJiYgY2VsbC5jbGFzc0xpc3QuYWRkKCdjb3B5LWNlbGwnKTtcbiAgICAgICAgICAgIGNlbGwgJiYgc2V0VGltZW91dCgoKSA9PiBjZWxsICYmIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY29weS1jZWxsJyksIDQwMDApO1xuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAxMDBcbiAgICApO1xuXG4gICAgLy8gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCk7IC8vIG9ubHkgaWYgY2xpZW50IHJ1bnMgaHR0cHNcbiAgICBjb25zdCB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgdGV4dEFyZWEudmFsdWUgPSBjb250ZW50O1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dEFyZWEpO1xuICAgIHRleHRBcmVhLnNlbGVjdCgpO1xuICAgIGNvbnN0IGNvcHlTdWNjZXNzID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRBcmVhKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuTGluayh1cmk6IHN0cmluZywgbmV3VGFiID0gZmFsc2UpIHtcbiAgICBpZiAobmV3VGFiKSB7XG4gICAgICB3aW5kb3cub3BlbihDZWxsUmVuZGVyZXIud2luZG93VVJJKHVyaSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmb3JjZSByZWxvYWQgaW4gY2FzZSBvZiBzYW1lIFVSTFxuICAgICAgY29uc3QgZXh0cmFzID0gQ2VsbFJlbmRlcmVyLndpbmRvd1VSSSh0aGlzLnJvdXRlci51cmwpID09PSBDZWxsUmVuZGVyZXIud2luZG93VVJJKHVyaSkgPyBgJHt1cmkuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/J31yZWxvYWQ9dHJ1ZWAgOiAnJztcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJpICsgZXh0cmFzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93SW5kZXgoZWwsIHBhcmVudENsYXNzOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZWwgJiYgIWVsLmNsYXNzTGlzdC5jb250YWlucyhwYXJlbnRDbGFzcylcbiAgICAgID8gZWwuZ2V0QXR0cmlidXRlKCdyb3ctaW5kZXgnKVxuICAgICAgICA/IHBhcnNlSW50KGVsLmdldEF0dHJpYnV0ZSgncm93LWluZGV4JyksIDEwKVxuICAgICAgICA6IHRoaXMuZ2V0Um93SW5kZXgoZWwucGFyZW50RWxlbWVudCwgcGFyZW50Q2xhc3MpXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um91dGVyTGluayhlbCwgcGFyZW50Q2xhc3MpIHtcbiAgICByZXR1cm4gZWwgJiYgIWVsLmNsYXNzTGlzdC5jb250YWlucyhwYXJlbnRDbGFzcylcbiAgICAgID8gZWwubG9jYWxOYW1lID09PSAnYScgJiYgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdyb3V0ZXItbGluaycpXG4gICAgICAgID8gZWxcbiAgICAgICAgOiB0aGlzLmdldFJvdXRlckxpbmsoZWwucGFyZW50RWxlbWVudCwgcGFyZW50Q2xhc3MpXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb3BlblJvdXRlckxpbmsoZXZlbnQ6IE1vdXNlRXZlbnQsIHBhcmVudENsYXNzOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRSb3V0ZXJMaW5rKFxuICAgICAgZXZlbnQudGFyZ2V0LFxuICAgICAgcGFyZW50Q2xhc3NcbiAgICApIGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICAgIGlmIChsaW5rICYmIGxpbmsuaHJlZikge1xuICAgICAgdGhpcy5vcGVuTGluayhsaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpLCBldmVudC5jdHJsS2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gey4uLnRoaXMuY29udGV4dCwgY291bnQ6IDAsIHJvd0NvdW50OiAwfTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDb250ZXh0KHR5cGVPcHRzOiBzdHJpbmdbXSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbnRleHQsIHt0eXBlT3B0czogKHR5cGVPcHRzICYmIHR5cGVPcHRzLmxlbmd0aCA/IHR5cGVPcHRzIDogdGhpcy5zeXN0ZW0uZ2V0T2JqZWN0VHlwZXMoKS5tYXAobyA9PiBvLnFuYW1lKSl9LCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5EZWZzKFxuICAgIGVsZW1lbnRzOiBhbnlbXSxcbiAgICBzb3J0b3JkZXI6IGFueVtdID0gW10sXG4gICAgZ3JvdXBvcmRlcjogYW55W10gPSBbXSxcbiAgICBwaW5uZWQ6IGFueVtdID0gW10sXG4gICAgYWxpZ25tZW50eDoge3FuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd9W10gPSBbXSxcbiAgICBlbmFibGVSb3dHcm91cCA9IHRydWUsXG4gICAgY2FjaGVkQ29sdW1ucyA9IFtdLFxuICAgIG1vZGU/XG4gICk6IENvbERlZltdIHtcbiAgICByZXR1cm4gZWxlbWVudHMubWFwKGYgPT5cbiAgICAgIHRoaXMuZ2V0Q29sdW1uRGVmaW5pdGlvbihcbiAgICAgICAgZixcbiAgICAgICAgc29ydG9yZGVyLFxuICAgICAgICBncm91cG9yZGVyLFxuICAgICAgICBwaW5uZWQsXG4gICAgICAgIGFsaWdubWVudHgsXG4gICAgICAgIGVuYWJsZVJvd0dyb3VwLFxuICAgICAgICBjYWNoZWRDb2x1bW5zLFxuICAgICAgICBtb2RlXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSB2aXN1YWwgb3V0cHV0IG9mIGZvcm0gZWxlbWVudHMgYmFzZWQgb24gaXRzIHR5cGUgZXRjLiAoc2VlIEluZGV4ZGF0YVN1bW1hcnlDb21wb25lbnQgZm9yIHVzYWdlIGRldGFpbHMpXG4gICAqIEBwYXJhbSBlbGVtZW50cyAtIFRoZSBmb3JtIGVsZW1lbnRzIHRvIGJlIHJlbmRlcmVkXG4gICAqIEByZXR1cm5zIFRoZSByZW5kZXJlZCBIVE1MIGZvciB0aGUgZ2l2ZW4gZWxlbWVudHNcbiAgICovXG4gIHB1YmxpYyBnZXRSZXNvbHZlZERlZnMoZWxlbWVudHM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLm1hcChlbCA9PiB7XG4gICAgICBsZXQgY29sRGVmOiBDb2xEZWYgPSB0aGlzLmdldENvbHVtbkRlZmluaXRpb24oZWwpO1xuICAgICAgbGV0IHZhbHVlID0gZWwudmFsdWU7XG4gICAgICBsZXQgZGF0YSA9IHt9O1xuICAgICAgZGF0YVtjb2xEZWYuZmllbGRdID0gdmFsdWU7XG4gICAgICBpZiAoZWwubWV0YSkge1xuICAgICAgICBkYXRhW2NvbERlZi5maWVsZCArICdfbWV0YSddID0gZWwubWV0YTtcbiAgICAgIH1cbiAgICAgIC8vIGludm9rZSB2YWx1ZUdldHRlciBpZiBwcm92aWRlZFxuICAgICAgaWYgKGNvbERlZi52YWx1ZUdldHRlcikge1xuICAgICAgICB2YWx1ZSA9IChjb2xEZWYudmFsdWVHZXR0ZXIgYXMgRnVuY3Rpb24pLmNhbGwodGhpcywge1xuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIG5vZGU6IHt9LFxuICAgICAgICAgIGNvbERlZjogY29sRGVmXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gcnVuIHRoZSBjZWxsIHJlbmRlcmVyIHdpdGggdGhlIG91dHB1dCBnZW5lcmF0ZWQgYnkgdGhlIHZhbHVlR2V0dGVyXG4gICAgICBpZiAoY29sRGVmLmNlbGxSZW5kZXJlcikge1xuICAgICAgICBsZXQgcGFyYW1zID0ge1xuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgbm9kZToge30sXG4gICAgICAgICAgY29sRGVmOiBjb2xEZWYsXG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9O1xuICAgICAgICBlbC5fdmFsdWUgPSAoY29sRGVmLmNlbGxSZW5kZXJlciBhcyBGdW5jdGlvbikuY2FsbCh0aGlzLCBwYXJhbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwuX3ZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZWw7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlcyB0aGUgY29sdW1uIGRlZmluaXRpb24gZm9yIGEgZ2l2ZW4gcmVzdWx0IGZpZWxkLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzdWx0RmllbGQgLSB0aGUgcmVzdWx0IGZpZWxkIChhcyByZXRyaWV2ZWQgZnJvbSAuLi91c2VyL2NvbmZpZy9yZXN1bHQvKikgdG8gY3JlYXRlIHRoZVxuICAgKiBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3QgZm9yXG4gICAqXG4gICAqIEBwYXJhbSBzb3J0RmllbGRzIC0gQXJyYXkgb2YgZmllbGRzIHRvIGJlIHNvcnRlZFxuICAgKi9cbiAgcHVibGljIGdldENvbHVtbkRlZmluaXRpb24oXG4gICAgcmVzdWx0RmllbGQsXG4gICAgc29ydEZpZWxkczogYW55W10gPSBbXSxcbiAgICBncm91cEZpZWxkczogYW55W10gPSBbXSxcbiAgICBwaW5uZWRGaWVsZHM6IGFueVtdID0gW10sXG4gICAgYWxpZ25tZW50RmllbGRzOiB7cW5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZ31bXSA9IFtdLFxuICAgIGVuYWJsZVJvd0dyb3VwID0gZmFsc2UsXG4gICAgY2FjaGVkQ29sdW1ucyA9IFtdLFxuICAgIG1vZGU/XG4gICkge1xuICAgIGxldCBjb2xEZWYgPSA8Q29sRGVmPnt9O1xuICAgIGNvbERlZi5oZWFkZXJOYW1lID0gcmVzdWx0RmllbGQubGFiZWw7XG4gICAgY29sRGVmLmZpZWxkID0gcmVzdWx0RmllbGQuaGl0bmFtZSB8fCByZXN1bHRGaWVsZC5uYW1lO1xuICAgIGNvbERlZi5zb3J0YWJsZSA9IHRydWU7XG4gICAgY29sRGVmLnJlc2l6YWJsZSA9IHRydWU7XG4gICAgY29sRGVmLmZpbHRlciA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7YnV0dG9uczogWydyZXNldCddfTtcbiAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gcGFyYW1zID0+IEdyaWRTZXJ2aWNlLmVzY2FwZUh0bWwocGFyYW1zLnZhbHVlKTtcbiAgICBjb2xEZWYudmFsdWVHZXR0ZXIgPSBwYXJhbXMgPT4ge1xuICAgICAgcmV0dXJuIHBhcmFtcy5ub2RlLmdyb3VwIHx8ICFwYXJhbXMuZGF0YSA/ICcnIDogcGFyYW1zLmRhdGFbY29sRGVmLmZpZWxkXTtcbiAgICB9O1xuICAgIGNvbERlZi5yZWZEYXRhID0ge3FuYW1lOiByZXN1bHRGaWVsZC5xbmFtZSB8fCAnJ307XG5cbiAgICAvKipcbiAgICAgKiBoZWFkZXJDbGFzc1xuICAgICAqIGFkZCBzcGVjaWFsIGhlYWRlciBjbGFzcyBmb3IgZmllbGRzIGZyb20gdGhlIGNvbnRleHRmb2xkZXJcbiAgICAgKi9cbiAgICBpZiAocmVzdWx0RmllbGQuc2VsZWN0ZWRmb3JlbnJpY2htZW50ICYmIG1vZGUgIT09ICdDT01NT04nKSB7XG4gICAgICBjb2xEZWYuaGVhZGVyQ2xhc3MgPSAnY29udGV4dGZvbGRlcic7XG4gICAgfVxuICAgIHRoaXMuYWRkQ29sRGVmQXR0cnNCeVR5cGUoY29sRGVmLCByZXN1bHRGaWVsZCk7XG4gICAgdGhpcy5hZGRDb2xEZWZBdHRyc0J5RmllbGQoY29sRGVmLCBjb2xEZWYuZmllbGQpO1xuXG4gICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtcbiAgICAgIC4uLmNvbERlZi5maWx0ZXJQYXJhbXMsXG4gICAgICBkZWJvdW5jZU1zOiA4MDAsXG4gICAgICBjbGVhckJ1dHRvbjogZmFsc2UsXG4gICAgICBuZXdSb3dzQWN0aW9uOiAna2VlcCcsXG4gICAgICBmaWx0ZXJPcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoY29sRGVmLmZpbHRlciA9PT0gJ2FnVGV4dENvbHVtbkZpbHRlcicpIHtcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IGNvbERlZi5yZWZEYXRhLnFuYW1lLm1hdGNoKC8oXnN5c29iamVjdFxcLnxec3lzZG9jdW1lbnRcXC4pKHRpdGxlJHxkZXNjcmlwdGlvbiQpLykgPyBbJ2VxdWFscyddIDogW1xuICAgICAgICAnY29udGFpbnMnLFxuICAgICAgICAnZXF1YWxzJyxcbiAgICAgICAgJ3N0YXJ0c1dpdGgnLFxuICAgICAgICAnZW5kc1dpdGgnXG4gICAgICBdO1xuXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGNvbERlZi5maWx0ZXIgPT09ICdhZ051bWJlckNvbHVtbkZpbHRlcicgfHxcbiAgICAgIGNvbERlZi5maWx0ZXIgPT09ICdhZ0RhdGVDb2x1bW5GaWx0ZXInXG4gICAgKSB7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXG4gICAgICAgICdlcXVhbHMnLFxuICAgICAgICAnbGVzc1RoYW5PckVxdWFsJyxcbiAgICAgICAgJ2dyZWF0ZXJUaGFuJyxcbiAgICAgICAgJ2dyZWF0ZXJUaGFuT3JFcXVhbCcsXG4gICAgICAgICdpblJhbmdlJ1xuICAgICAgXTtcbiAgICB9XG5cbiAgICAvLyBtaW1ldHlwZSBmaWx0ZXIgc3VwcG9ydHMgb25seSBlcXVhbHMgb3B0aW9uXG4gICAgaWYgKGNvbERlZi5maWVsZCA9PT0gJ21pbWV0eXBlJykge1xuICAgICAgY29sRGVmLmZpbHRlclBhcmFtcy5kZWZhdWx0T3B0aW9uID0gJ2VxdWFscyc7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbJ2VxdWFscyddO1xuICAgIH1cblxuICAgIC8vIGZpbGVzaXplIGZpbHRlciBzdXBwb3J0cyBvbmx5IGludGVydmFsIG9wdGlvbnNcbiAgICBpZiAoY29sRGVmLmZpZWxkID09PSAnZmlsZXNpemUnKSB7XG4gICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zLmRlZmF1bHRPcHRpb24gPSAnbGVzc1RoYW5PckVxdWFsJztcbiAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFtcbiAgICAgICAgJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICAgICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgICAgICAnaW5SYW5nZSdcbiAgICAgIF07XG4gICAgfVxuXG4gICAgaWYgKCFyZXN1bHRGaWVsZC5zb3J0YWJsZSkge1xuICAgICAgY29sRGVmLnNvcnRhYmxlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICghcmVzdWx0RmllbGQuc2VhcmNoYWJsZSkge1xuICAgICAgY29sRGVmLnN1cHByZXNzSGVhZGVyTWVudUJ1dHRvbiA9IHRydWU7XG4gICAgICBjb2xEZWYuZmlsdGVyID0gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHNvcnRGaWVsZCA9IHNvcnRGaWVsZHMuZmluZChmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lKTtcbiAgICBpZiAoc29ydEZpZWxkKSB7XG4gICAgICBjb2xEZWYuc29ydCA9IHNvcnRGaWVsZC5kaXJlY3Rpb24udG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoZW5hYmxlUm93R3JvdXApIHtcbiAgICAgIGxldCBncm91cEZpZWxkSW5kZXggPSBncm91cEZpZWxkcy5maW5kSW5kZXgoXG4gICAgICAgIGYgPT4gZi5xbmFtZSA9PT0gcmVzdWx0RmllbGQucW5hbWVcbiAgICAgICk7XG4gICAgICBpZiAofmdyb3VwRmllbGRJbmRleCkge1xuICAgICAgICBjb2xEZWYucm93R3JvdXBJbmRleCA9IGdyb3VwRmllbGRJbmRleDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGlubmVkRmllbGQgPSBwaW5uZWRGaWVsZHMuZmluZChmID0+IGYucW5hbWUgPT09IHJlc3VsdEZpZWxkLnFuYW1lKTtcbiAgICBpZiAocGlubmVkRmllbGQpIHtcbiAgICAgIGNvbERlZi5waW5uZWQgPSBwaW5uZWRGaWVsZC5wb3NpdGlvbiB8fCB0aGlzLmNvbnRleHQuZGVmYXVsdFBvc2l0aW9uO1xuICAgIH1cblxuICAgIGxldCBjYWNoZWRDb2x1bW4gPSBjYWNoZWRDb2x1bW5zLmZpbmQoZiA9PiBmLnFuYW1lID09PSByZXN1bHRGaWVsZC5xbmFtZSk7XG4gICAgaWYgKGNhY2hlZENvbHVtbikge1xuICAgICAgY29sRGVmLndpZHRoID0gY2FjaGVkQ29sdW1uLndpZHRoO1xuICAgIH1cblxuICAgIGxldCBhbGlnbm1lbnRGaWVsZCA9IGFsaWdubWVudEZpZWxkcy5maW5kKGYgPT4gZi5xbmFtZSA9PT0gcmVzdWx0RmllbGQucW5hbWUpO1xuICAgIGlmIChhbGlnbm1lbnRGaWVsZCAmJiBhbGlnbm1lbnRGaWVsZC52YWx1ZSkge1xuICAgICAgY29sRGVmLmNlbGxTdHlsZSA9IHsnanVzdGlmeS1jb250ZW50JzogYWxpZ25tZW50RmllbGQudmFsdWV9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2xEZWYuY2VsbFN0eWxlID0geydqdXN0aWZ5LWNvbnRlbnQnOiByZXN1bHRGaWVsZC5hbGlnbm1lbnR4ID8gcmVzdWx0RmllbGQuYWxpZ25tZW50eCA6ICcnfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB0eXBlIHNwZWNpZmljIGNvbHVtbiBkZWZpbml0aW9uIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIGNvbERlZiAtIHRoZSBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3QgdG8gYmUgZXh0ZW5kZWQgYnkgdHlwZSBzcGVjaWZpYyBhdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSByZXN1bHRGaWVsZCAtIG9iamVjdCBkZWZpbmluZyB0aGUgcmVzdWx0IGZpZWxkXG4gICAqXG4gICAqIEByZXR1cm5zIGVucmljaGVkIGNvbHVtbiBkZWZpbml0aW9uIG9iamVjdFxuICAgKi9cbiAgcHVibGljIGFkZENvbERlZkF0dHJzQnlUeXBlKGNvbERlZjogQ29sRGVmLCByZXN1bHRGaWVsZCkge1xuICAgIHN3aXRjaCAocmVzdWx0RmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnUkVGRVJFTkNFJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgICAgPyAnbXVsdGlDZWxsIHJvdXRlci1saW5rLWNlbGwnXG4gICAgICAgICAgICA6ICdyb3V0ZXItbGluay1jZWxsJztcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IHRoaXMuY3VzdG9tQ29udGV4dChcbiAgICAgICAgICBDZWxsUmVuZGVyZXIucmVmZXJlbmNlQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgIHtyZWZlcmVuY2U6IHJlc3VsdEZpZWxkLnJlZmVyZW5jZSB8fCB7fSwgY29sRGVmOiBjb2xEZWZ9XG4gICAgICAgICk7XG4gICAgICAgIGNvbERlZi52YWx1ZUdldHRlciA9IHBhcmFtID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgICAgICBwYXJhbS5ub2RlLmdyb3VwIHx8ICFwYXJhbS5kYXRhID8gJycgOiBwYXJhbS5kYXRhW2NvbERlZi5maWVsZF07XG5cbiAgICAgICAgICBjb25zdCByZWZNZXRhID0gcGFyYW0gJiYgcGFyYW0uZGF0YSAmJiBwYXJhbS5kYXRhLl9yZWZlcmVuY2VzO1xuICAgICAgICAgIC8vIHVzZSBvYmplY3QgdHlwZSBsYWJlbCB3aGVuIG1ldGEgaXMgbWlzc2luZyAoc2VhcmNoIHN2YyBkb2VzIG5vdCBzdXBwb3J0IG1ldGEpXG4gICAgICAgICAgcmV0dXJuIFV0aWxpdGllc1NlcnZpY2UuaXNFbXB0eSh2YWx1ZSlcbiAgICAgICAgICAgID8gJycgOiByZWZNZXRhXG4gICAgICAgICAgICAgID8gcmVmTWV0YVtjb2xEZWYuZmllbGRdXG4gICAgICAgICAgICAgIDogdGhpcy5tZXRhVmFsdWVHZXR0ZXIodiA9PiB2LnRpdGxlKShwYXJhbSk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnU1RSSU5HJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIuc3RyaW5nQ2VsbHJlbmRlcmVyO1xuICAgICAgICBpZiAocmVzdWx0RmllbGQubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLm11bHRpU2VsZWN0Q2VsbFJlbmRlcmVyO1xuICAgICAgICB9XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdFxuICAgICAgICAgID8gJ211bHRpQ2VsbCBzdHJpbmcnXG4gICAgICAgICAgOiAnc3RyaW5nJztcbiAgICAgICAgdGhpcy5hZGRDb2xEZWZBdHRyc0J5Q2xhc3NpZmljYXRpb24oY29sRGVmLCByZXN1bHRGaWVsZC5jbGFzc2lmaWNhdGlvbik7XG4gICAgICAgIGlmIChyZXN1bHRGaWVsZC5yZWZlcmVuY2UpIHtcbiAgICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gcmVzdWx0RmllbGQubXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgPyAnbXVsdGlDZWxsIHJvdXRlci1saW5rLWNlbGwnXG4gICAgICAgICAgICAgIDogJ3JvdXRlci1saW5rLWNlbGwnO1xuICAgICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgICBDZWxsUmVuZGVyZXIubGlua0NlbGxSZW5kZXJlcixcbiAgICAgICAgICAgIHtyZWZlcmVuY2U6IHJlc3VsdEZpZWxkLnJlZmVyZW5jZX1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbERlZi5jb21wYXJhdG9yID0gKGEsIGIpID0+IF8uZGVmYXVsdENvbXBhcmF0b3IoYSwgYiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREFURVRJTUUnOiB7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDE1MDtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdhZ0RhdGVDb2x1bW5GaWx0ZXInO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlcixcbiAgICAgICAgICB7cGF0dGVybjogcmVzdWx0RmllbGQud2l0aHRpbWUgPyAnZW9TaG9ydCcgOiAnZW9TaG9ydERhdGUnfVxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5kYXRlVGltZUNlbGxSZW5kZXJlcixcbiAgICAgICAgICB7cGF0dGVybjogcmVzdWx0RmllbGQud2l0aHRpbWUgPyAnZW9TaG9ydCcgOiAnZW9TaG9ydERhdGUnfVxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgIC4uLmNvbERlZi5maWx0ZXJQYXJhbXMsXG4gICAgICAgICAgY29tcGFyYXRvcjogdGhpcy5kYXRlQ29tcGFyYXRvcih0aGlzLmNvbnRleHQuZGF0ZVBpcGUsIHJlc3VsdEZpZWxkLndpdGh0aW1lKSxcbiAgICAgICAgICB3aXRoVGltZTogcmVzdWx0RmllbGQud2l0aHRpbWUsXG4gICAgICAgICAgaW5SYW5nZUluY2x1c2l2ZTogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0NPREVTWVNURU0nOiB7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnQ29kZXN5c3RlbUZpbHRlckNvbXBvbmVudCc7XG4gICAgICAgIGNvbERlZi5jb2xJZCA9IHJlc3VsdEZpZWxkLmZpZWxkO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0gey4uLmNvbERlZi5maWx0ZXJQYXJhbXMsIG11bHRpOiByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdH07XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIuc3RyaW5nQ2VsbHJlbmRlcmVyO1xuICAgICAgICBpZiAocmVzdWx0RmllbGQubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLm11bHRpU2VsZWN0Q2VsbFJlbmRlcmVyO1xuICAgICAgICB9XG4gICAgICAgIGNvbERlZi52YWx1ZUdldHRlciA9IHRoaXMubWV0YVZhbHVlR2V0dGVyKHYgPT4gdi5kZWZhdWx0cmVwcmVzZW50YXRpb24pO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gcmVzdWx0RmllbGQubXVsdGlzZWxlY3RcbiAgICAgICAgICA/ICdtdWx0aUNlbGwgY29kZXN5c3RlbSdcbiAgICAgICAgICA6ICdjb2Rlc3lzdGVtJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdOVU1CRVInOiB7XG4gICAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSAnY29sLW51bWJlcic7XG4gICAgICAgIGNvbERlZi5oZWFkZXJDbGFzcyA9ICdjb2wtaGVhZGVyLW51bWJlcic7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICBjb2xEZWYud2lkdGggPSAxNTA7XG4gICAgICAgIGNvbnN0IHtzY2FsZSwgZ3JvdXBpbmcsIHBhdHRlcm59ID0gcmVzdWx0RmllbGQ7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSB0aGlzLmN1c3RvbUNvbnRleHQoXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLm51bWJlckNlbGxSZW5kZXJlcixcbiAgICAgICAgICB7c2NhbGUsIGdyb3VwaW5nLCBwYXR0ZXJufVxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXIsXG4gICAgICAgICAge3NjYWxlLCBncm91cGluZywgcGF0dGVybn1cbiAgICAgICAgKTtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHsuLi5jb2xEZWYuZmlsdGVyUGFyYW1zLCBpblJhbmdlSW5jbHVzaXZlIDogdHJ1ZX07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1JHQU5JWkFUSU9OJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ09yZ2FuaXphdGlvbkZpbHRlckNvbXBvbmVudCc7XG4gICAgICAgIGNvbERlZi5jb2xJZCA9IHJlc3VsdEZpZWxkLnFuYW1lO1xuICAgICAgICBjb2xEZWYuZmlsdGVyUGFyYW1zID0gey4uLmNvbERlZi5maWx0ZXJQYXJhbXMsIG11bHRpOiByZXN1bHRGaWVsZC5tdWx0aXNlbGVjdH07XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIuc3RyaW5nQ2VsbHJlbmRlcmVyO1xuICAgICAgICBpZiAocmVzdWx0RmllbGQubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLm11bHRpU2VsZWN0Q2VsbFJlbmRlcmVyO1xuICAgICAgICB9XG4gICAgICAgIGNvbERlZi52YWx1ZUdldHRlciA9IHRoaXMubWV0YVZhbHVlR2V0dGVyKHYgPT5cbiAgICAgICAgICB2LnRpdGxlICYmIHYubmFtZSA/IGAke3YudGl0bGV9ICgke3YubmFtZX0pYCA6IGAke3YuaWR9YFxuICAgICAgICApO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gcmVzdWx0RmllbGQubXVsdGlzZWxlY3RcbiAgICAgICAgICA/ICdtdWx0aUNlbGwgb3JnYW5pemF0aW9uJ1xuICAgICAgICAgIDogJ29yZ2FuaXphdGlvbic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQk9PTEVBTic6IHtcbiAgICAgICAgY29sRGVmLmZpbHRlciA9ICdMaXN0RmlsdGVyQ29tcG9uZW50JztcbiAgICAgICAgY29sRGVmLmNlbGxDbGFzcyA9ICdjb2wtYm9vbGVhbic7XG4gICAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBDZWxsUmVuZGVyZXIuYm9vbGVhbkNlbGxSZW5kZXJlcjtcbiAgICAgICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICAuLi5jb2xEZWYuZmlsdGVyUGFyYW1zLFxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jdXN0b21Db250ZXh0KENlbGxSZW5kZXJlci5ib29sZWFuQ2VsbFJlbmRlcmVyKSxcbiAgICAgICAgICBjZWxsSGVpZ2h0OiAzMCxcbiAgICAgICAgICB2YWx1ZXM6IFtmYWxzZSwgdHJ1ZSwgdW5kZWZpbmVkXSxcbiAgICAgICAgICBzdXBwcmVzc01pbmlGaWx0ZXI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTAwO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gKCkgPT4gJyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCBjbGFzc2lmaWNhdGlvbiBzcGVjaWZpYyBjb2x1bW4gZGVmaW5pdGlvbiBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBjb2xEZWYgLSB0aGUgY29sdW1uIGRlZmluaXRpb24gb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gICAqIEBwYXJhbSBjbGFzc2lmaWNhdGlvbiAtIHRoZSBjbGFzc2lmaWNhdGlvbiB0byBldmFsdWF0ZVxuICAgKlxuICAgKiBAcmV0dXJucyBlbnJpY2hlZCBjb2x1bW4gZGVmaW5pdGlvbiBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgYWRkQ29sRGVmQXR0cnNCeUNsYXNzaWZpY2F0aW9uKGNvbERlZjogQ29sRGVmLCBjbGFzc2lmaWNhdGlvbikge1xuICAgIHN3aXRjaCAoY2xhc3NpZmljYXRpb24pIHtcbiAgICAgIGNhc2UgJ2VtYWlsJzoge1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLmVtYWlsQ2VsbFJlbmRlcmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3VybCc6IHtcbiAgICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IENlbGxSZW5kZXJlci51cmxDZWxsUmVuZGVyZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sRGVmO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDb2xEZWZBdHRyc0J5RmllbGQoY29sRGVmOiBDb2xEZWYsIHJlc3VsdEZpZWxkTmFtZSkge1xuICAgIHN3aXRjaCAocmVzdWx0RmllbGROYW1lKSB7XG4gICAgICBjYXNlICd0eXBlJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0xpc3RGaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLnR5cGVDZWxsUmVuZGVyZXI7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDgwO1xuICAgICAgICBjb2xEZWYuY2VsbENsYXNzID0gJ3Jlcy1pY28nO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gKCkgPT4gJyc7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgLi4uY29sRGVmLmZpbHRlclBhcmFtcyxcbiAgICAgICAgICBjZWxsUmVuZGVyZXI6IHRoaXMuY3VzdG9tQ29udGV4dChDZWxsUmVuZGVyZXIudHlwZUNlbGxSZW5kZXJlciksXG4gICAgICAgICAgdmFsdWVzOiB0aGlzLmNvbnRleHQudHlwZU9wdHNcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdtaW1ldHlwZWdyb3VwJzoge1xuICAgICAgICBjb2xEZWYuZmlsdGVyID0gJ0xpc3RGaWx0ZXJDb21wb25lbnQnO1xuICAgICAgICBjb2xEZWYud2lkdGggPSAxMDE7XG4gICAgICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgLi4uY29sRGVmLmZpbHRlclBhcmFtcyxcbiAgICAgICAgICB2YWx1ZXM6IHRoaXMuY29udGV4dC5taW1ldHlwZWdyb3VwT3B0c1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3ZlcnNpb24nOiB7XG4gICAgICAgIGNvbERlZi53aWR0aCA9IDgwO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2ZpbGVzaXplJzoge1xuICAgICAgICBjb2xEZWYuaGVhZGVyQ2xhc3MgPSAnY29sLWhlYWRlci1maWxlc2l6ZSc7XG4gICAgICAgIGNvbERlZi5maWx0ZXIgPSBGaWxlc2l6ZUZpbHRlcjtcbiAgICAgICAgY29sRGVmLndpZHRoID0gMTAwO1xuICAgICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gQ2VsbFJlbmRlcmVyLmZpbGVzaXplQ2VsbFJlbmRlcmVyO1xuICAgICAgICBjb2xEZWYuZ2V0UXVpY2tGaWx0ZXJUZXh0ID0gdGhpcy5jdXN0b21Db250ZXh0KFxuICAgICAgICAgIENlbGxSZW5kZXJlci5maWxlc2l6ZUNlbGxSZW5kZXJlclxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbERlZjtcbiAgfVxuXG4gIHByaXZhdGUgY3VzdG9tQ29udGV4dChmbmMsIG1peGluPykge1xuICAgIHJldHVybiBwYXJhbSA9PiB7XG4gICAgICByZXR1cm4gZm5jKE9iamVjdC5hc3NpZ24oe30sIHBhcmFtLCB7Y29udGV4dDogdGhpcy5jb250ZXh0fSwgbWl4aW4pKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG1ldGFWYWx1ZUdldHRlcih0aXRsZUZuYzogRnVuY3Rpb24sIG1hcEZuYzogRnVuY3Rpb24gPSB2ID0+IHYpIHtcbiAgICByZXR1cm4gcGFyYW1zID0+IHtcbiAgICAgIC8vIGRhdGEgY291bGQgYmUgZW1wdHkgb24gZmlyc3QgcmVuZGVyaW5nIGEgY2VsbCB3aGlsZSBpbmZpbml0ZSBzY3JvbGxpbmdcbiAgICAgIGlmIChwYXJhbXMubm9kZS5ncm91cCB8fCAhcGFyYW1zLmRhdGEpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG4gICAgICAvLyB0b2RvOiBzdXBlciBob3RmaXggLSBDT09MLTg5ODkgLSBzb2x2ZXMgcHJvYmxlbSB3aXRoIHJlc29sdmluZyBvZiBPUkdBTklaQVRJT04gdmFsdWUgKHZpYSBxbmFtZSlcbiAgICAgIGNvbnN0IGZpZWxkTWV0YSA9IHBhcmFtcy5jb2xEZWYuZmllbGQgKyAnX21ldGEnO1xuICAgICAgY29uc3QgdmFsdWUgPSAhcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkoZmllbGRNZXRhKVxuICAgICAgICA/IG1hcEZuYyhcbiAgICAgICAgICAocGFyYW1zLmRhdGFbcGFyYW1zLmNvbERlZi5maWVsZF0gIT09IHVuZGVmaW5lZCkgPyBwYXJhbXMuZGF0YVtwYXJhbXMuY29sRGVmLmZpZWxkXSA6XG4gICAgICAgICAgcGFyYW1zLmRhdGFbcGFyYW1zLmNvbERlZi5yZWZEYXRhLnFuYW1lXVxuICAgICAgICApXG4gICAgICAgIDogQXJyYXkuaXNBcnJheShwYXJhbXMuZGF0YVtmaWVsZE1ldGFdKVxuICAgICAgICAgID8gcGFyYW1zLmRhdGFbZmllbGRNZXRhXS5tYXAodiA9PiB0aXRsZUZuYyh2IHx8IHt9KSlcbiAgICAgICAgICA6IHRpdGxlRm5jKHBhcmFtcy5kYXRhW2ZpZWxkTWV0YV0gfHwge30pO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGF0ZUNvbXBhcmF0b3IoZGF0ZVBpcGUsIHdpdGhUaW1lID0gZmFsc2UpIHtcbiAgICByZXR1cm4gKGE6IERhdGUsIGIpID0+IHtcbiAgICAgIGlmICghYikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF0dGVybiA9IHdpdGhUaW1lID8gJ3l5eXktTU0tZGQgSEg6bW0nIDogJ3l5eXktTU0tZGQnO1xuICAgICAgbGV0IGRhdGUgPSBiLmxlbmd0aCA9PT0gKHdpdGhUaW1lID8gMTYgOiAxMCkgPyBiIDogZGF0ZVBpcGUudHJhbnNmb3JtKGIsIHBhdHRlcm4pO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgXy5kZWZhdWx0Q29tcGFyYXRvcihkYXRlUGlwZS50cmFuc2Zvcm0oYSwgcGF0dGVybiksIGRhdGUpICpcbiAgICAgICAgLTFcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBDZWxsUmVuZGVyZXIge1xuXG4gIHN0YXRpYyBzaXR1YXRpb24gPSAnJztcblxuICBzdGF0aWMgd2luZG93VVJJKHVyaTogYW55KSB7XG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpLnJlcGxhY2UobmV3IFJlZ0V4cCgnXlxcL3xeXFxcXFxcXFwnKSwgJycpO1xuICB9XG5cbiAgc3RhdGljIHJlbmRlcih0eXBlOiBzdHJpbmcsIHBhcmFtOiBhbnksIG5ld1BhcmFtPzogYW55KSB7XG4gICAgcmV0dXJuIENlbGxSZW5kZXJlclt0eXBlICsgJ0NlbGxSZW5kZXJlciddKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW0sIG5ld1BhcmFtKVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgZmlsZXNpemVDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtLnZhbHVlID8gcGFyYW0uY29udGV4dC5maWxlU2l6ZVBpcGUudHJhbnNmb3JtKHBhcmFtLnZhbHVlKSA6ICcnO1xuICB9XG5cbiAgc3RhdGljIG51bWJlckNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBpZiAocGFyYW0udmFsdWUgfHwgcGFyYW0udmFsdWUgPT09IDApIHtcbiAgICAgIGlmIChwYXJhbS52YWx1ZS5vcGVyYXRvcikge1xuICAgICAgICAvLyByYW5nZSB2YWx1ZSBmcm9tIHNlYXJjaCBmb3JtIHRhYmxlXG4gICAgICAgIHJldHVybiBwYXJhbS52YWx1ZS5vcGVyYXRvciA9PT1cbiAgICAgICAgICBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxfSU5DTFVERV9CT1RIXG4gICAgICAgICAgPyBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLmdyb3VwaW5nLFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVybixcbiAgICAgICAgICAgIHBhcmFtLnNjYWxlXG4gICAgICAgICAgKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwocGFyYW0udmFsdWUub3BlcmF0b3IpICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIENlbGxSZW5kZXJlci5udW1iZXJDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLnNlY29uZFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLmdyb3VwaW5nLFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVybixcbiAgICAgICAgICAgIHBhcmFtLnNjYWxlXG4gICAgICAgICAgKVxuICAgICAgICAgIDogUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLmdyb3VwaW5nLFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVybixcbiAgICAgICAgICAgIHBhcmFtLnNjYWxlXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgcGFyYW0udmFsdWUsXG4gICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICBwYXJhbS5ncm91cGluZyxcbiAgICAgICAgICBwYXJhbS5wYXR0ZXJuLFxuICAgICAgICAgIHBhcmFtLnNjYWxlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgbnVtYmVyQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgdmFsdWUsXG4gICAgY29udGV4dCxcbiAgICBncm91cGluZz8sXG4gICAgcGF0dGVybj8sXG4gICAgc2NhbGU/XG4gICkge1xuICAgIHJldHVybiBjb250ZXh0Lm51bWJlclBpcGUudHJhbnNmb3JtKFxuICAgICAgdmFsdWUsXG4gICAgICBncm91cGluZyxcbiAgICAgIHBhdHRlcm4sXG4gICAgICBzY2FsZVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgc3RyaW5nQ2VsbHJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBHcmlkU2VydmljZS5lc2NhcGVIdG1sKHBhcmFtLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyB0eXBlQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIGxldCBvYmplY3RUeXBlID0gcGFyYW0uY29udGV4dC5zeXN0ZW0uZ2V0T2JqZWN0VHlwZShwYXJhbS52YWx1ZSk7XG4gICAgICBpZiAoIW9iamVjdFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIuaWNvbkNlbGxSZW5kZXJlcihcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW0sIHt2YWx1ZTogb2JqZWN0VHlwZX0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3RhdGljIGljb25DZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHZhbCA9ICcnO1xuICAgIGlmIChwYXJhbS52YWx1ZSAmJiAocGFyYW0udmFsdWUudXJsIHx8IHBhcmFtLnZhbHVlLmljb25JZCkpIHtcbiAgICAgIGxldCBpY29uVXJsID0gcGFyYW0udmFsdWUudXJsXG4gICAgICAgID8gcGFyYW0uY29udGV4dC5iYXNlSHJlZiArIHBhcmFtLnZhbHVlLnVybFxuICAgICAgICA6IHBhcmFtLmNvbnRleHQuYmFja2VuZC5nZXRCYXNlV2l0aENvbnRleHQocGFyYW0uY29udGV4dC5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkpICtcbiAgICAgICAgJy91aS9pY29uLycgK1xuICAgICAgICBwYXJhbS52YWx1ZS5pY29uSWQgK1xuICAgICAgICAnLnN2Zyc7XG4gICAgICBsZXQgbGFiZWwgPSBwYXJhbS52YWx1ZS5sYWJlbDtcbiAgICAgIHZhbCA9IGA8aW1nIGNsYXNzPVwib2JqZWN0LXR5cGVcIiBzcmM9XCIke2ljb25Vcmx9XCIgdGl0bGU9XCIke2xhYmVsfVwiPjxzcGFuIGNsYXNzPVwib2JqZWN0LXR5cGUtbGFiZWxcIj4ke2xhYmVsfTwvc3Bhbj5gO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3RhdGljIGVtYWlsQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbS52YWx1ZVxuICAgICAgPyBgPGEgaHJlZj1cIm1haWx0bzoke3BhcmFtLnZhbHVlfVwiPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbChcbiAgICAgICAgcGFyYW0udmFsdWVcbiAgICAgICl9PC9hPmBcbiAgICAgIDogJyc7XG4gIH1cblxuICBzdGF0aWMgdXJsQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbS52YWx1ZVxuICAgICAgPyBgPGEgdGFyZ2V0PVwiX2JsYW5rIFwiIGhyZWY9XCIke3BhcmFtLnZhbHVlfVwiPiR7R3JpZFNlcnZpY2UuZXNjYXBlSHRtbChcbiAgICAgICAgcGFyYW0udmFsdWVcbiAgICAgICl9PC9hPmBcbiAgICAgIDogJyc7XG4gIH1cblxuICBzdGF0aWMgZGF0ZVRpbWVDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtLnZhbHVlKSB7XG4gICAgICBpZiAocGFyYW0udmFsdWUub3BlcmF0b3IpIHtcbiAgICAgICAgLy8gcmFuZ2UgdmFsdWUgZnJvbSBzZWFyY2ggZm9ybSB0YWJsZVxuICAgICAgICByZXR1cm4gcGFyYW0udmFsdWUub3BlcmF0b3IgPT09XG4gICAgICAgICAgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USFxuICAgICAgICAgID8gQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5maXJzdFZhbHVlLFxuICAgICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICAgIHBhcmFtLnBhdHRlcm5cbiAgICAgICAgICApICtcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChwYXJhbS52YWx1ZS5vcGVyYXRvcikgK1xuICAgICAgICAgICcgJyArXG4gICAgICAgICAgQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgICBwYXJhbS52YWx1ZS5zZWNvbmRWYWx1ZSxcbiAgICAgICAgICAgIHBhcmFtLmNvbnRleHQsXG4gICAgICAgICAgICBwYXJhbS5wYXR0ZXJuXG4gICAgICAgICAgKVxuICAgICAgICAgIDogUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKHBhcmFtLnZhbHVlLm9wZXJhdG9yKSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICBDZWxsUmVuZGVyZXIuZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZShcbiAgICAgICAgICAgIHBhcmFtLnZhbHVlLmZpcnN0VmFsdWUsXG4gICAgICAgICAgICBwYXJhbS5jb250ZXh0LFxuICAgICAgICAgICAgcGFyYW0ucGF0dGVyblxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLmRhdGVUaW1lQ2VsbFJlbmRlcmVyVGVtcGxhdGUoXG4gICAgICAgICAgcGFyYW0udmFsdWUsXG4gICAgICAgICAgcGFyYW0uY29udGV4dCxcbiAgICAgICAgICBwYXJhbS5wYXR0ZXJuXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGF0ZVRpbWVDZWxsUmVuZGVyZXJUZW1wbGF0ZSh2YWx1ZSwgY29udGV4dCwgcGF0dGVybikge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIm5vLXZhbHVlXCI+JHtjb250ZXh0LnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLmlucHV0Lm51bGwnKX08L3NwYW4+YDtcbiAgICB9XG4gICAgcmV0dXJuIGA8c3BhbiBkYXRlPVwiJHt2YWx1ZX1cIj4ke2NvbnRleHQuZGF0ZVBpcGUudHJhbnNmb3JtKFxuICAgICAgdmFsdWUsXG4gICAgICBwYXR0ZXJuXG4gICAgKX08L3NwYW4+YDtcbiAgfVxuXG4gIHN0YXRpYyBib29sZWFuQ2VsbFJlbmRlcmVyKHBhcmFtKSB7XG4gICAgaWYgKHBhcmFtLnZhbHVlID09PSBudWxsICYmIENlbGxSZW5kZXJlci5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICByZXR1cm4gQ2VsbFJlbmRlcmVyLm5vVmFsdWVSZW5kZXJlcihwYXJhbSk7XG4gICAgfVxuICAgIGxldCB2YWwgPSBgPHBhdGggY2xhc3M9XCJvdXRsaW5lXCIgZD1cIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNIDUsMTkgTCAxOSw1XCIgc3Ryb2tlPVwicmdiYSgwLCAwLCAwLCAwLjU0KVwiIHN0cm9rZS13aWR0aD1cIjJcIi8+YDtcblxuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gdHJ1ZSB8fCBwYXJhbS52YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICB2YWwgPSBgPHBhdGggY2xhc3M9XCJvdXRsaW5lXCIgZD1cIk0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6XCIvPlxuICAgICAgICAgICAgIDxwb2x5bGluZSBjbGFzcz1cImNoZWNrbWFya1wiIHBvaW50cz1cIjYuMywxMS44IDcuOCwxMC4zIDEwLjgsMTMuMyAxNi4zLDcuOCAxNy44LDkuMyAxMC44LDE2LjMgNi4zLDExLjhcIi8+YDtcbiAgICB9IGVsc2UgaWYgKHBhcmFtLnZhbHVlID09PSBmYWxzZSB8fCBwYXJhbS52YWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgdmFsID0gYDxwYXRoIGNsYXNzPVwib3V0bGluZVwiIGQ9XCJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0elwiLz5gO1xuICAgIH1cbiAgICByZXR1cm4gYDxzdmcgY2xhc3M9XCJjaGVja2JveFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+JHt2YWx9PC9zdmc+YDtcbiAgfVxuXG4gIHN0YXRpYyBtdWx0aVNlbGVjdENlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGlmIChwYXJhbS52YWx1ZSA9PT0gbnVsbCAmJiBDZWxsUmVuZGVyZXIuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIENlbGxSZW5kZXJlci5ub1ZhbHVlUmVuZGVyZXIocGFyYW0pO1xuICAgIH1cbiAgICBsZXQgdmFsID0gJyc7XG4gICAgaWYgKHBhcmFtLnZhbHVlKSB7XG4gICAgICAoQXJyYXkuaXNBcnJheShwYXJhbS52YWx1ZSkgPyBwYXJhbS52YWx1ZSA6IFtwYXJhbS52YWx1ZV0pLmZvckVhY2goXG4gICAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgICB2YWwgKz0gYDxkaXYgY2xhc3M9XCJjaGlwXCI+JHtHcmlkU2VydmljZS5lc2NhcGVIdG1sKHZhbHVlKX08L2Rpdj5gO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3RhdGljIGxpbmtDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHZhbCA9ICcnO1xuICAgIGlmIChwYXJhbS52YWx1ZSkge1xuICAgICAgKEFycmF5LmlzQXJyYXkocGFyYW0udmFsdWUpID8gcGFyYW0udmFsdWUgOiBbcGFyYW0udmFsdWVdKS5mb3JFYWNoKFxuICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgY29uc3QgcXVlcnkgPSB7XG4gICAgICAgICAgICB0eXBlczogW3BhcmFtLnJlZmVyZW5jZS50eXBlXSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHt9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBxdWVyeS5maWx0ZXJzW3BhcmFtLnJlZmVyZW5jZS5lbGVtZW50XSA9IHtcbiAgICAgICAgICAgIG86ICdlcScsXG4gICAgICAgICAgICB2MTogdmFsdWVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGxpbmsgPSBVdGlscy5idWlsZFVyaSgncmVzdWx0Jywge1xuICAgICAgICAgICAgcXVlcnk6IGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShxdWVyeSkpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdmFsICs9IGA8ZGl2IGNsYXNzPVwiY2hpcFwiPmAgK1xuICAgICAgICAgIGA8YSBjbGFzcz1cImxpbmsgcm91dGVyLWxpbmtcIiBocmVmPVwiJHtsaW5rfVwiIHRhcmdldD1cIl9ibGFua1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCI+YCArXG4gICAgICAgICAgYDxzdmcgZm9jdXNhYmxlPVwiZmFsc2VcIiBjbGFzcz1cInJlZi1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5gICtcbiAgICAgICAgICBgPHBhdGggZD1cIk0zLjkgMTJjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xek04IGAgK1xuICAgICAgICAgIGAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6XCI+PC9wYXRoPmAgK1xuICAgICAgICAgIGA8L3N2Zz48L2E+PHNwYW4+JHtHcmlkU2VydmljZS5lc2NhcGVIdG1sKHZhbHVlKX08L3NwYW4+PC9kaXY+YDtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHN0YXRpYyByZWZlcmVuY2VDZWxsUmVuZGVyZXIocGFyYW0pIHtcbiAgICBpZiAocGFyYW0udmFsdWUgPT09IG51bGwgJiYgQ2VsbFJlbmRlcmVyLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiBDZWxsUmVuZGVyZXIubm9WYWx1ZVJlbmRlcmVyKHBhcmFtKTtcbiAgICB9XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtLmRhdGEgPyBwYXJhbS5kYXRhW3BhcmFtLmNvbERlZi5maWVsZF0gOiAnJztcbiAgICBjb25zdCB0eXBlID0gcGFyYW0uY29udGV4dC5zeXN0ZW0uZ2V0T2JqZWN0VHlwZShwYXJhbS5yZWZlcmVuY2UudHlwZSk7XG4gICAgaWYgKCFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpICYmIHR5cGUpIHtcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkuZm9yRWFjaCgodmFsLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBsaW5rID0gJ29iamVjdC8nICsgdmFsICsgJz90eXBlPScgKyBwYXJhbS5yZWZlcmVuY2UudHlwZTtcbiAgICAgICAgY29uc3QgaWNvblVybCA9XG4gICAgICAgICAgcGFyYW0uY29udGV4dC5iYWNrZW5kLmdldEJhc2VXaXRoQ29udGV4dChwYXJhbS5jb250ZXh0LmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSkgK1xuICAgICAgICAgICcvdWkvaWNvbi8nICtcbiAgICAgICAgICB0eXBlLmljb25JZCArXG4gICAgICAgICAgJy5zdmcnO1xuICAgICAgICBsZXQgdGl0bGUgPSBBcnJheS5pc0FycmF5KHBhcmFtLnZhbHVlKVxuICAgICAgICAgID8gcGFyYW0udmFsdWVbaW5kZXhdXG4gICAgICAgICAgOiBwYXJhbS52YWx1ZTtcblxuICAgICAgICAvLyBJZiB0aGUgdXNlciBpcyBub3QgYWxsb3dlZCB0byBzZWUgdGhlIHJlZmVyZW5jZSBvYmplY3Qgb3IgdGhlIG9iamVjdCB3YXMgZGVsZXRlZCwgd2UgZG9uJ3Qgc2hvdyB0aGUgbGluay5cbiAgICAgICAgdGV4dCArPSBgPGRpdiBjbGFzcz1cImNoaXBcIj5gICtcbiAgICAgICAgICAoIXRpdGxlID8gJycgOiBgPGEgY2xhc3M9XCJsaW5rIHJvdXRlci1saW5rXCIgaHJlZj1cIiR7bGlua31cIiB0YXJnZXQ9XCJfYmxhbmtcIiBvbmNsaWNrPVwicmV0dXJuIGZhbHNlO1wiPmAgK1xuICAgICAgICAgICAgYDxzdmcgZm9jdXNhYmxlPVwiZmFsc2VcIiBjbGFzcz1cInJlZi1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5gICtcbiAgICAgICAgICAgIGA8cGF0aCBkPVwiTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggYCArXG4gICAgICAgICAgICBgMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwiPjwvcGF0aD5gICtcbiAgICAgICAgICAgIGA8L3N2Zz48L2E+YCkgK1xuXG4gICAgICAgIGA8aW1nIGNsYXNzPVwidHlwZS1pY29uXCIgc3JjPVwiJHtpY29uVXJsfVwiIHRpdGxlPVwiJHt0eXBlLmxhYmVsfVwiPmAgK1xuICAgICAgICBgPHNwYW4+JHtHcmlkU2VydmljZS5lc2NhcGVIdG1sKHRpdGxlIHx8IHR5cGUubGFiZWwpfTwvc3Bhbj48L2Rpdj5gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQgfHwgcGFyYW0udmFsdWU7XG4gIH1cblxuICBzdGF0aWMgbm9WYWx1ZVJlbmRlcmVyKHBhcmFtKSB7XG4gICAgcmV0dXJuIGA8c3BhbiBjbGFzcz1cIm5vLXZhbHVlXCI+JHtwYXJhbS5jb250ZXh0LnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLmlucHV0Lm51bGwnKX08L3NwYW4+YDtcbiAgfVxuXG59XG4iXX0=
@@ -288,10 +288,10 @@ export class PluginsService {
288
288
  handleError(error) {
289
289
  return Promise.reject(error.message || error);
290
290
  }
291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PluginsService, deps: [{ token: i1.BackendService }, { token: i1.NotificationsService }, { token: i1.ClipboardService }, { token: i1.Logger }, { token: i1.TranslateService }, { token: i1.DmsService }, { token: i2.Router }, { token: i3.AgentService }, { token: i1.EventService }, { token: i1.UserService }, { token: i0.ApplicationRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
292
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PluginsService, providedIn: 'root' }); }
291
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PluginsService, deps: [{ token: i1.BackendService }, { token: i1.NotificationsService }, { token: i1.ClipboardService }, { token: i1.Logger }, { token: i1.TranslateService }, { token: i1.DmsService }, { token: i2.Router }, { token: i3.AgentService }, { token: i1.EventService }, { token: i1.UserService }, { token: i0.ApplicationRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
292
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PluginsService, providedIn: 'root' }); }
293
293
  }
294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PluginsService, decorators: [{
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PluginsService, decorators: [{
295
295
  type: Injectable,
296
296
  args: [{
297
297
  providedIn: 'root'
@@ -44,10 +44,10 @@ export class EmptyStateService {
44
44
  className: undefined
45
45
  };
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EmptyStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EmptyStateService }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: EmptyStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: EmptyStateService }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EmptyStateService, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: EmptyStateService, decorators: [{
51
51
  type: Injectable
52
52
  }], ctorParameters: () => [] });
53
53
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd6Qzs7O0dBR0c7QUFHSCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCO0lBQ0EsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxhQUFhLENBQUMsUUFBZ0IsRUFBRSxPQUFnQixFQUFFLElBQWE7UUFFN0QsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwQiw0QkFBNEI7WUFDNUIsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxJQUFJLGNBQWM7Z0JBQzVCLElBQUksRUFBRSxPQUFPLElBQUksRUFBRTtnQkFDbkIsU0FBUyxFQUFFLE9BQU87YUFDbkIsQ0FBQTtRQUVILENBQUM7YUFBTSxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixlQUFlO1lBQ2YsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxJQUFJLGdCQUFnQjtnQkFDOUIsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFO2dCQUNuQixTQUFTLEVBQUUsT0FBTzthQUNuQixDQUFBO1FBRUgsQ0FBQzthQUFNLENBQUM7WUFDTixpQkFBaUI7WUFDakIsT0FBTyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQjtRQUN0QixPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsU0FBUztZQUNmLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUE7SUFDSCxDQUFDOzhHQTNDVSxpQkFBaUI7a0hBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VtcHR5U3RhdGV9IGZyb20gJy4vZW1wdHktc3RhdGUuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBIYW5kbGVzIGVtcHR5IHN0YXRlcy4gRW1wdHkgc3RhdGVzIGFyZSBzcGVjaWFsIG9iamVjdHMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHNvbWVcbiAqIGNvbXBvbmVudHMgaW5kaWNhdGluZyBhbiBlbXB0eSBzdGF0ZSAoZXJyb3Igd2hpbGUgZmV0Y2hpbmcgZGF0YSwgZW1wdHkgZGF0YSwgLi4uKVxuICovXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbXB0eVN0YXRlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBFbXB0eVN0YXRlLlxuICAgKiBAcGFyYW0gbGlzdFNpemUgVGhlIG51bWJlciBvZiBpdGVtcyBpbnNpZGUgdGhlIGxpc3RzIHJlc3VsdCBzZXQgKGlmKVxuICAgKiBAcGFyYW0gbWVzc2FnZSBPcHRpb25hbCBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZFxuICAgKiBAcGFyYW0gaWNvbiBJZiBhIHNwZWNpYWwgaWNvbiBzaG91bGQgYmUgdXNlZCBwcm92aWRlIGl0cyB1cmkgaGVyZSBvdGhlcndpc2VcbiAgICogdGhlIGRlZmF1bHQgaWNvbnMgd2lsbCBiZSB1c2VkXG4gICAqIEByZXR1cm5zIGFuIGVtcHR5IHN0YXRlIG9yIG51bGwgaW4gY2FzZSBvZiBhIGxpc3RTaXplID4gMFxuICAgKi9cbiAgZ2V0RW1wdHlTdGF0ZShsaXN0U2l6ZTogbnVtYmVyLCBtZXNzYWdlPzogc3RyaW5nLCBpY29uPzogc3RyaW5nKTogRW1wdHlTdGF0ZSB7XG5cbiAgICBpZiAobGlzdFNpemUgPT09IC0xKSB7XG4gICAgICAvLyBlcnJvciB3aGlsZSBmZXRjaGluZyBkYXRhXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY29uOiBpY29uIHx8ICdpY19lcnJvci5zdmcnLFxuICAgICAgICB0ZXh0OiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBjbGFzc05hbWU6ICdlcnJvcidcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAobGlzdFNpemUgPT09IDApIHtcbiAgICAgIC8vIGVtcHR5IHJlc3VsdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvbjogaWNvbiB8fCAnaWNfbm8tZmlsZS5zdmcnLFxuICAgICAgICB0ZXh0OiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBjbGFzc05hbWU6ICdlbXB0eSdcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBubyBlbXB0eSBzdGF0ZVxuICAgICAgcmV0dXJuIEVtcHR5U3RhdGVTZXJ2aWNlLmRlZmF1bHRFbXB0eVN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRlZmF1bHRFbXB0eVN0YXRlKCk6IEVtcHR5U3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgICB0ZXh0OiB1bmRlZmluZWQsXG4gICAgICBjbGFzc05hbWU6IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxufVxuIl19