@sapui5/sap.fe.core 1.127.2 → 1.129.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 (393) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +3 -9
  4. package/src/sap/fe/core/ActionRuntime.ts +3 -7
  5. package/src/sap/fe/core/AppComponent.js +9 -19
  6. package/src/sap/fe/core/AppComponent.ts +2 -12
  7. package/src/sap/fe/core/AppStateHandler.js +3 -11
  8. package/src/sap/fe/core/AppStateHandler.ts +0 -7
  9. package/src/sap/fe/core/BaseController.js +4 -8
  10. package/src/sap/fe/core/BaseController.ts +0 -5
  11. package/src/sap/fe/core/CommonUtils.js +1 -9
  12. package/src/sap/fe/core/CommonUtils.ts +4 -8
  13. package/src/sap/fe/core/ExtensionAPI.js +10 -25
  14. package/src/sap/fe/core/ExtensionAPI.ts +4 -19
  15. package/src/sap/fe/core/InsightsFormattersExtension.js +5 -3
  16. package/src/sap/fe/core/PageController.js +7 -10
  17. package/src/sap/fe/core/PageController.ts +0 -3
  18. package/src/sap/fe/core/ResourceModel.js +3 -5
  19. package/src/sap/fe/core/ResourceModel.ts +0 -2
  20. package/src/sap/fe/core/ReuseComponent.js +8 -14
  21. package/src/sap/fe/core/ReuseComponent.ts +0 -6
  22. package/src/sap/fe/core/TemplateComponent.js +37 -9
  23. package/src/sap/fe/core/TemplateComponent.ts +3 -2
  24. package/src/sap/fe/core/TemplateModel.js +5 -5
  25. package/src/sap/fe/core/TemplateModel.ts +0 -1
  26. package/src/sap/fe/core/UIProvider.js +1 -1
  27. package/src/sap/fe/core/UIProvider.ts +44 -1
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +7 -12
  29. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +0 -5
  30. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +61 -65
  31. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +60 -63
  32. package/src/sap/fe/core/buildingBlocks/templating/AttributeModel.js +3 -3
  33. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockFormatter.js +1 -1
  34. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +21 -5
  35. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +0 -4
  36. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +6 -18
  37. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -20
  38. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +5 -11
  39. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +0 -6
  40. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock.js +3 -3
  41. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +11 -10
  42. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +0 -1
  43. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +5 -7
  44. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +0 -1
  45. package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
  46. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +3 -10
  47. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +0 -7
  48. package/src/sap/fe/core/controllerextensions/ContextSharing.js +5 -8
  49. package/src/sap/fe/core/controllerextensions/ContextSharing.ts +0 -2
  50. package/src/sap/fe/core/controllerextensions/EditFlow.js +225 -155
  51. package/src/sap/fe/core/controllerextensions/EditFlow.ts +248 -164
  52. package/src/sap/fe/core/controllerextensions/Feedback.js +1 -3
  53. package/src/sap/fe/core/controllerextensions/Feedback.ts +0 -2
  54. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +4 -7
  55. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -3
  56. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +8 -25
  57. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +2 -21
  58. package/src/sap/fe/core/controllerextensions/InternalRouting.js +22 -34
  59. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +25 -31
  60. package/src/sap/fe/core/controllerextensions/KPIManagement.js +8 -21
  61. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +4 -15
  62. package/src/sap/fe/core/controllerextensions/MessageHandler.js +68 -31
  63. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +78 -32
  64. package/src/sap/fe/core/controllerextensions/PageReady.js +4 -4
  65. package/src/sap/fe/core/controllerextensions/Paginator.js +4 -8
  66. package/src/sap/fe/core/controllerextensions/Paginator.ts +0 -4
  67. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -4
  68. package/src/sap/fe/core/controllerextensions/Recommendations.js +15 -24
  69. package/src/sap/fe/core/controllerextensions/Recommendations.ts +13 -20
  70. package/src/sap/fe/core/controllerextensions/Routing.js +4 -10
  71. package/src/sap/fe/core/controllerextensions/Routing.ts +0 -6
  72. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  73. package/src/sap/fe/core/controllerextensions/Share.js +17 -11
  74. package/src/sap/fe/core/controllerextensions/Share.ts +10 -5
  75. package/src/sap/fe/core/controllerextensions/SideEffects.js +49 -45
  76. package/src/sap/fe/core/controllerextensions/SideEffects.ts +54 -41
  77. package/src/sap/fe/core/controllerextensions/Telemetry.js +4 -4
  78. package/src/sap/fe/core/controllerextensions/ViewState.js +10 -34
  79. package/src/sap/fe/core/controllerextensions/ViewState.ts +3 -49
  80. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +6 -8
  81. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +0 -1
  82. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -2
  83. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +0 -1
  84. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +4 -3
  85. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -1
  86. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +16 -12
  87. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +4 -1
  88. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
  89. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +126 -74
  90. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +158 -91
  91. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -22
  92. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +0 -20
  93. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -20
  94. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +11 -17
  95. package/src/sap/fe/core/controllerextensions/editFlow/editFlowConstants.js +1 -1
  96. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +191 -767
  97. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +277 -1024
  98. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
  99. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -6
  100. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +0 -5
  101. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +381 -250
  102. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +467 -301
  103. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +2 -6
  104. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +0 -5
  105. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +2 -6
  106. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +4 -6
  107. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +1 -6
  108. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +0 -4
  109. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +1 -1
  110. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +4 -41
  111. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -37
  112. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
  113. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +0 -1
  114. package/src/sap/fe/core/controls/Any.js +1 -2
  115. package/src/sap/fe/core/controls/Any.ts +0 -1
  116. package/src/sap/fe/core/controls/AnyElement.js +1 -2
  117. package/src/sap/fe/core/controls/AnyElement.ts +0 -1
  118. package/src/sap/fe/core/controls/CommandExecution.js +3 -3
  119. package/src/sap/fe/core/controls/ComponentLoader.js +23 -10
  120. package/src/sap/fe/core/controls/ComponentLoader.ts +0 -1
  121. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +10 -13
  122. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +0 -6
  123. package/src/sap/fe/core/controls/EventDelegateHook.js +8 -9
  124. package/src/sap/fe/core/controls/FormElementWrapper.js +7 -7
  125. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -1
  126. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +140 -24
  127. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +141 -10
  128. package/src/sap/fe/core/converters/ConverterContext.js +8 -30
  129. package/src/sap/fe/core/converters/ConverterContext.ts +7 -29
  130. package/src/sap/fe/core/converters/ManifestSettings.js +37 -1
  131. package/src/sap/fe/core/converters/ManifestSettings.ts +12 -3
  132. package/src/sap/fe/core/converters/ManifestWrapper.js +12 -40
  133. package/src/sap/fe/core/converters/ManifestWrapper.ts +13 -46
  134. package/src/sap/fe/core/converters/MetaModelConverter.js +44 -48
  135. package/src/sap/fe/core/converters/MetaModelConverter.ts +50 -48
  136. package/src/sap/fe/core/converters/TemplateConverter.js +3 -2
  137. package/src/sap/fe/core/converters/TemplateConverter.ts +0 -1
  138. package/src/sap/fe/core/converters/annotations/DataField.js +1 -28
  139. package/src/sap/fe/core/converters/annotations/DataField.ts +0 -26
  140. package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -19
  141. package/src/sap/fe/core/converters/controls/Common/Action.js +13 -26
  142. package/src/sap/fe/core/converters/controls/Common/Action.ts +13 -31
  143. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -6
  144. package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -5
  145. package/src/sap/fe/core/converters/controls/Common/Criticality.js +2 -4
  146. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +1 -2
  147. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -5
  148. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +0 -4
  149. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -2
  150. package/src/sap/fe/core/converters/controls/Common/Form.ts +2 -1
  151. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -7
  152. package/src/sap/fe/core/converters/controls/Common/KPI.ts +11 -6
  153. package/src/sap/fe/core/converters/controls/Common/Table.js +159 -141
  154. package/src/sap/fe/core/converters/controls/Common/Table.ts +166 -122
  155. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +5 -30
  156. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +3 -29
  157. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +43 -55
  158. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +43 -47
  159. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -4
  160. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +0 -3
  161. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  162. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -8
  163. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +2 -7
  164. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -11
  165. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +0 -9
  166. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -10
  167. package/src/sap/fe/core/converters/helpers/Aggregation.ts +0 -9
  168. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -7
  169. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +0 -6
  170. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -9
  171. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +0 -8
  172. package/src/sap/fe/core/converters/helpers/ID.js +1 -2
  173. package/src/sap/fe/core/converters/helpers/ID.ts +0 -1
  174. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -2
  175. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +0 -1
  176. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  177. package/src/sap/fe/core/converters/helpers/Key.js +1 -5
  178. package/src/sap/fe/core/converters/helpers/Key.ts +0 -4
  179. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -2
  180. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +0 -1
  181. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  182. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -7
  183. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +0 -6
  184. package/src/sap/fe/core/converters/templates/ListReportConverter.js +6 -27
  185. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +9 -26
  186. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -16
  187. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +0 -15
  188. package/src/sap/fe/core/definition/FEDefinition.js +2550 -0
  189. package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -12
  190. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +9 -10
  191. package/src/sap/fe/core/formatters/CollaborationFormatter.js +8 -2
  192. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +0 -2
  193. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  194. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -2
  195. package/src/sap/fe/core/formatters/FPMFormatter.ts +0 -1
  196. package/src/sap/fe/core/formatters/FiscalFormat.js +9 -14
  197. package/src/sap/fe/core/formatters/FiscalFormat.ts +0 -11
  198. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -4
  199. package/src/sap/fe/core/formatters/KPIFormatter.ts +0 -3
  200. package/src/sap/fe/core/formatters/StandardFormatter.js +6 -3
  201. package/src/sap/fe/core/formatters/StandardFormatter.ts +6 -2
  202. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -4
  203. package/src/sap/fe/core/formatters/ValueFormatter.ts +0 -3
  204. package/src/sap/fe/core/fpm/Component.js +14 -17
  205. package/src/sap/fe/core/fpm/Component.ts +7 -10
  206. package/src/sap/fe/core/fpm/manifest.json +1 -1
  207. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +3 -10
  208. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.ts +0 -9
  209. package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -13
  210. package/src/sap/fe/core/helpers/AppStartupHelper.ts +0 -11
  211. package/src/sap/fe/core/helpers/BindingHelper.js +1 -4
  212. package/src/sap/fe/core/helpers/BindingHelper.ts +0 -3
  213. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +1 -2
  214. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.ts +0 -1
  215. package/src/sap/fe/core/helpers/DeleteHelper.js +61 -32
  216. package/src/sap/fe/core/helpers/DeleteHelper.ts +79 -33
  217. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -2
  218. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +0 -1
  219. package/src/sap/fe/core/helpers/EditState.js +1 -1
  220. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -2
  221. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +0 -1
  222. package/src/sap/fe/core/helpers/FPMHelper.js +1 -2
  223. package/src/sap/fe/core/helpers/FPMHelper.ts +0 -1
  224. package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -8
  225. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +0 -7
  226. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +7 -1
  227. package/src/sap/fe/core/helpers/LoaderUtils.js +1 -1
  228. package/src/sap/fe/core/helpers/ManifestHelper.js +1 -3
  229. package/src/sap/fe/core/helpers/ManifestHelper.ts +0 -2
  230. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  231. package/src/sap/fe/core/helpers/MetaModelFunction.js +3 -8
  232. package/src/sap/fe/core/helpers/MetaModelFunction.ts +0 -5
  233. package/src/sap/fe/core/helpers/MetaPath.js +1 -7
  234. package/src/sap/fe/core/helpers/MetaPath.ts +0 -6
  235. package/src/sap/fe/core/helpers/ModelHelper.js +55 -35
  236. package/src/sap/fe/core/helpers/ModelHelper.ts +64 -38
  237. package/src/sap/fe/core/helpers/PasteHelper.js +77 -24
  238. package/src/sap/fe/core/helpers/PasteHelper.ts +105 -23
  239. package/src/sap/fe/core/helpers/PromiseKeeper.js +1 -3
  240. package/src/sap/fe/core/helpers/PromiseKeeper.ts +0 -2
  241. package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -4
  242. package/src/sap/fe/core/helpers/RecommendationHelper.ts +0 -3
  243. package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -3
  244. package/src/sap/fe/core/helpers/ResourceModelHelper.ts +3 -4
  245. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -2
  246. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +0 -1
  247. package/src/sap/fe/core/helpers/SizeHelper.js +1 -2
  248. package/src/sap/fe/core/helpers/SizeHelper.ts +0 -1
  249. package/src/sap/fe/core/helpers/StableIdHelper.js +7 -17
  250. package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -17
  251. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -12
  252. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +0 -11
  253. package/src/sap/fe/core/helpers/Synchronization.js +1 -1
  254. package/src/sap/fe/core/helpers/TitleHelper.js +1 -10
  255. package/src/sap/fe/core/helpers/TitleHelper.ts +0 -9
  256. package/src/sap/fe/core/helpers/ToES6Promise.js +1 -2
  257. package/src/sap/fe/core/helpers/ToES6Promise.ts +0 -1
  258. package/src/sap/fe/core/helpers/TypeGuards.js +1 -15
  259. package/src/sap/fe/core/helpers/TypeGuards.ts +0 -14
  260. package/src/sap/fe/core/helpers/WebSocket.js +1 -1
  261. package/src/sap/fe/core/library.js +10 -44
  262. package/src/sap/fe/core/library.support.js +1 -1
  263. package/src/sap/fe/core/library.ts +8 -45
  264. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -6
  265. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -5
  266. package/src/sap/fe/core/messagebundle.properties +12 -1
  267. package/src/sap/fe/core/messagebundle_ar.properties +8 -0
  268. package/src/sap/fe/core/messagebundle_bg.properties +8 -0
  269. package/src/sap/fe/core/messagebundle_ca.properties +8 -0
  270. package/src/sap/fe/core/messagebundle_cnr.properties +8 -0
  271. package/src/sap/fe/core/messagebundle_cs.properties +9 -1
  272. package/src/sap/fe/core/messagebundle_cy.properties +8 -0
  273. package/src/sap/fe/core/messagebundle_da.properties +8 -0
  274. package/src/sap/fe/core/messagebundle_de.properties +8 -0
  275. package/src/sap/fe/core/messagebundle_el.properties +8 -0
  276. package/src/sap/fe/core/messagebundle_en.properties +8 -0
  277. package/src/sap/fe/core/messagebundle_en_GB.properties +8 -0
  278. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +144 -65
  279. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +8 -0
  280. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +273 -194
  281. package/src/sap/fe/core/messagebundle_es.properties +9 -1
  282. package/src/sap/fe/core/messagebundle_es_MX.properties +8 -0
  283. package/src/sap/fe/core/messagebundle_et.properties +8 -0
  284. package/src/sap/fe/core/messagebundle_fi.properties +8 -0
  285. package/src/sap/fe/core/messagebundle_fr.properties +8 -0
  286. package/src/sap/fe/core/messagebundle_fr_CA.properties +8 -0
  287. package/src/sap/fe/core/messagebundle_hi.properties +9 -1
  288. package/src/sap/fe/core/messagebundle_hr.properties +8 -0
  289. package/src/sap/fe/core/messagebundle_hu.properties +8 -0
  290. package/src/sap/fe/core/messagebundle_id.properties +12 -4
  291. package/src/sap/fe/core/messagebundle_it.properties +8 -0
  292. package/src/sap/fe/core/messagebundle_iw.properties +8 -0
  293. package/src/sap/fe/core/messagebundle_ja.properties +8 -0
  294. package/src/sap/fe/core/messagebundle_kk.properties +8 -0
  295. package/src/sap/fe/core/messagebundle_ko.properties +8 -0
  296. package/src/sap/fe/core/messagebundle_lt.properties +8 -0
  297. package/src/sap/fe/core/messagebundle_lv.properties +8 -0
  298. package/src/sap/fe/core/messagebundle_mk.properties +8 -0
  299. package/src/sap/fe/core/messagebundle_ms.properties +8 -0
  300. package/src/sap/fe/core/messagebundle_nl.properties +16 -8
  301. package/src/sap/fe/core/messagebundle_no.properties +8 -0
  302. package/src/sap/fe/core/messagebundle_pl.properties +8 -0
  303. package/src/sap/fe/core/messagebundle_pt.properties +8 -0
  304. package/src/sap/fe/core/messagebundle_pt_PT.properties +8 -0
  305. package/src/sap/fe/core/messagebundle_ro.properties +8 -0
  306. package/src/sap/fe/core/messagebundle_ru.properties +8 -0
  307. package/src/sap/fe/core/messagebundle_sh.properties +8 -0
  308. package/src/sap/fe/core/messagebundle_sk.properties +8 -0
  309. package/src/sap/fe/core/messagebundle_sl.properties +8 -0
  310. package/src/sap/fe/core/messagebundle_sr.properties +8 -0
  311. package/src/sap/fe/core/messagebundle_sv.properties +8 -0
  312. package/src/sap/fe/core/messagebundle_th.properties +12 -4
  313. package/src/sap/fe/core/messagebundle_tr.properties +8 -0
  314. package/src/sap/fe/core/messagebundle_uk.properties +10 -2
  315. package/src/sap/fe/core/messagebundle_vi.properties +8 -0
  316. package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -0
  317. package/src/sap/fe/core/messagebundle_zh_TW.properties +8 -0
  318. package/src/sap/fe/core/operationsHelper.js +22 -7
  319. package/src/sap/fe/core/operationsHelper.ts +24 -5
  320. package/src/sap/fe/core/rootView/Fcl.controller.js +7 -27
  321. package/src/sap/fe/core/rootView/Fcl.controller.ts +0 -18
  322. package/src/sap/fe/core/rootView/NavContainer.controller.js +7 -12
  323. package/src/sap/fe/core/rootView/NavContainer.controller.ts +0 -5
  324. package/src/sap/fe/core/rootView/RootViewBaseController.js +10 -24
  325. package/src/sap/fe/core/rootView/RootViewBaseController.ts +3 -16
  326. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
  327. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +3 -3
  328. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +4 -4
  329. package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +3 -3
  330. package/src/sap/fe/core/services/ContextSharingServiceFactory.js +3 -4
  331. package/src/sap/fe/core/services/ContextSharingServiceFactory.ts +0 -1
  332. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +13 -20
  333. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +11 -17
  334. package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -21
  335. package/src/sap/fe/core/services/NavigationServiceFactory.ts +4 -17
  336. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
  337. package/src/sap/fe/core/services/RoutingServiceFactory.js +7 -19
  338. package/src/sap/fe/core/services/RoutingServiceFactory.ts +0 -12
  339. package/src/sap/fe/core/services/ShellServicesFactory.js +8 -44
  340. package/src/sap/fe/core/services/ShellServicesFactory.ts +1 -41
  341. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +19 -60
  342. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +14 -57
  343. package/src/sap/fe/core/services/TelemetryServiceFactory.js +6 -14
  344. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +2 -10
  345. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +17 -7
  346. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +17 -3
  347. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +11 -24
  348. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +0 -19
  349. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +3 -31
  350. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +0 -27
  351. package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.js +1 -4
  352. package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.ts +0 -3
  353. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +7 -7
  354. package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
  355. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
  356. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
  357. package/src/sap/fe/core/support/CommonHelper.js +4 -1
  358. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  359. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
  360. package/src/sap/fe/core/templating/ActionHelper.js +1 -2
  361. package/src/sap/fe/core/templating/ActionHelper.ts +0 -1
  362. package/src/sap/fe/core/templating/CommonFormatters.js +1 -2
  363. package/src/sap/fe/core/templating/CommonFormatters.ts +0 -1
  364. package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -6
  365. package/src/sap/fe/core/templating/CriticalityFormatters.ts +0 -5
  366. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -2
  367. package/src/sap/fe/core/templating/DataFieldFormatters.ts +0 -1
  368. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -18
  369. package/src/sap/fe/core/templating/DataModelPathHelper.ts +0 -17
  370. package/src/sap/fe/core/templating/DisplayModeFormatter.js +6 -1
  371. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -4
  372. package/src/sap/fe/core/templating/EntitySetHelper.ts +0 -3
  373. package/src/sap/fe/core/templating/EntityTypeHelper.js +4 -5
  374. package/src/sap/fe/core/templating/EntityTypeHelper.ts +3 -4
  375. package/src/sap/fe/core/templating/FieldControlHelper.js +4 -9
  376. package/src/sap/fe/core/templating/FieldControlHelper.ts +3 -9
  377. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  378. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  379. package/src/sap/fe/core/templating/PropertyHelper.js +1 -31
  380. package/src/sap/fe/core/templating/PropertyHelper.ts +0 -30
  381. package/src/sap/fe/core/templating/SemanticObjectHelper.js +1 -7
  382. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +0 -6
  383. package/src/sap/fe/core/templating/UIFormatters.js +18 -14
  384. package/src/sap/fe/core/templating/UIFormatters.ts +30 -18
  385. package/src/sap/fe/core/type/Date.js +3 -6
  386. package/src/sap/fe/core/type/Date.ts +0 -3
  387. package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -3
  388. package/src/sap/fe/core/type/EDM.js +1 -1
  389. package/src/sap/fe/core/type/Email.js +3 -3
  390. package/src/sap/fe/core/type/FiscalDate.js +3 -9
  391. package/src/sap/fe/core/type/FiscalDate.ts +0 -6
  392. package/src/sap/fe/core/type/InputMask.js +3 -7
  393. package/src/sap/fe/core/type/InputMask.ts +0 -4
@@ -7,7 +7,8 @@ import type PageController from "sap/fe/core/PageController";
7
7
  import type {
8
8
  MessageTechnicalDetails,
9
9
  MessageUIDecisions,
10
- ShowMessageParameters
10
+ ShowMessageParameters,
11
+ SupportedUIElement
11
12
  } from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
12
13
  import messageHandling from "sap/fe/core/controllerextensions/messageHandler/messageHandling";
13
14
  import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
@@ -15,8 +16,8 @@ import type Dialog from "sap/m/Dialog";
15
16
  import type Control from "sap/ui/core/Control";
16
17
  import Library from "sap/ui/core/Lib";
17
18
  import Messaging from "sap/ui/core/Messaging";
18
- import type CoreLib from "sap/ui/core/library";
19
19
  import type Message from "sap/ui/core/message/Message";
20
+ import MessageType from "sap/ui/core/message/MessageType";
20
21
  import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
21
22
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
22
23
  import type Context from "sap/ui/model/Context";
@@ -44,7 +45,7 @@ export type CustomMessage = {
44
45
  code: string;
45
46
  text: string;
46
47
  persistent: boolean;
47
- type: CoreLib.MessageType;
48
+ type: MessageType;
48
49
  };
49
50
  type ShowMessageDialogParameter = {
50
51
  customMessages?: CustomMessage[];
@@ -57,6 +58,8 @@ type ShowMessageDialogParameter = {
57
58
  onBeforeShowMessage?: (messages: Message[], showMessageParameters: ShowMessageParameters) => ShowMessageParameters;
58
59
  unHoldKey?: string;
59
60
  forceShowUIElement?: boolean;
61
+ overrideUIDecision?: boolean;
62
+ showBoundStateMessages?: boolean;
60
63
  };
61
64
 
62
65
  export type ShowMessagesParameters = ShowMessageDialogParameter & {
@@ -69,7 +72,6 @@ export type ShowMessagesParameters = ShowMessageDialogParameter & {
69
72
  };
70
73
  /**
71
74
  * A controller extension offering message handling.
72
- *
73
75
  * @hideconstructor
74
76
  * @public
75
77
  * @experimental As of version 1.90.0
@@ -85,13 +87,14 @@ class MessageHandler extends ControllerExtension {
85
87
 
86
88
  protected uiDecisions: MessageUIDecisions | undefined;
87
89
 
90
+ private holdMsgsToShow = false;
91
+
88
92
  constructor() {
89
93
  super();
90
94
  }
91
95
 
92
96
  /**
93
97
  * Adds warning messages to the message handler.
94
- *
95
98
  * @param aMessages The strict warning messages to be added
96
99
  */
97
100
  addWarningMessagesToMessageHandler(aMessages: Message[]): void {
@@ -100,7 +103,6 @@ class MessageHandler extends ControllerExtension {
100
103
 
101
104
  /**
102
105
  * Determines whether or not a message is a strict warning message that was received previously.
103
- *
104
106
  * @param oMessage The message to be checked
105
107
  * @returns Whether or not the message is a strict warning message
106
108
  */
@@ -126,6 +128,12 @@ class MessageHandler extends ControllerExtension {
126
128
  this.strictWarningMessages = [];
127
129
  }
128
130
 
131
+ filterWarningMessages(messages: Message[]): Message[] {
132
+ return messages.filter((message) => {
133
+ return message.getType() === MessageType.Warning;
134
+ });
135
+ }
136
+
129
137
  /**
130
138
  * Determines whether or not bound messages are shown in the message dialog.
131
139
  *
@@ -134,7 +142,6 @@ class MessageHandler extends ControllerExtension {
134
142
  *
135
143
  * If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
136
144
  * this method has to be overridden.
137
- *
138
145
  * @returns Determines whether or not bound messages are shown in the message dialog.
139
146
  */
140
147
  @privateExtension()
@@ -152,12 +159,14 @@ class MessageHandler extends ControllerExtension {
152
159
  * The caller needs to use 'showMessageDialog(<key>)' at the end of all his processes to show the messages in the UI.
153
160
  *
154
161
  * If multiple owners register simultaneously, then messages are shown in the UI only after 'showMessageDialog(<respective_key>)' is called by all the processes' owners.
155
- *
162
+ * @param key Unique identifier to use, If not provided, a UID would be created and used to register.
156
163
  * @returns Unique Key to be used by the caller to show messages at a later point of time.
157
164
  */
158
- registerToHoldMessages(): string {
159
- const uniqueKey = uid();
160
- this.holdKeys.push(uniqueKey);
165
+ registerToHoldMessages(key?: string): string {
166
+ const uniqueKey = key ?? uid();
167
+ if (!this.holdKeys.includes(uniqueKey)) {
168
+ this.holdKeys.push(uniqueKey);
169
+ }
161
170
  return uniqueKey;
162
171
  }
163
172
 
@@ -175,7 +184,6 @@ class MessageHandler extends ControllerExtension {
175
184
  * can filter on message types and can display details as well as the long text. If there is one message,
176
185
  * the dialog immediately shows the details of the message. If there is just one success message, a message
177
186
  * toast is shown instead.
178
- *
179
187
  * @param mParameters PRIVATE
180
188
  * @returns A promise that is resolved once the user closes the dialog. If there are no messages
181
189
  * to be shown, the promise is resolved immediately
@@ -236,10 +244,9 @@ class MessageHandler extends ControllerExtension {
236
244
  * Process the messages and show them when expected.
237
245
  *
238
246
  * We filter the messages to show and hold them until all registered processes call showMessageDialog with their respective held keys.
239
- *
240
247
  * @param parameters Parameters to show message dialog.
241
248
  * @param bindingContext Bind context of the page.
242
- * @param showBoundMessages Should bound messages be shown.
249
+ * @param showBoundTransitionMessages Should bound messages be shown.
243
250
  * @param customMessages Custom messages to add.
244
251
  * @param success Success callback.
245
252
  * @param failure Failure callback.
@@ -248,35 +255,58 @@ class MessageHandler extends ControllerExtension {
248
255
  processAndShowMessages(
249
256
  parameters: ShowMessageDialogParameter,
250
257
  bindingContext: ODataV4Context,
251
- showBoundMessages: boolean,
258
+ showBoundTransitionMessages: boolean,
252
259
  customMessages: CustomMessage[],
253
260
  success: () => void,
254
261
  failure: () => void,
255
262
  viewType?: string
256
263
  ): void {
257
- const { concurrentEditFlag, control, sActionName, onBeforeShowMessage, unHoldKey, forceShowUIElement = false } = parameters;
264
+ const {
265
+ concurrentEditFlag,
266
+ control,
267
+ sActionName,
268
+ onBeforeShowMessage,
269
+ unHoldKey,
270
+ forceShowUIElement = false,
271
+ overrideUIDecision,
272
+ showBoundStateMessages
273
+ } = parameters;
274
+ this.holdMsgsToShow = true;
258
275
 
259
276
  // Create a UI decision.
260
277
  const newUIDecisions = messageHandling.getUIDecisions(
261
278
  customMessages,
262
279
  bindingContext,
263
- showBoundMessages,
280
+ showBoundTransitionMessages,
264
281
  concurrentEditFlag,
265
282
  control,
266
283
  sActionName,
267
284
  onBeforeShowMessage,
268
- viewType
285
+ viewType,
286
+ showBoundStateMessages
269
287
  );
270
- this.updateUIDecisions(newUIDecisions);
271
- this.removeHoldKey(unHoldKey);
288
+ this.updateUIDecisions(newUIDecisions, overrideUIDecision);
289
+ this.removeHoldKey(unHoldKey ?? control?.getId());
290
+ this.showMessagesWithCondtions(forceShowUIElement, success, failure);
291
+ }
292
+
293
+ /**
294
+ * Show Messages in the UI based on conditions.
295
+ * @param forceShowUIElement
296
+ * @param success
297
+ * @param failure
298
+ */
299
+ showMessagesWithCondtions(forceShowUIElement = false, success?: () => void, failure?: () => void): void {
272
300
  const showUIElement = forceShowUIElement || this.checkToShowUIElement();
273
301
  if (showUIElement && this.uiDecisions) {
274
302
  // Show UI element for the present decision and clear the decision.
275
303
  messageHandling.showMessagesInUI(this.uiDecisions).then(success).catch(failure);
276
304
  this.uiDecisions = undefined;
305
+ this.clearStrictWarningMessages();
306
+ this.holdMsgsToShow = false;
277
307
  } else {
278
308
  Log.info("FE : V4 : MessageHandler : Holding messages until a registered process ");
279
- success();
309
+ success?.();
280
310
  }
281
311
  }
282
312
 
@@ -284,7 +314,6 @@ class MessageHandler extends ControllerExtension {
284
314
  * You can remove the existing transition message from the message model with this method.
285
315
  * With every user interaction that causes server communication (like clicking on an action, changing data),
286
316
  * this method removes the existing transition messages from the message model.
287
- *
288
317
  * @param [keepBoundMessage] Checks if the bound transition messages are not to be removed
289
318
  * @param keepUnboundMessage
290
319
  * @param sPathToBeRemoved
@@ -301,7 +330,6 @@ class MessageHandler extends ControllerExtension {
301
330
 
302
331
  /**
303
332
  * Method that returns all the parameters needed to handle the navigation to the error page.
304
- *
305
333
  * @param mParameters
306
334
  * @returns The parameters necessary for the navigation to the error page
307
335
  */
@@ -374,17 +402,19 @@ class MessageHandler extends ControllerExtension {
374
402
 
375
403
  /**
376
404
  * Update the existing UI decisions with the new ones.
377
- *
378
405
  * @param newUIDecisions In comming UI decisions.
406
+ * @param overrideUIDecision Override the existing UI decision to show messages with the new one.
407
+ *
408
+ * 'overrideUIDecision', This would be needed when there is a change in page context and the paramters to create the new UI decision are different.
379
409
  */
380
- updateUIDecisions(newUIDecisions: MessageUIDecisions): void {
410
+ updateUIDecisions(newUIDecisions: MessageUIDecisions, overrideUIDecision = false): void {
381
411
  const oldUIDecisions = this.uiDecisions;
382
412
  let mergedUIDecision;
383
- if (oldUIDecisions) {
413
+ if (oldUIDecisions && overrideUIDecision === false) {
384
414
  const allMessagesToShow = Array.from(new Set([...oldUIDecisions.messagesToShow, ...newUIDecisions.messagesToShow]));
385
415
  const elements = [oldUIDecisions.uiElementToUse, newUIDecisions.uiElementToUse];
386
416
  // Default we show dialog
387
- let uiElementToUse: MessageUIDecisions["uiElementToUse"] = allMessagesToShow.length > 0 ? "Dialog" : "None";
417
+ let uiElementToUse: SupportedUIElement = allMessagesToShow.length > 0 ? "Dialog" : "None";
388
418
 
389
419
  if (allMessagesToShow.length === 1) {
390
420
  // Single message, we check for specific UI Element to use.
@@ -399,8 +429,7 @@ class MessageHandler extends ControllerExtension {
399
429
  messagesToShow: allMessagesToShow,
400
430
  uiElementToUse,
401
431
  contextNeedsEtagRefresh: oldUIDecisions.contextNeedsEtagRefresh || newUIDecisions.contextNeedsEtagRefresh,
402
- containsBoundTransition: oldUIDecisions.containsBoundTransition || newUIDecisions.containsBoundTransition,
403
- showChangeSetErrorDialog: oldUIDecisions.showChangeSetErrorDialog || newUIDecisions.showChangeSetErrorDialog
432
+ containsBoundTransition: oldUIDecisions.containsBoundTransition || newUIDecisions.containsBoundTransition
404
433
  };
405
434
  } else {
406
435
  mergedUIDecision = newUIDecisions;
@@ -411,7 +440,6 @@ class MessageHandler extends ControllerExtension {
411
440
 
412
441
  /**
413
442
  * Remove held key.
414
- *
415
443
  * @param inKey Key to remove.
416
444
  */
417
445
  removeHoldKey(inKey?: string): void {
@@ -425,12 +453,30 @@ class MessageHandler extends ControllerExtension {
425
453
  * @returns Boolean
426
454
  */
427
455
  checkToShowUIElement(): boolean {
428
- return this.holdKeys.length > 0 ? false : true;
456
+ return this.holdMsgsToShow && (this.holdKeys.length > 0 ? false : true);
457
+ }
458
+
459
+ /**
460
+ * Hold messages for the control.
461
+ * @param control
462
+ */
463
+ holdMessagesForControl(control: Control): void {
464
+ const identifier = control.getId();
465
+ this.registerToHoldMessages(identifier);
466
+ }
467
+
468
+ /**
469
+ * Release message hold by a control.
470
+ * @param control
471
+ */
472
+ releaseHoldByControl(control?: Control): void {
473
+ const identifier = control?.getId();
474
+ this.removeHoldKey(identifier);
475
+ this.showMessagesWithCondtions();
429
476
  }
430
477
 
431
478
  /**
432
479
  * Shows a message page or a message dialog based on the messages in the message dialog.
433
- *
434
480
  * @param [parameters]
435
481
  * @returns A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
436
482
  * to be shown, the promise is resolved immediately
@@ -12,9 +12,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/controll
12
12
  var finalExtension = ClassSupport.finalExtension;
13
13
  var extensible = ClassSupport.extensible;
14
14
  var defineUI5Class = ClassSupport.defineUI5Class;
15
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
16
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
17
- function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
15
+ function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
16
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
17
+ 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; }
18
18
  let PageReadyControllerExtension = (_dec = defineUI5Class("sap.fe.core.controllerextensions.PageReady"), _dec2 = methodOverride(), _dec3 = methodOverride(), _dec4 = publicExtension(), _dec5 = finalExtension(), _dec6 = methodOverride("_routing"), _dec7 = methodOverride("_routing"), _dec8 = methodOverride("_routing"), _dec9 = publicExtension(), _dec10 = finalExtension(), _dec11 = publicExtension(), _dec12 = finalExtension(), _dec13 = publicExtension(), _dec14 = finalExtension(), _dec15 = publicExtension(), _dec16 = finalExtension(), _dec17 = publicExtension(), _dec18 = finalExtension(), _dec19 = privateExtension(), _dec20 = extensible(OverrideExecution.Instead), _dec21 = publicExtension(), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
19
19
  _inheritsLoose(PageReadyControllerExtension, _ControllerExtension);
20
20
  function PageReadyControllerExtension() {
@@ -274,4 +274,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/controll
274
274
  }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onExit", [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "onExit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "waitFor", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "waitFor"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRouteMatched", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "onRouteMatched"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRouteMatchedFinished", [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onRouteMatchedFinished"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAfterBinding", [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "onAfterBinding"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isPageReady", [_dec9, _dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "isPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "waitPageReady", [_dec11, _dec12], Object.getOwnPropertyDescriptor(_class2.prototype, "waitPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachEventOnce", [_dec13, _dec14], Object.getOwnPropertyDescriptor(_class2.prototype, "attachEventOnce"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachEvent", [_dec15, _dec16], Object.getOwnPropertyDescriptor(_class2.prototype, "attachEvent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "detachEvent", [_dec17, _dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "detachEvent"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isContextExpected", [_dec19, _dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "isContextExpected"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "checkPageReadyDebounced", [_dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "checkPageReadyDebounced"), _class2.prototype)), _class2)) || _class);
275
275
  return PageReadyControllerExtension;
276
276
  }, false);
277
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uIiwiZGVmaW5lVUk1Q2xhc3MiLCJtZXRob2RPdmVycmlkZSIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJwYWdlUmVhZHlUaW1lb3V0RGVmYXVsdCIsIm9uSW5pdCIsIl9uYldhaXRzIiwiX29FdmVudFByb3ZpZGVyIiwiRXZlbnRQcm92aWRlciIsInZpZXciLCJnZXRWaWV3IiwiYXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJwYWdlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJtYW5pZmVzdENvbnRlbnQiLCJnZXRNYW5pZmVzdCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJhdHRhY2hDb250YWluZXJEZWZpbmVkIiwib0V2ZW50IiwicmVnaXN0ZXJDb250YWluZXIiLCJnZXRQYXJhbWV0ZXIiLCJyb290Q29udHJvbENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJwbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwiaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCIsImF0dGFjaEV2ZW50IiwiZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzIiwiaVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXAiLCJxdWVyeVdhdGNoZXIiLCJEYXRhUXVlcnlXYXRjaGVyIiwiY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQiLCJiaW5kIiwib25FeGl0IiwiX29BcHBDb21wb25lbnQiLCJfb0NvbnRhaW5lciIsIl9mbkNvbnRhaW5lckRlbGVnYXRlIiwicmVtb3ZlRXZlbnREZWxlZ2F0ZSIsIndhaXRGb3IiLCJvUHJvbWlzZSIsImZpbmFsbHkiLCJzZXRUaW1lb3V0IiwiY2F0Y2giLCJvblJvdXRlTWF0Y2hlZCIsIl9iSXNQYWdlUmVhZHkiLCJvblJvdXRlTWF0Y2hlZEZpbmlzaGVkIiwib25BZnRlckJpbmRpbmdQcm9taXNlIiwicmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMiLCJtYWluQmluZGluZ0NvbnRleHQiLCJtYWluT2JqZWN0QmluZGluZyIsImdldEJpbmRpbmciLCJyZWdpc3RlckJpbmRpbmciLCJhUHJvbWlzZXMiLCJhQ29udHJvbHMiLCJmaW5kQWdncmVnYXRlZE9iamVjdHMiLCJmb3JFYWNoIiwib0VsZW1lbnQiLCJvT2JqZWN0QmluZGluZyIsImdldE9iamVjdEJpbmRpbmciLCJhQmluZGluZ0tleXMiLCJPYmplY3QiLCJrZXlzIiwibUJpbmRpbmdJbmZvcyIsInNQcm9wZXJ0eU5hbWUiLCJvTGlzdEJpbmRpbmciLCJiaW5kaW5nIiwiaXNBIiwiYlRhYmxlc0NoYXJ0c0xvYWRlZCIsInB1c2giLCJyZWdpc3RlclRhYmxlT3JDaGFydCIsInJlZ2lzdGVyRmlsdGVyQmFyIiwib25BZnRlckJpbmRpbmciLCJvQmluZGluZ0NvbnRleHQiLCJwYXJhbWV0ZXJzIiwicGFnZVJlYWR5VGltZW91dFRpbWVyIiwiY2xlYXJUaW1lb3V0IiwiZGVmZXJyZWRDcmVhdGlvbiIsImlzQ29udGV4dEV4cGVjdGVkIiwiTG9nIiwiZXJyb3IiLCJmaXJlRXZlbnQiLCJkaXNhYmxlQW5pbWF0aW9uIiwiYkhhc0NvbnRleHQiLCJfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkIiwiYXR0YWNoRXZlbnRPbmNlIiwidW5kZWZpbmVkIiwicmVzZXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyIsImxlbmd0aCIsImFsbCIsImlzUGFnZVJlYWR5Iiwid2FpdFBhZ2VSZWFkeSIsInNFdmVudElkIiwib0RhdGEiLCJmbkZ1bmN0aW9uIiwib0xpc3RlbmVyIiwiZGV0YWNoRXZlbnQiLCJvQ29udGFpbmVyIiwib25CZWZvcmVTaG93IiwiYlNob3duIiwib25CZWZvcmVIaWRlIiwib25BZnRlclNob3ciLCJ0aGVuIiwiYWRkRXZlbnREZWxlZ2F0ZSIsImJGcm9tTmF2IiwicGFnZVJlYWR5VGltZXIiLCJtb2RlbCIsImdldE1vZGVsIiwidGltZU91dCIsImdldE9wdGltaXN0aWNCYXRjaEVuYWJsZXIiLCJfY2hlY2tQYWdlUmVhZHkiLCJmblVJVXBkYXRlZCIsIlJlbmRlcmluZyIsImlzUGVuZGluZyIsImRldGFjaFVJVXBkYXRlZCIsIl9iV2FpdGluZ0ZvclJlZnJlc2giLCJjaGVja1VJVXBkYXRlZCIsImlzRGF0YVJlY2VpdmVkIiwicmVzZXREYXRhUmVjZWl2ZWQiLCJhdHRhY2hVSVVwZGF0ZWQiLCJUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkiLCJnZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlIiwiaXNTZWFyY2hQZW5kaW5nIiwiZm9yY2VQYWdlUmVhZHkiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdlUmVhZHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIG1ldGhvZE92ZXJyaWRlLCBwcml2YXRlRXh0ZW5zaW9uLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgRGF0YVF1ZXJ5V2F0Y2hlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcGFnZVJlYWR5L0RhdGFRdWVyeVdhdGNoZXJcIjtcbmltcG9ydCBUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkgZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1RlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgRXZlbnRQcm92aWRlciBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb21wb25lbnRDb250YWluZXIgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudENvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFJlbmRlcmluZyBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyaW5nXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvQmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCIuLi9Db21tb25VdGlsc1wiO1xuXG50eXBlIFJlbmRlcmluZ0V4ID0gdHlwZW9mIFJlbmRlcmluZyAmIHtcblx0YXR0YWNoVUlVcGRhdGVkOiBGdW5jdGlvbjtcblx0ZGV0YWNoVUlVcGRhdGVkOiBGdW5jdGlvbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QYWdlUmVhZHlcIilcbmNsYXNzIFBhZ2VSZWFkeUNvbnRyb2xsZXJFeHRlbnNpb24gZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRwcml2YXRlIF9vRXZlbnRQcm92aWRlciE6IEV2ZW50UHJvdmlkZXI7XG5cblx0cHJpdmF0ZSB2aWV3ITogVmlldztcblxuXHRwcml2YXRlIGFwcENvbXBvbmVudCE6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIHBhZ2VDb21wb25lbnQhOiBDb21wb25lbnQ7XG5cblx0cHJpdmF0ZSBfb0NvbnRhaW5lciE6IENvbnRyb2w7XG5cblx0cHJpdmF0ZSBfYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkITogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9mbkNvbnRhaW5lckRlbGVnYXRlPzogb2JqZWN0O1xuXG5cdHByaXZhdGUgX25iV2FpdHMhOiBudW1iZXI7XG5cblx0cHJpdmF0ZSBfYklzUGFnZVJlYWR5ITogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9iV2FpdGluZ0ZvclJlZnJlc2ghOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYlNob3duITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGJIYXNDb250ZXh0ITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGJUYWJsZXNDaGFydHNMb2FkZWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHF1ZXJ5V2F0Y2hlciE6IERhdGFRdWVyeVdhdGNoZXI7XG5cblx0cHJpdmF0ZSBvbkFmdGVyQmluZGluZ1Byb21pc2UhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dERlZmF1bHQgPSA3MDAwO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dFRpbWVyPzogbnVtYmVyO1xuXG5cdHByaXZhdGUgcGFnZVJlYWR5VGltZW91dD86IG51bWJlcjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKClcblx0cHVibGljIG9uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9uYldhaXRzID0gMDtcblx0XHR0aGlzLl9vRXZlbnRQcm92aWRlciA9IHRoaXMuX29FdmVudFByb3ZpZGVyID8gdGhpcy5fb0V2ZW50UHJvdmlkZXIgOiBuZXcgRXZlbnRQcm92aWRlcigpO1xuXHRcdHRoaXMudmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXG5cdFx0dGhpcy5hcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy52aWV3KTtcblx0XHR0aGlzLnBhZ2VDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy52aWV3KSBhcyBDb21wb25lbnQ7XG5cdFx0Y29uc3QgbWFuaWZlc3RDb250ZW50ID0gdGhpcy5hcHBDb21wb25lbnQuZ2V0TWFuaWZlc3QoKTtcblx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVvdXQgPSBtYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdPy5wYWdlUmVhZHlUaW1lb3V0ID8/IHRoaXMucGFnZVJlYWR5VGltZW91dERlZmF1bHQ7XG5cblx0XHRpZiAodGhpcy5wYWdlQ29tcG9uZW50Py5hdHRhY2hDb250YWluZXJEZWZpbmVkKSB7XG5cdFx0XHR0aGlzLnBhZ2VDb21wb25lbnQuYXR0YWNoQ29udGFpbmVyRGVmaW5lZCgob0V2ZW50OiBFdmVudDx7IGNvbnRhaW5lcjogQ29tcG9uZW50Q29udGFpbmVyIH0+KSA9PlxuXHRcdFx0XHR0aGlzLnJlZ2lzdGVyQ29udGFpbmVyKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb250YWluZXJcIikpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyQ29udGFpbmVyKHRoaXMudmlldyk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgcm9vdENvbnRyb2xDb250cm9sbGVyID0gdGhpcy5hcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdFx0Y29uc3QgcGxhY2Vob2xkZXIgPSByb290Q29udHJvbENvbnRyb2xsZXI/LmdldFBsYWNlaG9sZGVyPy4oKTtcblx0XHRpZiAocGxhY2Vob2xkZXI/LmlzUGxhY2Vob2xkZXJEZWJ1Z0VuYWJsZWQoKSkge1xuXHRcdFx0dGhpcy5hdHRhY2hFdmVudChcblx0XHRcdFx0XCJwYWdlUmVhZHlcIixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdHBsYWNlaG9sZGVyLmdldFBsYWNlaG9sZGVyRGVidWdTdGF0cygpLmlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoaXNcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmF0dGFjaEV2ZW50KFxuXHRcdFx0XHRcImhlcm9lc0JhdGNoUmVjZWl2ZWRcIixcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdHBsYWNlaG9sZGVyLmdldFBsYWNlaG9sZGVyRGVidWdTdGF0cygpLmlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGlzXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMucXVlcnlXYXRjaGVyID0gbmV3IERhdGFRdWVyeVdhdGNoZXIodGhpcy5fb0V2ZW50UHJvdmlkZXIsIHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQuYmluZCh0aGlzKSk7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRwdWJsaWMgb25FeGl0KCk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBDb21wb25lbnQ7XG5cdFx0aWYgKHRoaXMuX29Db250YWluZXIgJiYgdGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSkge1xuXHRcdFx0dGhpcy5fb0NvbnRhaW5lci5yZW1vdmVFdmVudERlbGVnYXRlKHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUpO1xuXHRcdH1cblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgd2FpdEZvcihvUHJvbWlzZTogUHJvbWlzZTx1bmtub3duPik6IHZvaWQge1xuXHRcdHRoaXMuX25iV2FpdHMrKztcblx0XHRvUHJvbWlzZVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLl9uYldhaXRzLS07XG5cdFx0XHRcdH0sIDApO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChudWxsKTtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdG9uUm91dGVNYXRjaGVkKCk6IHZvaWQge1xuXHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0YXN5bmMgb25Sb3V0ZU1hdGNoZWRGaW5pc2hlZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLm9uQWZ0ZXJCaW5kaW5nUHJvbWlzZTtcblx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMobWFpbkJpbmRpbmdDb250ZXh0PzogQ29udGV4dCk6IFByb21pc2U8dm9pZD5bXSB7XG5cdFx0aWYgKG1haW5CaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0Y29uc3QgbWFpbk9iamVjdEJpbmRpbmcgPSBtYWluQmluZGluZ0NvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG1haW5PYmplY3RCaW5kaW5nKTtcblx0XHR9XG5cblx0XHRjb25zdCBhUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXHRcdGNvbnN0IGFDb250cm9scyA9IHRoaXMuZ2V0VmlldygpLmZpbmRBZ2dyZWdhdGVkT2JqZWN0cyh0cnVlKTtcblxuXHRcdGFDb250cm9scy5mb3JFYWNoKChvRWxlbWVudDogTWFuYWdlZE9iamVjdCAmIHsgbUJpbmRpbmdJbmZvcz86IFJlY29yZDxzdHJpbmcsIHsgYmluZGluZz86IEJpbmRpbmcgfT4gfSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qgb09iamVjdEJpbmRpbmcgPSBvRWxlbWVudC5nZXRPYmplY3RCaW5kaW5nKCk7XG5cdFx0XHRpZiAob09iamVjdEJpbmRpbmcpIHtcblx0XHRcdFx0Ly8gUmVnaXN0ZXIgb24gYWxsIG9iamVjdCBiaW5kaW5nIChtb3N0bHkgdXNlZCBvbiBvYmplY3QgcGFnZXMpXG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyQmluZGluZyhvT2JqZWN0QmluZGluZyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBhQmluZGluZ0tleXMgPSBPYmplY3Qua2V5cyhvRWxlbWVudD8ubUJpbmRpbmdJbmZvcyA/PyB7fSk7XG5cdFx0XHRcdGFCaW5kaW5nS2V5cy5mb3JFYWNoKChzUHJvcGVydHlOYW1lKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb0xpc3RCaW5kaW5nID0gb0VsZW1lbnQ/Lm1CaW5kaW5nSW5mb3M/LltzUHJvcGVydHlOYW1lXS5iaW5kaW5nO1xuXG5cdFx0XHRcdFx0aWYgKG9MaXN0QmluZGluZyAmJiBvTGlzdEJpbmRpbmcuaXNBPE9EYXRhTGlzdEJpbmRpbmc+KFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyQmluZGluZyhvTGlzdEJpbmRpbmcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHQvLyBUaGlzIGlzIGRpcnR5IGJ1dCBNRENUYWJsZXMgYW5kIE1EQ0NoYXJ0cyBoYXZlIGEgd2VpcmQgbG9hZGluZyBsaWZlY3ljbGVcblx0XHRcdGlmIChvRWxlbWVudC5pc0E8TURDVGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSB8fCBvRWxlbWVudC5pc0E8Q2hhcnQ+KFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHR0aGlzLmJUYWJsZXNDaGFydHNMb2FkZWQgPSBmYWxzZTtcblx0XHRcdFx0YVByb21pc2VzLnB1c2godGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJUYWJsZU9yQ2hhcnQob0VsZW1lbnQpKTtcblx0XHRcdH0gZWxzZSBpZiAob0VsZW1lbnQuaXNBPEZpbHRlckJhcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckZpbHRlckJhcihvRWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gYVByb21pc2VzO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25BZnRlckJpbmRpbmcob0JpbmRpbmdDb250ZXh0PzogQ29udGV4dCwgcGFyYW1ldGVycz86IHsgZGVmZXJyZWRDcmVhdGlvbj86IGJvb2xlYW4gfSk6IHZvaWQge1xuXHRcdC8vIEluIGNhc2UgdGhlIHBhZ2UgaXMgcmViaW5kIHdlIG5lZWQgdG8gY2xlYXIgdGhlIHRpbWVyIChlZzogaW4gRkNMLCB0aGUgdXNlciBjYW4gc2VsZWN0IDIgaXRlbXMgc3VjY2Vzc2l2ZWx5IGluIHRoZSBsaXN0IHJlcG9ydClcblx0XHRpZiAodGhpcy5wYWdlUmVhZHlUaW1lb3V0VGltZXIpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lcik7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXJhbWV0ZXJzPy5kZWZlcnJlZENyZWF0aW9uIHx8ICF0aGlzLmlzQ29udGV4dEV4cGVjdGVkKCkgfHwgb0JpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFx0YFRoZSBQYWdlUmVhZHkgRXZlbnQgd2FzIG5vdCBmaXJlZCB3aXRoaW4gdGhlICR7dGhpcy5wYWdlUmVhZHlUaW1lb3V0fSBtcyB0aW1lb3V0IC4gSXQgaGFzIGJlZW4gZm9yY2VkLiBQbGVhc2UgY29udGFjdCB5b3VyIGFwcGxpY2F0aW9uIGRldmVsb3BlciBmb3IgZnVydGhlciBhbmFseXNpc2Bcblx0XHRcdFx0KTtcblx0XHRcdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIuZmlyZUV2ZW50KFwicGFnZVJlYWR5XCIpO1xuXHRcdFx0fSwgdGhpcy5wYWdlUmVhZHlUaW1lb3V0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gV2UgYXJlIGluIGRlZmVycmVkIGNyZWF0aW9uIHdpdGggbm8gY29udGV4dCwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29udGV4dCB0byBiZSBzZXQgYnkgdGhlIGNyZWF0ZSBkaWFsb2dcblx0XHRcdC8vIFdlIGFsc28gbmVlZCB0byBkaXNhYmxlIHRoZSBwbGFjZWhvbGRlciBhbmltYXRpb25cblx0XHRcdGNvbnN0IHJvb3RDb250cm9sQ29udHJvbGxlciA9IHRoaXMuYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0Y29uc3QgcGxhY2Vob2xkZXIgPSByb290Q29udHJvbENvbnRyb2xsZXI/LmdldFBsYWNlaG9sZGVyPy4oKTtcblx0XHRcdHBsYWNlaG9sZGVyPy5kaXNhYmxlQW5pbWF0aW9uKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSAmJiAhb0JpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHQvLyBGb3JjZSB0byBtZW50aW9uIHdlIGFyZSBleHBlY3RpbmcgZGF0YVxuXHRcdFx0dGhpcy5iSGFzQ29udGV4dCA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmJIYXNDb250ZXh0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5fYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkID0gdHJ1ZTtcblxuXHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwicGFnZVJlYWR5XCIsIG51bGwsICgpID0+IHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lcik7XG5cdFx0XHR0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lciA9IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuX2JBZnRlckJpbmRpbmdBbHJlYWR5QXBwbGllZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVzZXQoKTtcblx0XHR9KTtcblxuXHRcdHRoaXMub25BZnRlckJpbmRpbmdQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRcdGNvbnN0IGFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyA9IHRoaXMucmVnaXN0ZXJBZ2dyZWdhdGVkQ29udHJvbHMob0JpbmRpbmdDb250ZXh0KTtcblxuXHRcdFx0aWYgKGFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGF3YWl0IFByb21pc2UuYWxsKGFUYWJsZUNoYXJ0SW5pdGlhbGl6ZWRQcm9taXNlcyk7XG5cdFx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCA9IHRydWU7XG5cdFx0XHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGlzUGFnZVJlYWR5KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLl9iSXNQYWdlUmVhZHk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGFzeW5jIHdhaXRQYWdlUmVhZHkoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc1BhZ2VSZWFkeSgpKSB7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFxuXHRcdFx0XHRcdFwicGFnZVJlYWR5XCIsXG5cdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGF0dGFjaEV2ZW50T25jZShzRXZlbnRJZDogc3RyaW5nLCBvRGF0YTogb2JqZWN0IHwgbnVsbCwgZm5GdW5jdGlvbj86IEZ1bmN0aW9uLCBvTGlzdGVuZXI/OiBvYmplY3QpOiBFdmVudFByb3ZpZGVyIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG5cdFx0cmV0dXJuIHRoaXMuX29FdmVudFByb3ZpZGVyLmF0dGFjaEV2ZW50T25jZShzRXZlbnRJZCwgb0RhdGEgYXMgb2JqZWN0LCBmbkZ1bmN0aW9uIGFzIEZ1bmN0aW9uLCBvTGlzdGVuZXIpO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBhdHRhY2hFdmVudChzRXZlbnRJZDogc3RyaW5nLCBvRGF0YTogb2JqZWN0IHwgbnVsbCwgZm5GdW5jdGlvbjogRnVuY3Rpb24sIG9MaXN0ZW5lcjogb2JqZWN0KTogRXZlbnRQcm92aWRlciB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuXHRcdHJldHVybiB0aGlzLl9vRXZlbnRQcm92aWRlci5hdHRhY2hFdmVudChzRXZlbnRJZCwgb0RhdGEgYXMgb2JqZWN0LCBmbkZ1bmN0aW9uLCBvTGlzdGVuZXIpO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyBkZXRhY2hFdmVudChzRXZlbnRJZDogc3RyaW5nLCBmbkZ1bmN0aW9uOiBGdW5jdGlvbik6IEV2ZW50UHJvdmlkZXIge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuZGV0YWNoRXZlbnQoc0V2ZW50SWQsIGZuRnVuY3Rpb24pO1xuXHR9XG5cblx0cHJpdmF0ZSByZWdpc3RlckNvbnRhaW5lcihvQ29udGFpbmVyOiBDb250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5fb0NvbnRhaW5lciA9IG9Db250YWluZXI7XG5cdFx0dGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlU2hvdzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRvbkJlZm9yZUhpZGU6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0dGhpcy5iU2hvd24gPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0b25BZnRlclNob3c6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0dGhpcy5iU2hvd24gPSB0cnVlO1xuXHRcdFx0XHR0aGlzLm9uQWZ0ZXJCaW5kaW5nUHJvbWlzZT8udGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQodHJ1ZSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0dGhpcy5fb0NvbnRhaW5lcj8uYWRkRXZlbnREZWxlZ2F0ZSh0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlLCB0aGlzKTtcblx0fVxuXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0cHVibGljIGlzQ29udGV4dEV4cGVjdGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRwdWJsaWMgY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoYkZyb21OYXYgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnBhZ2VSZWFkeVRpbWVyKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5wYWdlUmVhZHlUaW1lcik7XG5cdFx0fVxuXHRcdGNvbnN0IG1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRcdGxldCB0aW1lT3V0OiBudW1iZXI7XG5cdFx0Ly8gaXNDb250ZXh0RXhwZWN0ZWQgPSB0cnVlIHdoZW4gT2JqZWN0IFBhZ2UgaXMgZGlzcGxheWVkXG5cdFx0aWYgKChtb2RlbCAmJiBtb2RlbC5nZXRPcHRpbWlzdGljQmF0Y2hFbmFibGVyKCkgPT09IG51bGwpIHx8IHRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSkge1xuXHRcdFx0dGltZU91dCA9IDIwMDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gV2UgYXJlIHdhaXRpbmcgbGVzcyB0aW1lIGJlY2F1c2UgZGF0YSBpcyBhbHJlYWR5IHRoZXJlIChvcHRpbWlzdGljQmF0Y2gpXG5cdFx0XHR0aW1lT3V0ID0gMjA7XG5cdFx0fVxuXHRcdHRoaXMucGFnZVJlYWR5VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuX2NoZWNrUGFnZVJlYWR5KGJGcm9tTmF2KTtcblx0XHR9LCB0aW1lT3V0KSBhcyB1bmtub3duIGFzIG51bWJlcjtcblx0fVxuXG5cdHB1YmxpYyBfY2hlY2tQYWdlUmVhZHkoYkZyb21OYXYgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGNvbnN0IGZuVUlVcGRhdGVkID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0Ly8gV2FpdCB1bnRpbCB0aGUgVUkgaXMgbm8gbG9uZ2VyIGRpcnR5XG5cdFx0XHRpZiAoIVJlbmRlcmluZy5pc1BlbmRpbmcoKSkge1xuXHRcdFx0XHQoUmVuZGVyaW5nIGFzIFJlbmRlcmluZ0V4KS5kZXRhY2hVSVVwZGF0ZWQoZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQvLyBJbiBjYXNlIFVJVXBkYXRlIGRvZXMgbm90IGdldCBjYWxsZWQsIGNoZWNrIGlmIFVJIGlzIG5vdCBkaXJ0eSBhbmQgdGhlbiBjYWxsIF9jaGVja1BhZ2VSZWFkeVxuXHRcdGNvbnN0IGNoZWNrVUlVcGRhdGVkID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKFJlbmRlcmluZy5pc1BlbmRpbmcoKSkge1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2gpIHtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gZmFsc2U7XG5cdFx0XHRcdChSZW5kZXJpbmcgYXMgUmVuZGVyaW5nRXgpLmRldGFjaFVJVXBkYXRlZChmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5iU2hvd24gJiZcblx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLmlzRGF0YVJlY2VpdmVkKCkgIT09IGZhbHNlICYmXG5cdFx0XHR0aGlzLmJUYWJsZXNDaGFydHNMb2FkZWQgIT09IGZhbHNlICYmXG5cdFx0XHQoIXRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSB8fCB0aGlzLmJIYXNDb250ZXh0KSAvLyBFaXRoZXIgbm8gY29udGV4dCBpcyBleHBlY3RlZCBvciB0aGVyZSBpcyBvbmVcblx0XHQpIHtcblx0XHRcdGlmICh0aGlzLnF1ZXJ5V2F0Y2hlci5pc0RhdGFSZWNlaXZlZCgpID09PSB0cnVlICYmICFiRnJvbU5hdiAmJiAhdGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoICYmIFJlbmRlcmluZy5pc1BlbmRpbmcoKSkge1xuXHRcdFx0XHQvLyBJZiB3ZSByZXF1ZXN0ZWQgZGF0YSB3ZSBnZXQgbm90aWZpZWQgYXMgc29vbiBhcyB0aGUgZGF0YSBhcnJpdmVkLCBzbyBiZWZvcmUgdGhlIG5leHQgcmVuZGVyaW5nIHRpY2tcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVzZXREYXRhUmVjZWl2ZWQoKTtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gdHJ1ZTtcblx0XHRcdFx0KFJlbmRlcmluZyBhcyBSZW5kZXJpbmdFeCkuYXR0YWNoVUlVcGRhdGVkKGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0c2V0VGltZW91dChjaGVja1VJVXBkYXRlZCwgNTAwKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdCghdGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoICYmIFJlbmRlcmluZy5pc1BlbmRpbmcoKSkgfHxcblx0XHRcdFx0dGhpcy5fbmJXYWl0cyAhPT0gMCB8fFxuXHRcdFx0XHRUZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnkuZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSgpID4gMCB8fFxuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5pc1NlYXJjaFBlbmRpbmcoKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCA9IHRydWU7XG5cdFx0XHRcdChSZW5kZXJpbmcgYXMgUmVuZGVyaW5nRXgpLmF0dGFjaFVJVXBkYXRlZChmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHNldFRpbWVvdXQoY2hlY2tVSVVwZGF0ZWQsIDUwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2gpIHtcblx0XHRcdFx0Ly8gSW4gdGhlIGNhc2Ugd2UncmUgbm90IHdhaXRpbmcgZm9yIGFueSBkYXRhIChuYXZpZ2F0aW5nIGJhY2sgdG8gYSBwYWdlIHdlIGFscmVhZHkgaGF2ZSBsb2FkZWQpXG5cdFx0XHRcdC8vIGp1c3Qgd2FpdCBmb3IgYSBmcmFtZSB0byBmaXJlIHRoZSBldmVudC5cblx0XHRcdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5fb0V2ZW50UHJvdmlkZXIuZmlyZUV2ZW50KFwicGFnZVJlYWR5XCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGb3JjZXMgdGhlICdwYWdlUmVhZHknIGV2ZW50IHRvIGJlIHNlbnQuXG5cdCAqL1xuXHRmb3JjZVBhZ2VSZWFkeSgpOiB2b2lkIHtcblx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnZVJlYWR5Q29udHJvbGxlckV4dGVuc2lvbjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7TUE4Qk1BLDRCQUE0QixXQURqQ0MsY0FBYyxDQUFDLDRDQUE0QyxDQUFDLFVBOEMzREMsY0FBYyxFQUFFLFVBMkNoQkEsY0FBYyxFQUFFLFVBVWhCQyxlQUFlLEVBQUUsVUFDakJDLGNBQWMsRUFBRSxVQVloQkYsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQUsxQkEsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQTBDMUJBLGNBQWMsQ0FBQyxVQUFVLENBQUMsVUEwRDFCQyxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQUtoQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FrQmhCRCxlQUFlLEVBQUUsV0FDakJDLGNBQWMsRUFBRSxXQU1oQkQsZUFBZSxFQUFFLFdBQ2pCQyxjQUFjLEVBQUUsV0FNaEJELGVBQWUsRUFBRSxXQUNqQkMsY0FBYyxFQUFFLFdBMkJoQkMsZ0JBQWdCLEVBQUUsV0FDbEJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQU8sQ0FBQyxXQUtyQ0wsZUFBZSxFQUFFO0lBQUE7SUF4UGxCLHdDQUFjO01BQUE7TUFDYix1Q0FB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
277
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJtZXRob2RPdmVycmlkZSIsIl9kZWMzIiwiX2RlYzQiLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjNSIsImZpbmFsRXh0ZW5zaW9uIiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJfZGVjMTgiLCJfZGVjMTkiLCJwcml2YXRlRXh0ZW5zaW9uIiwiX2RlYzIwIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiSW5zdGVhZCIsIl9kZWMyMSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbGxlckV4dGVuc2lvbiIsIl9pbmhlcml0c0xvb3NlIiwiX3RoaXMiLCJjYWxsIiwicGFnZVJlYWR5VGltZW91dERlZmF1bHQiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkluaXQiLCJfbWFuaWZlc3RDb250ZW50JHNhcCIsIl90aGlzJHBhZ2VDb21wb25lbnQiLCJfcm9vdENvbnRyb2xDb250cm9sbGUiLCJfbmJXYWl0cyIsIl9vRXZlbnRQcm92aWRlciIsIkV2ZW50UHJvdmlkZXIiLCJ2aWV3IiwiZ2V0VmlldyIsImFwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwicGFnZUNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwibWFuaWZlc3RDb250ZW50IiwiZ2V0TWFuaWZlc3QiLCJwYWdlUmVhZHlUaW1lb3V0IiwiYXR0YWNoQ29udGFpbmVyRGVmaW5lZCIsIm9FdmVudCIsInJlZ2lzdGVyQ29udGFpbmVyIiwiZ2V0UGFyYW1ldGVyIiwicm9vdENvbnRyb2xDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwicGxhY2Vob2xkZXIiLCJnZXRQbGFjZWhvbGRlciIsImlzUGxhY2Vob2xkZXJEZWJ1Z0VuYWJsZWQiLCJhdHRhY2hFdmVudCIsImdldFBsYWNlaG9sZGVyRGVidWdTdGF0cyIsImlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJpSGVyb2VzQmF0Y2hSZWNlaXZlZEV2ZW50VGltZXN0YW1wIiwicXVlcnlXYXRjaGVyIiwiRGF0YVF1ZXJ5V2F0Y2hlciIsImNoZWNrUGFnZVJlYWR5RGVib3VuY2VkIiwiYmluZCIsIm9uRXhpdCIsIl9vQXBwQ29tcG9uZW50IiwiX29Db250YWluZXIiLCJfZm5Db250YWluZXJEZWxlZ2F0ZSIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJ3YWl0Rm9yIiwib1Byb21pc2UiLCJmaW5hbGx5Iiwic2V0VGltZW91dCIsImNhdGNoIiwib25Sb3V0ZU1hdGNoZWQiLCJfYklzUGFnZVJlYWR5Iiwib25Sb3V0ZU1hdGNoZWRGaW5pc2hlZCIsIm9uQWZ0ZXJCaW5kaW5nUHJvbWlzZSIsInJlZ2lzdGVyQWdncmVnYXRlZENvbnRyb2xzIiwibWFpbkJpbmRpbmdDb250ZXh0IiwibWFpbk9iamVjdEJpbmRpbmciLCJnZXRCaW5kaW5nIiwicmVnaXN0ZXJCaW5kaW5nIiwiYVByb21pc2VzIiwiYUNvbnRyb2xzIiwiZmluZEFnZ3JlZ2F0ZWRPYmplY3RzIiwiZm9yRWFjaCIsIm9FbGVtZW50Iiwib09iamVjdEJpbmRpbmciLCJnZXRPYmplY3RCaW5kaW5nIiwiYUJpbmRpbmdLZXlzIiwiT2JqZWN0Iiwia2V5cyIsIm1CaW5kaW5nSW5mb3MiLCJzUHJvcGVydHlOYW1lIiwiX29FbGVtZW50JG1CaW5kaW5nSW5mIiwib0xpc3RCaW5kaW5nIiwiYmluZGluZyIsImlzQSIsImJUYWJsZXNDaGFydHNMb2FkZWQiLCJwdXNoIiwicmVnaXN0ZXJUYWJsZU9yQ2hhcnQiLCJyZWdpc3RlckZpbHRlckJhciIsIm9uQWZ0ZXJCaW5kaW5nIiwib0JpbmRpbmdDb250ZXh0IiwicGFyYW1ldGVycyIsInBhZ2VSZWFkeVRpbWVvdXRUaW1lciIsImNsZWFyVGltZW91dCIsImRlZmVycmVkQ3JlYXRpb24iLCJpc0NvbnRleHRFeHBlY3RlZCIsIkxvZyIsImVycm9yIiwiZmlyZUV2ZW50IiwiX3Jvb3RDb250cm9sQ29udHJvbGxlMiIsImRpc2FibGVBbmltYXRpb24iLCJiSGFzQ29udGV4dCIsIl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQiLCJhdHRhY2hFdmVudE9uY2UiLCJ1bmRlZmluZWQiLCJyZXNldCIsIlByb21pc2UiLCJyZXNvbHZlIiwiYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzIiwibGVuZ3RoIiwiYWxsIiwiaXNQYWdlUmVhZHkiLCJ3YWl0UGFnZVJlYWR5Iiwic0V2ZW50SWQiLCJvRGF0YSIsImZuRnVuY3Rpb24iLCJvTGlzdGVuZXIiLCJkZXRhY2hFdmVudCIsIm9Db250YWluZXIiLCJfdGhpcyRfb0NvbnRhaW5lciIsIm9uQmVmb3JlU2hvdyIsImJTaG93biIsIm9uQmVmb3JlSGlkZSIsIm9uQWZ0ZXJTaG93IiwiX3RoaXMkb25BZnRlckJpbmRpbmdQIiwidGhlbiIsImFkZEV2ZW50RGVsZWdhdGUiLCJiRnJvbU5hdiIsImFyZ3VtZW50cyIsInBhZ2VSZWFkeVRpbWVyIiwibW9kZWwiLCJnZXRNb2RlbCIsInRpbWVPdXQiLCJnZXRPcHRpbWlzdGljQmF0Y2hFbmFibGVyIiwiX2NoZWNrUGFnZVJlYWR5IiwiZm5VSVVwZGF0ZWQiLCJSZW5kZXJpbmciLCJpc1BlbmRpbmciLCJkZXRhY2hVSVVwZGF0ZWQiLCJfYldhaXRpbmdGb3JSZWZyZXNoIiwiY2hlY2tVSVVwZGF0ZWQiLCJpc0RhdGFSZWNlaXZlZCIsInJlc2V0RGF0YVJlY2VpdmVkIiwiYXR0YWNoVUlVcGRhdGVkIiwiVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5IiwiZ2V0TnVtYmVyT2ZWaWV3c0luQ3JlYXRpb25TdGF0ZSIsImlzU2VhcmNoUGVuZGluZyIsImZvcmNlUGFnZVJlYWR5IiwiQ29udHJvbGxlckV4dGVuc2lvbiIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlBhZ2VSZWFkeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBmaW5hbEV4dGVuc2lvbiwgbWV0aG9kT3ZlcnJpZGUsIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBEYXRhUXVlcnlXYXRjaGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9wYWdlUmVhZHkvRGF0YVF1ZXJ5V2F0Y2hlclwiO1xuaW1wb3J0IFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBFdmVudFByb3ZpZGVyIGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbXBvbmVudENvbnRhaW5lciBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgUmVuZGVyaW5nIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJpbmdcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgTURDVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9CaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5cbnR5cGUgUmVuZGVyaW5nRXggPSB0eXBlb2YgUmVuZGVyaW5nICYge1xuXHRhdHRhY2hVSVVwZGF0ZWQ6IEZ1bmN0aW9uO1xuXHRkZXRhY2hVSVVwZGF0ZWQ6IEZ1bmN0aW9uO1xufTtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlBhZ2VSZWFkeVwiKVxuY2xhc3MgUGFnZVJlYWR5Q29udHJvbGxlckV4dGVuc2lvbiBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHByaXZhdGUgX29FdmVudFByb3ZpZGVyITogRXZlbnRQcm92aWRlcjtcblxuXHRwcml2YXRlIHZpZXchOiBWaWV3O1xuXG5cdHByaXZhdGUgYXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXG5cdHByaXZhdGUgcGFnZUNvbXBvbmVudCE6IENvbXBvbmVudDtcblxuXHRwcml2YXRlIF9vQ29udGFpbmVyITogQ29udHJvbDtcblxuXHRwcml2YXRlIF9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2ZuQ29udGFpbmVyRGVsZWdhdGU/OiBvYmplY3Q7XG5cblx0cHJpdmF0ZSBfbmJXYWl0cyE6IG51bWJlcjtcblxuXHRwcml2YXRlIF9iSXNQYWdlUmVhZHkhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX2JXYWl0aW5nRm9yUmVmcmVzaCE6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBiU2hvd24hOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYkhhc0NvbnRleHQhOiBib29sZWFuO1xuXG5cdHByaXZhdGUgYlRhYmxlc0NoYXJ0c0xvYWRlZD86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgcXVlcnlXYXRjaGVyITogRGF0YVF1ZXJ5V2F0Y2hlcjtcblxuXHRwcml2YXRlIG9uQWZ0ZXJCaW5kaW5nUHJvbWlzZSE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0RGVmYXVsdCA9IDcwMDA7XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0VGltZXI/OiBudW1iZXI7XG5cblx0cHJpdmF0ZSBwYWdlUmVhZHlUaW1lb3V0PzogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRwdWJsaWMgb25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuX25iV2FpdHMgPSAwO1xuXHRcdHRoaXMuX29FdmVudFByb3ZpZGVyID0gdGhpcy5fb0V2ZW50UHJvdmlkZXIgPyB0aGlzLl9vRXZlbnRQcm92aWRlciA6IG5ldyBFdmVudFByb3ZpZGVyKCk7XG5cdFx0dGhpcy52aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cblx0XHR0aGlzLmFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLnZpZXcpO1xuXHRcdHRoaXMucGFnZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLnZpZXcpIGFzIENvbXBvbmVudDtcblx0XHRjb25zdCBtYW5pZmVzdENvbnRlbnQgPSB0aGlzLmFwcENvbXBvbmVudC5nZXRNYW5pZmVzdCgpO1xuXHRcdHRoaXMucGFnZVJlYWR5VGltZW91dCA9IG1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0/LnBhZ2VSZWFkeVRpbWVvdXQgPz8gdGhpcy5wYWdlUmVhZHlUaW1lb3V0RGVmYXVsdDtcblxuXHRcdGlmICh0aGlzLnBhZ2VDb21wb25lbnQ/LmF0dGFjaENvbnRhaW5lckRlZmluZWQpIHtcblx0XHRcdHRoaXMucGFnZUNvbXBvbmVudC5hdHRhY2hDb250YWluZXJEZWZpbmVkKChvRXZlbnQ6IEV2ZW50PHsgY29udGFpbmVyOiBDb21wb25lbnRDb250YWluZXIgfT4pID0+XG5cdFx0XHRcdHRoaXMucmVnaXN0ZXJDb250YWluZXIob0V2ZW50LmdldFBhcmFtZXRlcihcImNvbnRhaW5lclwiKSlcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucmVnaXN0ZXJDb250YWluZXIodGhpcy52aWV3KTtcblx0XHR9XG5cblx0XHRjb25zdCByb290Q29udHJvbENvbnRyb2xsZXIgPSB0aGlzLmFwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblx0XHRjb25zdCBwbGFjZWhvbGRlciA9IHJvb3RDb250cm9sQ29udHJvbGxlcj8uZ2V0UGxhY2Vob2xkZXI/LigpO1xuXHRcdGlmIChwbGFjZWhvbGRlcj8uaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCgpKSB7XG5cdFx0XHR0aGlzLmF0dGFjaEV2ZW50KFxuXHRcdFx0XHRcInBhZ2VSZWFkeVwiLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXIuZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCkuaVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhpc1xuXHRcdFx0KTtcblx0XHRcdHRoaXMuYXR0YWNoRXZlbnQoXG5cdFx0XHRcdFwiaGVyb2VzQmF0Y2hSZWNlaXZlZFwiLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0cGxhY2Vob2xkZXIuZ2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCkuaUhlcm9lc0JhdGNoUmVjZWl2ZWRFdmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRoaXNcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5xdWVyeVdhdGNoZXIgPSBuZXcgRGF0YVF1ZXJ5V2F0Y2hlcih0aGlzLl9vRXZlbnRQcm92aWRlciwgdGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZC5iaW5kKHRoaXMpKTtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZSgpXG5cdHB1YmxpYyBvbkV4aXQoKTogdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb0FwcENvbXBvbmVudDtcblx0XHRpZiAodGhpcy5fb0NvbnRhaW5lciAmJiB0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlKSB7XG5cdFx0XHR0aGlzLl9vQ29udGFpbmVyLnJlbW92ZUV2ZW50RGVsZWdhdGUodGhpcy5fZm5Db250YWluZXJEZWxlZ2F0ZSk7XG5cdFx0fVxuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdHB1YmxpYyB3YWl0Rm9yKG9Qcm9taXNlOiBQcm9taXNlPHVua25vd24+KTogdm9pZCB7XG5cdFx0dGhpcy5fbmJXYWl0cysrO1xuXHRcdG9Qcm9taXNlXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX25iV2FpdHMtLTtcblx0XHRcdFx0fSwgMCk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKG51bGwpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKFwiX3JvdXRpbmdcIilcblx0b25Sb3V0ZU1hdGNoZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5fYklzUGFnZVJlYWR5ID0gZmFsc2U7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRhc3luYyBvblJvdXRlTWF0Y2hlZEZpbmlzaGVkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGF3YWl0IHRoaXMub25BZnRlckJpbmRpbmdQcm9taXNlO1xuXHRcdHRoaXMuY2hlY2tQYWdlUmVhZHlEZWJvdW5jZWQoKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlckFnZ3JlZ2F0ZWRDb250cm9scyhtYWluQmluZGluZ0NvbnRleHQ/OiBDb250ZXh0KTogUHJvbWlzZTx2b2lkPltdIHtcblx0XHRpZiAobWFpbkJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRjb25zdCBtYWluT2JqZWN0QmluZGluZyA9IG1haW5CaW5kaW5nQ29udGV4dC5nZXRCaW5kaW5nKCk7XG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlckJpbmRpbmcobWFpbk9iamVjdEJpbmRpbmcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFQcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cdFx0Y29uc3QgYUNvbnRyb2xzID0gdGhpcy5nZXRWaWV3KCkuZmluZEFnZ3JlZ2F0ZWRPYmplY3RzKHRydWUpO1xuXG5cdFx0YUNvbnRyb2xzLmZvckVhY2goKG9FbGVtZW50OiBNYW5hZ2VkT2JqZWN0ICYgeyBtQmluZGluZ0luZm9zPzogUmVjb3JkPHN0cmluZywgeyBiaW5kaW5nPzogQmluZGluZyB9PiB9KTogdm9pZCA9PiB7XG5cdFx0XHRjb25zdCBvT2JqZWN0QmluZGluZyA9IG9FbGVtZW50LmdldE9iamVjdEJpbmRpbmcoKTtcblx0XHRcdGlmIChvT2JqZWN0QmluZGluZykge1xuXHRcdFx0XHQvLyBSZWdpc3RlciBvbiBhbGwgb2JqZWN0IGJpbmRpbmcgKG1vc3RseSB1c2VkIG9uIG9iamVjdCBwYWdlcylcblx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG9PYmplY3RCaW5kaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGFCaW5kaW5nS2V5cyA9IE9iamVjdC5rZXlzKG9FbGVtZW50Py5tQmluZGluZ0luZm9zID8/IHt9KTtcblx0XHRcdFx0YUJpbmRpbmdLZXlzLmZvckVhY2goKHNQcm9wZXJ0eU5hbWUpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvRWxlbWVudD8ubUJpbmRpbmdJbmZvcz8uW3NQcm9wZXJ0eU5hbWVdLmJpbmRpbmc7XG5cblx0XHRcdFx0XHRpZiAob0xpc3RCaW5kaW5nICYmIG9MaXN0QmluZGluZy5pc0E8T0RhdGFMaXN0QmluZGluZz4oXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIucmVnaXN0ZXJCaW5kaW5nKG9MaXN0QmluZGluZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIFRoaXMgaXMgZGlydHkgYnV0IE1EQ1RhYmxlcyBhbmQgTURDQ2hhcnRzIGhhdmUgYSB3ZWlyZCBsb2FkaW5nIGxpZmVjeWNsZVxuXHRcdFx0aWYgKG9FbGVtZW50LmlzQTxNRENUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpIHx8IG9FbGVtZW50LmlzQTxDaGFydD4oXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCA9IGZhbHNlO1xuXHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLnF1ZXJ5V2F0Y2hlci5yZWdpc3RlclRhYmxlT3JDaGFydChvRWxlbWVudCkpO1xuXHRcdFx0fSBlbHNlIGlmIChvRWxlbWVudC5pc0E8RmlsdGVyQmFyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLnJlZ2lzdGVyRmlsdGVyQmFyKG9FbGVtZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBhUHJvbWlzZXM7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoXCJfcm91dGluZ1wiKVxuXHRvbkFmdGVyQmluZGluZyhvQmluZGluZ0NvbnRleHQ/OiBDb250ZXh0LCBwYXJhbWV0ZXJzPzogeyBkZWZlcnJlZENyZWF0aW9uPzogYm9vbGVhbiB9KTogdm9pZCB7XG5cdFx0Ly8gSW4gY2FzZSB0aGUgcGFnZSBpcyByZWJpbmQgd2UgbmVlZCB0byBjbGVhciB0aGUgdGltZXIgKGVnOiBpbiBGQ0wsIHRoZSB1c2VyIGNhbiBzZWxlY3QgMiBpdGVtcyBzdWNjZXNzaXZlbHkgaW4gdGhlIGxpc3QgcmVwb3J0KVxuXHRcdGlmICh0aGlzLnBhZ2VSZWFkeVRpbWVvdXRUaW1lcikge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyKTtcblx0XHR9XG5cblx0XHRpZiAoIXBhcmFtZXRlcnM/LmRlZmVycmVkQ3JlYXRpb24gfHwgIXRoaXMuaXNDb250ZXh0RXhwZWN0ZWQoKSB8fCBvQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0XHRgVGhlIFBhZ2VSZWFkeSBFdmVudCB3YXMgbm90IGZpcmVkIHdpdGhpbiB0aGUgJHt0aGlzLnBhZ2VSZWFkeVRpbWVvdXR9IG1zIHRpbWVvdXQgLiBJdCBoYXMgYmVlbiBmb3JjZWQuIFBsZWFzZSBjb250YWN0IHlvdXIgYXBwbGljYXRpb24gZGV2ZWxvcGVyIGZvciBmdXJ0aGVyIGFuYWx5c2lzYFxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdFx0XHR9LCB0aGlzLnBhZ2VSZWFkeVRpbWVvdXQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBhcmUgaW4gZGVmZXJyZWQgY3JlYXRpb24gd2l0aCBubyBjb250ZXh0LCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBjb250ZXh0IHRvIGJlIHNldCBieSB0aGUgY3JlYXRlIGRpYWxvZ1xuXHRcdFx0Ly8gV2UgYWxzbyBuZWVkIHRvIGRpc2FibGUgdGhlIHBsYWNlaG9sZGVyIGFuaW1hdGlvblxuXHRcdFx0Y29uc3Qgcm9vdENvbnRyb2xDb250cm9sbGVyID0gdGhpcy5hcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdFx0XHRjb25zdCBwbGFjZWhvbGRlciA9IHJvb3RDb250cm9sQ29udHJvbGxlcj8uZ2V0UGxhY2Vob2xkZXI/LigpO1xuXHRcdFx0cGxhY2Vob2xkZXI/LmRpc2FibGVBbmltYXRpb24oKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpICYmICFvQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdC8vIEZvcmNlIHRvIG1lbnRpb24gd2UgYXJlIGV4cGVjdGluZyBkYXRhXG5cdFx0XHR0aGlzLmJIYXNDb250ZXh0ID0gZmFsc2U7XG5cdFx0XHRyZXR1cm47XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYkhhc0NvbnRleHQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9iQWZ0ZXJCaW5kaW5nQWxyZWFkeUFwcGxpZWQgPSB0cnVlO1xuXG5cdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXCJwYWdlUmVhZHlcIiwgbnVsbCwgKCkgPT4ge1xuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyKTtcblx0XHRcdHRoaXMucGFnZVJlYWR5VGltZW91dFRpbWVyID0gdW5kZWZpbmVkO1xuXHRcdFx0dGhpcy5fYkFmdGVyQmluZGluZ0FscmVhZHlBcHBsaWVkID0gZmFsc2U7XG5cdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZXNldCgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5vbkFmdGVyQmluZGluZ1Byb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdFx0Y29uc3QgYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzID0gdGhpcy5yZWdpc3RlckFnZ3JlZ2F0ZWRDb250cm9scyhvQmluZGluZ0NvbnRleHQpO1xuXG5cdFx0XHRpZiAoYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoYVRhYmxlQ2hhcnRJbml0aWFsaXplZFByb21pc2VzKTtcblx0XHRcdFx0dGhpcy5iVGFibGVzQ2hhcnRzTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgaXNQYWdlUmVhZHkoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2JJc1BhZ2VSZWFkeTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXN5bmMgd2FpdFBhZ2VSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdGlmICh0aGlzLmlzUGFnZVJlYWR5KCkpIHtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5hdHRhY2hFdmVudE9uY2UoXG5cdFx0XHRcdFx0XCJwYWdlUmVhZHlcIixcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgYXR0YWNoRXZlbnRPbmNlKHNFdmVudElkOiBzdHJpbmcsIG9EYXRhOiBvYmplY3QgfCBudWxsLCBmbkZ1bmN0aW9uPzogRnVuY3Rpb24sIG9MaXN0ZW5lcj86IG9iamVjdCk6IEV2ZW50UHJvdmlkZXIge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcblx0XHRyZXR1cm4gdGhpcy5fb0V2ZW50UHJvdmlkZXIuYXR0YWNoRXZlbnRPbmNlKHNFdmVudElkLCBvRGF0YSBhcyBvYmplY3QsIGZuRnVuY3Rpb24gYXMgRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGF0dGFjaEV2ZW50KHNFdmVudElkOiBzdHJpbmcsIG9EYXRhOiBvYmplY3QgfCBudWxsLCBmbkZ1bmN0aW9uOiBGdW5jdGlvbiwgb0xpc3RlbmVyOiBvYmplY3QpOiBFdmVudFByb3ZpZGVyIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG5cdFx0cmV0dXJuIHRoaXMuX29FdmVudFByb3ZpZGVyLmF0dGFjaEV2ZW50KHNFdmVudElkLCBvRGF0YSBhcyBvYmplY3QsIGZuRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0cHVibGljIGRldGFjaEV2ZW50KHNFdmVudElkOiBzdHJpbmcsIGZuRnVuY3Rpb246IEZ1bmN0aW9uKTogRXZlbnRQcm92aWRlciB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuXHRcdHJldHVybiB0aGlzLl9vRXZlbnRQcm92aWRlci5kZXRhY2hFdmVudChzRXZlbnRJZCwgZm5GdW5jdGlvbik7XG5cdH1cblxuXHRwcml2YXRlIHJlZ2lzdGVyQ29udGFpbmVyKG9Db250YWluZXI6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl9vQ29udGFpbmVyID0gb0NvbnRhaW5lcjtcblx0XHR0aGlzLl9mbkNvbnRhaW5lckRlbGVnYXRlID0ge1xuXHRcdFx0b25CZWZvcmVTaG93OiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMuYlNob3duID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuX2JJc1BhZ2VSZWFkeSA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdG9uQmVmb3JlSGlkZTogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRvbkFmdGVyU2hvdzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLmJTaG93biA9IHRydWU7XG5cdFx0XHRcdHRoaXMub25BZnRlckJpbmRpbmdQcm9taXNlPy50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCh0cnVlKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLl9vQ29udGFpbmVyPy5hZGRFdmVudERlbGVnYXRlKHRoaXMuX2ZuQ29udGFpbmVyRGVsZWdhdGUsIHRoaXMpO1xuXHR9XG5cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgaXNDb250ZXh0RXhwZWN0ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBjaGVja1BhZ2VSZWFkeURlYm91bmNlZChiRnJvbU5hdiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucGFnZVJlYWR5VGltZXIpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnBhZ2VSZWFkeVRpbWVyKTtcblx0XHR9XG5cdFx0Y29uc3QgbW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdFx0bGV0IHRpbWVPdXQ6IG51bWJlcjtcblx0XHQvLyBpc0NvbnRleHRFeHBlY3RlZCA9IHRydWUgd2hlbiBPYmplY3QgUGFnZSBpcyBkaXNwbGF5ZWRcblx0XHRpZiAoKG1vZGVsICYmIG1vZGVsLmdldE9wdGltaXN0aWNCYXRjaEVuYWJsZXIoKSA9PT0gbnVsbCkgfHwgdGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpKSB7XG5cdFx0XHR0aW1lT3V0ID0gMjAwO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBXZSBhcmUgd2FpdGluZyBsZXNzIHRpbWUgYmVjYXVzZSBkYXRhIGlzIGFscmVhZHkgdGhlcmUgKG9wdGltaXN0aWNCYXRjaClcblx0XHRcdHRpbWVPdXQgPSAyMDtcblx0XHR9XG5cdFx0dGhpcy5wYWdlUmVhZHlUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5fY2hlY2tQYWdlUmVhZHkoYkZyb21OYXYpO1xuXHRcdH0sIHRpbWVPdXQpIGFzIHVua25vd24gYXMgbnVtYmVyO1xuXHR9XG5cblx0cHVibGljIF9jaGVja1BhZ2VSZWFkeShiRnJvbU5hdiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgZm5VSVVwZGF0ZWQgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHQvLyBXYWl0IHVudGlsIHRoZSBVSSBpcyBubyBsb25nZXIgZGlydHlcblx0XHRcdGlmICghUmVuZGVyaW5nLmlzUGVuZGluZygpKSB7XG5cdFx0XHRcdChSZW5kZXJpbmcgYXMgUmVuZGVyaW5nRXgpLmRldGFjaFVJVXBkYXRlZChmblVJVXBkYXRlZCk7XG5cdFx0XHRcdHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLmNoZWNrUGFnZVJlYWR5RGVib3VuY2VkKCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdC8vIEluIGNhc2UgVUlVcGRhdGUgZG9lcyBub3QgZ2V0IGNhbGxlZCwgY2hlY2sgaWYgVUkgaXMgbm90IGRpcnR5IGFuZCB0aGVuIGNhbGwgX2NoZWNrUGFnZVJlYWR5XG5cdFx0Y29uc3QgY2hlY2tVSVVwZGF0ZWQgPSAoKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAoUmVuZGVyaW5nLmlzUGVuZGluZygpKSB7XG5cdFx0XHRcdHNldFRpbWVvdXQoY2hlY2tVSVVwZGF0ZWQsIDUwMCk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCkge1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSBmYWxzZTtcblx0XHRcdFx0KFJlbmRlcmluZyBhcyBSZW5kZXJpbmdFeCkuZGV0YWNoVUlVcGRhdGVkKGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0dGhpcy5jaGVja1BhZ2VSZWFkeURlYm91bmNlZCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRpZiAoXG5cdFx0XHR0aGlzLmJTaG93biAmJlxuXHRcdFx0dGhpcy5xdWVyeVdhdGNoZXIuaXNEYXRhUmVjZWl2ZWQoKSAhPT0gZmFsc2UgJiZcblx0XHRcdHRoaXMuYlRhYmxlc0NoYXJ0c0xvYWRlZCAhPT0gZmFsc2UgJiZcblx0XHRcdCghdGhpcy5pc0NvbnRleHRFeHBlY3RlZCgpIHx8IHRoaXMuYkhhc0NvbnRleHQpIC8vIEVpdGhlciBubyBjb250ZXh0IGlzIGV4cGVjdGVkIG9yIHRoZXJlIGlzIG9uZVxuXHRcdCkge1xuXHRcdFx0aWYgKHRoaXMucXVlcnlXYXRjaGVyLmlzRGF0YVJlY2VpdmVkKCkgPT09IHRydWUgJiYgIWJGcm9tTmF2ICYmICF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggJiYgUmVuZGVyaW5nLmlzUGVuZGluZygpKSB7XG5cdFx0XHRcdC8vIElmIHdlIHJlcXVlc3RlZCBkYXRhIHdlIGdldCBub3RpZmllZCBhcyBzb29uIGFzIHRoZSBkYXRhIGFycml2ZWQsIHNvIGJlZm9yZSB0aGUgbmV4dCByZW5kZXJpbmcgdGlja1xuXHRcdFx0XHR0aGlzLnF1ZXJ5V2F0Y2hlci5yZXNldERhdGFSZWNlaXZlZCgpO1xuXHRcdFx0XHR0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggPSB0cnVlO1xuXHRcdFx0XHQoUmVuZGVyaW5nIGFzIFJlbmRlcmluZ0V4KS5hdHRhY2hVSVVwZGF0ZWQoZm5VSVVwZGF0ZWQpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KGNoZWNrVUlVcGRhdGVkLCA1MDApO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KCF0aGlzLl9iV2FpdGluZ0ZvclJlZnJlc2ggJiYgUmVuZGVyaW5nLmlzUGVuZGluZygpKSB8fFxuXHRcdFx0XHR0aGlzLl9uYldhaXRzICE9PSAwIHx8XG5cdFx0XHRcdFRlbXBsYXRlZFZpZXdTZXJ2aWNlRmFjdG9yeS5nZXROdW1iZXJPZlZpZXdzSW5DcmVhdGlvblN0YXRlKCkgPiAwIHx8XG5cdFx0XHRcdHRoaXMucXVlcnlXYXRjaGVyLmlzU2VhcmNoUGVuZGluZygpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5fYldhaXRpbmdGb3JSZWZyZXNoID0gdHJ1ZTtcblx0XHRcdFx0KFJlbmRlcmluZyBhcyBSZW5kZXJpbmdFeCkuYXR0YWNoVUlVcGRhdGVkKGZuVUlVcGRhdGVkKTtcblx0XHRcdFx0c2V0VGltZW91dChjaGVja1VJVXBkYXRlZCwgNTAwKTtcblx0XHRcdH0gZWxzZSBpZiAoIXRoaXMuX2JXYWl0aW5nRm9yUmVmcmVzaCkge1xuXHRcdFx0XHQvLyBJbiB0aGUgY2FzZSB3ZSdyZSBub3Qgd2FpdGluZyBmb3IgYW55IGRhdGEgKG5hdmlnYXRpbmcgYmFjayB0byBhIHBhZ2Ugd2UgYWxyZWFkeSBoYXZlIGxvYWRlZClcblx0XHRcdFx0Ly8ganVzdCB3YWl0IGZvciBhIGZyYW1lIHRvIGZpcmUgdGhlIGV2ZW50LlxuXHRcdFx0XHR0aGlzLl9iSXNQYWdlUmVhZHkgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLl9vRXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJwYWdlUmVhZHlcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZvcmNlcyB0aGUgJ3BhZ2VSZWFkeScgZXZlbnQgdG8gYmUgc2VudC5cblx0ICovXG5cdGZvcmNlUGFnZVJlYWR5KCk6IHZvaWQge1xuXHRcdHRoaXMuX29FdmVudFByb3ZpZGVyLmZpcmVFdmVudChcInBhZ2VSZWFkeVwiKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBQYWdlUmVhZHlDb250cm9sbGVyRXh0ZW5zaW9uO1xuIl0sIm1hcHBpbmdzIjoiOzs7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
@@ -10,12 +10,11 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
10
10
  var publicExtension = ClassSupport.publicExtension;
11
11
  var extensible = ClassSupport.extensible;
12
12
  var defineUI5Class = ClassSupport.defineUI5Class;
13
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
14
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
15
- function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
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
16
  /**
17
17
  * Controller extension providing hooks for the navigation using paginators
18
- *
19
18
  * @hideconstructor
20
19
  * @public
21
20
  * @since 1.94.0
@@ -28,7 +27,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
28
27
  var _proto = Paginator.prototype;
29
28
  /**
30
29
  * Initiates the paginator control.
31
- *
32
30
  * @param oBinding ODataListBinding object
33
31
  * @param oContext Current context where the navigation is initiated
34
32
  * @public
@@ -40,7 +38,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
40
38
 
41
39
  /**
42
40
  * Called before context update.
43
- *
44
41
  * @param oListBinding ODataListBinding object
45
42
  * @param iCurrentIndex Current index of context in listBinding from where the navigation is initiated
46
43
  * @param iIndexUpdate The delta index for update
@@ -54,7 +51,6 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
54
51
 
55
52
  /**
56
53
  * Returns the updated context after the paginator operation.
57
- *
58
54
  * @param oContext Final context returned after the paginator action
59
55
  * @public
60
56
  * @since 1.94.0
@@ -68,4 +64,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
68
64
  }(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "initialize", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "initialize"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeContextUpdate", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeContextUpdate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextUpdate", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextUpdate"), _class2.prototype)), _class2)) || _class);
69
65
  return Paginator;
70
66
  }, false);
71
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3IiLCJkZWZpbmVVSTVDbGFzcyIsInB1YmxpY0V4dGVuc2lvbiIsImhvb2thYmxlIiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiQWZ0ZXIiLCJpbml0aWFsaXplIiwib0JpbmRpbmciLCJvQ29udGV4dCIsIm9uQmVmb3JlQ29udGV4dFVwZGF0ZSIsIm9MaXN0QmluZGluZyIsImlDdXJyZW50SW5kZXgiLCJpSW5kZXhVcGRhdGUiLCJvbkNvbnRleHRVcGRhdGUiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdpbmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGhvb2thYmxlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBDb250ZXh0IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuXG4vKipcbiAqIENvbnRyb2xsZXIgZXh0ZW5zaW9uIHByb3ZpZGluZyBob29rcyBmb3IgdGhlIG5hdmlnYXRpb24gdXNpbmcgcGFnaW5hdG9yc1xuICpcbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjk0LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuUGFnaW5hdG9yXCIpXG5jbGFzcyBQYWdpbmF0b3IgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJvdGVjdGVkIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHQvKipcblx0ICogSW5pdGlhdGVzIHRoZSBwYWdpbmF0b3IgY29udHJvbC5cblx0ICpcblx0ICogQHBhcmFtIG9CaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0XG5cdCAqIEBwYXJhbSBvQ29udGV4dCBDdXJyZW50IGNvbnRleHQgd2hlcmUgdGhlIG5hdmlnYXRpb24gaXMgaW5pdGlhdGVkXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTQuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBob29rYWJsZShcIkJlZm9yZVwiKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGluaXRpYWxpemUob0JpbmRpbmc/OiBPRGF0YUxpc3RCaW5kaW5nLCBvQ29udGV4dD86IENvbnRleHQpOiB2b2lkIHt9XG5cblx0LyoqXG5cdCAqIENhbGxlZCBiZWZvcmUgY29udGV4dCB1cGRhdGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBvTGlzdEJpbmRpbmcgT0RhdGFMaXN0QmluZGluZyBvYmplY3Rcblx0ICogQHBhcmFtIGlDdXJyZW50SW5kZXggQ3VycmVudCBpbmRleCBvZiBjb250ZXh0IGluIGxpc3RCaW5kaW5nIGZyb20gd2hlcmUgdGhlIG5hdmlnYXRpb24gaXMgaW5pdGlhdGVkXG5cdCAqIEBwYXJhbSBpSW5kZXhVcGRhdGUgVGhlIGRlbHRhIGluZGV4IGZvciB1cGRhdGVcblx0ICogQHJldHVybnMgYHRydWVgIHRvIHByZXZlbnQgdGhlIHVwZGF0ZSBvZiBjdXJyZW50IGNvbnRleHQuXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0b25CZWZvcmVDb250ZXh0VXBkYXRlKG9MaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZywgaUN1cnJlbnRJbmRleDogbnVtYmVyLCBpSW5kZXhVcGRhdGU6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSB1cGRhdGVkIGNvbnRleHQgYWZ0ZXIgdGhlIHBhZ2luYXRvciBvcGVyYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29udGV4dCBGaW5hbCBjb250ZXh0IHJldHVybmVkIGFmdGVyIHRoZSBwYWdpbmF0b3IgYWN0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTQuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uQ29udGV4dFVwZGF0ZShvQ29udGV4dDogQ29udGV4dCk6IHZvaWQge1xuXHRcdC8vVG8gYmUgb3ZlcnJpZGRlbiBieSB0aGUgYXBwbGljYXRpb25cblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgUGFnaW5hdG9yO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7RUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5BLElBUU1BLFNBQVMsV0FEZEMsY0FBYyxDQUFDLDRDQUE0QyxDQUFDLFVBWTNEQyxlQUFlLEVBQUUsVUFDakJDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFZbEJELGVBQWUsRUFBRSxVQUNqQkUsVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBSyxDQUFDLFVBYW5DSixlQUFlLEVBQUUsVUFDakJFLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLEtBQUssQ0FBQztJQUFBO0lBQUE7TUFBQTtJQUFBO0lBQUE7SUFwQ3BDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFQQztJQVVBO0lBQ0FDLFVBQVUsR0FIVixvQkFHV0MsUUFBMkIsRUFBRUMsUUFBa0IsRUFBUSxDQUFDOztJQUVuRTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUEM7SUFBQTtJQVVBO0lBQ0FDLHFCQUFxQixHQUhyQiwrQkFHc0JDLFlBQThCLEVBQUVDLGFBQXFCLEVBQUVDLFlBQW9CLEVBQVc7TUFDM0csT0FBTyxLQUFLO0lBQ2I7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBO0lBU0E7SUFDQUMsZUFBZSxHQUhmLHlCQUdnQkwsUUFBaUIsRUFBUTtNQUN4QztJQUFBLENBQ0E7SUFBQTtFQUFBLEVBM0NzQk0sbUJBQW1CO0VBQUEsT0E2QzVCZixTQUFTO0FBQUEifQ==
67
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3IiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInB1YmxpY0V4dGVuc2lvbiIsIl9kZWMzIiwiaG9va2FibGUiLCJfZGVjNCIsIl9kZWM1IiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiQWZ0ZXIiLCJfZGVjNiIsIl9kZWM3IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sbGVyRXh0ZW5zaW9uIiwiX2luaGVyaXRzTG9vc2UiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9wcm90byIsInByb3RvdHlwZSIsImluaXRpYWxpemUiLCJvQmluZGluZyIsIm9Db250ZXh0Iiwib25CZWZvcmVDb250ZXh0VXBkYXRlIiwib0xpc3RCaW5kaW5nIiwiaUN1cnJlbnRJbmRleCIsImlJbmRleFVwZGF0ZSIsIm9uQ29udGV4dFVwZGF0ZSIsIkNvbnRyb2xsZXJFeHRlbnNpb24iLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQYWdpbmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGhvb2thYmxlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBDb250ZXh0IH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuXG4vKipcbiAqIENvbnRyb2xsZXIgZXh0ZW5zaW9uIHByb3ZpZGluZyBob29rcyBmb3IgdGhlIG5hdmlnYXRpb24gdXNpbmcgcGFnaW5hdG9yc1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuOTQuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QYWdpbmF0b3JcIilcbmNsYXNzIFBhZ2luYXRvciBleHRlbmRzIENvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcm90ZWN0ZWQgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdC8qKlxuXHQgKiBJbml0aWF0ZXMgdGhlIHBhZ2luYXRvciBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0JpbmRpbmcgT0RhdGFMaXN0QmluZGluZyBvYmplY3Rcblx0ICogQHBhcmFtIG9Db250ZXh0IEN1cnJlbnQgY29udGV4dCB3aGVyZSB0aGUgbmF2aWdhdGlvbiBpcyBpbml0aWF0ZWRcblx0ICogQHB1YmxpY1xuXHQgKiBAc2luY2UgMS45NC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGhvb2thYmxlKFwiQmVmb3JlXCIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0aW5pdGlhbGl6ZShvQmluZGluZz86IE9EYXRhTGlzdEJpbmRpbmcsIG9Db250ZXh0PzogQ29udGV4dCk6IHZvaWQge31cblxuXHQvKipcblx0ICogQ2FsbGVkIGJlZm9yZSBjb250ZXh0IHVwZGF0ZS5cblx0ICogQHBhcmFtIG9MaXN0QmluZGluZyBPRGF0YUxpc3RCaW5kaW5nIG9iamVjdFxuXHQgKiBAcGFyYW0gaUN1cnJlbnRJbmRleCBDdXJyZW50IGluZGV4IG9mIGNvbnRleHQgaW4gbGlzdEJpbmRpbmcgZnJvbSB3aGVyZSB0aGUgbmF2aWdhdGlvbiBpcyBpbml0aWF0ZWRcblx0ICogQHBhcmFtIGlJbmRleFVwZGF0ZSBUaGUgZGVsdGEgaW5kZXggZm9yIHVwZGF0ZVxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgdG8gcHJldmVudCB0aGUgdXBkYXRlIG9mIGN1cnJlbnQgY29udGV4dC5cblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRvbkJlZm9yZUNvbnRleHRVcGRhdGUob0xpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBpQ3VycmVudEluZGV4OiBudW1iZXIsIGlJbmRleFVwZGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHVwZGF0ZWQgY29udGV4dCBhZnRlciB0aGUgcGFnaW5hdG9yIG9wZXJhdGlvbi5cblx0ICogQHBhcmFtIG9Db250ZXh0IEZpbmFsIGNvbnRleHQgcmV0dXJuZWQgYWZ0ZXIgdGhlIHBhZ2luYXRvciBhY3Rpb25cblx0ICogQHB1YmxpY1xuXHQgKiBAc2luY2UgMS45NC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0b25Db250ZXh0VXBkYXRlKG9Db250ZXh0OiBDb250ZXh0KTogdm9pZCB7XG5cdFx0Ly9UbyBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHBsaWNhdGlvblxuXHR9XG59XG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0b3I7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztFQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBLElBT01BLFNBQVMsSUFBQUMsSUFBQSxHQURkQyxjQUFjLENBQUMsNENBQTRDLENBQUMsRUFBQUMsS0FBQSxHQVczREMsZUFBZSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUNqQkMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFBQyxLQUFBLEdBV2xCSCxlQUFlLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBQ2pCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLLENBQUMsRUFBQUMsS0FBQSxHQVluQ1IsZUFBZSxDQUFDLENBQUMsRUFBQVMsS0FBQSxHQUNqQkosVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBSyxDQUFDLEVBQUFWLElBQUEsQ0FBQWEsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxvQkFBQTtJQUFBQyxjQUFBLENBQUFqQixTQUFBLEVBQUFnQixvQkFBQTtJQUFBLFNBQUFoQixVQUFBO01BQUEsT0FBQWdCLG9CQUFBLENBQUFFLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0lBQUEsSUFBQUMsTUFBQSxHQUFBcEIsU0FBQSxDQUFBcUIsU0FBQTtJQWpDcEM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFOQ0QsTUFBQTtJQVNBO0lBQ0FFLFVBQVUsR0FIVixTQUFBQSxXQUdXQyxRQUEyQixFQUFFQyxRQUFrQixFQUFRLENBQUM7O0lBRW5FO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkM7SUFBQUosTUFBQTtJQVNBO0lBQ0FLLHFCQUFxQixHQUhyQixTQUFBQSxzQkFHc0JDLFlBQThCLEVBQUVDLGFBQXFCLEVBQUVDLFlBQW9CLEVBQVc7TUFDM0csT0FBTyxLQUFLO0lBQ2I7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQVIsTUFBQTtJQVFBO0lBQ0FTLGVBQWUsR0FIZixTQUFBQSxnQkFHZ0JMLFFBQWlCLEVBQVE7TUFDeEM7SUFBQSxDQUNBO0lBQUEsT0FBQXhCLFNBQUE7RUFBQSxFQXhDc0I4QixtQkFBbUIsSUFBQUMseUJBQUEsQ0FBQWhCLE9BQUEsQ0FBQU0sU0FBQSxpQkFBQWxCLEtBQUEsRUFBQUUsS0FBQSxHQUFBMkIsTUFBQSxDQUFBQyx3QkFBQSxDQUFBbEIsT0FBQSxDQUFBTSxTQUFBLGlCQUFBTixPQUFBLENBQUFNLFNBQUEsR0FBQVUseUJBQUEsQ0FBQWhCLE9BQUEsQ0FBQU0sU0FBQSw0QkFBQWQsS0FBQSxFQUFBQyxLQUFBLEdBQUF3QixNQUFBLENBQUFDLHdCQUFBLENBQUFsQixPQUFBLENBQUFNLFNBQUEsNEJBQUFOLE9BQUEsQ0FBQU0sU0FBQSxHQUFBVSx5QkFBQSxDQUFBaEIsT0FBQSxDQUFBTSxTQUFBLHNCQUFBVCxLQUFBLEVBQUFDLEtBQUEsR0FBQW1CLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQWxCLE9BQUEsQ0FBQU0sU0FBQSxzQkFBQU4sT0FBQSxDQUFBTSxTQUFBLElBQUFOLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BMEM1QmQsU0FBUztBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -8,7 +8,6 @@ import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
8
8
 
9
9
  /**
10
10
  * Controller extension providing hooks for the navigation using paginators
11
- *
12
11
  * @hideconstructor
13
12
  * @public
14
13
  * @since 1.94.0
@@ -19,7 +18,6 @@ class Paginator extends ControllerExtension {
19
18
 
20
19
  /**
21
20
  * Initiates the paginator control.
22
- *
23
21
  * @param oBinding ODataListBinding object
24
22
  * @param oContext Current context where the navigation is initiated
25
23
  * @public
@@ -32,7 +30,6 @@ class Paginator extends ControllerExtension {
32
30
 
33
31
  /**
34
32
  * Called before context update.
35
- *
36
33
  * @param oListBinding ODataListBinding object
37
34
  * @param iCurrentIndex Current index of context in listBinding from where the navigation is initiated
38
35
  * @param iIndexUpdate The delta index for update
@@ -47,7 +44,6 @@ class Paginator extends ControllerExtension {
47
44
 
48
45
  /**
49
46
  * Returns the updated context after the paginator operation.
50
- *
51
47
  * @param oContext Final context returned after the paginator action
52
48
  * @public
53
49
  * @since 1.94.0