@fundamental-ngx/platform 0.49.0-rc.9 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/approval-flow/approval-flow.component.d.ts +7 -1
  2. package/button/button.component.d.ts +1 -4
  3. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +4 -4
  4. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +4 -4
  5. package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +3 -3
  6. package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +3 -3
  7. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +3 -3
  8. package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +4 -4
  9. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +3 -3
  10. package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +3 -3
  11. package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +3 -3
  12. package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +3 -3
  13. package/esm2022/approval-flow/approval-flow.component.mjs +27 -5
  14. package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
  15. package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
  16. package/esm2022/button/button.component.mjs +4 -6
  17. package/esm2022/button/button.module.mjs +4 -4
  18. package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
  19. package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
  20. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +3 -3
  21. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
  22. package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  23. package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
  24. package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
  25. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
  26. package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
  27. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
  28. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
  29. package/esm2022/dynamic-page/dynamic-page.component.mjs +6 -6
  30. package/esm2022/dynamic-page/dynamic-page.config.mjs +3 -3
  31. package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
  32. package/esm2022/feed-input/feed-input.component.mjs +5 -5
  33. package/esm2022/feed-input/feed-input.module.mjs +4 -4
  34. package/esm2022/form/auto-complete/auto-complete.directive.mjs +3 -3
  35. package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
  36. package/esm2022/form/checkbox/checkbox.component.mjs +3 -3
  37. package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
  38. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +3 -3
  39. package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
  40. package/esm2022/form/combobox/combobox/combobox.component.mjs +5 -5
  41. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +4 -4
  42. package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  43. package/esm2022/form/combobox/combobox.config.mjs +11 -11
  44. package/esm2022/form/combobox/combobox.module.mjs +4 -4
  45. package/esm2022/form/combobox/commons/base-combobox.mjs +5 -8
  46. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
  47. package/esm2022/form/date-picker/date-picker.component.mjs +3 -3
  48. package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
  49. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +3 -3
  50. package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
  51. package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
  52. package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +3 -3
  53. package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +3 -3
  54. package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +4 -4
  55. package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +3 -3
  56. package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +3 -3
  57. package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +3 -3
  58. package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +3 -3
  59. package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +3 -3
  60. package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +3 -3
  61. package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +3 -3
  62. package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +3 -3
  63. package/esm2022/form/form-generator/dynamic-form-control.mjs +1 -1
  64. package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
  65. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +3 -3
  66. package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
  67. package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +3 -3
  68. package/esm2022/form/form-generator/form-generator.service.mjs +3 -3
  69. package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +3 -3
  70. package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
  71. package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
  72. package/esm2022/form/form-group/form-field/form-field.component.mjs +5 -5
  73. package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +3 -3
  74. package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +3 -3
  75. package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +3 -3
  76. package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
  77. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +4 -4
  78. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +3 -3
  79. package/esm2022/form/form-group/form-group.component.mjs +5 -5
  80. package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
  81. package/esm2022/form/form-group/services/form-field-layout.service.mjs +3 -3
  82. package/esm2022/form/input/fdp-input.module.mjs +4 -4
  83. package/esm2022/form/input/input.component.mjs +4 -4
  84. package/esm2022/form/input-group/addon-body.component.mjs +3 -3
  85. package/esm2022/form/input-group/addon.component.mjs +3 -3
  86. package/esm2022/form/input-group/input-group.component.mjs +3 -3
  87. package/esm2022/form/input-group/input-group.config.mjs +3 -3
  88. package/esm2022/form/input-group/input-group.module.mjs +4 -4
  89. package/esm2022/form/input-group/input.component.mjs +3 -3
  90. package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +4 -4
  91. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +3 -3
  92. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +6 -6
  93. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +4 -4
  94. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
  95. package/esm2022/form/multi-combobox/multi-combobox.config.mjs +3 -3
  96. package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
  97. package/esm2022/form/multi-input/base-multi-input.mjs +11 -5
  98. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
  99. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  100. package/esm2022/form/multi-input/multi-input.component.mjs +5 -5
  101. package/esm2022/form/multi-input/multi-input.config.mjs +3 -3
  102. package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
  103. package/esm2022/form/radio-group/radio/radio.component.mjs +3 -3
  104. package/esm2022/form/radio-group/radio-group.component.mjs +3 -3
  105. package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
  106. package/esm2022/form/select/commons/base-select.mjs +4 -4
  107. package/esm2022/form/select/select/select.component.mjs +5 -5
  108. package/esm2022/form/select/select.config.mjs +3 -3
  109. package/esm2022/form/select/select.module.mjs +4 -4
  110. package/esm2022/form/step-input/base.step-input.mjs +3 -3
  111. package/esm2022/form/step-input/number/number-step-input.component.mjs +6 -6
  112. package/esm2022/form/step-input/step-input-action-button.mjs +3 -3
  113. package/esm2022/form/step-input/step-input-control.directive.mjs +3 -3
  114. package/esm2022/form/step-input/step-input-decrement.directive.mjs +3 -3
  115. package/esm2022/form/step-input/step-input-increment.directive.mjs +3 -3
  116. package/esm2022/form/step-input/step-input.config.mjs +3 -3
  117. package/esm2022/form/step-input/step-input.module.mjs +4 -4
  118. package/esm2022/form/switch/switch/switch.component.mjs +4 -4
  119. package/esm2022/form/switch/switch/switch.config.mjs +3 -3
  120. package/esm2022/form/switch/switch.module.mjs +4 -4
  121. package/esm2022/form/text-area/text-area.component.mjs +4 -6
  122. package/esm2022/form/text-area/text-area.config.mjs +3 -3
  123. package/esm2022/form/text-area/text-area.module.mjs +4 -4
  124. package/esm2022/form/time-picker/time-picker.component.mjs +4 -4
  125. package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
  126. package/esm2022/fundamental-ngx-platform.mjs +1 -1
  127. package/esm2022/fundamental-ngx.module.mjs +5 -5
  128. package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +3 -3
  129. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +6 -7
  130. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +3 -3
  131. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +3 -3
  132. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +3 -3
  133. package/esm2022/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.mjs +6 -6
  134. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +3 -3
  135. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +4 -4
  136. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +3 -3
  137. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +4 -4
  138. package/esm2022/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.mjs +3 -3
  139. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +3 -3
  140. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +3 -3
  141. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +3 -3
  142. package/esm2022/icon-tab-bar/directives/icon-tab-bar-free-content.directive.mjs +3 -3
  143. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +6 -6
  144. package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +4 -4
  145. package/esm2022/index.mjs +1 -1
  146. package/esm2022/info-label/info-label.component.mjs +3 -3
  147. package/esm2022/info-label/info-label.module.mjs +4 -4
  148. package/esm2022/link/link.component.mjs +7 -7
  149. package/esm2022/link/link.module.mjs +4 -4
  150. package/esm2022/list/action-list-item/action-list-item.component.mjs +3 -3
  151. package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
  152. package/esm2022/list/base-list-item.mjs +6 -6
  153. package/esm2022/list/display-list-item/display-list-item.component.mjs +4 -4
  154. package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
  155. package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +3 -3
  156. package/esm2022/list/list-group-footer.component.mjs +3 -3
  157. package/esm2022/list/list-group-header.component.mjs +3 -3
  158. package/esm2022/list/list.component.mjs +6 -6
  159. package/esm2022/list/list.config.mjs +3 -3
  160. package/esm2022/list/list.module.mjs +4 -4
  161. package/esm2022/list/load-more-content.directive.mjs +3 -3
  162. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +6 -6
  163. package/esm2022/list/object-list-item/object-list-item.component.mjs +5 -5
  164. package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
  165. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +4 -4
  166. package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
  167. package/esm2022/menu/menu-item.component.mjs +5 -5
  168. package/esm2022/menu/menu-trigger.directive.mjs +3 -3
  169. package/esm2022/menu/menu.component.mjs +4 -4
  170. package/esm2022/menu/menu.module.mjs +4 -4
  171. package/esm2022/menu-button/menu-button.component.mjs +3 -3
  172. package/esm2022/menu-button/menu-button.module.mjs +4 -4
  173. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +3 -3
  174. package/esm2022/message-popover/components/message-view/message-view.component.mjs +3 -3
  175. package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +3 -3
  176. package/esm2022/message-popover/message-popover.component.mjs +5 -5
  177. package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
  178. package/esm2022/object-marker/object-marker.component.mjs +3 -3
  179. package/esm2022/object-marker/object-marker.module.mjs +4 -4
  180. package/esm2022/object-status/object-status.component.mjs +6 -6
  181. package/esm2022/object-status/object-status.module.mjs +4 -4
  182. package/esm2022/page-footer/page-footer.component.mjs +5 -5
  183. package/esm2022/page-footer/page-footer.module.mjs +4 -4
  184. package/esm2022/panel/panel-actions.component.mjs +3 -3
  185. package/esm2022/panel/panel-content/panel-content.component.mjs +3 -3
  186. package/esm2022/panel/panel.component.mjs +4 -4
  187. package/esm2022/panel/panel.config.mjs +3 -3
  188. package/esm2022/panel/panel.module.mjs +4 -4
  189. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +4 -4
  190. package/esm2022/search-field/search-field.component.mjs +33 -94
  191. package/esm2022/search-field/search-field.module.mjs +4 -4
  192. package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +6 -6
  193. package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
  194. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +3 -3
  195. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +3 -3
  196. package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +4 -4
  197. package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +3 -3
  198. package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
  199. package/esm2022/settings-generator/settings-generator.component.mjs +3 -3
  200. package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
  201. package/esm2022/settings-generator/settings-generator.service.mjs +3 -3
  202. package/esm2022/shared/base.mjs +3 -3
  203. package/esm2022/shared/form/base.input.mjs +4 -4
  204. package/esm2022/shared/form/collection-base.input.mjs +3 -3
  205. package/esm2022/shared/form/form-field.mjs +1 -1
  206. package/esm2022/shared/form/inline-layout-collection-base.input.mjs +9 -9
  207. package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
  208. package/esm2022/shared/pipes/pipe.module.mjs +4 -4
  209. package/esm2022/shared/platform.config.mjs +3 -3
  210. package/esm2022/slider/slider.component.mjs +3 -3
  211. package/esm2022/slider/slider.module.mjs +4 -4
  212. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +3 -3
  213. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +3 -3
  214. package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +4 -4
  215. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +4 -4
  216. package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +3 -3
  217. package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +3 -3
  218. package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +3 -3
  219. package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
  220. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +14 -10
  221. package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
  222. package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +3 -3
  223. package/esm2022/split-menu-button/split-menu-button.component.mjs +4 -4
  224. package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
  225. package/esm2022/table/components/growing-button/table-growing-button.component.mjs +31 -0
  226. package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
  227. package/esm2022/table/components/reset-button/reset-button.component.mjs +3 -3
  228. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +4 -4
  229. package/esm2022/table/components/table-column/table-column.component.mjs +3 -3
  230. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +3 -3
  231. package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +3 -3
  232. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +3 -3
  233. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +3 -3
  234. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +6 -6
  235. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +8 -7
  236. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +3 -3
  237. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +11 -7
  238. package/esm2022/table/components/table-p13-dialog/filtering/filtering.model.mjs +1 -1
  239. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +5 -5
  240. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +8 -8
  241. package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
  242. package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +9 -6
  243. package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +8 -7
  244. package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
  245. package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
  246. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +3 -3
  247. package/esm2022/table/components/table-row/table-row.component.mjs +10 -9
  248. package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
  249. package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
  250. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +10 -11
  251. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +3 -3
  252. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +3 -3
  253. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +3 -3
  254. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +4 -4
  255. package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +4 -4
  256. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +4 -4
  257. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +4 -4
  258. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +4 -4
  259. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +3 -3
  260. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
  261. package/esm2022/table/index.mjs +2 -1
  262. package/esm2022/table/table.component.mjs +38 -12
  263. package/esm2022/table/table.module.mjs +14 -9
  264. package/esm2022/table-helpers/directives/index.mjs +1 -2
  265. package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
  266. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +3 -3
  267. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +3 -3
  268. package/esm2022/table-helpers/directives/table-cell.directive.mjs +12 -12
  269. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +3 -3
  270. package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
  271. package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
  272. package/esm2022/table-helpers/directives/table-header.directive.mjs +6 -6
  273. package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +3 -3
  274. package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +3 -3
  275. package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +3 -3
  276. package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
  277. package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
  278. package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
  279. package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
  280. package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
  281. package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
  282. package/esm2022/table-helpers/services/table-column-resize.service.mjs +3 -3
  283. package/esm2022/table-helpers/services/table-responsive.service.mjs +3 -3
  284. package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
  285. package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
  286. package/esm2022/table-helpers/services/table.service.mjs +28 -5
  287. package/esm2022/table-helpers/table-helpers.module.mjs +6 -9
  288. package/esm2022/table-helpers/table.mjs +1 -1
  289. package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +3 -3
  290. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +7 -6
  291. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +4 -4
  292. package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +3 -3
  293. package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +3 -3
  294. package/esm2022/value-help-dialog/directives/value-help-column-def.directive.mjs +3 -3
  295. package/esm2022/value-help-dialog/directives/value-help-filter-def.directive.mjs +6 -6
  296. package/esm2022/value-help-dialog/models/vhd-filter.model.mjs +1 -1
  297. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +6 -6
  298. package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
  299. package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +4 -4
  300. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +4 -4
  301. package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
  302. package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +3 -3
  303. package/esm2022/variant-management/variant-management.component.mjs +6 -6
  304. package/esm2022/variant-management/variant-management.module.mjs +4 -4
  305. package/esm2022/wizard-generator/base-wizard-generator.mjs +3 -3
  306. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +4 -4
  307. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +3 -3
  308. package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +3 -3
  309. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +4 -4
  310. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +4 -4
  311. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +3 -3
  312. package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
  313. package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
  314. package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
  315. package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
  316. package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +3 -3
  317. package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
  318. package/esm2022/wizard-generator/wizard-generator.service.mjs +3 -3
  319. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +63 -41
  320. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  321. package/fesm2022/fundamental-ngx-platform-button.mjs +7 -9
  322. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  323. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +45 -45
  324. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  325. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +8 -8
  326. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  327. package/fesm2022/fundamental-ngx-platform-form.mjs +331 -330
  328. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  329. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +60 -60
  330. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  331. package/fesm2022/fundamental-ngx-platform-info-label.mjs +7 -7
  332. package/fesm2022/fundamental-ngx-platform-link.mjs +10 -10
  333. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  334. package/fesm2022/fundamental-ngx-platform-list.mjs +64 -64
  335. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  336. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +7 -7
  337. package/fesm2022/fundamental-ngx-platform-menu.mjs +15 -15
  338. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  339. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +17 -17
  340. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  341. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +7 -7
  342. package/fesm2022/fundamental-ngx-platform-object-status.mjs +10 -10
  343. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +8 -8
  344. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  345. package/fesm2022/fundamental-ngx-platform-panel.mjs +16 -16
  346. package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
  347. package/fesm2022/fundamental-ngx-platform-search-field.mjs +40 -100
  348. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  349. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +34 -34
  350. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  351. package/fesm2022/fundamental-ngx-platform-shared.mjs +28 -28
  352. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  353. package/fesm2022/fundamental-ngx-platform-slider.mjs +7 -7
  354. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +42 -37
  355. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  356. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +8 -8
  357. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +110 -122
  358. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  359. package/fesm2022/fundamental-ngx-platform-table.mjs +213 -150
  360. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  361. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +34 -33
  362. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  363. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +21 -21
  364. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  365. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +43 -43
  366. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  367. package/fesm2022/fundamental-ngx-platform.mjs +4 -4
  368. package/fesm2022/fundamental-ngx-platform.mjs.map +1 -1
  369. package/form/combobox/combobox.config.d.ts +2 -2
  370. package/form/combobox/commons/base-combobox.d.ts +2 -4
  371. package/form/multi-input/base-multi-input.d.ts +4 -1
  372. package/form/text-area/text-area.component.d.ts +1 -5
  373. package/form/time-picker/time-picker.component.d.ts +1 -1
  374. package/link/link.component.d.ts +2 -2
  375. package/package.json +4 -4
  376. package/panel/panel.component.d.ts +4 -4
  377. package/schematics/ng-add/index.js +1 -1
  378. package/schematics/utils/package-utils.d.ts +9 -1
  379. package/schematics/utils/package-utils.js +15 -17
  380. package/schematics/utils/package-utils.js.map +1 -1
  381. package/search-field/search-field.component.d.ts +5 -16
  382. package/shared/form/base.input.d.ts +0 -2
  383. package/shared/form/form-field.d.ts +1 -11
  384. package/smart-filter-bar/smart-filter-bar.component.d.ts +6 -3
  385. package/table/components/growing-button/table-growing-button.component.d.ts +16 -0
  386. package/table/components/table-p13-dialog/filtering/filtering.model.d.ts +1 -0
  387. package/table/components/table-p13-dialog/table-p13-dialog.component.d.ts +2 -2
  388. package/table/components/table-p13-dialog/table-p13-filter.component.d.ts +6 -2
  389. package/table/components/table-row/table-row.component.d.ts +1 -1
  390. package/table/components/table-toolbar/table-toolbar.component.d.ts +2 -3
  391. package/table/index.d.ts +1 -0
  392. package/table/table.component.d.ts +15 -2
  393. package/table/table.module.d.ts +3 -2
  394. package/table-helpers/directives/index.d.ts +0 -1
  395. package/table-helpers/services/table.service.d.ts +3 -1
  396. package/table-helpers/table-helpers.module.d.ts +10 -11
  397. package/table-helpers/table.d.ts +2 -1
  398. package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +3 -7
  399. package/value-help-dialog/models/vhd-filter.model.d.ts +8 -2
  400. package/approval-flow/README.md +0 -25
  401. package/button/README.md +0 -25
  402. package/dynamic-page/README.md +0 -25
  403. package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +0 -36
  404. package/feed-input/README.md +0 -25
  405. package/form/README.md +0 -25
  406. package/fundamental-ngx-platform-v0.49.0-rc.9.tgz +0 -0
  407. package/icon-tab-bar/README.md +0 -25
  408. package/info-label/README.md +0 -25
  409. package/link/README.md +0 -25
  410. package/list/README.md +0 -25
  411. package/menu/README.md +0 -25
  412. package/menu-button/README.md +0 -25
  413. package/message-popover/README.md +0 -7
  414. package/object-marker/README.md +0 -25
  415. package/object-status/README.md +0 -25
  416. package/page-footer/README.md +0 -25
  417. package/panel/README.md +0 -25
  418. package/search-field/README.md +0 -25
  419. package/settings-generator/README.md +0 -7
  420. package/shared/README.md +0 -25
  421. package/slider/README.md +0 -25
  422. package/smart-filter-bar/README.md +0 -29
  423. package/split-menu-button/README.md +0 -25
  424. package/table/README.md +0 -25
  425. package/table-helpers/README.md +0 -3
  426. package/table-helpers/directives/table-cell-selectable.directive.d.ts +0 -9
  427. package/value-help-dialog/README.md +0 -25
  428. package/variant-management/README.md +0 -7
  429. package/wizard-generator/README.md +0 -25
@@ -249,10 +249,10 @@ export class SelectTabComponent extends VhdBaseTab {
249
249
  this._selectedMap[s[this.uniqueKey]] = true;
250
250
  }
251
251
  }
252
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SelectTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: SelectTabComponent, isStandalone: true, selector: "fdp-select-tab", inputs: { selectTabTitleId: "selectTabTitleId", selectTabCountId: "selectTabCountId", selected: "selected", loading: "loading", filters: "filters", selection: "selection", allowSelectAll: "allowSelectAll", uniqueKey: "uniqueKey", pageSize: "pageSize", defaultMobileHeaders: "defaultMobileHeaders", displayedData: "displayedData" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "infiniteScrollTable", first: true, predicate: InfiniteScrollDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"table-header\">\n <h5 fd-title role=\"heading\" aria-level=\"5\">\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\n </h5>\n</div>\n<div\n class=\"fdp-value-help-dialog__table-holder table-content\"\n fd-scrollbar\n fdInfiniteScroll\n (onScrollAction)=\"_showMoreElements()\"\n [scrollPercent]=\"80\"\n role=\"table\"\n>\n <table\n fd-table\n [popIn]=\"mobile\"\n [noBorderX]=\"mobile\"\n [noBorderY]=\"false\"\n [attr.aria-colcount]=\"_tableFilters.main.length\"\n [attr.aria-rowcount]=\"displayedData.length\"\n role=\"grid\"\n aria-multiselectable=\"true\"\n [attr.aria-labelledby]=\"selectTabTitleId + ' ' + selectTabCountId\"\n >\n <label [id]=\"selectTabCountId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.selectTabCountHiddenA11yLabel'\n | fdTranslate: { rowCount: displayedData.length, colCount: _tableFilters.main.length }\n }}\n </label>\n <label [id]=\"selectTabTitleId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\n </label>\n <thead fd-table-header>\n @if (displayedData.length && _tableFilters) {\n <tr fd-table-row>\n <th fd-table-cell [fitContent]=\"mobile\">\n @if (isMultiSelection && allowSelectAll) {\n <fd-checkbox\n [name]=\"uid + '-row-all'\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"_selectedAll\"\n (ngModelChange)=\"_toggleAllRows()\"\n ></fd-checkbox>\n }\n </th>\n @for (\n filter of _tableFilters.main;\n track _trackByFilterFn(colindex, filter);\n let colindex = $index\n ) {\n <th fd-table-cell [attr.aria-colindex]=\"colindex\">\n {{ filter.label }}\n </th>\n }\n </tr>\n }\n </thead>\n <tbody fd-table-body>\n @for (\n row of displayedData | slice: _shownFrom : _shownCount;\n track _trackByTableRowFn(i, row);\n let i = $index\n ) {\n <tr\n fd-table-row\n [hoverable]=\"!mobile\"\n [main]=\"mobile\"\n [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\"\n [activable]=\"!isMultiSelection\"\n (click)=\"!isMultiSelection && _toggleSelectRow(row)\"\n >\n <td fd-table-cell [fitContent]=\"mobile\">\n @if (isMultiSelection) {\n <fd-checkbox\n [name]=\"uid + '-row-' + i\"\n [ngModel]=\"_selectedMap[row[uniqueKey]]\"\n (change)=\"_toggleSelectRow(row)\"\n ></fd-checkbox>\n }\n </td>\n @for (filter of _tableFilters.main; track filter; let rowIndex = $index) {\n <td fd-table-cell [attr.aria-rowindex]=\"rowIndex\">\n @if (_columnDefMap.get(filter.key); as columnDef) {\n <ng-template\n [ngTemplateOutlet]=\"columnDef.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n key: filter.key,\n value: row[filter.key] || ''\n }\"\n ></ng-template>\n } @else {\n {{ row[filter.key] || '' }}\n }\n </td>\n }\n </tr>\n @if (mobile && _tableFilters.secondary.length) {\n <tr fd-table-row [secondary]=\"true\" [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\">\n <td fd-table-cell></td>\n <td colspan=\"100%\" fd-table-cell [fitContent]=\"true\">\n @for (filter of _tableFilters.secondary; track filter) {\n <p fd-table-text>\n <label>{{ filter.label }}:</label>\n {{ row[filter.key] || '' }}\n </p>\n }\n </td>\n </tr>\n }\n }\n @if (displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length) {\n <tr fd-table-row>\n <td colspan=\"100%\">\n <div fd-bar barDesign=\"header-with-subheader\">\n <div fd-bar-middle>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"'platformVHD.selectTabMoreBtnLabel' | fdTranslate\"\n (click)=\"_showMoreElements()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </td>\n </tr>\n }\n @if (!displayedData.length) {\n @if (loading) {\n <tr fd-table-row *fdkRepeat=\"3\">\n <td fd-table-cell *fdkRepeat=\"3\">\n <fd-skeleton [style.margin]=\"'auto 0'\" type=\"text\" textLines=\"1\" width=\"60%\"></fd-skeleton>\n </td>\n </tr>\n } @else {\n <tr fd-table-row>\n <td fd-table-cell colspan=\"100%\">\n <div class=\"fdp-value-help-dialog__empty-message\">\n {{ 'platformVHD.searchTableEmptyMessage' | fdTranslate }}\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n", styles: [".fdp-value-help-dialog__advanced-filters .fd-col{padding-top:0}.fdp-value-help-dialog__content-holder fdp-select-tab{display:flex;flex-direction:column;overflow:hidden;height:100%}.fdp-value-help-dialog__content-holder .table-header{flex:0 0 auto}.fdp-value-help-dialog__content-holder .table-content{flex:1 1 auto;overflow:auto;min-height:5rem}.fdp-value-help-dialog__table-holder{padding-top:0;padding-bottom:0}.fdp-value-help-dialog__empty-message{padding:1rem 2rem}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title], span[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[fdInfiniteScroll]", inputs: ["scrollPercent", "scrollOffset"], outputs: ["onScrollAction"] }, { kind: "component", type: TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "directive", type: TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: RepeatDirective, selector: "[fdkRepeat]", inputs: ["fdkRepeat"] }, { kind: "component", type: SkeletonComponent, selector: "fd-skeleton", inputs: ["animated", "type", "textLines", "width", "height"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SelectTabComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SelectTabComponent, isStandalone: true, selector: "fdp-select-tab", inputs: { selectTabTitleId: "selectTabTitleId", selectTabCountId: "selectTabCountId", selected: "selected", loading: "loading", filters: "filters", selection: "selection", allowSelectAll: "allowSelectAll", uniqueKey: "uniqueKey", pageSize: "pageSize", defaultMobileHeaders: "defaultMobileHeaders", displayedData: "displayedData" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "infiniteScrollTable", first: true, predicate: InfiniteScrollDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"table-header\">\n <h5 fd-title role=\"heading\" aria-level=\"5\">\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\n </h5>\n</div>\n<div\n class=\"fdp-value-help-dialog__table-holder table-content\"\n fd-scrollbar\n fdInfiniteScroll\n (onScrollAction)=\"_showMoreElements()\"\n [scrollPercent]=\"80\"\n role=\"table\"\n>\n <table\n fd-table\n [popIn]=\"mobile\"\n [noBorderX]=\"mobile\"\n [noBorderY]=\"false\"\n [attr.aria-colcount]=\"_tableFilters.main.length\"\n [attr.aria-rowcount]=\"displayedData.length\"\n role=\"grid\"\n aria-multiselectable=\"true\"\n [attr.aria-labelledby]=\"selectTabTitleId + ' ' + selectTabCountId\"\n >\n <label [id]=\"selectTabCountId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{\n 'platformVHD.selectTabCountHiddenA11yLabel'\n | fdTranslate: { rowCount: displayedData.length, colCount: _tableFilters.main.length }\n }}\n </label>\n <label [id]=\"selectTabTitleId\" fd-form-label class=\"fdp-value-help-dialog__hidden_label\">\n {{ 'platformVHD.selectTabDisplayCountLabel' | fdTranslate: { count: displayedData.length } }}\n </label>\n <thead fd-table-header>\n @if (displayedData.length && _tableFilters) {\n <tr fd-table-row>\n <th fd-table-cell [fitContent]=\"mobile\">\n @if (isMultiSelection && allowSelectAll) {\n <fd-checkbox\n [name]=\"uid + '-row-all'\"\n [tristate]=\"true\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"_selectedAll\"\n (ngModelChange)=\"_toggleAllRows()\"\n ></fd-checkbox>\n }\n </th>\n @for (\n filter of _tableFilters.main;\n track _trackByFilterFn(colindex, filter);\n let colindex = $index\n ) {\n <th fd-table-cell [attr.aria-colindex]=\"colindex\">\n {{ filter.label }}\n </th>\n }\n </tr>\n }\n </thead>\n <tbody fd-table-body>\n @for (\n row of displayedData | slice: _shownFrom : _shownCount;\n track _trackByTableRowFn(i, row);\n let i = $index\n ) {\n <tr\n fd-table-row\n [hoverable]=\"!mobile\"\n [main]=\"mobile\"\n [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\"\n [activable]=\"!isMultiSelection\"\n (click)=\"!isMultiSelection && _toggleSelectRow(row)\"\n >\n <td fd-table-cell [fitContent]=\"mobile\">\n @if (isMultiSelection) {\n <fd-checkbox\n [name]=\"uid + '-row-' + i\"\n [ngModel]=\"_selectedMap[row[uniqueKey]]\"\n (change)=\"_toggleSelectRow(row)\"\n ></fd-checkbox>\n }\n </td>\n @for (filter of _tableFilters.main; track filter; let rowIndex = $index) {\n <td fd-table-cell [attr.aria-rowindex]=\"rowIndex\">\n @if (_columnDefMap.get(filter.key); as columnDef) {\n <ng-template\n [ngTemplateOutlet]=\"columnDef.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n key: filter.key,\n value: row[filter.key] || ''\n }\"\n ></ng-template>\n } @else {\n {{ row[filter.key] || '' }}\n }\n </td>\n }\n </tr>\n @if (mobile && _tableFilters.secondary.length) {\n <tr fd-table-row [secondary]=\"true\" [attr.aria-selected]=\"_selectedMap[row[uniqueKey]]\">\n <td fd-table-cell></td>\n <td colspan=\"100%\" fd-table-cell [fitContent]=\"true\">\n @for (filter of _tableFilters.secondary; track filter) {\n <p fd-table-text>\n <label>{{ filter.label }}:</label>\n {{ row[filter.key] || '' }}\n </p>\n }\n </td>\n </tr>\n }\n }\n @if (displayedData.length && mobile && _shownCount && _shownCount !== displayedData.length) {\n <tr fd-table-row>\n <td colspan=\"100%\">\n <div fd-bar barDesign=\"header-with-subheader\">\n <div fd-bar-middle>\n <fd-bar-element>\n <button\n fd-button\n fdType=\"transparent\"\n [label]=\"'platformVHD.selectTabMoreBtnLabel' | fdTranslate\"\n (click)=\"_showMoreElements()\"\n ></button>\n </fd-bar-element>\n </div>\n </div>\n </td>\n </tr>\n }\n @if (!displayedData.length) {\n @if (loading) {\n <tr fd-table-row *fdkRepeat=\"3\">\n <td fd-table-cell *fdkRepeat=\"3\">\n <fd-skeleton [style.margin]=\"'auto 0'\" type=\"text\" textLines=\"1\" width=\"60%\"></fd-skeleton>\n </td>\n </tr>\n } @else {\n <tr fd-table-row>\n <td fd-table-cell colspan=\"100%\">\n <div class=\"fdp-value-help-dialog__empty-message\">\n {{ 'platformVHD.searchTableEmptyMessage' | fdTranslate }}\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n", styles: [".fdp-value-help-dialog__advanced-filters .fd-col{padding-top:0}.fdp-value-help-dialog__content-holder fdp-select-tab{display:flex;flex-direction:column;overflow:hidden;height:100%}.fdp-value-help-dialog__content-holder .table-header{flex:0 0 auto}.fdp-value-help-dialog__content-holder .table-content{flex:1 1 auto;overflow:auto;min-height:5rem}.fdp-value-help-dialog__table-holder{padding-top:0;padding-bottom:0}.fdp-value-help-dialog__empty-message{padding:1rem 2rem}\n"], dependencies: [{ kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[fdInfiniteScroll]", inputs: ["scrollPercent", "scrollOffset"], outputs: ["onScrollAction"] }, { kind: "component", type: TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "directive", type: TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TableBodyDirective, selector: "[fdTableBody], [fd-table-body]", inputs: ["noBorderX", "noBorderY"] }, { kind: "directive", type: TableTextDirective, selector: "[fdTableText], [fd-table-text]", inputs: ["fdTableTextClass", "noWrap", "title", "maxWidth"] }, { kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: RepeatDirective, selector: "[fdkRepeat]", inputs: ["fdkRepeat"] }, { kind: "component", type: SkeletonComponent, selector: "fd-skeleton", inputs: ["animated", "type", "textLines", "width", "height"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
254
254
  }
255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SelectTabComponent, decorators: [{
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SelectTabComponent, decorators: [{
256
256
  type: Component,
257
257
  args: [{ selector: 'fdp-select-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
258
258
  TitleComponent,
@@ -309,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
309
309
  type: ViewChild,
310
310
  args: [InfiniteScrollDirective]
311
311
  }] } });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvc2VsZWN0LXRhYi9zZWxlY3QtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9zZWxlY3QtdGFiL3NlbGVjdC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJB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bnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgU2xpY2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9jdXNhYmxlR3JpZERpcmVjdGl2ZSwgUmVwZWF0RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmFyQ29tcG9uZW50LCBCYXJFbGVtZW50RGlyZWN0aXZlLCBCYXJNaWRkbGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2tlbGV0b24nO1xuaW1wb3J0IHtcbiAgICBUYWJsZUJvZHlEaXJlY3RpdmUsXG4gICAgVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICAgIFRhYmxlUm93RGlyZWN0aXZlLFxuICAgIFRhYmxlVGV4dERpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGFibGUnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmFsdWVIZWxwQ29sdW1uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWNvbHVtbi1kZWYuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZkaFRhYmxlU2VsZWN0aW9uLCBWaGRGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZoZC1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgVmhkQmFzZVRhYiB9IGZyb20gJy4uL2Jhc2UtdGFiL3ZoZC1iYXNlLXRhYi5jb21wb25lbnQnO1xuXG5sZXQgdGl0bGVVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNlbGVjdC10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VsZWN0LXRhYi5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgICAgIEZvY3VzYWJsZUdyaWREaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlQ29tcG9uZW50LFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZVJvd0RpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFRhYmxlQm9keURpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVUZXh0RGlyZWN0aXZlLFxuICAgICAgICBCYXJDb21wb25lbnQsXG4gICAgICAgIEJhck1pZGRsZURpcmVjdGl2ZSxcbiAgICAgICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBSZXBlYXREaXJlY3RpdmUsXG4gICAgICAgIFNrZWxldG9uQ29tcG9uZW50LFxuICAgICAgICBTbGljZVBpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0VGFiQ29tcG9uZW50PFQ+IGV4dGVuZHMgVmhkQmFzZVRhYiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdFRpdGxlSWQgPSBgZmQtc2VsZWN0LXRhYi10aXRsZS1pZC0ke3RpdGxlVW5pcXVlSWQrK31gO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRDb3VudElkID0gYGZkLXNlbGVjdC10YWItdGl0bGUtY291bnQtaWQtJHt0aXRsZVVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBTZWxlY3QgdGFiIHRpdGxlIGVsZW1lbnQgSUQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdFRhYlRpdGxlSWQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFRpdGxlSWQ7XG5cbiAgICAvKiogU2VsZWN0IHRhYiBjb3VudCBlbGVtZW50IElEICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RUYWJDb3VudElkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRDb3VudElkO1xuXG4gICAgLyoqIFNlbGVjdGVkIGl0ZW1zICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZDogVFtdID0gW107XG5cbiAgICAvKiogTG9hZGluZyBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqIEFjdHVhbCBmaWx0ZXJzICovXG4gICAgQElucHV0KClcbiAgICBmaWx0ZXJzOiBWaGRGaWx0ZXJbXSA9IFtdO1xuXG4gICAgLyoqIENsb3NlIGRpYWxvZyBpbW1lZGlhdGVseSBhZnRlciBzZWxlY3QgYW55IHJvdyBmcm9tIHNlYXJjaCB0YWJsZS4gSXQnbGwgYmUgc2tpcHBlZCBpZiBtdWx0aSBvcHRpb24gaXMgdHJ1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uOiBWZGhUYWJsZVNlbGVjdGlvbiA9ICdzaW5nbGUnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgdXNlcnMgdG8gc2VsZWN0IGFsbCB0YWJsZSBlbnRyaWVzIHdpdGggb25lIGNoZWNrYm94LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dTZWxlY3RBbGwgPSB0cnVlO1xuXG4gICAgLyoqIFVuaXEgZmllbGQgZnJvbSBkYXRhIHNvdXJjZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5pcXVlS2V5ID0gJ2lkJztcblxuICAgIC8qKiBJdGVtcyBwZXIgcGFnZSBmb3IgcGFnaW5hdGlvbiBiZWxvdyBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICAvKiogQ291bnQgb2YgZGVmYXVsdCBtb2JpbGUgaGVhZGVyIGZyb20gc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBkZWZhdWx0TW9iaWxlSGVhZGVycyA9IDI7XG5cbiAgICAvKiogRGlzcGxheWVkIGRhdGEgZm9yIHNlYXJjaCB0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheWVkRGF0YTogVFtdID0gW107XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHJvdyB3YXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUpIGluZmluaXRlU2Nyb2xsVGFibGU6IEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gaW5kZXRlcm1pbmF0ZSBmbGFnIGZvciBgc2VsZWN0IGFsbGAgY2hlY2tib3ggKi9cbiAgICBfc2VsZWN0ZWRBbGw6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBTaG93biBpdGVtcyBjb3VudCBpbiBtb2JpbGUgdmlldyAqL1xuICAgIF9zaG93bkZyb20gPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gU2hvd24gaXRlbXMgY291bnQgaW4gbW9iaWxlIHZpZXcgKi9cbiAgICBfc2hvd25Db3VudCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBDdXJyZW50IHBhZ2UgaW4gZGVza3RvcCB2aWV3ICovXG4gICAgX2N1cnJlbnRQYWdlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEhlYWRlcnMgYW5kIGJvZHkgZm9yIHNlYXJjaCB0YWJsZSAqL1xuICAgIF90YWJsZUZpbHRlcnM6IHtcbiAgICAgICAgbWFpbjogVmhkRmlsdGVyW107XG4gICAgICAgIHNlY29uZGFyeTogVmhkRmlsdGVyW107XG4gICAgfSA9IHtcbiAgICAgICAgbWFpbjogW10sXG4gICAgICAgIHNlY29uZGFyeTogW11cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRNYXA6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc1NpbmdsZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uID09PSAnc2luZ2xlJztcbiAgICB9XG4gICAgLyoqIFNlbGVjdGlvbiB0eXBlIGdldHRlcnMgKi9cbiAgICBnZXQgaXNPbmNlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdvbmNlJztcbiAgICB9XG4gICAgLyoqIFNlbGVjdGlvbiB0eXBlIGdldHRlcnMgKi9cbiAgICBnZXQgaXNNdWx0aVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uID09PSAnbXVsdGknO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbHVtbkRlZk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmU+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgc2VsZWN0ZWRJdGVtczogVFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZoZCA9IGluamVjdChWaGRDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHRydWUpLnRoZW4oKCkgPT4gdGhpcy5fY2hlY2tTY3JvbGxBbmRTaG93TW9yZSgpKTtcblxuICAgICAgICB0aGlzLl92aGQ/LmNvbHVtbkRlZi5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5EZWZNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuX3ZoZD8uY29sdW1uRGVmLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5EZWZNYXAuc2V0KGl0ZW0uY29sdW1uLCBpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnZmlsdGVycycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUZpbHRlcnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2Rpc3BsYXllZERhdGEnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hEaXNwbGF5ZWREYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdzZWxlY3RlZCcgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZCB8fCBbXTtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hTZWxlY3RlZE1hcCgpO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRyaXN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBUcmFjayBmdW5jdGlvbiBmb3IgbWFpbiBkYXRhICovXG4gICAgX3RyYWNrQnlUYWJsZVJvd0ZuOiAoX2luZGV4OiBudW1iZXIsIGl0ZW06IFQpID0+IHN0cmluZyB8IHVuZGVmaW5lZCA9IChfaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4ge1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy51bmlxdWVLZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgZnVuY3Rpb24gZm9yIGZpbHRlcnMgKi9cbiAgICBfdHJhY2tCeUZpbHRlckZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBWaGRGaWx0ZXIpOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaXRlbSAmJiBpdGVtLmtleSA/IGl0ZW0ua2V5IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNob3cgbW9yZSBlbGVtZW50cyAqL1xuICAgIF9zaG93TW9yZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYWdlU2l6ZSAmJiB0aGlzLl9zaG93bkNvdW50ICE9PSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ICs9IHRoaXMucGFnZVNpemU7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ID0gTWF0aC5taW4odGhpcy5fc2hvd25Db3VudCwgdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ID0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZWZyZXNoIHBhZ2UgaW4gZGVza3RvcCB2aWV3ICovXG4gICAgX3VwZGF0ZVBhZ2UocGFnZU51bWJlciA9IDEpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFnZVNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gcGFnZU51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duRnJvbSA9IChwYWdlTnVtYmVyIC0gMSkgKiB0aGlzLnBhZ2VTaXplO1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCA9IE1hdGgubWluKHRoaXMuX3Nob3duRnJvbSArIHRoaXMucGFnZVNpemUsIHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCA9IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG9nZ2xlIHNlbGVjdGVkIHN0YXRlIGZvciBhbGwgaXRlbXMgICovXG4gICAgX3RvZ2dsZUFsbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEFsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLmRpc3BsYXllZERhdGE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoU2VsZWN0ZWRNYXAoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFRyaXN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvZ2dsZSBzZWxlY3RlZCBzdGF0ZSBmb3Igb25lIGl0ZW1zICAqL1xuICAgIF90b2dnbGVTZWxlY3RSb3coaXRlbTogVCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWRNYXBbaXRlbVt0aGlzLnVuaXF1ZUtleV1dO1xuICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChzOiBUKSA9PiBzW3RoaXMudW5pcXVlS2V5XSAhPT0gaXRlbVt0aGlzLnVuaXF1ZUtleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwW2l0ZW1bdGhpcy51bmlxdWVLZXldXSA9ICF0aGlzLl9zZWxlY3RlZE1hcFtpdGVtW3RoaXMudW5pcXVlS2V5XV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGVhclNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtpdGVtXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUcmlzdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tTY3JvbGxBbmRTaG93TW9yZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCAhPT0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFRhYmxlPy5zaG91bGRUcmlnZ2VyQWN0aW9uKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TW9yZUVsZW1lbnRzKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja1Njcm9sbEFuZFNob3dNb3JlKCk7XG4gICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFNob3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dNb3JlRWxlbWVudHMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrU2Nyb2xsQW5kU2hvd01vcmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1hbnVhbGx5IGNsZWFyIHNlbGVjdGVkIGl0ZW1zICovXG4gICAgcHJpdmF0ZSBfY2xlYXJTZWxlY3RlZEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcCA9IHt9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZWZyZXNoIGluZGV0ZXJtaW5hdGUgYXR0cmlidXRlIG9uIGBzZWxlY3QgYWxsYCBjaGVja2JveCAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hUcmlzdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBPYmplY3QudmFsdWVzKHRoaXMuX3NlbGVjdGVkTWFwKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQgPT09IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldCB1cCBmaWx0ZXJzICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgbGV0IF9tb2JpbGVUYWJsZUhlYWRlcnMgPSB0aGlzLmZpbHRlcnMuZmlsdGVyKChmKSA9PiBmLm1haW4pLm1hcCgoZikgPT4gZi5rZXkpO1xuICAgICAgICAgICAgaWYgKCFfbW9iaWxlVGFibGVIZWFkZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIF9tb2JpbGVUYWJsZUhlYWRlcnMgPSB0aGlzLmZpbHRlcnMuc2xpY2UoMCwgdGhpcy5kZWZhdWx0TW9iaWxlSGVhZGVycykubWFwKChmKSA9PiBmLmtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl90YWJsZUZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgbWFpbjogdGhpcy5maWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBfbW9iaWxlVGFibGVIZWFkZXJzLnNvbWUoKGtleSkgPT4ga2V5ID09PSBmaWx0ZXIua2V5KSksXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OiB0aGlzLmZpbHRlcnMuZmlsdGVyKChmaWx0ZXIpID0+ICFfbW9iaWxlVGFibGVIZWFkZXJzLnNvbWUoKGtleSkgPT4ga2V5ID09PSBmaWx0ZXIua2V5KSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZUZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgbWFpbjogdGhpcy5maWx0ZXJzLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeTogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZWZyZXNoIGRpc3BsYXkgZGF0YSAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hEaXNwbGF5ZWREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNldFNob3duKCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUcmlzdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZnJlc2ggc2VsZWN0ZWQgbWFwIGZvciBkaXNwbGF5IGRhdGEgKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoU2VsZWN0ZWRNYXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRpc3BsYXllZERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwW2l0ZW1bdGhpcy51bmlxdWVLZXldXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLnNlbGVjdGVkSXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwW3NbdGhpcy51bmlxdWVLZXldXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgPGg1IGZkLXRpdGxlIHJvbGU9XCJoZWFkaW5nXCIgYXJpYS1sZXZlbD1cIjVcIj5cbiAgICAgICAge3sgJ3BsYXRmb3JtVkhELnNlbGVjdFRhYkRpc3BsYXlDb3VudExhYmVsJyB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCB9IH19XG4gICAgPC9oNT5cbjwvZGl2PlxuPGRpdlxuICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190YWJsZS1ob2xkZXIgdGFibGUtY29udGVudFwiXG4gICAgZmQtc2Nyb2xsYmFyXG4gICAgZmRJbmZpbml0ZVNjcm9sbFxuICAgIChvblNjcm9sbEFjdGlvbik9XCJfc2hvd01vcmVFbGVtZW50cygpXCJcbiAgICBbc2Nyb2xsUGVyY2VudF09XCI4MFwiXG4gICAgcm9sZT1cInRhYmxlXCJcbj5cbiAgICA8dGFibGVcbiAgICAgICAgZmQtdGFibGVcbiAgICAgICAgW3BvcEluXT1cIm1vYmlsZVwiXG4gICAgICAgIFtub0JvcmRlclhdPVwibW9iaWxlXCJcbiAgICAgICAgW25vQm9yZGVyWV09XCJmYWxzZVwiXG4gICAgICAgIFthdHRyLmFyaWEtY29sY291bnRdPVwiX3RhYmxlRmlsdGVycy5tYWluLmxlbmd0aFwiXG4gICAgICAgIFthdHRyLmFyaWEtcm93Y291bnRdPVwiZGlzcGxheWVkRGF0YS5sZW5ndGhcIlxuICAgICAgICByb2xlPVwiZ3JpZFwiXG4gICAgICAgIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJzZWxlY3RUYWJUaXRsZUlkICsgJyAnICsgc2VsZWN0VGFiQ291bnRJZFwiXG4gICAgPlxuICAgICAgICA8bGFiZWwgW2lkXT1cInNlbGVjdFRhYkNvdW50SWRcIiBmZC1mb3JtLWxhYmVsIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19oaWRkZW5fbGFiZWxcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3BsYXRmb3JtVkhELnNlbGVjdFRhYkNvdW50SGlkZGVuQTExeUxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHJvd0NvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCwgY29sQ291bnQ6IF90YWJsZUZpbHRlcnMubWFpbi5sZW5ndGggfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RUYWJUaXRsZUlkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0VGFiRGlzcGxheUNvdW50TGFiZWwnIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IGRpc3BsYXllZERhdGEubGVuZ3RoIH0gfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHRoZWFkIGZkLXRhYmxlLWhlYWRlcj5cbiAgICAgICAgICAgIEBpZiAoZGlzcGxheWVkRGF0YS5sZW5ndGggJiYgX3RhYmxlRmlsdGVycykge1xuICAgICAgICAgICAgICAgIDx0ciBmZC10YWJsZS1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIFtmaXRDb250ZW50XT1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc011bHRpU2VsZWN0aW9uICYmIGFsbG93U2VsZWN0QWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInVpZCArICctcm93LWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJpc3RhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmlzdGF0ZVNlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfc2VsZWN0ZWRBbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdG9nZ2xlQWxsUm93cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgb2YgX3RhYmxlRmlsdGVycy5tYWluO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgX3RyYWNrQnlGaWx0ZXJGbihjb2xpbmRleCwgZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2xpbmRleCA9ICRpbmRleFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIFthdHRyLmFyaWEtY29saW5kZXhdPVwiY29saW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXIubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHkgZmQtdGFibGUtYm9keT5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIHJvdyBvZiBkaXNwbGF5ZWREYXRhIHwgc2xpY2U6IF9zaG93bkZyb20gOiBfc2hvd25Db3VudDtcbiAgICAgICAgICAgICAgICB0cmFjayBfdHJhY2tCeVRhYmxlUm93Rm4oaSwgcm93KTtcbiAgICAgICAgICAgICAgICBsZXQgaSA9ICRpbmRleFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgIGZkLXRhYmxlLXJvd1xuICAgICAgICAgICAgICAgICAgICBbaG92ZXJhYmxlXT1cIiFtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbbWFpbl09XCJtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIl9zZWxlY3RlZE1hcFtyb3dbdW5pcXVlS2V5XV1cIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZhYmxlXT1cIiFpc011bHRpU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFpc011bHRpU2VsZWN0aW9uICYmIF90b2dnbGVTZWxlY3RSb3cocm93KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCBbZml0Q29udGVudF09XCJtb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNNdWx0aVNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLXJvdy0nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIl9zZWxlY3RlZE1hcFtyb3dbdW5pcXVlS2V5XV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIl90b2dnbGVTZWxlY3RSb3cocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpbHRlciBvZiBfdGFibGVGaWx0ZXJzLm1haW47IHRyYWNrIGZpbHRlcjsgbGV0IHJvd0luZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCBbYXR0ci5hcmlhLXJvd2luZGV4XT1cInJvd0luZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChfY29sdW1uRGVmTWFwLmdldChmaWx0ZXIua2V5KTsgYXMgY29sdW1uRGVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uRGVmLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBmaWx0ZXIua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByb3dbZmlsdGVyLmtleV0gfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93W2ZpbHRlci5rZXldIHx8ICcnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgQGlmIChtb2JpbGUgJiYgX3RhYmxlRmlsdGVycy5zZWNvbmRhcnkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ciBmZC10YWJsZS1yb3cgW3NlY29uZGFyeV09XCJ0cnVlXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJfc2VsZWN0ZWRNYXBbcm93W3VuaXF1ZUtleV1dXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDAlXCIgZmQtdGFibGUtY2VsbCBbZml0Q29udGVudF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoZmlsdGVyIG9mIF90YWJsZUZpbHRlcnMuc2Vjb25kYXJ5OyB0cmFjayBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFibGUtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBmaWx0ZXIubGFiZWwgfX06PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvd1tmaWx0ZXIua2V5XSB8fCAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoICYmIG1vYmlsZSAmJiBfc2hvd25Db3VudCAmJiBfc2hvd25Db3VudCAhPT0gZGlzcGxheWVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImhlYWRlci13aXRoLXN1YmhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLW1pZGRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdFRhYk1vcmVCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zaG93TW9yZUVsZW1lbnRzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgQGlmIChsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ciBmZC10YWJsZS1yb3cgKmZka1JlcGVhdD1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpmZGtSZXBlYXQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXNrZWxldG9uIFtzdHlsZS5tYXJnaW5dPVwiJ2F1dG8gMCdcIiB0eXBlPVwidGV4dFwiIHRleHRMaW5lcz1cIjFcIiB3aWR0aD1cIjYwJVwiPjwvZmQtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgY29sc3Bhbj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19lbXB0eS1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWFyY2hUYWJsZUVtcHR5TWVzc2FnZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbjwvZGl2PlxuIl19
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhbHVlLWhlbHAtZGlhbG9nL2NvbXBvbmVudHMvc2VsZWN0LXRhYi9zZWxlY3QtdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvY29tcG9uZW50cy9zZWxlY3QtdGFiL3NlbGVjdC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJB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bnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgU2xpY2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9jdXNhYmxlR3JpZERpcmVjdGl2ZSwgUmVwZWF0RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmFyQ29tcG9uZW50LCBCYXJFbGVtZW50RGlyZWN0aXZlLCBCYXJNaWRkbGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2tlbGV0b24nO1xuaW1wb3J0IHtcbiAgICBUYWJsZUJvZHlEaXJlY3RpdmUsXG4gICAgVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIFRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICAgIFRhYmxlUm93RGlyZWN0aXZlLFxuICAgIFRhYmxlVGV4dERpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGFibGUnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmFsdWVIZWxwQ29sdW1uRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWNvbHVtbi1kZWYuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZkaFRhYmxlU2VsZWN0aW9uLCBWaGRGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmhkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZoZC1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgVmhkQmFzZVRhYiB9IGZyb20gJy4uL2Jhc2UtdGFiL3ZoZC1iYXNlLXRhYi5jb21wb25lbnQnO1xuXG5sZXQgdGl0bGVVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNlbGVjdC10YWInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VsZWN0LXRhYi5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUsXG4gICAgICAgIEZvY3VzYWJsZUdyaWREaXJlY3RpdmUsXG4gICAgICAgIFRhYmxlQ29tcG9uZW50LFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBUYWJsZVJvd0RpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFRhYmxlQm9keURpcmVjdGl2ZSxcbiAgICAgICAgVGFibGVUZXh0RGlyZWN0aXZlLFxuICAgICAgICBCYXJDb21wb25lbnQsXG4gICAgICAgIEJhck1pZGRsZURpcmVjdGl2ZSxcbiAgICAgICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBSZXBlYXREaXJlY3RpdmUsXG4gICAgICAgIFNrZWxldG9uQ29tcG9uZW50LFxuICAgICAgICBTbGljZVBpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0VGFiQ29tcG9uZW50PFQ+IGV4dGVuZHMgVmhkQmFzZVRhYiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZGVmYXVsdFRpdGxlSWQgPSBgZmQtc2VsZWN0LXRhYi10aXRsZS1pZC0ke3RpdGxlVW5pcXVlSWQrK31gO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRDb3VudElkID0gYGZkLXNlbGVjdC10YWItdGl0bGUtY291bnQtaWQtJHt0aXRsZVVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBTZWxlY3QgdGFiIHRpdGxlIGVsZW1lbnQgSUQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdFRhYlRpdGxlSWQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFRpdGxlSWQ7XG5cbiAgICAvKiogU2VsZWN0IHRhYiBjb3VudCBlbGVtZW50IElEICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RUYWJDb3VudElkOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRDb3VudElkO1xuXG4gICAgLyoqIFNlbGVjdGVkIGl0ZW1zICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZDogVFtdID0gW107XG5cbiAgICAvKiogTG9hZGluZyBzdGF0ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqIEFjdHVhbCBmaWx0ZXJzICovXG4gICAgQElucHV0KClcbiAgICBmaWx0ZXJzOiBWaGRGaWx0ZXJbXSA9IFtdO1xuXG4gICAgLyoqIENsb3NlIGRpYWxvZyBpbW1lZGlhdGVseSBhZnRlciBzZWxlY3QgYW55IHJvdyBmcm9tIHNlYXJjaCB0YWJsZS4gSXQnbGwgYmUgc2tpcHBlZCBpZiBtdWx0aSBvcHRpb24gaXMgdHJ1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uOiBWZGhUYWJsZVNlbGVjdGlvbiA9ICdzaW5nbGUnO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgdXNlcnMgdG8gc2VsZWN0IGFsbCB0YWJsZSBlbnRyaWVzIHdpdGggb25lIGNoZWNrYm94LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dTZWxlY3RBbGwgPSB0cnVlO1xuXG4gICAgLyoqIFVuaXEgZmllbGQgZnJvbSBkYXRhIHNvdXJjZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5pcXVlS2V5ID0gJ2lkJztcblxuICAgIC8qKiBJdGVtcyBwZXIgcGFnZSBmb3IgcGFnaW5hdGlvbiBiZWxvdyBzZWFyY2ggdGFibGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICAvKiogQ291bnQgb2YgZGVmYXVsdCBtb2JpbGUgaGVhZGVyIGZyb20gc2VhcmNoIHRhYmxlICovXG4gICAgQElucHV0KClcbiAgICBkZWZhdWx0TW9iaWxlSGVhZGVycyA9IDI7XG5cbiAgICAvKiogRGlzcGxheWVkIGRhdGEgZm9yIHNlYXJjaCB0YWJsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheWVkRGF0YTogVFtdID0gW107XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHJvdyB3YXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoSW5maW5pdGVTY3JvbGxEaXJlY3RpdmUpIGluZmluaXRlU2Nyb2xsVGFibGU6IEluZmluaXRlU2Nyb2xsRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gaW5kZXRlcm1pbmF0ZSBmbGFnIGZvciBgc2VsZWN0IGFsbGAgY2hlY2tib3ggKi9cbiAgICBfc2VsZWN0ZWRBbGw6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiBTaG93biBpdGVtcyBjb3VudCBpbiBtb2JpbGUgdmlldyAqL1xuICAgIF9zaG93bkZyb20gPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gU2hvd24gaXRlbXMgY291bnQgaW4gbW9iaWxlIHZpZXcgKi9cbiAgICBfc2hvd25Db3VudCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBDdXJyZW50IHBhZ2UgaW4gZGVza3RvcCB2aWV3ICovXG4gICAgX2N1cnJlbnRQYWdlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEhlYWRlcnMgYW5kIGJvZHkgZm9yIHNlYXJjaCB0YWJsZSAqL1xuICAgIF90YWJsZUZpbHRlcnM6IHtcbiAgICAgICAgbWFpbjogVmhkRmlsdGVyW107XG4gICAgICAgIHNlY29uZGFyeTogVmhkRmlsdGVyW107XG4gICAgfSA9IHtcbiAgICAgICAgbWFpbjogW10sXG4gICAgICAgIHNlY29uZGFyeTogW11cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRNYXA6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgICAvKiogU2VsZWN0aW9uIHR5cGUgZ2V0dGVycyAqL1xuICAgIGdldCBpc1NpbmdsZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uID09PSAnc2luZ2xlJztcbiAgICB9XG4gICAgLyoqIFNlbGVjdGlvbiB0eXBlIGdldHRlcnMgKi9cbiAgICBnZXQgaXNPbmNlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdvbmNlJztcbiAgICB9XG4gICAgLyoqIFNlbGVjdGlvbiB0eXBlIGdldHRlcnMgKi9cbiAgICBnZXQgaXNNdWx0aVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uID09PSAnbXVsdGknO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbHVtbkRlZk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBWYWx1ZUhlbHBDb2x1bW5EZWZEaXJlY3RpdmU+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgc2VsZWN0ZWRJdGVtczogVFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZoZCA9IGluamVjdChWaGRDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHRydWUpLnRoZW4oKCkgPT4gdGhpcy5fY2hlY2tTY3JvbGxBbmRTaG93TW9yZSgpKTtcblxuICAgICAgICB0aGlzLl92aGQ/LmNvbHVtbkRlZi5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5EZWZNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuX3ZoZD8uY29sdW1uRGVmLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5EZWZNYXAuc2V0KGl0ZW0uY29sdW1uLCBpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAgKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnZmlsdGVycycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUZpbHRlcnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2Rpc3BsYXllZERhdGEnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hEaXNwbGF5ZWREYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdzZWxlY3RlZCcgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZCB8fCBbXTtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hTZWxlY3RlZE1hcCgpO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRyaXN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBUcmFjayBmdW5jdGlvbiBmb3IgbWFpbiBkYXRhICovXG4gICAgX3RyYWNrQnlUYWJsZVJvd0ZuOiAoX2luZGV4OiBudW1iZXIsIGl0ZW06IFQpID0+IHN0cmluZyB8IHVuZGVmaW5lZCA9IChfaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4ge1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy51bmlxdWVLZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gVHJhY2sgZnVuY3Rpb24gZm9yIGZpbHRlcnMgKi9cbiAgICBfdHJhY2tCeUZpbHRlckZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBWaGRGaWx0ZXIpOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaXRlbSAmJiBpdGVtLmtleSA/IGl0ZW0ua2V5IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNob3cgbW9yZSBlbGVtZW50cyAqL1xuICAgIF9zaG93TW9yZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYWdlU2l6ZSAmJiB0aGlzLl9zaG93bkNvdW50ICE9PSB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ICs9IHRoaXMucGFnZVNpemU7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ID0gTWF0aC5taW4odGhpcy5fc2hvd25Db3VudCwgdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93bkNvdW50ID0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZWZyZXNoIHBhZ2UgaW4gZGVza3RvcCB2aWV3ICovXG4gICAgX3VwZGF0ZVBhZ2UocGFnZU51bWJlciA9IDEpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFnZVNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gcGFnZU51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuX3Nob3duRnJvbSA9IChwYWdlTnVtYmVyIC0gMSkgKiB0aGlzLnBhZ2VTaXplO1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCA9IE1hdGgubWluKHRoaXMuX3Nob3duRnJvbSArIHRoaXMucGFnZVNpemUsIHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCA9IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG9nZ2xlIHNlbGVjdGVkIHN0YXRlIGZvciBhbGwgaXRlbXMgICovXG4gICAgX3RvZ2dsZUFsbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEFsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLmRpc3BsYXllZERhdGE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoU2VsZWN0ZWRNYXAoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaFRyaXN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvZ2dsZSBzZWxlY3RlZCBzdGF0ZSBmb3Igb25lIGl0ZW1zICAqL1xuICAgIF90b2dnbGVTZWxlY3RSb3coaXRlbTogVCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWRNYXBbaXRlbVt0aGlzLnVuaXF1ZUtleV1dO1xuICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChzOiBUKSA9PiBzW3RoaXMudW5pcXVlS2V5XSAhPT0gaXRlbVt0aGlzLnVuaXF1ZUtleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwW2l0ZW1bdGhpcy51bmlxdWVLZXldXSA9ICF0aGlzLl9zZWxlY3RlZE1hcFtpdGVtW3RoaXMudW5pcXVlS2V5XV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGVhclNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtpdGVtXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUcmlzdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tTY3JvbGxBbmRTaG93TW9yZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5fc2hvd25Db3VudCAhPT0gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFRhYmxlPy5zaG91bGRUcmlnZ2VyQWN0aW9uKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TW9yZUVsZW1lbnRzKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja1Njcm9sbEFuZFNob3dNb3JlKCk7XG4gICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFNob3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dNb3JlRWxlbWVudHMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrU2Nyb2xsQW5kU2hvd01vcmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIE1hbnVhbGx5IGNsZWFyIHNlbGVjdGVkIGl0ZW1zICovXG4gICAgcHJpdmF0ZSBfY2xlYXJTZWxlY3RlZEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZE1hcCA9IHt9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZWZyZXNoIGluZGV0ZXJtaW5hdGUgYXR0cmlidXRlIG9uIGBzZWxlY3QgYWxsYCBjaGVja2JveCAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hUcmlzdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBPYmplY3QudmFsdWVzKHRoaXMuX3NlbGVjdGVkTWFwKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQgPT09IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQWxsID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldCB1cCBmaWx0ZXJzICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgbGV0IF9tb2JpbGVUYWJsZUhlYWRlcnMgPSB0aGlzLmZpbHRlcnMuZmlsdGVyKChmKSA9PiBmLm1haW4pLm1hcCgoZikgPT4gZi5rZXkpO1xuICAgICAgICAgICAgaWYgKCFfbW9iaWxlVGFibGVIZWFkZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIF9tb2JpbGVUYWJsZUhlYWRlcnMgPSB0aGlzLmZpbHRlcnMuc2xpY2UoMCwgdGhpcy5kZWZhdWx0TW9iaWxlSGVhZGVycykubWFwKChmKSA9PiBmLmtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl90YWJsZUZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgbWFpbjogdGhpcy5maWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBfbW9iaWxlVGFibGVIZWFkZXJzLnNvbWUoKGtleSkgPT4ga2V5ID09PSBmaWx0ZXIua2V5KSksXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OiB0aGlzLmZpbHRlcnMuZmlsdGVyKChmaWx0ZXIpID0+ICFfbW9iaWxlVGFibGVIZWFkZXJzLnNvbWUoKGtleSkgPT4ga2V5ID09PSBmaWx0ZXIua2V5KSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZUZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgbWFpbjogdGhpcy5maWx0ZXJzLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeTogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZWZyZXNoIGRpc3BsYXkgZGF0YSAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hEaXNwbGF5ZWREYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNldFNob3duKCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUcmlzdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJlZnJlc2ggc2VsZWN0ZWQgbWFwIGZvciBkaXNwbGF5IGRhdGEgKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoU2VsZWN0ZWRNYXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRpc3BsYXllZERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwW2l0ZW1bdGhpcy51bmlxdWVLZXldXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLnNlbGVjdGVkSXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkTWFwW3NbdGhpcy51bmlxdWVLZXldXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgPGg1IGZkLXRpdGxlIHJvbGU9XCJoZWFkaW5nXCIgYXJpYS1sZXZlbD1cIjVcIj5cbiAgICAgICAge3sgJ3BsYXRmb3JtVkhELnNlbGVjdFRhYkRpc3BsYXlDb3VudExhYmVsJyB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCB9IH19XG4gICAgPC9oNT5cbjwvZGl2PlxuPGRpdlxuICAgIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX190YWJsZS1ob2xkZXIgdGFibGUtY29udGVudFwiXG4gICAgZmQtc2Nyb2xsYmFyXG4gICAgZmRJbmZpbml0ZVNjcm9sbFxuICAgIChvblNjcm9sbEFjdGlvbik9XCJfc2hvd01vcmVFbGVtZW50cygpXCJcbiAgICBbc2Nyb2xsUGVyY2VudF09XCI4MFwiXG4gICAgcm9sZT1cInRhYmxlXCJcbj5cbiAgICA8dGFibGVcbiAgICAgICAgZmQtdGFibGVcbiAgICAgICAgW3BvcEluXT1cIm1vYmlsZVwiXG4gICAgICAgIFtub0JvcmRlclhdPVwibW9iaWxlXCJcbiAgICAgICAgW25vQm9yZGVyWV09XCJmYWxzZVwiXG4gICAgICAgIFthdHRyLmFyaWEtY29sY291bnRdPVwiX3RhYmxlRmlsdGVycy5tYWluLmxlbmd0aFwiXG4gICAgICAgIFthdHRyLmFyaWEtcm93Y291bnRdPVwiZGlzcGxheWVkRGF0YS5sZW5ndGhcIlxuICAgICAgICByb2xlPVwiZ3JpZFwiXG4gICAgICAgIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJzZWxlY3RUYWJUaXRsZUlkICsgJyAnICsgc2VsZWN0VGFiQ291bnRJZFwiXG4gICAgPlxuICAgICAgICA8bGFiZWwgW2lkXT1cInNlbGVjdFRhYkNvdW50SWRcIiBmZC1mb3JtLWxhYmVsIGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19oaWRkZW5fbGFiZWxcIj5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3BsYXRmb3JtVkhELnNlbGVjdFRhYkNvdW50SGlkZGVuQTExeUxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHJvd0NvdW50OiBkaXNwbGF5ZWREYXRhLmxlbmd0aCwgY29sQ291bnQ6IF90YWJsZUZpbHRlcnMubWFpbi5sZW5ndGggfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIFtpZF09XCJzZWxlY3RUYWJUaXRsZUlkXCIgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkcC12YWx1ZS1oZWxwLWRpYWxvZ19faGlkZGVuX2xhYmVsXCI+XG4gICAgICAgICAgICB7eyAncGxhdGZvcm1WSEQuc2VsZWN0VGFiRGlzcGxheUNvdW50TGFiZWwnIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IGRpc3BsYXllZERhdGEubGVuZ3RoIH0gfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHRoZWFkIGZkLXRhYmxlLWhlYWRlcj5cbiAgICAgICAgICAgIEBpZiAoZGlzcGxheWVkRGF0YS5sZW5ndGggJiYgX3RhYmxlRmlsdGVycykge1xuICAgICAgICAgICAgICAgIDx0ciBmZC10YWJsZS1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIFtmaXRDb250ZW50XT1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc011bHRpU2VsZWN0aW9uICYmIGFsbG93U2VsZWN0QWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInVpZCArICctcm93LWFsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJpc3RhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmlzdGF0ZVNlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfc2VsZWN0ZWRBbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdG9nZ2xlQWxsUm93cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgb2YgX3RhYmxlRmlsdGVycy5tYWluO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgX3RyYWNrQnlGaWx0ZXJGbihjb2xpbmRleCwgZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2xpbmRleCA9ICRpbmRleFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBmZC10YWJsZS1jZWxsIFthdHRyLmFyaWEtY29saW5kZXhdPVwiY29saW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXIubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHkgZmQtdGFibGUtYm9keT5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIHJvdyBvZiBkaXNwbGF5ZWREYXRhIHwgc2xpY2U6IF9zaG93bkZyb20gOiBfc2hvd25Db3VudDtcbiAgICAgICAgICAgICAgICB0cmFjayBfdHJhY2tCeVRhYmxlUm93Rm4oaSwgcm93KTtcbiAgICAgICAgICAgICAgICBsZXQgaSA9ICRpbmRleFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgIGZkLXRhYmxlLXJvd1xuICAgICAgICAgICAgICAgICAgICBbaG92ZXJhYmxlXT1cIiFtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbbWFpbl09XCJtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIl9zZWxlY3RlZE1hcFtyb3dbdW5pcXVlS2V5XV1cIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZhYmxlXT1cIiFpc011bHRpU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFpc011bHRpU2VsZWN0aW9uICYmIF90b2dnbGVTZWxlY3RSb3cocm93KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCBbZml0Q29udGVudF09XCJtb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNNdWx0aVNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJ1aWQgKyAnLXJvdy0nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIl9zZWxlY3RlZE1hcFtyb3dbdW5pcXVlS2V5XV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIl90b2dnbGVTZWxlY3RSb3cocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGZpbHRlciBvZiBfdGFibGVGaWx0ZXJzLm1haW47IHRyYWNrIGZpbHRlcjsgbGV0IHJvd0luZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCBbYXR0ci5hcmlhLXJvd2luZGV4XT1cInJvd0luZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChfY29sdW1uRGVmTWFwLmdldChmaWx0ZXIua2V5KTsgYXMgY29sdW1uRGVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uRGVmLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBmaWx0ZXIua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByb3dbZmlsdGVyLmtleV0gfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93W2ZpbHRlci5rZXldIHx8ICcnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgQGlmIChtb2JpbGUgJiYgX3RhYmxlRmlsdGVycy5zZWNvbmRhcnkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ciBmZC10YWJsZS1yb3cgW3NlY29uZGFyeV09XCJ0cnVlXCIgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJfc2VsZWN0ZWRNYXBbcm93W3VuaXF1ZUtleV1dXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDAlXCIgZmQtdGFibGUtY2VsbCBbZml0Q29udGVudF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoZmlsdGVyIG9mIF90YWJsZUZpbHRlcnMuc2Vjb25kYXJ5OyB0cmFjayBmaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgZmQtdGFibGUtdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBmaWx0ZXIubGFiZWwgfX06PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvd1tmaWx0ZXIua2V5XSB8fCAnJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoICYmIG1vYmlsZSAmJiBfc2hvd25Db3VudCAmJiBfc2hvd25Db3VudCAhPT0gZGlzcGxheWVkRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImhlYWRlci13aXRoLXN1YmhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLW1pZGRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVkhELnNlbGVjdFRhYk1vcmVCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zaG93TW9yZUVsZW1lbnRzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgQGlmIChsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ciBmZC10YWJsZS1yb3cgKmZka1JlcGVhdD1cIjNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsICpmZGtSZXBlYXQ9XCIzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXNrZWxldG9uIFtzdHlsZS5tYXJnaW5dPVwiJ2F1dG8gMCdcIiB0eXBlPVwidGV4dFwiIHRleHRMaW5lcz1cIjFcIiB3aWR0aD1cIjYwJVwiPjwvZmQtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8dHIgZmQtdGFibGUtcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGZkLXRhYmxlLWNlbGwgY29sc3Bhbj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmRwLXZhbHVlLWhlbHAtZGlhbG9nX19lbXB0eS1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVZIRC5zZWFyY2hUYWJsZUVtcHR5TWVzc2FnZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbjwvZGl2PlxuIl19
@@ -15,10 +15,10 @@ export class VhdFilterComponent {
15
15
  /** Allow to use filter for excluding in `define conditions tab` */
16
16
  this.exclude = true;
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VhdFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: VhdFilterComponent, isStandalone: true, selector: "fdp-value-help-dialog-filter", inputs: { key: "key", main: "main", label: "label", value: "value", advanced: "advanced", include: "include", exclude: "exclude" }, queries: [{ propertyName: "filterDef", first: true, predicate: ValueHelpFilterDefDirective, descendants: true }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: VhdFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: VhdFilterComponent, isStandalone: true, selector: "fdp-value-help-dialog-filter", inputs: { key: "key", main: "main", label: "label", value: "value", advanced: "advanced", include: "include", exclude: "exclude" }, queries: [{ propertyName: "filterDef", first: true, predicate: ValueHelpFilterDefDirective, descendants: true }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: VhdFilterComponent, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: VhdFilterComponent, decorators: [{
22
22
  type: Component,
23
23
  args: [{
24
24
  selector: 'fdp-value-help-dialog-filter',
@@ -34,10 +34,10 @@ export class ConditionCountMessageDirective {
34
34
  return null;
35
35
  };
36
36
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ConditionCountMessageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: ConditionCountMessageDirective, isStandalone: true, selector: "[fdp-condition-count-message]", inputs: { maxCharacters: "maxCharacters" }, providers: [{ provide: NG_VALIDATORS, useExisting: ConditionCountMessageDirective, multi: true }], ngImport: i0 }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ConditionCountMessageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: ConditionCountMessageDirective, isStandalone: true, selector: "[fdp-condition-count-message]", inputs: { maxCharacters: "maxCharacters" }, providers: [{ provide: NG_VALIDATORS, useExisting: ConditionCountMessageDirective, multi: true }], ngImport: i0 }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ConditionCountMessageDirective, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ConditionCountMessageDirective, decorators: [{
41
41
  type: Directive,
42
42
  args: [{
43
43
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -5,10 +5,10 @@ export class ValueHelpColumnDefDirective {
5
5
  /** Template reference */
6
6
  this.templateRef = inject(TemplateRef);
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ValueHelpColumnDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: ValueHelpColumnDefDirective, isStandalone: true, selector: "[fdpValueHelpColumnDef]", inputs: { as: ["fdpValueHelpColumnDefAs", "as"], column: ["fdpValueHelpColumnDefColumn", "column"] }, ngImport: i0 }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ValueHelpColumnDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: ValueHelpColumnDefDirective, isStandalone: true, selector: "[fdpValueHelpColumnDef]", inputs: { as: ["fdpValueHelpColumnDefAs", "as"], column: ["fdpValueHelpColumnDefColumn", "column"] }, ngImport: i0 }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ValueHelpColumnDefDirective, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ValueHelpColumnDefDirective, decorators: [{
12
12
  type: Directive,
13
13
  args: [{
14
14
  selector: '[fdpValueHelpColumnDef]',
@@ -1,22 +1,22 @@
1
- import { Directive, TemplateRef, inject } from '@angular/core';
1
+ import { Directive, inject, TemplateRef } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class ValueHelpFilterDefDirective {
4
4
  constructor() {
5
5
  /** Template reference */
6
- this.templateRef = inject((TemplateRef));
6
+ this.templateRef = inject(TemplateRef);
7
7
  }
8
8
  /** @hidden */
9
9
  static ngTemplateContextGuard(dir, ctx) {
10
10
  return true;
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ValueHelpFilterDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: ValueHelpFilterDefDirective, isStandalone: true, selector: "[fdpValueHelpFilterDef]", ngImport: i0 }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ValueHelpFilterDefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: ValueHelpFilterDefDirective, isStandalone: true, selector: "[fdpValueHelpFilterDef]", ngImport: i0 }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ValueHelpFilterDefDirective, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ValueHelpFilterDefDirective, decorators: [{
16
16
  type: Directive,
17
17
  args: [{
18
18
  selector: '[fdpValueHelpFilterDef]',
19
19
  standalone: true
20
20
  }]
21
21
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1maWx0ZXItZGVmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWZpbHRlci1kZWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFXL0QsTUFBTSxPQUFPLDJCQUEyQjtJQUp4QztRQUtJLHlCQUF5QjtRQUNoQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFdBQXNDLENBQUEsQ0FBQyxDQUFDO0tBTXpFO0lBSkcsY0FBYztJQUNkLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFnQyxFQUFFLEdBQVk7UUFDeEUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs4R0FQUSwyQkFBMkI7a0dBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZoZEZpbHRlciB9IGZyb20gJy4uL21vZGVscy92aGQtZmlsdGVyLm1vZGVsJztcblxuaW50ZXJmYWNlIFZhbHVlSGVscEZpbHRlckRlZkNvbnRleHQge1xuICAgICRpbXBsaWNpdDogVmhkRmlsdGVyO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBWYWx1ZUhlbHBGaWx0ZXJEZWZdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlSGVscEZpbHRlckRlZkRpcmVjdGl2ZSB7XG4gICAgLyoqIFRlbXBsYXRlIHJlZmVyZW5jZSAqL1xuICAgIHJlYWRvbmx5IHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFZhbHVlSGVscEZpbHRlckRlZkNvbnRleHQ+KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoZGlyOiBWYWx1ZUhlbHBGaWx0ZXJEZWZEaXJlY3RpdmUsIGN0eDogdW5rbm93bik6IGN0eCBpcyBWYWx1ZUhlbHBGaWx0ZXJEZWZDb250ZXh0IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtaGVscC1maWx0ZXItZGVmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWZpbHRlci1kZWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPL0QsTUFBTSxPQUFPLDJCQUEyQjtJQUp4QztRQUtJLHlCQUF5QjtRQUNoQixnQkFBVyxHQUFHLE1BQU0sQ0FBeUMsV0FBVyxDQUFDLENBQUM7S0FNdEY7SUFKRyxjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQWdDLEVBQUUsR0FBWTtRQUN4RSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQVBRLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsdWVIZWxwRmlsdGVyRGVmLCBWYWx1ZUhlbHBGaWx0ZXJEZWZDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL3ZoZC1maWx0ZXIubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBWYWx1ZUhlbHBGaWx0ZXJEZWZdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlSGVscEZpbHRlckRlZkRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbHVlSGVscEZpbHRlckRlZiB7XG4gICAgLyoqIFRlbXBsYXRlIHJlZmVyZW5jZSAqL1xuICAgIHJlYWRvbmx5IHRlbXBsYXRlUmVmID0gaW5qZWN0PFRlbXBsYXRlUmVmPFZhbHVlSGVscEZpbHRlckRlZkNvbnRleHQ+PihUZW1wbGF0ZVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKGRpcjogVmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlLCBjdHg6IHVua25vd24pOiBjdHggaXMgVmFsdWVIZWxwRmlsdGVyRGVmQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWZpbHRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvbW9kZWxzL3ZoZC1maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgVmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy92YWx1ZS1oZWxwLWZpbHRlci1kZWYuZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBWaGRGaWx0ZXIge1xuICAgIGtleTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbWFpbj86IGJvb2xlYW47XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgYWR2YW5jZWQ/OiBib29sZWFuO1xuICAgIGluY2x1ZGU/OiBib29sZWFuO1xuICAgIGV4Y2x1ZGU/OiBib29sZWFuO1xuICAgIGZpbHRlckRlZjogTnVsbGFibGU8VmFsdWVIZWxwRmlsdGVyRGVmRGlyZWN0aXZlPjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmhkLWZpbHRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFsdWUtaGVscC1kaWFsb2cvbW9kZWxzL3ZoZC1maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUhlbHBGaWx0ZXJEZWZDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IFZoZEZpbHRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUhlbHBGaWx0ZXJEZWYge1xuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxWYWx1ZUhlbHBGaWx0ZXJEZWZDb250ZXh0Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgVmhkRmlsdGVyIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1haW4/OiBib29sZWFuO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICAgIGFkdmFuY2VkPzogYm9vbGVhbjtcbiAgICBpbmNsdWRlPzogYm9vbGVhbjtcbiAgICBleGNsdWRlPzogYm9vbGVhbjtcbiAgICBmaWx0ZXJEZWY6IE51bGxhYmxlPFZhbHVlSGVscEZpbHRlckRlZj47XG59XG4iXX0=