@sapui5/sap.fe.macros 1.138.0 → 1.140.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/CommonHelper.js +2 -2
  6. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  7. package/src/sap/fe/macros/Field.js +85 -58
  8. package/src/sap/fe/macros/Field.ts +104 -60
  9. package/src/sap/fe/macros/FooterContent.js +44 -11
  10. package/src/sap/fe/macros/FooterContent.tsx +48 -9
  11. package/src/sap/fe/macros/FormElement.js +2 -2
  12. package/src/sap/fe/macros/FormElement.ts +1 -2
  13. package/src/sap/fe/macros/MessageButton.js +1 -2
  14. package/src/sap/fe/macros/MessageButton.tsx +0 -1
  15. package/src/sap/fe/macros/MultiValueField.js +17 -6
  16. package/src/sap/fe/macros/MultiValueField.tsx +7 -4
  17. package/src/sap/fe/macros/RichTextEditor.js +30 -5
  18. package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
  19. package/src/sap/fe/macros/Share.js +85 -40
  20. package/src/sap/fe/macros/Share.tsx +42 -1
  21. package/src/sap/fe/macros/Status.js +226 -0
  22. package/src/sap/fe/macros/Status.tsx +192 -0
  23. package/src/sap/fe/macros/ValueHelp.js +4 -29
  24. package/src/sap/fe/macros/ValueHelp.tsx +2 -43
  25. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  26. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  27. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  28. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  29. package/src/sap/fe/macros/ai/EasyFilterBar.js +123 -114
  30. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +140 -124
  31. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  32. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  33. package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
  34. package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
  35. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  36. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  37. package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
  38. package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
  39. package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
  40. package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
  41. package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
  42. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
  43. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +3 -1
  44. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -0
  45. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  46. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  47. package/src/sap/fe/macros/controls/FilterBar.js +49 -2
  48. package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
  49. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
  50. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
  51. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  52. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  53. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  54. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  55. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  56. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  57. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  58. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  59. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  60. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  61. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
  62. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
  63. package/src/sap/fe/macros/designtime/Designtime.helper.js +39 -2
  64. package/src/sap/fe/macros/designtime/Designtime.helper.ts +39 -0
  65. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
  66. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
  67. package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
  68. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
  69. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  70. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  71. package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
  72. package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
  73. package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
  74. package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
  75. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  76. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  77. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  78. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  79. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  80. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  81. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  82. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  83. package/src/sap/fe/macros/form/Form.js +1 -4
  84. package/src/sap/fe/macros/form/Form.tsx +0 -3
  85. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  86. package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
  87. package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
  88. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  89. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  90. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  91. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  92. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  93. package/src/sap/fe/macros/form/FormHelper.js +1 -2
  94. package/src/sap/fe/macros/form/FormHelper.ts +0 -1
  95. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  96. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  97. package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
  98. package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
  99. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  100. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  101. package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
  102. package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
  103. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  104. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  105. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  106. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  107. package/src/sap/fe/macros/internal/FilterField.block.js +10 -2
  108. package/src/sap/fe/macros/internal/FilterField.block.ts +11 -1
  109. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  110. package/src/sap/fe/macros/internal/field/DisplayStyle.js +51 -13
  111. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +53 -6
  112. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  113. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  114. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  115. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +11 -0
  116. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  117. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  118. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
  119. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
  120. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
  121. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
  122. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -1
  123. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +16 -5
  124. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +21 -9
  125. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  126. package/src/sap/fe/macros/library.js +1 -1
  127. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
  128. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
  129. package/src/sap/fe/macros/messagebundle.properties +42 -32
  130. package/src/sap/fe/macros/messagebundle_ar.properties +12 -4
  131. package/src/sap/fe/macros/messagebundle_bg.properties +11 -3
  132. package/src/sap/fe/macros/messagebundle_ca.properties +15 -7
  133. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -4
  134. package/src/sap/fe/macros/messagebundle_cs.properties +10 -2
  135. package/src/sap/fe/macros/messagebundle_cy.properties +12 -4
  136. package/src/sap/fe/macros/messagebundle_da.properties +11 -3
  137. package/src/sap/fe/macros/messagebundle_de.properties +18 -10
  138. package/src/sap/fe/macros/messagebundle_el.properties +13 -5
  139. package/src/sap/fe/macros/messagebundle_en.properties +16 -8
  140. package/src/sap/fe/macros/messagebundle_en_GB.properties +16 -8
  141. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +16 -8
  142. package/src/sap/fe/macros/messagebundle_es.properties +13 -5
  143. package/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
  144. package/src/sap/fe/macros/messagebundle_et.properties +13 -5
  145. package/src/sap/fe/macros/messagebundle_fi.properties +14 -6
  146. package/src/sap/fe/macros/messagebundle_fr.properties +14 -6
  147. package/src/sap/fe/macros/messagebundle_fr_CA.properties +15 -7
  148. package/src/sap/fe/macros/messagebundle_hi.properties +11 -3
  149. package/src/sap/fe/macros/messagebundle_hr.properties +11 -3
  150. package/src/sap/fe/macros/messagebundle_hu.properties +10 -2
  151. package/src/sap/fe/macros/messagebundle_id.properties +18 -10
  152. package/src/sap/fe/macros/messagebundle_it.properties +10 -2
  153. package/src/sap/fe/macros/messagebundle_iw.properties +10 -2
  154. package/src/sap/fe/macros/messagebundle_ja.properties +13 -5
  155. package/src/sap/fe/macros/messagebundle_kk.properties +15 -7
  156. package/src/sap/fe/macros/messagebundle_ko.properties +10 -2
  157. package/src/sap/fe/macros/messagebundle_lt.properties +11 -3
  158. package/src/sap/fe/macros/messagebundle_lv.properties +12 -4
  159. package/src/sap/fe/macros/messagebundle_mk.properties +12 -4
  160. package/src/sap/fe/macros/messagebundle_ms.properties +14 -6
  161. package/src/sap/fe/macros/messagebundle_nl.properties +13 -5
  162. package/src/sap/fe/macros/messagebundle_no.properties +12 -4
  163. package/src/sap/fe/macros/messagebundle_pl.properties +12 -4
  164. package/src/sap/fe/macros/messagebundle_pt.properties +13 -5
  165. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -4
  166. package/src/sap/fe/macros/messagebundle_ro.properties +12 -4
  167. package/src/sap/fe/macros/messagebundle_ru.properties +13 -5
  168. package/src/sap/fe/macros/messagebundle_sh.properties +12 -4
  169. package/src/sap/fe/macros/messagebundle_sk.properties +11 -3
  170. package/src/sap/fe/macros/messagebundle_sl.properties +12 -4
  171. package/src/sap/fe/macros/messagebundle_sr.properties +12 -4
  172. package/src/sap/fe/macros/messagebundle_sv.properties +11 -3
  173. package/src/sap/fe/macros/messagebundle_th.properties +11 -3
  174. package/src/sap/fe/macros/messagebundle_tr.properties +10 -2
  175. package/src/sap/fe/macros/messagebundle_uk.properties +17 -9
  176. package/src/sap/fe/macros/messagebundle_vi.properties +12 -4
  177. package/src/sap/fe/macros/messagebundle_zh_CN.properties +11 -3
  178. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -4
  179. package/src/sap/fe/macros/messages/MessageButton.js +55 -36
  180. package/src/sap/fe/macros/messages/MessageButton.ts +64 -39
  181. package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
  182. package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
  183. package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
  184. package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
  185. package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
  186. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
  187. package/src/sap/fe/macros/share/ShareAPI.js +4 -29
  188. package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
  189. package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
  190. package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
  191. package/src/sap/fe/macros/table/Action.js +24 -2
  192. package/src/sap/fe/macros/table/Action.ts +13 -0
  193. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  194. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  195. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  196. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  197. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  198. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  199. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  200. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  201. package/src/sap/fe/macros/table/Column.js +3 -3
  202. package/src/sap/fe/macros/table/Column.ts +2 -2
  203. package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
  204. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +36 -7
  205. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  206. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  207. package/src/sap/fe/macros/table/Table.block.js +137 -108
  208. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  209. package/src/sap/fe/macros/table/TableAPI.js +143 -133
  210. package/src/sap/fe/macros/table/TableAPI.ts +5 -1
  211. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  212. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  213. package/src/sap/fe/macros/table/TableHelper.js +1 -2
  214. package/src/sap/fe/macros/table/TableHelper.ts +0 -1
  215. package/src/sap/fe/macros/table/TableRuntime.js +26 -7
  216. package/src/sap/fe/macros/table/TableRuntime.ts +33 -5
  217. package/src/sap/fe/macros/table/Utils.js +6 -2
  218. package/src/sap/fe/macros/table/Utils.ts +5 -1
  219. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
  220. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
  221. package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -20
  222. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -24
  223. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
  224. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
  225. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  226. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  227. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  228. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  229. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  230. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  231. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +8 -1
  232. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +10 -0
  233. package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
  234. package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
  235. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +20 -6
  236. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +36 -14
  237. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -7
  238. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -3
  239. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +16 -5
  240. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +18 -4
@@ -436,6 +436,9 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
436
436
  @property({ type: "int" })
437
437
  threshold?: number;
438
438
 
439
+ @property({ type: "string", allowedValues: ["Block", "GridLarge", "GridSmall"] })
440
+ popinLayout?: string;
441
+
439
442
  @property({ type: "boolean" })
440
443
  isSearchable?: boolean;
441
444
 
@@ -782,7 +785,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
782
785
  */
783
786
  async addMessage(parameters: { type?: MessageType; message?: string; description?: string; persistent?: boolean }): Promise<string> {
784
787
  const table = this.getContent();
785
- if (!table.getBindingContext()) {
788
+ if (!table.getBindingContext() && !table.getRowBinding()) {
786
789
  await new Promise<void>((resolve) => {
787
790
  const checkContextChange = function (): void {
788
791
  if (table.getBindingContext()) {
@@ -2225,6 +2228,7 @@ class TableAPI extends MacroAPI implements ISingleSectionContributor, IRowBindin
2225
2228
  TableAPI.addSetting(tableSettings, "disableCopyToClipboard", this.disableCopyToClipboard);
2226
2229
  TableAPI.addSetting(tableSettings, "scrollThreshold", this.scrollThreshold);
2227
2230
  TableAPI.addSetting(tableSettings, "threshold", this.threshold);
2231
+ TableAPI.addSetting(tableSettings, "popinLayout", this.popinLayout);
2228
2232
  TableAPI.addSetting(tableSettings, "selectionMode", this.selectionMode);
2229
2233
  TableAPI.addSetting(tableSettings, "type", this.type);
2230
2234
  TableAPI.addSetting(tableSettings, "enablePastingOfComputedProperties", this.enablePastingOfComputedProperties);
@@ -180,7 +180,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
180
180
  enableOnSelect: action.enableOnSelect,
181
181
  visible: action.visible,
182
182
  enabled: action.enabled,
183
- isAIOperation: action.isAIOperation
183
+ isAIOperation: action.isAIOperation,
184
+ priority: action.priority,
185
+ group: action.group ?? 0 // Default group to 0 if not defined
184
186
  };
185
187
  if (action.isA("sap.fe.macros.table.Action")) {
186
188
  actions[key] = {
@@ -234,4 +236,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/ManifestSettings", "sap/f
234
236
  }
235
237
  return _exports;
236
238
  }, false);
237
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZUFQSSIsIm93bmVyIiwiX2dldE93bmVyIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiTG9nIiwiZXJyb3IiLCJFcnJvciIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0RnVsbE1ldGFQYXRoIiwiY29udGV4dFBhdGhDb250ZXh0IiwiY29udGV4dFBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJNYWNyb0FQSSIsImdldENvbnZlcnRlckNvbnRleHQiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJtb2RlbHMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwidmlzdWFsaXphdGlvblBhdGgiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsInRhYmxlU2V0dGluZ3MiLCJnZXRTZXR0aW5nc0Zvck1hbmlmZXN0IiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwiYWN0aW9ucyIsImNvbHVtbnMiLCJhZGRTbG90Q29sdW1uc1RvRXh0cmFNYW5pZmVzdCIsImFkZFNsb3RBY3Rpb25zVG9FeHRyYU1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiaXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudCIsInVzZUNvbmRlbnNlZExheW91dCIsImlzTWFjcm9Pck11bHRpcGxlVmlldyIsInZpc3VhbGl6YXRpb25zIiwiZmluZCIsInZpeiIsInR5cGUiLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiX2V4cG9ydHMiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbiIsInRlcm0iLCJsaW5lSXRlbVZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInVuZGVmaW5lZCIsImN1c3RvbUNvbHVtbkRlZmluaXRpb24iLCJjb2x1bW4iLCJpc0NvbHVtbiIsImlzQSIsImhlYWRlciIsIndpZHRoIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiZXhwb3J0U2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwidG9vbHRpcCIsInRlbXBsYXRlIiwiYXZhaWxhYmlsaXR5IiwicmVxdWlyZWQiLCJhbmNob3IiLCJwbGFjZW1lbnQiLCJwb3NpdGlvbiIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsImFjdGlvbiIsImNvbW1hbmQiLCJlbmFibGVPblNlbGVjdCIsInZpc2libGUiLCJlbmFibGVkIiwiaXNBSU9wZXJhdGlvbiIsInRleHQiLCJfX25vV3JhcCIsInByZXNzIiwicmVxdWlyZXNTZWxlY3Rpb24iLCJhZnRlckV4ZWN1dGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJuYXZpZ2F0ZVRvSW5zdGFuY2UiLCJlbnRyaWVzIiwibGVuZ3RoIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwiYWN0aW9uc1NldHRpbmdzIiwibWVudSIsIm1hcCIsInN1YkFjdGlvbiIsImRlZmF1bHRBY3Rpb24iXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlRGVmaW5pdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRVSUFubm90YXRpb25UZXJtcyxcblx0dHlwZSBMaW5lSXRlbSxcblx0dHlwZSBQcmVzZW50YXRpb25WYXJpYW50LFxuXHR0eXBlIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQsXG5cdHR5cGUgU2VsZWN0aW9uVmFyaWFudCxcblx0dHlwZSBTZWxlY3Rpb25WYXJpYW50VHlwZVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IHR5cGUgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy90ZW1wbGF0aW5nL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQge1xuXHRWaXN1YWxpemF0aW9uVHlwZSxcblx0dHlwZSBBdmFpbGFiaWxpdHlUeXBlLFxuXHR0eXBlIEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbixcblx0dHlwZSBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSxcblx0dHlwZSBJbXBvcnRhbmNlLFxuXHR0eXBlIFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgdHlwZSBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHsgdHlwZSBDaGFydFZpc3VhbGl6YXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQ2hhcnRcIjtcbmltcG9ydCB7XG5cdGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbixcblx0Z2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbixcblx0dHlwZSBWaXN1YWxpemF0aW9uQW5kUGF0aFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7IHR5cGUgVGFibGVWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgeyB0eXBlIFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25PZlRlcm0gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgeyBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLCB0eXBlIERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcIi4uL01hY3JvQVBJXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb24gZnJvbSBcIi4vQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Hcm91cCBmcm9tIFwiLi9BY3Rpb25Hcm91cFwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uT3ZlcnJpZGUgZnJvbSBcIi4vQWN0aW9uT3ZlcnJpZGVcIjtcbmltcG9ydCB0eXBlIENvbHVtbiBmcm9tIFwiLi9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCIuL1RhYmxlQVBJXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWJsZURlZmluaXRpb24odGFibGVBUEk6IFRhYmxlQVBJKTogVGFibGVWaXN1YWxpemF0aW9uIHtcblx0Y29uc3Qgb3duZXIgPSB0YWJsZUFQSS5fZ2V0T3duZXIoKTtcblx0Y29uc3QgbWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRpZiAoIW93bmVyIHx8ICFtZXRhTW9kZWwpIHtcblx0XHRMb2cuZXJyb3IoXCJDYW5ub3QgY3JlYXRlIGEgdGFibGUgZGVmaW5pdGlvbiBmb3IgYSBUYWJsZUFQSSB3aXRob3V0IGFuIG93bmVyIG9yIGEgbWV0YW1vZGVsXCIpO1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjcmVhdGUgYSB0YWJsZSBkZWZpbml0aW9uIGZvciBhIFRhYmxlQVBJIHdpdGhvdXQgYW4gb3duZXIgb3IgYSBtZXRhbW9kZWxcIik7XG5cdH1cblx0Y29uc3QgbWV0YVBhdGhDb250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRhYmxlQVBJLmdldEZ1bGxNZXRhUGF0aCgpKTtcblx0Y29uc3QgY29udGV4dFBhdGhDb250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHRhYmxlQVBJLmNvbnRleHRQYXRoKTtcblx0aWYgKCFtZXRhUGF0aENvbnRleHQgfHwgIWNvbnRleHRQYXRoQ29udGV4dCkge1xuXHRcdExvZy5lcnJvcihgSW5jb3JyZWN0IG1ldGFQYXRoICgke3RhYmxlQVBJLm1ldGFQYXRofSkgb3IgY29udGV4dFBhdGggKCR7dGFibGVBUEkuY29udGV4dFBhdGh9KSBmb3IgdGFibGVBUElgKTtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJJbmNvcnJlY3QgbWV0YVBhdGggb3IgY29udGV4dFBhdGggZm9yIHRhYmxlQVBJXCIpO1xuXHR9XG5cblx0dGFibGVBUEkuY29udGV4dE9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0bWV0YVBhdGhDb250ZXh0LFxuXHRcdGNvbnRleHRQYXRoQ29udGV4dFxuXHQpO1xuXG5cdGNvbnN0IGluaXRpYWxDb252ZXJ0ZXJDb250ZXh0ID0gTWFjcm9BUEkuZ2V0Q29udmVydGVyQ29udGV4dCh0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aCwgdGFibGVBUEkuY29udGV4dFBhdGgsIHtcblx0XHRhcHBDb21wb25lbnQ6IG93bmVyLmdldEFwcENvbXBvbmVudCgpLFxuXHRcdG1vZGVsczogb3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzXG5cdH0gYXMgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyk7XG5cdGNvbnN0IHZpc3VhbGl6YXRpb25QYXRoID0gZ2V0VmlzdWFsaXphdGlvblBhdGgodGFibGVBUEkuY29udGV4dE9iamVjdFBhdGgsIGluaXRpYWxDb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRjb25zdCB0YWJsZVNldHRpbmdzID0gdGFibGVBUEkuZ2V0U2V0dGluZ3NGb3JNYW5pZmVzdCgpO1xuXG5cdGNvbnN0IGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0YWN0aW9uczoge30sXG5cdFx0Y29sdW1uczoge30sXG5cdFx0dGFibGVTZXR0aW5nc1xuXHR9O1xuXG5cdC8vIFByb2Nlc3MgY3VzdG9tIGFjdGlvbnMgYW5kIGNvbHVtbnNcblx0YWRkU2xvdENvbHVtbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEksIGV4dHJhTWFuaWZlc3RTZXR0aW5ncyk7XG5cdGFkZFNsb3RBY3Rpb25zVG9FeHRyYU1hbmlmZXN0KHRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3MpO1xuXG5cdGNvbnN0IGV4dHJhUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRleHRyYVBhcmFtc1t2aXN1YWxpemF0aW9uUGF0aF0gPSBleHRyYU1hbmlmZXN0U2V0dGluZ3M7XG5cdGNvbnN0IGNvbnZlcnRlckNvbnRleHQgPSBNYWNyb0FQSS5nZXRDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLFxuXHRcdHRhYmxlQVBJLmNvbnRleHRQYXRoLFxuXHRcdHtcblx0XHRcdGFwcENvbXBvbmVudDogb3duZXI/LmdldEFwcENvbXBvbmVudCgpLFxuXHRcdFx0bW9kZWxzOiBvd25lcj8ucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzXG5cdFx0fSBhcyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzLFxuXHRcdGV4dHJhUGFyYW1zXG5cdCk7XG5cblx0bGV0IGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50VHlwZSB8IHVuZGVmaW5lZDtcblx0aWYgKHRhYmxlQVBJLmFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50UGF0aCkge1xuXHRcdGNvbnN0IHN2T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxTZWxlY3Rpb25WYXJpYW50Pihcblx0XHRcdG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgpISxcblx0XHRcdGNvbnRleHRQYXRoQ29udGV4dFxuXHRcdCk7XG5cdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQgPSBzdk9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHR9XG5cblx0Y29uc3QgdmlzdWFsaXphdGlvbkRlZmluaXRpb24gPSBnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24oXG5cdFx0KHRhYmxlQVBJLmluTXVsdGlWaWV3ICYmIHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdFxuXHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0dGFibGVBUEkuY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKVxuXHRcdFx0ICApXG5cdFx0XHQ6IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgodGFibGVBUEkuY29udGV4dE9iamVjdFBhdGgpKSBhcyBzdHJpbmcsXG5cdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHR7XG5cdFx0XHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50OiB0YWJsZUFQSS51c2VDb25kZW5zZWRMYXlvdXQsXG5cdFx0XHRhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlldzogdGFibGVBUEkuaW5NdWx0aVZpZXcgPz8gdHJ1ZVxuXHRcdH1cblx0KTtcblxuXHQvLyB0YWtlIHRoZSAoZmlyc3QpIFRhYmxlIHZpc3VhbGl6YXRpb25cblx0cmV0dXJuIHZpc3VhbGl6YXRpb25EZWZpbml0aW9uLnZpc3VhbGl6YXRpb25zLmZpbmQoXG5cdFx0KHZpejogVGFibGVWaXN1YWxpemF0aW9uIHwgQ2hhcnRWaXN1YWxpemF0aW9uKSA9PiB2aXoudHlwZSA9PT0gVmlzdWFsaXphdGlvblR5cGUuVGFibGVcblx0KSBhcyBUYWJsZVZpc3VhbGl6YXRpb247XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYW5ub3RhdGlvbiBwYXRoIHBvaW50aW5nIHRvIHRoZSB2aXN1YWxpemF0aW9uIGFubm90YXRpb24gKExpbmVJdGVtKS5cbiAqIEBwYXJhbSBjb250ZXh0T2JqZWN0UGF0aCBUaGUgZGF0YW1vZGVsIG9iamVjdCBwYXRoIGZvciB0aGUgdGFibGVcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHJldHVybnMgVGhlIGFubm90YXRpb24gcGF0aFxuICovXG5mdW5jdGlvbiBnZXRWaXN1YWxpemF0aW9uUGF0aChcblx0Y29udGV4dE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8TGluZUl0ZW0gfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogc3RyaW5nIHtcblx0Y29uc3QgbWV0YVBhdGggPSBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKGNvbnRleHRPYmplY3RQYXRoKSBhcyBzdHJpbmc7XG5cblx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBtZXRhcGF0aCBpcyBub3Qgc2V0XG5cdGlmICghbWV0YVBhdGgpIHtcblx0XHRMb2cuZXJyb3IoYE1pc3NpbmcgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW1gKTtcblx0XHRyZXR1cm4gYEAke1VJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtfWA7XG5cdH1cblxuXHRpZiAoaXNBbm5vdGF0aW9uT2ZUZXJtPExpbmVJdGVtPihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtKSkge1xuXHRcdHJldHVybiBtZXRhUGF0aDsgLy8gTWV0YVBhdGggaXMgYWxyZWFkeSBwb2ludGluZyB0byBhIExpbmVJdGVtXG5cdH1cblx0Ly9OZWVkIHRvIHN3aXRjaCB0byB0aGUgY29udGV4dCByZWxhdGVkIHRoZSBQViBvciBTUFZcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKG1ldGFQYXRoKTtcblxuXHRsZXQgdmlzdWFsaXphdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblx0aWYgKFxuXHRcdGlzQW5ub3RhdGlvbk9mVGVybTxTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQpIHx8XG5cdFx0aXNBbm5vdGF0aW9uT2ZUZXJtPFByZXNlbnRhdGlvblZhcmlhbnQ+KGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudClcblx0KSB7XG5cdFx0dmlzdWFsaXphdGlvbnMgPSBnZXRWaXN1YWxpemF0aW9uc0Zyb21Bbm5vdGF0aW9uKGNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgbWV0YVBhdGgsIHJlc29sdmVkVGFyZ2V0LmNvbnZlcnRlckNvbnRleHQsIHRydWUpO1xuXHR9IGVsc2Uge1xuXHRcdExvZy5lcnJvcihgQmFkIG1ldGFwYXRoIHBhcmFtZXRlciBmb3IgdGFibGUgOiAke2NvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdCEudGVybX1gKTtcblx0fVxuXG5cdGNvbnN0IGxpbmVJdGVtVml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0cmV0dXJuIHZpei52aXN1YWxpemF0aW9uLnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtO1xuXHR9KTtcblxuXHRpZiAobGluZUl0ZW1WaXopIHtcblx0XHRyZXR1cm4gbGluZUl0ZW1WaXouYW5ub3RhdGlvblBhdGg7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gZmFsbGJhY2sgdG8gZGVmYXVsdCBMaW5lSXRlbSBpZiBhbm5vdGF0aW9uIG1pc3NpbmcgaW4gUFZcblx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhIHBhdGggcGFyYW1ldGVyIGZvciBMaW5lSXRlbTogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gOyAvLyBGYWxsYmFja1xuXHR9XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwgcHJvcGVydGllcyB3aXRoIHRoZSB2YWx1ZSBvZiB1bmRlZmluZWQgZnJvbSB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIHJlbW92ZSB0aGUgdW5kZWZpbmVkIHByb3BlcnRpZXMgZnJvbVxuICovXG5mdW5jdGlvbiByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcblx0T2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRpZiAob2JqW2tleV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0ZGVsZXRlIG9ialtrZXldO1xuXHRcdH1cblx0fSk7XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2xvdCBjb2x1bW5zIHRvIHRoZSBleHRyYSBtYW5pZmVzdCBzZXR0aW5ncy5cbiAqIEBwYXJhbSB0YWJsZUFQSVxuICogQHBhcmFtIGV4dHJhTWFuaWZlc3RTZXR0aW5nc1xuICovXG5mdW5jdGlvbiBhZGRTbG90Q29sdW1uc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSTogVGFibGVBUEksIGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24pOiB2b2lkIHtcblx0bGV0IGN1c3RvbUNvbHVtbkRlZmluaXRpb246IEN1c3RvbURlZmluZWRUYWJsZUNvbHVtbiB8IChDdXN0b21EZWZpbmVkVGFibGVDb2x1bW5Gb3JPdmVycmlkZSAmIHsga2V5OiBzdHJpbmcgfSk7XG5cblx0dGFibGVBUEkuY29sdW1ucz8uZm9yRWFjaCgoY29sdW1uKSA9PiB7XG5cdFx0Y29uc3QgaXNDb2x1bW4gPSBjb2x1bW4uaXNBPENvbHVtbj4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLkNvbHVtblwiKTtcblx0XHRpZiAoaXNDb2x1bW4pIHtcblx0XHRcdGN1c3RvbUNvbHVtbkRlZmluaXRpb24gPSB7XG5cdFx0XHRcdGhlYWRlcjogY29sdW1uLmhlYWRlcixcblx0XHRcdFx0d2lkdGg6IGNvbHVtbi53aWR0aCxcblx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0aG9yaXpvbnRhbEFsaWduOiBjb2x1bW4uaG9yaXpvbnRhbEFsaWduLFxuXHRcdFx0XHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogY29sdW1uLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyLFxuXHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRwcm9wZXJ0aWVzOiBjb2x1bW4ucHJvcGVydGllcyxcblx0XHRcdFx0dG9vbHRpcDogY29sdW1uLnRvb2x0aXAsXG5cdFx0XHRcdHRlbXBsYXRlOiBjb2x1bW4udGVtcGxhdGUhLFxuXHRcdFx0XHRhdmFpbGFiaWxpdHk6IGNvbHVtbi5hdmFpbGFiaWxpdHkgYXMgQXZhaWxhYmlsaXR5VHlwZSxcblx0XHRcdFx0cmVxdWlyZWQ6IGNvbHVtbi5yZXF1aXJlZCxcblx0XHRcdFx0dHlwZTogXCJTbG90XCJcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1c3RvbUNvbHVtbkRlZmluaXRpb24gPSB7XG5cdFx0XHRcdGtleTogY29sdW1uLmtleSxcblx0XHRcdFx0d2lkdGg6IGNvbHVtbi53aWR0aCxcblx0XHRcdFx0aW1wb3J0YW5jZTogY29sdW1uLmltcG9ydGFuY2UgYXMgSW1wb3J0YW5jZSxcblx0XHRcdFx0aG9yaXpvbnRhbEFsaWduOiBjb2x1bW4uaG9yaXpvbnRhbEFsaWduLFxuXHRcdFx0XHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogY29sdW1uLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyLFxuXHRcdFx0XHRleHBvcnRTZXR0aW5nczogY29sdW1uLmV4cG9ydFNldHRpbmdzLFxuXHRcdFx0XHRhdmFpbGFiaWxpdHk6IGNvbHVtbi5hdmFpbGFiaWxpdHkgYXMgQXZhaWxhYmlsaXR5VHlwZVxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgYWxsIHVuZGVmaW5lZCBwcm9wZXJ0aWVzLCBzbyB0aGF0IHRoZXkgZG9uJ3QgZXJhc2Ugd2hhdCBpcyBzZXQgaW4gdGhlIG1hbmlmZXN0XG5cdFx0Ly8gKG5lY2Vzc2FyeSBiZWNhdXNlIG1hbmlmZXN0LWJhc2VkIGNvbHVtbnMgYXJlIHRyYW5zZm9ybWVkIGludG8gc2xvdCBjb2x1bW5zIGFuZCB3ZSBkb24ndCBjb3B5XG5cdFx0Ly8gYWxsIHRoZWlyIHByb3BlcnRpZXMgaW4gdGhlIFhNTClcblx0XHRyZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGN1c3RvbUNvbHVtbkRlZmluaXRpb24pO1xuXG5cdFx0aWYgKGlzQ29sdW1uICYmIChjb2x1bW4uYW5jaG9yIHx8IGNvbHVtbi5wbGFjZW1lbnQpKSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uLnBvc2l0aW9uID0ge1xuXHRcdFx0XHRhbmNob3I6IGNvbHVtbi5hbmNob3IsXG5cdFx0XHRcdHBsYWNlbWVudDogKGNvbHVtbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnRcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0ZXh0cmFNYW5pZmVzdFNldHRpbmdzLmNvbHVtbnMhW2NvbHVtbi5rZXldID0gY3VzdG9tQ29sdW1uRGVmaW5pdGlvbjtcblx0fSk7XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2xvdCBhY3Rpb25zIHRvIHRoZSBleHRyYSBtYW5pZmVzdCBzZXR0aW5ncy5cbiAqIEBwYXJhbSB0YWJsZUFQSVxuICogQHBhcmFtIGV4dHJhTWFuaWZlc3RTZXR0aW5nc1xuICovXG5mdW5jdGlvbiBhZGRTbG90QWN0aW9uc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSTogVGFibGVBUEksIGV4dHJhTWFuaWZlc3RTZXR0aW5nczogVGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24pOiB2b2lkIHtcblx0ZnVuY3Rpb24gYWRkQWN0aW9uVG9FeHRyYU1hbmlmZXN0KGFjdGlvbjogQWN0aW9uIHwgQWN0aW9uT3ZlcnJpZGUpOiB2b2lkIHtcblx0XHRjb25zdCBhY3Rpb25zID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzLmFjdGlvbnMhO1xuXHRcdGNvbnN0IGtleSA9IGFjdGlvbi5rZXk7XG5cdFx0YWN0aW9uc1trZXldID0ge1xuXHRcdFx0cG9zaXRpb246IHtcblx0XHRcdFx0cGxhY2VtZW50OiAoYWN0aW9uLnBsYWNlbWVudCA/PyBcIkFmdGVyXCIpIGFzIFBsYWNlbWVudCxcblx0XHRcdFx0YW5jaG9yOiBhY3Rpb24uYW5jaG9yXG5cdFx0XHR9LFxuXHRcdFx0Y29tbWFuZDogYWN0aW9uLmNvbW1hbmQsXG5cdFx0XHRlbmFibGVPblNlbGVjdDogYWN0aW9uLmVuYWJsZU9uU2VsZWN0LFxuXHRcdFx0dmlzaWJsZTogYWN0aW9uLnZpc2libGUsXG5cdFx0XHRlbmFibGVkOiBhY3Rpb24uZW5hYmxlZCxcblx0XHRcdGlzQUlPcGVyYXRpb246IGFjdGlvbi5pc0FJT3BlcmF0aW9uXG5cdFx0fTtcblx0XHRpZiAoYWN0aW9uLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikpIHtcblx0XHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdFx0Li4uYWN0aW9uc1trZXldLFxuXHRcdFx0XHR0ZXh0OiBhY3Rpb24udGV4dCxcblx0XHRcdFx0X19ub1dyYXA6IHRydWUsXG5cdFx0XHRcdHByZXNzOiBcInNvbWUgaGFuZGxlclwiLCAvLyBUaGUgcmVhbCBoYW5kbGVyIHdpbGwgYmUgdHJpZ2dlcmVkIGJ5IGZpcmluZyB0aGUgZXZlbnQgb24gdGhlIEFjdGlvbiBvYmplY3Rcblx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0fTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgYWZ0ZXJFeGVjdXRpb24gPSB7XG5cdFx0XHRlbmFibGVBdXRvU2Nyb2xsOiBhY3Rpb25bXCJlbmFibGVBdXRvU2Nyb2xsXCJdLFxuXHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHR9O1xuXHRcdHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMoYWZ0ZXJFeGVjdXRpb24pO1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdC4uLmFjdGlvbnNba2V5XSxcblx0XHRcdGFmdGVyRXhlY3V0aW9uOiBPYmplY3QuZW50cmllcyhhZnRlckV4ZWN1dGlvbikubGVuZ3RoID8gYWZ0ZXJFeGVjdXRpb24gOiB1bmRlZmluZWQsXG5cdFx0XHRkZWZhdWx0VmFsdWVzRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb25cblx0XHR9O1xuXHR9XG5cblx0dGFibGVBUEkuYWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0aWYgKGFjdGlvbi5pc0E8QWN0aW9uPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIpIHx8IGFjdGlvbi5pc0E8QWN0aW9uT3ZlcnJpZGU+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiKSkge1xuXHRcdFx0Ly8gQWN0aW9uIG9yIEFjdGlvbk92ZXJyaWRlXG5cdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYWN0aW9uc1NldHRpbmdzID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzLmFjdGlvbnMhO1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdFx0YW5jaG9yOiBhY3Rpb24uYW5jaG9yXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1lbnU6IGFjdGlvbi5hY3Rpb25zLm1hcCgoc3ViQWN0aW9uKSA9PiBzdWJBY3Rpb24ua2V5KVxuXHRcdFx0fTtcblx0XHRcdGlmIChhY3Rpb24uaXNBPEFjdGlvbkdyb3VwPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIikpIHtcblx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0Li4uYWN0aW9uc1NldHRpbmdzW2tleV0sXG5cdFx0XHRcdFx0dGV4dDogYWN0aW9uLnRleHQsXG5cdFx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogYWN0aW9uLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0X19ub1dyYXA6IHRydWVcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGFjdGlvbi5hY3Rpb25zLmZvckVhY2goKHN1YkFjdGlvbikgPT4ge1xuXHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3Qoc3ViQWN0aW9uKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBc0NPLFNBQVNBLHFCQUFxQkEsQ0FBQ0MsUUFBa0IsRUFBc0I7SUFDN0UsTUFBTUMsS0FBSyxHQUFHRCxRQUFRLENBQUNFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLE1BQU1DLFNBQVMsR0FBR0YsS0FBSyxFQUFFRyxZQUFZLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUNILEtBQUssSUFBSSxDQUFDRSxTQUFTLEVBQUU7TUFDekJFLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLGlGQUFpRixDQUFDO01BQzVGLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlGQUFpRixDQUFDO0lBQ25HO0lBQ0EsTUFBTUMsZUFBZSxHQUFHTCxTQUFTLENBQUNNLG9CQUFvQixDQUFDVCxRQUFRLENBQUNVLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsTUFBTUMsa0JBQWtCLEdBQUdSLFNBQVMsQ0FBQ00sb0JBQW9C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
239
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVUYWJsZURlZmluaXRpb24iLCJ0YWJsZUFQSSIsIm93bmVyIiwiX2dldE93bmVyIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiTG9nIiwiZXJyb3IiLCJFcnJvciIsIm1ldGFQYXRoQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0RnVsbE1ldGFQYXRoIiwiY29udGV4dFBhdGhDb250ZXh0IiwiY29udGV4dFBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaW5pdGlhbENvbnZlcnRlckNvbnRleHQiLCJNYWNyb0FQSSIsImdldENvbnZlcnRlckNvbnRleHQiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJtb2RlbHMiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwidmlzdWFsaXphdGlvblBhdGgiLCJnZXRWaXN1YWxpemF0aW9uUGF0aCIsInRhYmxlU2V0dGluZ3MiLCJnZXRTZXR0aW5nc0Zvck1hbmlmZXN0IiwiZXh0cmFNYW5pZmVzdFNldHRpbmdzIiwiYWN0aW9ucyIsImNvbHVtbnMiLCJhZGRTbG90Q29sdW1uc1RvRXh0cmFNYW5pZmVzdCIsImFkZFNsb3RBY3Rpb25zVG9FeHRyYU1hbmlmZXN0IiwiZXh0cmFQYXJhbXMiLCJjb252ZXJ0ZXJDb250ZXh0IiwiYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQiLCJhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgiLCJzdk9iamVjdFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJ2aXN1YWxpemF0aW9uRGVmaW5pdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImluTXVsdGlWaWV3IiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldEVudGl0eVR5cGUiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiaXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudCIsInVzZUNvbmRlbnNlZExheW91dCIsImlzTWFjcm9Pck11bHRpcGxlVmlldyIsInZpc3VhbGl6YXRpb25zIiwiZmluZCIsInZpeiIsInR5cGUiLCJWaXN1YWxpemF0aW9uVHlwZSIsIlRhYmxlIiwiX2V4cG9ydHMiLCJpc0Fubm90YXRpb25PZlRlcm0iLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbiIsInRlcm0iLCJsaW5lSXRlbVZpeiIsInZpc3VhbGl6YXRpb24iLCJhbm5vdGF0aW9uUGF0aCIsInJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInVuZGVmaW5lZCIsImN1c3RvbUNvbHVtbkRlZmluaXRpb24iLCJjb2x1bW4iLCJpc0NvbHVtbiIsImlzQSIsImhlYWRlciIsIndpZHRoIiwiaW1wb3J0YW5jZSIsImhvcml6b250YWxBbGlnbiIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiZXhwb3J0U2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwidG9vbHRpcCIsInRlbXBsYXRlIiwiYXZhaWxhYmlsaXR5IiwicmVxdWlyZWQiLCJhbmNob3IiLCJwbGFjZW1lbnQiLCJwb3NpdGlvbiIsImFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdCIsImFjdGlvbiIsImNvbW1hbmQiLCJlbmFibGVPblNlbGVjdCIsInZpc2libGUiLCJlbmFibGVkIiwiaXNBSU9wZXJhdGlvbiIsInByaW9yaXR5IiwiZ3JvdXAiLCJ0ZXh0IiwiX19ub1dyYXAiLCJwcmVzcyIsInJlcXVpcmVzU2VsZWN0aW9uIiwiYWZ0ZXJFeGVjdXRpb24iLCJlbmFibGVBdXRvU2Nyb2xsIiwibmF2aWdhdGVUb0luc3RhbmNlIiwiZW50cmllcyIsImxlbmd0aCIsImRlZmF1bHRWYWx1ZXNGdW5jdGlvbiIsImFjdGlvbnNTZXR0aW5ncyIsIm1lbnUiLCJtYXAiLCJzdWJBY3Rpb24iLCJkZWZhdWx0QWN0aW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZURlZmluaXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0VUlBbm5vdGF0aW9uVGVybXMsXG5cdHR5cGUgTGluZUl0ZW0sXG5cdHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCxcblx0dHlwZSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHR0eXBlIFNlbGVjdGlvblZhcmlhbnQsXG5cdHR5cGUgU2VsZWN0aW9uVmFyaWFudFR5cGVcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHtcblx0VmlzdWFsaXphdGlvblR5cGUsXG5cdHR5cGUgQXZhaWxhYmlsaXR5VHlwZSxcblx0dHlwZSBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4sXG5cdHR5cGUgQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUsXG5cdHR5cGUgSW1wb3J0YW5jZSxcblx0dHlwZSBUYWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0NoYXJ0XCI7XG5pbXBvcnQge1xuXHRnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG5cdGdldFZpc3VhbGl6YXRpb25zRnJvbUFubm90YXRpb24sXG5cdHR5cGUgVmlzdWFsaXphdGlvbkFuZFBhdGhcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyB0eXBlIFRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBQbGFjZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uT2ZUZXJtIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCwgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCIuLi9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uIGZyb20gXCIuL0FjdGlvblwiO1xuaW1wb3J0IHR5cGUgQWN0aW9uR3JvdXAgZnJvbSBcIi4vQWN0aW9uR3JvdXBcIjtcbmltcG9ydCB0eXBlIEFjdGlvbk92ZXJyaWRlIGZyb20gXCIuL0FjdGlvbk92ZXJyaWRlXCI7XG5pbXBvcnQgdHlwZSBDb2x1bW4gZnJvbSBcIi4vQ29sdW1uXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwiLi9UYWJsZUFQSVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFibGVEZWZpbml0aW9uKHRhYmxlQVBJOiBUYWJsZUFQSSk6IFRhYmxlVmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IG93bmVyID0gdGFibGVBUEkuX2dldE93bmVyKCk7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0aWYgKCFvd25lciB8fCAhbWV0YU1vZGVsKSB7XG5cdFx0TG9nLmVycm9yKFwiQ2Fubm90IGNyZWF0ZSBhIHRhYmxlIGRlZmluaXRpb24gZm9yIGEgVGFibGVBUEkgd2l0aG91dCBhbiBvd25lciBvciBhIG1ldGFtb2RlbFwiKTtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY3JlYXRlIGEgdGFibGUgZGVmaW5pdGlvbiBmb3IgYSBUYWJsZUFQSSB3aXRob3V0IGFuIG93bmVyIG9yIGEgbWV0YW1vZGVsXCIpO1xuXHR9XG5cdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5nZXRGdWxsTWV0YVBhdGgoKSk7XG5cdGNvbnN0IGNvbnRleHRQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0YWJsZUFQSS5jb250ZXh0UGF0aCk7XG5cdGlmICghbWV0YVBhdGhDb250ZXh0IHx8ICFjb250ZXh0UGF0aENvbnRleHQpIHtcblx0XHRMb2cuZXJyb3IoYEluY29ycmVjdCBtZXRhUGF0aCAoJHt0YWJsZUFQSS5tZXRhUGF0aH0pIG9yIGNvbnRleHRQYXRoICgke3RhYmxlQVBJLmNvbnRleHRQYXRofSkgZm9yIHRhYmxlQVBJYCk7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiSW5jb3JyZWN0IG1ldGFQYXRoIG9yIGNvbnRleHRQYXRoIGZvciB0YWJsZUFQSVwiKTtcblx0fVxuXG5cdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdG1ldGFQYXRoQ29udGV4dCxcblx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0KTtcblxuXHRjb25zdCBpbml0aWFsQ29udmVydGVyQ29udGV4dCA9IE1hY3JvQVBJLmdldENvbnZlcnRlckNvbnRleHQodGFibGVBUEkuY29udGV4dE9iamVjdFBhdGgsIHRhYmxlQVBJLmNvbnRleHRQYXRoLCB7XG5cdFx0YXBwQ29tcG9uZW50OiBvd25lci5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRtb2RlbHM6IG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHR9IGFzIFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpO1xuXHRjb25zdCB2aXN1YWxpemF0aW9uUGF0aCA9IGdldFZpc3VhbGl6YXRpb25QYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLCBpbml0aWFsQ29udmVydGVyQ29udGV4dCk7XG5cblx0Y29uc3QgdGFibGVTZXR0aW5ncyA9IHRhYmxlQVBJLmdldFNldHRpbmdzRm9yTWFuaWZlc3QoKTtcblxuXHRjb25zdCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uID0ge1xuXHRcdGFjdGlvbnM6IHt9LFxuXHRcdGNvbHVtbnM6IHt9LFxuXHRcdHRhYmxlU2V0dGluZ3Ncblx0fTtcblxuXHQvLyBQcm9jZXNzIGN1c3RvbSBhY3Rpb25zIGFuZCBjb2x1bW5zXG5cdGFkZFNsb3RDb2x1bW5zVG9FeHRyYU1hbmlmZXN0KHRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3MpO1xuXHRhZGRTbG90QWN0aW9uc1RvRXh0cmFNYW5pZmVzdCh0YWJsZUFQSSwgZXh0cmFNYW5pZmVzdFNldHRpbmdzKTtcblxuXHRjb25zdCBleHRyYVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0ZXh0cmFQYXJhbXNbdmlzdWFsaXphdGlvblBhdGhdID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzO1xuXHRjb25zdCBjb252ZXJ0ZXJDb250ZXh0ID0gTWFjcm9BUEkuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHR0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aCxcblx0XHR0YWJsZUFQSS5jb250ZXh0UGF0aCxcblx0XHR7XG5cdFx0XHRhcHBDb21wb25lbnQ6IG93bmVyPy5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdG1vZGVsczogb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVsc1xuXHRcdH0gYXMgVGVtcGxhdGVQcm9jZXNzb3JTZXR0aW5ncyxcblx0XHRleHRyYVBhcmFtc1xuXHQpO1xuXG5cdGxldCBhc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudFR5cGUgfCB1bmRlZmluZWQ7XG5cdGlmICh0YWJsZUFQSS5hc3NvY2lhdGVkU2VsZWN0aW9uVmFyaWFudFBhdGgpIHtcblx0XHRjb25zdCBzdk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8U2VsZWN0aW9uVmFyaWFudD4oXG5cdFx0XHRtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQodGFibGVBUEkuYXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnRQYXRoKSEsXG5cdFx0XHRjb250ZXh0UGF0aENvbnRleHRcblx0XHQpO1xuXHRcdGFzc29jaWF0ZWRTZWxlY3Rpb25WYXJpYW50ID0gc3ZPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXG5cdGNvbnN0IHZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKFxuXHRcdCh0YWJsZUFQSS5pbk11bHRpVmlldyAmJiB0YWJsZUFQSS5jb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdD8gY29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoLnRhcmdldE9iamVjdC5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdCAgKVxuXHRcdFx0OiBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKHRhYmxlQVBJLmNvbnRleHRPYmplY3RQYXRoKSkgYXMgc3RyaW5nLFxuXHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0e1xuXHRcdFx0aXNDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFudDogdGFibGVBUEkudXNlQ29uZGVuc2VkTGF5b3V0LFxuXHRcdFx0YXNzb2NpYXRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRpc01hY3JvT3JNdWx0aXBsZVZpZXc6IHRhYmxlQVBJLmluTXVsdGlWaWV3ID8/IHRydWVcblx0XHR9XG5cdCk7XG5cblx0Ly8gdGFrZSB0aGUgKGZpcnN0KSBUYWJsZSB2aXN1YWxpemF0aW9uXG5cdHJldHVybiB2aXN1YWxpemF0aW9uRGVmaW5pdGlvbi52aXN1YWxpemF0aW9ucy5maW5kKFxuXHRcdCh2aXo6IFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbikgPT4gdml6LnR5cGUgPT09IFZpc3VhbGl6YXRpb25UeXBlLlRhYmxlXG5cdCkgYXMgVGFibGVWaXN1YWxpemF0aW9uO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGFubm90YXRpb24gcGF0aCBwb2ludGluZyB0byB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uIChMaW5lSXRlbSkuXG4gKiBAcGFyYW0gY29udGV4dE9iamVjdFBhdGggVGhlIGRhdGFtb2RlbCBvYmplY3QgcGF0aCBmb3IgdGhlIHRhYmxlXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBhbm5vdGF0aW9uIHBhdGhcbiAqL1xuZnVuY3Rpb24gZ2V0VmlzdWFsaXphdGlvblBhdGgoXG5cdGNvbnRleHRPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPExpbmVJdGVtIHwgUHJlc2VudGF0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IHN0cmluZyB7XG5cdGNvbnN0IG1ldGFQYXRoID0gZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChjb250ZXh0T2JqZWN0UGF0aCkgYXMgc3RyaW5nO1xuXG5cdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgbWV0YXBhdGggaXMgbm90IHNldFxuXHRpZiAoIW1ldGFQYXRoKSB7XG5cdFx0TG9nLmVycm9yKGBNaXNzaW5nIG1ldGEgcGF0aCBwYXJhbWV0ZXIgZm9yIExpbmVJdGVtYCk7XG5cdFx0cmV0dXJuIGBAJHtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbX1gO1xuXHR9XG5cblx0aWYgKGlzQW5ub3RhdGlvbk9mVGVybTxMaW5lSXRlbT4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSkpIHtcblx0XHRyZXR1cm4gbWV0YVBhdGg7IC8vIE1ldGFQYXRoIGlzIGFscmVhZHkgcG9pbnRpbmcgdG8gYSBMaW5lSXRlbVxuXHR9XG5cdC8vTmVlZCB0byBzd2l0Y2ggdG8gdGhlIGNvbnRleHQgcmVsYXRlZCB0aGUgUFYgb3IgU1BWXG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihtZXRhUGF0aCk7XG5cblx0bGV0IHZpc3VhbGl6YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdGlmIChcblx0XHRpc0Fubm90YXRpb25PZlRlcm08U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudD4oY29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LCBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB8fFxuXHRcdGlzQW5ub3RhdGlvbk9mVGVybTxQcmVzZW50YXRpb25WYXJpYW50Pihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpXG5cdCkge1xuXHRcdHZpc3VhbGl6YXRpb25zID0gZ2V0VmlzdWFsaXphdGlvbnNGcm9tQW5ub3RhdGlvbihjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QsIG1ldGFQYXRoLCByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTtcblx0fSBlbHNlIHtcblx0XHRMb2cuZXJyb3IoYEJhZCBtZXRhcGF0aCBwYXJhbWV0ZXIgZm9yIHRhYmxlIDogJHtjb250ZXh0T2JqZWN0UGF0aC50YXJnZXRPYmplY3QhLnRlcm19YCk7XG5cdH1cblxuXHRjb25zdCBsaW5lSXRlbVZpeiA9IHZpc3VhbGl6YXRpb25zLmZpbmQoKHZpeikgPT4ge1xuXHRcdHJldHVybiB2aXoudmlzdWFsaXphdGlvbi50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTtcblx0fSk7XG5cblx0aWYgKGxpbmVJdGVtVml6KSB7XG5cdFx0cmV0dXJuIGxpbmVJdGVtVml6LmFubm90YXRpb25QYXRoO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgTGluZUl0ZW0gaWYgYW5ub3RhdGlvbiBtaXNzaW5nIGluIFBWXG5cdFx0TG9nLmVycm9yKGBCYWQgbWV0YSBwYXRoIHBhcmFtZXRlciBmb3IgTGluZUl0ZW06ICR7Y29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IS50ZXJtfWApO1xuXHRcdHJldHVybiBgQCR7VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW19YDsgLy8gRmFsbGJhY2tcblx0fVxufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgdmFsdWUgb2YgdW5kZWZpbmVkIGZyb20gdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuZGVmaW5lZCBwcm9wZXJ0aWVzIGZyb21cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0aWYgKG9ialtrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGRlbGV0ZSBvYmpba2V5XTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgY29sdW1ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdENvbHVtbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGxldCBjdXN0b21Db2x1bW5EZWZpbml0aW9uOiBDdXN0b21EZWZpbmVkVGFibGVDb2x1bW4gfCAoQ3VzdG9tRGVmaW5lZFRhYmxlQ29sdW1uRm9yT3ZlcnJpZGUgJiB7IGtleTogc3RyaW5nIH0pO1xuXG5cdHRhYmxlQVBJLmNvbHVtbnM/LmZvckVhY2goKGNvbHVtbikgPT4ge1xuXHRcdGNvbnN0IGlzQ29sdW1uID0gY29sdW1uLmlzQTxDb2x1bW4+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5Db2x1bW5cIik7XG5cdFx0aWYgKGlzQ29sdW1uKSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRoZWFkZXI6IGNvbHVtbi5oZWFkZXIsXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0cHJvcGVydGllczogY29sdW1uLnByb3BlcnRpZXMsXG5cdFx0XHRcdHRvb2x0aXA6IGNvbHVtbi50b29sdGlwLFxuXHRcdFx0XHR0ZW1wbGF0ZTogY29sdW1uLnRlbXBsYXRlISxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGUsXG5cdFx0XHRcdHJlcXVpcmVkOiBjb2x1bW4ucmVxdWlyZWQsXG5cdFx0XHRcdHR5cGU6IFwiU2xvdFwiXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjdXN0b21Db2x1bW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRrZXk6IGNvbHVtbi5rZXksXG5cdFx0XHRcdHdpZHRoOiBjb2x1bW4ud2lkdGgsXG5cdFx0XHRcdGltcG9ydGFuY2U6IGNvbHVtbi5pbXBvcnRhbmNlIGFzIEltcG9ydGFuY2UsXG5cdFx0XHRcdGhvcml6b250YWxBbGlnbjogY29sdW1uLmhvcml6b250YWxBbGlnbixcblx0XHRcdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGNvbHVtbi53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcixcblx0XHRcdFx0ZXhwb3J0U2V0dGluZ3M6IGNvbHVtbi5leHBvcnRTZXR0aW5ncyxcblx0XHRcdFx0YXZhaWxhYmlsaXR5OiBjb2x1bW4uYXZhaWxhYmlsaXR5IGFzIEF2YWlsYWJpbGl0eVR5cGVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Ly8gUmVtb3ZlIGFsbCB1bmRlZmluZWQgcHJvcGVydGllcywgc28gdGhhdCB0aGV5IGRvbid0IGVyYXNlIHdoYXQgaXMgc2V0IGluIHRoZSBtYW5pZmVzdFxuXHRcdC8vIChuZWNlc3NhcnkgYmVjYXVzZSBtYW5pZmVzdC1iYXNlZCBjb2x1bW5zIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIHNsb3QgY29sdW1ucyBhbmQgd2UgZG9uJ3QgY29weVxuXHRcdC8vIGFsbCB0aGVpciBwcm9wZXJ0aWVzIGluIHRoZSBYTUwpXG5cdFx0cmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhjdXN0b21Db2x1bW5EZWZpbml0aW9uKTtcblxuXHRcdGlmIChpc0NvbHVtbiAmJiAoY29sdW1uLmFuY2hvciB8fCBjb2x1bW4ucGxhY2VtZW50KSkge1xuXHRcdFx0Y3VzdG9tQ29sdW1uRGVmaW5pdGlvbi5wb3NpdGlvbiA9IHtcblx0XHRcdFx0YW5jaG9yOiBjb2x1bW4uYW5jaG9yLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IChjb2x1bW4ucGxhY2VtZW50ID8/IFwiQWZ0ZXJcIikgYXMgUGxhY2VtZW50XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5jb2x1bW5zIVtjb2x1bW4ua2V5XSA9IGN1c3RvbUNvbHVtbkRlZmluaXRpb247XG5cdH0pO1xufVxuXG4vKipcbiAqIEFkZHMgdGhlIHNsb3QgYWN0aW9ucyB0byB0aGUgZXh0cmEgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0gdGFibGVBUElcbiAqIEBwYXJhbSBleHRyYU1hbmlmZXN0U2V0dGluZ3NcbiAqL1xuZnVuY3Rpb24gYWRkU2xvdEFjdGlvbnNUb0V4dHJhTWFuaWZlc3QodGFibGVBUEk6IFRhYmxlQVBJLCBleHRyYU1hbmlmZXN0U2V0dGluZ3M6IFRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uKTogdm9pZCB7XG5cdGZ1bmN0aW9uIGFkZEFjdGlvblRvRXh0cmFNYW5pZmVzdChhY3Rpb246IEFjdGlvbiB8IEFjdGlvbk92ZXJyaWRlKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0aW9ucyA9IGV4dHJhTWFuaWZlc3RTZXR0aW5ncy5hY3Rpb25zITtcblx0XHRjb25zdCBrZXkgPSBhY3Rpb24ua2V5O1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdHBvc2l0aW9uOiB7XG5cdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdGFuY2hvcjogYWN0aW9uLmFuY2hvclxuXHRcdFx0fSxcblx0XHRcdGNvbW1hbmQ6IGFjdGlvbi5jb21tYW5kLFxuXHRcdFx0ZW5hYmxlT25TZWxlY3Q6IGFjdGlvbi5lbmFibGVPblNlbGVjdCxcblx0XHRcdHZpc2libGU6IGFjdGlvbi52aXNpYmxlLFxuXHRcdFx0ZW5hYmxlZDogYWN0aW9uLmVuYWJsZWQsXG5cdFx0XHRpc0FJT3BlcmF0aW9uOiBhY3Rpb24uaXNBSU9wZXJhdGlvbixcblx0XHRcdHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHksXG5cdFx0XHRncm91cDogYWN0aW9uLmdyb3VwID8/IDAgLy8gRGVmYXVsdCBncm91cCB0byAwIGlmIG5vdCBkZWZpbmVkXG5cdFx0fTtcblx0XHRpZiAoYWN0aW9uLmlzQTxBY3Rpb24+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25cIikpIHtcblx0XHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdFx0Li4uYWN0aW9uc1trZXldLFxuXHRcdFx0XHR0ZXh0OiBhY3Rpb24udGV4dCxcblx0XHRcdFx0X19ub1dyYXA6IHRydWUsXG5cdFx0XHRcdHByZXNzOiBcInNvbWUgaGFuZGxlclwiLCAvLyBUaGUgcmVhbCBoYW5kbGVyIHdpbGwgYmUgdHJpZ2dlcmVkIGJ5IGZpcmluZyB0aGUgZXZlbnQgb24gdGhlIEFjdGlvbiBvYmplY3Rcblx0XHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IGFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvblxuXHRcdFx0fTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgYWZ0ZXJFeGVjdXRpb24gPSB7XG5cdFx0XHRlbmFibGVBdXRvU2Nyb2xsOiBhY3Rpb25bXCJlbmFibGVBdXRvU2Nyb2xsXCJdLFxuXHRcdFx0bmF2aWdhdGVUb0luc3RhbmNlOiBhY3Rpb25bXCJuYXZpZ2F0ZVRvSW5zdGFuY2VcIl1cblx0XHR9O1xuXHRcdHJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXMoYWZ0ZXJFeGVjdXRpb24pO1xuXHRcdGFjdGlvbnNba2V5XSA9IHtcblx0XHRcdC4uLmFjdGlvbnNba2V5XSxcblx0XHRcdGFmdGVyRXhlY3V0aW9uOiBPYmplY3QuZW50cmllcyhhZnRlckV4ZWN1dGlvbikubGVuZ3RoID8gYWZ0ZXJFeGVjdXRpb24gOiB1bmRlZmluZWQsXG5cdFx0XHRkZWZhdWx0VmFsdWVzRnVuY3Rpb246IGFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb25cblx0XHR9O1xuXHR9XG5cblx0dGFibGVBUEkuYWN0aW9ucz8uZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG5cdFx0aWYgKGFjdGlvbi5pc0E8QWN0aW9uPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uXCIpIHx8IGFjdGlvbi5pc0E8QWN0aW9uT3ZlcnJpZGU+KFwic2FwLmZlLm1hY3Jvcy50YWJsZS5BY3Rpb25PdmVycmlkZVwiKSkge1xuXHRcdFx0Ly8gQWN0aW9uIG9yIEFjdGlvbk92ZXJyaWRlXG5cdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3QoYWN0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYWN0aW9uc1NldHRpbmdzID0gZXh0cmFNYW5pZmVzdFNldHRpbmdzLmFjdGlvbnMhO1xuXHRcdFx0Y29uc3Qga2V5ID0gYWN0aW9uLmtleTtcblx0XHRcdGFjdGlvbnNTZXR0aW5nc1trZXldID0ge1xuXHRcdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRcdHBsYWNlbWVudDogKGFjdGlvbi5wbGFjZW1lbnQgPz8gXCJBZnRlclwiKSBhcyBQbGFjZW1lbnQsXG5cdFx0XHRcdFx0YW5jaG9yOiBhY3Rpb24uYW5jaG9yXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1lbnU6IGFjdGlvbi5hY3Rpb25zLm1hcCgoc3ViQWN0aW9uKSA9PiBzdWJBY3Rpb24ua2V5KVxuXHRcdFx0fTtcblx0XHRcdGlmIChhY3Rpb24uaXNBPEFjdGlvbkdyb3VwPihcInNhcC5mZS5tYWNyb3MudGFibGUuQWN0aW9uR3JvdXBcIikpIHtcblx0XHRcdFx0YWN0aW9uc1NldHRpbmdzW2tleV0gPSB7XG5cdFx0XHRcdFx0Li4uYWN0aW9uc1NldHRpbmdzW2tleV0sXG5cdFx0XHRcdFx0dGV4dDogYWN0aW9uLnRleHQsXG5cdFx0XHRcdFx0ZGVmYXVsdEFjdGlvbjogYWN0aW9uLmRlZmF1bHRBY3Rpb24sXG5cdFx0XHRcdFx0X19ub1dyYXA6IHRydWVcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGFjdGlvbi5hY3Rpb25zLmZvckVhY2goKHN1YkFjdGlvbikgPT4ge1xuXHRcdFx0XHRhZGRBY3Rpb25Ub0V4dHJhTWFuaWZlc3Qoc3ViQWN0aW9uKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBc0NPLFNBQVNBLHFCQUFxQkEsQ0FBQ0MsUUFBa0IsRUFBc0I7SUFDN0UsTUFBTUMsS0FBSyxHQUFHRCxRQUFRLENBQUNFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLE1BQU1DLFNBQVMsR0FBR0YsS0FBSyxFQUFFRyxZQUFZLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUNILEtBQUssSUFBSSxDQUFDRSxTQUFTLEVBQUU7TUFDekJFLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLGlGQUFpRixDQUFDO01BQzVGLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlGQUFpRixDQUFDO0lB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
@@ -245,7 +245,9 @@ function addSlotActionsToExtraManifest(tableAPI: TableAPI, extraManifestSettings
245
245
  enableOnSelect: action.enableOnSelect,
246
246
  visible: action.visible,
247
247
  enabled: action.enabled,
248
- isAIOperation: action.isAIOperation
248
+ isAIOperation: action.isAIOperation,
249
+ priority: action.priority,
250
+ group: action.group ?? 0 // Default group to 0 if not defined
249
251
  };
250
252
  if (action.isA<Action>("sap.fe.macros.table.Action")) {
251
253
  actions[key] = {