@sapui5/sap.fe.macros 1.141.2 → 1.143.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 (257) 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 +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +47 -36
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +50 -31
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
  14. package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
  15. package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
  16. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
  17. package/src/sap/fe/macros/Field.js +34 -17
  18. package/src/sap/fe/macros/Field.ts +64 -32
  19. package/src/sap/fe/macros/FooterContent.js +7 -3
  20. package/src/sap/fe/macros/FooterContent.tsx +8 -13
  21. package/src/sap/fe/macros/KPITag.js +6 -6
  22. package/src/sap/fe/macros/KPITag.tsx +8 -6
  23. package/src/sap/fe/macros/MacroAPI.js +4 -3
  24. package/src/sap/fe/macros/MacroAPI.ts +3 -3
  25. package/src/sap/fe/macros/MessageButton.js +4 -3
  26. package/src/sap/fe/macros/MessageButton.tsx +7 -3
  27. package/src/sap/fe/macros/MicroChart.js +12 -7
  28. package/src/sap/fe/macros/MicroChart.tsx +9 -3
  29. package/src/sap/fe/macros/MultiValueField.js +22 -36
  30. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  31. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  32. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  33. package/src/sap/fe/macros/Share.js +7 -7
  34. package/src/sap/fe/macros/Share.tsx +9 -6
  35. package/src/sap/fe/macros/Status.js +39 -11
  36. package/src/sap/fe/macros/Status.tsx +25 -5
  37. package/src/sap/fe/macros/ValueHelp.js +5 -2
  38. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  39. package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
  40. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
  41. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  42. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  43. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  44. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  45. package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
  46. package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
  47. package/src/sap/fe/macros/chart/Action.js +25 -2
  48. package/src/sap/fe/macros/chart/Action.ts +13 -0
  49. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  50. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  51. package/src/sap/fe/macros/chart/ChartDelegate.js +29 -8
  52. package/src/sap/fe/macros/chart/ChartDelegate.ts +46 -14
  53. package/src/sap/fe/macros/chart/MdcChartTemplate.js +58 -12
  54. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +75 -13
  55. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  56. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  57. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
  58. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
  59. package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
  60. package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
  61. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  62. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  63. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
  64. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
  65. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  66. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  67. package/src/sap/fe/macros/coreUI/CreateDialog.js +3 -3
  68. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +2 -2
  69. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +40 -12
  70. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -9
  71. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  72. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  73. package/src/sap/fe/macros/field/FieldFormatOptions.js +4 -4
  74. package/src/sap/fe/macros/field/FieldFormatOptions.ts +2 -2
  75. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  76. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  77. package/src/sap/fe/macros/field/FieldRuntime.js +44 -9
  78. package/src/sap/fe/macros/field/FieldRuntime.ts +72 -8
  79. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  80. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  81. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  82. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  83. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  84. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  85. package/src/sap/fe/macros/filter/FilterUtils.js +130 -40
  86. package/src/sap/fe/macros/filter/FilterUtils.ts +167 -45
  87. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  88. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  89. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  90. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  91. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +15 -9
  92. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +36 -17
  93. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +21 -10
  94. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +81 -63
  95. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
  96. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
  97. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  98. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  99. package/src/sap/fe/macros/form/Form.block.js +27 -2
  100. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  101. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  102. package/src/sap/fe/macros/form/FormContainer.block.js +110 -63
  103. package/src/sap/fe/macros/form/FormContainer.block.ts +121 -64
  104. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  105. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  106. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  107. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  108. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  109. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  110. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  111. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  112. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  113. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  114. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  115. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  116. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  117. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  118. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  119. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  120. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  121. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  122. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  123. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  124. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  125. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  126. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  127. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  128. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  129. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  130. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  131. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
  132. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
  133. package/src/sap/fe/macros/library.js +5 -6
  134. package/src/sap/fe/macros/{library.ts → library.tsx} +3 -1
  135. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  136. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  137. package/src/sap/fe/macros/messagebundle.properties +13 -5
  138. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  140. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  143. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  144. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  145. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  146. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  147. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  148. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  149. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +13 -4
  150. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  155. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  158. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  159. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  160. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  162. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  164. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  167. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  168. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  169. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  170. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  171. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  172. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  173. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  174. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  175. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  176. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  177. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  178. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  179. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  180. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  181. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  182. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  183. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  184. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  185. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  186. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  187. package/src/sap/fe/macros/messages/MessageButton.js +21 -12
  188. package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
  189. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
  190. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
  191. package/src/sap/fe/macros/quickView/QuickView.js +5 -4
  192. package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
  193. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  194. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  195. package/src/sap/fe/macros/table/Action.js +21 -5
  196. package/src/sap/fe/macros/table/Action.ts +14 -4
  197. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  198. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  199. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  200. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  201. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  202. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  203. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  204. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  205. package/src/sap/fe/macros/table/Column.js +3 -2
  206. package/src/sap/fe/macros/table/Column.ts +1 -1
  207. package/src/sap/fe/macros/table/MdcTableTemplate.js +96 -18
  208. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +136 -17
  209. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  210. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  211. package/src/sap/fe/macros/table/Table.block.js +74 -30
  212. package/src/sap/fe/macros/table/Table.block.tsx +77 -14
  213. package/src/sap/fe/macros/table/TableAPI.js +175 -132
  214. package/src/sap/fe/macros/table/TableAPI.ts +67 -30
  215. package/src/sap/fe/macros/table/TableDefinition.js +20 -3
  216. package/src/sap/fe/macros/table/TableDefinition.ts +18 -2
  217. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -3
  218. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +12 -9
  219. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  220. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  221. package/src/sap/fe/macros/table/TableRuntime.js +25 -13
  222. package/src/sap/fe/macros/table/TableRuntime.ts +31 -17
  223. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  224. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  225. package/src/sap/fe/macros/table/Utils.js +9 -3
  226. package/src/sap/fe/macros/table/Utils.ts +14 -8
  227. package/src/sap/fe/macros/table/delegates/TableDelegate.js +72 -29
  228. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +114 -123
  229. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
  230. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
  231. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +15 -6
  232. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +14 -5
  233. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  234. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  235. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
  236. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
  237. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +42 -14
  238. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +49 -19
  239. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  240. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  241. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  242. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  243. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
  244. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
  245. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
  246. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
  247. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
  248. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
  249. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  250. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  251. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  252. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  253. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  254. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  255. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  256. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  257. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -1,4 +1,4 @@
1
- import type { PrimitiveType, PropertyPath } from "@sap-ux/vocabularies-types";
1
+ import type { NavigationProperty, PrimitiveType, PropertyPath } from "@sap-ux/vocabularies-types";
2
2
  import type { AggregatedProperty } from "@sap-ux/vocabularies-types/vocabularies/Analytics";
3
3
  import { AnalyticsAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/Analytics";
4
4
  import { CoreAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/Core";
@@ -35,7 +35,7 @@ import { escapeXMLAttributeValue } from "sap/fe/core/buildingBlocks/templating/B
35
35
  import type { NavigationParameters } from "sap/fe/core/controllerextensions/InternalIntentBasedNavigation";
36
36
  import CommandExecution from "sap/fe/core/controls/CommandExecution";
37
37
  import ConverterContext from "sap/fe/core/converters/ConverterContext";
38
- import type { BaseManifestSettings, ControlConfiguration } from "sap/fe/core/converters/ManifestSettings";
38
+ import type { BaseManifestSettings, ControlConfiguration, OverflowGroupsConfiguration } from "sap/fe/core/converters/ManifestSettings";
39
39
  import { TemplateType } from "sap/fe/core/converters/ManifestSettings";
40
40
  import ManifestWrapper from "sap/fe/core/converters/ManifestWrapper";
41
41
  import { getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
@@ -78,11 +78,14 @@ import OverflowToolbarLayoutData from "sap/m/OverflowToolbarLayoutData";
78
78
  import type { SegmentedButton$SelectionChangeEvent } from "sap/m/SegmentedButton";
79
79
  import SegmentedButton from "sap/m/SegmentedButton";
80
80
  import SegmentedButtonItem from "sap/m/SegmentedButtonItem";
81
+ import ToolbarSeparator from "sap/m/ToolbarSeparator";
81
82
  import type { OverflowToolbarPriority } from "sap/m/library";
82
83
  import Device from "sap/ui/Device";
84
+ import type UI5Event from "sap/ui/base/Event";
83
85
  import type { CommandExecution$ExecuteEvent } from "sap/ui/core/CommandExecution";
84
86
  import CustomData from "sap/ui/core/CustomData";
85
87
  import Element from "sap/ui/core/Element";
88
+ import InvisibleText from "sap/ui/core/InvisibleText";
86
89
  import { Dock } from "sap/ui/core/Popup";
87
90
  import type { VariantManagement$SaveEvent, VariantManagement$SelectEvent } from "sap/ui/fl/variants/VariantManagement";
88
91
  import VariantManagement from "sap/ui/fl/variants/VariantManagement";
@@ -119,7 +122,7 @@ type ChartDelegate = {
119
122
  };
120
123
  export type ActionOrActionGroup = Record<string, Action | ExtendedActionGroup>;
121
124
  export type CustomAndAction = CustomAction & (Action | ActionGroup);
122
- type CustomToolbarMenuAction = {
125
+ export type CustomToolbarMenuAction = {
123
126
  id: string;
124
127
  text: string | undefined;
125
128
  visible: string | undefined;
@@ -130,6 +133,7 @@ type CustomToolbarMenuAction = {
130
133
  actions?: CustomAction;
131
134
  priority?: OverflowToolbarPriority;
132
135
  group?: number;
136
+ overflowGroup?: number;
133
137
  };
134
138
 
135
139
  enum personalizationValues {
@@ -207,6 +211,8 @@ type ActionProperties = {
207
211
  enabled: boolean;
208
212
  position?: object;
209
213
  menu?: string[];
214
+ group?: number;
215
+ overflowGroup?: number;
210
216
  };
211
217
 
212
218
  type ToolbarAction = MenuItem | ActionToolbarAction | undefined;
@@ -258,6 +264,7 @@ function getContentId(macroId: string): string {
258
264
  function getExtraParams(chartBlock: ChartBlock, visualizationPath: string | undefined): Record<string, object> {
259
265
  const extraParams: Record<string, object> = {};
260
266
  const customActions: Record<string, object> = {};
267
+ const actionOverflowGroups: OverflowGroupsConfiguration = {};
261
268
 
262
269
  if (chartBlock.actions) {
263
270
  Object.values(chartBlock.actions)?.forEach((action: Action | ActionGroup) => {
@@ -272,7 +279,9 @@ function getExtraParams(chartBlock: ChartBlock, visualizationPath: string | unde
272
279
  placement: action.placement,
273
280
  anchor: action.anchor
274
281
  },
275
- action.actions.map((_, index) => action.key + "_Menu_" + index)
282
+ action.actions.map((_, index) => action.key + "_Menu_" + index),
283
+ action.group,
284
+ action.overflowGroup
276
285
  );
277
286
 
278
287
  action.actions?.forEach((act: Action, index: number) => {
@@ -295,14 +304,23 @@ function getExtraParams(chartBlock: ChartBlock, visualizationPath: string | unde
295
304
  {
296
305
  placement: action.placement,
297
306
  anchor: action.anchor
298
- }
307
+ },
308
+ undefined,
309
+ action.group,
310
+ action.overflowGroup
299
311
  );
300
312
  }
301
313
  });
302
314
  }
315
+ if (chartBlock.actionOverflowGroups) {
316
+ Object.values(chartBlock.actionOverflowGroups)?.forEach((overflowGroup) => {
317
+ actionOverflowGroups[overflowGroup.overflowGroup.toString()] = { showSeparator: overflowGroup.showSeparator ?? false };
318
+ });
319
+ }
303
320
  if (visualizationPath && chartBlock.actions) {
304
321
  extraParams[visualizationPath] = {
305
- actions: customActions
322
+ actions: customActions,
323
+ overflowGroups: actionOverflowGroups
306
324
  };
307
325
  }
308
326
 
@@ -316,7 +334,9 @@ function getActionProperties(
316
334
  requiresSelection: boolean,
317
335
  enabled: boolean,
318
336
  position?: object,
319
- menu?: string[]
337
+ menu?: string[],
338
+ group?: number,
339
+ overflowGroup?: number
320
340
  ): ActionProperties {
321
341
  const actionProperties: ActionProperties = {
322
342
  key,
@@ -324,7 +344,9 @@ function getActionProperties(
324
344
  __noWrap: true,
325
345
  press,
326
346
  requiresSelection,
327
- enabled
347
+ enabled,
348
+ group,
349
+ overflowGroup
328
350
  };
329
351
 
330
352
  if (position) {
@@ -1064,6 +1086,8 @@ function getActions(chartBlock: ChartBlock): ToolbarAction[] {
1064
1086
  if (action.annotationPath || (action.type === "Menu" && !action.id?.startsWith("CustomAction"))) {
1065
1087
  // Load annotation based actions
1066
1088
  return getAction(action, chartBlock._chartContext, false, chartBlock);
1089
+ } else if (action.type === "Separator") {
1090
+ return getSeparator(action);
1067
1091
  } else if (action.hasOwnProperty("noWrap")) {
1068
1092
  // Load XML or manifest based actions / action groups
1069
1093
  return getCustomActions(action as CustomAndAction, chartBlock._chartContext, chartBlock);
@@ -1181,8 +1205,9 @@ function getActionToolbarMenuAction(
1181
1205
  useDefaultActionOnly={props.useDefaultActionOnly}
1182
1206
  buttonMode={props.buttonMode}
1183
1207
  menuPosition={Dock.BeginBottom}
1184
- defaultAction={"props.defaultAction" as unknown as () => void}
1208
+ defaultAction={props.defaultAction as unknown as (oEvent: UI5Event) => void}
1185
1209
  icon={isAIOperation ? aiIcon : undefined}
1210
+ ariaDescribedBy={isAIOperation ? [`${chartBlock.getId()}--fe::AiAction::AriaText`] : undefined}
1186
1211
  >
1187
1212
  {{
1188
1213
  menu: <Menu>{aMenuItems}</Menu>,
@@ -1213,6 +1238,7 @@ function getAction(action: BaseAction | CustomAction, chartContext: Context, isM
1213
1238
  enabled={action.enabled}
1214
1239
  menuPosition={Dock.BeginBottom}
1215
1240
  icon={action?.isAIOperation === true ? aiIcon : undefined}
1241
+ ariaDescribedBy={action?.isAIOperation === true ? [`${chartBlock.getId()}--fe::AiAction::AriaText`] : undefined}
1216
1242
  >
1217
1243
  {{
1218
1244
  menu: <Menu>{menuItems}</Menu>,
@@ -1225,6 +1251,18 @@ function getAction(action: BaseAction | CustomAction, chartContext: Context, isM
1225
1251
  return undefined;
1226
1252
  }
1227
1253
 
1254
+ function getSeparator(action: BaseAction): ToolbarAction {
1255
+ return (
1256
+ <ActionToolbarAction>
1257
+ <ToolbarSeparator>
1258
+ {{
1259
+ layoutData: <OverflowToolbarLayoutData group={action.group}></OverflowToolbarLayoutData>
1260
+ }}
1261
+ </ToolbarSeparator>
1262
+ </ActionToolbarAction>
1263
+ );
1264
+ }
1265
+
1228
1266
  function getNavigationActions(
1229
1267
  action: BaseAction | CustomAction,
1230
1268
  dataFieldContext: Context,
@@ -1324,7 +1362,8 @@ function getActionToolbarAction(
1324
1362
  controlId: chartBlock._blockId,
1325
1363
  operationAvailableMap: chartOperationAvailableMap,
1326
1364
  model: view.getModel(),
1327
- label: dataField?.Label as string
1365
+ label: dataField?.Label as string,
1366
+ disableStrictHandling: action.disableStrictHandling
1328
1367
  };
1329
1368
  controller.editFlow.invokeAction(dataField?.Action as string, params);
1330
1369
  } else if (action.type === "ForNavigation") {
@@ -1368,6 +1407,7 @@ function buildAction(
1368
1407
  enabled={toolbarAction.enabled}
1369
1408
  visible={toolbarAction.visible}
1370
1409
  icon={action.isAIOperation === true ? aiIcon : undefined}
1410
+ ariaDescribedBy={action?.isAIOperation === true ? [`${chartBlock.getId()}--fe::AiAction::AriaText`] : undefined}
1371
1411
  >
1372
1412
  {{
1373
1413
  layoutData: <OverflowToolbarLayoutData priority={action.priority} group={action.group} />
@@ -1447,7 +1487,8 @@ function getStandardActionPressWithNoCommand(
1447
1487
  controlId: chartBlock?._blockId,
1448
1488
  operationAvailableMap: chartOperationAvailableMap,
1449
1489
  model: view.getModel(),
1450
- label: dataField?.Label as string
1490
+ label: dataField?.Label as string,
1491
+ disableStrictHandling: action.disableStrictHandling
1451
1492
  };
1452
1493
  controller.editFlow.invokeAction(dataField?.Action as string, params);
1453
1494
  } else if (action.type === "ForNavigation") {
@@ -1776,7 +1817,10 @@ function initialise(
1776
1817
  chartDimensionKeyAndRole: chartBlock.chartDefinition?.chartDimensionKeyAndRole,
1777
1818
  chartMeasureKeyAndRole: chartBlock.chartDefinition?.chartMeasureKeyAndRole
1778
1819
  };
1779
- if (chartBlock.chartDefinition.isParameterizedEntitySet) {
1820
+ const navProps = contextObjectPath.navigationProperties as NavigationProperty[];
1821
+ const lastNavProp = navProps[navProps.length - 1];
1822
+ const isContainment = lastNavProp?.containsTarget && contextObjectPath.targetEntitySet === undefined;
1823
+ if ((chartBlock.chartDefinition.isParameterizedEntitySet ?? false) || (isContainment ?? false)) {
1780
1824
  chartBlock._customData.entitySet = chartBlock.chartDefinition.collection.substring(1);
1781
1825
  }
1782
1826
  } else {
@@ -1904,7 +1948,11 @@ export function getMdcChartTemplate(
1904
1948
  >
1905
1949
  {{
1906
1950
  customData: getCustomData(chartBlock),
1907
- dependents: [getDependents(chartBlock, chartBlock._chartContext), getPersistenceProvider(chartBlock)],
1951
+ dependents: [
1952
+ getDependents(chartBlock, chartBlock._chartContext),
1953
+ getPersistenceProvider(chartBlock),
1954
+ getAccAIActionInvisibleText(chartBlock)
1955
+ ],
1908
1956
  items: getItems(chartBlock),
1909
1957
  actions: chartBlock.chartActions ? getToolbarActions(chartBlock) : chartBlock._blockActions,
1910
1958
  variant: createVariantManagement(chartBlock),
@@ -1913,3 +1961,17 @@ export function getMdcChartTemplate(
1913
1961
  </MdcChart>
1914
1962
  );
1915
1963
  }
1964
+
1965
+ /**
1966
+ * This function returns the InvisibleText for the AI Action buttons.
1967
+ * @param chartBlock ChartBlock instance
1968
+ * @returns InvisibleText control
1969
+ */
1970
+ function getAccAIActionInvisibleText(chartBlock: ChartBlock): InvisibleText {
1971
+ const invisibleTextAccAIAction = new InvisibleText({
1972
+ id: `${chartBlock.getId()}--fe::AiAction::AriaText`,
1973
+ text: "{sap.fe.i18n>C_ACCESSIBILITY_AI_ACTION_ARIA_TEXT}"
1974
+ });
1975
+ invisibleTextAccAIAction.toStatic();
1976
+ return invisibleTextAccAIAction;
1977
+ }
@@ -0,0 +1,62 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/macros/controls/BuildingBlockObjectProperty"], function (ClassSupport, BuildingBlockObjectProperty) {
6
+ "use strict";
7
+
8
+ var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
9
+ var _exports = {};
10
+ var property = ClassSupport.property;
11
+ var defineUI5Class = ClassSupport.defineUI5Class;
12
+ function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
13
+ function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
14
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
15
+ function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
16
+ function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
17
+ /**
18
+ * Definition of an overflow group to be used in the chart toolbar
19
+ * @public
20
+ */
21
+ let OverflowGroup = (_dec = defineUI5Class("sap.fe.macros.chart.OverflowGroup"), _dec2 = property({
22
+ type: "int",
23
+ required: true
24
+ }), _dec3 = property({
25
+ type: "boolean"
26
+ }), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlockObjectP) {
27
+ function OverflowGroup() {
28
+ var _this;
29
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
+ args[_key] = arguments[_key];
31
+ }
32
+ _this = _BuildingBlockObjectP.call(this, ...args) || this;
33
+ /**
34
+ * Defines the group of the toolbar separator in the overflow toolbar.
35
+ * @public
36
+ */
37
+ _initializerDefineProperty(_this, "overflowGroup", _descriptor, _this);
38
+ /**
39
+ * Defines if a toolbar separator should be displayed.
40
+ * @public
41
+ */
42
+ _initializerDefineProperty(_this, "showSeparator", _descriptor2, _this);
43
+ return _this;
44
+ }
45
+ _exports = OverflowGroup;
46
+ _inheritsLoose(OverflowGroup, _BuildingBlockObjectP);
47
+ return OverflowGroup;
48
+ }(BuildingBlockObjectProperty), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "overflowGroup", [_dec2], {
49
+ configurable: true,
50
+ enumerable: true,
51
+ writable: true,
52
+ initializer: null
53
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "showSeparator", [_dec3], {
54
+ configurable: true,
55
+ enumerable: true,
56
+ writable: true,
57
+ initializer: null
58
+ }), _class2)) || _class);
59
+ _exports = OverflowGroup;
60
+ return _exports;
61
+ }, false);
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPdmVyZmxvd0dyb3VwIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJyZXF1aXJlZCIsIl9kZWMzIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrT2JqZWN0UCIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwicHJvdG90eXBlIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk92ZXJmbG93R3JvdXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIjtcbi8qKlxuICogRGVmaW5pdGlvbiBvZiBhbiBvdmVyZmxvdyBncm91cCB0byBiZSB1c2VkIGluIHRoZSBjaGFydCB0b29sYmFyXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY2hhcnQuT3ZlcmZsb3dHcm91cFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3ZlcmZsb3dHcm91cCBleHRlbmRzIEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eSB7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBncm91cCBvZiB0aGUgdG9vbGJhciBzZXBhcmF0b3IgaW4gdGhlIG92ZXJmbG93IHRvb2xiYXIuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdG92ZXJmbG93R3JvdXAhOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaWYgYSB0b29sYmFyIHNlcGFyYXRvciBzaG91bGQgYmUgZGlzcGxheWVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRzaG93U2VwYXJhdG9yPzogYm9vbGVhbjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztFQUVBO0FBQ0E7QUFDQTtBQUNBO0VBSEEsSUFLcUJBLGFBQWEsSUFBQUMsSUFBQSxHQURqQ0MsY0FBYyxDQUFDLG1DQUFtQyxDQUFDLEVBQUFDLEtBQUEsR0FNbERDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsS0FBSztJQUFFQyxRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU96Q0gsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBSixJQUFBLENBQUFPLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMscUJBQUE7SUFBQSxTQUFBVixjQUFBO01BQUEsSUFBQVcsS0FBQTtNQUFBLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFDLElBQUEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7UUFBQUYsSUFBQSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtNQUFBO01BQUFOLEtBQUEsR0FBQUQscUJBQUEsQ0FBQVEsSUFBQSxVQUFBSCxJQUFBO01BWDlCO0FBQ0Q7QUFDQTtBQUNBO01BSENJLDBCQUFBLENBQUFSLEtBQUEsbUJBQUFTLFdBQUEsRUFBQVQsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtBQUNBO01BSENRLDBCQUFBLENBQUFSLEtBQUEsbUJBQUFVLFlBQUEsRUFBQVYsS0FBQTtNQUFBLE9BQUFBLEtBQUE7SUFBQTtJQUFBVyxRQUFBLEdBQUF0QixhQUFBO0lBQUF1QixjQUFBLENBQUF2QixhQUFBLEVBQUFVLHFCQUFBO0lBQUEsT0FBQVYsYUFBQTtFQUFBLEVBUjBDd0IsMkJBQTJCLEdBQUFKLFdBQUEsR0FBQUsseUJBQUEsQ0FBQWhCLE9BQUEsQ0FBQWlCLFNBQUEsb0JBQUF2QixLQUFBO0lBQUF3QixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQVQsWUFBQSxHQUFBSSx5QkFBQSxDQUFBaEIsT0FBQSxDQUFBaUIsU0FBQSxvQkFBQW5CLEtBQUE7SUFBQW9CLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBckIsT0FBQSxNQUFBRCxNQUFBO0VBQUFjLFFBQUEsR0FBQXRCLGFBQUE7RUFBQSxPQUFBc0IsUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,22 @@
1
+ import { defineUI5Class, property } from "sap/fe/base/ClassSupport";
2
+ import BuildingBlockObjectProperty from "sap/fe/macros/controls/BuildingBlockObjectProperty";
3
+ /**
4
+ * Definition of an overflow group to be used in the chart toolbar
5
+ * @public
6
+ */
7
+ @defineUI5Class("sap.fe.macros.chart.OverflowGroup")
8
+ export default class OverflowGroup extends BuildingBlockObjectProperty {
9
+ /**
10
+ * Defines the group of the toolbar separator in the overflow toolbar.
11
+ * @public
12
+ */
13
+ @property({ type: "int", required: true })
14
+ overflowGroup!: number;
15
+
16
+ /**
17
+ * Defines if a toolbar separator should be displayed.
18
+ * @public
19
+ */
20
+ @property({ type: "boolean" })
21
+ showSeparator?: boolean;
22
+ }
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx-xml", "sap/ui/core/Element"], function (ClassSupport, jsxXml, UI5Element) {
5
+ sap.ui.define(["sap/fe/base/BuildingBlockBase", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx-xml"], function (BuildingBlockBase, ClassSupport, jsxXml) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _class;
@@ -14,12 +14,12 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx-xml", "s
14
14
  * Base class for building block complex object properties that can be serialized to XML.
15
15
  * @public
16
16
  */
17
- let BuildingBlockObjectProperty = (_dec = defineUI5Class("sap.fe.macros.controls.BuildingBlockObjectProperty"), _dec(_class = /*#__PURE__*/function (_UI5Element) {
17
+ let BuildingBlockObjectProperty = (_dec = defineUI5Class("sap.fe.macros.controls.BuildingBlockObjectProperty"), _dec(_class = /*#__PURE__*/function (_BuildingBlockBase) {
18
18
  function BuildingBlockObjectProperty() {
19
- return _UI5Element.apply(this, arguments) || this;
19
+ return _BuildingBlockBase.apply(this, arguments) || this;
20
20
  }
21
21
  _exports = BuildingBlockObjectProperty;
22
- _inheritsLoose(BuildingBlockObjectProperty, _UI5Element);
22
+ _inheritsLoose(BuildingBlockObjectProperty, _BuildingBlockBase);
23
23
  var _proto = BuildingBlockObjectProperty.prototype;
24
24
  _proto.getPropertyBag = function getPropertyBag() {
25
25
  const settings = {};
@@ -92,13 +92,13 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx-xml", "s
92
92
  if (propertyMetadata?.bindable === false && propertyMetadata.group === "Data") {
93
93
  this[name] = bindingInfo;
94
94
  } else {
95
- _UI5Element.prototype.bindProperty.call(this, name, bindingInfo);
95
+ _BuildingBlockBase.prototype.bindProperty.call(this, name, bindingInfo);
96
96
  }
97
97
  return this;
98
98
  };
99
99
  return BuildingBlockObjectProperty;
100
- }(UI5Element)) || _class);
100
+ }(BuildingBlockBase)) || _class);
101
101
  _exports = BuildingBlockObjectProperty;
102
102
  return _exports;
103
103
  }, false);
104
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfVUk1RWxlbWVudCIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFByb3BlcnR5QmFnIiwic2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwiZ2V0TWV0YWRhdGEiLCJnZXRBbGxQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwicHJvcGVydHlOYW1lIiwicHJvcGVydHkiLCJnZXRQcm9wZXJ0eSIsImFnZ3JlZ2F0aW9uTmFtZSIsImFnZ3JlZ2F0aW9uQ29udGVudCIsImdldEFnZ3JlZ2F0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW5BcnJheSIsIm1hbmFnZWRPYmplY3QiLCJpc0EiLCJwdXNoIiwiZ2V0SWQiLCJzZXJpYWxpemUiLCJvdmVycmlkZU5vZGVOYW1lIiwiZXZlbnRzIiwiZ2V0QWxsRXZlbnRzIiwiY2hpbGRyZW4iLCJldmVudE5hbWUiLCJqc3hYbWwiLCJnZXRDbGFzcyIsInVuZGVmaW5lZCIsImJpbmRQcm9wZXJ0eSIsIm5hbWUiLCJiaW5kaW5nSW5mbyIsInByb3BlcnR5TWV0YWRhdGEiLCJiaW5kYWJsZSIsImdyb3VwIiwiY2FsbCIsIlVJNUVsZW1lbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgTm9uQ29udHJvbFByb3BlcnRpZXMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQganN4WG1sIGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3gteG1sXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBidWlsZGluZyBibG9jayBjb21wbGV4IG9iamVjdCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQgdG8gWE1MLlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGV4dGVuZHMgVUk1RWxlbWVudCB7XG5cdGdldFByb3BlcnR5QmFnKCk6IFByb3BlcnRpZXNPZjx0aGlzPiB7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFByb3BlcnRpZXNPZjx0aGlzPiA9IHt9IGFzIFByb3BlcnRpZXNPZjx0aGlzPjtcblx0XHRjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbFByb3BlcnRpZXMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7XG5cdFx0XHRpZiAodHlwZW9mIHByb3BlcnR5ICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0c2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIGtleW9mIFByb3BlcnRpZXNPZjx0aGlzPl0gPSBwcm9wZXJ0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGlvbk5hbWUgaW4gYWdncmVnYXRpb25zKSB7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpKSB7XG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBtYW5hZ2VkT2JqZWN0IG9mIGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRcdGlmIChtYW5hZ2VkT2JqZWN0LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRcdGNoaWxkcmVuQXJyYXkucHVzaChtYW5hZ2VkT2JqZWN0LmdldFByb3BlcnR5QmFnKCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGNoaWxkcmVuQXJyYXk7XG5cdFx0XHR9IGVsc2UgaWYgKGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5nZXRQcm9wZXJ0eUJhZygpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNldHRpbmdzO1xuXHR9XG5cblx0c2VyaWFsaXplKG92ZXJyaWRlTm9kZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IGV2ZW50cyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxFdmVudHMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYgeyBjaGlsZHJlbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSA9IHsgY2hpbGRyZW46IHt9IH07XG5cdFx0Zm9yIChjb25zdCBldmVudE5hbWUgaW4gZXZlbnRzKSB7XG5cdFx0XHRzZXR0aW5nc1tldmVudE5hbWVdID0gYFRISVMuX2ZpcmVFdmVudCgkZXZlbnQsICRjb250cm9sbGVyLCAnJHtldmVudE5hbWV9JylgO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKTtcblx0XHRcdGlmICh0eXBlb2YgcHJvcGVydHkgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRzZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gcHJvcGVydHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoY29uc3QgYWdncmVnYXRpb25OYW1lIGluIGFnZ3JlZ2F0aW9ucykge1xuXHRcdFx0Y29uc3QgYWdncmVnYXRpb25Db250ZW50ID0gdGhpcy5nZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUpO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoYWdncmVnYXRpb25Db250ZW50KSkge1xuXHRcdFx0XHRjb25zdCBjaGlsZHJlbkFycmF5ID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgbWFuYWdlZE9iamVjdCBvZiBhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0XHRpZiAobWFuYWdlZE9iamVjdC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0XHRjaGlsZHJlbkFycmF5LnB1c2gobWFuYWdlZE9iamVjdC5zZXJpYWxpemUoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNldHRpbmdzLmNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZHJlbkFycmF5O1xuXHRcdFx0fSBlbHNlIGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0aW9uQ29udGVudC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0c2V0dGluZ3MuY2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5zZXJpYWxpemUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGpzeFhtbDxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFxuXHRcdFx0dGhpcy5nZXRNZXRhZGF0YSgpLmdldENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgQ29udHJvbCxcblx0XHRcdHNldHRpbmdzIGFzIE5vbkNvbnRyb2xQcm9wZXJ0aWVzPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4gJiB7XG5cdFx0XHRcdGtleT86IHN0cmluZztcblx0XHRcdFx0Y2hpbGRyZW4/OiBVSTVFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5Pjtcblx0XHRcdH0sXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHR7fSxcblx0XHRcdG92ZXJyaWRlTm9kZU5hbWVcblx0XHQpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYmluZFByb3BlcnR5KG5hbWU6IHN0cmluZywgYmluZGluZ0luZm86IFByb3BlcnR5QmluZGluZ0luZm8pOiB0aGlzIHtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFkYXRhID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnR5KG5hbWUpO1xuXHRcdGlmIChwcm9wZXJ0eU1ldGFkYXRhPy5iaW5kYWJsZSA9PT0gZmFsc2UgJiYgcHJvcGVydHlNZXRhZGF0YS5ncm91cCA9PT0gXCJEYXRhXCIpIHtcblx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtuYW1lXSA9IGJpbmRpbmdJbmZvO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5iaW5kUHJvcGVydHkobmFtZSwgYmluZGluZ0luZm8pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUFRQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQSwyQkFBMkIsSUFBQUMsSUFBQSxHQUQvQ0MsY0FBYyxDQUFDLG9EQUFvRCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSwwQkFBQUMsV0FBQTtJQUFBLFNBQUFKLDRCQUFBO01B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
104
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRQcm9wZXJ0eUJhZyIsInNldHRpbmdzIiwicHJvcGVydGllcyIsImdldE1ldGFkYXRhIiwiZ2V0QWxsUHJvcGVydGllcyIsImFnZ3JlZ2F0aW9ucyIsImdldEFsbEFnZ3JlZ2F0aW9ucyIsInByb3BlcnR5TmFtZSIsInByb3BlcnR5IiwiZ2V0UHJvcGVydHkiLCJhZ2dyZWdhdGlvbk5hbWUiLCJhZ2dyZWdhdGlvbkNvbnRlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkcmVuQXJyYXkiLCJtYW5hZ2VkT2JqZWN0IiwiaXNBIiwicHVzaCIsImdldElkIiwic2VyaWFsaXplIiwib3ZlcnJpZGVOb2RlTmFtZSIsImV2ZW50cyIsImdldEFsbEV2ZW50cyIsImNoaWxkcmVuIiwiZXZlbnROYW1lIiwianN4WG1sIiwiZ2V0Q2xhc3MiLCJ1bmRlZmluZWQiLCJiaW5kUHJvcGVydHkiLCJuYW1lIiwiYmluZGluZ0luZm8iLCJwcm9wZXJ0eU1ldGFkYXRhIiwiYmluZGFibGUiLCJncm91cCIsImNhbGwiLCJCdWlsZGluZ0Jsb2NrQmFzZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRyb2xQcm9wZXJ0aWVzLCBOb25Db250cm9sUHJvcGVydGllcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBqc3hYbWwgZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeC14bWxcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYnVpbGRpbmcgYmxvY2sgY29tcGxleCBvYmplY3QgcHJvcGVydGllcyB0aGF0IGNhbiBiZSBzZXJpYWxpemVkIHRvIFhNTC5cbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eSBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlIHtcblx0Z2V0UHJvcGVydHlCYWcoKTogUHJvcGVydGllc09mPHRoaXM+IHtcblx0XHRjb25zdCBzZXR0aW5nczogUHJvcGVydGllc09mPHRoaXM+ID0ge30gYXMgUHJvcGVydGllc09mPHRoaXM+O1xuXHRcdGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKTtcblx0XHRcdGlmICh0eXBlb2YgcHJvcGVydHkgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRzZXR0aW5nc1twcm9wZXJ0eU5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IHByb3BlcnR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRmb3IgKGNvbnN0IGFnZ3JlZ2F0aW9uTmFtZSBpbiBhZ2dyZWdhdGlvbnMpIHtcblx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uQ29udGVudCA9IHRoaXMuZ2V0QWdncmVnYXRpb24oYWdncmVnYXRpb25OYW1lKTtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGFnZ3JlZ2F0aW9uQ29udGVudCkpIHtcblx0XHRcdFx0Y29uc3QgY2hpbGRyZW5BcnJheSA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IG1hbmFnZWRPYmplY3Qgb2YgYWdncmVnYXRpb25Db250ZW50KSB7XG5cdFx0XHRcdFx0aWYgKG1hbmFnZWRPYmplY3QuaXNBPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKSkge1xuXHRcdFx0XHRcdFx0Y2hpbGRyZW5BcnJheS5wdXNoKG1hbmFnZWRPYmplY3QuZ2V0UHJvcGVydHlCYWcoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gY2hpbGRyZW5BcnJheTtcblx0XHRcdH0gZWxzZSBpZiAoYWdncmVnYXRpb25Db250ZW50KSB7XG5cdFx0XHRcdGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQuaXNBPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKSkge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gYWdncmVnYXRpb25Db250ZW50LmdldFByb3BlcnR5QmFnKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2V0dGluZ3NbYWdncmVnYXRpb25OYW1lIGFzIGtleW9mIFByb3BlcnRpZXNPZjx0aGlzPl0gPSBhZ2dyZWdhdGlvbkNvbnRlbnQuZ2V0SWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2V0dGluZ3M7XG5cdH1cblxuXHRzZXJpYWxpemUob3ZlcnJpZGVOb2RlTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxQcm9wZXJ0aWVzKCk7XG5cdFx0Y29uc3QgZXZlbnRzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbEV2ZW50cygpO1xuXHRcdGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0XHRjb25zdCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7IGNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9ID0geyBjaGlsZHJlbjoge30gfTtcblx0XHRmb3IgKGNvbnN0IGV2ZW50TmFtZSBpbiBldmVudHMpIHtcblx0XHRcdHNldHRpbmdzW2V2ZW50TmFtZV0gPSBgVEhJUy5fZmlyZUV2ZW50KCRldmVudCwgJGNvbnRyb2xsZXIsICcke2V2ZW50TmFtZX0nKWA7XG5cdFx0fVxuXHRcdGZvciAoY29uc3QgcHJvcGVydHlOYW1lIGluIHByb3BlcnRpZXMpIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5nZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpO1xuXHRcdFx0aWYgKHR5cGVvZiBwcm9wZXJ0eSAhPT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRcdHNldHRpbmdzW3Byb3BlcnR5TmFtZV0gPSBwcm9wZXJ0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGlvbk5hbWUgaW4gYWdncmVnYXRpb25zKSB7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpKSB7XG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBtYW5hZ2VkT2JqZWN0IG9mIGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRcdGlmIChtYW5hZ2VkT2JqZWN0LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRcdGNoaWxkcmVuQXJyYXkucHVzaChtYW5hZ2VkT2JqZWN0LnNlcmlhbGl6ZSgpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c2V0dGluZ3MuY2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9IGNoaWxkcmVuQXJyYXk7XG5cdFx0XHR9IGVsc2UgaWYgKGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRzZXR0aW5ncy5jaGlsZHJlblthZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25Db250ZW50LnNlcmlhbGl6ZSgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZV0gPSBhZ2dyZWdhdGlvbkNvbnRlbnQuZ2V0SWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4ganN4WG1sPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4oXG5cdFx0XHR0aGlzLmdldE1ldGFkYXRhKCkuZ2V0Q2xhc3MoKSBhcyB1bmtub3duIGFzIHR5cGVvZiBDb250cm9sLFxuXHRcdFx0c2V0dGluZ3MgYXMgTm9uQ29udHJvbFByb3BlcnRpZXM8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PiAmIHtcblx0XHRcdFx0a2V5Pzogc3RyaW5nO1xuXHRcdFx0XHRjaGlsZHJlbj86IFVJNUVsZW1lbnQgfCBDb250cm9sUHJvcGVydGllczxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+O1xuXHRcdFx0fSxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdHt9LFxuXHRcdFx0b3ZlcnJpZGVOb2RlTmFtZVxuXHRcdCk7XG5cdH1cblxuXHRvdmVycmlkZSBiaW5kUHJvcGVydHkobmFtZTogc3RyaW5nLCBiaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHRoaXMge1xuXHRcdGNvbnN0IHByb3BlcnR5TWV0YWRhdGEgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydHkobmFtZSk7XG5cdFx0aWYgKHByb3BlcnR5TWV0YWRhdGE/LmJpbmRhYmxlID09PSBmYWxzZSAmJiBwcm9wZXJ0eU1ldGFkYXRhLmdyb3VwID09PSBcIkRhdGFcIikge1xuXHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW25hbWVdID0gYmluZGluZ0luZm87XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmJpbmRQcm9wZXJ0eShuYW1lLCBiaW5kaW5nSW5mbyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztFQVNBO0FBQ0E7QUFDQTtBQUNBO0VBSEEsSUFLcUJBLDJCQUEyQixJ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
@@ -1,17 +1,18 @@
1
+ import BuildingBlockBase from "sap/fe/base/BuildingBlockBase";
1
2
  import type { PropertiesOf } from "sap/fe/base/ClassSupport";
2
3
  import { defineUI5Class } from "sap/fe/base/ClassSupport";
3
4
  import type { ControlProperties, NonControlProperties } from "sap/fe/base/jsx-runtime/jsx";
4
5
  import jsxXml from "sap/fe/base/jsx-runtime/jsx-xml";
5
6
  import type { PropertyBindingInfo } from "sap/ui/base/ManagedObject";
6
7
  import type Control from "sap/ui/core/Control";
7
- import UI5Element from "sap/ui/core/Element";
8
+ import type UI5Element from "sap/ui/core/Element";
8
9
 
9
10
  /**
10
11
  * Base class for building block complex object properties that can be serialized to XML.
11
12
  * @public
12
13
  */
13
14
  @defineUI5Class("sap.fe.macros.controls.BuildingBlockObjectProperty")
14
- export default class BuildingBlockObjectProperty extends UI5Element {
15
+ export default class BuildingBlockObjectProperty extends BuildingBlockBase {
15
16
  getPropertyBag(): PropertiesOf<this> {
16
17
  const settings: PropertiesOf<this> = {} as PropertiesOf<this>;
17
18
  const properties = this.getMetadata().getAllProperties();
@@ -164,10 +164,16 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/co
164
164
  return view && view.getController();
165
165
  };
166
166
  _proto.getUploadUrl = function getUploadUrl() {
167
- // set upload url as canonical url for NavigationProperties
168
- // this is a workaround as some backends cannot resolve NavigationsProperties for stream types
169
167
  const context = this.getBindingContext();
170
- return context && this.uploadUrl ? this.uploadUrl.replace(context.getPath(), context.getCanonicalPath()) : "";
168
+ if (context && this.uploadUrl) {
169
+ // If the backend did not explicitly set AddressViaNavigationPath, we need to use the canonical path for upload
170
+ if (context.getModel().getMetaModel().getObject("/@com.sap.vocabularies.Common.v1.AddressViaNavigationPath") === true) {
171
+ return this.uploadUrl;
172
+ } else {
173
+ return this.uploadUrl.replace(context.getPath(), context.getCanonicalPath());
174
+ }
175
+ }
176
+ return "";
171
177
  };
172
178
  _proto.setUIBusy = function setUIBusy(busy) {
173
179
  // eslint-disable-next-line @typescript-eslint/no-this-alias
@@ -200,7 +206,7 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/co
200
206
  innerDivMinWidth = "3rem";
201
207
  } else {
202
208
  // Depending on display or edit mode we have to reserve some space for the file upload and delete button (2rem each + 1rem margin)
203
- innerDivMaxWidth = CommonUtils.getIsEditable(fileWrapper) ? "calc(100% - 5rem)" : "100%";
209
+ innerDivMaxWidth = CommonUtils.getIsEditable(fileWrapper) ? "calc(100% - 6rem)" : "100%";
204
210
  innerDivMinWidth = "4.5rem";
205
211
  }
206
212
  renderManager.openStart("div", fileWrapper); // FileWrapper control div
@@ -309,4 +315,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/co
309
315
  }), _class2)) || _class);
310
316
  return FileWrapper;
311
317
  }, false);
312
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWxlV3JhcHBlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9GaWVsZFdyYXBwZXIiLCJpZCIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfYnVzeSIsImF2YXRhckNhY2hlQnVzdGluZ0luaXRpYWxpemVkIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIiwib0VsZW1lbnQiLCJtQXJpYVByb3BzIiwib25CZWZvcmVSZW5kZXJpbmciLCJfc2V0QXJpYUxhYmVsbGVkQnkiLCJfc2V0QXJpYVJlcXVpcmVkIiwiX2FkZFNpZGVFZmZlY3RzIiwiX3JlZnJlc2hBdmF0YXIiLCJsaW5rIiwib1BhcmVudCIsImdldFBhcmVudCIsImxhYmVsbGVkYnkiLCJ1bmRlZmluZWQiLCJhZGRBcmlhTGFiZWxsZWRCeSIsImdldElkRm9yTGFiZWwiLCJvQ29udGVudCIsInRleHQiLCJhdmF0YXIiLCJ2aWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiZ2V0Q29udHJvbGxlciIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJhdmF0YXJCaW5kaW5nIiwiZ2V0QmluZGluZ0luZm8iLCJiaW5kaW5nIiwiYXR0YWNoRXZlbnQiLCJyZWZyZXNoQXZhdGFyQ2FjaGVCdXN0aW5nIiwidmlld0RhdGFGdWxsQ29udGV4dFBhdGgiLCJnZXRWaWV3RGF0YSIsImZ1bGxDb250ZXh0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YUNvbnRleHQiLCJnZXRDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJwcm9wZXJ0eVBhdGgiLCJkYXRhVmlld01vZGVsUGF0aCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsInN0cmVhbVByb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwicmVxdWlyZWRFeHByZXNzaW9uIiwiVUlGb3JtYXR0ZXJzIiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJtZXRhTW9kZWxQYXRoIiwiZ2V0TWV0YVBhdGgiLCJ2aWV3Q29udGV4dCIsInNvdXJjZVBhdGgiLCJkYXRhIiwiZmllbGRQYXRoIiwicmVwbGFjZSIsInBhdGgiLCJwdXNoIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJmaWxlbmFtZSIsIm1lZGlhVHlwZSIsIl9nZXRTaWRlRWZmZWN0Q29udHJvbGxlciIsImFkZENvbnRyb2xTaWRlRWZmZWN0cyIsInRhcmdldEVudGl0eVR5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJzb3VyY2VQcm9wZXJ0aWVzIiwidGFyZ2V0RW50aXRpZXMiLCJzb3VyY2VDb250cm9sSWQiLCJnZXRJZCIsImNvbnRyb2xsZXIiLCJfZ2V0Vmlld0NvbnRyb2xsZXIiLCJfc2lkZUVmZmVjdHMiLCJnZXRVcGxvYWRVcmwiLCJjb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJ1cGxvYWRVcmwiLCJnZXRQYXRoIiwiZ2V0Q2Fub25pY2FsUGF0aCIsInNldFVJQnVzeSIsImJ1c3kiLCJ0aGF0IiwiYnVzeURpYWxvZyIsIkJ1c3lEaWFsb2ciLCJnZXRSZXNvdXJjZU1vZGVsIiwiZ2V0VGV4dCIsInNob3dDYW5jZWxCdXR0b24iLCJzZXRUaW1lb3V0Iiwib3BlbiIsImNsb3NlIiwiZ2V0VUlCdXN5IiwicmVuZGVyIiwicmVuZGVyTWFuYWdlciIsImZpbGVXcmFwcGVyIiwiaW5uZXJEaXZNYXhXaWR0aCIsImlubmVyRGl2TWluV2lkdGgiLCJnZXRJc0VkaXRhYmxlIiwib3BlblN0YXJ0Iiwic3R5bGUiLCJ3aWR0aCIsIm9wZW5FbmQiLCJyZW5kZXJDb250cm9sIiwiaWNvbiIsImZpbGVVcGxvYWRlciIsImRlbGV0ZUJ1dHRvbiIsImRlc3Ryb3kiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwib1NpZGVFZmZlY3RzIiwicmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzIiwiRmllbGRXcmFwcGVyIiwiYXBwbHkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbGVXcmFwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgU2lkZUVmZmVjdHNDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNFbnRpdHlUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgQnVzeURpYWxvZyBmcm9tIFwic2FwL20vQnVzeURpYWxvZ1wiO1xuaW1wb3J0IHR5cGUgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCB0eXBlIFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBJY29uIGZyb20gXCJzYXAvdWkvY29yZS9JY29uXCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IFVSSSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgRmlsZVVwbG9hZGVyIGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJcIjtcbmltcG9ydCBGaWVsZFdyYXBwZXIgZnJvbSBcIi4vRmllbGRXcmFwcGVyXCI7XG50eXBlIENvbnRyb2xXaXRoQWNjZXNzaWJpbGl0eSA9IENvbnRyb2wgJiB7IGFkZEFyaWFMYWJlbGxlZEJ5PzogKGlkOiBzdHJpbmcpID0+IHZvaWQgfTtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWxlV3JhcHBlclwiKVxuY2xhc3MgRmlsZVdyYXBwZXIgZXh0ZW5kcyBGaWVsZFdyYXBwZXIge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlVSSVwiIH0pXG5cdHVwbG9hZFVybCE6IFVSSTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHByb3BlcnR5UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbGVuYW1lITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWVkaWFUeXBlITogc3RyaW5nO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uQXZhdGFyXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRhdmF0YXI6IEF2YXRhciB8IHVuZGVmaW5lZDtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkljb25cIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGljb24hOiBJY29uO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uTGlua1wiLCBtdWx0aXBsZTogZmFsc2UgfSlcblx0bGluayE6IExpbms7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAubS5UZXh0XCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHR0ZXh0ITogVGV4dDtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS51bmlmaWVkLkZpbGVVcGxvYWRlclwiLCBtdWx0aXBsZTogZmFsc2UgfSlcblx0ZmlsZVVwbG9hZGVyITogRmlsZVVwbG9hZGVyO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uQnV0dG9uXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRkZWxldGVCdXR0b24hOiBCdXR0b247XG5cblx0cHJpdmF0ZSByZXF1aXJlZEV4cHJlc3Npb24/OiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBfZmlsZVVwbG9hZGVyTWFuZGF0b3J5PzogQ29udHJvbDtcblxuXHRwcml2YXRlIF9idXN5ID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBhdmF0YXJDYWNoZUJ1c3RpbmdJbml0aWFsaXplZCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgYnVzeURpYWxvZz86IEJ1c3lEaWFsb2c7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0aWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCAoUHJvcGVydGllc09mPEZpbGVXcmFwcGVyPiAmICRDb250cm9sU2V0dGluZ3MpLFxuXHRcdHNldHRpbmdzPzogUHJvcGVydGllc09mPEZpbGVXcmFwcGVyPiAmICRDb250cm9sU2V0dGluZ3Ncblx0KSB7XG5cdFx0c3VwZXIoaWQgYXMgc3RyaW5nLCBzZXR0aW5ncyk7XG5cdH1cblxuXHRlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKG9FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Ly8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyBhcmlhLWxhYmVsbGVkYnkgdG8gYWxsIGNoaWxkIGNvbnRyb2xzLCBvbmx5IHVzZSBpdCBvbmNlIGFzIGEgbGFiZWwgb24gdGhlIHdyYXBwZXIgd2l0aCByb2xlIGdyb3VwLlxuXHRcdHJldHVybiBtQXJpYVByb3BzO1xuXHR9XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0dGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoKTtcblx0XHR0aGlzLl9zZXRBcmlhUmVxdWlyZWQoKTtcblx0XHR0aGlzLl9hZGRTaWRlRWZmZWN0cygpO1xuXHRcdHRoaXMuX3JlZnJlc2hBdmF0YXIoKTtcblx0fVxuXG5cdF9zZXRBcmlhTGFiZWxsZWRCeSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5saW5rKSB7XG5cdFx0XHRjb25zdCBvUGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcblx0XHRcdGNvbnN0IG1BcmlhUHJvcHM6IHsgbGFiZWxsZWRieTogdW5kZWZpbmVkIHwgc3RyaW5nIH0gPSB7IGxhYmVsbGVkYnk6IHVuZGVmaW5lZCB9O1xuXG5cdFx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0XHQob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlOiBGdW5jdGlvbiB9KS5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKHRoaXMubGluaywgbUFyaWFQcm9wcyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtQXJpYVByb3BzLmxhYmVsbGVkYnkpIHtcblx0XHRcdFx0KHRoaXMgYXMgQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5KS5hZGRBcmlhTGFiZWxsZWRCeSEobUFyaWFQcm9wcy5sYWJlbGxlZGJ5KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgRE9NTm9kZSBJRCB0byBiZSB1c2VkIGZvciB0aGUgXCJsYWJlbEZvclwiIGF0dHJpYnV0ZS5cblx0ICpcblx0ICogV2UgZm9yd2FyZCB0aGUgY2FsbCBvZiB0aGlzIG1ldGhvZCB0byB0aGUgY29udGVudCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyBJRCB0byBiZSB1c2VkIGZvciB0aGUgPGNvZGU+bGFiZWxGb3I8L2NvZGU+XG5cdCAqL1xuXHRnZXRJZEZvckxhYmVsKCk6IHN0cmluZyB7XG5cdFx0Ly8gV2UgZWl0aGVyIGhhdmUgYSBsaW5rIHRvIGRvd25sb2FkIHRoZSBmaWxlLCBhIHRleHQgaW5kaWNhdGluZyBhbiBlbXB0eSBmaWxlLCBvciBhbiBhdmF0YXIgYW5kIG5vIGxpbmsgb3IgdGV4dFxuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5saW5rIHx8IHRoaXMudGV4dCB8fCB0aGlzLmF2YXRhcjtcblx0XHRyZXR1cm4gKG9Db250ZW50IGFzIENvbnRyb2wpLmdldElkRm9yTGFiZWwoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJZiBpbiB0aGUgY29sbGFib3JhdGl2ZSBkcmFmdCwgc2VuZCBhIHJlcXVlc3QgdG8gcmVsb2FkIHRoZSBmaWxlLlxuXHQgKi9cblx0X3JlZnJlc2hBdmF0YXIoKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyBhcyBDb250cm9sKTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aXZlRHJhZnQgPSB2aWV3LmdldENvbnRyb2xsZXIoKS5jb2xsYWJvcmF0aXZlRHJhZnQ7XG5cdFx0aWYgKGNvbGxhYm9yYXRpdmVEcmFmdC5pc0NvbGxhYm9yYXRpb25FbmFibGVkKCkpIHtcblx0XHRcdGNvbnN0IGF2YXRhckJpbmRpbmcgPSB0aGlzLmF2YXRhcj8uZ2V0QmluZGluZ0luZm8oXCJzcmNcIikuYmluZGluZztcblx0XHRcdGlmIChhdmF0YXJCaW5kaW5nICYmICF0aGlzLmF2YXRhckNhY2hlQnVzdGluZ0luaXRpYWxpemVkKSB7XG5cdFx0XHRcdGF2YXRhckJpbmRpbmcuYXR0YWNoRXZlbnQoXCJjaGFuZ2VcIiwgKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuYXZhdGFyPy5yZWZyZXNoQXZhdGFyQ2FjaGVCdXN0aW5nKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmF2YXRhckNhY2hlQnVzdGluZ0luaXRpYWxpemVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRfc2V0QXJpYVJlcXVpcmVkKCk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMgYXMgQ29udHJvbCksXG5cdFx0XHR2aWV3RGF0YUZ1bGxDb250ZXh0UGF0aCA9IHZpZXcuZ2V0Vmlld0RhdGEoKS5mdWxsQ29udGV4dFBhdGgsXG5cdFx0XHRtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KHZpZXdEYXRhRnVsbENvbnRleHRQYXRoKSxcblx0XHRcdG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLnByb3BlcnR5UGF0aCwgbWV0YUNvbnRleHQpLFxuXHRcdFx0ZGF0YVZpZXdNb2RlbFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFQYXRoQ29udGV4dCwgbWV0YUNvbnRleHQpO1xuXG5cdFx0Y29uc3Qgc3RyZWFtUHJvcGVydHkgPSBkYXRhVmlld01vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdFx0dGhpcy5yZXF1aXJlZEV4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZ2V0UmVxdWlyZWRFeHByZXNzaW9uKFxuXHRcdFx0c3RyZWFtUHJvcGVydHksXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRmYWxzZSxcblx0XHRcdGZhbHNlLFxuXHRcdFx0e30sXG5cdFx0XHRkYXRhVmlld01vZGVsUGF0aFxuXHRcdCkgYXMgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdH1cblxuXHRfYWRkU2lkZUVmZmVjdHMoKTogdm9pZCB7XG5cdFx0Ly8gYWRkIGNvbnRyb2wgU2lkZUVmZmVjdHMgZm9yIHN0cmVhbSBjb250ZW50LCBmaWxlbmFtZSBhbmQgbWVkaWF0eXBlXG5cdFx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXM6IFNpZGVFZmZlY3RzRW50aXR5VHlwZVtdID0gW10sXG5cdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzIGFzIENvbnRyb2wpLFxuXHRcdFx0dmlld0RhdGFGdWxsQ29udGV4dFBhdGggPSB2aWV3LmdldFZpZXdEYXRhKCkuZnVsbENvbnRleHRQYXRoLFxuXHRcdFx0bWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0bWV0YU1vZGVsUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aCh2aWV3RGF0YUZ1bGxDb250ZXh0UGF0aCksXG5cdFx0XHR2aWV3Q29udGV4dCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KHZpZXdEYXRhRnVsbENvbnRleHRQYXRoKSxcblx0XHRcdGRhdGFWaWV3TW9kZWxQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh2aWV3Q29udGV4dCksXG5cdFx0XHRzb3VyY2VQYXRoID0gdGhpcy5kYXRhKFwic291cmNlUGF0aFwiKSBhcyBzdHJpbmcsXG5cdFx0XHRmaWVsZFBhdGggPSBzb3VyY2VQYXRoLnJlcGxhY2UoYCR7bWV0YU1vZGVsUGF0aH1gLCBcIlwiKSxcblx0XHRcdHBhdGggPSBmaWVsZFBhdGgucmVwbGFjZSh0aGlzLnByb3BlcnR5UGF0aCwgXCJcIik7XG5cblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKHsgJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGZpZWxkUGF0aCB9KTtcblx0XHRpZiAodGhpcy5maWxlbmFtZSkge1xuXHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaCh7ICROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBwYXRoICsgdGhpcy5maWxlbmFtZSB9KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMubWVkaWFUeXBlKSB7XG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKHsgJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHBhdGggKyB0aGlzLm1lZGlhVHlwZSB9KTtcblx0XHR9XG5cdFx0dGhpcy5fZ2V0U2lkZUVmZmVjdENvbnRyb2xsZXIoKT8uYWRkQ29udHJvbFNpZGVFZmZlY3RzKGRhdGFWaWV3TW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCB7XG5cdFx0XHRzb3VyY2VQcm9wZXJ0aWVzOiBbZmllbGRQYXRoXSxcblx0XHRcdHRhcmdldEVudGl0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRcdHNvdXJjZUNvbnRyb2xJZDogdGhpcy5nZXRJZCgpXG5cdFx0fSk7XG5cdH1cblxuXHRfZ2V0U2lkZUVmZmVjdENvbnRyb2xsZXIoKTogU2lkZUVmZmVjdHNDb250cm9sbGVyRXh0ZW5zaW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZDtcblx0XHRyZXR1cm4gY29udHJvbGxlciA/IGNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0X2dldFZpZXdDb250cm9sbGVyKCk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzIGFzIENvbnRyb2wpO1xuXHRcdHJldHVybiB2aWV3ICYmIHZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0Z2V0VXBsb2FkVXJsKCk6IHN0cmluZyB7XG5cdFx0Ly8gc2V0IHVwbG9hZCB1cmwgYXMgY2Fub25pY2FsIHVybCBmb3IgTmF2aWdhdGlvblByb3BlcnRpZXNcblx0XHQvLyB0aGlzIGlzIGEgd29ya2Fyb3VuZCBhcyBzb21lIGJhY2tlbmRzIGNhbm5vdCByZXNvbHZlIE5hdmlnYXRpb25zUHJvcGVydGllcyBmb3Igc3RyZWFtIHR5cGVzXG5cdFx0Y29uc3QgY29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdHJldHVybiBjb250ZXh0ICYmIHRoaXMudXBsb2FkVXJsID8gdGhpcy51cGxvYWRVcmwucmVwbGFjZShjb250ZXh0LmdldFBhdGgoKSwgY29udGV4dC5nZXRDYW5vbmljYWxQYXRoKCkpIDogXCJcIjtcblx0fVxuXG5cdHNldFVJQnVzeShidXN5OiBib29sZWFuKTogdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0dGhpcy5fYnVzeSA9IGJ1c3k7XG5cdFx0aWYgKGJ1c3kpIHtcblx0XHRcdGlmICghdGhpcy5idXN5RGlhbG9nKSB7XG5cdFx0XHRcdHRoaXMuYnVzeURpYWxvZyA9IG5ldyBCdXN5RGlhbG9nKHtcblx0XHRcdFx0XHR0ZXh0OiBnZXRSZXNvdXJjZU1vZGVsKHRoaXMpLmdldFRleHQoXCJNX0ZJTEVXUkFQUEVSX0JVU1lfRElBTE9HX1RJVExFXCIpLFxuXHRcdFx0XHRcdHNob3dDYW5jZWxCdXR0b246IGZhbHNlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGlmICh0aGF0Ll9idXN5KSB7XG5cdFx0XHRcdFx0dGhhdC5idXN5RGlhbG9nPy5vcGVuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDEwMDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmJ1c3lEaWFsb2c/LmNsb3NlKGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRnZXRVSUJ1c3koKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2J1c3k7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKHJlbmRlck1hbmFnZXI6IFJlbmRlck1hbmFnZXIsIGZpbGVXcmFwcGVyOiBGaWxlV3JhcHBlcik6IHZvaWQge1xuXHRcdGxldCBpbm5lckRpdk1heFdpZHRoLCBpbm5lckRpdk1pbldpZHRoO1xuXHRcdGlmIChmaWxlV3JhcHBlci5hdmF0YXIpIHtcblx0XHRcdC8vIFRoZSBhdmF0YXIgaGFzIGEgZml4ZWQgd2lkdGggKDNyZW0pIHRoZXJlZm9yZSB0aGUgaW5uZXIgZGl2IGNhbiBoYXZlIGEgbG93ZXIgbWluIHdpZHRoIHRoYW4gaWNvbiBhbmQgbGlua1xuXHRcdFx0aW5uZXJEaXZNYXhXaWR0aCA9IFwiMTAwJVwiO1xuXHRcdFx0aW5uZXJEaXZNaW5XaWR0aCA9IFwiM3JlbVwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBEZXBlbmRpbmcgb24gZGlzcGxheSBvciBlZGl0IG1vZGUgd2UgaGF2ZSB0byByZXNlcnZlIHNvbWUgc3BhY2UgZm9yIHRoZSBmaWxlIHVwbG9hZCBhbmQgZGVsZXRlIGJ1dHRvbiAoMnJlbSBlYWNoICsgMXJlbSBtYXJnaW4pXG5cdFx0XHRpbm5lckRpdk1heFdpZHRoID0gQ29tbW9uVXRpbHMuZ2V0SXNFZGl0YWJsZShmaWxlV3JhcHBlciBhcyB1bmtub3duIGFzIE1hbmFnZWRPYmplY3QpID8gXCJjYWxjKDEwMCUgLSA1cmVtKVwiIDogXCIxMDAlXCI7XG5cdFx0XHRpbm5lckRpdk1pbldpZHRoID0gXCI0LjVyZW1cIjtcblx0XHR9XG5cblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5TdGFydChcImRpdlwiLCBmaWxlV3JhcHBlcik7IC8vIEZpbGVXcmFwcGVyIGNvbnRyb2wgZGl2XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcIndpZHRoXCIsIGZpbGVXcmFwcGVyLndpZHRoKTtcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5FbmQoKTtcblxuXHRcdC8vIE91dGVyIEJveFxuXHRcdHJlbmRlck1hbmFnZXIub3BlblN0YXJ0KFwiZGl2XCIpOyAvLyBkaXYgZm9yIGFsbCBjb250cm9sc1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJkaXNwbGF5XCIsIFwiZmxleFwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwiYm94LXNpemluZ1wiLCBcImJvcmRlci1ib3hcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImp1c3RpZnktY29udGVudFwiLCBcInNwYWNlLWJldHdlZW5cIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImFsaWduLWl0ZW1zXCIsIFwiY2VudGVyXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJmbGV4LXdyYXBcIiwgXCJ3cmFwXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJhbGlnbi1jb250ZW50XCIsIFwic3RyZXRjaFwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwid2lkdGhcIiwgXCIxMDAlXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIub3BlbkVuZCgpO1xuXG5cdFx0Ly8gRGlzcGxheSBNb2RlXG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuU3RhcnQoXCJkaXZcIik7IC8vIGRpdiBmb3IgY29udHJvbHMgc2hvd24gaW4gRGlzcGxheSBtb2RlXG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImRpc3BsYXlcIiwgXCJmbGV4XCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJhbGlnbi1pdGVtc1wiLCBcImNlbnRlclwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwibWF4LXdpZHRoXCIsIGlubmVyRGl2TWF4V2lkdGgpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJtaW4td2lkdGhcIiwgaW5uZXJEaXZNaW5XaWR0aCk7XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuRW5kKCk7XG5cblx0XHRpZiAoZmlsZVdyYXBwZXIuYXZhdGFyKSB7XG5cdFx0XHRyZW5kZXJNYW5hZ2VyLnJlbmRlckNvbnRyb2woZmlsZVdyYXBwZXIuYXZhdGFyKTsgLy8gcmVuZGVyIHRoZSBBdmF0YXIgQ29udHJvbFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW5kZXJNYW5hZ2VyLnJlbmRlckNvbnRyb2woZmlsZVdyYXBwZXIuaWNvbik7IC8vIHJlbmRlciB0aGUgSWNvbiBDb250cm9sXG5cdFx0XHRyZW5kZXJNYW5hZ2VyLnJlbmRlckNvbnRyb2woZmlsZVdyYXBwZXIubGluayk7IC8vIHJlbmRlciB0aGUgTGluayBDb250cm9sXG5cdFx0XHRyZW5kZXJNYW5hZ2VyLnJlbmRlckNvbnRyb2woZmlsZVdyYXBwZXIudGV4dCk7IC8vIHJlbmRlciB0aGUgVGV4dCBDb250cm9sIGZvciBlbXB0eSBmaWxlIGluZGljYXRpb25cblx0XHR9XG5cdFx0cmVuZGVyTWFuYWdlci5jbG9zZShcImRpdlwiKTsgLy8gZGl2IGZvciBjb250cm9scyBzaG93biBpbiBEaXNwbGF5IG1vZGVcblxuXHRcdC8vIEFkZGl0aW9uYWwgY29udGVudCBmb3IgRWRpdCBNb2RlXG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuU3RhcnQoXCJkaXZcIik7IC8vIGRpdiBmb3IgY29udHJvbHMgc2hvd24gaW4gRGlzcGxheSArIEVkaXQgbW9kZVxuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJkaXNwbGF5XCIsIFwiZmxleFwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwiYWxpZ24taXRlbXNcIiwgXCJjZW50ZXJcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuRW5kKCk7XG5cdFx0cmVuZGVyTWFuYWdlci5yZW5kZXJDb250cm9sKGZpbGVXcmFwcGVyLmZpbGVVcGxvYWRlcik7IC8vIHJlbmRlciB0aGUgRmlsZVVwbG9hZGVyIENvbnRyb2xcblx0XHRyZW5kZXJNYW5hZ2VyLnJlbmRlckNvbnRyb2woZmlsZVdyYXBwZXIuZGVsZXRlQnV0dG9uKTsgLy8gcmVuZGVyIHRoZSBEZWxldGUgQnV0dG9uIENvbnRyb2xcblx0XHRyZW5kZXJNYW5hZ2VyLmNsb3NlKFwiZGl2XCIpOyAvLyBkaXYgZm9yIGNvbnRyb2xzIHNob3duIGluIERpc3BsYXkgKyBFZGl0IG1vZGVcblxuXHRcdHJlbmRlck1hbmFnZXIuY2xvc2UoXCJkaXZcIik7IC8vIGRpdiBmb3IgYWxsIGNvbnRyb2xzXG5cblx0XHRyZW5kZXJNYW5hZ2VyLmNsb3NlKFwiZGl2XCIpOyAvLyBlbmQgb2YgdGhlIGNvbXBsZXRlIENvbnRyb2xcblx0fVxuXG5cdGRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IG9TaWRlRWZmZWN0cyA9IHRoaXMuX2dldFNpZGVFZmZlY3RDb250cm9sbGVyKCk7XG5cdFx0aWYgKG9TaWRlRWZmZWN0cykge1xuXHRcdFx0b1NpZGVFZmZlY3RzLnJlbW92ZUNvbnRyb2xTaWRlRWZmZWN0cyh0aGlzKTtcblx0XHR9XG5cdFx0ZGVsZXRlIHRoaXMuYnVzeURpYWxvZztcblx0XHRGaWVsZFdyYXBwZXIucHJvdG90eXBlLmRlc3Ryb3kuYXBwbHkodGhpcywgW2JTdXBwcmVzc0ludmFsaWRhdGVdKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBGaWxlV3JhcHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7TUE0Qk1BLFdBQVcsSUFBQUMsSUFBQSxHQURoQkMsY0FBYyxDQUFDLG9DQUFvQyxDQUFDLEVBQUFDLEtBQUEsR0FFbkRDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBa0IsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHckNGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUc1QkgsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBRyxLQUFBLEdBRzVCSixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FHNUJDLFdBQVcsQ0FBQztJQUFFTCxJ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QUFBaEksWUFBQSxHQUFBNEgseUJBQUEsQ0FBQXBJLE9BQUEsQ0FBQXFCLFNBQUEsbUJBQUFqQyxLQUFBO0lBQUFpSixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9ILFlBQUEsR0FBQTJILHlCQUFBLENBQUFwSSxPQUFBLENBQUFxQixTQUFBLGVBQUFoQyxLQUFBO0lBQUFnSixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTlILFlBQUEsR0FBQTBILHlCQUFBLENBQUFwSSxPQUFBLENBQUFxQixTQUFBLGdCQUFBL0IsS0FBQTtJQUFBK0ksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE3SCxZQUFBLEdBQUF5SCx5QkFBQSxDQUFBcEksT0FBQSxDQUFBcUIsU0FBQSxhQUFBOUIsS0FBQTtJQUFBOEksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE1SCxZQUFBLEdBQUF3SCx5QkFBQSxDQUFBcEksT0FBQSxDQUFBcUIsU0FBQSxXQUFBM0IsS0FBQTtJQUFBMkksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEzSCxZQUFBLEdBQUF1SCx5QkFBQSxDQUFBcEksT0FBQSxDQUFBcUIsU0FBQSxXQUFBMUIsS0FBQTtJQUFBMEksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUExSCxZQUFBLEdBQUFzSCx5QkFBQSxDQUFBcEksT0FBQSxDQUFBcUIsU0FBQSxXQUFBekIsS0FBQTtJQUFBeUksWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF6SCxZQUFBLEdBQUFxSCx5QkFBQSxDQUFBcEksT0FBQSxDQUFBcUIsU0FBQSxtQkFBQXhCLE1BQUE7SUFBQXdJLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBeEgsYUFBQSxHQUFBb0gseUJBQUEsQ0FBQXBJLE9BQUEsQ0FBQXFCLFNBQUEsbUJBQUF2QixNQUFBO0lBQUF1SSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXhJLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9Bb1F2QmpCLFdBQVc7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
318
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWxlV3JhcHBlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9GaWVsZFdyYXBwZXIiLCJpZCIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfYnVzeSIsImF2YXRhckNhY2hlQnVzdGluZ0luaXRpYWxpemVkIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIiwib0VsZW1lbnQiLCJtQXJpYVByb3BzIiwib25CZWZvcmVSZW5kZXJpbmciLCJfc2V0QXJpYUxhYmVsbGVkQnkiLCJfc2V0QXJpYVJlcXVpcmVkIiwiX2FkZFNpZGVFZmZlY3RzIiwiX3JlZnJlc2hBdmF0YXIiLCJsaW5rIiwib1BhcmVudCIsImdldFBhcmVudCIsImxhYmVsbGVkYnkiLCJ1bmRlZmluZWQiLCJhZGRBcmlhTGFiZWxsZWRCeSIsImdldElkRm9yTGFiZWwiLCJvQ29udGVudCIsInRleHQiLCJhdmF0YXIiLCJ2aWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiZ2V0Q29udHJvbGxlciIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJhdmF0YXJCaW5kaW5nIiwiZ2V0QmluZGluZ0luZm8iLCJiaW5kaW5nIiwiYXR0YWNoRXZlbnQiLCJyZWZyZXNoQXZhdGFyQ2FjaGVCdXN0aW5nIiwidmlld0RhdGFGdWxsQ29udGV4dFBhdGgiLCJnZXRWaWV3RGF0YSIsImZ1bGxDb250ZXh0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YUNvbnRleHQiLCJnZXRDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJwcm9wZXJ0eVBhdGgiLCJkYXRhVmlld01vZGVsUGF0aCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsInN0cmVhbVByb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwicmVxdWlyZWRFeHByZXNzaW9uIiwiVUlGb3JtYXR0ZXJzIiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJtZXRhTW9kZWxQYXRoIiwiZ2V0TWV0YVBhdGgiLCJ2aWV3Q29udGV4dCIsInNvdXJjZVBhdGgiLCJkYXRhIiwiZmllbGRQYXRoIiwicmVwbGFjZSIsInBhdGgiLCJwdXNoIiwiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJmaWxlbmFtZSIsIm1lZGlhVHlwZSIsIl9nZXRTaWRlRWZmZWN0Q29udHJvbGxlciIsImFkZENvbnRyb2xTaWRlRWZmZWN0cyIsInRhcmdldEVudGl0eVR5cGUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJzb3VyY2VQcm9wZXJ0aWVzIiwidGFyZ2V0RW50aXRpZXMiLCJzb3VyY2VDb250cm9sSWQiLCJnZXRJZCIsImNvbnRyb2xsZXIiLCJfZ2V0Vmlld0NvbnRyb2xsZXIiLCJfc2lkZUVmZmVjdHMiLCJnZXRVcGxvYWRVcmwiLCJjb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJ1cGxvYWRVcmwiLCJnZXRPYmplY3QiLCJnZXRQYXRoIiwiZ2V0Q2Fub25pY2FsUGF0aCIsInNldFVJQnVzeSIsImJ1c3kiLCJ0aGF0IiwiYnVzeURpYWxvZyIsIkJ1c3lEaWFsb2ciLCJnZXRSZXNvdXJjZU1vZGVsIiwiZ2V0VGV4dCIsInNob3dDYW5jZWxCdXR0b24iLCJzZXRUaW1lb3V0Iiwib3BlbiIsImNsb3NlIiwiZ2V0VUlCdXN5IiwicmVuZGVyIiwicmVuZGVyTWFuYWdlciIsImZpbGVXcmFwcGVyIiwiaW5uZXJEaXZNYXhXaWR0aCIsImlubmVyRGl2TWluV2lkdGgiLCJnZXRJc0VkaXRhYmxlIiwib3BlblN0YXJ0Iiwic3R5bGUiLCJ3aWR0aCIsIm9wZW5FbmQiLCJyZW5kZXJDb250cm9sIiwiaWNvbiIsImZpbGVVcGxvYWRlciIsImRlbGV0ZUJ1dHRvbiIsImRlc3Ryb3kiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwib1NpZGVFZmZlY3RzIiwicmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzIiwiRmllbGRXcmFwcGVyIiwiYXBwbHkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbGVXcmFwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgU2lkZUVmZmVjdHNDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNFbnRpdHlUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgQnVzeURpYWxvZyBmcm9tIFwic2FwL20vQnVzeURpYWxvZ1wiO1xuaW1wb3J0IHR5cGUgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCB0eXBlIFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBJY29uIGZyb20gXCJzYXAvdWkvY29yZS9JY29uXCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IFVSSSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgRmlsZVVwbG9hZGVyIGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJcIjtcbmltcG9ydCBGaWVsZFdyYXBwZXIgZnJvbSBcIi4vRmllbGRXcmFwcGVyXCI7XG50eXBlIENvbnRyb2xXaXRoQWNjZXNzaWJpbGl0eSA9IENvbnRyb2wgJiB7IGFkZEFyaWFMYWJlbGxlZEJ5PzogKGlkOiBzdHJpbmcpID0+IHZvaWQgfTtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWxlV3JhcHBlclwiKVxuY2xhc3MgRmlsZVdyYXBwZXIgZXh0ZW5kcyBGaWVsZFdyYXBwZXIge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlVSSVwiIH0pXG5cdHVwbG9hZFVybCE6IFVSSTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHByb3BlcnR5UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbGVuYW1lITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0bWVkaWFUeXBlITogc3RyaW5nO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uQXZhdGFyXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRhdmF0YXI6IEF2YXRhciB8IHVuZGVmaW5lZDtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkljb25cIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGljb24hOiBJY29uO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uTGlua1wiLCBtdWx0aXBsZTogZmFsc2UgfSlcblx0bGluayE6IExpbms7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAubS5UZXh0XCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHR0ZXh0ITogVGV4dDtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS51bmlmaWVkLkZpbGVVcGxvYWRlclwiLCBtdWx0aXBsZTogZmFsc2UgfSlcblx0ZmlsZVVwbG9hZGVyITogRmlsZVVwbG9hZGVyO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uQnV0dG9uXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRkZWxldGVCdXR0b24hOiBCdXR0b247XG5cblx0cHJpdmF0ZSByZXF1aXJlZEV4cHJlc3Npb24/OiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBfZmlsZVVwbG9hZGVyTWFuZGF0b3J5PzogQ29udHJvbDtcblxuXHRwcml2YXRlIF9idXN5ID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBhdmF0YXJDYWNoZUJ1c3RpbmdJbml0aWFsaXplZCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgYnVzeURpYWxvZz86IEJ1c3lEaWFsb2c7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0aWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCAoUHJvcGVydGllc09mPEZpbGVXcmFwcGVyPiAmICRDb250cm9sU2V0dGluZ3MpLFxuXHRcdHNldHRpbmdzPzogUHJvcGVydGllc09mPEZpbGVXcmFwcGVyPiAmICRDb250cm9sU2V0dGluZ3Ncblx0KSB7XG5cdFx0c3VwZXIoaWQgYXMgc3RyaW5nLCBzZXR0aW5ncyk7XG5cdH1cblxuXHRlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKG9FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Ly8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyBhcmlhLWxhYmVsbGVkYnkgdG8gYWxsIGNoaWxkIGNvbnRyb2xzLCBvbmx5IHVzZSBpdCBvbmNlIGFzIGEgbGFiZWwgb24gdGhlIHdyYXBwZXIgd2l0aCByb2xlIGdyb3VwLlxuXHRcdHJldHVybiBtQXJpYVByb3BzO1xuXHR9XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0dGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoKTtcblx0XHR0aGlzLl9zZXRBcmlhUmVxdWlyZWQoKTtcblx0XHR0aGlzLl9hZGRTaWRlRWZmZWN0cygpO1xuXHRcdHRoaXMuX3JlZnJlc2hBdmF0YXIoKTtcblx0fVxuXG5cdF9zZXRBcmlhTGFiZWxsZWRCeSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5saW5rKSB7XG5cdFx0XHRjb25zdCBvUGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcblx0XHRcdGNvbnN0IG1BcmlhUHJvcHM6IHsgbGFiZWxsZWRieTogdW5kZWZpbmVkIHwgc3RyaW5nIH0gPSB7IGxhYmVsbGVkYnk6IHVuZGVmaW5lZCB9O1xuXG5cdFx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0XHQob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlOiBGdW5jdGlvbiB9KS5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKHRoaXMubGluaywgbUFyaWFQcm9wcyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtQXJpYVByb3BzLmxhYmVsbGVkYnkpIHtcblx0XHRcdFx0KHRoaXMgYXMgQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5KS5hZGRBcmlhTGFiZWxsZWRCeSEobUFyaWFQcm9wcy5sYWJlbGxlZGJ5KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgRE9NTm9kZSBJRCB0byBiZSB1c2VkIGZvciB0aGUgXCJsYWJlbEZvclwiIGF0dHJpYnV0ZS5cblx0ICpcblx0ICogV2UgZm9yd2FyZCB0aGUgY2FsbCBvZiB0aGlzIG1ldGhvZCB0byB0aGUgY29udGVudCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyBJRCB0byBiZSB1c2VkIGZvciB0aGUgPGNvZGU+bGFiZWxGb3I8L2NvZGU+XG5cdCAqL1xuXHRnZXRJZEZvckxhYmVsKCk6IHN0cmluZyB7XG5cdFx0Ly8gV2UgZWl0aGVyIGhhdmUgYSBsaW5rIHRvIGRvd25sb2FkIHRoZSBmaWxlLCBhIHRleHQgaW5kaWNhdGluZyBhbiBlbXB0eSBmaWxlLCBvciBhbiBhdmF0YXIgYW5kIG5vIGxpbmsgb3IgdGV4dFxuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5saW5rIHx8IHRoaXMudGV4dCB8fCB0aGlzLmF2YXRhcjtcblx0XHRyZXR1cm4gKG9Db250ZW50IGFzIENvbnRyb2wpLmdldElkRm9yTGFiZWwoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJZiBpbiB0aGUgY29sbGFib3JhdGl2ZSBkcmFmdCwgc2VuZCBhIHJlcXVlc3QgdG8gcmVsb2FkIHRoZSBmaWxlLlxuXHQgKi9cblx0X3JlZnJlc2hBdmF0YXIoKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyBhcyBDb250cm9sKTtcblx0XHRjb25zdCBjb2xsYWJvcmF0aXZlRHJhZnQgPSB2aWV3LmdldENvbnRyb2xsZXIoKS5jb2xsYWJvcmF0aXZlRHJhZnQ7XG5cdFx0aWYgKGNvbGxhYm9yYXRpdmVEcmFmdC5pc0NvbGxhYm9yYXRpb25FbmFibGVkKCkpIHtcblx0XHRcdGNvbnN0IGF2YXRhckJpbmRpbmcgPSB0aGlzLmF2YXRhcj8uZ2V0QmluZGluZ0luZm8oXCJzcmNcIikuYmluZGluZztcblx0XHRcdGlmIChhdmF0YXJCaW5kaW5nICYmICF0aGlzLmF2YXRhckNhY2hlQnVzdGluZ0luaXRpYWxpemVkKSB7XG5cdFx0XHRcdGF2YXRhckJpbmRpbmcuYXR0YWNoRXZlbnQoXCJjaGFuZ2VcIiwgKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuYXZhdGFyPy5yZWZyZXNoQXZhdGFyQ2FjaGVCdXN0aW5nKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmF2YXRhckNhY2hlQnVzdGluZ0luaXRpYWxpemVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRfc2V0QXJpYVJlcXVpcmVkKCk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMgYXMgQ29udHJvbCksXG5cdFx0XHR2aWV3RGF0YUZ1bGxDb250ZXh0UGF0aCA9IHZpZXcuZ2V0Vmlld0RhdGEoKS5mdWxsQ29udGV4dFBhdGgsXG5cdFx0XHRtZXRhTW9kZWwgPSB2aWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRtZXRhQ29udGV4dCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KHZpZXdEYXRhRnVsbENvbnRleHRQYXRoKSxcblx0XHRcdG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLnByb3BlcnR5UGF0aCwgbWV0YUNvbnRleHQpLFxuXHRcdFx0ZGF0YVZpZXdNb2RlbFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFQYXRoQ29udGV4dCwgbWV0YUNvbnRleHQpO1xuXG5cdFx0Y29uc3Qgc3RyZWFtUHJvcGVydHkgPSBkYXRhVmlld01vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdFx0dGhpcy5yZXF1aXJlZEV4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZ2V0UmVxdWlyZWRFeHByZXNzaW9uKFxuXHRcdFx0c3RyZWFtUHJvcGVydHksXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRmYWxzZSxcblx0XHRcdGZhbHNlLFxuXHRcdFx0e30sXG5cdFx0XHRkYXRhVmlld01vZGVsUGF0aFxuXHRcdCkgYXMgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdH1cblxuXHRfYWRkU2lkZUVmZmVjdHMoKTogdm9pZCB7XG5cdFx0Ly8gYWRkIGNvbnRyb2wgU2lkZUVmZmVjdHMgZm9yIHN0cmVhbSBjb250ZW50LCBmaWxlbmFtZSBhbmQgbWVkaWF0eXBlXG5cdFx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXM6IFNpZGVFZmZlY3RzRW50aXR5VHlwZVtdID0gW10sXG5cdFx0XHR2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzIGFzIENvbnRyb2wpLFxuXHRcdFx0dmlld0RhdGFGdWxsQ29udGV4dFBhdGggPSB2aWV3LmdldFZpZXdEYXRhKCkuZnVsbENvbnRleHRQYXRoLFxuXHRcdFx0bWV0YU1vZGVsID0gdmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0bWV0YU1vZGVsUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aCh2aWV3RGF0YUZ1bGxDb250ZXh0UGF0aCksXG5cdFx0XHR2aWV3Q29udGV4dCA9IG1ldGFNb2RlbC5nZXRDb250ZXh0KHZpZXdEYXRhRnVsbENvbnRleHRQYXRoKSxcblx0XHRcdGRhdGFWaWV3TW9kZWxQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh2aWV3Q29udGV4dCksXG5cdFx0XHRzb3VyY2VQYXRoID0gdGhpcy5kYXRhKFwic291cmNlUGF0aFwiKSBhcyBzdHJpbmcsXG5cdFx0XHRmaWVsZFBhdGggPSBzb3VyY2VQYXRoLnJlcGxhY2UoYCR7bWV0YU1vZGVsUGF0aH1gLCBcIlwiKSxcblx0XHRcdHBhdGggPSBmaWVsZFBhdGgucmVwbGFjZSh0aGlzLnByb3BlcnR5UGF0aCwgXCJcIik7XG5cblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKHsgJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IGZpZWxkUGF0aCB9KTtcblx0XHRpZiAodGhpcy5maWxlbmFtZSkge1xuXHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaCh7ICROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBwYXRoICsgdGhpcy5maWxlbmFtZSB9KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMubWVkaWFUeXBlKSB7XG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKHsgJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHBhdGggKyB0aGlzLm1lZGlhVHlwZSB9KTtcblx0XHR9XG5cdFx0dGhpcy5fZ2V0U2lkZUVmZmVjdENvbnRyb2xsZXIoKT8uYWRkQ29udHJvbFNpZGVFZmZlY3RzKGRhdGFWaWV3TW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLCB7XG5cdFx0XHRzb3VyY2VQcm9wZXJ0aWVzOiBbZmllbGRQYXRoXSxcblx0XHRcdHRhcmdldEVudGl0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRcdHNvdXJjZUNvbnRyb2xJZDogdGhpcy5nZXRJZCgpXG5cdFx0fSk7XG5cdH1cblxuXHRfZ2V0U2lkZUVmZmVjdENvbnRyb2xsZXIoKTogU2lkZUVmZmVjdHNDb250cm9sbGVyRXh0ZW5zaW9uIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZDtcblx0XHRyZXR1cm4gY29udHJvbGxlciA/IGNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0X2dldFZpZXdDb250cm9sbGVyKCk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzIGFzIENvbnRyb2wpO1xuXHRcdHJldHVybiB2aWV3ICYmIHZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0Z2V0VXBsb2FkVXJsKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29udGV4dCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGlmIChjb250ZXh0ICYmIHRoaXMudXBsb2FkVXJsKSB7XG5cdFx0XHQvLyBJZiB0aGUgYmFja2VuZCBkaWQgbm90IGV4cGxpY2l0bHkgc2V0IEFkZHJlc3NWaWFOYXZpZ2F0aW9uUGF0aCwgd2UgbmVlZCB0byB1c2UgdGhlIGNhbm9uaWNhbCBwYXRoIGZvciB1cGxvYWRcblx0XHRcdGlmIChjb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0T2JqZWN0KFwiL0Bjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuQWRkcmVzc1ZpYU5hdmlnYXRpb25QYXRoXCIpID09PSB0cnVlKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnVwbG9hZFVybDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnVwbG9hZFVybC5yZXBsYWNlKGNvbnRleHQuZ2V0UGF0aCgpLCBjb250ZXh0LmdldENhbm9uaWNhbFBhdGgoKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBcIlwiO1xuXHR9XG5cblx0c2V0VUlCdXN5KGJ1c3k6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHR0aGlzLl9idXN5ID0gYnVzeTtcblx0XHRpZiAoYnVzeSkge1xuXHRcdFx0aWYgKCF0aGlzLmJ1c3lEaWFsb2cpIHtcblx0XHRcdFx0dGhpcy5idXN5RGlhbG9nID0gbmV3IEJ1c3lEaWFsb2coe1xuXHRcdFx0XHRcdHRleHQ6IGdldFJlc291cmNlTW9kZWwodGhpcykuZ2V0VGV4dChcIk1fRklMRVdSQVBQRVJfQlVTWV9ESUFMT0dfVElUTEVcIiksXG5cdFx0XHRcdFx0c2hvd0NhbmNlbEJ1dHRvbjogZmFsc2Vcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0aWYgKHRoYXQuX2J1c3kpIHtcblx0XHRcdFx0XHR0aGF0LmJ1c3lEaWFsb2c/Lm9wZW4oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYnVzeURpYWxvZz8uY2xvc2UoZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdGdldFVJQnVzeSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5fYnVzeTtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIocmVuZGVyTWFuYWdlcjogUmVuZGVyTWFuYWdlciwgZmlsZVdyYXBwZXI6IEZpbGVXcmFwcGVyKTogdm9pZCB7XG5cdFx0bGV0IGlubmVyRGl2TWF4V2lkdGgsIGlubmVyRGl2TWluV2lkdGg7XG5cdFx0aWYgKGZpbGVXcmFwcGVyLmF2YXRhcikge1xuXHRcdFx0Ly8gVGhlIGF2YXRhciBoYXMgYSBmaXhlZCB3aWR0aCAoM3JlbSkgdGhlcmVmb3JlIHRoZSBpbm5lciBkaXYgY2FuIGhhdmUgYSBsb3dlciBtaW4gd2lkdGggdGhhbiBpY29uIGFuZCBsaW5rXG5cdFx0XHRpbm5lckRpdk1heFdpZHRoID0gXCIxMDAlXCI7XG5cdFx0XHRpbm5lckRpdk1pbldpZHRoID0gXCIzcmVtXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIERlcGVuZGluZyBvbiBkaXNwbGF5IG9yIGVkaXQgbW9kZSB3ZSBoYXZlIHRvIHJlc2VydmUgc29tZSBzcGFjZSBmb3IgdGhlIGZpbGUgdXBsb2FkIGFuZCBkZWxldGUgYnV0dG9uICgycmVtIGVhY2ggKyAxcmVtIG1hcmdpbilcblx0XHRcdGlubmVyRGl2TWF4V2lkdGggPSBDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKGZpbGVXcmFwcGVyIGFzIHVua25vd24gYXMgTWFuYWdlZE9iamVjdCkgPyBcImNhbGMoMTAwJSAtIDZyZW0pXCIgOiBcIjEwMCVcIjtcblx0XHRcdGlubmVyRGl2TWluV2lkdGggPSBcIjQuNXJlbVwiO1xuXHRcdH1cblxuXHRcdHJlbmRlck1hbmFnZXIub3BlblN0YXJ0KFwiZGl2XCIsIGZpbGVXcmFwcGVyKTsgLy8gRmlsZVdyYXBwZXIgY29udHJvbCBkaXZcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwid2lkdGhcIiwgZmlsZVdyYXBwZXIud2lkdGgpO1xuXHRcdHJlbmRlck1hbmFnZXIub3BlbkVuZCgpO1xuXG5cdFx0Ly8gT3V0ZXIgQm94XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuU3RhcnQoXCJkaXZcIik7IC8vIGRpdiBmb3IgYWxsIGNvbnRyb2xzXG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImRpc3BsYXlcIiwgXCJmbGV4XCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJib3gtc2l6aW5nXCIsIFwiYm9yZGVyLWJveFwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwianVzdGlmeS1jb250ZW50XCIsIFwic3BhY2UtYmV0d2VlblwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwiYWxpZ24taXRlbXNcIiwgXCJjZW50ZXJcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImZsZXgtd3JhcFwiLCBcIndyYXBcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImFsaWduLWNvbnRlbnRcIiwgXCJzdHJldGNoXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5vcGVuRW5kKCk7XG5cblx0XHQvLyBEaXNwbGF5IE1vZGVcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5TdGFydChcImRpdlwiKTsgLy8gZGl2IGZvciBjb250cm9scyBzaG93biBpbiBEaXNwbGF5IG1vZGVcblx0XHRyZW5kZXJNYW5hZ2VyLnN0eWxlKFwiZGlzcGxheVwiLCBcImZsZXhcIik7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImFsaWduLWl0ZW1zXCIsIFwiY2VudGVyXCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJtYXgtd2lkdGhcIiwgaW5uZXJEaXZNYXhXaWR0aCk7XG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcIm1pbi13aWR0aFwiLCBpbm5lckRpdk1pbldpZHRoKTtcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5FbmQoKTtcblxuXHRcdGlmIChmaWxlV3JhcHBlci5hdmF0YXIpIHtcblx0XHRcdHJlbmRlck1hbmFnZXIucmVuZGVyQ29udHJvbChmaWxlV3JhcHBlci5hdmF0YXIpOyAvLyByZW5kZXIgdGhlIEF2YXRhciBDb250cm9sXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlbmRlck1hbmFnZXIucmVuZGVyQ29udHJvbChmaWxlV3JhcHBlci5pY29uKTsgLy8gcmVuZGVyIHRoZSBJY29uIENvbnRyb2xcblx0XHRcdHJlbmRlck1hbmFnZXIucmVuZGVyQ29udHJvbChmaWxlV3JhcHBlci5saW5rKTsgLy8gcmVuZGVyIHRoZSBMaW5rIENvbnRyb2xcblx0XHRcdHJlbmRlck1hbmFnZXIucmVuZGVyQ29udHJvbChmaWxlV3JhcHBlci50ZXh0KTsgLy8gcmVuZGVyIHRoZSBUZXh0IENvbnRyb2wgZm9yIGVtcHR5IGZpbGUgaW5kaWNhdGlvblxuXHRcdH1cblx0XHRyZW5kZXJNYW5hZ2VyLmNsb3NlKFwiZGl2XCIpOyAvLyBkaXYgZm9yIGNvbnRyb2xzIHNob3duIGluIERpc3BsYXkgbW9kZVxuXG5cdFx0Ly8gQWRkaXRpb25hbCBjb250ZW50IGZvciBFZGl0IE1vZGVcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5TdGFydChcImRpdlwiKTsgLy8gZGl2IGZvciBjb250cm9scyBzaG93biBpbiBEaXNwbGF5ICsgRWRpdCBtb2RlXG5cdFx0cmVuZGVyTWFuYWdlci5zdHlsZShcImRpc3BsYXlcIiwgXCJmbGV4XCIpO1xuXHRcdHJlbmRlck1hbmFnZXIuc3R5bGUoXCJhbGlnbi1pdGVtc1wiLCBcImNlbnRlclwiKTtcblx0XHRyZW5kZXJNYW5hZ2VyLm9wZW5FbmQoKTtcblx0XHRyZW5kZXJNYW5hZ2VyLnJlbmRlckNvbnRyb2woZmlsZVdyYXBwZXIuZmlsZVVwbG9hZGVyKTsgLy8gcmVuZGVyIHRoZSBGaWxlVXBsb2FkZXIgQ29udHJvbFxuXHRcdHJlbmRlck1hbmFnZXIucmVuZGVyQ29udHJvbChmaWxlV3JhcHBlci5kZWxldGVCdXR0b24pOyAvLyByZW5kZXIgdGhlIERlbGV0ZSBCdXR0b24gQ29udHJvbFxuXHRcdHJlbmRlck1hbmFnZXIuY2xvc2UoXCJkaXZcIik7IC8vIGRpdiBmb3IgY29udHJvbHMgc2hvd24gaW4gRGlzcGxheSArIEVkaXQgbW9kZVxuXG5cdFx0cmVuZGVyTWFuYWdlci5jbG9zZShcImRpdlwiKTsgLy8gZGl2IGZvciBhbGwgY29udHJvbHNcblxuXHRcdHJlbmRlck1hbmFnZXIuY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG5cblx0ZGVzdHJveShiU3VwcHJlc3NJbnZhbGlkYXRlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0Y29uc3Qgb1NpZGVFZmZlY3RzID0gdGhpcy5fZ2V0U2lkZUVmZmVjdENvbnRyb2xsZXIoKTtcblx0XHRpZiAob1NpZGVFZmZlY3RzKSB7XG5cdFx0XHRvU2lkZUVmZmVjdHMucmVtb3ZlQ29udHJvbFNpZGVFZmZlY3RzKHRoaXMpO1xuXHRcdH1cblx0XHRkZWxldGUgdGhpcy5idXN5RGlhbG9nO1xuXHRcdEZpZWxkV3JhcHBlci5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLCBbYlN1cHByZXNzSW52YWxpZGF0ZV0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpbGVXcmFwcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztNQTRCTUEsV0FBVyxJQUFBQyxJQUFBLEdBRGhCQyxjQUFjLENBQUMsb0NBQW9DLENBQUMsRUFBQUMsS0FBQSxHQUVuREMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFrQixDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdyQ0YsUUFBUSxDQUFD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