@sapui5/sap.fe.core 1.112.0 → 1.114.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 (434) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime-dbg.js +70 -6
  4. package/src/sap/fe/core/ActionRuntime.js +1 -1
  5. package/src/sap/fe/core/ActionRuntime.js.map +1 -1
  6. package/src/sap/fe/core/ActionRuntime.ts +118 -3
  7. package/src/sap/fe/core/AppComponent-dbg.js +16 -6
  8. package/src/sap/fe/core/AppComponent.js +1 -1
  9. package/src/sap/fe/core/AppComponent.js.map +1 -1
  10. package/src/sap/fe/core/AppComponent.ts +21 -7
  11. package/src/sap/fe/core/AppStateHandler-dbg.js +11 -10
  12. package/src/sap/fe/core/AppStateHandler.js +1 -1
  13. package/src/sap/fe/core/AppStateHandler.js.map +1 -1
  14. package/src/sap/fe/core/AppStateHandler.ts +14 -11
  15. package/src/sap/fe/core/CommonUtils-dbg.js +102 -175
  16. package/src/sap/fe/core/CommonUtils.js +1 -1
  17. package/src/sap/fe/core/CommonUtils.js.map +1 -1
  18. package/src/sap/fe/core/CommonUtils.ts +114 -211
  19. package/src/sap/fe/core/ExtensionAPI-dbg.js +3 -1
  20. package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
  21. package/src/sap/fe/core/ExtensionAPI.ts +2 -0
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +2 -1
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +1 -1
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -1
  25. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +1 -0
  26. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +2 -2
  27. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +1 -1
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -1
  29. package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +13 -18
  30. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +32 -24
  31. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +4 -4
  32. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -1
  33. package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.ts +41 -29
  34. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +2 -2
  35. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +1 -1
  36. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -1
  37. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +1 -1
  38. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +2 -2
  39. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +1 -1
  40. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -1
  41. package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +3 -1
  42. package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +124 -57
  43. package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  44. package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
  45. package/src/sap/fe/core/controllerextensions/EditFlow.ts +146 -73
  46. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +35 -74
  47. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  48. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
  49. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -78
  50. package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +217 -127
  51. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  52. package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
  53. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +227 -129
  54. package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +3 -5
  55. package/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  56. package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -1
  57. package/src/sap/fe/core/controllerextensions/PageReady.ts +2 -4
  58. package/src/sap/fe/core/controllerextensions/Share-dbg.js +3 -2
  59. package/src/sap/fe/core/controllerextensions/Share.js +1 -1
  60. package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
  61. package/src/sap/fe/core/controllerextensions/Share.ts +2 -1
  62. package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +19 -14
  63. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  64. package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
  65. package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -14
  66. package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +41 -24
  67. package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  68. package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
  69. package/src/sap/fe/core/controllerextensions/ViewState.ts +64 -31
  70. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +8 -8
  71. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
  72. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
  73. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +7 -9
  74. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +7 -45
  75. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
  76. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
  77. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +5 -48
  78. package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +4 -4
  79. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +1 -1
  80. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
  81. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -2
  82. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +3 -3
  83. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating-dbg.js +52 -0
  84. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.js +6 -0
  85. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.js.map +1 -0
  86. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.ts +46 -0
  87. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog-dbg.js +103 -0
  88. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +6 -0
  89. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js.map +1 -0
  90. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +124 -0
  91. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +106 -205
  92. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
  93. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
  94. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +121 -216
  95. package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +31 -4
  96. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
  97. package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
  98. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +38 -3
  99. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +13 -10
  100. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +1 -1
  101. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
  102. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +7 -20
  103. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +9 -4
  104. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +1 -1
  105. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -1
  106. package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +12 -3
  107. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +10 -6
  108. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +1 -1
  109. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -1
  110. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +20 -11
  111. package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +1 -8
  112. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
  113. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
  114. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +0 -9
  115. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +19 -15
  116. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
  117. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
  118. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +19 -22
  119. package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +67 -1
  120. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
  121. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
  122. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +68 -0
  123. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -0
  124. package/src/sap/fe/core/controls/CommandExecution-dbg.js +4 -9
  125. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  126. package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
  127. package/src/sap/fe/core/controls/CommandExecution.ts +0 -8
  128. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block-dbg.js +335 -0
  129. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +6 -0
  130. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js.map +1 -0
  131. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +336 -0
  132. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -0
  133. package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +3 -28
  134. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
  135. package/src/sap/fe/core/controls/filterbar/VisualFilter.js.map +1 -1
  136. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +8 -29
  137. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +30 -1
  138. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
  139. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
  140. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +38 -0
  141. package/src/sap/fe/core/converters/ConverterContext-dbg.js +3 -5
  142. package/src/sap/fe/core/converters/ConverterContext.js +1 -1
  143. package/src/sap/fe/core/converters/ConverterContext.js.map +1 -1
  144. package/src/sap/fe/core/converters/ConverterContext.ts +2 -5
  145. package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -1
  146. package/src/sap/fe/core/converters/ManifestSettings.ts +7 -6
  147. package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +5 -3
  148. package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  149. package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
  150. package/src/sap/fe/core/converters/ManifestWrapper.ts +7 -1
  151. package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +49 -28
  152. package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  153. package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
  154. package/src/sap/fe/core/converters/MetaModelConverter.ts +62 -30
  155. package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -3
  156. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  157. package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
  158. package/src/sap/fe/core/converters/TemplateConverter.ts +1 -6
  159. package/src/sap/fe/core/converters/annotations/DataField-dbg.js +22 -7
  160. package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  161. package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
  162. package/src/sap/fe/core/converters/annotations/DataField.ts +20 -7
  163. package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +701 -681
  164. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  165. package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
  166. package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +6 -12
  167. package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  168. package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
  169. package/src/sap/fe/core/converters/controls/Common/Action.ts +9 -14
  170. package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +32 -20
  171. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  172. package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
  173. package/src/sap/fe/core/converters/controls/Common/Chart.ts +30 -18
  174. package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +4 -5
  175. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
  176. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
  177. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +6 -37
  178. package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +7 -6
  179. package/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  180. package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -1
  181. package/src/sap/fe/core/converters/controls/Common/Form.ts +5 -11
  182. package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +5 -5
  183. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  184. package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
  185. package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -4
  186. package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +135 -85
  187. package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  188. package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
  189. package/src/sap/fe/core/converters/controls/Common/Table.ts +189 -119
  190. package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +56 -22
  191. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  192. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
  193. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +67 -31
  194. package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +137 -49
  195. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  196. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
  197. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +166 -43
  198. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +33 -14
  199. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
  200. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
  201. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +31 -12
  202. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +27 -18
  203. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
  204. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
  205. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +36 -23
  206. package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +37 -15
  207. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  208. package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
  209. package/src/sap/fe/core/converters/helpers/Aggregation.ts +36 -20
  210. package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +8 -6
  211. package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
  212. package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -1
  213. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +8 -6
  214. package/src/sap/fe/core/converters/helpers/InsightsHelpers-dbg.js +39 -0
  215. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +6 -0
  216. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js.map +1 -0
  217. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +45 -0
  218. package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +3 -2
  219. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  220. package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
  221. package/src/sap/fe/core/converters/helpers/IssueManager.ts +2 -1
  222. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +17 -16
  223. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  224. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
  225. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +11 -11
  226. package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +20 -17
  227. package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  228. package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
  229. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +25 -56
  230. package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +13 -13
  231. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  232. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
  233. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -13
  234. package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +17 -33
  235. package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
  236. package/src/sap/fe/core/formatters/CollaborationFormatter.js.map +1 -1
  237. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +27 -22
  238. package/src/sap/fe/core/formatters/TableFormatter-dbg.js +2 -6
  239. package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  240. package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
  241. package/src/sap/fe/core/formatters/TableFormatter.ts +1 -5
  242. package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +13 -5
  243. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  244. package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
  245. package/src/sap/fe/core/formatters/ValueFormatter.ts +19 -9
  246. package/src/sap/fe/core/fpm/manifest.json +1 -1
  247. package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +2 -1
  248. package/src/sap/fe/core/helpers/BindingToolkit.js +1 -1
  249. package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
  250. package/src/sap/fe/core/helpers/BindingToolkit.ts +1 -1
  251. package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +58 -35
  252. package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
  253. package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
  254. package/src/sap/fe/core/helpers/DeleteHelper.ts +76 -54
  255. package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +8 -4
  256. package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
  257. package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
  258. package/src/sap/fe/core/helpers/MassEditHelper.ts +7 -5
  259. package/src/sap/fe/core/helpers/MessageStrip-dbg.js +6 -5
  260. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  261. package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
  262. package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
  263. package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +167 -4
  264. package/src/sap/fe/core/helpers/MetaModelFunction.js +1 -1
  265. package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -1
  266. package/src/sap/fe/core/helpers/MetaModelFunction.ts +205 -3
  267. package/src/sap/fe/core/helpers/ModelHelper-dbg.js +37 -73
  268. package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  269. package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
  270. package/src/sap/fe/core/helpers/ModelHelper.ts +41 -68
  271. package/src/sap/fe/core/helpers/RecommendationHelper-dbg.js +71 -0
  272. package/src/sap/fe/core/helpers/RecommendationHelper.js +6 -0
  273. package/src/sap/fe/core/helpers/RecommendationHelper.js.map +1 -0
  274. package/src/sap/fe/core/helpers/RecommendationHelper.ts +94 -0
  275. package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +19 -3
  276. package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
  277. package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -1
  278. package/src/sap/fe/core/helpers/ResourceModelHelper.ts +21 -0
  279. package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +40 -6
  280. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  281. package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
  282. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +39 -5
  283. package/src/sap/fe/core/helpers/SizeHelper-dbg.js +53 -0
  284. package/src/sap/fe/core/helpers/SizeHelper.js +6 -0
  285. package/src/sap/fe/core/helpers/SizeHelper.js.map +1 -0
  286. package/src/sap/fe/core/helpers/SizeHelper.ts +51 -0
  287. package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +52 -26
  288. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  289. package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -1
  290. package/src/sap/fe/core/helpers/StableIdHelper.ts +49 -25
  291. package/src/sap/fe/core/helpers/TypeGuards-dbg.js +147 -1
  292. package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
  293. package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
  294. package/src/sap/fe/core/helpers/TypeGuards.ts +151 -1
  295. package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +25 -2
  296. package/src/sap/fe/core/jsx-runtime/jsx-control.js +1 -1
  297. package/src/sap/fe/core/jsx-runtime/jsx-control.js.map +1 -1
  298. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +24 -0
  299. package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +1 -1
  300. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -0
  301. package/src/sap/fe/core/library-dbg.js +1 -1
  302. package/src/sap/fe/core/library-preload.js +123 -95
  303. package/src/sap/fe/core/library-preload.js.map +1 -1
  304. package/src/sap/fe/core/library.js +1 -1
  305. package/src/sap/fe/core/manifest.json +1 -1
  306. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +67 -15
  307. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  308. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -1
  309. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -14
  310. package/src/sap/fe/core/messagebundle.properties +6 -6
  311. package/src/sap/fe/core/messagebundle_ar.properties +5 -6
  312. package/src/sap/fe/core/messagebundle_bg.properties +11 -12
  313. package/src/sap/fe/core/messagebundle_ca.properties +3 -4
  314. package/src/sap/fe/core/messagebundle_cs.properties +3 -4
  315. package/src/sap/fe/core/messagebundle_cy.properties +3 -4
  316. package/src/sap/fe/core/messagebundle_da.properties +3 -4
  317. package/src/sap/fe/core/messagebundle_de.properties +11 -12
  318. package/src/sap/fe/core/messagebundle_el.properties +5 -6
  319. package/src/sap/fe/core/messagebundle_en.properties +3 -4
  320. package/src/sap/fe/core/messagebundle_en_GB.properties +4 -5
  321. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +3 -4
  322. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +3 -4
  323. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +3 -2
  324. package/src/sap/fe/core/messagebundle_es.properties +3 -4
  325. package/src/sap/fe/core/messagebundle_es_MX.properties +3 -4
  326. package/src/sap/fe/core/messagebundle_et.properties +3 -4
  327. package/src/sap/fe/core/messagebundle_fi.properties +3 -4
  328. package/src/sap/fe/core/messagebundle_fr.properties +3 -4
  329. package/src/sap/fe/core/messagebundle_fr_CA.properties +11 -12
  330. package/src/sap/fe/core/messagebundle_hi.properties +11 -12
  331. package/src/sap/fe/core/messagebundle_hr.properties +3 -4
  332. package/src/sap/fe/core/messagebundle_hu.properties +3 -4
  333. package/src/sap/fe/core/messagebundle_id.properties +11 -12
  334. package/src/sap/fe/core/messagebundle_it.properties +3 -4
  335. package/src/sap/fe/core/messagebundle_iw.properties +3 -4
  336. package/src/sap/fe/core/messagebundle_ja.properties +4 -5
  337. package/src/sap/fe/core/messagebundle_kk.properties +3 -4
  338. package/src/sap/fe/core/messagebundle_ko.properties +11 -12
  339. package/src/sap/fe/core/messagebundle_lt.properties +3 -4
  340. package/src/sap/fe/core/messagebundle_lv.properties +11 -12
  341. package/src/sap/fe/core/messagebundle_ms.properties +3 -4
  342. package/src/sap/fe/core/messagebundle_nl.properties +3 -4
  343. package/src/sap/fe/core/messagebundle_no.properties +3 -4
  344. package/src/sap/fe/core/messagebundle_pl.properties +11 -12
  345. package/src/sap/fe/core/messagebundle_pt.properties +3 -4
  346. package/src/sap/fe/core/messagebundle_pt_PT.properties +3 -4
  347. package/src/sap/fe/core/messagebundle_ro.properties +14 -15
  348. package/src/sap/fe/core/messagebundle_ru.properties +11 -12
  349. package/src/sap/fe/core/messagebundle_sh.properties +3 -4
  350. package/src/sap/fe/core/messagebundle_sk.properties +3 -4
  351. package/src/sap/fe/core/messagebundle_sl.properties +3 -4
  352. package/src/sap/fe/core/messagebundle_sv.properties +11 -12
  353. package/src/sap/fe/core/messagebundle_th.properties +3 -4
  354. package/src/sap/fe/core/messagebundle_tr.properties +3 -4
  355. package/src/sap/fe/core/messagebundle_uk.properties +3 -4
  356. package/src/sap/fe/core/messagebundle_vi.properties +3 -4
  357. package/src/sap/fe/core/messagebundle_zh_CN.properties +11 -12
  358. package/src/sap/fe/core/messagebundle_zh_TW.properties +11 -12
  359. package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +22 -8
  360. package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
  361. package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
  362. package/src/sap/fe/core/rootView/RootViewBaseController.ts +17 -7
  363. package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +36 -3
  364. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  365. package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
  366. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +37 -1
  367. package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +13 -1
  368. package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  369. package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
  370. package/src/sap/fe/core/services/NavigationServiceFactory.ts +13 -0
  371. package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +7 -1
  372. package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  373. package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
  374. package/src/sap/fe/core/services/RoutingServiceFactory.ts +20 -2
  375. package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +7 -1
  376. package/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
  377. package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -1
  378. package/src/sap/fe/core/services/ShellServicesFactory.ts +10 -0
  379. package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +10 -7
  380. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  381. package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
  382. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +12 -13
  383. package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +9 -3
  384. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  385. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
  386. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +11 -15
  387. package/src/sap/fe/core/templating/CommonFormatters-dbg.js +4 -3
  388. package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
  389. package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -1
  390. package/src/sap/fe/core/templating/CommonFormatters.ts +2 -2
  391. package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +1 -1
  392. package/src/sap/fe/core/templating/CriticalityFormatters.ts +2 -2
  393. package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +19 -18
  394. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  395. package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
  396. package/src/sap/fe/core/templating/DataModelPathHelper.ts +24 -18
  397. package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +5 -5
  398. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  399. package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -1
  400. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -2
  401. package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +19 -28
  402. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
  403. package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
  404. package/src/sap/fe/core/templating/EntitySetHelper.ts +14 -24
  405. package/src/sap/fe/core/templating/EntityTypeHelper-dbg.js +48 -0
  406. package/src/sap/fe/core/templating/EntityTypeHelper.js +6 -0
  407. package/src/sap/fe/core/templating/EntityTypeHelper.js.map +1 -0
  408. package/src/sap/fe/core/templating/EntityTypeHelper.ts +37 -0
  409. package/src/sap/fe/core/templating/FilterHelper-dbg.js +12 -1
  410. package/src/sap/fe/core/templating/FilterHelper.js +1 -1
  411. package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
  412. package/src/sap/fe/core/templating/FilterHelper.ts +12 -0
  413. package/src/sap/fe/core/templating/FilterTemplating-dbg.js +7 -8
  414. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  415. package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -1
  416. package/src/sap/fe/core/templating/FilterTemplating.ts +5 -8
  417. package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +1 -6
  418. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  419. package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -1
  420. package/src/sap/fe/core/templating/PropertyFormatters.ts +0 -5
  421. package/src/sap/fe/core/templating/PropertyHelper-dbg.js +13 -46
  422. package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
  423. package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -1
  424. package/src/sap/fe/core/templating/PropertyHelper.ts +14 -43
  425. package/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
  426. package/src/sap/fe/core/templating/UIFormatters.js +1 -1
  427. package/src/sap/fe/core/templating/UIFormatters.js.map +1 -1
  428. package/src/sap/fe/core/templating/UIFormatters.ts +45 -34
  429. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +0 -91
  430. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +0 -59
  431. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +0 -171
  432. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +0 -6
  433. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +0 -1
  434. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +0 -184
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.112.0",
3
+ "version": "1.114.0",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.112.0</version>
9
+ <version>1.114.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -2,16 +2,79 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "./controls/AnyElement", "./converters/ConverterContext", "./converters/objectPage/HeaderAndFooterAction"], function (merge, CommonUtils, BindingToolkit, ModelHelper, AnyElement, ConverterContext, HeaderAndFooterAction) {
5
+ sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/TypeGuards", "sap/ui/core/message/Message", "./controls/AnyElement", "./converters/ConverterContext", "./converters/objectPage/HeaderAndFooterAction"], function (merge, CommonUtils, BindingToolkit, ModelHelper, TypeGuards, Message, AnyElement, ConverterContext, HeaderAndFooterAction) {
6
6
  "use strict";
7
7
 
8
8
  var getHiddenExpression = HeaderAndFooterAction.getHiddenExpression;
9
9
  var getEditButtonEnabled = HeaderAndFooterAction.getEditButtonEnabled;
10
+ var isEntitySet = TypeGuards.isEntitySet;
10
11
  var transformRecursively = BindingToolkit.transformRecursively;
11
12
  var equal = BindingToolkit.equal;
12
13
  var constant = BindingToolkit.constant;
13
14
  var compileExpression = BindingToolkit.compileExpression;
14
15
  const ActionRuntime = {
16
+ /**
17
+ * Adds error messages for an action parameter field to the message manager.
18
+ *
19
+ * @param messageManager The active MessageManager instance
20
+ * @param messageParameters Information identifying an action parameter and messages referring to this parameter
21
+ */
22
+ _addMessageForActionParameter: function (messageManager, messageParameters) {
23
+ messageManager.addMessages(messageParameters.map(messageParameter => {
24
+ const binding = messageParameter.actionParameterInfo.field.getBinding(messageParameter.actionParameterInfo.isMultiValue ? "items" : "value");
25
+ return new Message({
26
+ message: messageParameter.message,
27
+ type: "Error",
28
+ processor: binding === null || binding === void 0 ? void 0 : binding.getModel(),
29
+ persistent: true,
30
+ target: binding === null || binding === void 0 ? void 0 : binding.getResolvedPath()
31
+ });
32
+ }));
33
+ },
34
+ /**
35
+ * Checks if all required action parameters contain data and checks for all action parameters if the
36
+ * contained data is valid.
37
+ *
38
+ *
39
+ * @param messageManager The active MessageManager instance
40
+ * @param actionParameterInfos Information identifying an action parameter
41
+ * @param resourceModel The model to load text resources
42
+ * @returns The validation result can be true or false
43
+ */
44
+ validateProperties: async function (messageManager, actionParameterInfos, resourceModel) {
45
+ await Promise.allSettled(actionParameterInfos.map(actionParameterInfo => actionParameterInfo.validationPromise));
46
+ const requiredParameterInfos = actionParameterInfos.filter(parameterInfo => parameterInfo.field.getRequired());
47
+ const allMessages = messageManager.getMessageModel().getData();
48
+ const emptyRequiredFields = requiredParameterInfos.filter(requiredParameterInfo => {
49
+ const fieldId = requiredParameterInfo.field.getId();
50
+ const relevantMessages = allMessages.filter(msg => msg.getControlIds().some(controlId => controlId.includes(fieldId)));
51
+ if (relevantMessages.length > 0) {
52
+ return false;
53
+ } else if (requiredParameterInfo.isMultiValue) {
54
+ return requiredParameterInfo.value === undefined || !requiredParameterInfo.value.length;
55
+ } else {
56
+ return requiredParameterInfo.value === undefined || requiredParameterInfo.value === null || requiredParameterInfo.value === "";
57
+ }
58
+ });
59
+ /* Message for missing mandatory value of the action parameter */
60
+ if (emptyRequiredFields.length) {
61
+ this._addMessageForActionParameter(messageManager, emptyRequiredFields.map(actionParameterInfo => {
62
+ var _actionParameterInfo$;
63
+ return {
64
+ actionParameterInfo: actionParameterInfo,
65
+ message: resourceModel.getText("C_OPERATIONS_ACTION_PARAMETER_DIALOG_MISSING_MANDATORY_MSG", [((_actionParameterInfo$ = actionParameterInfo.field.getParent()) === null || _actionParameterInfo$ === void 0 ? void 0 : _actionParameterInfo$.getAggregation("label")).getText()])
66
+ };
67
+ }));
68
+ }
69
+ /* Check value state of all parameters */
70
+ const firstInvalidParameter = actionParameterInfos.find(parameterInfo => parameterInfo.hasError || parameterInfo.field.getValueState() === "Error" || emptyRequiredFields.includes(parameterInfo));
71
+ if (firstInvalidParameter) {
72
+ firstInvalidParameter.field.focus();
73
+ return false;
74
+ } else {
75
+ return true;
76
+ }
77
+ },
15
78
  /**
16
79
  * Sets the action enablement.
17
80
  *
@@ -79,9 +142,10 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/he
79
142
  }
80
143
  },
81
144
  updateEditButtonVisibilityAndEnablement(oView) {
82
- var _oView$getViewData;
83
- const iViewLevel = (_oView$getViewData = oView.getViewData()) === null || _oView$getViewData === void 0 ? void 0 : _oView$getViewData.viewLevel;
84
- if (iViewLevel > 1) {
145
+ var _oView$getViewData, _oView$getModel;
146
+ const iViewLevel = (_oView$getViewData = oView.getViewData()) === null || _oView$getViewData === void 0 ? void 0 : _oView$getViewData.viewLevel,
147
+ isEditable = (_oView$getModel = oView.getModel("ui")) === null || _oView$getModel === void 0 ? void 0 : _oView$getModel.getProperty("/isEditable");
148
+ if (iViewLevel > 1 && isEditable !== true) {
85
149
  var _oContext$getModel, _oContext$getModel$ge, _entitySet$annotation, _entitySet$annotation2;
86
150
  const oContext = oView.getBindingContext();
87
151
  const oAppComponent = CommonUtils.getAppComponent(oView);
@@ -93,7 +157,7 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/he
93
157
  const entityType = converterContext.getEntityType();
94
158
  let updateHidden;
95
159
  //Find the Update Hidden of the root entity set and bind the property to AnyElement, any changes in the path of the root UpdateHidden will be updated via the property, internal model context is updated based on the property
96
- const bUpdateHidden = entitySet && !ModelHelper.isSingleton(entitySet) && ((_entitySet$annotation = entitySet.annotations.UI) === null || _entitySet$annotation === void 0 ? void 0 : (_entitySet$annotation2 = _entitySet$annotation.UpdateHidden) === null || _entitySet$annotation2 === void 0 ? void 0 : _entitySet$annotation2.valueOf());
160
+ const bUpdateHidden = isEntitySet(entitySet) && ((_entitySet$annotation = entitySet.annotations.UI) === null || _entitySet$annotation === void 0 ? void 0 : (_entitySet$annotation2 = _entitySet$annotation.UpdateHidden) === null || _entitySet$annotation2 === void 0 ? void 0 : _entitySet$annotation2.valueOf());
97
161
  if (bUpdateHidden !== true) {
98
162
  updateHidden = ModelHelper.isUpdateHidden(entitySet, entityType);
99
163
  }
@@ -179,4 +243,4 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/he
179
243
  };
180
244
  return ActionRuntime;
181
245
  }, false);
182
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25SdW50aW1lIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJhU2VsZWN0ZWRDb250ZXh0cyIsInNDb250cm9sIiwiYVByb21pc2VzIiwic0FjdGlvbiIsImFSZXF1ZXN0UHJvbWlzZXMiLCJzZXRQcm9wZXJ0eSIsInNQcm9wZXJ0eSIsImkiLCJsZW5ndGgiLCJvU2VsZWN0ZWRDb250ZXh0Iiwib0NvbnRleHREYXRhIiwiZ2V0T2JqZWN0IiwiX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZSIsImJFbmFibGVkIiwiYUFwcGxpY2FibGUiLCJhTm90QXBwbGljYWJsZSIsInB1c2giLCJDb21tb25VdGlscyIsInNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZSIsIlByb21pc2UiLCJhbGwiLCJzZXRBY3Rpb25FbmFibGVtZW50QWZ0ZXJQYXRjaCIsIm9WaWV3Iiwib0xpc3RCaW5kaW5nIiwib0ludGVybmFsTW9kZWxDb250ZXh0RGF0YSIsIm9Db250cm9scyIsImNvbnRyb2xzIiwic0tleSIsImNvbnRyb2xJZCIsIm9UYWJsZSIsImJ5SWQiLCJpc0EiLCJvUm93QmluZGluZyIsImdldFJvd0JpbmRpbmciLCJnZXRCaW5kaW5nQ29udGV4dCIsIkpTT04iLCJwYXJzZSIsImRhdGEiLCJjdXN0b21EYXRhIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsInVwZGF0ZUVkaXRCdXR0b25WaXNpYmlsaXR5QW5kRW5hYmxlbWVudCIsImlWaWV3TGV2ZWwiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsIm9Db250ZXh0Iiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsInNNZXRhUGF0aCIsIk1vZGVsSGVscGVyIiwiZ2V0TWV0YVBhdGhGb3JDb250ZXh0Iiwic0VudGl0eVNldCIsImdldFJvb3RFbnRpdHlTZXRQYXRoIiwibWV0YUNvbnRleHQiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImdldENvbnRleHQiLCJnZXRQYXRoIiwiY29udmVydGVyQ29udGV4dCIsIkNvbnZlcnRlckNvbnRleHQiLCJjcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8iLCJnZXREaWFnbm9zdGljcyIsIm1lcmdlIiwidW5kZWZpbmVkIiwiZW50aXR5U2V0IiwiZ2V0RW50aXR5U2V0IiwiZW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJ1cGRhdGVIaWRkZW4iLCJiVXBkYXRlSGlkZGVuIiwiaXNTaW5nbGV0b24iLCJhbm5vdGF0aW9ucyIsIlVJIiwiVXBkYXRlSGlkZGVuIiwidmFsdWVPZiIsImlzVXBkYXRlSGlkZGVuIiwic0VkaXRFbmFibGVCaW5kaW5nIiwiZ2V0RWRpdEJ1dHRvbkVuYWJsZWQiLCJkcmFmdFJvb3RQYXRoIiwiZ2V0RHJhZnRSb290UGF0aCIsInNTdGlja3lSb290UGF0aCIsImdldFN0aWNreVJvb3RQYXRoIiwic1BhdGgiLCJvUm9vdENvbnRleHQiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNIaWRkZW5FeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJlcXVhbCIsImdldEhpZGRlbkV4cHJlc3Npb24iLCJ1cGRhdGVFZGl0TW9kZWxDb250ZXh0Iiwic0JpbmRpbmdFeHByZXNzaW9uIiwib0hpZGRlbkVsZW1lbnQiLCJBbnlFbGVtZW50IiwiYW55VGV4dCIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRGVwZW5kZW50IiwiZ2V0QmluZGluZyIsIiQkZ3JvdXBJZCIsImF0dGFjaENoYW5nZSIsIm9FdmVudCIsIm9OZXdWYWx1ZSIsImdldFNvdXJjZSIsImdldEV4dGVybmFsVmFsdWUiLCJzRHluYW1pY0FjdGlvbkVuYWJsZWRQYXRoIiwib1RyYW5zZm9ybWVkQmluZGluZyIsInRyYW5zZm9ybVJlY3Vyc2l2ZWx5Iiwib0JpbmRpbmdFeHByZXNzaW9uIiwiY29uc3RhbnQiLCJwYXRoIiwic1Jlc3VsdCIsInNldER5bmFtaWNBY3Rpb25Db250ZXh0cyIsInJlcXVlc3RQcm9wZXJ0eSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQWN0aW9uUnVudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgeyBfUmVxdWVzdGVkUHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgUGF0aEluTW9kZWxFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgZXF1YWwsIHRyYW5zZm9ybVJlY3Vyc2l2ZWx5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBQcm9wZXJ0eUJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9Qcm9wZXJ0eUJpbmRpbmdcIjtcbmltcG9ydCBBbnlFbGVtZW50IGZyb20gXCIuL2NvbnRyb2xzL0FueUVsZW1lbnRcIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlTWFuaWZlc3RTZXR0aW5ncyB9IGZyb20gXCIuL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0RWRpdEJ1dHRvbkVuYWJsZWQsIGdldEhpZGRlbkV4cHJlc3Npb24gfSBmcm9tIFwiLi9jb252ZXJ0ZXJzL29iamVjdFBhZ2UvSGVhZGVyQW5kRm9vdGVyQWN0aW9uXCI7XG5cbmNvbnN0IEFjdGlvblJ1bnRpbWUgPSB7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBhY3Rpb24gZW5hYmxlbWVudC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNldEFjdGlvbkVuYWJsZW1lbnRcblx0ICogQHBhcmFtIG9JbnRlcm5hbE1vZGVsQ29udGV4dCBPYmplY3QgY29udGFpbmluZyB0aGUgY29udGV4dCBtb2RlbFxuXHQgKiBAcGFyYW0gb0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcCBNYXAgY29udGFpbmluZyB0aGUgb3BlcmF0aW9uIGF2YWlsYWJpbGl0eSBvZiBhY3Rpb25zXG5cdCAqIEBwYXJhbSBhU2VsZWN0ZWRDb250ZXh0cyBBcnJheSBjb250YWluaW5nIHNlbGVjdGVkIGNvbnRleHRzIG9mIHRoZSBjaGFydFxuXHQgKiBAcGFyYW0gc0NvbnRyb2wgQ29udHJvbCBuYW1lXG5cdCAqIEByZXR1cm5zIFRoZSBhY3Rpb24gZW5hYmxlbWVudCBwcm9taXNlc1xuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICovXG5cdHNldEFjdGlvbkVuYWJsZW1lbnQ6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG5cdFx0YVNlbGVjdGVkQ29udGV4dHM6IENvbnRleHRbXSxcblx0XHRzQ29udHJvbDogc3RyaW5nXG5cdCkge1xuXHRcdGNvbnN0IGFQcm9taXNlcyA9IFtdO1xuXHRcdGZvciAoY29uc3Qgc0FjdGlvbiBpbiBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwKSB7XG5cdFx0XHRsZXQgYVJlcXVlc3RQcm9taXNlczogUHJvbWlzZTxfUmVxdWVzdGVkUHJvcGVydHk+W10gPSBbXTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzQWN0aW9uLCBmYWxzZSk7XG5cdFx0XHRjb25zdCBzUHJvcGVydHkgPSBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwW3NBY3Rpb25dO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCBvU2VsZWN0ZWRDb250ZXh0ID0gYVNlbGVjdGVkQ29udGV4dHNbaV07XG5cdFx0XHRcdGlmIChvU2VsZWN0ZWRDb250ZXh0KSB7XG5cdFx0XHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3QoKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0XHRcdFx0XHRpZiAoc0NvbnRyb2wgPT09IFwiY2hhcnRcIikge1xuXHRcdFx0XHRcdFx0aWYgKChzUHJvcGVydHkgPT09IG51bGwgJiYgISFvQ29udGV4dERhdGFbYCMke3NBY3Rpb259YF0pIHx8IG9TZWxlY3RlZENvbnRleHQuZ2V0T2JqZWN0KHNQcm9wZXJ0eSkpIHtcblx0XHRcdFx0XHRcdFx0Ly9sb29rIGZvciBhY3Rpb24gYWR2ZXJ0aXNlbWVudCBpZiBwcmVzZW50IGFuZCBpdHMgdmFsdWUgaXMgbm90IG51bGxcblx0XHRcdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KHNBY3Rpb24sIHRydWUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2UgaWYgKHNDb250cm9sID09PSBcInRhYmxlXCIpIHtcblx0XHRcdFx0XHRcdGFSZXF1ZXN0UHJvbWlzZXMgPSB0aGlzLl9zZXRBY3Rpb25FbmFibGVtZW50Rm9yVGFibGUoXG5cdFx0XHRcdFx0XHRcdG9TZWxlY3RlZENvbnRleHQsXG5cdFx0XHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0c0FjdGlvbixcblx0XHRcdFx0XHRcdFx0c1Byb3BlcnR5LFxuXHRcdFx0XHRcdFx0XHRhUmVxdWVzdFByb21pc2VzXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHNDb250cm9sID09PSBcInRhYmxlXCIpIHtcblx0XHRcdFx0aWYgKCFhU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYGR5bmFtaWNBY3Rpb25zLyR7c0FjdGlvbn1gLCB7XG5cdFx0XHRcdFx0XHRiRW5hYmxlZDogZmFsc2UsXG5cdFx0XHRcdFx0XHRhQXBwbGljYWJsZTogW10sXG5cdFx0XHRcdFx0XHRhTm90QXBwbGljYWJsZTogW11cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaChDb21tb25VdGlscy5zZXRDb250ZXh0c0Jhc2VkT25PcGVyYXRpb25BdmFpbGFibGUob0ludGVybmFsTW9kZWxDb250ZXh0LCBbXSkpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFTZWxlY3RlZENvbnRleHRzLmxlbmd0aCAmJiB0eXBlb2Ygc1Byb3BlcnR5ID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0Ly8gV2hlbiBhbGwgcHJvcGVydHkgdmFsdWVzIGhhdmUgYmVlbiByZXRyaWV2ZWQsIHNldFxuXHRcdFx0XHRcdC8vIFRoZSBhcHBsaWNhYmxlIGFuZCBub3QtYXBwbGljYWJsZSBzZWxlY3RlZCBjb250ZXh0cyBmb3IgZWFjaCBhY3Rpb24gYW5kXG5cdFx0XHRcdFx0Ly8gVGhlIGVuYWJsZWQgcHJvcGVydHkgb2YgdGhlIGR5bmFtaWMgYWN0aW9uIGluIGludGVybmFsIG1vZGVsIGNvbnRleHQuXG5cdFx0XHRcdFx0YVByb21pc2VzLnB1c2goQ29tbW9uVXRpbHMuc2V0Q29udGV4dHNCYXNlZE9uT3BlcmF0aW9uQXZhaWxhYmxlKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgYVJlcXVlc3RQcm9taXNlcykpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLmFsbChhUHJvbWlzZXMpO1xuXHR9LFxuXHRzZXRBY3Rpb25FbmFibGVtZW50QWZ0ZXJQYXRjaDogZnVuY3Rpb24gKG9WaWV3OiBWaWV3LCBvTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsIG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQpIHtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHREYXRhID0gb0ludGVybmFsTW9kZWxDb250ZXh0Py5nZXRPYmplY3QoKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0XHRjb25zdCBvQ29udHJvbHMgPSAob0ludGVybmFsTW9kZWxDb250ZXh0RGF0YT8uY29udHJvbHMgfHwge30pIGFzIFJlY29yZDxzdHJpbmcsIHsgY29udHJvbElkPzogc3RyaW5nIH0+O1xuXHRcdGZvciAoY29uc3Qgc0tleSBpbiBvQ29udHJvbHMpIHtcblx0XHRcdGlmIChvQ29udHJvbHNbc0tleV0gJiYgb0NvbnRyb2xzW3NLZXldLmNvbnRyb2xJZCkge1xuXHRcdFx0XHRjb25zdCBvVGFibGUgPSBvVmlldy5ieUlkKHNLZXkpO1xuXHRcdFx0XHRpZiAob1RhYmxlICYmIG9UYWJsZS5pc0E8VGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0XHRcdGNvbnN0IG9Sb3dCaW5kaW5nID0gb1RhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdFx0XHRpZiAob1Jvd0JpbmRpbmcgPT0gb0xpc3RCaW5kaW5nKSB7XG5cdFx0XHRcdFx0XHRBY3Rpb25SdW50aW1lLnNldEFjdGlvbkVuYWJsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRKU09OLnBhcnNlKG9UYWJsZS5kYXRhKFwib3BlcmF0aW9uQXZhaWxhYmxlTWFwXCIpLmN1c3RvbURhdGEpLFxuXHRcdFx0XHRcdFx0XHRvVGFibGUuZ2V0U2VsZWN0ZWRDb250ZXh0cygpIGFzIENvbnRleHRbXSxcblx0XHRcdFx0XHRcdFx0XCJ0YWJsZVwiXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHR1cGRhdGVFZGl0QnV0dG9uVmlzaWJpbGl0eUFuZEVuYWJsZW1lbnQob1ZpZXc6IFZpZXcpIHtcblx0XHRjb25zdCBpVmlld0xldmVsID0gKG9WaWV3LmdldFZpZXdEYXRhKCkgYXMgQmFzZU1hbmlmZXN0U2V0dGluZ3MpPy52aWV3TGV2ZWw7XG5cdFx0aWYgKChpVmlld0xldmVsIGFzIG51bWJlcikgPiAxKSB7XG5cdFx0XHRjb25zdCBvQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblx0XHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQob1ZpZXcpO1xuXHRcdFx0Y29uc3Qgc01ldGFQYXRoID0gTW9kZWxIZWxwZXIuZ2V0TWV0YVBhdGhGb3JDb250ZXh0KG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IHNFbnRpdHlTZXQgPSBNb2RlbEhlbHBlci5nZXRSb290RW50aXR5U2V0UGF0aChzTWV0YVBhdGgpO1xuXHRcdFx0Y29uc3QgbWV0YUNvbnRleHQgPSBvQ29udGV4dD8uZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCk/LmdldENvbnRleHQob0NvbnRleHQ/LmdldFBhdGgoKSk7XG5cdFx0XHRjb25zdCBjb252ZXJ0ZXJDb250ZXh0ID0gQ29udmVydGVyQ29udGV4dD8uY3JlYXRlQ29udmVydGVyQ29udGV4dEZvck1hY3JvKFxuXHRcdFx0XHRzRW50aXR5U2V0LFxuXHRcdFx0XHRtZXRhQ29udGV4dCxcblx0XHRcdFx0b0FwcENvbXBvbmVudC5nZXREaWFnbm9zdGljcygpLFxuXHRcdFx0XHRtZXJnZSxcblx0XHRcdFx0dW5kZWZpbmVkXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKTtcblx0XHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRcdGxldCB1cGRhdGVIaWRkZW47XG5cdFx0XHQvL0ZpbmQgdGhlIFVwZGF0ZSBIaWRkZW4gb2YgdGhlIHJvb3QgZW50aXR5IHNldCBhbmQgYmluZCB0aGUgcHJvcGVydHkgdG8gQW55RWxlbWVudCwgYW55IGNoYW5nZXMgaW4gdGhlIHBhdGggb2YgdGhlIHJvb3QgVXBkYXRlSGlkZGVuIHdpbGwgYmUgdXBkYXRlZCB2aWEgdGhlIHByb3BlcnR5LCBpbnRlcm5hbCBtb2RlbCBjb250ZXh0IGlzIHVwZGF0ZWQgYmFzZWQgb24gdGhlIHByb3BlcnR5XG5cdFx0XHRjb25zdCBiVXBkYXRlSGlkZGVuID0gZW50aXR5U2V0ICYmICFNb2RlbEhlbHBlci5pc1NpbmdsZXRvbihlbnRpdHlTZXQpICYmIGVudGl0eVNldC5hbm5vdGF0aW9ucy5VST8uVXBkYXRlSGlkZGVuPy52YWx1ZU9mKCk7XG5cdFx0XHRpZiAoYlVwZGF0ZUhpZGRlbiAhPT0gdHJ1ZSkge1xuXHRcdFx0XHR1cGRhdGVIaWRkZW4gPSBNb2RlbEhlbHBlci5pc1VwZGF0ZUhpZGRlbihlbnRpdHlTZXQsIGVudGl0eVR5cGUpO1xuXHRcdFx0fVxuXHRcdFx0Ly9GaW5kIHRoZSBvcGVyYXRpb24gYXZhaWxhYmxlIHByb3BlcnR5IG9mIHRoZSByb290IGVkaXQgY29uZmlndXJhdGlvbiBhbmQgZmV0Y2ggdGhlIHByb3BlcnR5IHVzaW5nIEFueUVsZW1lbnRcblx0XHRcdGNvbnN0IHNFZGl0RW5hYmxlQmluZGluZyA9IGdldEVkaXRCdXR0b25FbmFibGVkKGNvbnZlcnRlckNvbnRleHQsIHVuZGVmaW5lZCk7XG5cdFx0XHRjb25zdCBkcmFmdFJvb3RQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RHJhZnRSb290UGF0aChvQ29udGV4dCk7XG5cdFx0XHRjb25zdCBzU3RpY2t5Um9vdFBhdGggPSBNb2RlbEhlbHBlci5nZXRTdGlja3lSb290UGF0aChvQ29udGV4dCk7XG5cdFx0XHRjb25zdCBzUGF0aCA9IGRyYWZ0Um9vdFBhdGggfHwgc1N0aWNreVJvb3RQYXRoO1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdGlmIChzUGF0aCkge1xuXHRcdFx0XHRjb25zdCBvUm9vdENvbnRleHQgPSBvVmlldy5nZXRNb2RlbCgpLmJpbmRDb250ZXh0KHNQYXRoKS5nZXRCb3VuZENvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0XHRpZiAodXBkYXRlSGlkZGVuICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRjb25zdCBzSGlkZGVuRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGVxdWFsKGdldEhpZGRlbkV4cHJlc3Npb24oY29udmVydGVyQ29udGV4dCwgdXBkYXRlSGlkZGVuKSwgZmFsc2UpKTtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUVkaXRNb2RlbENvbnRleHQoc0hpZGRlbkV4cHJlc3Npb24sIG9WaWV3LCBvUm9vdENvbnRleHQsIFwicm9vdEVkaXRWaXNpYmxlXCIsIG9JbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNFZGl0RW5hYmxlQmluZGluZykge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlRWRpdE1vZGVsQ29udGV4dChzRWRpdEVuYWJsZUJpbmRpbmcsIG9WaWV3LCBvUm9vdENvbnRleHQsIFwicm9vdEVkaXRFbmFibGVkXCIsIG9JbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0dXBkYXRlRWRpdE1vZGVsQ29udGV4dDogZnVuY3Rpb24gKFxuXHRcdHNCaW5kaW5nRXhwcmVzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdG9WaWV3OiBWaWV3LFxuXHRcdG9Sb290Q29udGV4dDogQ29udGV4dCxcblx0XHRzUHJvcGVydHk6IHN0cmluZyxcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0XG5cdCkge1xuXHRcdGlmIChzQmluZGluZ0V4cHJlc3Npb24pIHtcblx0XHRcdGNvbnN0IG9IaWRkZW5FbGVtZW50ID0gbmV3IEFueUVsZW1lbnQoeyBhbnlUZXh0OiBzQmluZGluZ0V4cHJlc3Npb24gfSk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5zZXRCaW5kaW5nQ29udGV4dChudWxsKTtcblx0XHRcdG9WaWV3LmFkZERlcGVuZGVudChvSGlkZGVuRWxlbWVudCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5nZXRCaW5kaW5nKFwiYW55VGV4dFwiKTtcblx0XHRcdGNvbnN0IG9Db250ZXh0ID0gb0hpZGRlbkVsZW1lbnRcblx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0Py5iaW5kQ29udGV4dChvUm9vdENvbnRleHQuZ2V0UGF0aCgpLCBvUm9vdENvbnRleHQsIHsgJCRncm91cElkOiBcIiRhdXRvLkhlcm9lc1wiIH0pXG5cdFx0XHRcdD8uZ2V0Qm91bmRDb250ZXh0KCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5zZXRCaW5kaW5nQ29udGV4dChvQ29udGV4dCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudD8uZ2V0QmluZGluZyhcImFueVRleHRcIik/LmF0dGFjaENoYW5nZSgob0V2ZW50OiBFdmVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvTmV3VmFsdWUgPSAob0V2ZW50LmdldFNvdXJjZSgpIGFzIFByb3BlcnR5QmluZGluZykuZ2V0RXh0ZXJuYWxWYWx1ZSgpO1xuXHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc1Byb3BlcnR5LCBvTmV3VmFsdWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9zZXRBY3Rpb25FbmFibGVtZW50Rm9yVGFibGU6IGZ1bmN0aW9uIChcblx0XHRvU2VsZWN0ZWRDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkLFxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0c0FjdGlvbjogc3RyaW5nLFxuXHRcdHNQcm9wZXJ0eTogc3RyaW5nLFxuXHRcdGFSZXF1ZXN0UHJvbWlzZXM6IFByb21pc2U8X1JlcXVlc3RlZFByb3BlcnR5PltdXG5cdCkge1xuXHRcdC8vIFJlc2V0IGFsbCBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wdXRhdGlvblxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufWAsIHtcblx0XHRcdGJFbmFibGVkOiBmYWxzZSxcblx0XHRcdGFBcHBsaWNhYmxlOiBbXSxcblx0XHRcdGFOb3RBcHBsaWNhYmxlOiBbXVxuXHRcdH0pO1xuXHRcdC8vIE5vdGUgdGhhdCBub24gZHluYW1pYyBhY3Rpb25zIGFyZSBub3QgcHJvY2Vzc2VkIGhlcmUuIFRoZXkgYXJlIGVuYWJsZWQgYmVjYXVzZVxuXHRcdC8vIG9uZSBvciBtb3JlIGFyZSBzZWxlY3RlZCBhbmQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBjb25kaXRpb24gaW4gdGhlIHRlbXBsYXRpbmdcblx0XHQvLyBpcyB0aGVuIHVuZGVmaW5lZCBhbmQgdGh1cyB0aGUgYnV0dG9uIHRha2VzIHRoZSBkZWZhdWx0IGVuYWJsaW5nLCB3aGljaCBpcyB0cnVlIVxuXHRcdGNvbnN0IGFBcHBsaWNhYmxlID0gW10sXG5cdFx0XHRhTm90QXBwbGljYWJsZSA9IFtdLFxuXHRcdFx0c0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCA9IGAke29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2R5bmFtaWNBY3Rpb25zLyR7c0FjdGlvbn0vYkVuYWJsZWRgO1xuXHRcdGlmICh0eXBlb2Ygc1Byb3BlcnR5ID09PSBcIm9iamVjdFwiICYmIHNQcm9wZXJ0eSAhPT0gbnVsbCAmJiBzUHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKG9TZWxlY3RlZENvbnRleHQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3QoKSBhcyBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPjtcblx0XHRcdFx0Y29uc3Qgb1RyYW5zZm9ybWVkQmluZGluZyA9IHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KFxuXHRcdFx0XHRcdHNQcm9wZXJ0eSxcblx0XHRcdFx0XHRcIlBhdGhJbk1vZGVsXCIsXG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuXHRcdFx0XHRcdGZ1bmN0aW9uIChvQmluZGluZ0V4cHJlc3Npb246IFBhdGhJbk1vZGVsRXhwcmVzc2lvbjxQcmltaXRpdmVUeXBlPikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250ZXh0RGF0YSA/IGNvbnN0YW50KG9Db250ZXh0RGF0YVtvQmluZGluZ0V4cHJlc3Npb24ucGF0aF0pIDogY29uc3RhbnQoZmFsc2UpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBzUmVzdWx0ID0gY29tcGlsZUV4cHJlc3Npb24ob1RyYW5zZm9ybWVkQmluZGluZyk7XG5cdFx0XHRcdGlmIChzUmVzdWx0ID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgsIHRydWUpO1xuXHRcdFx0XHRcdGFBcHBsaWNhYmxlLnB1c2gob1NlbGVjdGVkQ29udGV4dCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YU5vdEFwcGxpY2FibGUucHVzaChvU2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Q29tbW9uVXRpbHMuc2V0RHluYW1pY0FjdGlvbkNvbnRleHRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgc0FjdGlvbiwgYUFwcGxpY2FibGUsIGFOb3RBcHBsaWNhYmxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dD8uZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlVHlwZT47XG5cdFx0XHRpZiAoc1Byb3BlcnR5ID09PSBudWxsICYmICEhb0NvbnRleHREYXRhW2AjJHtzQWN0aW9ufWBdKSB7XG5cdFx0XHRcdC8vbG9vayBmb3IgYWN0aW9uIGFkdmVydGlzZW1lbnQgaWYgcHJlc2VudCBhbmQgaXRzIHZhbHVlIGlzIG5vdCBudWxsXG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgsIHRydWUpO1xuXHRcdFx0fSBlbHNlIGlmIChvU2VsZWN0ZWRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Ly8gQ29sbGVjdCBwcm9taXNlcyB0byByZXRyaWV2ZSBzaW5nbGV0b24gb3Igbm9ybWFsIHByb3BlcnR5IHZhbHVlIGFzeW5jaHJvbm91c2x5XG5cdFx0XHRcdGFSZXF1ZXN0UHJvbWlzZXMucHVzaChDb21tb25VdGlscy5yZXF1ZXN0UHJvcGVydHkob1NlbGVjdGVkQ29udGV4dCwgc0FjdGlvbiwgc1Byb3BlcnR5LCBzRHluYW1pY0FjdGlvbkVuYWJsZWRQYXRoKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhUmVxdWVzdFByb21pc2VzO1xuXHR9XG59O1xuZXhwb3J0IGRlZmF1bHQgQWN0aW9uUnVudGltZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7OztFQW1CQSxNQUFNQSxhQUFhLEdBQUc7SUFDckI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLG1CQUFtQixFQUFFLGdCQUNwQkMscUJBQTJDLEVBQzNDQyw0QkFBb0QsRUFDcERDLGlCQUE0QixFQUM1QkMsUUFBZ0IsRUFDZjtNQUNELE1BQU1DLFNBQVMsR0FBRyxFQUFFO01BQ3BCLEtBQUssTUFBTUMsT0FBTyxJQUFJSiw0QkFBNEIsRUFBRTtRQUNuRCxJQUFJSyxnQkFBK0MsR0FBRyxFQUFFO1FBQ3hETixxQkFBcUIsQ0FBQ08sV0FBVyxDQUFDRixPQUFPLEVBQUUsS0FBSyxDQUFDO1FBQ2pELE1BQU1HLFNBQVMsR0FBR1AsNEJBQTRCLENBQUNJLE9BQU8sQ0FBQztRQUN2RCxLQUFLLElBQUlJLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR1AsaUJBQWlCLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7VUFDbEQsTUFBTUUsZ0JBQWdCLEdBQUdULGlCQUFpQixDQUFDTyxDQUFDLENBQUM7VUFDN0MsSUFBSUUsZ0JBQWdCLEVBQUU7WUFDckIsTUFBTUMsWUFBWSxHQUFH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
246
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25SdW50aW1lIiwiX2FkZE1lc3NhZ2VGb3JBY3Rpb25QYXJhbWV0ZXIiLCJtZXNzYWdlTWFuYWdlciIsIm1lc3NhZ2VQYXJhbWV0ZXJzIiwiYWRkTWVzc2FnZXMiLCJtYXAiLCJtZXNzYWdlUGFyYW1ldGVyIiwiYmluZGluZyIsImFjdGlvblBhcmFtZXRlckluZm8iLCJmaWVsZCIsImdldEJpbmRpbmciLCJpc011bHRpVmFsdWUiLCJNZXNzYWdlIiwibWVzc2FnZSIsInR5cGUiLCJwcm9jZXNzb3IiLCJnZXRNb2RlbCIsInBlcnNpc3RlbnQiLCJ0YXJnZXQiLCJnZXRSZXNvbHZlZFBhdGgiLCJ2YWxpZGF0ZVByb3BlcnRpZXMiLCJhY3Rpb25QYXJhbWV0ZXJJbmZvcyIsInJlc291cmNlTW9kZWwiLCJQcm9taXNlIiwiYWxsU2V0dGxlZCIsInZhbGlkYXRpb25Qcm9taXNlIiwicmVxdWlyZWRQYXJhbWV0ZXJJbmZvcyIsImZpbHRlciIsInBhcmFtZXRlckluZm8iLCJnZXRSZXF1aXJlZCIsImFsbE1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsImVtcHR5UmVxdWlyZWRGaWVsZHMiLCJyZXF1aXJlZFBhcmFtZXRlckluZm8iLCJmaWVsZElkIiwiZ2V0SWQiLCJyZWxldmFudE1lc3NhZ2VzIiwibXNnIiwiZ2V0Q29udHJvbElkcyIsInNvbWUiLCJjb250cm9sSWQiLCJpbmNsdWRlcyIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiZ2V0VGV4dCIsImdldFBhcmVudCIsImdldEFnZ3JlZ2F0aW9uIiwiZmlyc3RJbnZhbGlkUGFyYW1ldGVyIiwiZmluZCIsImhhc0Vycm9yIiwiZ2V0VmFsdWVTdGF0ZSIsImZvY3VzIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJhU2VsZWN0ZWRDb250ZXh0cyIsInNDb250cm9sIiwiYVByb21pc2VzIiwic0FjdGlvbiIsImFSZXF1ZXN0UHJvbWlzZXMiLCJzZXRQcm9wZXJ0eSIsInNQcm9wZXJ0eSIsImkiLCJvU2VsZWN0ZWRDb250ZXh0Iiwib0NvbnRleHREYXRhIiwiZ2V0T2JqZWN0IiwiX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZSIsImJFbmFibGVkIiwiYUFwcGxpY2FibGUiLCJhTm90QXBwbGljYWJsZSIsInB1c2giLCJDb21tb25VdGlscyIsInNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZSIsImFsbCIsInNldEFjdGlvbkVuYWJsZW1lbnRBZnRlclBhdGNoIiwib1ZpZXciLCJvTGlzdEJpbmRpbmciLCJvSW50ZXJuYWxNb2RlbENvbnRleHREYXRhIiwib0NvbnRyb2xzIiwiY29udHJvbHMiLCJzS2V5Iiwib1RhYmxlIiwiYnlJZCIsImlzQSIsIm9Sb3dCaW5kaW5nIiwiZ2V0Um93QmluZGluZyIsImdldEJpbmRpbmdDb250ZXh0IiwiSlNPTiIsInBhcnNlIiwiZGF0YSIsImN1c3RvbURhdGEiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwidXBkYXRlRWRpdEJ1dHRvblZpc2liaWxpdHlBbmRFbmFibGVtZW50IiwiaVZpZXdMZXZlbCIsImdldFZpZXdEYXRhIiwidmlld0xldmVsIiwiaXNFZGl0YWJsZSIsImdldFByb3BlcnR5Iiwib0NvbnRleHQiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50Iiwic01ldGFQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRNZXRhUGF0aEZvckNvbnRleHQiLCJzRW50aXR5U2V0IiwiZ2V0Um9vdEVudGl0eVNldFBhdGgiLCJtZXRhQ29udGV4dCIsImdldE1ldGFNb2RlbCIsImdldENvbnRleHQiLCJnZXRQYXRoIiwiY29udmVydGVyQ29udGV4dCIsIkNvbnZlcnRlckNvbnRleHQiLCJjcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8iLCJnZXREaWFnbm9zdGljcyIsIm1lcmdlIiwiZW50aXR5U2V0IiwiZ2V0RW50aXR5U2V0IiwiZW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJ1cGRhdGVIaWRkZW4iLCJiVXBkYXRlSGlkZGVuIiwiaXNFbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIlVJIiwiVXBkYXRlSGlkZGVuIiwidmFsdWVPZiIsImlzVXBkYXRlSGlkZGVuIiwic0VkaXRFbmFibGVCaW5kaW5nIiwiZ2V0RWRpdEJ1dHRvbkVuYWJsZWQiLCJkcmFmdFJvb3RQYXRoIiwiZ2V0RHJhZnRSb290UGF0aCIsInNTdGlja3lSb290UGF0aCIsImdldFN0aWNreVJvb3RQYXRoIiwic1BhdGgiLCJvUm9vdENvbnRleHQiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNIaWRkZW5FeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJlcXVhbCIsImdldEhpZGRlbkV4cHJlc3Npb24iLCJ1cGRhdGVFZGl0TW9kZWxDb250ZXh0Iiwic0JpbmRpbmdFeHByZXNzaW9uIiwib0hpZGRlbkVsZW1lbnQiLCJBbnlFbGVtZW50IiwiYW55VGV4dCIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRGVwZW5kZW50IiwiJCRncm91cElkIiwiYXR0YWNoQ2hhbmdlIiwib0V2ZW50Iiwib05ld1ZhbHVlIiwiZ2V0U291cmNlIiwiZ2V0RXh0ZXJuYWxWYWx1ZSIsInNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgiLCJvVHJhbnNmb3JtZWRCaW5kaW5nIiwidHJhbnNmb3JtUmVjdXJzaXZlbHkiLCJvQmluZGluZ0V4cHJlc3Npb24iLCJjb25zdGFudCIsInBhdGgiLCJzUmVzdWx0Iiwic2V0RHluYW1pY0FjdGlvbkNvbnRleHRzIiwicmVxdWVzdFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb25SdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgdHlwZSB7IF9SZXF1ZXN0ZWRQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgdHJhbnNmb3JtUmVjdXJzaXZlbHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGlzRW50aXR5U2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCB0eXBlIE11bHRpVmFsdWVGaWVsZEl0ZW0gZnJvbSBcInNhcC91aS9tZGMvZmllbGQvTXVsdGlWYWx1ZUZpZWxkSXRlbVwiO1xuaW1wb3J0IHR5cGUgTXVsdGlWYWx1ZUZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL011bHRpVmFsdWVGaWVsZFwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvUHJvcGVydHlCaW5kaW5nXCI7XG5pbXBvcnQgQW55RWxlbWVudCBmcm9tIFwiLi9jb250cm9scy9BbnlFbGVtZW50XCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQmFzZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwiLi9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEVkaXRCdXR0b25FbmFibGVkLCBnZXRIaWRkZW5FeHByZXNzaW9uIH0gZnJvbSBcIi4vY29udmVydGVycy9vYmplY3RQYWdlL0hlYWRlckFuZEZvb3RlckFjdGlvblwiO1xuXG50eXBlIEFjdGlvblBhcmFtZXRlciA9IHtcblx0JE5hbWU6IHN0cmluZztcblx0JGlzQ29sbGVjdGlvbjogYm9vbGVhbjtcblx0Ly8gY3VycmVudGx5IHJ1bnRpbWUgaW5mb3JtYXRpb24gaXMgd3JpdHRlbiBpbnRvIHRoZSBtZXRhbW9kZWw6XG5cdC8vIC0gaW4gdGhlIHByZXNzIGhhbmRsZXIgb2YgdGhlIGFjdGlvbiBidXR0b24gb24gdGhlIHBhcmFtZXRlciBkaWFsb2csIHRoZSB2YWx1ZSBvZiBlYWNoIHBhcmFtZXRlciBpcyBhZGRlZFxuXHQvLyAtIGluIHNldEFjdGlvblBhcmFtZXRlckRlZmF1bHRWYWx1ZSwgdGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGFuZCB0cmFuc2ZlcnJlZCB0byB0aGUgY29udGV4dCAoaW4gT0RhdGFNb2RlbCkgY3JlYXRlZCBmb3IgdGhlIGFjdGlvbiBleGVjdXRpb25cblx0Ly8gdGhpcyBpcyBxdWl0ZSBvZGQsIGFuZCBpdCB3b3VsZCBtYWtlIG11Y2ggbW9yZSBzZW5zZSB0byB0YWtlIHRoZSB2YWx1ZSBmcm9tIGFjdGlvblBhcmFtZXRlckluZm9zXG5cdC8vIC0gaG93ZXZlciwgc2V0QWN0aW9uUGFyYW1ldGVyRGVmYXVsdFZhbHVlIChvciByYXRoZXIgdGhlIHN1cnJvdW5kaW5nIF9leGVjdXRlQWN0aW9uKSBpcyBhbHNvIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlc1xuXHQvLyA9PiBmb3IgdGhlIHRpbWUgYmVpbmcsIGFkZGluZyB2YWx1ZSBoZXJlIHRvIGF2b2lkIHRzIGVycm9ycywgc3ViamVjdCB0byByZWZhY3RvcmluZ1xuXHQvLyBpbiBjYXNlIG9mIEZpZWxkLCB0aGUgdmFsdWUgaXMgc3RyaW5nLCBpbiBjYXNlIG9mIE11bHRpVmFsdWVGaWVsZCwgaXQncyBNdWx0aVZhbHVlRmllbGRJdGVtW11cblx0dmFsdWU6IHN0cmluZyB8IE11bHRpVmFsdWVGaWVsZEl0ZW1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvblBhcmFtZXRlckluZm8gPSB7XG5cdHBhcmFtZXRlcjogQWN0aW9uUGFyYW1ldGVyO1xuXHRmaWVsZDogRmllbGQgfCBNdWx0aVZhbHVlRmllbGQ7XG5cdGlzTXVsdGlWYWx1ZTogYm9vbGVhbjtcblx0dmFsdWU/OiBzdHJpbmcgfCBNdWx0aVZhbHVlRmllbGRJdGVtW107XG5cdHZhbGlkYXRpb25Qcm9taXNlPzogUHJvbWlzZTxzdHJpbmcgfCBNdWx0aVZhbHVlRmllbGRJdGVtW10+O1xuXHRoYXNFcnJvcjogYm9vbGVhbjtcbn07XG5cbmNvbnN0IEFjdGlvblJ1bnRpbWUgPSB7XG5cdC8qKlxuXHQgKiBBZGRzIGVycm9yIG1lc3NhZ2VzIGZvciBhbiBhY3Rpb24gcGFyYW1ldGVyIGZpZWxkIHRvIHRoZSBtZXNzYWdlIG1hbmFnZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlTWFuYWdlciBUaGUgYWN0aXZlIE1lc3NhZ2VNYW5hZ2VyIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBtZXNzYWdlUGFyYW1ldGVycyBJbmZvcm1hdGlvbiBpZGVudGlmeWluZyBhbiBhY3Rpb24gcGFyYW1ldGVyIGFuZCBtZXNzYWdlcyByZWZlcnJpbmcgdG8gdGhpcyBwYXJhbWV0ZXJcblx0ICovXG5cdF9hZGRNZXNzYWdlRm9yQWN0aW9uUGFyYW1ldGVyOiBmdW5jdGlvbiAoXG5cdFx0bWVzc2FnZU1hbmFnZXI6IE1lc3NhZ2VNYW5hZ2VyLFxuXHRcdG1lc3NhZ2VQYXJhbWV0ZXJzOiB7IGFjdGlvblBhcmFtZXRlckluZm86IEFjdGlvblBhcmFtZXRlckluZm87IG1lc3NhZ2U6IHN0cmluZyB9W11cblx0KSB7XG5cdFx0bWVzc2FnZU1hbmFnZXIuYWRkTWVzc2FnZXMoXG5cdFx0XHRtZXNzYWdlUGFyYW1ldGVycy5tYXAoKG1lc3NhZ2VQYXJhbWV0ZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgYmluZGluZyA9IG1lc3NhZ2VQYXJhbWV0ZXIuYWN0aW9uUGFyYW1ldGVySW5mby5maWVsZC5nZXRCaW5kaW5nKFxuXHRcdFx0XHRcdG1lc3NhZ2VQYXJhbWV0ZXIuYWN0aW9uUGFyYW1ldGVySW5mby5pc011bHRpVmFsdWUgPyBcIml0ZW1zXCIgOiBcInZhbHVlXCJcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIG5ldyBNZXNzYWdlKHtcblx0XHRcdFx0XHRtZXNzYWdlOiBtZXNzYWdlUGFyYW1ldGVyLm1lc3NhZ2UsXG5cdFx0XHRcdFx0dHlwZTogXCJFcnJvclwiLFxuXHRcdFx0XHRcdHByb2Nlc3NvcjogYmluZGluZz8uZ2V0TW9kZWwoKSxcblx0XHRcdFx0XHRwZXJzaXN0ZW50OiB0cnVlLFxuXHRcdFx0XHRcdHRhcmdldDogYmluZGluZz8uZ2V0UmVzb2x2ZWRQYXRoKClcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhbGwgcmVxdWlyZWQgYWN0aW9uIHBhcmFtZXRlcnMgY29udGFpbiBkYXRhIGFuZCBjaGVja3MgZm9yIGFsbCBhY3Rpb24gcGFyYW1ldGVycyBpZiB0aGVcblx0ICogY29udGFpbmVkIGRhdGEgaXMgdmFsaWQuXG5cdCAqXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlTWFuYWdlciBUaGUgYWN0aXZlIE1lc3NhZ2VNYW5hZ2VyIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBhY3Rpb25QYXJhbWV0ZXJJbmZvcyBJbmZvcm1hdGlvbiBpZGVudGlmeWluZyBhbiBhY3Rpb24gcGFyYW1ldGVyXG5cdCAqIEBwYXJhbSByZXNvdXJjZU1vZGVsIFRoZSBtb2RlbCB0byBsb2FkIHRleHQgcmVzb3VyY2VzXG5cdCAqIEByZXR1cm5zIFRoZSB2YWxpZGF0aW9uIHJlc3VsdCBjYW4gYmUgdHJ1ZSBvciBmYWxzZVxuXHQgKi9cblx0dmFsaWRhdGVQcm9wZXJ0aWVzOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0bWVzc2FnZU1hbmFnZXI6IE1lc3NhZ2VNYW5hZ2VyLFxuXHRcdGFjdGlvblBhcmFtZXRlckluZm9zOiBBY3Rpb25QYXJhbWV0ZXJJbmZvW10sXG5cdFx0cmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbFxuXHQpOlByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChhY3Rpb25QYXJhbWV0ZXJJbmZvcy5tYXAoKGFjdGlvblBhcmFtZXRlckluZm8pID0+IGFjdGlvblBhcmFtZXRlckluZm8udmFsaWRhdGlvblByb21pc2UpKTtcblxuXHRcdGNvbnN0IHJlcXVpcmVkUGFyYW1ldGVySW5mb3MgPSBhY3Rpb25QYXJhbWV0ZXJJbmZvcy5maWx0ZXIoKHBhcmFtZXRlckluZm8pID0+IHBhcmFtZXRlckluZm8uZmllbGQuZ2V0UmVxdWlyZWQoKSk7XG5cdFx0Y29uc3QgYWxsTWVzc2FnZXMgPSBtZXNzYWdlTWFuYWdlci5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCk7XG5cdFx0Y29uc3QgZW1wdHlSZXF1aXJlZEZpZWxkcyA9IHJlcXVpcmVkUGFyYW1ldGVySW5mb3MuZmlsdGVyKChyZXF1aXJlZFBhcmFtZXRlckluZm8pID0+IHtcblx0XHRcdGNvbnN0IGZpZWxkSWQgPSByZXF1aXJlZFBhcmFtZXRlckluZm8uZmllbGQuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IHJlbGV2YW50TWVzc2FnZXMgPSBhbGxNZXNzYWdlcy5maWx0ZXIoKG1zZzogTWVzc2FnZSkgPT5cblx0XHRcdFx0bXNnLmdldENvbnRyb2xJZHMoKS5zb21lKChjb250cm9sSWQ6IHN0cmluZykgPT4gY29udHJvbElkLmluY2x1ZGVzKGZpZWxkSWQpKVxuXHRcdFx0KTtcblx0XHRcdGlmIChyZWxldmFudE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmIChyZXF1aXJlZFBhcmFtZXRlckluZm8uaXNNdWx0aVZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiByZXF1aXJlZFBhcmFtZXRlckluZm8udmFsdWUgPT09IHVuZGVmaW5lZCB8fCAhcmVxdWlyZWRQYXJhbWV0ZXJJbmZvLnZhbHVlLmxlbmd0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0cmVxdWlyZWRQYXJhbWV0ZXJJbmZvLnZhbHVlID09PSB1bmRlZmluZWQgfHwgcmVxdWlyZWRQYXJhbWV0ZXJJbmZvLnZhbHVlID09PSBudWxsIHx8IHJlcXVpcmVkUGFyYW1ldGVySW5mby52YWx1ZSA9PT0gXCJcIlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdC8qIE1lc3NhZ2UgZm9yIG1pc3NpbmcgbWFuZGF0b3J5IHZhbHVlIG9mIHRoZSBhY3Rpb24gcGFyYW1ldGVyICovXG5cdFx0aWYgKGVtcHR5UmVxdWlyZWRGaWVsZHMubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLl9hZGRNZXNzYWdlRm9yQWN0aW9uUGFyYW1ldGVyKFxuXHRcdFx0XHRtZXNzYWdlTWFuYWdlcixcblx0XHRcdFx0ZW1wdHlSZXF1aXJlZEZpZWxkcy5tYXAoKGFjdGlvblBhcmFtZXRlckluZm8pID0+ICh7XG5cdFx0XHRcdFx0YWN0aW9uUGFyYW1ldGVySW5mbzogYWN0aW9uUGFyYW1ldGVySW5mbyxcblx0XHRcdFx0XHRtZXNzYWdlOiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX09QRVJBVElPTlNfQUNUSU9OX1BBUkFNRVRFUl9ESUFMT0dfTUlTU0lOR19NQU5EQVRPUllfTVNHXCIsIFtcblx0XHRcdFx0XHRcdChhY3Rpb25QYXJhbWV0ZXJJbmZvLmZpZWxkLmdldFBhcmVudCgpPy5nZXRBZ2dyZWdhdGlvbihcImxhYmVsXCIpIGFzIExhYmVsKS5nZXRUZXh0KClcblx0XHRcdFx0XHRdKVxuXHRcdFx0XHR9KSlcblx0XHRcdCk7XG5cdFx0fVxuXHRcdC8qIENoZWNrIHZhbHVlIHN0YXRlIG9mIGFsbCBwYXJhbWV0ZXJzICovXG5cdFx0Y29uc3QgZmlyc3RJbnZhbGlkUGFyYW1ldGVyID0gYWN0aW9uUGFyYW1ldGVySW5mb3MuZmluZChcblx0XHRcdChwYXJhbWV0ZXJJbmZvKSA9PiBwYXJhbWV0ZXJJbmZvLmhhc0Vycm9yIHx8IHBhcmFtZXRlckluZm8uZmllbGQuZ2V0VmFsdWVTdGF0ZSgpID09PSBcIkVycm9yXCIgfHwgZW1wdHlSZXF1aXJlZEZpZWxkcy5pbmNsdWRlcyhwYXJhbWV0ZXJJbmZvKVxuXHRcdCk7XG5cdFx0aWYgKGZpcnN0SW52YWxpZFBhcmFtZXRlcikge1xuXHRcdFx0Zmlyc3RJbnZhbGlkUGFyYW1ldGVyLmZpZWxkLmZvY3VzKCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2V0cyB0aGUgYWN0aW9uIGVuYWJsZW1lbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzZXRBY3Rpb25FbmFibGVtZW50XG5cdCAqIEBwYXJhbSBvSW50ZXJuYWxNb2RlbENvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgbW9kZWxcblx0ICogQHBhcmFtIG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAgTWFwIGNvbnRhaW5pbmcgdGhlIG9wZXJhdGlvbiBhdmFpbGFiaWxpdHkgb2YgYWN0aW9uc1xuXHQgKiBAcGFyYW0gYVNlbGVjdGVkQ29udGV4dHMgQXJyYXkgY29udGFpbmluZyBzZWxlY3RlZCBjb250ZXh0cyBvZiB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHNDb250cm9sIENvbnRyb2wgbmFtZVxuXHQgKiBAcmV0dXJucyBUaGUgYWN0aW9uIGVuYWJsZW1lbnQgcHJvbWlzZXNcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRzZXRBY3Rpb25FbmFibGVtZW50OiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0OiBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuXHRcdGFTZWxlY3RlZENvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0c0NvbnRyb2w6IHN0cmluZ1xuXHQpIHtcblx0XHRjb25zdCBhUHJvbWlzZXMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IHNBY3Rpb24gaW4gb0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcCkge1xuXHRcdFx0bGV0IGFSZXF1ZXN0UHJvbWlzZXM6IFByb21pc2U8X1JlcXVlc3RlZFByb3BlcnR5PltdID0gW107XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0FjdGlvbiwgZmFsc2UpO1xuXHRcdFx0Y29uc3Qgc1Byb3BlcnR5ID0gb0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcFtzQWN0aW9uXTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgb1NlbGVjdGVkQ29udGV4dCA9IGFTZWxlY3RlZENvbnRleHRzW2ldO1xuXHRcdFx0XHRpZiAob1NlbGVjdGVkQ29udGV4dCkge1xuXHRcdFx0XHRcdGNvbnN0IG9Db250ZXh0RGF0YSA9IG9TZWxlY3RlZENvbnRleHQuZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0XHRcdFx0aWYgKHNDb250cm9sID09PSBcImNoYXJ0XCIpIHtcblx0XHRcdFx0XHRcdGlmICgoc1Byb3BlcnR5ID09PSBudWxsICYmICEhb0NvbnRleHREYXRhW2AjJHtzQWN0aW9ufWBdKSB8fCBvU2VsZWN0ZWRDb250ZXh0LmdldE9iamVjdChzUHJvcGVydHkpKSB7XG5cdFx0XHRcdFx0XHRcdC8vbG9vayBmb3IgYWN0aW9uIGFkdmVydGlzZW1lbnQgaWYgcHJlc2VudCBhbmQgaXRzIHZhbHVlIGlzIG5vdCBudWxsXG5cdFx0XHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzQWN0aW9uLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChzQ29udHJvbCA9PT0gXCJ0YWJsZVwiKSB7XG5cdFx0XHRcdFx0XHRhUmVxdWVzdFByb21pc2VzID0gdGhpcy5fc2V0QWN0aW9uRW5hYmxlbWVudEZvclRhYmxlKFxuXHRcdFx0XHRcdFx0XHRvU2VsZWN0ZWRDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdFx0XHRcdHNBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0YVJlcXVlc3RQcm9taXNlc1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChzQ29udHJvbCA9PT0gXCJ0YWJsZVwiKSB7XG5cdFx0XHRcdGlmICghYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBkeW5hbWljQWN0aW9ucy8ke3NBY3Rpb259YCwge1xuXHRcdFx0XHRcdFx0YkVuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0YUFwcGxpY2FibGU6IFtdLFxuXHRcdFx0XHRcdFx0YU5vdEFwcGxpY2FibGU6IFtdXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YVByb21pc2VzLnB1c2goQ29tbW9uVXRpbHMuc2V0Q29udGV4dHNCYXNlZE9uT3BlcmF0aW9uQXZhaWxhYmxlKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgW10pKTtcblx0XHRcdFx0fSBlbHNlIGlmIChhU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggJiYgdHlwZW9mIHNQcm9wZXJ0eSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdC8vIFdoZW4gYWxsIHByb3BlcnR5IHZhbHVlcyBoYXZlIGJlZW4gcmV0cmlldmVkLCBzZXRcblx0XHRcdFx0XHQvLyBUaGUgYXBwbGljYWJsZSBhbmQgbm90LWFwcGxpY2FibGUgc2VsZWN0ZWQgY29udGV4dHMgZm9yIGVhY2ggYWN0aW9uIGFuZFxuXHRcdFx0XHRcdC8vIFRoZSBlbmFibGVkIHByb3BlcnR5IG9mIHRoZSBkeW5hbWljIGFjdGlvbiBpbiBpbnRlcm5hbCBtb2RlbCBjb250ZXh0LlxuXHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZShvSW50ZXJuYWxNb2RlbENvbnRleHQsIGFSZXF1ZXN0UHJvbWlzZXMpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblx0c2V0QWN0aW9uRW5hYmxlbWVudEFmdGVyUGF0Y2g6IGZ1bmN0aW9uIChvVmlldzogVmlldywgb0xpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0KSB7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0RGF0YSA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0Y29uc3Qgb0NvbnRyb2xzID0gKG9JbnRlcm5hbE1vZGVsQ29udGV4dERhdGE/LmNvbnRyb2xzIHx8IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB7IGNvbnRyb2xJZD86IHN0cmluZyB9Pjtcblx0XHRmb3IgKGNvbnN0IHNLZXkgaW4gb0NvbnRyb2xzKSB7XG5cdFx0XHRpZiAob0NvbnRyb2xzW3NLZXldICYmIG9Db250cm9sc1tzS2V5XS5jb250cm9sSWQpIHtcblx0XHRcdFx0Y29uc3Qgb1RhYmxlID0gb1ZpZXcuYnlJZChzS2V5KTtcblx0XHRcdFx0aWYgKG9UYWJsZSAmJiBvVGFibGUuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdFx0XHRjb25zdCBvUm93QmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0XHRcdFx0aWYgKG9Sb3dCaW5kaW5nID09IG9MaXN0QmluZGluZykge1xuXHRcdFx0XHRcdFx0QWN0aW9uUnVudGltZS5zZXRBY3Rpb25FbmFibGVtZW50KFxuXHRcdFx0XHRcdFx0XHRvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0SlNPTi5wYXJzZShvVGFibGUuZGF0YShcIm9wZXJhdGlvbkF2YWlsYWJsZU1hcFwiKS5jdXN0b21EYXRhKSxcblx0XHRcdFx0XHRcdFx0b1RhYmxlLmdldFNlbGVjdGVkQ29udGV4dHMoKSBhcyBDb250ZXh0W10sXG5cdFx0XHRcdFx0XHRcdFwidGFibGVcIlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0dXBkYXRlRWRpdEJ1dHRvblZpc2liaWxpdHlBbmRFbmFibGVtZW50KG9WaWV3OiBWaWV3KSB7XG5cdFx0Y29uc3QgaVZpZXdMZXZlbCA9IChvVmlldy5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzKT8udmlld0xldmVsLFxuXHRcdCAgICAgIGlzRWRpdGFibGUgPSBvVmlldy5nZXRNb2RlbChcInVpXCIpPy5nZXRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlXCIpO1xuXHRcdGlmICgoaVZpZXdMZXZlbCBhcyBudW1iZXIpID4gMSAmJiAgaXNFZGl0YWJsZSAhPT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRcdGNvbnN0IHNNZXRhUGF0aCA9IE1vZGVsSGVscGVyLmdldE1ldGFQYXRoRm9yQ29udGV4dChvQ29udGV4dCk7XG5cdFx0XHRjb25zdCBzRW50aXR5U2V0ID0gTW9kZWxIZWxwZXIuZ2V0Um9vdEVudGl0eVNldFBhdGgoc01ldGFQYXRoKTtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb0NvbnRleHQ/LmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpPy5nZXRDb250ZXh0KG9Db250ZXh0Py5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IENvbnZlcnRlckNvbnRleHQ/LmNyZWF0ZUNvbnZlcnRlckNvbnRleHRGb3JNYWNybyhcblx0XHRcdFx0c0VudGl0eVNldCxcblx0XHRcdFx0bWV0YUNvbnRleHQsXG5cdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0RGlhZ25vc3RpY3MoKSxcblx0XHRcdFx0bWVyZ2UsXG5cdFx0XHRcdHVuZGVmaW5lZFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0XHRsZXQgdXBkYXRlSGlkZGVuO1xuXHRcdFx0Ly9GaW5kIHRoZSBVcGRhdGUgSGlkZGVuIG9mIHRoZSByb290IGVudGl0eSBzZXQgYW5kIGJpbmQgdGhlIHByb3BlcnR5IHRvIEFueUVsZW1lbnQsIGFueSBjaGFuZ2VzIGluIHRoZSBwYXRoIG9mIHRoZSByb290IFVwZGF0ZUhpZGRlbiB3aWxsIGJlIHVwZGF0ZWQgdmlhIHRoZSBwcm9wZXJ0eSwgaW50ZXJuYWwgbW9kZWwgY29udGV4dCBpcyB1cGRhdGVkIGJhc2VkIG9uIHRoZSBwcm9wZXJ0eVxuXHRcdFx0Y29uc3QgYlVwZGF0ZUhpZGRlbiA9IGlzRW50aXR5U2V0KGVudGl0eVNldCkgJiYgZW50aXR5U2V0LmFubm90YXRpb25zLlVJPy5VcGRhdGVIaWRkZW4/LnZhbHVlT2YoKTtcblx0XHRcdGlmIChiVXBkYXRlSGlkZGVuICE9PSB0cnVlKSB7XG5cdFx0XHRcdHVwZGF0ZUhpZGRlbiA9IE1vZGVsSGVscGVyLmlzVXBkYXRlSGlkZGVuKGVudGl0eVNldCwgZW50aXR5VHlwZSk7XG5cdFx0XHR9XG5cdFx0XHQvL0ZpbmQgdGhlIG9wZXJhdGlvbiBhdmFpbGFibGUgcHJvcGVydHkgb2YgdGhlIHJvb3QgZWRpdCBjb25maWd1cmF0aW9uIGFuZCBmZXRjaCB0aGUgcHJvcGVydHkgdXNpbmcgQW55RWxlbWVudFxuXHRcdFx0Y29uc3Qgc0VkaXRFbmFibGVCaW5kaW5nID0gZ2V0RWRpdEJ1dHRvbkVuYWJsZWQoY29udmVydGVyQ29udGV4dCwgdW5kZWZpbmVkKTtcblx0XHRcdGNvbnN0IGRyYWZ0Um9vdFBhdGggPSBNb2RlbEhlbHBlci5nZXREcmFmdFJvb3RQYXRoKG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IHNTdGlja3lSb290UGF0aCA9IE1vZGVsSGVscGVyLmdldFN0aWNreVJvb3RQYXRoKG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IHNQYXRoID0gZHJhZnRSb290UGF0aCB8fCBzU3RpY2t5Um9vdFBhdGg7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0aWYgKHNQYXRoKSB7XG5cdFx0XHRcdGNvbnN0IG9Sb290Q29udGV4dCA9IG9WaWV3LmdldE1vZGVsKCkuYmluZENvbnRleHQoc1BhdGgpLmdldEJvdW5kQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRcdGlmICh1cGRhdGVIaWRkZW4gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGNvbnN0IHNIaWRkZW5FeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oZXF1YWwoZ2V0SGlkZGVuRXhwcmVzc2lvbihjb252ZXJ0ZXJDb250ZXh0LCB1cGRhdGVIaWRkZW4pLCBmYWxzZSkpO1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlRWRpdE1vZGVsQ29udGV4dChzSGlkZGVuRXhwcmVzc2lvbiwgb1ZpZXcsIG9Sb290Q29udGV4dCwgXCJyb290RWRpdFZpc2libGVcIiwgb0ludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc0VkaXRFbmFibGVCaW5kaW5nKSB7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVFZGl0TW9kZWxDb250ZXh0KHNFZGl0RW5hYmxlQmluZGluZywgb1ZpZXcsIG9Sb290Q29udGV4dCwgXCJyb290RWRpdEVuYWJsZWRcIiwgb0ludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHR1cGRhdGVFZGl0TW9kZWxDb250ZXh0OiBmdW5jdGlvbiAoXG5cdFx0c0JpbmRpbmdFeHByZXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0b1ZpZXc6IFZpZXcsXG5cdFx0b1Jvb3RDb250ZXh0OiBDb250ZXh0LFxuXHRcdHNQcm9wZXJ0eTogc3RyaW5nLFxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHRcblx0KSB7XG5cdFx0aWYgKHNCaW5kaW5nRXhwcmVzc2lvbikge1xuXHRcdFx0Y29uc3Qgb0hpZGRlbkVsZW1lbnQgPSBuZXcgQW55RWxlbWVudCh7IGFueVRleHQ6IHNCaW5kaW5nRXhwcmVzc2lvbiB9KTtcblx0XHRcdG9IaWRkZW5FbGVtZW50LnNldEJpbmRpbmdDb250ZXh0KG51bGwpO1xuXHRcdFx0b1ZpZXcuYWRkRGVwZW5kZW50KG9IaWRkZW5FbGVtZW50KTtcblx0XHRcdG9IaWRkZW5FbGVtZW50LmdldEJpbmRpbmcoXCJhbnlUZXh0XCIpO1xuXHRcdFx0Y29uc3Qgb0NvbnRleHQgPSBvSGlkZGVuRWxlbWVudFxuXHRcdFx0XHQuZ2V0TW9kZWwoKVxuXHRcdFx0XHQ/LmJpbmRDb250ZXh0KG9Sb290Q29udGV4dC5nZXRQYXRoKCksIG9Sb290Q29udGV4dCwgeyAkJGdyb3VwSWQ6IFwiJGF1dG8uSGVyb2VzXCIgfSlcblx0XHRcdFx0Py5nZXRCb3VuZENvbnRleHQoKTtcblx0XHRcdG9IaWRkZW5FbGVtZW50LnNldEJpbmRpbmdDb250ZXh0KG9Db250ZXh0KTtcblx0XHRcdG9IaWRkZW5FbGVtZW50Py5nZXRCaW5kaW5nKFwiYW55VGV4dFwiKT8uYXR0YWNoQ2hhbmdlKChvRXZlbnQ6IEV2ZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9OZXdWYWx1ZSA9IChvRXZlbnQuZ2V0U291cmNlKCkgYXMgUHJvcGVydHlCaW5kaW5nKS5nZXRFeHRlcm5hbFZhbHVlKCk7XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzUHJvcGVydHksIG9OZXdWYWx1ZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0X3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZTogZnVuY3Rpb24gKFxuXHRcdG9TZWxlY3RlZENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQsXG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0OiBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRzQWN0aW9uOiBzdHJpbmcsXG5cdFx0c1Byb3BlcnR5OiBzdHJpbmcsXG5cdFx0YVJlcXVlc3RQcm9taXNlczogUHJvbWlzZTxfUmVxdWVzdGVkUHJvcGVydHk+W11cblx0KSB7XG5cdFx0Ly8gUmVzZXQgYWxsIHByb3BlcnRpZXMgYmVmb3JlIGNvbXB1dGF0aW9uXG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBkeW5hbWljQWN0aW9ucy8ke3NBY3Rpb259YCwge1xuXHRcdFx0YkVuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YUFwcGxpY2FibGU6IFtdLFxuXHRcdFx0YU5vdEFwcGxpY2FibGU6IFtdXG5cdFx0fSk7XG5cdFx0Ly8gTm90ZSB0aGF0IG5vbiBkeW5hbWljIGFjdGlvbnMgYXJlIG5vdCBwcm9jZXNzZWQgaGVyZS4gVGhleSBhcmUgZW5hYmxlZCBiZWNhdXNlXG5cdFx0Ly8gb25lIG9yIG1vcmUgYXJlIHNlbGVjdGVkIGFuZCB0aGUgc2Vjb25kIHBhcnQgb2YgdGhlIGNvbmRpdGlvbiBpbiB0aGUgdGVtcGxhdGluZ1xuXHRcdC8vIGlzIHRoZW4gdW5kZWZpbmVkIGFuZCB0aHVzIHRoZSBidXR0b24gdGFrZXMgdGhlIGRlZmF1bHQgZW5hYmxpbmcsIHdoaWNoIGlzIHRydWUhXG5cdFx0Y29uc3QgYUFwcGxpY2FibGUgPSBbXSxcblx0XHRcdGFOb3RBcHBsaWNhYmxlID0gW10sXG5cdFx0XHRzRHluYW1pY0FjdGlvbkVuYWJsZWRQYXRoID0gYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufS9iRW5hYmxlZGA7XG5cdFx0aWYgKHR5cGVvZiBzUHJvcGVydHkgPT09IFwib2JqZWN0XCIgJiYgc1Byb3BlcnR5ICE9PSBudWxsICYmIHNQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAob1NlbGVjdGVkQ29udGV4dCkge1xuXHRcdFx0XHRjb25zdCBvQ29udGV4dERhdGEgPSBvU2VsZWN0ZWRDb250ZXh0LmdldE9iamVjdCgpIGFzIFJlY29yZDxzdHJpbmcsIFByaW1pdGl2ZVR5cGU+O1xuXHRcdFx0XHRjb25zdCBvVHJhbnNmb3JtZWRCaW5kaW5nID0gdHJhbnNmb3JtUmVjdXJzaXZlbHkoXG5cdFx0XHRcdFx0c1Byb3BlcnR5LFxuXHRcdFx0XHRcdFwiUGF0aEluTW9kZWxcIixcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9vcC1mdW5jXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKG9CaW5kaW5nRXhwcmVzc2lvbjogUGF0aEluTW9kZWxFeHByZXNzaW9uPFByaW1pdGl2ZVR5cGU+KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb0NvbnRleHREYXRhID8gY29uc3RhbnQob0NvbnRleHREYXRhW29CaW5kaW5nRXhwcmVzc2lvbi5wYXRoXSkgOiBjb25zdGFudChmYWxzZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IHNSZXN1bHQgPSBjb21waWxlRXhwcmVzc2lvbihvVHJhbnNmb3JtZWRCaW5kaW5nKTtcblx0XHRcdFx0aWYgKHNSZXN1bHQgPT09IFwidHJ1ZVwiKSB7XG5cdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LmdldE1vZGVsKCkuc2V0UHJvcGVydHkoc0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCwgdHJ1ZSk7XG5cdFx0XHRcdFx0YUFwcGxpY2FibGUucHVzaChvU2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhTm90QXBwbGljYWJsZS5wdXNoKG9TZWxlY3RlZENvbnRleHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRDb21tb25VdGlscy5zZXREeW5hbWljQWN0aW9uQ29udGV4dHMob0ludGVybmFsTW9kZWxDb250ZXh0LCBzQWN0aW9uLCBhQXBwbGljYWJsZSwgYU5vdEFwcGxpY2FibGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBvQ29udGV4dERhdGEgPSBvU2VsZWN0ZWRDb250ZXh0Py5nZXRPYmplY3QoKSBhcyBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPjtcblx0XHRcdGlmIChzUHJvcGVydHkgPT09IG51bGwgJiYgISFvQ29udGV4dERhdGFbYCMke3NBY3Rpb259YF0pIHtcblx0XHRcdFx0Ly9sb29rIGZvciBhY3Rpb24gYWR2ZXJ0aXNlbWVudCBpZiBwcmVzZW50IGFuZCBpdHMgdmFsdWUgaXMgbm90IG51bGxcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LmdldE1vZGVsKCkuc2V0UHJvcGVydHkoc0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCwgdHJ1ZSk7XG5cdFx0XHR9IGVsc2UgaWYgKG9TZWxlY3RlZENvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHQvLyBDb2xsZWN0IHByb21pc2VzIHRvIHJldHJpZXZlIHNpbmdsZXRvbiBvciBub3JtYWwgcHJvcGVydHkgdmFsdWUgYXN5bmNocm9ub3VzbHlcblx0XHRcdFx0YVJlcXVlc3RQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnJlcXVlc3RQcm9wZXJ0eShvU2VsZWN0ZWRDb250ZXh0LCBzQWN0aW9uLCBzUHJvcGVydHksIHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFSZXF1ZXN0UHJvbWlzZXM7XG5cdH1cbn07XG5leHBvcnQgZGVmYXVsdCBBY3Rpb25SdW50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
@@ -2,5 +2,5 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/util/merge","sap/fe/core/CommonUtils","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","./controls/AnyElement","./converters/ConverterContext","./converters/objectPage/HeaderAndFooterAction"],function(t,e,n,o,i,l,s){"use strict";var a=s.getHiddenExpression;var d=s.getEditButtonEnabled;var r=n.transformRecursively;var c=n.equal;var u=n.constant;var g=n.compileExpression;const p={setActionEnablement:async function(t,n,o,i){const l=[];for(const s in n){let a=[];t.setProperty(s,false);const d=n[s];for(let e=0;e<o.length;e++){const n=o[e];if(n){const e=n.getObject();if(i==="chart"){if(d===null&&!!e[`#${s}`]||n.getObject(d)){t.setProperty(s,true);break}}else if(i==="table"){a=this._setActionEnablementForTable(n,t,s,d,a)}}}if(i==="table"){if(!o.length){t.setProperty(`dynamicActions/${s}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});l.push(e.setContextsBasedOnOperationAvailable(t,[]))}else if(o.length&&typeof d==="string"){l.push(e.setContextsBasedOnOperationAvailable(t,a))}}}return Promise.all(l)},setActionEnablementAfterPatch:function(t,e,n){const o=n===null||n===void 0?void 0:n.getObject();const i=(o===null||o===void 0?void 0:o.controls)||{};for(const n in i){if(i[n]&&i[n].controlId){const o=t.byId(n);if(o&&o.isA("sap.ui.mdc.Table")){const t=o.getRowBinding();if(t==e){p.setActionEnablement(o.getBindingContext("internal"),JSON.parse(o.data("operationAvailableMap").customData),o.getSelectedContexts(),"table")}}}}},updateEditButtonVisibilityAndEnablement(n){var i;const s=(i=n.getViewData())===null||i===void 0?void 0:i.viewLevel;if(s>1){var r,u,p,f;const i=n.getBindingContext();const s=e.getAppComponent(n);const v=o.getMetaPathForContext(i);const b=o.getRootEntitySetPath(v);const y=i===null||i===void 0?void 0:(r=i.getModel())===null||r===void 0?void 0:(u=r.getMetaModel())===null||u===void 0?void 0:u.getContext(i===null||i===void 0?void 0:i.getPath());const h=l===null||l===void 0?void 0:l.createConverterContextForMacro(b,y,s.getDiagnostics(),t,undefined);const x=h.getEntitySet();const C=h.getEntityType();let E;const A=x&&!o.isSingleton(x)&&((p=x.annotations.UI)===null||p===void 0?void 0:(f=p.UpdateHidden)===null||f===void 0?void 0:f.valueOf());if(A!==true){E=o.isUpdateHidden(x,C)}const m=d(h,undefined);const P=o.getDraftRootPath(i);const B=o.getStickyRootPath(i);const M=P||B;const O=n.getBindingContext("internal");if(M){const t=n.getModel().bindContext(M).getBoundContext();if(E!==undefined){const e=g(c(a(h,E),false));this.updateEditModelContext(e,n,t,"rootEditVisible",O)}if(m){this.updateEditModelContext(m,n,t,"rootEditEnabled",O)}}}},updateEditModelContext:function(t,e,n,o,l){if(t){var s,a,d;const r=new i({anyText:t});r.setBindingContext(null);e.addDependent(r);r.getBinding("anyText");const c=(s=r.getModel())===null||s===void 0?void 0:(a=s.bindContext(n.getPath(),n,{$$groupId:"$auto.Heroes"}))===null||a===void 0?void 0:a.getBoundContext();r.setBindingContext(c);r===null||r===void 0?void 0:(d=r.getBinding("anyText"))===null||d===void 0?void 0:d.attachChange(t=>{const e=t.getSource().getExternalValue();l.setProperty(o,e)})}},_setActionEnablementForTable:function(t,n,o,i,l){n.setProperty(`dynamicActions/${o}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});const s=[],a=[],d=`${n.getPath()}/dynamicActions/${o}/bEnabled`;if(typeof i==="object"&&i!==null&&i!==undefined){if(t){const e=t.getObject();const o=r(i,"PathInModel",function(t){return e?u(e[t.path]):u(false)},true);const l=g(o);if(l==="true"){n.getModel().setProperty(d,true);s.push(t)}else{a.push(t)}}e.setDynamicActionContexts(n,o,s,a)}else{const s=t===null||t===void 0?void 0:t.getObject();if(i===null&&!!s[`#${o}`]){n.getModel().setProperty(d,true)}else if(t!==undefined){l.push(e.requestProperty(t,o,i,d))}}return l}};return p},false);
5
+ sap.ui.define(["sap/base/util/merge","sap/fe/core/CommonUtils","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/helpers/TypeGuards","sap/ui/core/message/Message","./controls/AnyElement","./converters/ConverterContext","./converters/objectPage/HeaderAndFooterAction"],function(e,t,n,o,i,a,l,s,r){"use strict";var d=r.getHiddenExpression;var c=r.getEditButtonEnabled;var u=i.isEntitySet;var g=n.transformRecursively;var f=n.equal;var v=n.constant;var p=n.compileExpression;const b={_addMessageForActionParameter:function(e,t){e.addMessages(t.map(e=>{const t=e.actionParameterInfo.field.getBinding(e.actionParameterInfo.isMultiValue?"items":"value");return new a({message:e.message,type:"Error",processor:t===null||t===void 0?void 0:t.getModel(),persistent:true,target:t===null||t===void 0?void 0:t.getResolvedPath()})}))},validateProperties:async function(e,t,n){await Promise.allSettled(t.map(e=>e.validationPromise));const o=t.filter(e=>e.field.getRequired());const i=e.getMessageModel().getData();const a=o.filter(e=>{const t=e.field.getId();const n=i.filter(e=>e.getControlIds().some(e=>e.includes(t)));if(n.length>0){return false}else if(e.isMultiValue){return e.value===undefined||!e.value.length}else{return e.value===undefined||e.value===null||e.value===""}});if(a.length){this._addMessageForActionParameter(e,a.map(e=>{var t;return{actionParameterInfo:e,message:n.getText("C_OPERATIONS_ACTION_PARAMETER_DIALOG_MISSING_MANDATORY_MSG",[((t=e.field.getParent())===null||t===void 0?void 0:t.getAggregation("label")).getText()])}}))}const l=t.find(e=>e.hasError||e.field.getValueState()==="Error"||a.includes(e));if(l){l.field.focus();return false}else{return true}},setActionEnablement:async function(e,n,o,i){const a=[];for(const l in n){let s=[];e.setProperty(l,false);const r=n[l];for(let t=0;t<o.length;t++){const n=o[t];if(n){const t=n.getObject();if(i==="chart"){if(r===null&&!!t[`#${l}`]||n.getObject(r)){e.setProperty(l,true);break}}else if(i==="table"){s=this._setActionEnablementForTable(n,e,l,r,s)}}}if(i==="table"){if(!o.length){e.setProperty(`dynamicActions/${l}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});a.push(t.setContextsBasedOnOperationAvailable(e,[]))}else if(o.length&&typeof r==="string"){a.push(t.setContextsBasedOnOperationAvailable(e,s))}}}return Promise.all(a)},setActionEnablementAfterPatch:function(e,t,n){const o=n===null||n===void 0?void 0:n.getObject();const i=(o===null||o===void 0?void 0:o.controls)||{};for(const n in i){if(i[n]&&i[n].controlId){const o=e.byId(n);if(o&&o.isA("sap.ui.mdc.Table")){const e=o.getRowBinding();if(e==t){b.setActionEnablement(o.getBindingContext("internal"),JSON.parse(o.data("operationAvailableMap").customData),o.getSelectedContexts(),"table")}}}}},updateEditButtonVisibilityAndEnablement(n){var i,a;const l=(i=n.getViewData())===null||i===void 0?void 0:i.viewLevel,r=(a=n.getModel("ui"))===null||a===void 0?void 0:a.getProperty("/isEditable");if(l>1&&r!==true){var g,v,b,m;const i=n.getBindingContext();const a=t.getAppComponent(n);const l=o.getMetaPathForContext(i);const r=o.getRootEntitySetPath(l);const h=i===null||i===void 0?void 0:(g=i.getModel())===null||g===void 0?void 0:(v=g.getMetaModel())===null||v===void 0?void 0:v.getContext(i===null||i===void 0?void 0:i.getPath());const A=s===null||s===void 0?void 0:s.createConverterContextForMacro(r,h,a.getDiagnostics(),e,undefined);const E=A.getEntitySet();const y=A.getEntityType();let P;const M=u(E)&&((b=E.annotations.UI)===null||b===void 0?void 0:(m=b.UpdateHidden)===null||m===void 0?void 0:m.valueOf());if(M!==true){P=o.isUpdateHidden(E,y)}const x=c(A,undefined);const C=o.getDraftRootPath(i);const B=o.getStickyRootPath(i);const O=C||B;const I=n.getBindingContext("internal");if(O){const e=n.getModel().bindContext(O).getBoundContext();if(P!==undefined){const t=p(f(d(A,P),false));this.updateEditModelContext(t,n,e,"rootEditVisible",I)}if(x){this.updateEditModelContext(x,n,e,"rootEditEnabled",I)}}}},updateEditModelContext:function(e,t,n,o,i){if(e){var a,s,r;const d=new l({anyText:e});d.setBindingContext(null);t.addDependent(d);d.getBinding("anyText");const c=(a=d.getModel())===null||a===void 0?void 0:(s=a.bindContext(n.getPath(),n,{$$groupId:"$auto.Heroes"}))===null||s===void 0?void 0:s.getBoundContext();d.setBindingContext(c);d===null||d===void 0?void 0:(r=d.getBinding("anyText"))===null||r===void 0?void 0:r.attachChange(e=>{const t=e.getSource().getExternalValue();i.setProperty(o,t)})}},_setActionEnablementForTable:function(e,n,o,i,a){n.setProperty(`dynamicActions/${o}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});const l=[],s=[],r=`${n.getPath()}/dynamicActions/${o}/bEnabled`;if(typeof i==="object"&&i!==null&&i!==undefined){if(e){const t=e.getObject();const o=g(i,"PathInModel",function(e){return t?v(t[e.path]):v(false)},true);const a=p(o);if(a==="true"){n.getModel().setProperty(r,true);l.push(e)}else{s.push(e)}}t.setDynamicActionContexts(n,o,l,s)}else{const l=e===null||e===void 0?void 0:e.getObject();if(i===null&&!!l[`#${o}`]){n.getModel().setProperty(r,true)}else if(e!==undefined){a.push(t.requestProperty(e,o,i,r))}}return a}};return b},false);
6
6
  //# sourceMappingURL=ActionRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRuntime.js","names":["sap","ui","define","merge","CommonUtils","BindingToolkit","ModelHelper","AnyElement","ConverterContext","HeaderAndFooterAction","getHiddenExpression","getEditButtonEnabled","transformRecursively","equal","constant","compileExpression","ActionRuntime","setActionEnablement","async","oInternalModelContext","oActionOperationAvailableMap","aSelectedContexts","sControl","aPromises","sAction","aRequestPromises","setProperty","sProperty","i","length","oSelectedContext","oContextData","getObject","this","_setActionEnablementForTable","bEnabled","aApplicable","aNotApplicable","push","setContextsBasedOnOperationAvailable","Promise","all","setActionEnablementAfterPatch","oView","oListBinding","oInternalModelContextData","oControls","controls","sKey","controlId","oTable","byId","isA","oRowBinding","getRowBinding","getBindingContext","JSON","parse","data","customData","getSelectedContexts","updateEditButtonVisibilityAndEnablement","_oView$getViewData","iViewLevel","getViewData","viewLevel","_oContext$getModel","_oContext$getModel$ge","_entitySet$annotation","_entitySet$annotation2","oContext","oAppComponent","getAppComponent","sMetaPath","getMetaPathForContext","sEntitySet","getRootEntitySetPath","metaContext","getModel","getMetaModel","getContext","getPath","converterContext","createConverterContextForMacro","getDiagnostics","undefined","entitySet","getEntitySet","entityType","getEntityType","updateHidden","bUpdateHidden","isSingleton","annotations","UI","UpdateHidden","valueOf","isUpdateHidden","sEditEnableBinding","draftRootPath","getDraftRootPath","sStickyRootPath","getStickyRootPath","sPath","oRootContext","bindContext","getBoundContext","sHiddenExpression","updateEditModelContext","sBindingExpression","_oHiddenElement$getMo","_oHiddenElement$getMo2","_oHiddenElement$getBi","oHiddenElement","anyText","setBindingContext","addDependent","getBinding","$$groupId","attachChange","oEvent","oNewValue","getSource","getExternalValue","sDynamicActionEnabledPath","oTransformedBinding","oBindingExpression","path","sResult","setDynamicActionContexts","requestProperty"],"sources":["ActionRuntime-dbg.js"],"mappings":"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"}
1
+ {"version":3,"file":"ActionRuntime.js","names":["sap","ui","define","merge","CommonUtils","BindingToolkit","ModelHelper","TypeGuards","Message","AnyElement","ConverterContext","HeaderAndFooterAction","getHiddenExpression","getEditButtonEnabled","isEntitySet","transformRecursively","equal","constant","compileExpression","ActionRuntime","_addMessageForActionParameter","messageManager","messageParameters","addMessages","map","messageParameter","binding","actionParameterInfo","field","getBinding","isMultiValue","message","type","processor","getModel","persistent","target","getResolvedPath","validateProperties","async","actionParameterInfos","resourceModel","Promise","allSettled","validationPromise","requiredParameterInfos","filter","parameterInfo","getRequired","allMessages","getMessageModel","getData","emptyRequiredFields","requiredParameterInfo","fieldId","getId","relevantMessages","msg","getControlIds","some","controlId","includes","length","value","undefined","this","_actionParameterInfo$","getText","getParent","getAggregation","firstInvalidParameter","find","hasError","getValueState","focus","setActionEnablement","oInternalModelContext","oActionOperationAvailableMap","aSelectedContexts","sControl","aPromises","sAction","aRequestPromises","setProperty","sProperty","i","oSelectedContext","oContextData","getObject","_setActionEnablementForTable","bEnabled","aApplicable","aNotApplicable","push","setContextsBasedOnOperationAvailable","all","setActionEnablementAfterPatch","oView","oListBinding","oInternalModelContextData","oControls","controls","sKey","oTable","byId","isA","oRowBinding","getRowBinding","getBindingContext","JSON","parse","data","customData","getSelectedContexts","updateEditButtonVisibilityAndEnablement","_oView$getViewData","_oView$getModel","iViewLevel","getViewData","viewLevel","isEditable","getProperty","_oContext$getModel","_oContext$getModel$ge","_entitySet$annotation","_entitySet$annotation2","oContext","oAppComponent","getAppComponent","sMetaPath","getMetaPathForContext","sEntitySet","getRootEntitySetPath","metaContext","getMetaModel","getContext","getPath","converterContext","createConverterContextForMacro","getDiagnostics","entitySet","getEntitySet","entityType","getEntityType","updateHidden","bUpdateHidden","annotations","UI","UpdateHidden","valueOf","isUpdateHidden","sEditEnableBinding","draftRootPath","getDraftRootPath","sStickyRootPath","getStickyRootPath","sPath","oRootContext","bindContext","getBoundContext","sHiddenExpression","updateEditModelContext","sBindingExpression","_oHiddenElement$getMo","_oHiddenElement$getMo2","_oHiddenElement$getBi","oHiddenElement","anyText","setBindingContext","addDependent","$$groupId","attachChange","oEvent","oNewValue","getSource","getExternalValue","sDynamicActionEnabledPath","oTransformedBinding","oBindingExpression","path","sResult","setDynamicActionContexts","requestProperty"],"sources":["ActionRuntime-dbg.js"],"mappings":"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"}
@@ -6,8 +6,16 @@ import type { PathInModelExpression } from "sap/fe/core/helpers/BindingToolkit";
6
6
  import { compileExpression, constant, equal, transformRecursively } from "sap/fe/core/helpers/BindingToolkit";
7
7
  import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
8
8
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
9
+ import { isEntitySet } from "sap/fe/core/helpers/TypeGuards";
10
+ import type ResourceModel from "sap/fe/core/ResourceModel";
11
+ import type Label from "sap/m/Label";
9
12
  import type Event from "sap/ui/base/Event";
13
+ import Message from "sap/ui/core/message/Message";
14
+ import type MessageManager from "sap/ui/core/message/MessageManager";
10
15
  import type View from "sap/ui/core/mvc/View";
16
+ import type Field from "sap/ui/mdc/Field";
17
+ import type MultiValueFieldItem from "sap/ui/mdc/field/MultiValueFieldItem";
18
+ import type MultiValueField from "sap/ui/mdc/MultiValueField";
11
19
  import type Table from "sap/ui/mdc/Table";
12
20
  import type Context from "sap/ui/model/odata/v4/Context";
13
21
  import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
@@ -17,7 +25,113 @@ import ConverterContext from "./converters/ConverterContext";
17
25
  import type { BaseManifestSettings } from "./converters/ManifestSettings";
18
26
  import { getEditButtonEnabled, getHiddenExpression } from "./converters/objectPage/HeaderAndFooterAction";
19
27
 
28
+ type ActionParameter = {
29
+ $Name: string;
30
+ $isCollection: boolean;
31
+ // currently runtime information is written into the metamodel:
32
+ // - in the press handler of the action button on the parameter dialog, the value of each parameter is added
33
+ // - in setActionParameterDefaultValue, this information is used and transferred to the context (in ODataModel) created for the action execution
34
+ // this is quite odd, and it would make much more sense to take the value from actionParameterInfos
35
+ // - however, setActionParameterDefaultValue (or rather the surrounding _executeAction) is also called from other places
36
+ // => for the time being, adding value here to avoid ts errors, subject to refactoring
37
+ // in case of Field, the value is string, in case of MultiValueField, it's MultiValueFieldItem[]
38
+ value: string | MultiValueFieldItem[];
39
+ };
40
+
41
+ export type ActionParameterInfo = {
42
+ parameter: ActionParameter;
43
+ field: Field | MultiValueField;
44
+ isMultiValue: boolean;
45
+ value?: string | MultiValueFieldItem[];
46
+ validationPromise?: Promise<string | MultiValueFieldItem[]>;
47
+ hasError: boolean;
48
+ };
49
+
20
50
  const ActionRuntime = {
51
+ /**
52
+ * Adds error messages for an action parameter field to the message manager.
53
+ *
54
+ * @param messageManager The active MessageManager instance
55
+ * @param messageParameters Information identifying an action parameter and messages referring to this parameter
56
+ */
57
+ _addMessageForActionParameter: function (
58
+ messageManager: MessageManager,
59
+ messageParameters: { actionParameterInfo: ActionParameterInfo; message: string }[]
60
+ ) {
61
+ messageManager.addMessages(
62
+ messageParameters.map((messageParameter) => {
63
+ const binding = messageParameter.actionParameterInfo.field.getBinding(
64
+ messageParameter.actionParameterInfo.isMultiValue ? "items" : "value"
65
+ );
66
+ return new Message({
67
+ message: messageParameter.message,
68
+ type: "Error",
69
+ processor: binding?.getModel(),
70
+ persistent: true,
71
+ target: binding?.getResolvedPath()
72
+ });
73
+ })
74
+ );
75
+ },
76
+
77
+ /**
78
+ * Checks if all required action parameters contain data and checks for all action parameters if the
79
+ * contained data is valid.
80
+ *
81
+ *
82
+ * @param messageManager The active MessageManager instance
83
+ * @param actionParameterInfos Information identifying an action parameter
84
+ * @param resourceModel The model to load text resources
85
+ * @returns The validation result can be true or false
86
+ */
87
+ validateProperties: async function (
88
+ messageManager: MessageManager,
89
+ actionParameterInfos: ActionParameterInfo[],
90
+ resourceModel: ResourceModel
91
+ ):Promise<boolean> {
92
+ await Promise.allSettled(actionParameterInfos.map((actionParameterInfo) => actionParameterInfo.validationPromise));
93
+
94
+ const requiredParameterInfos = actionParameterInfos.filter((parameterInfo) => parameterInfo.field.getRequired());
95
+ const allMessages = messageManager.getMessageModel().getData();
96
+ const emptyRequiredFields = requiredParameterInfos.filter((requiredParameterInfo) => {
97
+ const fieldId = requiredParameterInfo.field.getId();
98
+ const relevantMessages = allMessages.filter((msg: Message) =>
99
+ msg.getControlIds().some((controlId: string) => controlId.includes(fieldId))
100
+ );
101
+ if (relevantMessages.length > 0) {
102
+ return false;
103
+ } else if (requiredParameterInfo.isMultiValue) {
104
+ return requiredParameterInfo.value === undefined || !requiredParameterInfo.value.length;
105
+ } else {
106
+ return (
107
+ requiredParameterInfo.value === undefined || requiredParameterInfo.value === null || requiredParameterInfo.value === ""
108
+ );
109
+ }
110
+ });
111
+ /* Message for missing mandatory value of the action parameter */
112
+ if (emptyRequiredFields.length) {
113
+ this._addMessageForActionParameter(
114
+ messageManager,
115
+ emptyRequiredFields.map((actionParameterInfo) => ({
116
+ actionParameterInfo: actionParameterInfo,
117
+ message: resourceModel.getText("C_OPERATIONS_ACTION_PARAMETER_DIALOG_MISSING_MANDATORY_MSG", [
118
+ (actionParameterInfo.field.getParent()?.getAggregation("label") as Label).getText()
119
+ ])
120
+ }))
121
+ );
122
+ }
123
+ /* Check value state of all parameters */
124
+ const firstInvalidParameter = actionParameterInfos.find(
125
+ (parameterInfo) => parameterInfo.hasError || parameterInfo.field.getValueState() === "Error" || emptyRequiredFields.includes(parameterInfo)
126
+ );
127
+ if (firstInvalidParameter) {
128
+ firstInvalidParameter.field.focus();
129
+ return false;
130
+ } else {
131
+ return true;
132
+ }
133
+ },
134
+
21
135
  /**
22
136
  * Sets the action enablement.
23
137
  *
@@ -102,8 +216,9 @@ const ActionRuntime = {
102
216
  },
103
217
 
104
218
  updateEditButtonVisibilityAndEnablement(oView: View) {
105
- const iViewLevel = (oView.getViewData() as BaseManifestSettings)?.viewLevel;
106
- if ((iViewLevel as number) > 1) {
219
+ const iViewLevel = (oView.getViewData() as BaseManifestSettings)?.viewLevel,
220
+ isEditable = oView.getModel("ui")?.getProperty("/isEditable");
221
+ if ((iViewLevel as number) > 1 && isEditable !== true) {
107
222
  const oContext = oView.getBindingContext() as Context;
108
223
  const oAppComponent = CommonUtils.getAppComponent(oView);
109
224
  const sMetaPath = ModelHelper.getMetaPathForContext(oContext);
@@ -120,7 +235,7 @@ const ActionRuntime = {
120
235
  const entityType = converterContext.getEntityType();
121
236
  let updateHidden;
122
237
  //Find the Update Hidden of the root entity set and bind the property to AnyElement, any changes in the path of the root UpdateHidden will be updated via the property, internal model context is updated based on the property
123
- const bUpdateHidden = entitySet && !ModelHelper.isSingleton(entitySet) && entitySet.annotations.UI?.UpdateHidden?.valueOf();
238
+ const bUpdateHidden = isEntitySet(entitySet) && entitySet.annotations.UI?.UpdateHidden?.valueOf();
124
239
  if (bUpdateHidden !== true) {
125
240
  updateHidden = ModelHelper.isUpdateHidden(entitySet, entityType);
126
241
  }