@fundamental-ngx/platform 0.43.0-rc.2 → 0.43.0-rc.20

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 (427) hide show
  1. package/esm2020/action-bar/action-bar.component.mjs +3 -3
  2. package/esm2020/action-bar/action-bar.module.mjs +4 -4
  3. package/esm2020/action-button-group/action-button-group.component.mjs +3 -3
  4. package/esm2020/action-button-group/action-button-group.module.mjs +4 -4
  5. package/esm2020/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +5 -5
  6. package/esm2020/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +5 -5
  7. package/esm2020/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +3 -3
  8. package/esm2020/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +3 -3
  9. package/esm2020/approval-flow/approval-flow-node/approval-flow-node.component.mjs +3 -3
  10. package/esm2020/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +5 -5
  11. package/esm2020/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +3 -3
  12. package/esm2020/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +3 -3
  13. package/esm2020/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +3 -3
  14. package/esm2020/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +3 -3
  15. package/esm2020/approval-flow/approval-flow.component.mjs +3 -3
  16. package/esm2020/approval-flow/approval-flow.module.mjs +4 -4
  17. package/esm2020/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
  18. package/esm2020/button/button.component.mjs +3 -3
  19. package/esm2020/button/button.module.mjs +4 -4
  20. package/esm2020/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
  21. package/esm2020/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
  22. package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +3 -3
  23. package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
  24. package/esm2020/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  25. package/esm2020/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
  26. package/esm2020/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
  27. package/esm2020/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
  28. package/esm2020/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
  29. package/esm2020/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
  30. package/esm2020/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
  31. package/esm2020/dynamic-page/dynamic-page.component.mjs +3 -3
  32. package/esm2020/dynamic-page/dynamic-page.config.mjs +3 -3
  33. package/esm2020/dynamic-page/dynamic-page.module.mjs +4 -4
  34. package/esm2020/dynamic-page/dynamic-page.service.mjs +3 -3
  35. package/esm2020/feed-input/feed-input.component.mjs +3 -3
  36. package/esm2020/feed-input/feed-input.module.mjs +4 -4
  37. package/esm2020/form/auto-complete/auto-complete.directive.mjs +3 -3
  38. package/esm2020/form/auto-complete/auto-complete.module.mjs +4 -4
  39. package/esm2020/form/checkbox/checkbox.component.mjs +3 -3
  40. package/esm2020/form/checkbox/checkbox.module.mjs +4 -4
  41. package/esm2020/form/checkbox-group/checkbox-group.component.mjs +3 -3
  42. package/esm2020/form/checkbox-group/checkbox-group.module.mjs +4 -4
  43. package/esm2020/form/combobox/combobox/combobox.component.mjs +4 -4
  44. package/esm2020/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +3 -3
  45. package/esm2020/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  46. package/esm2020/form/combobox/combobox.config.mjs +3 -3
  47. package/esm2020/form/combobox/combobox.module.mjs +4 -4
  48. package/esm2020/form/combobox/commons/base-combobox.mjs +3 -3
  49. package/esm2020/form/date-picker/date-picker.component.mjs +3 -3
  50. package/esm2020/form/date-picker/date-picker.module.mjs +4 -4
  51. package/esm2020/form/datetime-picker/datetime-picker.component.mjs +3 -3
  52. package/esm2020/form/datetime-picker/datetime-picker.module.mjs +4 -4
  53. package/esm2020/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
  54. package/esm2020/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +3 -3
  55. package/esm2020/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +3 -3
  56. package/esm2020/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +3 -3
  57. package/esm2020/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +3 -3
  58. package/esm2020/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +3 -3
  59. package/esm2020/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +3 -3
  60. package/esm2020/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +3 -3
  61. package/esm2020/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +3 -3
  62. package/esm2020/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +3 -3
  63. package/esm2020/form/form-generator/dynamic-form-control-field.directive.mjs +3 -3
  64. package/esm2020/form/form-generator/dynamic-form-control.directive.mjs +3 -3
  65. package/esm2020/form/form-generator/fdp-form-generator.module.mjs +4 -4
  66. package/esm2020/form/form-generator/form-generator/form-generator.component.mjs +5 -5
  67. package/esm2020/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
  68. package/esm2020/form/form-generator/form-generator-field/form-generator-field.component.mjs +3 -3
  69. package/esm2020/form/form-generator/form-generator.service.mjs +3 -3
  70. package/esm2020/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
  71. package/esm2020/form/form-group/deprecated-form-group-compact.directive.mjs +3 -3
  72. package/esm2020/form/form-group/fdp-form.module.mjs +4 -4
  73. package/esm2020/form/form-group/form-field/form-field.component.mjs +3 -3
  74. package/esm2020/form/form-group/form-field-error/form-field-error-description.directive.mjs +3 -3
  75. package/esm2020/form/form-group/form-field-error/form-field-error-heading.directive.mjs +3 -3
  76. package/esm2020/form/form-group/form-field-error/form-field-error.directive.mjs +3 -3
  77. package/esm2020/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
  78. package/esm2020/form/form-group/form-field-group/form-field-group.component.mjs +3 -3
  79. package/esm2020/form/form-group/form-group-header/form-group-header.component.mjs +3 -3
  80. package/esm2020/form/form-group/form-group.component.mjs +3 -3
  81. package/esm2020/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
  82. package/esm2020/form/form-group/services/form-field-layout.service.mjs +3 -3
  83. package/esm2020/form/input/fdp-input.module.mjs +4 -4
  84. package/esm2020/form/input/input.component.mjs +3 -3
  85. package/esm2020/form/input-group/addon-body.component.mjs +3 -3
  86. package/esm2020/form/input-group/addon.component.mjs +3 -3
  87. package/esm2020/form/input-group/input-group.component.mjs +3 -3
  88. package/esm2020/form/input-group/input-group.config.mjs +3 -3
  89. package/esm2020/form/input-group/input-group.module.mjs +4 -4
  90. package/esm2020/form/input-group/input.component.mjs +3 -3
  91. package/esm2020/form/input-message-group-with-template/input-message-group-with-template.component.mjs +3 -3
  92. package/esm2020/form/multi-combobox/commons/base-multi-combobox.mjs +3 -3
  93. package/esm2020/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +4 -4
  94. package/esm2020/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +3 -3
  95. package/esm2020/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
  96. package/esm2020/form/multi-combobox/multi-combobox.config.mjs +3 -3
  97. package/esm2020/form/multi-combobox/multi-combobox.module.mjs +4 -4
  98. package/esm2020/form/multi-input/base-multi-input.mjs +3 -3
  99. package/esm2020/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
  100. package/esm2020/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  101. package/esm2020/form/multi-input/multi-input.component.mjs +4 -4
  102. package/esm2020/form/multi-input/multi-input.config.mjs +3 -3
  103. package/esm2020/form/multi-input/multi-input.module.mjs +4 -4
  104. package/esm2020/form/platform-file-uploader/platform-file-uploader.component.mjs +3 -3
  105. package/esm2020/form/platform-file-uploader/platform-file-uploader.module.mjs +4 -4
  106. package/esm2020/form/radio-group/radio/radio.component.mjs +3 -3
  107. package/esm2020/form/radio-group/radio-group.component.mjs +3 -3
  108. package/esm2020/form/radio-group/radio-group.module.mjs +4 -4
  109. package/esm2020/form/select/commons/base-select.mjs +3 -3
  110. package/esm2020/form/select/option/option.component.mjs +3 -3
  111. package/esm2020/form/select/select/select.component.mjs +3 -3
  112. package/esm2020/form/select/select.config.mjs +3 -3
  113. package/esm2020/form/select/select.module.mjs +4 -4
  114. package/esm2020/form/step-input/base.step-input.mjs +3 -3
  115. package/esm2020/form/step-input/number/number-step-input.component.mjs +3 -3
  116. package/esm2020/form/step-input/step-input-action-button.mjs +3 -3
  117. package/esm2020/form/step-input/step-input-control.directive.mjs +3 -3
  118. package/esm2020/form/step-input/step-input-decrement.directive.mjs +3 -3
  119. package/esm2020/form/step-input/step-input-increment.directive.mjs +3 -3
  120. package/esm2020/form/step-input/step-input.config.mjs +3 -3
  121. package/esm2020/form/step-input/step-input.module.mjs +4 -4
  122. package/esm2020/form/switch/switch/switch.component.mjs +3 -3
  123. package/esm2020/form/switch/switch/switch.config.mjs +3 -3
  124. package/esm2020/form/switch/switch.module.mjs +4 -4
  125. package/esm2020/form/text-area/text-area.component.mjs +3 -3
  126. package/esm2020/form/text-area/text-area.config.mjs +3 -3
  127. package/esm2020/form/text-area/text-area.module.mjs +4 -4
  128. package/esm2020/form/time-picker/time-picker.component.mjs +3 -3
  129. package/esm2020/form/time-picker/time-picker.module.mjs +4 -4
  130. package/esm2020/fundamental-ngx.module.mjs +4 -4
  131. package/esm2020/icon-tab-bar/components/icon-tab-bar-base.class.mjs +3 -3
  132. package/esm2020/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +3 -3
  133. package/esm2020/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +3 -3
  134. package/esm2020/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +3 -3
  135. package/esm2020/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +3 -3
  136. package/esm2020/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +3 -3
  137. package/esm2020/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +3 -3
  138. package/esm2020/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +3 -3
  139. package/esm2020/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +3 -3
  140. package/esm2020/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +3 -3
  141. package/esm2020/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +3 -3
  142. package/esm2020/icon-tab-bar/icon-tab-bar.component.mjs +3 -3
  143. package/esm2020/icon-tab-bar/icon-tab-bar.module.mjs +4 -4
  144. package/esm2020/info-label/info-label.component.mjs +3 -3
  145. package/esm2020/info-label/info-label.module.mjs +4 -4
  146. package/esm2020/link/link.component.mjs +3 -3
  147. package/esm2020/link/link.module.mjs +4 -4
  148. package/esm2020/list/action-list-item/action-list-item.component.mjs +3 -3
  149. package/esm2020/list/action-list-item/action-list-item.module.mjs +4 -4
  150. package/esm2020/list/base-list-item.mjs +6 -6
  151. package/esm2020/list/display-list-item/display-list-item.component.mjs +3 -3
  152. package/esm2020/list/display-list-item/display-list-item.module.mjs +4 -4
  153. package/esm2020/list/free-content-list-item/free-content-list-item.component.mjs +3 -3
  154. package/esm2020/list/list-group-footer.component.mjs +3 -3
  155. package/esm2020/list/list-group-header.component.mjs +3 -3
  156. package/esm2020/list/list.component.mjs +4 -4
  157. package/esm2020/list/list.config.mjs +3 -3
  158. package/esm2020/list/list.module.mjs +4 -4
  159. package/esm2020/list/load-more-content.directive.mjs +3 -3
  160. package/esm2020/list/object-list-item/object-list-item-row.component.mjs +3 -3
  161. package/esm2020/list/object-list-item/object-list-item.component.mjs +3 -3
  162. package/esm2020/list/object-list-item/object-list-item.module.mjs +4 -4
  163. package/esm2020/list/standard-list-item/standard-list-item.component.mjs +3 -3
  164. package/esm2020/list/standard-list-item/standard-list-item.module.mjs +4 -4
  165. package/esm2020/menu/menu-item.component.mjs +3 -3
  166. package/esm2020/menu/menu-trigger.directive.mjs +3 -3
  167. package/esm2020/menu/menu.component.mjs +3 -3
  168. package/esm2020/menu/menu.module.mjs +4 -4
  169. package/esm2020/menu-button/menu-button.component.mjs +3 -3
  170. package/esm2020/menu-button/menu-button.module.mjs +4 -4
  171. package/esm2020/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +3 -3
  172. package/esm2020/message-popover/components/message-view/message-view.component.mjs +5 -5
  173. package/esm2020/message-popover/directives/message-popover-form-item.directive.mjs +3 -3
  174. package/esm2020/message-popover/message-popover.component.mjs +3 -3
  175. package/esm2020/message-popover/platform-message-popover.module.mjs +4 -4
  176. package/esm2020/object-attribute/object-attribute.component.mjs +3 -3
  177. package/esm2020/object-attribute/object-attribute.module.mjs +4 -4
  178. package/esm2020/object-marker/object-marker.component.mjs +3 -3
  179. package/esm2020/object-marker/object-marker.module.mjs +4 -4
  180. package/esm2020/object-status/object-status.component.mjs +3 -3
  181. package/esm2020/object-status/object-status.module.mjs +4 -4
  182. package/esm2020/page-footer/page-footer.component.mjs +3 -3
  183. package/esm2020/page-footer/page-footer.module.mjs +4 -4
  184. package/esm2020/panel/panel-actions.component.mjs +3 -3
  185. package/esm2020/panel/panel-content/panel-content.component.mjs +3 -3
  186. package/esm2020/panel/panel.component.mjs +3 -3
  187. package/esm2020/panel/panel.config.mjs +3 -3
  188. package/esm2020/panel/panel.module.mjs +4 -4
  189. package/esm2020/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +5 -5
  190. package/esm2020/search-field/search-field-mobile/search-field-mobile.module.mjs +4 -4
  191. package/esm2020/search-field/search-field.component.mjs +9 -9
  192. package/esm2020/search-field/search-field.module.mjs +4 -4
  193. package/esm2020/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +7 -7
  194. package/esm2020/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
  195. package/esm2020/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +3 -3
  196. package/esm2020/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +3 -3
  197. package/esm2020/settings-generator/settings-generator-content/settings-generator-content.component.mjs +3 -3
  198. package/esm2020/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +3 -3
  199. package/esm2020/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
  200. package/esm2020/settings-generator/settings-generator.component.mjs +3 -3
  201. package/esm2020/settings-generator/settings-generator.module.mjs +4 -4
  202. package/esm2020/settings-generator/settings-generator.service.mjs +3 -3
  203. package/esm2020/shared/base.mjs +3 -3
  204. package/esm2020/shared/form/base.input.mjs +3 -3
  205. package/esm2020/shared/form/collection-base.input.mjs +3 -3
  206. package/esm2020/shared/form/inline-layout-collection-base.input.mjs +9 -9
  207. package/esm2020/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
  208. package/esm2020/shared/pipes/pipe.module.mjs +4 -4
  209. package/esm2020/shared/platform-content-density-deprecations/directives/platform-compact-deprecation.directive.mjs +3 -3
  210. package/esm2020/shared/platform-content-density-deprecations/directives/platform-content-density-deprecation.directive.mjs +3 -3
  211. package/esm2020/shared/platform-content-density-deprecations/platform-content-density-deprecations.module.mjs +4 -4
  212. package/esm2020/shared/platform.config.mjs +3 -3
  213. package/esm2020/slider/slider.component.mjs +3 -3
  214. package/esm2020/slider/slider.module.mjs +4 -4
  215. package/esm2020/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +3 -3
  216. package/esm2020/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +3 -3
  217. package/esm2020/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +3 -3
  218. package/esm2020/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +3 -3
  219. package/esm2020/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +3 -3
  220. package/esm2020/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +3 -3
  221. package/esm2020/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +3 -3
  222. package/esm2020/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
  223. package/esm2020/smart-filter-bar/smart-filter-bar.component.mjs +3 -3
  224. package/esm2020/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
  225. package/esm2020/smart-filter-bar/smart-filter-bar.service.mjs +3 -3
  226. package/esm2020/split-menu-button/split-menu-button.component.mjs +3 -3
  227. package/esm2020/split-menu-button/split-menu-button.module.mjs +4 -4
  228. package/esm2020/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
  229. package/esm2020/table/components/reset-button/reset-button.component.mjs +3 -3
  230. package/esm2020/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +5 -5
  231. package/esm2020/table/components/table-column/table-column.component.mjs +3 -3
  232. package/esm2020/table/components/table-column-resizer/table-column-resizer.component.mjs +3 -3
  233. package/esm2020/table/components/table-editable-cell/table-editable-cell.component.mjs +3 -3
  234. package/esm2020/table/components/table-group-row/table-group-row.component.mjs +3 -3
  235. package/esm2020/table/components/table-header-cell-content/table-header-cell-content.component.mjs +3 -3
  236. package/esm2020/table/components/table-header-row/table-header-row.component.mjs +10 -6
  237. package/esm2020/table/components/table-p13-dialog/columns/columns.component.mjs +3 -3
  238. package/esm2020/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +3 -3
  239. package/esm2020/table/components/table-p13-dialog/filtering/filtering.component.mjs +3 -3
  240. package/esm2020/table/components/table-p13-dialog/grouping/grouping.component.mjs +3 -3
  241. package/esm2020/table/components/table-p13-dialog/sorting/sorting.component.mjs +8 -8
  242. package/esm2020/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
  243. package/esm2020/table/components/table-p13-dialog/table-p13-dialog.component.mjs +3 -3
  244. package/esm2020/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
  245. package/esm2020/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
  246. package/esm2020/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
  247. package/esm2020/table/components/table-popping-row/table-popping-row.component.mjs +3 -3
  248. package/esm2020/table/components/table-row/table-row.component.mjs +3 -3
  249. package/esm2020/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
  250. package/esm2020/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
  251. package/esm2020/table/components/table-toolbar/table-toolbar.component.mjs +3 -3
  252. package/esm2020/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +3 -3
  253. package/esm2020/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +3 -3
  254. package/esm2020/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +3 -3
  255. package/esm2020/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +3 -3
  256. package/esm2020/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +3 -3
  257. package/esm2020/table/components/table-view-settings-dialog/filtering/filters.component.mjs +3 -3
  258. package/esm2020/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +3 -3
  259. package/esm2020/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +3 -3
  260. package/esm2020/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +3 -3
  261. package/esm2020/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
  262. package/esm2020/table/table.component.mjs +31 -13
  263. package/esm2020/table/table.module.mjs +4 -4
  264. package/esm2020/table-helpers/constants/index.mjs +3 -2
  265. package/esm2020/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
  266. package/esm2020/table-helpers/directives/table-cell-header-popover.directive.mjs +3 -3
  267. package/esm2020/table-helpers/directives/table-cell-resizable.directive.mjs +3 -3
  268. package/esm2020/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
  269. package/esm2020/table-helpers/directives/table-cell.directive.mjs +12 -12
  270. package/esm2020/table-helpers/directives/table-data-source.directive.mjs +3 -3
  271. package/esm2020/table-helpers/directives/table-draggable.directive.mjs +3 -3
  272. package/esm2020/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
  273. package/esm2020/table-helpers/directives/table-header.directive.mjs +6 -6
  274. package/esm2020/table-helpers/directives/table-initial-state.directive.mjs +3 -3
  275. package/esm2020/table-helpers/directives/table-scrollable.directive.mjs +12 -4
  276. package/esm2020/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +3 -3
  277. package/esm2020/table-helpers/directives/table-virtual-scroll.directive.mjs +9 -5
  278. package/esm2020/table-helpers/interfaces/table-state.interface.mjs +1 -1
  279. package/esm2020/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
  280. package/esm2020/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
  281. package/esm2020/table-helpers/pipes/row-classes.pipe.mjs +3 -3
  282. package/esm2020/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
  283. package/esm2020/table-helpers/services/table-column-resize.service.mjs +3 -3
  284. package/esm2020/table-helpers/services/table-responsive.service.mjs +3 -3
  285. package/esm2020/table-helpers/services/table-row.service.mjs +3 -3
  286. package/esm2020/table-helpers/services/table-scroll-dispatcher.service.mjs +4 -4
  287. package/esm2020/table-helpers/services/table.service.mjs +7 -5
  288. package/esm2020/table-helpers/table-helpers.module.mjs +4 -4
  289. package/esm2020/thumbnail/thumbnail-details/thumbnail-details.component.mjs +3 -3
  290. package/esm2020/thumbnail/thumbnail-image/thumbnail-image.component.mjs +3 -3
  291. package/esm2020/thumbnail/thumbnail.component.mjs +3 -3
  292. package/esm2020/thumbnail/thumbnail.module.mjs +4 -4
  293. package/esm2020/upload-collection/dialogs/move-to/move-to.component.mjs +3 -3
  294. package/esm2020/upload-collection/dialogs/new-folder/new-folder.component.mjs +5 -5
  295. package/esm2020/upload-collection/directives/upload-collection-dragndrop.directive.mjs +3 -3
  296. package/esm2020/upload-collection/services/files-validator.service.mjs +3 -3
  297. package/esm2020/upload-collection/upload-collection/upload-collection.component.mjs +3 -3
  298. package/esm2020/upload-collection/upload-collection.module.mjs +4 -4
  299. package/esm2020/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +3 -3
  300. package/esm2020/value-help-dialog/components/define-tab/define-tab.component.mjs +3 -3
  301. package/esm2020/value-help-dialog/components/select-tab/select-tab.component.mjs +3 -3
  302. package/esm2020/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +3 -3
  303. package/esm2020/value-help-dialog/components/value-help-dialog-search/value-help-dialog-search.component.mjs +3 -3
  304. package/esm2020/value-help-dialog/directives/condition-count-message.directive.mjs +3 -3
  305. package/esm2020/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +3 -3
  306. package/esm2020/value-help-dialog/value-help-dialog.module.mjs +4 -4
  307. package/esm2020/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +3 -3
  308. package/esm2020/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +3 -3
  309. package/esm2020/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
  310. package/esm2020/variant-management/directives/variant-management-dirty-label.directive.mjs +3 -3
  311. package/esm2020/variant-management/variant-management.component.mjs +4 -4
  312. package/esm2020/variant-management/variant-management.module.mjs +4 -4
  313. package/esm2020/wizard-generator/base-wizard-generator.mjs +3 -3
  314. package/esm2020/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +5 -5
  315. package/esm2020/wizard-generator/components/wizard-body/wizard-body.component.mjs +3 -3
  316. package/esm2020/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +3 -3
  317. package/esm2020/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +3 -3
  318. package/esm2020/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +3 -3
  319. package/esm2020/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +3 -3
  320. package/esm2020/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
  321. package/esm2020/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
  322. package/esm2020/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
  323. package/esm2020/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
  324. package/esm2020/wizard-generator/wizard-dialog-generator.service.mjs +3 -3
  325. package/esm2020/wizard-generator/wizard-generator.module.mjs +4 -4
  326. package/esm2020/wizard-generator/wizard-generator.service.mjs +3 -3
  327. package/fesm2015/fundamental-ngx-platform-action-bar.mjs +7 -7
  328. package/fesm2015/fundamental-ngx-platform-action-button-group.mjs +7 -7
  329. package/fesm2015/fundamental-ngx-platform-approval-flow.mjs +43 -43
  330. package/fesm2015/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  331. package/fesm2015/fundamental-ngx-platform-button.mjs +7 -7
  332. package/fesm2015/fundamental-ngx-platform-dynamic-page.mjs +46 -46
  333. package/fesm2015/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  334. package/fesm2015/fundamental-ngx-platform-feed-input.mjs +7 -7
  335. package/fesm2015/fundamental-ngx-platform-form.mjs +305 -305
  336. package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
  337. package/fesm2015/fundamental-ngx-platform-icon-tab-bar.mjs +40 -40
  338. package/fesm2015/fundamental-ngx-platform-info-label.mjs +7 -7
  339. package/fesm2015/fundamental-ngx-platform-link.mjs +7 -7
  340. package/fesm2015/fundamental-ngx-platform-list.mjs +60 -60
  341. package/fesm2015/fundamental-ngx-platform-list.mjs.map +1 -1
  342. package/fesm2015/fundamental-ngx-platform-menu-button.mjs +7 -7
  343. package/fesm2015/fundamental-ngx-platform-menu.mjs +13 -13
  344. package/fesm2015/fundamental-ngx-platform-message-popover.mjs +17 -17
  345. package/fesm2015/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  346. package/fesm2015/fundamental-ngx-platform-object-attribute.mjs +7 -7
  347. package/fesm2015/fundamental-ngx-platform-object-marker.mjs +7 -7
  348. package/fesm2015/fundamental-ngx-platform-object-status.mjs +7 -7
  349. package/fesm2015/fundamental-ngx-platform-page-footer.mjs +7 -7
  350. package/fesm2015/fundamental-ngx-platform-panel.mjs +16 -16
  351. package/fesm2015/fundamental-ngx-platform-search-field.mjs +21 -21
  352. package/fesm2015/fundamental-ngx-platform-search-field.mjs.map +1 -1
  353. package/fesm2015/fundamental-ngx-platform-settings-generator.mjs +34 -34
  354. package/fesm2015/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  355. package/fesm2015/fundamental-ngx-platform-shared.mjs +38 -38
  356. package/fesm2015/fundamental-ngx-platform-slider.mjs +7 -7
  357. package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs +34 -34
  358. package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  359. package/fesm2015/fundamental-ngx-platform-split-menu-button.mjs +7 -7
  360. package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +97 -85
  361. package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  362. package/fesm2015/fundamental-ngx-platform-table.mjs +147 -125
  363. package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
  364. package/fesm2015/fundamental-ngx-platform-thumbnail.mjs +13 -13
  365. package/fesm2015/fundamental-ngx-platform-upload-collection.mjs +20 -20
  366. package/fesm2015/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  367. package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +25 -25
  368. package/fesm2015/fundamental-ngx-platform-variant-management.mjs +20 -20
  369. package/fesm2015/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  370. package/fesm2015/fundamental-ngx-platform-wizard-generator.mjs +44 -44
  371. package/fesm2015/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  372. package/fesm2015/fundamental-ngx-platform.mjs +4 -4
  373. package/fesm2020/fundamental-ngx-platform-action-bar.mjs +7 -7
  374. package/fesm2020/fundamental-ngx-platform-action-button-group.mjs +7 -7
  375. package/fesm2020/fundamental-ngx-platform-approval-flow.mjs +43 -43
  376. package/fesm2020/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  377. package/fesm2020/fundamental-ngx-platform-button.mjs +7 -7
  378. package/fesm2020/fundamental-ngx-platform-dynamic-page.mjs +46 -46
  379. package/fesm2020/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  380. package/fesm2020/fundamental-ngx-platform-feed-input.mjs +7 -7
  381. package/fesm2020/fundamental-ngx-platform-form.mjs +305 -305
  382. package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
  383. package/fesm2020/fundamental-ngx-platform-icon-tab-bar.mjs +40 -40
  384. package/fesm2020/fundamental-ngx-platform-info-label.mjs +7 -7
  385. package/fesm2020/fundamental-ngx-platform-link.mjs +7 -7
  386. package/fesm2020/fundamental-ngx-platform-list.mjs +60 -60
  387. package/fesm2020/fundamental-ngx-platform-list.mjs.map +1 -1
  388. package/fesm2020/fundamental-ngx-platform-menu-button.mjs +7 -7
  389. package/fesm2020/fundamental-ngx-platform-menu.mjs +13 -13
  390. package/fesm2020/fundamental-ngx-platform-message-popover.mjs +17 -17
  391. package/fesm2020/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  392. package/fesm2020/fundamental-ngx-platform-object-attribute.mjs +7 -7
  393. package/fesm2020/fundamental-ngx-platform-object-marker.mjs +7 -7
  394. package/fesm2020/fundamental-ngx-platform-object-status.mjs +7 -7
  395. package/fesm2020/fundamental-ngx-platform-page-footer.mjs +7 -7
  396. package/fesm2020/fundamental-ngx-platform-panel.mjs +16 -16
  397. package/fesm2020/fundamental-ngx-platform-search-field.mjs +21 -21
  398. package/fesm2020/fundamental-ngx-platform-search-field.mjs.map +1 -1
  399. package/fesm2020/fundamental-ngx-platform-settings-generator.mjs +34 -34
  400. package/fesm2020/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  401. package/fesm2020/fundamental-ngx-platform-shared.mjs +38 -38
  402. package/fesm2020/fundamental-ngx-platform-slider.mjs +7 -7
  403. package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs +34 -34
  404. package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  405. package/fesm2020/fundamental-ngx-platform-split-menu-button.mjs +7 -7
  406. package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +100 -85
  407. package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  408. package/fesm2020/fundamental-ngx-platform-table.mjs +147 -125
  409. package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
  410. package/fesm2020/fundamental-ngx-platform-thumbnail.mjs +13 -13
  411. package/fesm2020/fundamental-ngx-platform-upload-collection.mjs +20 -20
  412. package/fesm2020/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  413. package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +25 -25
  414. package/fesm2020/fundamental-ngx-platform-variant-management.mjs +20 -20
  415. package/fesm2020/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  416. package/fesm2020/fundamental-ngx-platform-wizard-generator.mjs +44 -44
  417. package/fesm2020/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  418. package/fesm2020/fundamental-ngx-platform.mjs +4 -4
  419. package/fundamental-ngx-platform-v0.43.0-rc.20.tgz +0 -0
  420. package/package.json +5 -5
  421. package/schematics/ng-add/index.js +1 -1
  422. package/table/components/table-header-row/table-header-row.component.d.ts +3 -1
  423. package/table/table.component.d.ts +7 -1
  424. package/table-helpers/directives/table-scrollable.directive.d.ts +2 -0
  425. package/table-helpers/interfaces/table-state.interface.d.ts +1 -0
  426. package/table-helpers/services/table-scroll-dispatcher.service.d.ts +2 -0
  427. package/fundamental-ngx-platform-v0.43.0-rc.2.tgz +0 -0
@@ -34,9 +34,9 @@ export class ActionBarComponent extends BaseComponent {
34
34
  : of('navigation-left-arrow');
35
35
  }
36
36
  }
37
- ActionBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ActionBarComponent, deps: [{ token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
38
- ActionBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: ActionBarComponent, selector: "fdp-action-bar", inputs: { title: "title", description: "description", showBackButton: "showBackButton", backButtonLabel: "backButtonLabel" }, outputs: { backButtonClick: "backButtonClick" }, usesInheritance: true, ngImport: i0, template: "<div fd-action-bar role=\"toolbar\">\n <div fd-action-bar-header>\n <div fd-action-bar-back *ngIf=\"showBackButton\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"backButtonLabel || ('platformActionBar.backButtonLabel' | fdTranslate)\"\n data-tag=\"actionbar__back-button\"\n [attr.title]=\"backButtonLabel || ('platformActionBar.backButtonLabel' | fdTranslate)\"\n [glyph]=\"navigationArrow$ | async\"\n (click)=\"backButtonClick.emit()\"\n ></button>\n </div>\n <div fd-action-bar-title aria-level=\"2\" [attr.title]=\"title\" data-tag=\"actionbar__title\">\n {{ title }}\n </div>\n <ng-content select=\"fdp-action-button-group\"></ng-content>\n </div>\n <p\n fd-action-bar-description\n *ngIf=\"description\"\n [withBackBtn]=\"showBackButton\"\n [attr.title]=\"description\"\n data-tag=\"actionbar__description\"\n >\n {{ description }}\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ActionBarComponent, selector: "[fd-action-bar]" }, { kind: "component", type: i4.ActionBarTitleComponent, selector: "[fd-action-bar-title]" }, { kind: "directive", type: i4.ActionBarDescriptionDirective, selector: "[fd-action-bar-description]", inputs: ["withBackBtn"] }, { kind: "directive", type: i4.ActionBarHeaderDirective, selector: "[fd-action-bar-header]" }, { kind: "directive", type: i4.ActionBarBackDirective, selector: "[fd-action-bar-back]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }] });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ActionBarComponent, decorators: [{
37
+ ActionBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActionBarComponent, deps: [{ token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
38
+ ActionBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ActionBarComponent, selector: "fdp-action-bar", inputs: { title: "title", description: "description", showBackButton: "showBackButton", backButtonLabel: "backButtonLabel" }, outputs: { backButtonClick: "backButtonClick" }, usesInheritance: true, ngImport: i0, template: "<div fd-action-bar role=\"toolbar\">\n <div fd-action-bar-header>\n <div fd-action-bar-back *ngIf=\"showBackButton\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"backButtonLabel || ('platformActionBar.backButtonLabel' | fdTranslate)\"\n data-tag=\"actionbar__back-button\"\n [attr.title]=\"backButtonLabel || ('platformActionBar.backButtonLabel' | fdTranslate)\"\n [glyph]=\"navigationArrow$ | async\"\n (click)=\"backButtonClick.emit()\"\n ></button>\n </div>\n <div fd-action-bar-title aria-level=\"2\" [attr.title]=\"title\" data-tag=\"actionbar__title\">\n {{ title }}\n </div>\n <ng-content select=\"fdp-action-button-group\"></ng-content>\n </div>\n <p\n fd-action-bar-description\n *ngIf=\"description\"\n [withBackBtn]=\"showBackButton\"\n [attr.title]=\"description\"\n data-tag=\"actionbar__description\"\n >\n {{ description }}\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.ActionBarComponent, selector: "[fd-action-bar]" }, { kind: "component", type: i4.ActionBarTitleComponent, selector: "[fd-action-bar-title]" }, { kind: "directive", type: i4.ActionBarDescriptionDirective, selector: "[fd-action-bar-description]", inputs: ["withBackBtn"] }, { kind: "directive", type: i4.ActionBarHeaderDirective, selector: "[fd-action-bar-header]" }, { kind: "directive", type: i4.ActionBarBackDirective, selector: "[fd-action-bar-back]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }] });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActionBarComponent, decorators: [{
40
40
  type: Component,
41
41
  args: [{ selector: 'fdp-action-bar', template: "<div fd-action-bar role=\"toolbar\">\n <div fd-action-bar-header>\n <div fd-action-bar-back *ngIf=\"showBackButton\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"backButtonLabel || ('platformActionBar.backButtonLabel' | fdTranslate)\"\n data-tag=\"actionbar__back-button\"\n [attr.title]=\"backButtonLabel || ('platformActionBar.backButtonLabel' | fdTranslate)\"\n [glyph]=\"navigationArrow$ | async\"\n (click)=\"backButtonClick.emit()\"\n ></button>\n </div>\n <div fd-action-bar-title aria-level=\"2\" [attr.title]=\"title\" data-tag=\"actionbar__title\">\n {{ title }}\n </div>\n <ng-content select=\"fdp-action-button-group\"></ng-content>\n </div>\n <p\n fd-action-bar-description\n *ngIf=\"description\"\n [withBackBtn]=\"showBackButton\"\n [attr.title]=\"description\"\n data-tag=\"actionbar__description\"\n >\n {{ description }}\n </p>\n</div>\n" }]
42
42
  }], ctorParameters: function () { return [{ type: i1.RtlService, decorators: [{
@@ -10,22 +10,22 @@ import { ContentDensityModule } from '@fundamental-ngx/core/content-density';
10
10
  import * as i0 from "@angular/core";
11
11
  export class PlatformActionBarModule {
12
12
  }
13
- PlatformActionBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PlatformActionBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- PlatformActionBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: PlatformActionBarModule, declarations: [ActionBarComponent], imports: [CommonModule,
13
+ PlatformActionBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PlatformActionBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ PlatformActionBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: PlatformActionBarModule, declarations: [ActionBarComponent], imports: [CommonModule,
15
15
  ButtonModule,
16
16
  ActionBarModule,
17
17
  PipeModule,
18
18
  PlatformContentDensityDeprecationsModule,
19
19
  ContentDensityModule,
20
20
  I18nModule], exports: [ActionBarComponent, PlatformContentDensityDeprecationsModule, ContentDensityModule] });
21
- PlatformActionBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PlatformActionBarModule, imports: [CommonModule,
21
+ PlatformActionBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PlatformActionBarModule, imports: [CommonModule,
22
22
  ButtonModule,
23
23
  ActionBarModule,
24
24
  PipeModule,
25
25
  PlatformContentDensityDeprecationsModule,
26
26
  ContentDensityModule,
27
27
  I18nModule, PlatformContentDensityDeprecationsModule, ContentDensityModule] });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PlatformActionBarModule, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PlatformActionBarModule, decorators: [{
29
29
  type: NgModule,
30
30
  args: [{
31
31
  declarations: [ActionBarComponent],
@@ -3,9 +3,9 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "@fundamental-ngx/core/action-bar";
4
4
  export class ActionButtonGroupComponent {
5
5
  }
6
- ActionButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ActionButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
- ActionButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: ActionButtonGroupComponent, selector: "fdp-action-button-group", ngImport: i0, template: "<div fd-action-bar-actions>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ActionBarActionsDirective, selector: "[fd-action-bar-actions]" }] });
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ActionButtonGroupComponent, decorators: [{
6
+ ActionButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActionButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ ActionButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ActionButtonGroupComponent, selector: "fdp-action-button-group", ngImport: i0, template: "<div fd-action-bar-actions>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i1.ActionBarActionsDirective, selector: "[fd-action-bar-actions]" }] });
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActionButtonGroupComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{ selector: 'fdp-action-button-group', template: "<div fd-action-bar-actions>\n <ng-content></ng-content>\n</div>\n" }]
11
11
  }] });
@@ -5,10 +5,10 @@ import { ActionButtonGroupComponent } from './action-button-group.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export class PlatformActionButtonGroupModule {
7
7
  }
8
- PlatformActionButtonGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PlatformActionButtonGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- PlatformActionButtonGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: PlatformActionButtonGroupModule, declarations: [ActionButtonGroupComponent], imports: [CommonModule, ActionBarModule], exports: [ActionButtonGroupComponent] });
10
- PlatformActionButtonGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PlatformActionButtonGroupModule, imports: [CommonModule, ActionBarModule] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: PlatformActionButtonGroupModule, decorators: [{
8
+ PlatformActionButtonGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PlatformActionButtonGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ PlatformActionButtonGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: PlatformActionButtonGroupModule, declarations: [ActionButtonGroupComponent], imports: [CommonModule, ActionBarModule], exports: [ActionButtonGroupComponent] });
10
+ PlatformActionButtonGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PlatformActionButtonGroupModule, imports: [CommonModule, ActionBarModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PlatformActionButtonGroupModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  declarations: [ActionButtonGroupComponent],
@@ -268,12 +268,12 @@ export class ApprovalFlowAddNodeComponent {
268
268
  this._cdr.detectChanges();
269
269
  }
270
270
  }
271
- ApprovalFlowAddNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
272
- ApprovalFlowAddNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: ApprovalFlowAddNodeComponent, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "directive", type: i1.DialogDecisiveButtonDirective, selector: "[fd-dialog-decisive-button]" }, { kind: "directive", type: i8.TemplateDirective, selector: "[fdkTemplate], [fdTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i8.InitialFocusDirective, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }, { kind: "directive", type: i8.DeprecatedInitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]" }, { kind: "component", type: i9.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i10.MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "dropdownValues", "openDropdownOnAddOnClicked", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "component", type: i11.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i12.SelectComponent, selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i12.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: i13.DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "dateInputLabel", "dateRangeInputLabel", "displayCalendarToggleLabel", "valueStateSuccessMessage", "valueStateInformationMessage", "valueStateWarningMessage", "valueStateErrorMessage", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "activeViewChange"] }, { kind: "component", type: i14.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i15.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i15.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i16.ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: i17.ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: i18.ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "pipe", type: i19.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{
271
+ ApprovalFlowAddNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
272
+ ApprovalFlowAddNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ApprovalFlowAddNodeComponent, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "directive", type: i1.DialogDecisiveButtonDirective, selector: "[fd-dialog-decisive-button]" }, { kind: "directive", type: i8.TemplateDirective, selector: "[fdkTemplate], [fdTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i8.InitialFocusDirective, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: i9.SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage", "forceSearchButton"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: i10.MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "dropdownValues", "openDropdownOnAddOnClicked", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "component", type: i11.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i12.SelectComponent, selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i12.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: i13.DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "dateInputLabel", "dateRangeInputLabel", "displayCalendarToggleLabel", "valueStateSuccessMessage", "valueStateInformationMessage", "valueStateWarningMessage", "valueStateErrorMessage", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "activeViewChange"] }, { kind: "component", type: i14.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i15.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i15.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i16.ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: i17.ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: i18.ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "pipe", type: i19.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{
274
274
  type: Component,
275
275
  args: [{ selector: 'fdp-approval-flow-add-node', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
276
276
  class: 'fdp-approval-flow-dialog fdp-approval-flow-add-node'
277
- }, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"] }]
277
+ }, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-dialog-decisive-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fd-dialog-decisive-button\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></button>\n </fd-dialog-footer-button>\n\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-dialog-footer-button>\n <button\n fd-button\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></button>\n </fd-dialog-footer-button>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"] }]
278
278
  }], ctorParameters: function () { return [{ type: i1.DialogRef }, { type: i2.ApprovalFlowAddNodeViewService }, { type: i0.ChangeDetectorRef }]; } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFJVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0csT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJuRixNQUFNLENBQU4sSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLDZDQUFpQixDQUFBO0lBQ2pCLGlEQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBR25DO0FBRUQsTUFBTSxDQUFOLElBQVksNEJBSVg7QUFKRCxXQUFZLDRCQUE0QjtJQUNwQywyREFBMkIsQ0FBQTtJQUMzQixpREFBaUIsQ0FBQTtJQUNqQixxREFBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSlcsNEJBQTRCLEtBQTVCLDRCQUE0QixRQUl2QztBQUVEOzs7R0FHRztBQVdILE1BQU0sT0FBTyw0QkFBNEI7SUF5RXJDLGNBQWM7SUFDZCxZQUNXLFNBQTBDLEVBQzFDLFdBQTJDLEVBQzFDLElBQXVCO1FBRnhCLGNBQVMsR0FBVCxTQUFTLENBQWlDO1FBQzFDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQztRQUMxQyxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQTVFbkMsY0FBYztRQUNkLGNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUM7UUFFNUMsY0FBYztRQUNkLGVBQVUsR0FBRyx3QkFBd0IsQ0FBQztRQUV0QyxjQUFjO1FBQ2Qsb0JBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFeEQsY0FBYztRQUNkLGtCQUFhLEdBQUcsNEJBQTRCLENBQUMsV0FBVyxDQUFDO1FBRXpELGNBQWM7UUFDZCxtQkFBYyxHQUFHLDRCQUE0QixDQUFDO1FBRTlDLGNBQWM7UUFDZCx3QkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFaEUsY0FBYztRQUNkLGFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFM0IsY0FBYztRQUNkLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGNBQWM7UUFDZCxlQUFVLEdBQW1CLEVBQUUsQ0FBQztRQUVoQyxjQUFjO1FBQ2QsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFFNUIsY0FBYztRQUNkLHVCQUFrQixHQUFtQixFQUFFLENBQUM7UUFLeEMsY0FBYztRQUNkLHVCQUFrQixHQUFtQixFQUFFLENBQUM7UUFFeEMsY0FBYztRQUNkLHlCQUFvQixHQUFtQixFQUFFLENBQUM7UUFFMUMsY0FBYztRQUNkLHlCQUFvQixHQUFtQixFQUFFLENBQUM7UUFRMUMsY0FBYztRQUNkLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCLGNBQWM7UUFDZCxtQkFBYyxHQUFHLGFBQWEsQ0FBQztRQUUvQixjQUFjO1FBQ2QsbUJBQWMsR0FBRyxhQUFhLENBQUM7UUFFL0IsY0FBYztRQUNkLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFFdkIsY0FBYztRQUNkLHFCQUFnQixHQUFHLEtBQUssQ0FBQztJQWF0QixDQUFDO0lBRUosY0FBYztJQUNkLElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDbEUsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLDJCQUEyQjtRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRTdGLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzFFLENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7WUFDdkYsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFFcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFFNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBRS9DLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7b0JBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2lCQUM3RTtnQkFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRWxFLE1BQU0sSUFBSSxHQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGNBQWM7b0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLElBQUksRUFBRTtvQkFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQzFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLHdCQUF3Qjt3QkFDMUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUTt3QkFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO2lCQUNwQzthQUNKO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMvRCxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDM0IsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssT0FBTztnQkFDUixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO2dCQUN4QyxNQUFNO1lBQ1YsS0FBSyxVQUFVO2dCQUNYLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzFDLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDdEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2QscUJBQXFCLENBQUMsU0FBeUI7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUVwQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztJQUNkLHlCQUF5QjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDekQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDM0QsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQztRQUUxRyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBRWhELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztJQUNkLGdCQUFnQixDQUFDLElBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO0lBQ2Qsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRTtZQUN4QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzNDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsYUFBYSxLQUFLLDRCQUE0QixDQUFDLFFBQVEsQ0FBQztTQUMzRztRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWUsQ0FBQyxJQUFrQjtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6RyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2Qsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUM7UUFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNkLGdCQUFnQixDQUFDLElBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRXpDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtRQUNwRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ2Qsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQy9EO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDeEIsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDYixDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFDZCxxQkFBcUIsQ0FBQyxZQUFZLEdBQUcsRUFBRTtRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUc7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLHVCQUF1QixDQUFDLEtBQXFCO1FBQ3pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDOzt5SEFyVFEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsbUpDbkV6QyxxdlhBMlBBOzJGRHhMYSw0QkFBNEI7a0JBVnhDLFNBQVM7K0JBQ0ksNEJBQTRCLGlCQUd2QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNGLEtBQUssRUFBRSxxREFBcUQ7cUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZERhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IEFwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZSwgVklFV19NT0RFUyB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3BsYXlUZWFtRm4sIGRpc3BsYXlVc2VyRm4sIGZpbHRlckJ5TmFtZSwgdHJhY2tCeUZuIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBBcHByb3ZhbE5vZGUsIEFwcHJvdmFsVGVhbSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBBZGROb2RlRGlhbG9nUmVmRGF0YSB7XG4gICAgaXNFZGl0PzogYm9vbGVhbjtcbiAgICBzaG93Tm9kZVR5cGVTZWxlY3Q/OiBib29sZWFuO1xuICAgIG5vZGU/OiBBcHByb3ZhbE5vZGU7XG4gICAgbm9kZVRhcmdldD86IEFwcHJvdmFsRmxvd05vZGVUYXJnZXQ7XG4gICAgdGVhbURhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1RlYW1EYXRhU291cmNlPEFwcHJvdmFsVGVhbT47XG4gICAgdXNlckRhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlPEFwcHJvdmFsVXNlcj47XG4gICAgdXNlckRldGFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBjaGVja0R1ZURhdGU/OiBib29sZWFuO1xuICAgIHJ0bDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGROb2RlRGlhbG9nRm9ybURhdGEge1xuICAgIG5vZGU6IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVHlwZTogQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTO1xuICAgIHRvTmV4dFNlcmlhbDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQXBwcm92YWxGbG93TmV3Tm9kZVBsYWNlbWVudCA9ICdiZWZvcmUnIHwgJ2FmdGVyJyB8ICdiZWZvcmUtYWxsJyB8ICdhZnRlci1hbGwnO1xuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0ID0gQXBwcm92YWxGbG93TmV3Tm9kZVBsYWNlbWVudCB8ICdlbXB0eScgfCAncGFyYWxsZWwnO1xuXG5leHBvcnQgZW51bSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMge1xuICAgIFNFUklBTCA9ICdTRVJJQUwnLFxuICAgIFBBUkFMTEVMID0gJ1BBUkFMTEVMJ1xufVxuXG5leHBvcnQgZW51bSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTIHtcbiAgICBTSU5HTEVfVVNFUiA9ICdTSU5HTEVfVVNFUicsXG4gICAgQU5ZT05FID0gJ0FOWU9ORScsXG4gICAgRVZFUllPTkUgPSAnRVZFUllPTkUnXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd0FkZE5vZGUgY29tcG9uZW50IGlzIGRlcHJpY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi9zdHlsZXMvYXBwcm92YWwtZmxvdy1kaWFsb2cuc2NzcycsICcuL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZHAtYXBwcm92YWwtZmxvdy1kaWFsb2cgZmRwLWFwcHJvdmFsLWZsb3ctYWRkLW5vZGUnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dBZGROb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlID0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTLlNFUklBTDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlc0FycmF5ID0gT2JqZWN0LmtleXMoQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZSA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuU0lOR0xFX1VTRVI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzID0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZHVlRGF0ZSA9IEZkRGF0ZS5nZXROb3coKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdE1vZGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RlYW1zOiBBcHByb3ZhbFRlYW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRBcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW06IE51bGxhYmxlPEFwcHJvdmFsVGVhbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1BcnJheTogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkVGVhbU1lbWJlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHM/OiBBcHByb3ZhbFVzZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91c2VyVG9TaG93RGV0YWlsc0RhdGEkPzogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2hlY2tEdWVEYXRlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VXNlckZuID0gZGlzcGxheVVzZXJGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlUZWFtRm4gPSBkaXNwbGF5VGVhbUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUZuID0gdHJhY2tCeUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWRkVG9OZXh0U2VyaWFsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpZXdDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPEFkZE5vZGVEaWFsb2dSZWZEYXRhPixcbiAgICAgICAgcHVibGljIHZpZXdTZXJ2aWNlOiBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfZGF0YSgpOiBBZGROb2RlRGlhbG9nUmVmRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1NpbmdsZVVzZXJNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwcm92ZXJUeXBlID09PSB0aGlzLl9hcHByb3ZlclR5cGVzLlNJTkdMRV9VU0VSO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5faXNTaW5nbGVVc2VyTW9kZSA/IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzIDogdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXk7XG5cbiAgICAgICAgcmV0dXJuICFhcHByb3ZlcnMubGVuZ3RoIHx8ICh0aGlzLl9jaGVja0R1ZURhdGUgJiYgIXRoaXMuX2R1ZURhdGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9oZWFkZXJBcnJvd0dseXBoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbmF2aWdhdGlvbi0nICsgKHRoaXMuX2RhdGEucnRsID8gJ3JpZ2h0JyA6ICdsZWZ0JykgKyAnLWFycm93JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyB0cmlnZ2VyaW5nIGluaXRpYWwgbG9hZGluZyBvZiBkYXRhIGluIGRhdGEgc291cmNlcy5cbiAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIGNvbnN0IHRlYW1zJCA9IHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICBjb25zdCBhcHByb3ZlcnMkID0gdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VTdWIgPSBjb21iaW5lTGF0ZXN0KFt0ZWFtcyQsIGFwcHJvdmVycyRdKS5zdWJzY3JpYmUoKFt0ZWFtcywgYXBwcm92ZXJzXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGVhbXMgPSB0ZWFtcztcblxuICAgICAgICAgICAgdGhpcy5fYXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YS5pc0VkaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0R1ZURhdGUgPSAhIXRoaXMuX2RhdGEuY2hlY2tEdWVEYXRlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoZWNrRHVlRGF0ZSAmJiB0aGlzLl9kYXRhLm5vZGU/LmR1ZURhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZHVlRGF0ZSA9IEZkRGF0ZS5nZXRGZERhdGVCeURhdGUobmV3IERhdGUodGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IFsuLi4odGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMgPz8gW10pXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRlYW0gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlYW1zLmZpbmQoKHQpID0+IHQuaWQgPT09IHRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQpO1xuICAgICAgICAgICAgICAgIGlmICh0ZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW0gPSB0ZWFtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheSA9IFt0ZWFtXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwcm92ZXJUeXBlID0gdGhpcy5fZGF0YS5ub2RlPy5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fYXBwcm92ZXJUeXBlcy5FVkVSWU9ORVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hcHByb3ZlclR5cGVzLkFOWU9ORTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl92aWV3Q2hhbmdlU3ViID0gdGhpcy52aWV3U2VydmljZS5vblZpZXdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCcnKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5fZGF0YS5ub2RlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgY2FzZSAnYWZ0ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlID0gdGhpcy5fbm9kZVR5cGVzLlNFUklBTDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BhcmFsbGVsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5QQVJBTExFTDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nb1RvU2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0TW9kZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLl9pc1NpbmdsZVVzZXJNb2RlID8gVklFV19NT0RFUy5TRUxFQ1RfVVNFUiA6IFZJRVdfTU9ERVMuU0VMRUNUX1RFQU0pO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRTZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoICYmICF0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2RhdGEuaXNFZGl0ICYmICF0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VGVhbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0TW9kZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VmlldygpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNlbGVjdGVkQXBwcm92ZXJzKGFwcHJvdmVyczogQXBwcm92YWxVc2VyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBhcHByb3ZlcnM7XG5cbiAgICAgICAgdGhpcy5fY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGEubm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMgPSB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycztcbiAgICAgICAgdGhpcy5fZGF0YS5ub2RlLnZhcmlvdXNUZWFtcyA9IHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMuc29tZShcbiAgICAgICAgICAgICh1KSA9PiB1LnRlYW1JZCAhPT0gdGhpcy5fZGF0YS5ub2RlIS5hcHByb3ZlcnNbMF0udGVhbUlkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS5kZXNjcmlwdGlvbiA9IHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPyAnJyA6IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzWzBdPy5kZXNjcmlwdGlvbjtcblxuICAgICAgICBkZWxldGUgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmFsVGVhbUlkO1xuICAgICAgICBkZWxldGUgdGhpcy5fZGF0YS5ub2RlLmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZDtcblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNlbGVjdGVkVGVhbSh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZFRlYW0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3U2VydmljZS50ZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtID0gdGhpcy52aWV3U2VydmljZS50ZWFtO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheSA9IFt0aGlzLnZpZXdTZXJ2aWNlLnRlYW1dO1xuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZCA9IHRoaXMudmlld1NlcnZpY2UudGVhbS5pZDtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5kZXNjcmlwdGlvbiA9IHRoaXMudmlld1NlcnZpY2UudGVhbS5uYW1lO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZCA9IHRoaXMuX2FwcHJvdmVyVHlwZSA9PT0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUy5FVkVSWU9ORTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2V4aXRTZWxlY3RNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VlVXNlckRldGFpbHModXNlcjogQXBwcm92YWxVc2VyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5VU0VSX0RFVEFJTFMpO1xuXG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzID0gdXNlcjtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHNEYXRhJCA9IHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLmdldE9uZShuZXcgTWFwKFtbJ2lkJywgdXNlci5pZF1dKSk7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0VXNlckRldGFpbHNNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KHRoaXMudmlld1NlcnZpY2UudGVhbSA/IFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlMgOiBWSUVXX01PREVTLlNFTEVDVF9VU0VSKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHNEYXRhJCA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZpZXdUZWFtTWVtYmVycyh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlMpO1xuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMgPSB0ZWFtLm1lbWJlcnM7XG5cbiAgICAgICAgdGhpcy5fc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzKTsgLy8gYXBwbHlpbmcgbG9jYWwgZmlsdGVyaW5nXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFRlYW1NZW1iZXJzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlNFTEVDVF9URUFNKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gW107XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUgJiYgIXRoaXMuX2lzU2luZ2xlVXNlck1vZGUgJiYgdGhpcy5fc2VsZWN0ZWRUZWFtKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gWy4uLnRoaXMuX3NlbGVjdGVkVGVhbS5tZW1iZXJzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUgJiYgdGhpcy5fY2hlY2tEdWVEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZHVlRGF0ZSA9IHRoaXMuX2R1ZURhdGUudG9EYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICBub2RlOiB0aGlzLl9kYXRhLm5vZGUsXG4gICAgICAgICAgICBub2RlVHlwZTogdGhpcy5fbm9kZVR5cGUsXG4gICAgICAgICAgICB0b05leHRTZXJpYWw6IHRoaXMuX2FkZFRvTmV4dFNlcmlhbFxuICAgICAgICB9IGFzIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWFyY2hTdHJpbmdDaGFuZ2Uoc2VhcmNoU3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IE1hcChbWydxdWVyeScsIHNlYXJjaFN0cmluZ11dKTtcblxuICAgICAgICBpZiAodGhpcy52aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm1hdGNoKHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm1hdGNoKHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzLmZpbHRlcigodXNlcikgPT4gZmlsdGVyQnlOYW1lKHVzZXIsIHNlYXJjaFN0cmluZykpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModXNlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkVGVhbU1lbWJlcnMgPSBbLi4udXNlcnNdO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2cgZmRDb21wYWN0PlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyIFtjbGFzcy5zaG93LXNlYXJjaF09XCJfc2VsZWN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2VsZWN0TW9kZSAmJiAhX2RhdGEuaXNFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyQWRkQXBwcm92ZXJzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIV9zZWxlY3RNb2RlICYmIF9kYXRhLmlzRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckVkaXRBcHByb3ZlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVyVGVhbScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJfaGVhZGVyQXJyb3dHbHlwaFwiIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyB2aWV3U2VydmljZS50ZWFtPy5uYW1lID8/ICcnIH19ICh7eyB2aWV3U2VydmljZS50ZWFtPy5tZW1iZXJzPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJEZXRhaWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICAqbmdJZj1cIl9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlYXJjaFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxuICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfb25TZWFyY2hTdHJpbmdDaGFuZ2UoJGV2ZW50LnRleHQpXCJcbiAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuXG4gICAgPGZkLWRpYWxvZy1ib2R5IFtjbGFzcy5mZC1kaWFsb2dfX2JvZHktLWF1dG8taGVpZ2h0XT1cInZpZXdTZXJ2aWNlLmlzVXNlckRldGFpbHNNb2RlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtICpuZ0lmPVwiX2RhdGEuc2hvd05vZGVUeXBlU2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfbm9kZVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIF9ub2RlVHlwZXNBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdTd2l0Y2hDYXNlPVwiX25vZGVUeXBlcy5TRVJJQUxcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGVTZXJpYWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdTd2l0Y2hDYXNlPVwiX25vZGVUeXBlcy5QQVJBTExFTFwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZVBhcmFsbGVsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2ZkLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfYXBwcm92ZXJUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBfYXBwcm92ZXJUeXBlc0FycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uICpuZ1N3aXRjaENhc2U9XCJfYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUlwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVVc2VyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9hcHByb3ZlclR5cGVzLkFOWU9ORVwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtQW55b25lJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9hcHByb3ZlclR5cGVzLkVWRVJZT05FXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZVRlYW1FdmVyeW9uZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dVc2VyT3JUZWFtJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9pc1NpbmdsZVVzZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VXNlckZuXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiX3NldFNlbGVjdGVkQXBwcm92ZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuXG4gICAgICAgICAgICAgICAgPGZkLW11bHRpLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIV9pc1NpbmdsZVVzZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRUZWFtQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VGVhbUZuXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfbm9kZVR5cGUgPT09IF9ub2RlVHlwZXMuUEFSQUxMRUxcIiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94IFsobmdNb2RlbCldPVwiX2FkZFRvTmV4dFNlcmlhbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FkZFRvTmV4dCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9jaGVja0R1ZURhdGVcIiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dEdWVEYXRlJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1kYXRlLXBpY2tlciB0eXBlPVwic2luZ2xlXCIgW3N0YXRlXT1cIiF0aGlzLl9kdWVEYXRlID8gJ2Vycm9yJyA6IG51bGxcIiBbKG5nTW9kZWwpXT1cIl9kdWVEYXRlXCI+XG4gICAgICAgICAgICAgICAgPC9mZC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFfZGF0YS50ZWFtRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nOyBlbHNlIGxvYWRpbmdUcGxcIlxuICAgICAgICAgICAgICAgICAgICBbaXNSdGxdPVwiX2RhdGEucnRsXCJcbiAgICAgICAgICAgICAgICAgICAgW3RlYW1zXT1cIl90ZWFtc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRlYW1JZF09XCJfc2VsZWN0ZWRUZWFtPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgIChvblRlYW1DbGljayk9XCJfdmlld1RlYW1NZW1iZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAob25UZWFtUmFkaW9DbGljayk9XCJfc2V0U2VsZWN0ZWRUZWFtKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCB2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlIHx8ICFfZGF0YS51c2VyRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nOyBlbHNlIGxvYWRpbmdUcGxcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlcnNdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSA/IF9hcHByb3ZlcnMgOiBfZmlsdGVyZWRUZWFtTWVtYmVyc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpc1NlbGVjdGFibGVdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFVzZXJzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgIChvblVzZXJDbGljayk9XCJfc2VlVXNlckRldGFpbHMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJfc2VsZWN0ZWRBcHByb3ZlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSAmJiBfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgIFt1c2VyXT1cIl91c2VyVG9TaG93RGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgW2RldGFpbHNUZW1wbGF0ZV09XCJfZGF0YS51c2VyRGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGV0YWlsc109XCJfdXNlclRvU2hvd0RldGFpbHNEYXRhJFwiXG4gICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2VsZWN0TW9kZVwiPlxuICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFkZEFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc3VibWl0KClcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG5cbiAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1pbml0aWFsLWZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zZWxlY3RNb2RlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1pbml0aWFsLWZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlU2VsZWN0QXBwcm92ZXJBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZFRlYW0gJiYgIXZpZXdTZXJ2aWNlLnRlYW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRUZWFtKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1pbml0aWFsLWZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1pbml0aWFsLWZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzVXNlckRldGFpbHNNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWluaXRpYWwtZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVHBsPlxuICAgIDxmZC1idXN5LWluZGljYXRvciBbbG9hZGluZ109XCJ0cnVlXCIgW2Jsb2NrXT1cInRydWVcIj4gPC9mZC1idXN5LWluZGljYXRvcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFJVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0csT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJuRixNQUFNLENBQU4sSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ2hDLDZDQUFpQixDQUFBO0lBQ2pCLGlEQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFIVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBR25DO0FBRUQsTUFBTSxDQUFOLElBQVksNEJBSVg7QUFKRCxXQUFZLDRCQUE0QjtJQUNwQywyREFBMkIsQ0FBQTtJQUMzQixpREFBaUIsQ0FBQTtJQUNq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QUcsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDOzt5SEFyVFEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsbUpDbkV6QyxndlhBMlBBOzJGRHhMYSw0QkFBNEI7a0JBVnhDLFNBQVM7K0JBQ0ksNEJBQTRCLGlCQUd2QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNGLEtBQUssRUFBRSxxREFBcUQ7cUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZERhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IEFwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZSwgVklFV19NT0RFUyB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3BsYXlUZWFtRm4sIGRpc3BsYXlVc2VyRm4sIGZpbHRlckJ5TmFtZSwgdHJhY2tCeUZuIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBBcHByb3ZhbE5vZGUsIEFwcHJvdmFsVGVhbSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBBZGROb2RlRGlhbG9nUmVmRGF0YSB7XG4gICAgaXNFZGl0PzogYm9vbGVhbjtcbiAgICBzaG93Tm9kZVR5cGVTZWxlY3Q/OiBib29sZWFuO1xuICAgIG5vZGU/OiBBcHByb3ZhbE5vZGU7XG4gICAgbm9kZVRhcmdldD86IEFwcHJvdmFsRmxvd05vZGVUYXJnZXQ7XG4gICAgdGVhbURhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1RlYW1EYXRhU291cmNlPEFwcHJvdmFsVGVhbT47XG4gICAgdXNlckRhdGFTb3VyY2U6IEFwcHJvdmFsRmxvd1VzZXJEYXRhU291cmNlPEFwcHJvdmFsVXNlcj47XG4gICAgdXNlckRldGFpbHNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBjaGVja0R1ZURhdGU/OiBib29sZWFuO1xuICAgIHJ0bDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGROb2RlRGlhbG9nRm9ybURhdGEge1xuICAgIG5vZGU6IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVHlwZTogQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTO1xuICAgIHRvTmV4dFNlcmlhbDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQXBwcm92YWxGbG93TmV3Tm9kZVBsYWNlbWVudCA9ICdiZWZvcmUnIHwgJ2FmdGVyJyB8ICdiZWZvcmUtYWxsJyB8ICdhZnRlci1hbGwnO1xuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0ID0gQXBwcm92YWxGbG93TmV3Tm9kZVBsYWNlbWVudCB8ICdlbXB0eScgfCAncGFyYWxsZWwnO1xuXG5leHBvcnQgZW51bSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMge1xuICAgIFNFUklBTCA9ICdTRVJJQUwnLFxuICAgIFBBUkFMTEVMID0gJ1BBUkFMTEVMJ1xufVxuXG5leHBvcnQgZW51bSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTIHtcbiAgICBTSU5HTEVfVVNFUiA9ICdTSU5HTEVfVVNFUicsXG4gICAgQU5ZT05FID0gJ0FOWU9ORScsXG4gICAgRVZFUllPTkUgPSAnRVZFUllPTkUnXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEFwcHJvdmFsRmxvd0FkZE5vZGUgY29tcG9uZW50IGlzIGRlcHJpY2F0ZWQgc2luY2UgdmVyc2lvbiAwLjQwLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi9zdHlsZXMvYXBwcm92YWwtZmxvdy1kaWFsb2cuc2NzcycsICcuL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZHAtYXBwcm92YWwtZmxvdy1kaWFsb2cgZmRwLWFwcHJvdmFsLWZsb3ctYWRkLW5vZGUnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dBZGROb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlID0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTLlNFUklBTDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlc0FycmF5ID0gT2JqZWN0LmtleXMoQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZSA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuU0lOR0xFX1VTRVI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzID0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZHVlRGF0ZSA9IEZkRGF0ZS5nZXROb3coKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdE1vZGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RlYW1zOiBBcHByb3ZhbFRlYW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRBcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW06IE51bGxhYmxlPEFwcHJvdmFsVGVhbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1BcnJheTogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkVGVhbU1lbWJlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHM/OiBBcHByb3ZhbFVzZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91c2VyVG9TaG93RGV0YWlsc0RhdGEkPzogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2hlY2tEdWVEYXRlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VXNlckZuID0gZGlzcGxheVVzZXJGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlUZWFtRm4gPSBkaXNwbGF5VGVhbUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUZuID0gdHJhY2tCeUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWRkVG9OZXh0U2VyaWFsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpZXdDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPEFkZE5vZGVEaWFsb2dSZWZEYXRhPixcbiAgICAgICAgcHVibGljIHZpZXdTZXJ2aWNlOiBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfZGF0YSgpOiBBZGROb2RlRGlhbG9nUmVmRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1NpbmdsZVVzZXJNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwcm92ZXJUeXBlID09PSB0aGlzLl9hcHByb3ZlclR5cGVzLlNJTkdMRV9VU0VSO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5faXNTaW5nbGVVc2VyTW9kZSA/IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzIDogdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXk7XG5cbiAgICAgICAgcmV0dXJuICFhcHByb3ZlcnMubGVuZ3RoIHx8ICh0aGlzLl9jaGVja0R1ZURhdGUgJiYgIXRoaXMuX2R1ZURhdGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9oZWFkZXJBcnJvd0dseXBoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbmF2aWdhdGlvbi0nICsgKHRoaXMuX2RhdGEucnRsID8gJ3JpZ2h0JyA6ICdsZWZ0JykgKyAnLWFycm93JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyB0cmlnZ2VyaW5nIGluaXRpYWwgbG9hZGluZyBvZiBkYXRhIGluIGRhdGEgc291cmNlcy5cbiAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIGNvbnN0IHRlYW1zJCA9IHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICBjb25zdCBhcHByb3ZlcnMkID0gdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VTdWIgPSBjb21iaW5lTGF0ZXN0KFt0ZWFtcyQsIGFwcHJvdmVycyRdKS5zdWJzY3JpYmUoKFt0ZWFtcywgYXBwcm92ZXJzXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGVhbXMgPSB0ZWFtcztcblxuICAgICAgICAgICAgdGhpcy5fYXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YS5pc0VkaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0R1ZURhdGUgPSAhIXRoaXMuX2RhdGEuY2hlY2tEdWVEYXRlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoZWNrRHVlRGF0ZSAmJiB0aGlzLl9kYXRhLm5vZGU/LmR1ZURhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZHVlRGF0ZSA9IEZkRGF0ZS5nZXRGZERhdGVCeURhdGUobmV3IERhdGUodGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IFsuLi4odGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMgPz8gW10pXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRlYW0gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlYW1zLmZpbmQoKHQpID0+IHQuaWQgPT09IHRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQpO1xuICAgICAgICAgICAgICAgIGlmICh0ZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW0gPSB0ZWFtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheSA9IFt0ZWFtXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwcm92ZXJUeXBlID0gdGhpcy5fZGF0YS5ub2RlPy5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fYXBwcm92ZXJUeXBlcy5FVkVSWU9ORVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hcHByb3ZlclR5cGVzLkFOWU9ORTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl92aWV3Q2hhbmdlU3ViID0gdGhpcy52aWV3U2VydmljZS5vblZpZXdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCcnKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5fZGF0YS5ub2RlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgY2FzZSAnYWZ0ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlID0gdGhpcy5fbm9kZVR5cGVzLlNFUklBTDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BhcmFsbGVsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5QQVJBTExFTDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nb1RvU2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0TW9kZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLl9pc1NpbmdsZVVzZXJNb2RlID8gVklFV19NT0RFUy5TRUxFQ1RfVVNFUiA6IFZJRVdfTU9ERVMuU0VMRUNUX1RFQU0pO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRTZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoICYmICF0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2RhdGEuaXNFZGl0ICYmICF0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VGVhbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0TW9kZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VmlldygpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNlbGVjdGVkQXBwcm92ZXJzKGFwcHJvdmVyczogQXBwcm92YWxVc2VyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBhcHByb3ZlcnM7XG5cbiAgICAgICAgdGhpcy5fY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGEubm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMgPSB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycztcbiAgICAgICAgdGhpcy5fZGF0YS5ub2RlLnZhcmlvdXNUZWFtcyA9IHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMuc29tZShcbiAgICAgICAgICAgICh1KSA9PiB1LnRlYW1JZCAhPT0gdGhpcy5fZGF0YS5ub2RlIS5hcHByb3ZlcnNbMF0udGVhbUlkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS5kZXNjcmlwdGlvbiA9IHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPyAnJyA6IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzWzBdPy5kZXNjcmlwdGlvbjtcblxuICAgICAgICBkZWxldGUgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmFsVGVhbUlkO1xuICAgICAgICBkZWxldGUgdGhpcy5fZGF0YS5ub2RlLmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZDtcblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNlbGVjdGVkVGVhbSh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZFRlYW0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3U2VydmljZS50ZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtID0gdGhpcy52aWV3U2VydmljZS50ZWFtO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheSA9IFt0aGlzLnZpZXdTZXJ2aWNlLnRlYW1dO1xuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZCA9IHRoaXMudmlld1NlcnZpY2UudGVhbS5pZDtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5kZXNjcmlwdGlvbiA9IHRoaXMudmlld1NlcnZpY2UudGVhbS5uYW1lO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZCA9IHRoaXMuX2FwcHJvdmVyVHlwZSA9PT0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUy5FVkVSWU9ORTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2V4aXRTZWxlY3RNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VlVXNlckRldGFpbHModXNlcjogQXBwcm92YWxVc2VyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5VU0VSX0RFVEFJTFMpO1xuXG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzID0gdXNlcjtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHNEYXRhJCA9IHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLmdldE9uZShuZXcgTWFwKFtbJ2lkJywgdXNlci5pZF1dKSk7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0VXNlckRldGFpbHNNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KHRoaXMudmlld1NlcnZpY2UudGVhbSA/IFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlMgOiBWSUVXX01PREVTLlNFTEVDVF9VU0VSKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHNEYXRhJCA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZpZXdUZWFtTWVtYmVycyh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlMpO1xuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMgPSB0ZWFtLm1lbWJlcnM7XG5cbiAgICAgICAgdGhpcy5fc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzKTsgLy8gYXBwbHlpbmcgbG9jYWwgZmlsdGVyaW5nXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFRlYW1NZW1iZXJzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlNFTEVDVF9URUFNKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gW107XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUgJiYgIXRoaXMuX2lzU2luZ2xlVXNlck1vZGUgJiYgdGhpcy5fc2VsZWN0ZWRUZWFtKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gWy4uLnRoaXMuX3NlbGVjdGVkVGVhbS5tZW1iZXJzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUgJiYgdGhpcy5fY2hlY2tEdWVEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZHVlRGF0ZSA9IHRoaXMuX2R1ZURhdGUudG9EYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICBub2RlOiB0aGlzLl9kYXRhLm5vZGUsXG4gICAgICAgICAgICBub2RlVHlwZTogdGhpcy5fbm9kZVR5cGUsXG4gICAgICAgICAgICB0b05leHRTZXJpYWw6IHRoaXMuX2FkZFRvTmV4dFNlcmlhbFxuICAgICAgICB9IGFzIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWFyY2hTdHJpbmdDaGFuZ2Uoc2VhcmNoU3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IE1hcChbWydxdWVyeScsIHNlYXJjaFN0cmluZ11dKTtcblxuICAgICAgICBpZiAodGhpcy52aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm1hdGNoKHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm1hdGNoKHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzLmZpbHRlcigodXNlcikgPT4gZmlsdGVyQnlOYW1lKHVzZXIsIHNlYXJjaFN0cmluZykpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModXNlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkVGVhbU1lbWJlcnMgPSBbLi4udXNlcnNdO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2cgZmRDb21wYWN0PlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyIFtjbGFzcy5zaG93LXNlYXJjaF09XCJfc2VsZWN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2VsZWN0TW9kZSAmJiAhX2RhdGEuaXNFZGl0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyQWRkQXBwcm92ZXJzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIV9zZWxlY3RNb2RlICYmIF9kYXRhLmlzRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckVkaXRBcHByb3ZlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVyVGVhbScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJfaGVhZGVyQXJyb3dHbHlwaFwiIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyB2aWV3U2VydmljZS50ZWFtPy5uYW1lID8/ICcnIH19ICh7eyB2aWV3U2VydmljZS50ZWFtPy5tZW1iZXJzPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJEZXRhaWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICAqbmdJZj1cIl9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlYXJjaFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxuICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfb25TZWFyY2hTdHJpbmdDaGFuZ2UoJGV2ZW50LnRleHQpXCJcbiAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuXG4gICAgPGZkLWRpYWxvZy1ib2R5IFtjbGFzcy5mZC1kaWFsb2dfX2JvZHktLWF1dG8taGVpZ2h0XT1cInZpZXdTZXJ2aWNlLmlzVXNlckRldGFpbHNNb2RlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtICpuZ0lmPVwiX2RhdGEuc2hvd05vZGVUeXBlU2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfbm9kZVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIF9ub2RlVHlwZXNBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdTd2l0Y2hDYXNlPVwiX25vZGVUeXBlcy5TRVJJQUxcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGVTZXJpYWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdTd2l0Y2hDYXNlPVwiX25vZGVUeXBlcy5QQVJBTExFTFwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZVBhcmFsbGVsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2ZkLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfYXBwcm92ZXJUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBfYXBwcm92ZXJUeXBlc0FycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uICpuZ1N3aXRjaENhc2U9XCJfYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUlwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVVc2VyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9hcHByb3ZlclR5cGVzLkFOWU9ORVwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtQW55b25lJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9hcHByb3ZlclR5cGVzLkVWRVJZT05FXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZVRlYW1FdmVyeW9uZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dVc2VyT3JUZWFtJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIl9pc1NpbmdsZVVzZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VXNlckZuXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiX3NldFNlbGVjdGVkQXBwcm92ZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuXG4gICAgICAgICAgICAgICAgPGZkLW11bHRpLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIV9pc1NpbmdsZVVzZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRUZWFtQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VGVhbUZuXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLW11bHRpLWlucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfbm9kZVR5cGUgPT09IF9ub2RlVHlwZXMuUEFSQUxMRUxcIiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94IFsobmdNb2RlbCldPVwiX2FkZFRvTmV4dFNlcmlhbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FkZFRvTmV4dCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9jaGVja0R1ZURhdGVcIiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dEdWVEYXRlJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1kYXRlLXBpY2tlciB0eXBlPVwic2luZ2xlXCIgW3N0YXRlXT1cIiF0aGlzLl9kdWVEYXRlID8gJ2Vycm9yJyA6IG51bGxcIiBbKG5nTW9kZWwpXT1cIl9kdWVEYXRlXCI+XG4gICAgICAgICAgICAgICAgPC9mZC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFfZGF0YS50ZWFtRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nOyBlbHNlIGxvYWRpbmdUcGxcIlxuICAgICAgICAgICAgICAgICAgICBbaXNSdGxdPVwiX2RhdGEucnRsXCJcbiAgICAgICAgICAgICAgICAgICAgW3RlYW1zXT1cIl90ZWFtc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRlYW1JZF09XCJfc2VsZWN0ZWRUZWFtPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgIChvblRlYW1DbGljayk9XCJfdmlld1RlYW1NZW1iZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAob25UZWFtUmFkaW9DbGljayk9XCJfc2V0U2VsZWN0ZWRUZWFtKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXRlYW0tbGlzdD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCB2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlIHx8ICFfZGF0YS51c2VyRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nOyBlbHNlIGxvYWRpbmdUcGxcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlcnNdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSA/IF9hcHByb3ZlcnMgOiBfZmlsdGVyZWRUZWFtTWVtYmVyc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpc1NlbGVjdGFibGVdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFVzZXJzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgIChvblVzZXJDbGljayk9XCJfc2VlVXNlckRldGFpbHMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJfc2VsZWN0ZWRBcHByb3ZlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSAmJiBfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgIFt1c2VyXT1cIl91c2VyVG9TaG93RGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgW2RldGFpbHNUZW1wbGF0ZV09XCJfZGF0YS51c2VyRGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGV0YWlsc109XCJfdXNlclRvU2hvd0RldGFpbHNEYXRhJFwiXG4gICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2VsZWN0TW9kZVwiPlxuICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1kZWNpc2l2ZS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFkZEFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc3VibWl0KClcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG5cbiAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmQtZGlhbG9nLWRlY2lzaXZlLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUNhbmNlbEFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlU2VsZWN0QXBwcm92ZXJBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRBcHByb3ZlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQXBwcm92ZXJTZWxlY3Rpb25BY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRTZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRUZWFtICYmICF2aWV3U2VydmljZS50ZWFtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY29uZmlybVNlbGVjdGVkVGVhbSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VGVhbU1lbWJlcnNNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiIFtibG9ja109XCJ0cnVlXCI+IDwvZmQtYnVzeS1pbmRpY2F0b3I+XG48L25nLXRlbXBsYXRlPlxuIl19