@fundamental-ngx/platform 0.47.4 → 0.48.0-rc.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 (405) hide show
  1. package/esm2022/action-bar/action-bar.component.mjs +8 -9
  2. package/esm2022/action-bar/action-bar.module.mjs +4 -4
  3. package/esm2022/action-button-group/action-button-group.component.mjs +4 -4
  4. package/esm2022/action-button-group/action-button-group.module.mjs +4 -4
  5. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +6 -11
  6. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +6 -8
  7. package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +5 -6
  8. package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +5 -5
  9. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +8 -11
  10. package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +6 -8
  11. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +5 -7
  12. package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +5 -6
  13. package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +6 -6
  14. package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +6 -7
  15. package/esm2022/approval-flow/approval-flow.component.mjs +8 -10
  16. package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
  17. package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
  18. package/esm2022/button/button.component.mjs +5 -5
  19. package/esm2022/button/button.module.mjs +4 -4
  20. package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
  21. package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
  22. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +5 -5
  23. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +5 -5
  24. package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  25. package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
  26. package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
  27. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +4 -4
  28. package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
  29. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
  30. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
  31. package/esm2022/dynamic-page/dynamic-page.component.mjs +8 -10
  32. package/esm2022/dynamic-page/dynamic-page.config.mjs +4 -4
  33. package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
  34. package/esm2022/dynamic-page/dynamic-page.service.mjs +3 -3
  35. package/esm2022/feed-input/feed-input.component.mjs +6 -7
  36. package/esm2022/feed-input/feed-input.module.mjs +4 -4
  37. package/esm2022/form/auto-complete/auto-complete.directive.mjs +5 -5
  38. package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
  39. package/esm2022/form/checkbox/checkbox.component.mjs +6 -6
  40. package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
  41. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +8 -8
  42. package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
  43. package/esm2022/form/combobox/combobox/combobox.component.mjs +9 -11
  44. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +13 -15
  45. package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  46. package/esm2022/form/combobox/combobox.config.mjs +4 -4
  47. package/esm2022/form/combobox/combobox.module.mjs +4 -4
  48. package/esm2022/form/combobox/commons/base-combobox.mjs +8 -6
  49. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
  50. package/esm2022/form/date-picker/date-picker.component.mjs +6 -6
  51. package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
  52. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +6 -6
  53. package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
  54. package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
  55. package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +4 -4
  56. package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +4 -4
  57. package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +4 -4
  58. package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +6 -7
  59. package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +4 -4
  60. package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +3 -3
  61. package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +4 -4
  62. package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +4 -4
  63. package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +4 -4
  64. package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +5 -5
  65. package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +6 -6
  66. package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
  67. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +9 -11
  68. package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
  69. package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +7 -8
  70. package/esm2022/form/form-generator/form-generator.service.mjs +5 -5
  71. package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +5 -5
  72. package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
  73. package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
  74. package/esm2022/form/form-group/form-field/form-field.component.mjs +10 -10
  75. package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +6 -6
  76. package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +6 -6
  77. package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +5 -5
  78. package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
  79. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +6 -6
  80. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +6 -6
  81. package/esm2022/form/form-group/form-group.component.mjs +8 -10
  82. package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
  83. package/esm2022/form/form-group/services/form-field-layout.service.mjs +5 -5
  84. package/esm2022/form/input/fdp-input.module.mjs +4 -4
  85. package/esm2022/form/input/input.component.mjs +6 -6
  86. package/esm2022/form/input-group/addon-body.component.mjs +5 -5
  87. package/esm2022/form/input-group/addon.component.mjs +5 -5
  88. package/esm2022/form/input-group/input-group.component.mjs +12 -12
  89. package/esm2022/form/input-group/input-group.config.mjs +4 -4
  90. package/esm2022/form/input-group/input-group.module.mjs +4 -4
  91. package/esm2022/form/input-group/input.component.mjs +3 -3
  92. package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +7 -7
  93. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +6 -6
  94. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +10 -12
  95. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +8 -9
  96. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
  97. package/esm2022/form/multi-combobox/multi-combobox.config.mjs +4 -4
  98. package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
  99. package/esm2022/form/multi-input/base-multi-input.mjs +6 -6
  100. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +12 -12
  101. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  102. package/esm2022/form/multi-input/multi-input.component.mjs +9 -11
  103. package/esm2022/form/multi-input/multi-input.config.mjs +4 -4
  104. package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
  105. package/esm2022/form/platform-file-uploader/platform-file-uploader.component.mjs +6 -6
  106. package/esm2022/form/platform-file-uploader/platform-file-uploader.module.mjs +4 -4
  107. package/esm2022/form/radio-group/radio/radio.component.mjs +8 -8
  108. package/esm2022/form/radio-group/radio-group.component.mjs +8 -8
  109. package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
  110. package/esm2022/form/select/commons/base-select.mjs +6 -6
  111. package/esm2022/form/select/select/select.component.mjs +8 -8
  112. package/esm2022/form/select/select.config.mjs +4 -4
  113. package/esm2022/form/select/select.module.mjs +4 -4
  114. package/esm2022/form/step-input/base.step-input.mjs +5 -5
  115. package/esm2022/form/step-input/number/number-step-input.component.mjs +9 -10
  116. package/esm2022/form/step-input/step-input-action-button.mjs +3 -3
  117. package/esm2022/form/step-input/step-input-control.directive.mjs +6 -6
  118. package/esm2022/form/step-input/step-input-decrement.directive.mjs +5 -5
  119. package/esm2022/form/step-input/step-input-increment.directive.mjs +5 -5
  120. package/esm2022/form/step-input/step-input.config.mjs +3 -3
  121. package/esm2022/form/step-input/step-input.module.mjs +4 -4
  122. package/esm2022/form/switch/switch/switch.component.mjs +6 -6
  123. package/esm2022/form/switch/switch/switch.config.mjs +3 -3
  124. package/esm2022/form/switch/switch.module.mjs +4 -4
  125. package/esm2022/form/text-area/text-area.component.mjs +8 -9
  126. package/esm2022/form/text-area/text-area.config.mjs +3 -3
  127. package/esm2022/form/text-area/text-area.module.mjs +4 -4
  128. package/esm2022/form/time-picker/time-picker.component.mjs +6 -6
  129. package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
  130. package/esm2022/fundamental-ngx.module.mjs +5 -5
  131. package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +3 -3
  132. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +5 -9
  133. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +6 -8
  134. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +6 -8
  135. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +5 -8
  136. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +7 -9
  137. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +6 -15
  138. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +5 -9
  139. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +6 -8
  140. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +5 -5
  141. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +5 -5
  142. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +5 -5
  143. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +8 -9
  144. package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +4 -4
  145. package/esm2022/info-label/info-label.component.mjs +5 -5
  146. package/esm2022/info-label/info-label.module.mjs +4 -4
  147. package/esm2022/link/link.component.mjs +5 -5
  148. package/esm2022/link/link.module.mjs +4 -4
  149. package/esm2022/list/action-list-item/action-list-item.component.mjs +3 -3
  150. package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
  151. package/esm2022/list/base-list-item.mjs +11 -11
  152. package/esm2022/list/display-list-item/display-list-item.component.mjs +6 -7
  153. package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
  154. package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +4 -4
  155. package/esm2022/list/list-group-footer.component.mjs +3 -3
  156. package/esm2022/list/list-group-header.component.mjs +3 -3
  157. package/esm2022/list/list.component.mjs +9 -11
  158. package/esm2022/list/list.config.mjs +3 -3
  159. package/esm2022/list/list.module.mjs +4 -4
  160. package/esm2022/list/load-more-content.directive.mjs +4 -4
  161. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +4 -4
  162. package/esm2022/list/object-list-item/object-list-item.component.mjs +6 -7
  163. package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
  164. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +6 -7
  165. package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
  166. package/esm2022/menu/menu-item.component.mjs +7 -7
  167. package/esm2022/menu/menu-trigger.directive.mjs +6 -6
  168. package/esm2022/menu/menu.component.mjs +6 -6
  169. package/esm2022/menu/menu.module.mjs +4 -4
  170. package/esm2022/menu-button/menu-button.component.mjs +5 -5
  171. package/esm2022/menu-button/menu-button.module.mjs +4 -4
  172. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +6 -6
  173. package/esm2022/message-popover/components/message-view/message-view.component.mjs +8 -10
  174. package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +6 -6
  175. package/esm2022/message-popover/message-popover.component.mjs +7 -9
  176. package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
  177. package/esm2022/object-marker/object-marker.component.mjs +6 -7
  178. package/esm2022/object-marker/object-marker.module.mjs +4 -4
  179. package/esm2022/object-status/object-status.component.mjs +8 -8
  180. package/esm2022/object-status/object-status.module.mjs +4 -4
  181. package/esm2022/page-footer/page-footer.component.mjs +6 -6
  182. package/esm2022/page-footer/page-footer.module.mjs +4 -4
  183. package/esm2022/panel/panel-actions.component.mjs +3 -3
  184. package/esm2022/panel/panel-content/panel-content.component.mjs +4 -4
  185. package/esm2022/panel/panel.component.mjs +5 -5
  186. package/esm2022/panel/panel.config.mjs +4 -4
  187. package/esm2022/panel/panel.module.mjs +4 -4
  188. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +8 -9
  189. package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +4 -4
  190. package/esm2022/search-field/search-field.component.mjs +16 -18
  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 +9 -16
  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 +5 -6
  195. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +6 -9
  196. package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +6 -8
  197. package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +7 -7
  198. package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
  199. package/esm2022/settings-generator/settings-generator.component.mjs +9 -9
  200. package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
  201. package/esm2022/settings-generator/settings-generator.service.mjs +4 -4
  202. package/esm2022/shared/base.mjs +5 -5
  203. package/esm2022/shared/form/base.input.mjs +6 -6
  204. package/esm2022/shared/form/collection-base.input.mjs +6 -6
  205. package/esm2022/shared/form/inline-layout-collection-base.input.mjs +13 -13
  206. package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
  207. package/esm2022/shared/pipes/pipe.module.mjs +4 -4
  208. package/esm2022/shared/platform.config.mjs +3 -3
  209. package/esm2022/slider/slider.component.mjs +6 -6
  210. package/esm2022/slider/slider.module.mjs +4 -4
  211. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +4 -4
  212. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +4 -4
  213. package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -9
  214. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +7 -9
  215. package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +3 -3
  216. package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +5 -5
  217. package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +4 -4
  218. package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
  219. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +8 -10
  220. package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
  221. package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +4 -4
  222. package/esm2022/split-menu-button/split-menu-button.component.mjs +6 -6
  223. package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
  224. package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
  225. package/esm2022/table/components/reset-button/reset-button.component.mjs +5 -5
  226. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +6 -8
  227. package/esm2022/table/components/table-column/table-column.component.mjs +6 -6
  228. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +6 -6
  229. package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +5 -15
  230. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +7 -7
  231. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +6 -6
  232. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +11 -13
  233. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +7 -9
  234. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +9 -11
  235. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +6 -9
  236. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +6 -8
  237. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +9 -11
  238. package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
  239. package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +5 -5
  240. package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
  241. package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
  242. package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
  243. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -9
  244. package/esm2022/table/components/table-row/table-row.component.mjs +8 -12
  245. package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
  246. package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
  247. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +7 -8
  248. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +6 -6
  249. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +5 -6
  250. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +5 -14
  251. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +5 -8
  252. package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +5 -7
  253. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +7 -10
  254. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +6 -8
  255. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +6 -9
  256. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +5 -5
  257. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
  258. package/esm2022/table/table.component.mjs +9 -14
  259. package/esm2022/table/table.module.mjs +4 -4
  260. package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +6 -6
  261. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
  262. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -5
  263. package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
  264. package/esm2022/table-helpers/directives/table-cell.directive.mjs +16 -16
  265. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +3 -3
  266. package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
  267. package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
  268. package/esm2022/table-helpers/directives/table-header.directive.mjs +7 -7
  269. package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +3 -3
  270. package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +4 -4
  271. package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +4 -4
  272. package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
  273. package/esm2022/table-helpers/enums/collection-filter.enum.mjs +16 -1
  274. package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
  275. package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
  276. package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
  277. package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
  278. package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
  279. package/esm2022/table-helpers/services/table-column-resize.service.mjs +5 -5
  280. package/esm2022/table-helpers/services/table-responsive.service.mjs +5 -5
  281. package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
  282. package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
  283. package/esm2022/table-helpers/services/table.service.mjs +3 -3
  284. package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
  285. package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +6 -8
  286. package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +8 -8
  287. package/esm2022/thumbnail/thumbnail.component.mjs +7 -8
  288. package/esm2022/thumbnail/thumbnail.module.mjs +4 -4
  289. package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +6 -9
  290. package/esm2022/upload-collection/dialogs/new-folder/new-folder.component.mjs +6 -8
  291. package/esm2022/upload-collection/directives/upload-collection-dragndrop.directive.mjs +5 -5
  292. package/esm2022/upload-collection/services/files-validator.service.mjs +3 -3
  293. package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +7 -11
  294. package/esm2022/upload-collection/upload-collection.module.mjs +4 -4
  295. package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +5 -5
  296. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +6 -10
  297. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +13 -15
  298. package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +3 -3
  299. package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +5 -5
  300. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +12 -17
  301. package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
  302. package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +5 -5
  303. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -8
  304. package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
  305. package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +4 -4
  306. package/esm2022/variant-management/variant-management.component.mjs +8 -10
  307. package/esm2022/variant-management/variant-management.module.mjs +4 -4
  308. package/esm2022/wizard-generator/base-wizard-generator.mjs +5 -5
  309. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +7 -8
  310. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +7 -9
  311. package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +6 -7
  312. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +6 -7
  313. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +5 -6
  314. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +7 -7
  315. package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
  316. package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
  317. package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
  318. package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
  319. package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +4 -4
  320. package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
  321. package/esm2022/wizard-generator/wizard-generator.service.mjs +4 -4
  322. package/fesm2022/fundamental-ngx-platform-action-bar.mjs +11 -12
  323. package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +1 -1
  324. package/fesm2022/fundamental-ngx-platform-action-button-group.mjs +8 -8
  325. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +62 -74
  326. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  327. package/fesm2022/fundamental-ngx-platform-button.mjs +8 -8
  328. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  329. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +54 -56
  330. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  331. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -10
  332. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  333. package/fesm2022/fundamental-ngx-platform-form.mjs +453 -464
  334. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  335. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +59 -87
  336. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  337. package/fesm2022/fundamental-ngx-platform-info-label.mjs +8 -8
  338. package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
  339. package/fesm2022/fundamental-ngx-platform-link.mjs +8 -8
  340. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  341. package/fesm2022/fundamental-ngx-platform-list.mjs +73 -78
  342. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  343. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +8 -8
  344. package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
  345. package/fesm2022/fundamental-ngx-platform-menu.mjs +20 -20
  346. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  347. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +29 -33
  348. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  349. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +9 -10
  350. package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
  351. package/fesm2022/fundamental-ngx-platform-object-status.mjs +12 -12
  352. package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
  353. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +9 -9
  354. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  355. package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -19
  356. package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
  357. package/fesm2022/fundamental-ngx-platform-search-field.mjs +29 -32
  358. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  359. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +45 -56
  360. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  361. package/fesm2022/fundamental-ngx-platform-shared.mjs +36 -36
  362. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  363. package/fesm2022/fundamental-ngx-platform-slider.mjs +9 -9
  364. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  365. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +48 -53
  366. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  367. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +9 -9
  368. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  369. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +115 -100
  370. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  371. package/fesm2022/fundamental-ngx-platform-table.mjs +168 -218
  372. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  373. package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +22 -23
  374. package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
  375. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +27 -34
  376. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  377. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +41 -52
  378. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  379. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +28 -31
  380. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  381. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +58 -61
  382. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  383. package/fesm2022/fundamental-ngx-platform.mjs +5 -5
  384. package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +2 -2
  385. package/form/form-group/form-group.component.d.ts +1 -1
  386. package/form/input-group/input-group.component.d.ts +2 -2
  387. package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +1 -1
  388. package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
  389. package/fundamental-ngx-platform-v0.48.0-rc.0.tgz +0 -0
  390. package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +0 -2
  391. package/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.d.ts +0 -2
  392. package/list/list.component.d.ts +1 -1
  393. package/package.json +4 -4
  394. package/page-footer/page-footer.component.d.ts +1 -1
  395. package/schematics/ng-add/index.js +1 -1
  396. package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +1 -1
  397. package/settings-generator/settings-generator.component.d.ts +2 -2
  398. package/table/components/table-p13-dialog/filtering/filter-rule.component.d.ts +2 -0
  399. package/table/table.component.d.ts +1 -1
  400. package/table-helpers/enums/collection-filter.enum.d.ts +2 -0
  401. package/value-help-dialog/components/select-tab/select-tab.component.d.ts +1 -1
  402. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +1 -1
  403. package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +2 -2
  404. package/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.d.ts +2 -2
  405. package/fundamental-ngx-platform-v0.47.4.tgz +0 -0
@@ -5,14 +5,14 @@ export class SmartFilterBarToolbarItemDirective {
5
5
  constructor(templateRef) {
6
6
  this.templateRef = templateRef;
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBarToolbarItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
9
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: SmartFilterBarToolbarItemDirective, isStandalone: true, selector: "[fdpSmartFilterBarToolbarItem]", ngImport: i0 }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBarToolbarItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
9
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: SmartFilterBarToolbarItemDirective, isStandalone: true, selector: "[fdpSmartFilterBarToolbarItem]", ngImport: i0 }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBarToolbarItemDirective, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBarToolbarItemDirective, decorators: [{
12
12
  type: Directive,
13
13
  args: [{
14
14
  selector: '[fdpSmartFilterBarToolbarItem]',
15
15
  standalone: true
16
16
  }]
17
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
17
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWJhci10b29sYmFyLWl0ZW0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3NtYXJ0LWZpbHRlci1iYXIvZGlyZWN0aXZlcy9zbWFydC1maWx0ZXItYmFyLXRvb2xiYXItaXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXZELE1BQU0sT0FBTyxrQ0FBa0M7SUFDM0MsY0FBYztJQUNkLFlBQW1CLFdBQTZCO1FBQTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUFHLENBQUM7OEdBRjNDLGtDQUFrQztrR0FBbEMsa0NBQWtDOzsyRkFBbEMsa0NBQWtDO2tCQUo5QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwU21hcnRGaWx0ZXJCYXJUb29sYmFySXRlbV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU21hcnRGaWx0ZXJCYXJUb29sYmFySXRlbURpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG4iXX0=
@@ -7,10 +7,10 @@ export class SmartFilterBar {
7
7
  /** Event emitted when smart filter bar configuration has been changed. */
8
8
  this.presetChanged = new EventEmitter();
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: SmartFilterBar, inputs: { name: "name" }, outputs: { presetChanged: "presetChanged" }, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: SmartFilterBar, inputs: { name: "name" }, outputs: { presetChanged: "presetChanged" }, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBar, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBar, decorators: [{
14
14
  type: Directive
15
15
  }], propDecorators: { name: [{
16
16
  type: Input
@@ -7,7 +7,7 @@ import { FormGeneratorComponent, FormGeneratorService } from '@fundamental-ngx/p
7
7
  import { FDP_PRESET_MANAGED_COMPONENT } from '@fundamental-ngx/platform/shared';
8
8
  import { FilterableColumnDataType, FilterType } from '@fundamental-ngx/platform/table';
9
9
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
10
- import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
10
+ import { NgTemplateOutlet } from '@angular/common';
11
11
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
12
12
  import { ToolbarComponent, ToolbarItemDirective, ToolbarSeparatorComponent, ToolbarSpacerDirective } from '@fundamental-ngx/core/toolbar';
13
13
  import { FdTranslatePipe } from '@fundamental-ngx/i18n';
@@ -472,8 +472,8 @@ export class SmartFilterBarComponent extends SmartFilterBar {
472
472
  this._selectedFilters = filters.filter((f, i) => filters.indexOf(f) === i);
473
473
  this._formGenerator.refreshStepsVisibility();
474
474
  }
475
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBarComponent, deps: [{ token: i1.DialogService }, { token: i0.ChangeDetectorRef }, { token: i2.SmartFilterBarService }, { token: i3.FormGeneratorService }, { token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
476
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: SmartFilterBarComponent, isStandalone: true, selector: "fdp-smart-filter-bar", inputs: { subject: "subject", transparent: "transparent", filtersColumnLayout: "filtersColumnLayout", liveUpdate: "liveUpdate" }, outputs: { smartFiltersChanged: "smartFiltersChanged", smartFiltersApplied: "smartFiltersApplied", searchInputChanged: "searchInputChanged" }, host: { properties: { "class.fdp-smart-filter-bar--transparent": "transparent" }, classAttribute: "fdp-smart-filter-bar" }, providers: [
475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBarComponent, deps: [{ token: i1.DialogService }, { token: i0.ChangeDetectorRef }, { token: i2.SmartFilterBarService }, { token: i3.FormGeneratorService }, { token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
476
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: SmartFilterBarComponent, isStandalone: true, selector: "fdp-smart-filter-bar", inputs: { subject: "subject", transparent: "transparent", filtersColumnLayout: "filtersColumnLayout", liveUpdate: "liveUpdate" }, outputs: { smartFiltersChanged: "smartFiltersChanged", smartFiltersApplied: "smartFiltersApplied", searchInputChanged: "searchInputChanged" }, host: { properties: { "class.fdp-smart-filter-bar--transparent": "transparent" }, classAttribute: "fdp-smart-filter-bar" }, providers: [
477
477
  smartFilterBarProvider,
478
478
  SmartFilterBarService,
479
479
  FormGeneratorService,
@@ -481,9 +481,9 @@ export class SmartFilterBarComponent extends SmartFilterBar {
481
481
  provide: FDP_PRESET_MANAGED_COMPONENT,
482
482
  useExisting: SmartFilterBarComponent
483
483
  }
484
- ], queries: [{ propertyName: "_toolbarItemRefs", predicate: SmartFilterBarToolbarItemDirective }], viewQueries: [{ propertyName: "_formGenerator", first: true, predicate: FormGeneratorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <fd-toolbar fdType=\"transparent\">\n <ng-container *ngIf=\"_toolbarItems\">\n <ng-container *ngFor=\"let template of _toolbarItems\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n </ng-container>\n </ng-container>\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n *ngIf=\"!liveUpdate\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"_loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n 'platformSmartFilterBar.filtersButtonLabel' | fdTranslate : { filtersCount: _selectedFilters.length }\n \"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n <fdp-button\n (click)=\"_toggleFilterBar()\"\n [label]=\"\n (_showFilterBar\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n buttonType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n </fd-toolbar>\n</div>\n\n<div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!_showFilterBar\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"_formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n</div>\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding:0!important}\n"], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "directive", type: ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: FormGeneratorComponent, selector: "fdp-form-generator", inputs: ["formName", "formItems", "mainTitle", "hideMainTItle", "hint", "columnLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "unifiedLayout", "inlineColumnLayout", "noAdditionalContent"], outputs: ["formCreated", "formSubmitted", "formSubmittedStatus"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
484
+ ], queries: [{ propertyName: "_toolbarItemRefs", predicate: SmartFilterBarToolbarItemDirective }], viewQueries: [{ propertyName: "_formGenerator", first: true, predicate: FormGeneratorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <fd-toolbar fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n }\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!liveUpdate) {\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n }\n <fdp-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"_loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n 'platformSmartFilterBar.filtersButtonLabel' | fdTranslate: { filtersCount: _selectedFilters.length }\n \"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n <fdp-button\n (click)=\"_toggleFilterBar()\"\n [label]=\"\n (_showFilterBar\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n buttonType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n </fd-toolbar>\n</div>\n<div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!_showFilterBar\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"_formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n</div>\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding:0!important}\n"], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "directive", type: ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: FormGeneratorComponent, selector: "fdp-form-generator", inputs: ["formName", "formItems", "mainTitle", "hideMainTItle", "hint", "columnLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "unifiedLayout", "inlineColumnLayout", "noAdditionalContent"], outputs: ["formCreated", "formSubmitted", "formSubmittedStatus"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
485
485
  }
486
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBarComponent, decorators: [{
486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBarComponent, decorators: [{
487
487
  type: Component,
488
488
  args: [{ selector: 'fdp-smart-filter-bar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
489
489
  smartFilterBarProvider,
@@ -498,8 +498,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
498
498
  '[class.fdp-smart-filter-bar--transparent]': 'transparent'
499
499
  }, standalone: true, imports: [
500
500
  ToolbarComponent,
501
- NgIf,
502
- NgFor,
503
501
  NgTemplateOutlet,
504
502
  ToolbarSeparatorComponent,
505
503
  SearchFieldComponent,
@@ -508,8 +506,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
508
506
  ToolbarItemDirective,
509
507
  FormGeneratorComponent,
510
508
  FdTranslatePipe
511
- ], template: "<div>\n <fd-toolbar fdType=\"transparent\">\n <ng-container *ngIf=\"_toolbarItems\">\n <ng-container *ngFor=\"let template of _toolbarItems\">\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n </ng-container>\n </ng-container>\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n *ngIf=\"!liveUpdate\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"_loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n 'platformSmartFilterBar.filtersButtonLabel' | fdTranslate : { filtersCount: _selectedFilters.length }\n \"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n <fdp-button\n (click)=\"_toggleFilterBar()\"\n [label]=\"\n (_showFilterBar\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n buttonType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n </fd-toolbar>\n</div>\n\n<div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!_showFilterBar\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"_formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n</div>\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding:0!important}\n"] }]
512
- }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i0.ChangeDetectorRef }, { type: i2.SmartFilterBarService }, { type: i3.FormGeneratorService }, { type: i0.Injector }, { type: i0.DestroyRef }]; }, propDecorators: { _formGenerator: [{
509
+ ], template: "<div>\n <fd-toolbar fdType=\"transparent\">\n @if (_toolbarItems) {\n @for (template of _toolbarItems; track template) {\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n }\n <fdp-search-field\n (inputChange)=\"_onSearchInputChange($event)\"\n (searchSubmit)=\"submitForm()\"\n (cancelSearch)=\"_cancelSearch()\"\n [disabled]=\"_loading\"\n [disableRefresh]=\"true\"\n [placeholder]=\"'platformSmartFilterBar.searchPlaceholder' | fdTranslate\"\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n @if (!liveUpdate) {\n <fdp-button\n (click)=\"submitForm()\"\n buttonType=\"emphasized\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n [label]=\"'platformSmartFilterBar.submitButtonLabel' | fdTranslate\"\n ></fdp-button>\n }\n <fdp-button\n (click)=\"submitForm()\"\n fd-toolbar-item\n glyph=\"synchronize\"\n [disabled]=\"_loading\"\n [ariaLabel]=\"'platformSmartFilterBar.refreshButtonAriaLabel' | fdTranslate\"\n ></fdp-button>\n <fdp-button\n (click)=\"showFilteringSettings()\"\n [label]=\"\n 'platformSmartFilterBar.filtersButtonLabel' | fdTranslate: { filtersCount: _selectedFilters.length }\n \"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n <fdp-button\n (click)=\"_toggleFilterBar()\"\n [label]=\"\n (_showFilterBar\n ? 'platformSmartFilterBar.hideFiltersButtonLabel'\n : 'platformSmartFilterBar.showFiltersButtonLabel'\n ) | fdTranslate\n \"\n buttonType=\"transparent\"\n fd-toolbar-item\n [disabled]=\"_loading\"\n ></fdp-button>\n </fd-toolbar>\n</div>\n<div class=\"fdp-smart-filter-bar__filters\" [hidden]=\"!_showFilterBar\">\n <fdp-form-generator\n (formCreated)=\"_onFormCreated()\"\n (formSubmitted)=\"_onFormSubmitted($event)\"\n [noAdditionalContent]=\"true\"\n [formItems]=\"_formItems\"\n [columnLayout]=\"filtersColumnLayout\"\n ></fdp-form-generator>\n</div>\n", styles: [".fdp-smart-filter-bar{display:block;box-shadow:var(--sapContent_HeaderShadow);background-color:var(--sapObjectHeader_Background)}.fdp-smart-filter-bar--transparent{background-color:var(--sapToolbar_Background);box-shadow:none}.fdp-smart-filter-bar .fd-toolbar--title{height:3rem;min-height:3rem;border-bottom:none;padding:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fd-toolbar--title{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-toolbar fdp-search-field{min-width:15.5rem}.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:.5rem;padding-right:.5rem}@media (min-width: 600px){.fdp-smart-filter-bar .fdp-smart-filter-bar__filters{padding-left:2rem;padding-right:2rem}}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container{padding:0}.fdp-smart-filter-bar .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding-left:.25rem!important;padding-right:.25rem!important}.fdp-smart-filter-bar__conditions-dialog .fdp-smart-filter-bar__actions-column{min-width:auto;flex:0 0 auto}.fdp-smart-filter-bar__conditions-dialog .fd-popover-custom{display:block}.fdp-smart-filter-bar__conditions-dialog .fd-dialog__body{padding:0 .5rem;background-color:var(--sapBackgroundColor, #f7f7f7)}.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container,.fdp-smart-filter-bar__conditions-dialog .fd-container.fd-form-layout-grid-container .fd-row .fd-form-group{padding:0!important}\n"] }]
510
+ }], ctorParameters: () => [{ type: i1.DialogService }, { type: i0.ChangeDetectorRef }, { type: i2.SmartFilterBarService }, { type: i3.FormGeneratorService }, { type: i0.Injector }, { type: i0.DestroyRef }], propDecorators: { _formGenerator: [{
513
511
  type: ViewChild,
514
512
  args: [FormGeneratorComponent]
515
513
  }], subject: [{
@@ -530,4 +528,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
530
528
  type: ContentChildren,
531
529
  args: [SmartFilterBarToolbarItemDirective]
532
530
  }] } });
533
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvc21hcnQtZmlsdGVyLWJhci9zbWFydC1maWx0ZXItYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zbWFydC1maWx0ZXItYmFyL3NtYXJ0LWZpbHRlci1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFHSCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBRXZCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUFFLDRCQUE0QixFQUFjLE1BQU0sa0NBQWtDLENBQUM7QUFDNUYsT0FBTyxFQUF5Qix3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RyxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJ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Y3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBQcm92aWRlcixcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ0NvbmZpZywgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHtcbiAgICBEeW5hbWljRm9ybUZpZWxkSXRlbSxcbiAgICBEeW5hbWljRm9ybUl0ZW0sXG4gICAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgICBGb3JtR2VuZXJhdG9yU2VydmljZSxcbiAgICBQcmVwYXJlZER5bmFtaWNGb3JtRmllbGRJdGVtXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vZm9ybSc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IEZEUF9QUkVTRVRfTUFOQUdFRF9DT01QT05FTlQsIFNlbGVjdEl0ZW0gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyR3JvdXAsIEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZSwgRmlsdGVyVHlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vdGFibGUnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgVG9vbGJhckl0ZW1EaXJlY3RpdmUsXG4gICAgVG9vbGJhclNlcGFyYXRvckNvbXBvbmVudCxcbiAgICBUb29sYmFyU3BhY2VyRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b29sYmFyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2J1dHRvbic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24tZmllbGQvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyU2V0dGluZ3NEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2cvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNNQVJUX0ZJTFRFUl9CQVJfUkVOREVSRVJfQ09NUE9ORU5UIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJTdWJqZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3NtYXJ0LWZpbHRlci1iYXItc3ViamVjdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJUb29sYmFySXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zbWFydC1maWx0ZXItYmFyLXRvb2xiYXItaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgZ2V0U2VsZWN0SXRlbVZhbHVlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyTWFuYWdlZFByZXNldCwgU21hcnRGaWx0ZXJDaGFuZ2VPYmplY3QgfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJDb25kaXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24nO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1maWVsZC1kZWZpbml0aW9uJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyU2V0dGluZ3NEaWFsb2dDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1zZXR0aW5ncy1kaWFsb2ctY29uZmlnJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyRHluYW1pY0Zvcm1GaWVsZEl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWR5bmFtaWMtZm9ybS1pdGVtJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyIH0gZnJvbSAnLi9zbWFydC1maWx0ZXItYmFyLmNsYXNzJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyU2VydmljZSB9IGZyb20gJy4vc21hcnQtZmlsdGVyLWJhci5zZXJ2aWNlJztcblxuY29uc3QgZGVmYXVsdENvbHVtbnNMYXlvdXQgPSAnWEw0LUwzLU0yLVMxJztcblxuZnVuY3Rpb24gZ2V0Q29sdW1uc051bWJlcihsYXlvdXQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICAuLi5sYXlvdXQuc3BsaXQoJy0nKS5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoQXJyYXkgPSBwYXJ0Lm1hdGNoKC9cXGQrLyk7XG5cbiAgICAgICAgICAgIHJldHVybiBtYXRjaEFycmF5ID8gcGFyc2VJbnQobWF0Y2hBcnJheVswXSwgMTApIDogMTtcbiAgICAgICAgfSlcbiAgICApO1xufVxuXG4vKipcbiAqIERlZmF1bHQgZGlhbG9nIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnID0ge1xuICAgIHJlc3BvbnNpdmVQYWRkaW5nOiB0cnVlLFxuICAgIHZlcnRpY2FsUGFkZGluZzogdHJ1ZSxcbiAgICBtaW5XaWR0aDogJzMwcmVtJyxcbiAgICAvKiogODhweCBpdCdzIHRoZSBoZWFkZXIgKyBmb290ZXIgaGVpZ2h0ICovXG4gICAgYm9keU1pbkhlaWdodDogJ2NhbGMoNTB2aCAtIDg4cHgpJ1xufTtcblxuY29uc3Qgc21hcnRGaWx0ZXJCYXJQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogU21hcnRGaWx0ZXJCYXIsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU21hcnRGaWx0ZXJCYXJDb21wb25lbnQpXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1zbWFydC1maWx0ZXItYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHNtYXJ0RmlsdGVyQmFyUHJvdmlkZXIsXG4gICAgICAgIFNtYXJ0RmlsdGVyQmFyU2VydmljZSxcbiAgICAgICAgRm9ybUdlbmVyYXRvclNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9QUkVTRVRfTUFOQUdFRF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU21hcnRGaWx0ZXJCYXJDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1zbWFydC1maWx0ZXItYmFyJyxcbiAgICAgICAgJ1tjbGFzcy5mZHAtc21hcnQtZmlsdGVyLWJhci0tdHJhbnNwYXJlbnRdJzogJ3RyYW5zcGFyZW50J1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBUb29sYmFyU2VwYXJhdG9yQ29tcG9uZW50LFxuICAgICAgICBTZWFyY2hGaWVsZENvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhclNwYWNlckRpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFySXRlbURpcmVjdGl2ZSxcbiAgICAgICAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTbWFydEZpbHRlckJhckNvbXBvbmVudCBleHRlbmRzIFNtYXJ0RmlsdGVyQmFyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRm9ybSBnZW5lcmF0b3IgY29tcG9uZW50IGluc3RhbmNlLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoRm9ybUdlbmVyYXRvckNvbXBvbmVudCkgX2Zvcm1HZW5lcmF0b3IhOiBGb3JtR2VuZXJhdG9yQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogU3ViamVjdCB3aGljaCB3aWxsIHByb3ZpZGUgY29uZmlndXJhdGlvbiBkYXRhOiBkYXRhIHNvdXJjZSwgY29sdW1ucyBkZWZpbml0aW9ucywgZXRjLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN1YmplY3QodmFsdWU6IFNtYXJ0RmlsdGVyQmFyU3ViamVjdERpcmVjdGl2ZSkge1xuICAgICAgICB0aGlzLl9zZXRTdWJqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgc3ViamVjdCgpOiBTbWFydEZpbHRlckJhclN1YmplY3REaXJlY3RpdmUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViamVjdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciBzbWFydCBmaWx0ZXIgYmFyIGJhY2tncm91bmQgc2hvdWxkIGJlIHRyYW5zcGFyZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRyYW5zcGFyZW50KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fdHJhbnNwYXJlbnQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCB0cmFuc3BhcmVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbHVtbnMgbGF5b3V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyc0NvbHVtbkxheW91dDogTnVsbGFibGU8c3RyaW5nPiA9IGRlZmF1bHRDb2x1bW5zTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byB1cGRhdGUgZmlsdGVycyB3aGVuIHRoZXkgYXJlIHNlbGVjdGVkLiBPdGhlcndpc2UsIGZpbHRlcnMgd2lsbCBiZSBhcHBsaWVkIG9ubHkgYnkgcHJlc3NpbmcgXCJHb1wiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGxpdmVVcGRhdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgZmlsdGVycyBoYXZlIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzbWFydEZpbHRlcnNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U21hcnRGaWx0ZXJDaGFuZ2VPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxTbWFydEZpbHRlckNoYW5nZU9iamVjdD4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBzZWxlY3RlZCBmaWx0ZXJzIGhhcyBiZWVuIGFwcGxpZWQgKFVzZXIgY2xpY2tlZCBvbiBHbyBidXR0b24pLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNtYXJ0RmlsdGVyc0FwcGxpZWQ6IEV2ZW50RW1pdHRlcjxTbWFydEZpbHRlckNoYW5nZU9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNtYXJ0RmlsdGVyQ2hhbmdlT2JqZWN0PigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHNlYXJjaCBpbnB1dCBmaWVsZCB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlYXJjaElucHV0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VhcmNoSW5wdXQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFNtYXJ0RmlsdGVyQmFyVG9vbGJhckl0ZW1EaXJlY3RpdmUpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdG9vbGJhckl0ZW1SZWZzOiBRdWVyeUxpc3Q8U21hcnRGaWx0ZXJCYXJUb29sYmFySXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVkIGFycmF5IG9mIGZpbHRlcnMgdG8gYXBwbHkgZm9yIHRoZSBzdWJqZWN0J3MgZGF0YSBzb3VyY2UuXG4gICAgICovXG4gICAgZmlsdGVyQnk6IENvbGxlY3Rpb25GaWx0ZXJHcm91cFtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggZmllbGQgdmFsdWUgdG8gYXBwbHkgZm9yIHRoZSBzdWJqZWN0J3MgZGF0YSBzb3VyY2UuXG4gICAgICovXG4gICAgc2VhcmNoOiBTZWFyY2hJbnB1dCB8IHVuZGVmaW5lZDtcbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF90b29sYmFySXRlbXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Zvcm1JdGVtczogRHluYW1pY0Zvcm1JdGVtW107XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRGaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dGaWx0ZXJCYXIgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJqZWN0Py5nZXREYXRhU291cmNlKCkgPyB0aGlzLl9zdWJqZWN0LmdldERhdGFTb3VyY2UoKS5pc0RhdGFMb2FkaW5nIDogdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YmplY3RTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc3BhcmVudCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtR2VuZXJhdG9yUmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaWdub3JlUHJlc2V0Q2hhbmdlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YmplY3QhOiBTbWFydEZpbHRlckJhclN1YmplY3REaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9zbWFydEZpbHRlckJhclNlcnZpY2U6IFNtYXJ0RmlsdGVyQmFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZmdTZXJ2aWNlOiBGb3JtR2VuZXJhdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmOiBEZXN0cm95UmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX2ZnU2VydmljZS5hZGRDb21wb25lbnQoU21hcnRGaWx0ZXJCYXJDb25kaXRpb25GaWVsZENvbXBvbmVudCwgW1NNQVJUX0ZJTFRFUl9CQVJfUkVOREVSRVJfQ09NUE9ORU5UXSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtcyA9IHRoaXMuX3Rvb2xiYXJJdGVtUmVmcy50b0FycmF5KCkubWFwKChyZWYpID0+IHJlZi50ZW1wbGF0ZVJlZik7XG5cbiAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW1SZWZzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtcyA9IHRoaXMuX3Rvb2xiYXJJdGVtUmVmcy50b0FycmF5KCkubWFwKChyZWYpID0+IHJlZi50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVGcm9tU3ViamVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgY29uZGl0aW9uIHZhbHVlIGludG8gaHVtYW4tcmVhZGFibGUgdGV4dC5cbiAgICAgKiBAcGFyYW0gY29uZGl0aW9uIFNtYXJ0IGZpbHRlciBiYXIgY29uZGl0aW9uLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJUeXBlIENvbmRpdGlvbiBmaWx0ZXIgdHlwZS5cbiAgICAgKi9cbiAgICBhc3luYyBnZXREaXNwbGF5VmFsdWUoY29uZGl0aW9uOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbiwgZmlsdGVyVHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NtYXJ0RmlsdGVyQmFyU2VydmljZS5nZXREaXNwbGF5VmFsdWUoY29uZGl0aW9uLCBmaWx0ZXJUeXBlKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbiBGaWx0ZXJpbmcgU2V0dGluZ3MgRGlhbG9nICovXG4gICAgc2hvd0ZpbHRlcmluZ1NldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZ2V0U3ViamVjdERlZmluaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IFNtYXJ0RmlsdGVyU2V0dGluZ3NEaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IGNvbHVtbnMsXG4gICAgICAgICAgICBmaWx0ZXJCeTogdGhpcy5maWx0ZXJCeSxcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyczogdGhpcy5fc2VsZWN0ZWRGaWx0ZXJzXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKFxuICAgICAgICAgICAgU21hcnRGaWx0ZXJCYXJTZXR0aW5nc0RpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5kaWFsb2dDb25maWcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZVBhZGRpbmdzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnNTByZW0nLFxuICAgICAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLl9pbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoc2VsZWN0ZWRGaWx0ZXJzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRGaWx0ZXJzKHNlbGVjdGVkRmlsdGVycyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoSW5wdXRDaGFuZ2UoZXZlbnQ6IFNlYXJjaElucHV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhbmNlbFNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMubGl2ZVVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJtaXRzIGZpbHRlcnMgYW5kIHNlYXJjaCBmb3JtLlxuICAgICAqL1xuICAgIHN1Ym1pdEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1HZW5lcmF0b3Iuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBmb3Igc2V0dGluZyBwcmVkZWZpbmVkIGNvbmZpZ3VyYXRpb24uICovXG4gICAgYXN5bmMgc2V0UHJlc2V0KGRhdGE6IFNtYXJ0RmlsdGVyQmFyTWFuYWdlZFByZXNldCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9pZ25vcmVQcmVzZXRDaGFuZ2UgPSB0cnVlO1xuICAgICAgICBkYXRhLmZpbHRlckJ5ID0gZGF0YS5maWx0ZXJCeSB8fCBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeSA9IGRhdGEuZmlsdGVyQnk7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gZGF0YS5zZWFyY2g7XG5cbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvclJlYWR5LnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUpKS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gUmVzZXQgZm9ybVxuICAgICAgICAgICAgdGhpcy5fZmdTZXJ2aWNlLnJlc2V0Rm9ybSh0aGlzLl9mb3JtR2VuZXJhdG9yLmZvcm0pO1xuXG4gICAgICAgICAgICAvLyBTZXQgbmV3IGRhdGFcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyQnkgb2YgdGhpcy5maWx0ZXJCeSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9mZ1NlcnZpY2UuZ2V0Rm9ybUNvbnRyb2wodGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtLCBmaWx0ZXJCeS5maWVsZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUl0ZW0gPSBjb250cm9sLmZvcm1JdGVtIGFzIFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLl9zbWFydEZpbHRlckJhclNlcnZpY2UudHJhbnNmb3JtQ29sbGVjdGlvbkZpbHRlcihmaWx0ZXJCeSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENvbmRpdGlvbnMgPSBhd2FpdCB0aGlzLl9zbWFydEZpbHRlckJhclNlcnZpY2UuZ2V0Q29uZGl0aW9uRmllbGRTZWxlY3RlZFZhcmlhbnRzKFxuICAgICAgICAgICAgICAgICAgICBmb3JtSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb250cm9sPy5zZXRWYWx1ZShzZWxlY3RlZENvbmRpdGlvbnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEZpbHRlcnModGhpcy5maWx0ZXJCeS5tYXAoKGZpbHRlckJ5KSA9PiBmaWx0ZXJCeS5maWVsZCkpO1xuXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnN1YmplY3QuZ2V0RGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgc291cmNlLmRhdGFQcm92aWRlci5zZXRGaWx0ZXJzKHRoaXMuZmlsdGVyQnksIHRoaXMuc2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMuc3ViamVjdC5nZXRTdWJqZWN0KCkuZmV0Y2goKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgY3VycmVudCBwcmVzZXQgY29uZmlndXJhdGlvbi4gKi9cbiAgICBnZXRDdXJyZW50UHJlc2V0KCk6IFNtYXJ0RmlsdGVyQmFyTWFuYWdlZFByZXNldCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoLFxuICAgICAgICAgICAgZmlsdGVyQnk6IHRoaXMuZmlsdGVyQnlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gd2hlbiBmb3JtIGdlbmVyYXRvciBmb3JtIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgYW5kIHN1Ym1pdHRlZC5cbiAgICAgKi9cbiAgICBfb25Gb3JtU3VibWl0dGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IHRoaXMuX2dlbmVyYXRlQ29sbGVjdGlvbkZpbHRlckdyb3VwcyhldmVudCk7XG4gICAgICAgIHRoaXMuX2FwcGx5RmlsdGVyaW5nKGNvbmRpdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDYWxsYmFjayBtZXRob2Qgd2hlbiBmb3JtIGhhcyBiZWVuIGNyZWF0ZWQuXG4gICAgICogUG9wdWxhdGVzIHNlbGVjdGVkIGZpbHRlcnMgYXJyYXkgd2l0aCB1c2VyLWRlZmluZWQgZGVmYXVsdCBmaWx0ZXJzLlxuICAgICAqL1xuICAgIF9vbkZvcm1DcmVhdGVkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdWJqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEZpbHRlcnMoWy4uLnRoaXMuc3ViamVjdC5nZXREZWZhdWx0RmllbGRzKCksIC4uLnRoaXMuX3NlbGVjdGVkRmlsdGVyc10pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0Rm9ybWF0dGVkQ29uZGl0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ2hhbmdlZC5lbWl0KHsgZmlsdGVyQnk6IGNvbmRpdGlvbnMsIHNlYXJjaDogdGhpcy5zZWFyY2gsIHN1YmplY3Q6IHRoaXMuc3ViamVjdCB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5saXZlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlGaWx0ZXJpbmcoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9mb3JtR2VuZXJhdG9yUmVhZHkubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX3RvZ2dsZUZpbHRlckJhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2hvd0ZpbHRlckJhciA9ICF0aGlzLl9zaG93RmlsdGVyQmFyO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9ybWF0cyByYXcgZmlsdGVycyBvYmplY3QgaW50byBhcnJheSBvZiBncm91cGVkIGZpbHRlcnMuXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgZ3JvdXBlZCBmaWx0ZXJzLlxuICAgICAqL1xuICAgIGFzeW5jIGdldEZvcm1hdHRlZENvbmRpdGlvbnMoKTogUHJvbWlzZTxDb2xsZWN0aW9uRmlsdGVyR3JvdXBbXT4ge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBhd2FpdCB0aGlzLl9mZ1NlcnZpY2UuZ2V0Rm9ybVZhbHVlKHRoaXMuX2Zvcm1HZW5lcmF0b3IuZm9ybSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZW5lcmF0ZUNvbGxlY3Rpb25GaWx0ZXJHcm91cHMoZm9ybVZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dlbmVyYXRlQ29sbGVjdGlvbkZpbHRlckdyb3Vwcyh2YWx1ZToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbltdO1xuICAgIH0pOiBDb2xsZWN0aW9uRmlsdGVyR3JvdXBbXSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25GaWx0ZXJHcm91cHM6IENvbGxlY3Rpb25GaWx0ZXJHcm91cFtdID0gW107XG5cbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2dldFN1YmplY3REZWZpbml0aW9ucygpO1xuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlKVxuICAgICAgICAgICAgLmZpbHRlcigoWywgZmllbGRDb25kaXRpb25zXSkgPT4gISFmaWVsZENvbmRpdGlvbnMpXG4gICAgICAgICAgICAuZm9yRWFjaCgoW2ZpZWxkTmFtZSwgZmllbGRDb25kaXRpb25zXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZCgoYykgPT4gYy5uYW1lID09PSBmaWVsZE5hbWUpIGFzIFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckdyb3VwOiBDb2xsZWN0aW9uRmlsdGVyR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneTogY29sdW1uLmNvbmRpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmtleVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZmllbGRDb25kaXRpb25zLmZvckVhY2goKGNvbmRpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJHcm91cC5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k6IGNvbmRpdGlvbi5vcGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbmRpdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlMjogY29uZGl0aW9uLnZhbHVlMixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbHVtbi5kYXRhVHlwZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25GaWx0ZXJHcm91cHMucHVzaChmaWx0ZXJHcm91cCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZW1vdmUgZW1wdHkgZmlsdGVyIG9iamVjdHMuXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uRmlsdGVyR3JvdXBzLmZpbHRlcigoZmlsdGVyR3JvdXApID0+IGZpbHRlckdyb3VwLmZpbHRlcnM/Lmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U3ViamVjdChzdWJqZWN0OiBTbWFydEZpbHRlckJhclN1YmplY3REaXJlY3RpdmUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzdWJqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUZyb21TdWJqZWN0KCk7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvU3ViamVjdENvbHVtbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgdW5zdWJzY3JpYmVGcm9tU3ViamVjdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zdWJqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvU3ViamVjdENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX3N1YmplY3QuZmllbGRzU3RyZWFtLnN1YnNjcmliZShhc3luYyAoY29sdW1uczogU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb25bXSkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9nZW5lcmF0ZUZvcm0oY29sdW1ucy5maWx0ZXIoKGMpID0+IGMuZmlsdGVyYWJsZSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR2VuZXJhdGVzIGZvcm0gaXRlbXMgdG8gYmUgY29uc3VtZWQgYnkgZm9ybSBnZW5lcmF0b3IgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBjb2x1bW5zIGNvbHVtbnMgZGVmaW5pdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgX2dlbmVyYXRlRm9ybShjb2x1bW5zOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBEeW5hbWljRm9ybUZpZWxkSXRlbVtdID0gW107XG4gICAgICAgIGNvbnN0IGNvbHVtbnNOdW1iZXIgPSBnZXRDb2x1bW5zTnVtYmVyKHRoaXMuZmlsdGVyc0NvbHVtbkxheW91dCA/PyAnJyk7XG4gICAgICAgIGxldCBjdXJyZW50Q29sdW1uID0gMTtcblxuICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBsZXQgaXRlbTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbSA9IHRoaXMuX2dlbmVyYXRlQmFzZUZpZWxkSXRlbShjb2x1bW4pO1xuXG4gICAgICAgICAgICBpZiAoY29sdW1uLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRGaWx0ZXJzLnB1c2goY29sdW1uLm5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5maWx0ZXJUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlNJTkdMRTpcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGUuQ0FURUdPUlk6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlID0gJ3NlbGVjdCc7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLk1VTFRJOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudHlwZSA9ICdtdWx0aS1pbnB1dCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyVHlwZS5DVVNUT006XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLl9nZW5lcmF0ZUN1c3RvbUZpbHRlckZpZWxkSXRlbShjb2x1bW4sIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGUuSU5QVVQ6XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuX2dlbmVyYXRlSW5wdXRGaWVsZEl0ZW0oY29sdW1uLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5jb2x1bW4gPSBjdXJyZW50Q29sdW1uO1xuICAgICAgICAgICAgY3VycmVudENvbHVtbiArPSAxO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudENvbHVtbiA+IGNvbHVtbnNOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uID0gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZm9ybUl0ZW1zID0gaXRlbXM7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dlbmVyYXRlQ3VzdG9tRmlsdGVyRmllbGRJdGVtKFxuICAgICAgICBjb2x1bW46IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uLFxuICAgICAgICBpdGVtOiBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgKTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbSB7XG4gICAgICAgIGlmICghY29sdW1uLmN1c3RvbUZpbHRlclR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlID0gY29sdW1uLmN1c3RvbUZpbHRlclR5cGU7XG4gICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YSA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEsXG4gICAgICAgICAgICB0aGlzLl9zbWFydEZpbHRlckJhclNlcnZpY2UuZ2V0Q3VzdG9tRmlsdGVyQ29uZmlndXJhdGlvbihjb2x1bW4uY3VzdG9tRmlsdGVyVHlwZSlcbiAgICAgICAgKTtcblxuICAgICAgICBpdGVtLnR5cGUgPSBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEucmVuZGVyZXJDb21wb25lbnRcbiAgICAgICAgICAgID8gYCR7aXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLnR5cGV9LXJlbmRlcmVyYFxuICAgICAgICAgICAgOiBpdGVtLnR5cGU7XG4gICAgICAgIGl0ZW0udHJhbnNmb3JtZXIgPSBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudmFsdWVUcmFuc2Zvcm1lcjtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR2VuZXJhdGVzIGZvcm0gaXRlbSBiYXNlZCBvbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIGNvbHVtblxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZW5lcmF0ZUlucHV0RmllbGRJdGVtKFxuICAgICAgICBjb2x1bW46IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uLFxuICAgICAgICBpdGVtOiBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgKTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbSB7XG4gICAgICAgIHN3aXRjaCAoY29sdW1uLmRhdGFUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZS5EQVRFOlxuICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlID0gJ2RhdGVwaWNrZXInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS5jb250cm9sVHlwZSA9ICdudW1iZXInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLlNUUklORzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLmNvbnRyb2xUeXBlID0gJ3RleHQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEdlbmVyYXRlcyBiYXNlIGZvcm0gaXRlbSBvYmplY3QgdG8gYmUgY29uc3VtZWQgYnkgZm9ybSBnZW5lcmF0b3IgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBjb2x1bW4gY29sdW1uIGRlZmluaXRpb25cbiAgICAgKiBAcmV0dXJucyBiYXNlIGZvcm0gaXRlbSBvYmplY3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVCYXNlRmllbGRJdGVtKGNvbHVtbjogU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb24pOiBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgbWVzc2FnZTogY29sdW1uLmxhYmVsLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGNvbHVtbi5yZXF1aXJlZCxcbiAgICAgICAgICAgIHR5cGU6IFNNQVJUX0ZJTFRFUl9CQVJfUkVOREVSRVJfQ09NUE9ORU5ULFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcgJyxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IGNvbHVtbi5yZXF1aXJlZCA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdLFxuICAgICAgICAgICAgY2hvaWNlczogY29sdW1uLmhhc09wdGlvbnMgPyB0aGlzLl9nZXRGaWx0ZXJEZWZhdWx0T3B0aW9ucyhjb2x1bW4ua2V5LCBjb2x1bW4uZmlsdGVyVHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0cmFuc2Zvcm1lcjogKGl0ZW1WYWx1ZSkgPT4gZ2V0U2VsZWN0SXRlbVZhbHVlKGl0ZW1WYWx1ZSksXG4gICAgICAgICAgICBndWlPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbERhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IGNvbHVtbi5kYXRhVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZTogY29sdW1uLmZpbHRlclR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xUeXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGNob2ljZXM6IGNvbHVtbi5oYXNPcHRpb25zID8gdGhpcy5fZ2V0RmlsdGVyQXZhaWxhYmxlT3B0aW9ucyhjb2x1bW4ua2V5KSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3aGVuOiAoKSA9PiB0aGlzLl9zZWxlY3RlZEZpbHRlcnMuaW5jbHVkZXMoY29sdW1uLm5hbWUpXG4gICAgICAgIH0gYXMgU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0cmlldmVzIGF2YWlsYWJsZSBvcHRpb25zIGZvciBwYXJ0aWN1bGFyIGNvbHVtbiBieSB1c2luZyBkYXRhIHNvdXJjZSBtZXRob2QuXG4gICAgICogQHBhcmFtIGNvbHVtbiBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+fSBPYnNlcnZhYmxlIHdpdGggdGhlIGFycmF5IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEZpbHRlckF2YWlsYWJsZU9wdGlvbnMoY29sdW1uOiBzdHJpbmcpOiAoKSA9PiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4gdGhpcy5fZ2V0RmllbGRWYXJpYW50cyhjb2x1bW4pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RmlsdGVyRGVmYXVsdE9wdGlvbnMoY29sdW1uOiBzdHJpbmcsIGZpbHRlclR5cGU6IEZpbHRlclR5cGUpOiAoKSA9PiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYW50cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2dldEZpZWxkVmFyaWFudHMoY29sdW1uKS5waXBlKHRha2UoMSkpKTtcblxuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnM6IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uW10gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb246IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogJ2VxdWFsVG8nXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5kaXNwbGF5VmFsdWUgPSBhd2FpdCB0aGlzLmdldERpc3BsYXlWYWx1ZShjb25kaXRpb24sIGZpbHRlclR5cGUpO1xuXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRGaWVsZFZhcmlhbnRzKGNvbHVtbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdC5nZXRGaWVsZFZhcmlhbnRzKGNvbHVtbikucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gZGF0YS5maW5kSW5kZXgoKF9pdGVtKSA9PiBfaXRlbS52YWx1ZSA9PT0gaXRlbS52YWx1ZSkgPT09IGluZGV4KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFN1YmplY3REZWZpbml0aW9ucygpOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdD8uZ2V0U3ViamVjdEZpZWxkcygpIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZXRzIHByb3ZpZGVkIGZpbHRlcnMgZGlyZWN0bHkgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzIGFycmF5IG9mIGZpbHRlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXBwbHlGaWx0ZXJpbmcoZmlsdGVyczogQ29sbGVjdGlvbkZpbHRlckdyb3VwW10pOiB2b2lkIHtcbiAgICAgICAgLy8gQXBwbHkgb3V0c2lkZSBmaWx0ZXJpbmcgYW5kIGZvcmNlIHN1YmplY3QgdG8gZmV0Y2ggbmV3IGRhdGEuXG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc3ViamVjdC5nZXREYXRhU291cmNlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyQnkgPSBmaWx0ZXJzO1xuICAgICAgICBzb3VyY2UuZGF0YVByb3ZpZGVyLnNldEZpbHRlcnMoZmlsdGVycywgdGhpcy5zZWFyY2gpO1xuICAgICAgICB0aGlzLnN1YmplY3QuZ2V0U3ViamVjdCgpLmZldGNoKCk7XG4gICAgICAgIGNvbnN0IGVtaXR0ZWRWYWx1ZTogU21hcnRGaWx0ZXJCYXJNYW5hZ2VkUHJlc2V0ID0geyBzZWFyY2g6IHRoaXMuc2VhcmNoLCBmaWx0ZXJCeTogdGhpcy5maWx0ZXJCeSB9O1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVyc0FwcGxpZWQuZW1pdCh7IC4uLmVtaXR0ZWRWYWx1ZSwgc3ViamVjdDogdGhpcy5fc3ViamVjdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lnbm9yZVByZXNldENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXRDaGFuZ2VkLmVtaXQoZW1pdHRlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pZ25vcmVQcmVzZXRDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlRnJvbVN1YmplY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U2VsZWN0ZWRGaWx0ZXJzKGZpbHRlcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmOiBzdHJpbmcsIGk6IG51bWJlcikgPT4gZmlsdGVycy5pbmRleE9mKGYpID09PSBpKTtcbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5yZWZyZXNoU3RlcHNWaXNpYmlsaXR5KCk7XG4gICAgfVxufVxuIiwiPGRpdj5cbiAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3Rvb2xiYXJJdGVtc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGVtcGxhdGUgb2YgX3Rvb2xiYXJJdGVtc1wiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxmZHAtc2VhcmNoLWZpZWxkXG4gICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiX29uU2VhcmNoSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgICAgICAgICAoY2FuY2VsU2VhcmNoKT1cIl9jYW5jZWxTZWFyY2goKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2xvYWRpbmdcIlxuICAgICAgICAgICAgW2Rpc2FibGVSZWZyZXNoXT1cInRydWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVNtYXJ0RmlsdGVyQmFyLnNlYXJjaFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCJcbiAgICAgICAgICAgIGJ1dHRvblR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWxpdmVVcGRhdGVcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2xvYWRpbmdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVNtYXJ0RmlsdGVyQmFyLnN1Ym1pdEJ1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBnbHlwaD1cInN5bmNocm9uaXplXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfbG9hZGluZ1wiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIidwbGF0Zm9ybVNtYXJ0RmlsdGVyQmFyLnJlZnJlc2hCdXR0b25BcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dGaWx0ZXJpbmdTZXR0aW5ncygpXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAncGxhdGZvcm1TbWFydEZpbHRlckJhci5maWx0ZXJzQnV0dG9uTGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IGZpbHRlcnNDb3VudDogX3NlbGVjdGVkRmlsdGVycy5sZW5ndGggfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9sb2FkaW5nXCJcbiAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJfdG9nZ2xlRmlsdGVyQmFyKClcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgIChfc2hvd0ZpbHRlckJhclxuICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVNtYXJ0RmlsdGVyQmFyLmhpZGVGaWx0ZXJzQnV0dG9uTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtU21hcnRGaWx0ZXJCYXIuc2hvd0ZpbHRlcnNCdXR0b25MYWJlbCdcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBidXR0b25UeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2xvYWRpbmdcIlxuICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgIDwvZmQtdG9vbGJhcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmRwLXNtYXJ0LWZpbHRlci1iYXJfX2ZpbHRlcnNcIiBbaGlkZGVuXT1cIiFfc2hvd0ZpbHRlckJhclwiPlxuICAgIDxmZHAtZm9ybS1nZW5lcmF0b3JcbiAgICAgICAgKGZvcm1DcmVhdGVkKT1cIl9vbkZvcm1DcmVhdGVkKClcIlxuICAgICAgICAoZm9ybVN1Ym1pdHRlZCk9XCJfb25Gb3JtU3VibWl0dGVkKCRldmVudClcIlxuICAgICAgICBbbm9BZGRpdGlvbmFsQ29udGVudF09XCJ0cnVlXCJcbiAgICAgICAgW2Zvcm1JdGVtc109XCJfZm9ybUl0ZW1zXCJcbiAgICAgICAgW2NvbHVtbkxheW91dF09XCJmaWx0ZXJzQ29sdW1uTGF5b3V0XCJcbiAgICA+PC9mZHAtZm9ybS1nZW5lcmF0b3I+XG48L2Rpdj5cbiJdfQ==
531
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvc21hcnQtZmlsdGVyLWJhci9zbWFydC1maWx0ZXItYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zbWFydC1maWx0ZXItYmFyL3NtYXJ0LWZpbHRlci1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkcsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFHSCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBRXZCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUFFLDRCQUE0QixFQUFjLE1BQU0sa0NBQWtDLENBQUM7QUFDNUYsT0FBTyxFQUF5Qix3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RyxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFF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Qyw4N0VBZ0VBLDgrQ0RnRFEsZ0JBQWdCLCtNQUNoQixnQkFBZ0Isb0pBQ2hCLHlCQUF5QixpRUFDekIsb0JBQW9CLGlkQUNwQixzQkFBc0IsbUdBQ3RCLGVBQWUsNFFBQ2Ysb0JBQW9CLDBKQUNwQixzQkFBc0IsZ1ZBQ3RCLGVBQWU7OzJGQUdWLHVCQUF1QjtrQkFoQ25DLFNBQVM7K0JBQ0ksc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCOzRCQUNJLE9BQU8sRUFBRSw0QkFBNEI7NEJBQ3JDLFdBQVcseUJBQXlCO3lCQUN2QztxQkFDSixRQUNLO3dCQUNGLEtBQUssRUFBRSxzQkFBc0I7d0JBQzdCLDJDQUEyQyxFQUFFLGFBQWE7cUJBQzdELGNBQ1csSUFBSSxXQUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNsQjt5T0FPa0MsY0FBYztzQkFBaEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBTTdCLE9BQU87c0JBRFYsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUs7Z0JBYU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQU9OLFVBQVU7c0JBRFQsS0FBSztnQkFPTixtQkFBbUI7c0JBRGxCLE1BQU07Z0JBT1AsbUJBQW1CO3NCQURsQixNQUFNO2dCQU9QLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFJVSxnQkFBZ0I7c0JBRGhDLGVBQWU7dUJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFByb3ZpZGVyLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQge1xuICAgIER5bmFtaWNGb3JtRmllbGRJdGVtLFxuICAgIER5bmFtaWNGb3JtSXRlbSxcbiAgICBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LFxuICAgIEZvcm1HZW5lcmF0b3JTZXJ2aWNlLFxuICAgIFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW1cbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgRkRQX1BSRVNFVF9NQU5BR0VEX0NPTVBPTkVOVCwgU2VsZWN0SXRlbSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IENvbGxlY3Rpb25GaWx0ZXJHcm91cCwgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLCBGaWx0ZXJUeXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZSc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIFRvb2xiYXJJdGVtRGlyZWN0aXZlLFxuICAgIFRvb2xiYXJTZXBhcmF0b3JDb21wb25lbnQsXG4gICAgVG9vbGJhclNwYWNlckRpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdG9vbGJhcic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9idXR0b24nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBTbWFydEZpbHRlckJhckNvbmRpdGlvbkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NtYXJ0LWZpbHRlci1iYXItY29uZGl0aW9uLWZpZWxkL3NtYXJ0LWZpbHRlci1iYXItY29uZGl0aW9uLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTbWFydEZpbHRlckJhclNldHRpbmdzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NtYXJ0LWZpbHRlci1iYXItc2V0dGluZ3MtZGlhbG9nL3NtYXJ0LWZpbHRlci1iYXItc2V0dGluZ3MtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTTUFSVF9GSUxURVJfQkFSX1JFTkRFUkVSX0NPTVBPTkVOVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyU3ViamVjdERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zbWFydC1maWx0ZXItYmFyLXN1YmplY3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyVG9vbGJhckl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc21hcnQtZmlsdGVyLWJhci10b29sYmFyLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IGdldFNlbGVjdEl0ZW1WYWx1ZSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTbWFydEZpbHRlckJhck1hbmFnZWRQcmVzZXQsIFNtYXJ0RmlsdGVyQ2hhbmdlT2JqZWN0IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3NtYXJ0LWZpbHRlci1iYXItY2hhbmdlJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3NtYXJ0LWZpbHRlci1iYXItY29uZGl0aW9uJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3NtYXJ0LWZpbHRlci1iYXItZmllbGQtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBTbWFydEZpbHRlclNldHRpbmdzRGlhbG9nQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3NtYXJ0LWZpbHRlci1iYXItc2V0dGluZ3MtZGlhbG9nLWNvbmZpZyc7XG5pbXBvcnQgeyBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3NtYXJ0LWZpbHRlci1keW5hbWljLWZvcm0taXRlbSc7XG5pbXBvcnQgeyBTbWFydEZpbHRlckJhciB9IGZyb20gJy4vc21hcnQtZmlsdGVyLWJhci5jbGFzcyc7XG5pbXBvcnQgeyBTbWFydEZpbHRlckJhclNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LWZpbHRlci1iYXIuc2VydmljZSc7XG5cbmNvbnN0IGRlZmF1bHRDb2x1bW5zTGF5b3V0ID0gJ1hMNC1MMy1NMi1TMSc7XG5cbmZ1bmN0aW9uIGdldENvbHVtbnNOdW1iZXIobGF5b3V0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heChcbiAgICAgICAgLi4ubGF5b3V0LnNwbGl0KCctJykubWFwKChwYXJ0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaEFycmF5ID0gcGFydC5tYXRjaCgvXFxkKy8pO1xuXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hBcnJheSA/IHBhcnNlSW50KG1hdGNoQXJyYXlbMF0sIDEwKSA6IDE7XG4gICAgICAgIH0pXG4gICAgKTtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGRpYWxvZyBjb25maWd1cmF0aW9uLlxuICovXG5jb25zdCBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyA9IHtcbiAgICByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSxcbiAgICB2ZXJ0aWNhbFBhZGRpbmc6IHRydWUsXG4gICAgbWluV2lkdGg6ICczMHJlbScsXG4gICAgLyoqIDg4cHggaXQncyB0aGUgaGVhZGVyICsgZm9vdGVyIGhlaWdodCAqL1xuICAgIGJvZHlNaW5IZWlnaHQ6ICdjYWxjKDUwdmggLSA4OHB4KSdcbn07XG5cbmNvbnN0IHNtYXJ0RmlsdGVyQmFyUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IFNtYXJ0RmlsdGVyQmFyLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNtYXJ0RmlsdGVyQmFyQ29tcG9uZW50KVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtc21hcnQtZmlsdGVyLWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWZpbHRlci1iYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9zbWFydC1maWx0ZXItYmFyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBzbWFydEZpbHRlckJhclByb3ZpZGVyLFxuICAgICAgICBTbWFydEZpbHRlckJhclNlcnZpY2UsXG4gICAgICAgIEZvcm1HZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfUFJFU0VUX01BTkFHRURfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNtYXJ0RmlsdGVyQmFyQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZHAtc21hcnQtZmlsdGVyLWJhcicsXG4gICAgICAgICdbY2xhc3MuZmRwLXNtYXJ0LWZpbHRlci1iYXItLXRyYW5zcGFyZW50XSc6ICd0cmFuc3BhcmVudCdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBUb29sYmFyU2VwYXJhdG9yQ29tcG9uZW50LFxuICAgICAgICBTZWFyY2hGaWVsZENvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhclNwYWNlckRpcmVjdGl2ZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFySXRlbURpcmVjdGl2ZSxcbiAgICAgICAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTbWFydEZpbHRlckJhckNvbXBvbmVudCBleHRlbmRzIFNtYXJ0RmlsdGVyQmFyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRm9ybSBnZW5lcmF0b3IgY29tcG9uZW50IGluc3RhbmNlLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoRm9ybUdlbmVyYXRvckNvbXBvbmVudCkgX2Zvcm1HZW5lcmF0b3IhOiBGb3JtR2VuZXJhdG9yQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogU3ViamVjdCB3aGljaCB3aWxsIHByb3ZpZGUgY29uZmlndXJhdGlvbiBkYXRhOiBkYXRhIHNvdXJjZSwgY29sdW1ucyBkZWZpbml0aW9ucywgZXRjLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN1YmplY3QodmFsdWU6IFNtYXJ0RmlsdGVyQmFyU3ViamVjdERpcmVjdGl2ZSkge1xuICAgICAgICB0aGlzLl9zZXRTdWJqZWN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgc3ViamVjdCgpOiBTbWFydEZpbHRlckJhclN1YmplY3REaXJlY3RpdmUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViamVjdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciBzbWFydCBmaWx0ZXIgYmFyIGJhY2tncm91bmQgc2hvdWxkIGJlIHRyYW5zcGFyZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRyYW5zcGFyZW50KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fdHJhbnNwYXJlbnQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCB0cmFuc3BhcmVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbHVtbnMgbGF5b3V0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyc0NvbHVtbkxheW91dDogTnVsbGFibGU8c3RyaW5nPiA9IGRlZmF1bHRDb2x1bW5zTGF5b3V0O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byB1cGRhdGUgZmlsdGVycyB3aGVuIHRoZXkgYXJlIHNlbGVjdGVkLiBPdGhlcndpc2UsIGZpbHRlcnMgd2lsbCBiZSBhcHBsaWVkIG9ubHkgYnkgcHJlc3NpbmcgXCJHb1wiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGxpdmVVcGRhdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgZmlsdGVycyBoYXZlIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzbWFydEZpbHRlcnNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U21hcnRGaWx0ZXJDaGFuZ2VPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxTbWFydEZpbHRlckNoYW5nZU9iamVjdD4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBzZWxlY3RlZCBmaWx0ZXJzIGhhcyBiZWVuIGFwcGxpZWQgKFVzZXIgY2xpY2tlZCBvbiBHbyBidXR0b24pLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNtYXJ0RmlsdGVyc0FwcGxpZWQ6IEV2ZW50RW1pdHRlcjxTbWFydEZpbHRlckNoYW5nZU9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNtYXJ0RmlsdGVyQ2hhbmdlT2JqZWN0PigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHNlYXJjaCBpbnB1dCBmaWVsZCB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlYXJjaElucHV0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VhcmNoSW5wdXQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFNtYXJ0RmlsdGVyQmFyVG9vbGJhckl0ZW1EaXJlY3RpdmUpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdG9vbGJhckl0ZW1SZWZzOiBRdWVyeUxpc3Q8U21hcnRGaWx0ZXJCYXJUb29sYmFySXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVkIGFycmF5IG9mIGZpbHRlcnMgdG8gYXBwbHkgZm9yIHRoZSBzdWJqZWN0J3MgZGF0YSBzb3VyY2UuXG4gICAgICovXG4gICAgZmlsdGVyQnk6IENvbGxlY3Rpb25GaWx0ZXJHcm91cFtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggZmllbGQgdmFsdWUgdG8gYXBwbHkgZm9yIHRoZSBzdWJqZWN0J3MgZGF0YSBzb3VyY2UuXG4gICAgICovXG4gICAgc2VhcmNoOiBTZWFyY2hJbnB1dCB8IHVuZGVmaW5lZDtcbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF90b29sYmFySXRlbXM6IFRlbXBsYXRlUmVmPGFueT5bXSA9IFtdO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Zvcm1JdGVtczogRHluYW1pY0Zvcm1JdGVtW107XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRGaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dGaWx0ZXJCYXIgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJqZWN0Py5nZXREYXRhU291cmNlKCkgPyB0aGlzLl9zdWJqZWN0LmdldERhdGFTb3VyY2UoKS5pc0RhdGFMb2FkaW5nIDogdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YmplY3RTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc3BhcmVudCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtR2VuZXJhdG9yUmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaWdub3JlUHJlc2V0Q2hhbmdlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YmplY3QhOiBTbWFydEZpbHRlckJhclN1YmplY3REaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9zbWFydEZpbHRlckJhclNlcnZpY2U6IFNtYXJ0RmlsdGVyQmFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZmdTZXJ2aWNlOiBGb3JtR2VuZXJhdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmOiBEZXN0cm95UmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX2ZnU2VydmljZS5hZGRDb21wb25lbnQoU21hcnRGaWx0ZXJCYXJDb25kaXRpb25GaWVsZENvbXBvbmVudCwgW1NNQVJUX0ZJTFRFUl9CQVJfUkVOREVSRVJfQ09NUE9ORU5UXSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtcyA9IHRoaXMuX3Rvb2xiYXJJdGVtUmVmcy50b0FycmF5KCkubWFwKChyZWYpID0+IHJlZi50ZW1wbGF0ZVJlZik7XG5cbiAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW1SZWZzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtcyA9IHRoaXMuX3Rvb2xiYXJJdGVtUmVmcy50b0FycmF5KCkubWFwKChyZWYpID0+IHJlZi50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVGcm9tU3ViamVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgY29uZGl0aW9uIHZhbHVlIGludG8gaHVtYW4tcmVhZGFibGUgdGV4dC5cbiAgICAgKiBAcGFyYW0gY29uZGl0aW9uIFNtYXJ0IGZpbHRlciBiYXIgY29uZGl0aW9uLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJUeXBlIENvbmRpdGlvbiBmaWx0ZXIgdHlwZS5cbiAgICAgKi9cbiAgICBhc3luYyBnZXREaXNwbGF5VmFsdWUoY29uZGl0aW9uOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbiwgZmlsdGVyVHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NtYXJ0RmlsdGVyQmFyU2VydmljZS5nZXREaXNwbGF5VmFsdWUoY29uZGl0aW9uLCBmaWx0ZXJUeXBlKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbiBGaWx0ZXJpbmcgU2V0dGluZ3MgRGlhbG9nICovXG4gICAgc2hvd0ZpbHRlcmluZ1NldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZ2V0U3ViamVjdERlZmluaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IFNtYXJ0RmlsdGVyU2V0dGluZ3NEaWFsb2dDb25maWcgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IGNvbHVtbnMsXG4gICAgICAgICAgICBmaWx0ZXJCeTogdGhpcy5maWx0ZXJCeSxcbiAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyczogdGhpcy5fc2VsZWN0ZWRGaWx0ZXJzXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKFxuICAgICAgICAgICAgU21hcnRGaWx0ZXJCYXJTZXR0aW5nc0RpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5kaWFsb2dDb25maWcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZVBhZGRpbmdzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnNTByZW0nLFxuICAgICAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLl9pbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoc2VsZWN0ZWRGaWx0ZXJzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRGaWx0ZXJzKHNlbGVjdGVkRmlsdGVycyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoSW5wdXRDaGFuZ2UoZXZlbnQ6IFNlYXJjaElucHV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NhbmNlbFNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMubGl2ZVVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJtaXRzIGZpbHRlcnMgYW5kIHNlYXJjaCBmb3JtLlxuICAgICAqL1xuICAgIHN1Ym1pdEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1HZW5lcmF0b3Iuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBmb3Igc2V0dGluZyBwcmVkZWZpbmVkIGNvbmZpZ3VyYXRpb24uICovXG4gICAgYXN5bmMgc2V0UHJlc2V0KGRhdGE6IFNtYXJ0RmlsdGVyQmFyTWFuYWdlZFByZXNldCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9pZ25vcmVQcmVzZXRDaGFuZ2UgPSB0cnVlO1xuICAgICAgICBkYXRhLmZpbHRlckJ5ID0gZGF0YS5maWx0ZXJCeSB8fCBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeSA9IGRhdGEuZmlsdGVyQnk7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gZGF0YS5zZWFyY2g7XG5cbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvclJlYWR5LnBpcGUoZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUpKS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gUmVzZXQgZm9ybVxuICAgICAgICAgICAgdGhpcy5fZmdTZXJ2aWNlLnJlc2V0Rm9ybSh0aGlzLl9mb3JtR2VuZXJhdG9yLmZvcm0pO1xuXG4gICAgICAgICAgICAvLyBTZXQgbmV3IGRhdGFcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyQnkgb2YgdGhpcy5maWx0ZXJCeSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9mZ1NlcnZpY2UuZ2V0Rm9ybUNvbnRyb2wodGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtLCBmaWx0ZXJCeS5maWVsZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUl0ZW0gPSBjb250cm9sLmZvcm1JdGVtIGFzIFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLl9zbWFydEZpbHRlckJhclNlcnZpY2UudHJhbnNmb3JtQ29sbGVjdGlvbkZpbHRlcihmaWx0ZXJCeSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENvbmRpdGlvbnMgPSBhd2FpdCB0aGlzLl9zbWFydEZpbHRlckJhclNlcnZpY2UuZ2V0Q29uZGl0aW9uRmllbGRTZWxlY3RlZFZhcmlhbnRzKFxuICAgICAgICAgICAgICAgICAgICBmb3JtSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb250cm9sPy5zZXRWYWx1ZShzZWxlY3RlZENvbmRpdGlvbnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEZpbHRlcnModGhpcy5maWx0ZXJCeS5tYXAoKGZpbHRlckJ5KSA9PiBmaWx0ZXJCeS5maWVsZCkpO1xuXG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnN1YmplY3QuZ2V0RGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgc291cmNlLmRhdGFQcm92aWRlci5zZXRGaWx0ZXJzKHRoaXMuZmlsdGVyQnksIHRoaXMuc2VhcmNoKTtcbiAgICAgICAgICAgIHRoaXMuc3ViamVjdC5nZXRTdWJqZWN0KCkuZmV0Y2goKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgY3VycmVudCBwcmVzZXQgY29uZmlndXJhdGlvbi4gKi9cbiAgICBnZXRDdXJyZW50UHJlc2V0KCk6IFNtYXJ0RmlsdGVyQmFyTWFuYWdlZFByZXNldCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoLFxuICAgICAgICAgICAgZmlsdGVyQnk6IHRoaXMuZmlsdGVyQnlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gd2hlbiBmb3JtIGdlbmVyYXRvciBmb3JtIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgYW5kIHN1Ym1pdHRlZC5cbiAgICAgKi9cbiAgICBfb25Gb3JtU3VibWl0dGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IHRoaXMuX2dlbmVyYXRlQ29sbGVjdGlvbkZpbHRlckdyb3VwcyhldmVudCk7XG4gICAgICAgIHRoaXMuX2FwcGx5RmlsdGVyaW5nKGNvbmRpdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDYWxsYmFjayBtZXRob2Qgd2hlbiBmb3JtIGhhcyBiZWVuIGNyZWF0ZWQuXG4gICAgICogUG9wdWxhdGVzIHNlbGVjdGVkIGZpbHRlcnMgYXJyYXkgd2l0aCB1c2VyLWRlZmluZWQgZGVmYXVsdCBmaWx0ZXJzLlxuICAgICAqL1xuICAgIF9vbkZvcm1DcmVhdGVkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdWJqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEZpbHRlcnMoWy4uLnRoaXMuc3ViamVjdC5nZXREZWZhdWx0RmllbGRzKCksIC4uLnRoaXMuX3NlbGVjdGVkRmlsdGVyc10pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IGF3YWl0IHRoaXMuZ2V0Rm9ybWF0dGVkQ29uZGl0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ2hhbmdlZC5lbWl0KHsgZmlsdGVyQnk6IGNvbmRpdGlvbnMsIHNlYXJjaDogdGhpcy5zZWFyY2gsIHN1YmplY3Q6IHRoaXMuc3ViamVjdCB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5saXZlVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlGaWx0ZXJpbmcoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9mb3JtR2VuZXJhdG9yUmVhZHkubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX3RvZ2dsZUZpbHRlckJhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2hvd0ZpbHRlckJhciA9ICF0aGlzLl9zaG93RmlsdGVyQmFyO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9ybWF0cyByYXcgZmlsdGVycyBvYmplY3QgaW50byBhcnJheSBvZiBncm91cGVkIGZpbHRlcnMuXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgZ3JvdXBlZCBmaWx0ZXJzLlxuICAgICAqL1xuICAgIGFzeW5jIGdldEZvcm1hdHRlZENvbmRpdGlvbnMoKTogUHJvbWlzZTxDb2xsZWN0aW9uRmlsdGVyR3JvdXBbXT4ge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBhd2FpdCB0aGlzLl9mZ1NlcnZpY2UuZ2V0Rm9ybVZhbHVlKHRoaXMuX2Zvcm1HZW5lcmF0b3IuZm9ybSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZW5lcmF0ZUNvbGxlY3Rpb25GaWx0ZXJHcm91cHMoZm9ybVZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dlbmVyYXRlQ29sbGVjdGlvbkZpbHRlckdyb3Vwcyh2YWx1ZToge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbltdO1xuICAgIH0pOiBDb2xsZWN0aW9uRmlsdGVyR3JvdXBbXSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25GaWx0ZXJHcm91cHM6IENvbGxlY3Rpb25GaWx0ZXJHcm91cFtdID0gW107XG5cbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2dldFN1YmplY3REZWZpbml0aW9ucygpO1xuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlKVxuICAgICAgICAgICAgLmZpbHRlcigoWywgZmllbGRDb25kaXRpb25zXSkgPT4gISFmaWVsZENvbmRpdGlvbnMpXG4gICAgICAgICAgICAuZm9yRWFjaCgoW2ZpZWxkTmFtZSwgZmllbGRDb25kaXRpb25zXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZCgoYykgPT4gYy5uYW1lID09PSBmaWVsZE5hbWUpIGFzIFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckdyb3VwOiBDb2xsZWN0aW9uRmlsdGVyR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneTogY29sdW1uLmNvbmRpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmtleVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZmllbGRDb25kaXRpb25zLmZvckVhY2goKGNvbmRpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJHcm91cC5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k6IGNvbmRpdGlvbi5vcGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbmRpdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlMjogY29uZGl0aW9uLnZhbHVlMixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbHVtbi5kYXRhVHlwZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25GaWx0ZXJHcm91cHMucHVzaChmaWx0ZXJHcm91cCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZW1vdmUgZW1wdHkgZmlsdGVyIG9iamVjdHMuXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uRmlsdGVyR3JvdXBzLmZpbHRlcigoZmlsdGVyR3JvdXApID0+IGZpbHRlckdyb3VwLmZpbHRlcnM/Lmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U3ViamVjdChzdWJqZWN0OiBTbWFydEZpbHRlckJhclN1YmplY3REaXJlY3RpdmUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzdWJqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUZyb21TdWJqZWN0KCk7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvU3ViamVjdENvbHVtbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgdW5zdWJzY3JpYmVGcm9tU3ViamVjdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zdWJqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvU3ViamVjdENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX3N1YmplY3QuZmllbGRzU3RyZWFtLnN1YnNjcmliZShhc3luYyAoY29sdW1uczogU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb25bXSkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9nZW5lcmF0ZUZvcm0oY29sdW1ucy5maWx0ZXIoKGMpID0+IGMuZmlsdGVyYWJsZSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR2VuZXJhdGVzIGZvcm0gaXRlbXMgdG8gYmUgY29uc3VtZWQgYnkgZm9ybSBnZW5lcmF0b3IgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBjb2x1bW5zIGNvbHVtbnMgZGVmaW5pdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgX2dlbmVyYXRlRm9ybShjb2x1bW5zOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBEeW5hbWljRm9ybUZpZWxkSXRlbVtdID0gW107XG4gICAgICAgIGNvbnN0IGNvbHVtbnNOdW1iZXIgPSBnZXRDb2x1bW5zTnVtYmVyKHRoaXMuZmlsdGVyc0NvbHVtbkxheW91dCA/PyAnJyk7XG4gICAgICAgIGxldCBjdXJyZW50Q29sdW1uID0gMTtcblxuICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBsZXQgaXRlbTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbSA9IHRoaXMuX2dlbmVyYXRlQmFzZUZpZWxkSXRlbShjb2x1bW4pO1xuXG4gICAgICAgICAgICBpZiAoY29sdW1uLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRGaWx0ZXJzLnB1c2goY29sdW1uLm5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5maWx0ZXJUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlNJTkdMRTpcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGUuQ0FURUdPUlk6XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlID0gJ3NlbGVjdCc7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLk1VTFRJOlxuICAgICAgICAgICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudHlwZSA9ICdtdWx0aS1pbnB1dCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyVHlwZS5DVVNUT006XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLl9nZW5lcmF0ZUN1c3RvbUZpbHRlckZpZWxkSXRlbShjb2x1bW4sIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGUuSU5QVVQ6XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuX2dlbmVyYXRlSW5wdXRGaWVsZEl0ZW0oY29sdW1uLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5jb2x1bW4gPSBjdXJyZW50Q29sdW1uO1xuICAgICAgICAgICAgY3VycmVudENvbHVtbiArPSAxO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudENvbHVtbiA+IGNvbHVtbnNOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uID0gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZm9ybUl0ZW1zID0gaXRlbXM7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dlbmVyYXRlQ3VzdG9tRmlsdGVyRmllbGRJdGVtKFxuICAgICAgICBjb2x1bW46IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uLFxuICAgICAgICBpdGVtOiBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgKTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbSB7XG4gICAgICAgIGlmICghY29sdW1uLmN1c3RvbUZpbHRlclR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlID0gY29sdW1uLmN1c3RvbUZpbHRlclR5cGU7XG4gICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YSA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEsXG4gICAgICAgICAgICB0aGlzLl9zbWFydEZpbHRlckJhclNlcnZpY2UuZ2V0Q3VzdG9tRmlsdGVyQ29uZmlndXJhdGlvbihjb2x1bW4uY3VzdG9tRmlsdGVyVHlwZSlcbiAgICAgICAgKTtcblxuICAgICAgICBpdGVtLnR5cGUgPSBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEucmVuZGVyZXJDb21wb25lbnRcbiAgICAgICAgICAgID8gYCR7aXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLnR5cGV9LXJlbmRlcmVyYFxuICAgICAgICAgICAgOiBpdGVtLnR5cGU7XG4gICAgICAgIGl0ZW0udHJhbnNmb3JtZXIgPSBpdGVtLmd1aU9wdGlvbnMuYWRkaXRpb25hbERhdGEudmFsdWVUcmFuc2Zvcm1lcjtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR2VuZXJhdGVzIGZvcm0gaXRlbSBiYXNlZCBvbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIGNvbHVtblxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZW5lcmF0ZUlucHV0RmllbGRJdGVtKFxuICAgICAgICBjb2x1bW46IFNtYXJ0RmlsdGVyQmFyRmllbGREZWZpbml0aW9uLFxuICAgICAgICBpdGVtOiBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtXG4gICAgKTogU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbSB7XG4gICAgICAgIHN3aXRjaCAoY29sdW1uLmRhdGFUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZS5EQVRFOlxuICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS50eXBlID0gJ2RhdGVwaWNrZXInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgICAgIGl0ZW0uZ3VpT3B0aW9ucy5hZGRpdGlvbmFsRGF0YS5jb250cm9sVHlwZSA9ICdudW1iZXInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLlNUUklORzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaXRlbS5ndWlPcHRpb25zLmFkZGl0aW9uYWxEYXRhLmNvbnRyb2xUeXBlID0gJ3RleHQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEdlbmVyYXRlcyBiYXNlIGZvcm0gaXRlbSBvYmplY3QgdG8gYmUgY29uc3VtZWQgYnkgZm9ybSBnZW5lcmF0b3IgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBjb2x1bW4gY29sdW1uIGRlZmluaXRpb25cbiAgICAgKiBAcmV0dXJucyBiYXNlIGZvcm0gaXRlbSBvYmplY3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2VuZXJhdGVCYXNlRmllbGRJdGVtKGNvbHVtbjogU21hcnRGaWx0ZXJCYXJGaWVsZERlZmluaXRpb24pOiBTbWFydEZpbHRlckJhckR5bmFtaWNGb3JtRmllbGRJdGVtIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgbWVzc2FnZTogY29sdW1uLmxhYmVsLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGNvbHVtbi5yZXF1aXJlZCxcbiAgICAgICAgICAgIHR5cGU6IFNNQVJUX0ZJTFRFUl9CQVJfUkVOREVSRVJfQ09NUE9ORU5ULFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcgJyxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IGNvbHVtbi5yZXF1aXJlZCA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdLFxuICAgICAgICAgICAgY2hvaWNlczogY29sdW1uLmhhc09wdGlvbnMgPyB0aGlzLl9nZXRGaWx0ZXJEZWZhdWx0T3B0aW9ucyhjb2x1bW4ua2V5LCBjb2x1bW4uZmlsdGVyVHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0cmFuc2Zvcm1lcjogKGl0ZW1WYWx1ZSkgPT4gZ2V0U2VsZWN0SXRlbVZhbHVlKGl0ZW1WYWx1ZSksXG4gICAgICAgICAgICBndWlPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbERhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2lucHV0JyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IGNvbHVtbi5kYXRhVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZTogY29sdW1uLmZpbHRlclR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xUeXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGNob2ljZXM6IGNvbHVtbi5oYXNPcHRpb25zID8gdGhpcy5fZ2V0RmlsdGVyQXZhaWxhYmxlT3B0aW9ucyhjb2x1bW4ua2V5KSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3aGVuOiAoKSA9PiB0aGlzLl9zZWxlY3RlZEZpbHRlcnMuaW5jbHVkZXMoY29sdW1uLm5hbWUpXG4gICAgICAgIH0gYXMgU21hcnRGaWx0ZXJCYXJEeW5hbWljRm9ybUZpZWxkSXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0cmlldmVzIGF2YWlsYWJsZSBvcHRpb25zIGZvciBwYXJ0aWN1bGFyIGNvbHVtbiBieSB1c2luZyBkYXRhIHNvdXJjZSBtZXRob2QuXG4gICAgICogQHBhcmFtIGNvbHVtbiBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+fSBPYnNlcnZhYmxlIHdpdGggdGhlIGFycmF5IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEZpbHRlckF2YWlsYWJsZU9wdGlvbnMoY29sdW1uOiBzdHJpbmcpOiAoKSA9PiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4gdGhpcy5fZ2V0RmllbGRWYXJpYW50cyhjb2x1bW4pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RmlsdGVyRGVmYXVsdE9wdGlvbnMoY29sdW1uOiBzdHJpbmcsIGZpbHRlclR5cGU6IEZpbHRlclR5cGUpOiAoKSA9PiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYW50cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2dldEZpZWxkVmFyaWFudHMoY29sdW1uKS5waXBlKHRha2UoMSkpKTtcblxuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnM6IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uW10gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb246IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogJ2VxdWFsVG8nXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5kaXNwbGF5VmFsdWUgPSBhd2FpdCB0aGlzLmdldERpc3BsYXlWYWx1ZShjb25kaXRpb24sIGZpbHRlclR5cGUpO1xuXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlRGVmYXVsdENvbmRpdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRGaWVsZFZhcmlhbnRzKGNvbHVtbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdC5nZXRGaWVsZFZhcmlhbnRzKGNvbHVtbikucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gZGF0YS5maW5kSW5kZXgoKF9pdGVtKSA9PiBfaXRlbS52YWx1ZSA9PT0gaXRlbS52YWx1ZSkgPT09IGluZGV4KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFN1YmplY3REZWZpbml0aW9ucygpOiBTbWFydEZpbHRlckJhckZpZWxkRGVmaW5pdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdD8uZ2V0U3ViamVjdEZpZWxkcygpIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZXRzIHByb3ZpZGVkIGZpbHRlcnMgZGlyZWN0bHkgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzIGFycmF5IG9mIGZpbHRlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXBwbHlGaWx0ZXJpbmcoZmlsdGVyczogQ29sbGVjdGlvbkZpbHRlckdyb3VwW10pOiB2b2lkIHtcbiAgICAgICAgLy8gQXBwbHkgb3V0c2lkZSBmaWx0ZXJpbmcgYW5kIGZvcmNlIHN1YmplY3QgdG8gZmV0Y2ggbmV3IGRhdGEuXG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc3ViamVjdC5nZXREYXRhU291cmNlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyQnkgPSBmaWx0ZXJzO1xuICAgICAgICBzb3VyY2UuZGF0YVByb3ZpZGVyLnNldEZpbHRlcnMoZmlsdGVycywgdGhpcy5zZWFyY2gpO1xuICAgICAgICB0aGlzLnN1YmplY3QuZ2V0U3ViamVjdCgpLmZldGNoKCk7XG4gICAgICAgIGNvbnN0IGVtaXR0ZWRWYWx1ZTogU21hcnRGaWx0ZXJCYXJNYW5hZ2VkUHJlc2V0ID0geyBzZWFyY2g6IHRoaXMuc2VhcmNoLCBmaWx0ZXJCeTogdGhpcy5maWx0ZXJCeSB9O1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVyc0FwcGxpZWQuZW1pdCh7IC4uLmVtaXR0ZWRWYWx1ZSwgc3ViamVjdDogdGhpcy5fc3ViamVjdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuX2lnbm9yZVByZXNldENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXRDaGFuZ2VkLmVtaXQoZW1pdHRlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pZ25vcmVQcmVzZXRDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlRnJvbVN1YmplY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YmplY3RTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U2VsZWN0ZWRGaWx0ZXJzKGZpbHRlcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmOiBzdHJpbmcsIGk6IG51bWJlcikgPT4gZmlsdGVycy5pbmRleE9mKGYpID09PSBpKTtcbiAgICAgICAgdGhpcy5fZm9ybUdlbmVyYXRvci5yZWZyZXNoU3RlcHNWaXNpYmlsaXR5KCk7XG4gICAgfVxufVxuIiwiPGRpdj5cbiAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiPlxuICAgICAgICBAaWYgKF90b29sYmFySXRlbXMpIHtcbiAgICAgICAgICAgIEBmb3IgKHRlbXBsYXRlIG9mIF90b29sYmFySXRlbXM7IHRyYWNrIHRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhci1zZXBhcmF0b3I+PC9mZC10b29sYmFyLXNlcGFyYXRvcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cIl9vblNlYXJjaElucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKHNlYXJjaFN1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgICAgICAgKGNhbmNlbFNlYXJjaCk9XCJfY2FuY2VsU2VhcmNoKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9sb2FkaW5nXCJcbiAgICAgICAgICAgIFtkaXNhYmxlUmVmcmVzaF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1TbWFydEZpbHRlckJhci5zZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgIDxmZC10b29sYmFyLXNwYWNlcj48L2ZkLXRvb2xiYXItc3BhY2VyPlxuICAgICAgICBAaWYgKCFsaXZlVXBkYXRlKSB7XG4gICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgICAgICAgICAgIGJ1dHRvblR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2xvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1TbWFydEZpbHRlckJhci5zdWJtaXRCdXR0b25MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgZ2x5cGg9XCJzeW5jaHJvbml6ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2xvYWRpbmdcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIncGxhdGZvcm1TbWFydEZpbHRlckJhci5yZWZyZXNoQnV0dG9uQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzaG93RmlsdGVyaW5nU2V0dGluZ3MoKVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ3BsYXRmb3JtU21hcnRGaWx0ZXJCYXIuZmlsdGVyc0J1dHRvbkxhYmVsJyB8IGZkVHJhbnNsYXRlOiB7IGZpbHRlcnNDb3VudDogX3NlbGVjdGVkRmlsdGVycy5sZW5ndGggfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9sb2FkaW5nXCJcbiAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJfdG9nZ2xlRmlsdGVyQmFyKClcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgIChfc2hvd0ZpbHRlckJhclxuICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVNtYXJ0RmlsdGVyQmFyLmhpZGVGaWx0ZXJzQnV0dG9uTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtU21hcnRGaWx0ZXJCYXIuc2hvd0ZpbHRlcnNCdXR0b25MYWJlbCdcbiAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBidXR0b25UeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2xvYWRpbmdcIlxuICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgIDwvZmQtdG9vbGJhcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImZkcC1zbWFydC1maWx0ZXItYmFyX19maWx0ZXJzXCIgW2hpZGRlbl09XCIhX3Nob3dGaWx0ZXJCYXJcIj5cbiAgICA8ZmRwLWZvcm0tZ2VuZXJhdG9yXG4gICAgICAgIChmb3JtQ3JlYXRlZCk9XCJfb25Gb3JtQ3JlYXRlZCgpXCJcbiAgICAgICAgKGZvcm1TdWJtaXR0ZWQpPVwiX29uRm9ybVN1Ym1pdHRlZCgkZXZlbnQpXCJcbiAgICAgICAgW25vQWRkaXRpb25hbENvbnRlbnRdPVwidHJ1ZVwiXG4gICAgICAgIFtmb3JtSXRlbXNdPVwiX2Zvcm1JdGVtc1wiXG4gICAgICAgIFtjb2x1bW5MYXlvdXRdPVwiZmlsdGVyc0NvbHVtbkxheW91dFwiXG4gICAgPjwvZmRwLWZvcm0tZ2VuZXJhdG9yPlxuPC9kaXY+XG4iXX0=
@@ -17,8 +17,8 @@ const components = [
17
17
  SmartFilterBarToolbarItemDirective
18
18
  ];
19
19
  export class PlatformSmartFilterBarModule {
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformSmartFilterBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformSmartFilterBarModule, imports: [SmartFilterBarComponent,
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PlatformSmartFilterBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: PlatformSmartFilterBarModule, imports: [SmartFilterBarComponent,
22
22
  SmartFilterBarSettingsDialogComponent,
23
23
  SmartFilterBarFieldDefinitionDirective,
24
24
  SmartFilterBarSubjectDirective,
@@ -31,12 +31,12 @@ export class PlatformSmartFilterBarModule {
31
31
  SmartFilterBarConditionsDialogComponent,
32
32
  SmartFilterBarConditionFieldComponent,
33
33
  SmartFilterBarToolbarItemDirective] }); }
34
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformSmartFilterBarModule, imports: [SmartFilterBarComponent,
34
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PlatformSmartFilterBarModule, imports: [SmartFilterBarComponent,
35
35
  SmartFilterBarSettingsDialogComponent,
36
36
  SmartFilterBarConditionsDialogComponent,
37
37
  SmartFilterBarConditionFieldComponent] }); }
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformSmartFilterBarModule, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: PlatformSmartFilterBarModule, decorators: [{
40
40
  type: NgModule,
41
41
  args: [{
42
42
  imports: [...components],
@@ -167,10 +167,10 @@ export class SmartFilterBarService {
167
167
  }
168
168
  return value;
169
169
  }
170
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBarService, deps: [{ token: i1.FormGeneratorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
171
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBarService }); }
170
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBarService, deps: [{ token: i1.FormGeneratorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
171
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBarService }); }
172
172
  }
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SmartFilterBarService, decorators: [{
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SmartFilterBarService, decorators: [{
174
174
  type: Injectable
175
- }], ctorParameters: function () { return [{ type: i1.FormGeneratorService }]; } });
175
+ }], ctorParameters: () => [{ type: i1.FormGeneratorService }] });
176
176
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWJhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3NtYXJ0LWZpbHRlci1iYXIvc21hcnQtZmlsdGVyLWJhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFFSCxvQkFBb0IsRUFFdkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBRUgsd0JBQXdCLEVBRXhCLGtDQUFrQyxFQUNyQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxrQ0FBa0MsQ0FBQztBQUk1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUc1RCxNQUFNLE9BQU8scUJBQXFCO0lBSzlCLGNBQWM7SUFDZCxZQUFvQixVQUFnQztRQUFoQyxlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUxwRCxjQUFjO1FBQ04sNEJBQXVCLEdBQzNCLElBQUksR0FBRyxFQUEyRSxDQUFDO0lBR2hDLENBQUM7SUFFeEQ7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxPQUF5QztRQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUMxRCxPQUFPLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1NBQzFEO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtZQUM3QixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsS0FB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QUFDOzhHQXBOUSxxQkFBcUI7a0hBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQge1xuICAgIEJhc2VEeW5hbWljRm9ybUdlbmVyYXRvckNvbnRyb2wsXG4gICAgRm9ybUdlbmVyYXRvclNlcnZpY2UsXG4gICAgUHJlcGFyZWREeW5hbWljRm9ybUZpZWxkSXRlbVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBDb2xsZWN0aW9uRmlsdGVyR3JvdXAsXG4gICAgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLFxuICAgIEZpbHRlckFsbFN0cmF0ZWd5LFxuICAgIGdldEZpbHRlclN0cmF0ZWdpZXNCYXNlZE9uRGF0YVR5cGVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZSc7XG5pbXBvcnQgeyBpc1NlbGVjdEl0ZW0sIFNlbGVjdEl0ZW0gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5cbmltcG9ydCB7IFNtYXJ0RmlsdGVyQmFyQ3VzdG9tRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3NtYXJ0LWZpbHRlci1iYXItY3VzdG9tLWZpbHRlci1jb25maWcnO1xuaW1wb3J0IHsgU21hcnRGaWx0ZXJCYXJDb25kaXRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvc21hcnQtZmlsdGVyLWJhci1jb25kaXRpb24nO1xuaW1wb3J0IHsgc2VsZWN0U3RyYXRlZ3kgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTbWFydEZpbHRlckJhclNlcnZpY2Uge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VzdG9tRmlsdGVyQ29uZGl0aW9uczogTWFwPFR5cGU8QmFzZUR5bmFtaWNGb3JtR2VuZXJhdG9yQ29udHJvbD4sIFNtYXJ0RmlsdGVyQmFyQ3VzdG9tRmlsdGVyQ29uZmlnPiA9XG4gICAgICAgIG5ldyBNYXA8VHlwZTxCYXNlRHluYW1pY0Zvcm1HZW5lcmF0b3JDb250cm9sPiwgU21hcnRGaWx0ZXJCYXJDdXN0b21GaWx0ZXJDb25maWc+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2ZnU2VydmljZTogRm9ybUdlbmVyYXRvclNlcnZpY2UpIHt9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGN1c3RvbSBmaWx0ZXIgdHlwZSB0byB0aGUgc21hcnQgZmlsdGVyIGJhci5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBjb21wb25lbnQgd2FzIGFkZGVkIHN1Y2Nlc3NmdWxseS5cbiAgICAgKi9cbiAgICBhZGRDdXN0b21GaWx0ZXIob3B0aW9uczogU21hcnRGaWx0ZXJCYXJDdXN0b21GaWx0ZXJDb25maWcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbmRpdGlvbkNvbXBvbmVudCAmJiBvcHRpb25zLnJlbmRlcmVyQ29tcG9uZW50KSB7XG4gICAgICAgICAgICBvcHRpb25zLmNvbmRpdGlvbkNvbXBvbmVudCA9IG9wdGlvbnMucmVuZGVyZXJDb21wb25lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wdGlvbnMuY29uZGl0aW9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9mZ1NlcnZpY2UuYWRkQ29tcG9uZW50KG9wdGlvbnMuY29uZGl0aW9uQ29tcG9uZW50LCBvcHRpb25zLnR5cGVzKTtcblxuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICB0aGlzLl9jdXN0b21GaWx0ZXJDb25kaXRpb25zLnNldChvcHRpb25zLmNvbmRpdGlvbkNvbXBvbmVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0ICYmIG9wdGlvbnMucmVuZGVyZXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZnU2VydmljZS5hZGRDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5yZW5kZXJlckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGVzLm1hcCgodCkgPT4gYCR7dH0tcmVuZGVyZXJgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBwcm92aWRlZCBjb25maWd1cmF0aW9uIG9iamVjdCBvZiB0aGUgY3VzdG9tIGZpbHRlci5cbiAgICAgKiBAcGFyYW0gdHlwZSBGaWx0ZXIgdHlwZS5cbiAgICAgKiBAcmV0dXJucyBDb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICAgKi9cbiAgICBnZXRDdXN0b21GaWx0ZXJDb25maWd1cmF0aW9uKHR5cGU6IHN0cmluZyk6IFNtYXJ0RmlsdGVyQmFyQ3VzdG9tRmlsdGVyQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50RGVmaW5pdGlvbiA9IHRoaXMuX2ZnU2VydmljZS5nZXRDb21wb25lbnREZWZpbml0aW9uQnlUeXBlKHR5cGUpO1xuXG4gICAgICAgIGlmICghY29tcG9uZW50RGVmaW5pdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21GaWx0ZXJDb25kaXRpb25zLmdldChjb21wb25lbnREZWZpbml0aW9uLmNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhcHBsaWNhYmxlIGNvbmRpdGlvbiBvcHRpb25zIG9mIHRoZSBmaWx0ZXIuXG4gICAgICogQHBhcmFtIHR5cGUgRmlsdGVyIHR5cGUuXG4gICAgICogQHBhcmFtIGRhdGFUeXBlIEZpbHRlciBkYXRhIHR5cGUuXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgYXBwbGljYWJsZSBjb25kaXRpb24gb3B0aW9ucy5cbiAgICAgKi9cbiAgICBnZXRBcHBsaWNhYmxlRmlsdGVyQ29uZGl0aW9ucyhcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBkYXRhVHlwZTogRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlID0gRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLlNUUklOR1xuICAgICk6IEZpbHRlckFsbFN0cmF0ZWd5W10ge1xuICAgICAgICBjb25zdCBjb21wb25lbnREZWZpbml0aW9uID0gdGhpcy5fZmdTZXJ2aWNlLmdldENvbXBvbmVudERlZmluaXRpb25CeVR5cGUodHlwZSk7XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdENvbmRpdGlvbnM6IEZpbHRlckFsbFN0cmF0ZWd5W10gPSBnZXRGaWx0ZXJTdHJhdGVnaWVzQmFzZWRPbkRhdGFUeXBlKFxuICAgICAgICAgICAgZGF0YVR5cGVcbiAgICAgICAgKSBhcyBGaWx0ZXJBbGxTdHJhdGVneVtdO1xuXG4gICAgICAgIGlmICghY29tcG9uZW50RGVmaW5pdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRDb25kaXRpb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyRGVmaW5pdGlvbiA9IHRoaXMuX2N1c3RvbUZpbHRlckNvbmRpdGlvbnMuZ2V0KGNvbXBvbmVudERlZmluaXRpb24uY29tcG9uZW50KTtcblxuICAgICAgICByZXR1cm4gZmlsdGVyRGVmaW5pdGlvbj8uZmlsdGVyU3RyYXRlZ2llcyB8fCBkZWZhdWx0Q29uZGl0aW9ucztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFzeW5jIGdldERpc3BsYXlWYWx1ZShjb25kaXRpb246IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uLCBmaWx0ZXJUeXBlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5nZXRDdXN0b21GaWx0ZXJDb25maWd1cmF0aW9uKGZpbHRlclR5cGUpO1xuXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uPy52YWx1ZVJlbmRlcmVyKSB7XG4gICAgICAgICAgICBjb25zdCBvYmogPSBjb25maWd1cmF0aW9uPy52YWx1ZVJlbmRlcmVyKGNvbmRpdGlvbik7XG4gICAgICAgICAgICBjb25zdCBzdHJhdGVneSA9IHNlbGVjdFN0cmF0ZWd5KG9iaik7XG5cbiAgICAgICAgICAgIGxldCByZXR1cm5WYWx1ZSE6IHN0cmluZztcblxuICAgICAgICAgICAgYXdhaXQgc3RyYXRlZ3kuY3JlYXRlU3Vic2NyaXB0aW9uKG9iaiwgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZTEgPSB0aGlzLl9ub3JtYWxpemVWYWx1ZShjb25kaXRpb24udmFsdWUpO1xuICAgICAgICBjb25zdCB2YWx1ZTIgPSB0aGlzLl9ub3JtYWxpemVWYWx1ZShjb25kaXRpb24udmFsdWUyKTtcblxuICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbi5vcGVyYXRvcikge1xuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA9JHt2YWx1ZTF9YDtcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCoke3ZhbHVlMX0qYDtcbiAgICAgICAgICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt2YWx1ZTF9Li4uJHt2YWx1ZTJ9YDtcbiAgICAgICAgICAgIGNhc2UgJ2JlZ2luc1dpdGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt2YWx1ZTF9KmA7XG4gICAgICAgICAgICBjYXNlICdlbmRzV2l0aCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAqJHt2YWx1ZTF9YDtcbiAgICAgICAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYD4ke3ZhbHVlMX1gO1xuICAgICAgICAgICAgY2FzZSAnZ3JlYXRlclRoYW5PckVxdWFsVG8nOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPj0ke3ZhbHVlMX1gO1xuICAgICAgICAgICAgY2FzZSAnbGVzc1RoYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPCR7dmFsdWUxfWA7XG4gICAgICAgICAgICBjYXNlICdsZXNzVGhhbk9yRXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA8PSR7dmFsdWUxfWA7XG4gICAgICAgICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA+JHt2YWx1ZTF9YDtcbiAgICAgICAgICAgIGNhc2UgJ29uT3JBZnRlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGA+PSR7dmFsdWUxfWA7XG4gICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBgPCR7dmFsdWUxfWA7XG4gICAgICAgICAgICBjYXNlICdiZWZvcmVPck9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYDw9JHt2YWx1ZTF9YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3ZhbHVlMX1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBub3JtYWxpemluZyBnZW5lcmF0ZWQgY29uZGl0aW9ucyB0byBkaXNwbGF5IGluIGh1bWFuLXJlYWRhYmxlIGZvcm1hdC5cbiAgICAgKiBAcmV0dXJucyBGb3JtYXR0ZWQgYXJyYXkgb2YgY29uZGl0aW9ucy5cbiAgICAgKiBAcGFyYW0gZm9ybUl0ZW1cbiAgICAgKiBAcGFyYW0gY29uZGl0aW9uc1xuICAgICAqL1xuICAgIGFzeW5jIG5vcm1hbGl6ZUNvbmRpdGlvbnMoXG4gICAgICAgIGZvcm1JdGVtOiBQcmVwYXJlZER5bmFtaWNGb3JtRmllbGRJdGVtLFxuICAgICAgICBjb25kaXRpb25zOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbltdXG4gICAgKTogUHJvbWlzZTxTbWFydEZpbHRlckJhckNvbmRpdGlvbltdPiB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDb25kaXRpb25zOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY29uZGl0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgbmV3Q29uZGl0aW9uID0gT2JqZWN0LmFzc2lnbih7fSwgY29uZGl0aW9uKTtcblxuICAgICAgICAgICAgbmV3Q29uZGl0aW9uLmRpc3BsYXlWYWx1ZSA9IGF3YWl0IHRoaXMuZ2V0RGlzcGxheVZhbHVlKFxuICAgICAgICAgICAgICAgIG5ld0NvbmRpdGlvbixcbiAgICAgICAgICAgICAgICBmb3JtSXRlbS5ndWlPcHRpb25zPy5hZGRpdGlvbmFsRGF0YS50eXBlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBub3JtYWxpemVkQ29uZGl0aW9ucy5wdXNoKG5ld0NvbmRpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZENvbmRpdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBmb3JtYXR0ZWQgY29uZGl0aW9uIHZhcmlhbnRzLlxuICAgICAqL1xuICAgIGFzeW5jIGdldENvbmRpdGlvbkZpZWxkU2VsZWN0ZWRWYXJpYW50cyhcbiAgICAgICAgZm9ybUl0ZW06IFByZXBhcmVkRHluYW1pY0Zvcm1GaWVsZEl0ZW0sXG4gICAgICAgIGNvbmRpdGlvbnM6IFNtYXJ0RmlsdGVyQmFyQ29uZGl0aW9uW11cbiAgICApOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubm9ybWFsaXplQ29uZGl0aW9ucyhmb3JtSXRlbSwgY29uZGl0aW9ucykpLm1hcCgoYzogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNTZWxlY3RJdGVtKGMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbjogU2VsZWN0SXRlbSA9IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYy5kaXNwbGF5VmFsdWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBjb25kaXRpb247XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgY29sbGVjdGlvbiBmaWx0ZXIgaW50byBzbWFydCBmaWx0ZXIgYmFyIGNvbmRpdGlvbi5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1Db2xsZWN0aW9uRmlsdGVyKGZpbHRlckdyb3VwOiBDb2xsZWN0aW9uRmlsdGVyR3JvdXApOiBTbWFydEZpbHRlckJhckNvbmRpdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlckdyb3VwLmZpbHRlcnMubWFwKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbjogU21hcnRGaWx0ZXJCYXJDb25kaXRpb24gPSB7XG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IGZpbHRlci5zdHJhdGVneSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyLnZhbHVlLFxuICAgICAgICAgICAgICAgIHZhbHVlMjogZmlsdGVyLnZhbHVlMlxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE5vcm1hbGl6ZXMgY29uZGl0aW9uIHZhbHVlLlxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbm9ybWFsaXplVmFsdWUodmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgodikgPT4gdGhpcy5fbm9ybWFsaXplVmFsdWUodikpLmpvaW4oJywgJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNTZWxlY3RJdGVtKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxhYmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9EYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuIl19