@sapui5/sap.fe.core 1.100.0 → 1.102.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 (295) hide show
  1. package/package.json +4 -4
  2. package/src/sap/fe/core/.library +2 -3
  3. package/src/sap/fe/core/AppComponent.js +23 -30
  4. package/src/sap/fe/core/AppComponent.ts +35 -40
  5. package/src/sap/fe/core/AppStateHandler.js +8 -8
  6. package/src/sap/fe/core/AppStateHandler.ts +11 -11
  7. package/src/sap/fe/core/BaseController.js +9 -9
  8. package/src/sap/fe/core/BaseController.ts +3 -4
  9. package/src/sap/fe/core/CommonUtils.js +122 -101
  10. package/src/sap/fe/core/CommonUtils.ts +239 -193
  11. package/src/sap/fe/core/ExtensionAPI.js +12 -13
  12. package/src/sap/fe/core/ExtensionAPI.ts +21 -31
  13. package/src/sap/fe/core/PageController.js +19 -13
  14. package/src/sap/fe/core/PageController.ts +40 -34
  15. package/src/sap/fe/core/TemplateComponent.js +198 -123
  16. package/src/sap/fe/core/TemplateComponent.ts +109 -121
  17. package/src/sap/fe/core/TemplateModel.js +7 -9
  18. package/src/sap/fe/core/TemplateModel.ts +3 -3
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
  27. package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
  28. package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
  29. package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
  30. package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
  33. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
  34. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
  35. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
  36. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
  37. package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
  38. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
  39. package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
  40. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
  41. package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
  42. package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
  43. package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
  44. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
  45. package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
  46. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
  47. package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
  48. package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
  50. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  51. package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
  52. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  53. package/src/sap/fe/core/controllerextensions/Share.js +34 -16
  54. package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
  55. package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
  56. package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
  57. package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
  58. package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
  61. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
  62. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
  63. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
  64. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
  65. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
  66. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
  67. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
  68. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
  69. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
  70. package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
  71. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
  72. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
  73. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
  74. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
  75. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
  76. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
  77. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
  78. package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
  79. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
  80. package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
  82. package/src/sap/fe/core/controls/Any.js +28 -0
  83. package/src/sap/fe/core/controls/Any.ts +30 -0
  84. package/src/sap/fe/core/controls/CommandExecution.js +50 -16
  85. package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
  86. package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
  87. package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
  88. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
  89. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
  90. package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
  91. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
  92. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
  93. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
  94. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
  95. package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
  96. package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
  97. package/src/sap/fe/core/controls/FileWrapper.js +360 -0
  98. package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
  99. package/src/sap/fe/core/controls/FilterBar.js +154 -119
  100. package/src/sap/fe/core/controls/FilterBar.ts +128 -123
  101. package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
  102. package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
  103. package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
  104. package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
  105. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
  106. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
  107. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
  108. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
  109. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
  110. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
  111. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
  112. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
  113. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
  114. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
  115. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
  116. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
  117. package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
  118. package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
  119. package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
  120. package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
  121. package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
  127. package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
  128. package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
  129. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  130. package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
  131. package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
  132. package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
  133. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
  135. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
  137. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
  138. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
  139. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
  140. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
  141. package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
  142. package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
  143. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  144. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
  145. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  146. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
  147. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
  148. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
  149. package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
  150. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
  151. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
  152. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
  153. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
  154. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
  155. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
  156. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
  157. package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
  158. package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
  159. package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
  160. package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
  161. package/src/sap/fe/core/fpm/Component.js +46 -17
  162. package/src/sap/fe/core/fpm/Component.ts +11 -16
  163. package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
  164. package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
  165. package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
  166. package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
  167. package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
  168. package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
  169. package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
  170. package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
  171. package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
  172. package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
  173. package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
  174. package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
  175. package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
  176. package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
  177. package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
  178. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
  179. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  180. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  181. package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
  182. package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
  183. package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
  184. package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
  185. package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
  186. package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
  187. package/src/sap/fe/core/library.js +13 -5
  188. package/src/sap/fe/core/library.ts +26 -17
  189. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  190. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
  191. package/src/sap/fe/core/messagebundle.properties +135 -180
  192. package/src/sap/fe/core/messagebundle_ar.properties +31 -64
  193. package/src/sap/fe/core/messagebundle_bg.properties +31 -64
  194. package/src/sap/fe/core/messagebundle_ca.properties +31 -64
  195. package/src/sap/fe/core/messagebundle_cs.properties +31 -64
  196. package/src/sap/fe/core/messagebundle_cy.properties +32 -65
  197. package/src/sap/fe/core/messagebundle_da.properties +31 -64
  198. package/src/sap/fe/core/messagebundle_de.properties +29 -62
  199. package/src/sap/fe/core/messagebundle_el.properties +32 -65
  200. package/src/sap/fe/core/messagebundle_en.properties +32 -65
  201. package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
  202. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
  203. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
  204. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
  205. package/src/sap/fe/core/messagebundle_es.properties +31 -64
  206. package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
  207. package/src/sap/fe/core/messagebundle_et.properties +31 -64
  208. package/src/sap/fe/core/messagebundle_fi.properties +29 -62
  209. package/src/sap/fe/core/messagebundle_fr.properties +36 -69
  210. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
  211. package/src/sap/fe/core/messagebundle_hi.properties +29 -62
  212. package/src/sap/fe/core/messagebundle_hr.properties +32 -65
  213. package/src/sap/fe/core/messagebundle_hu.properties +30 -63
  214. package/src/sap/fe/core/messagebundle_id.properties +32 -65
  215. package/src/sap/fe/core/messagebundle_it.properties +31 -64
  216. package/src/sap/fe/core/messagebundle_iw.properties +31 -64
  217. package/src/sap/fe/core/messagebundle_ja.properties +29 -62
  218. package/src/sap/fe/core/messagebundle_kk.properties +31 -64
  219. package/src/sap/fe/core/messagebundle_ko.properties +31 -64
  220. package/src/sap/fe/core/messagebundle_lt.properties +31 -64
  221. package/src/sap/fe/core/messagebundle_lv.properties +32 -65
  222. package/src/sap/fe/core/messagebundle_ms.properties +31 -64
  223. package/src/sap/fe/core/messagebundle_nl.properties +31 -64
  224. package/src/sap/fe/core/messagebundle_no.properties +31 -64
  225. package/src/sap/fe/core/messagebundle_pl.properties +34 -67
  226. package/src/sap/fe/core/messagebundle_pt.properties +32 -65
  227. package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
  228. package/src/sap/fe/core/messagebundle_ro.properties +33 -66
  229. package/src/sap/fe/core/messagebundle_ru.properties +33 -66
  230. package/src/sap/fe/core/messagebundle_sh.properties +31 -64
  231. package/src/sap/fe/core/messagebundle_sk.properties +31 -64
  232. package/src/sap/fe/core/messagebundle_sl.properties +29 -62
  233. package/src/sap/fe/core/messagebundle_sv.properties +30 -63
  234. package/src/sap/fe/core/messagebundle_th.properties +31 -64
  235. package/src/sap/fe/core/messagebundle_tr.properties +31 -64
  236. package/src/sap/fe/core/messagebundle_uk.properties +32 -65
  237. package/src/sap/fe/core/messagebundle_vi.properties +31 -64
  238. package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
  239. package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
  240. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
  241. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
  242. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
  243. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
  244. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
  245. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
  246. package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
  247. package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
  248. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
  249. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
  250. package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
  251. package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
  252. package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
  253. package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
  254. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
  255. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
  256. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
  257. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
  258. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
  259. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
  260. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  261. package/src/sap/fe/core/support/CommonHelper.ts +0 -3
  262. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
  263. package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
  264. package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
  265. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
  266. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
  267. package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
  268. package/src/sap/fe/core/templating/FilterHelper.js +4 -4
  269. package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
  270. package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
  271. package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
  272. package/src/sap/fe/core/templating/UIFormatters.js +133 -22
  273. package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
  274. package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
  275. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
  276. package/src/sap/fe/core/type/Email.js +26 -8
  277. package/src/sap/fe/core/type/Email.ts +8 -7
  278. package/src/sap/fe/core/AnnotationHelper.js +0 -312
  279. package/src/sap/fe/core/AnnotationHelper.ts +0 -315
  280. package/src/sap/fe/core/RouterProxy.js +0 -926
  281. package/src/sap/fe/core/TransactionHelper.js +0 -1562
  282. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
  283. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
  284. package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
  285. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
  286. package/src/sap/fe/core/actions/draft.js +0 -523
  287. package/src/sap/fe/core/actions/messageHandling.js +0 -567
  288. package/src/sap/fe/core/actions/nonDraft.js +0 -20
  289. package/src/sap/fe/core/actions/nonDraft.ts +0 -12
  290. package/src/sap/fe/core/actions/operations.js +0 -1096
  291. package/src/sap/fe/core/actions/sticky.js +0 -130
  292. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
  293. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
  294. package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
  295. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
@@ -1,6 +1,3 @@
1
- /*!
2
- * ${copyright}
3
- */
4
1
  /**
5
2
  * Defines support rules of the ObjectPageHeader control of sap.uxap library.
6
3
  */
@@ -363,14 +363,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
363
363
 
364
364
  var _allVisitedNavigationProps = allVisitedNavigationProps.slice(0, -1);
365
365
 
366
- if (targetEntitySet !== null) {
367
- visitedNavProps = _allVisitedNavigationProps;
368
- } else if (_allVisitedNavigationProps.length === 0) {
369
- visitedNavProps = allVisitedNavigationProps.slice(0);
370
- } else {
371
- visitedNavProps = _allVisitedNavigationProps;
372
- }
373
-
366
+ visitedNavProps = _allVisitedNavigationProps;
374
367
  var pathRelativeLocation = getPathRelativeLocation((_dataModelObjectPath = dataModelObjectPath) === null || _dataModelObjectPath === void 0 ? void 0 : _dataModelObjectPath.contextLocation, visitedNavProps).map(function (np) {
375
368
  return np.name;
376
369
  });
@@ -420,4 +413,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
420
413
 
421
414
  return _exports;
422
415
  }, false);
423
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFNb2RlbFBhdGhIZWxwZXIudHMiXSwibmFtZXMiOlsiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0UGF0aCIsInZpc2l0ZWROYXZQcm9wcyIsImxlbmd0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVtYWluaW5nTmF2UHJvcHMiLCJmb3JFYWNoIiwibmF2UHJvcCIsIm5hdkluZGV4IiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiY3VycmVudElkeCIsImN1cnJlbnROYXYiLCJuZXh0TmF2UHJvcCIsInBhcnRuZXIiLCJuYW1lIiwic3BsaWNlIiwiZXh0cmFOYXZQcm9wIiwibWFwIiwidGFyZ2V0VHlwZSIsImZpbmQiLCJucCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsInByb3BlcnR5UGF0aCIsInNQcm9wZXJ0eVBhdGgiLCJpc1BhdGhFeHByZXNzaW9uIiwiaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24iLCJwYXRoIiwib1RhcmdldCIsIiR0YXJnZXQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXRPYmplY3QiLCJhUGF0aFNwbGl0Iiwic3BsaXQiLCJjdXJyZW50RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5U2V0IiwiY3VycmVudEVudGl0eVR5cGUiLCJyZWR1Y2UiLCJyZWR1Y2VkRW50aXR5VHlwZSIsInBhdGhQYXJ0IiwidW5kZWZpbmVkIiwicG90ZW50aWFsTmF2UHJvcCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsInN0YXJ0aW5nRW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwiY29udmVydGVkVHlwZXMiLCJnZXRUYXJnZXRFbnRpdHlTZXRQYXRoIiwidGFyZ2V0RW50aXR5U2V0UGF0aCIsIm5hdmlnYXRlZFBhdGhzIiwiam9pbiIsImdldFRhcmdldE9iamVjdFBhdGgiLCJiUmVsYXRpdmUiLCJfdHlwZSIsImVuZHNXaXRoIiwidGVybSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJmb3JCaW5kaW5nRXhwcmVzc2lvbiIsIm5hdlByb3BlcnRpZXMiLCJpc0NvbGxlY3Rpb24iLCJ0eXBlIiwidmFsdWUiLCJxdWFsaWZpZXIiLCJpc1BhdGhVcGRhdGFibGUiLCJleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCIsImNoZWNrT25QYXRoIiwiYW5ub3RhdGlvbk9iamVjdCIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlVwZGF0YWJsZSIsImlzUGF0aFNlYXJjaGFibGUiLCJTZWFyY2hSZXN0cmljdGlvbnMiLCJTZWFyY2hhYmxlIiwiaXNQYXRoRGVsZXRhYmxlIiwiRGVsZXRlUmVzdHJpY3Rpb25zIiwiRGVsZXRhYmxlIiwiaXNQYXRoSW5zZXJ0YWJsZSIsIkluc2VydFJlc3RyaWN0aW9ucyIsIkluc2VydGFibGUiLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJhbGxvd2VkRXhwcmVzc2lvbiIsImZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiY3VycmVudE9iamVjdFJlc3RyaWN0aW9uIiwicmVzdHJpY3Rpb24iLCJQcm9wZXJ0eSIsImluZGV4T2YiLCJBbGxvd2VkRXhwcmVzc2lvbnMiLCJ0b1N0cmluZyIsImNoZWNrRnVuY3Rpb24iLCJjb25zdGFudCIsInBhcmVudEVudGl0eVNldCIsInZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lIiwiYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcyIsInJlc2V0VmlzaXRlZE5hdlByb3BzIiwibmF2aWdhdGlvblByb3BlcnR5IiwiY29udGFpbnNUYXJnZXQiLCJmdWxsTmF2aWdhdGlvblBhdGgiLCJyZXN0cmljdGlvbnMiLCJfcGFyZW50RW50aXR5U2V0IiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJOYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwiUmVzdHJpY3RlZFByb3BlcnRpZXMiLCJyZXN0cmljdGVkTmF2UHJvcCIsIk5hdmlnYXRpb25Qcm9wZXJ0eSIsInJlc3RyaWN0aW9uRGVmaW5pdGlvbiIsIl9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzIiwicGF0aFJlbGF0aXZlTG9jYXRpb24iLCJwYXRoVmlzaXRvckZ1bmN0aW9uIiwicGF0aFZpc2l0b3IiLCJnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbiIsImVxdWFsIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJ0YXJnZXRSZXN0cmljdGlvbnMiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwidW5yZXNvbHZlYWJsZUV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQThCTyxNQUFNQSx1QkFBdUIsR0FBRyxVQUN0Q0MsV0FEc0MsRUFHZjtBQUFBLFFBRHZCQyxlQUN1Qix1RUFEaUIsRUFDakI7O0FBQ3ZCLFFBQUksQ0FBQ0QsV0FBTCxFQUFrQjtBQUNqQixhQUFPQyxlQUFQO0FBQ0EsS0FGRCxNQUVPLElBQUlBLGVBQWUsQ0FBQ0MsTUFBaEIsSUFBMEJGLFdBQVcsQ0FBQ0csb0JBQVosQ0FBaUNELE1BQS9ELEVBQXVFO0FBQzdFLFVBQUlFLGlCQUF1QyxHQUFHLEVBQTlDO0FBQ0FKLE1BQUFBLFdBQVcsQ0FBQ0csb0JBQVosQ0FBaUNFLE9BQWpDLENBQXlDLFVBQUNDLE9BQUQsRUFBVUMsUUFBVixFQUF1QjtBQUMvRCxZQUFJTixlQUFlLENBQUNNLFFBQUQsQ0FBZixLQUE4QkQsT0FBbEMsRUFBMkM7QUFDMUNGLFVBQUFBLGlCQUFpQixDQUFDSSxJQUFsQixDQUF1QlAsZUFBZSxDQUFDTSxRQUFELENBQXRDO0FBQ0E7QUFDRCxPQUpEO0FBS0FILE1BQUFBLGlCQUFpQixHQUFHQSxpQkFBaUIsQ0FBQ0ssTUFBbEIsQ0FBeUJSLGVBQWUsQ0FBQ1MsS0FBaEIsQ0FBc0JWLFdBQVcsQ0FBQ0cs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QUEwQixDQUFDOEMsV0FBNUIsRUFBeUNGLG9CQUF6QyxDQURELEdBRXpCcEUsU0FGSDtBQUdBMEUsUUFBQUEsa0JBQWtCLEdBQUdGLEtBQUssQ0FDekJDLG9CQUFvQixDQUFDUCxxQkFBRCxFQUF3QkUsb0JBQXhCLEVBQThDcEUsU0FBOUMsRUFBeURxRSxtQkFBekQsQ0FESyxFQUV6QixJQUZ5QixDQUExQjtBQUlBO0FBQ0Q7O0FBRUQsV0FDQ1gsWUFBWSxJQUFJZ0Isa0JBQWhCLEtBQXVDbEQsMEJBQTBCLFNBQTFCLElBQUFBLDBCQUEwQixXQUExQixJQUFBQSwwQkFBMEIsQ0FBRW9ELHFCQUE1QixHQUFvREMsdUJBQXBELEdBQThFM0IsUUFBUSxDQUFDLElBQUQsQ0FBN0gsQ0FERDtBQUdBLEdBM0dNLEMsQ0E0R1A7QUFDQTtBQUNBOzs7OztBQUNBLE1BQU1xQiwwQkFBMEIsR0FBRyxVQUFTRCxXQUFULEVBQWdDRixvQkFBaEMsRUFBZ0U7QUFDbEcsV0FBTyxVQUFTbEYsSUFBVCxFQUF1QjtBQUM3QixhQUFPb0YsV0FBVyxDQUFDcEYsSUFBRCxFQUFPa0Ysb0JBQVAsQ0FBbEI7QUFDQSxLQUZEO0FBR0EsR0FKRCIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVydGVyT3V0cHV0LCBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSwgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHsgYW5ub3RhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgRXhwcmVzc2lvbiwgdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L2dlbmVyYXRlZC9DYXBhYmlsaXRpZXNcIjtcbmltcG9ydCB7IFByb3BlcnR5T3JQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvblBhdGhFeHByZXNzaW9uLCBpc1BhdGhFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7XG5cdEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlcyxcblx0TmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25cbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3R5cGVzL2dlbmVyYXRlZC9DYXBhYmlsaXRpZXNcIjtcbmltcG9ydCB7XG5cdEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyxcblx0RW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9nZW5lcmF0ZWQvQ2FwYWJpbGl0aWVzX0VkbVwiO1xuaW1wb3J0IHsgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFNb2RlbE9iamVjdFBhdGggPSB7XG5cdHN0YXJ0aW5nRW50aXR5U2V0OiBFbnRpdHlTZXQ7XG5cdGNvbnRleHRMb2NhdGlvbj86IERhdGFNb2RlbE9iamVjdFBhdGg7XG5cdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXTtcblx0dGFyZ2V0RW50aXR5U2V0PzogRW50aXR5U2V0O1xuXHR0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlO1xuXHR0YXJnZXRPYmplY3Q6IGFueTtcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlck91dHB1dDtcbn07XG5cbnR5cGUgRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGggPSB7XG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pjtcblx0cGF0aFZpc2l0b3I/OiBGdW5jdGlvbjtcblx0aWdub3JlVGFyZ2V0Q29sbGVjdGlvbj86IGJvb2xlYW47XG5cdGF1dGhvcml6ZVVucmVzb2x2YWJsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24gPSBmdW5jdGlvbihcblx0Y29udGV4dFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHR2aXNpdGVkTmF2UHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW11cbik6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdIHtcblx0aWYgKCFjb250ZXh0UGF0aCkge1xuXHRcdHJldHVybiB2aXNpdGVkTmF2UHJvcHM7XG5cdH0gZWxzZSBpZiAodmlzaXRlZE5hdlByb3BzLmxlbmd0aCA+PSBjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRsZXQgcmVtYWluaW5nTmF2UHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdFx0Y29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2UHJvcCwgbmF2SW5kZXgpID0+IHtcblx0XHRcdGlmICh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdICE9PSBuYXZQcm9wKSB7XG5cdFx0XHRcdHJlbWFpbmluZ05hdlByb3BzLnB1c2godmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmVtYWluaW5nTmF2UHJvcHMgPSByZW1haW5pbmdOYXZQcm9wcy5jb25jYXQodmlzaXRlZE5hdlByb3BzLnNsaWNlKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkpO1xuXHRcdC8vIENsZWFuIHVwIE5hdlByb3AgLT4gT3duZXJcblx0XHRsZXQgY3VycmVudElkeCA9IDA7XG5cdFx0d2hpbGUgKHJlbWFpbmluZ05hdlByb3BzLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSByZW1haW5pbmdOYXZQcm9wcy5sZW5ndGggLSAxKSB7XG5cdFx0XHRjb25zdCBjdXJyZW50TmF2ID0gcmVtYWluaW5nTmF2UHJvcHNbY3VycmVudElkeF07XG5cdFx0XHRjb25zdCBuZXh0TmF2UHJvcCA9IHJlbWFpbmluZ05hdlByb3BzW2N1cnJlbnRJZHggKyAxXTtcblx0XHRcdGlmIChjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0cmVtYWluaW5nTmF2UHJvcHMuc3BsaWNlKDAsIDIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudElkeCsrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVtYWluaW5nTmF2UHJvcHM7XG5cdH0gZWxzZSB7XG5cdFx0bGV0IGV4dHJhTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0XHR2aXNpdGVkTmF2UHJvcHMuZm9yRWFjaCgobmF2UHJvcCwgbmF2SW5kZXgpID0+IHtcblx0XHRcdGlmIChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllc1tuYXZJbmRleF0gIT09IG5hdlByb3ApIHtcblx0XHRcdFx0ZXh0cmFOYXZQcm9wLnB1c2godmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLmNvbmNhdChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5zbGljZSh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoKSk7XG5cdFx0Ly8gQ2xlYW4gdXAgTmF2UHJvcCAtPiBPd25lclxuXHRcdGxldCBjdXJyZW50SWR4ID0gMDtcblx0XHR3aGlsZSAoZXh0cmFOYXZQcm9wLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSBleHRyYU5hdlByb3AubGVuZ3RoIC0gMSkge1xuXHRcdFx0Y29uc3QgY3VycmVudE5hdiA9IGV4dHJhTmF2UHJvcFtjdXJyZW50SWR4XTtcblx0XHRcdGNvbnN0IG5leHROYXZQcm9wID0gZXh0cmFOYXZQcm9wW2N1cnJlbnRJZHggKyAxXTtcblx0XHRcdGlmIChjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0ZXh0cmFOYXZQcm9wLnNwbGljZSgwLCAyKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN1cnJlbnRJZHgrKztcblx0XHRcdH1cblx0XHR9XG5cdFx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLm1hcChuYXZQcm9wID0+IHtcblx0XHRcdHJldHVybiBuYXZQcm9wLnRhcmdldFR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZmluZChucCA9PiBucC5uYW1lID09PSBuYXZQcm9wLnBhcnRuZXIpIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHR9KTtcblx0XHRyZXR1cm4gZXh0cmFOYXZQcm9wO1xuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgZW5oYW5jZURhdGFNb2RlbFBhdGggPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0cHJvcGVydHlQYXRoPzogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+XG4pOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0bGV0IHNQcm9wZXJ0eVBhdGg6IHN0cmluZyA9IFwiXCI7XG5cdGlmICgoaXNQYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpIHx8IGlzQW5ub3RhdGlvblBhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkpICYmIHByb3BlcnR5UGF0aC5wYXRoKSB7XG5cdFx0c1Byb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aC5wYXRoO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBwcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRzUHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoIGFzIHN0cmluZztcblx0fVxuXHRsZXQgb1RhcmdldDtcblx0aWYgKGlzUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSB8fCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpKSB7XG5cdFx0b1RhcmdldCA9IHByb3BlcnR5UGF0aC4kdGFyZ2V0O1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZSkge1xuXHRcdG9UYXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgoc1Byb3BlcnR5UGF0aCk7XG5cdH0gZWxzZSB7XG5cdFx0b1RhcmdldCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHR9XG5cdGNvbnN0IGFQYXRoU3BsaXQgPSBzUHJvcGVydHlQYXRoLnNwbGl0KFwiL1wiKTtcblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldDtcblx0bGV0IGN1cnJlbnRFbnRpdHlUeXBlID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydGllcyA9IGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuY29uY2F0KCk7XG5cdC8vIFByb2Nlc3Mgb25seSBpZiB3ZSBoYXZlIHRvIGdvIHRocm91Z2ggbmF2aWdhdGlvbiBwcm9wZXJ0aWVzXG5cblx0YVBhdGhTcGxpdC5yZWR1Y2UoKHJlZHVjZWRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkLCBwYXRoUGFydDogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKCFyZWR1Y2VkRW50aXR5VHlwZSkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0Y29uc3QgcG90ZW50aWFsTmF2UHJvcCA9IHJlZHVjZWRFbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQobmF2UHJvcCA9PiBuYXZQcm9wLm5hbWUgPT09IHBhdGhQYXJ0KTtcblx0XHRpZiAocG90ZW50aWFsTmF2UHJvcCkge1xuXHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChwb3RlbnRpYWxOYXZQcm9wKTtcblx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gcG90ZW50aWFsTmF2UHJvcC50YXJnZXRUeXBlO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KHBhdGhQYXJ0KSkge1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3BhdGhQYXJ0XTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjdXJyZW50RW50aXR5VHlwZTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fSwgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlKTtcblxuXHRyZXR1cm4ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRjb250ZXh0TG9jYXRpb246IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHR0YXJnZXRPYmplY3Q6IG9UYXJnZXQsXG5cdFx0Y29udmVydGVkVHlwZXM6IGRhdGFNb2RlbE9iamVjdFBhdGguY29udmVydGVkVHlwZXNcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoID0gZnVuY3Rpb24oZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IHN0cmluZyB7XG5cdGxldCB0YXJnZXRFbnRpdHlTZXRQYXRoOiBzdHJpbmcgPSBgLyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lfWA7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldDtcblx0bGV0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2gobmF2UHJvcCA9PiB7XG5cdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKSkpIHtcblx0XHRcdHRhcmdldEVudGl0eVNldFBhdGggKz0gYC8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke25hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpfS8kYDtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIildO1xuXHRcdFx0bmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gdGFyZ2V0RW50aXR5U2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRPYmplY3RQYXRoID0gZnVuY3Rpb24oZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCwgYlJlbGF0aXZlOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuXHRsZXQgcGF0aCA9IFwiXCI7XG5cdGlmICghZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCkge1xuXHRcdHJldHVybiBcIi9cIjtcblx0fVxuXHRpZiAoIWJSZWxhdGl2ZSkge1xuXHRcdHBhdGggKz0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHR9XG5cdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubWFwKG5hdlByb3AgPT4gbmF2UHJvcC5uYW1lKS5qb2luKFwiL1wiKTtcblx0fVxuXG5cdGlmIChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWUgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Ll90eXBlICE9PSBcIkVudGl0eVR5cGVcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmICghcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz0gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwidGVybVwiKSkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRmb3JCaW5kaW5nRXhwcmVzc2lvbjogYm9vbGVhbiA9IGZhbHNlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBuYXZQcm9wZXJ0aWVzID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24sIGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpO1xuXHRpZiAoZm9yQmluZGluZ0V4cHJlc3Npb24pIHtcblx0XHRpZiAobmF2UHJvcGVydGllcy5maW5kKG5wID0+IG5wLmlzQ29sbGVjdGlvbikpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGxldCBwYXRoID0gbmF2UHJvcGVydGllcy5tYXAobnAgPT4gbnAubmFtZSkuam9pbihcIi9cIik7XG5cdGlmIChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJlxuXHRcdChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lIHx8XG5cdFx0XHQoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIiAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC52YWx1ZSkpICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuX3R5cGUgIT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAhPT0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldFxuXHQpIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPVxuXHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIlxuXHRcdFx0XHQ/IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnZhbHVlfWBcblx0XHRcdFx0OiBgJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lfWA7XG5cdH0gZWxzZSBpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiYgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuaGFzT3duUHJvcGVydHkoXCJ0ZXJtXCIpKSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCAmJiAhcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz0gYEAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnRlcm19YDtcblx0XHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuaGFzT3duUHJvcGVydHkoXCJxdWFsaWZpZXJcIikgJiYgISFkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5xdWFsaWZpZXIpIHtcblx0XHRcdHBhdGggKz0gYCMke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnF1YWxpZmllcn1gO1xuXHRcdH1cblx0fSBlbHNlIGlmICghZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aFVwZGF0YWJsZSA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uVXBkYXRlUmVzdHJpY3Rpb25zPy5VcGRhdGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aFNlYXJjaGFibGUgPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LlNlYXJjaFJlc3RyaWN0aW9ucz8uU2VhcmNoYWJsZTtcblx0XHR9LFxuXHRcdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoRGVsZXRhYmxlID0gZnVuY3Rpb24oXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5EZWxldGVSZXN0cmljdGlvbnM/LkRlbGV0YWJsZTtcblx0XHR9LFxuXHRcdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoSW5zZXJ0YWJsZSA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uSW5zZXJ0UmVzdHJpY3Rpb25zPy5JbnNlcnRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0YWxsb3dlZEV4cHJlc3Npb246IChzdHJpbmcgfCB1bmRlZmluZWQpW11cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMgfCBFbnRpdHlUeXBlQW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdCAmJiBcIkZpbHRlclJlc3RyaWN0aW9uc1wiIGluIGFubm90YXRpb25PYmplY3QpIHtcblx0XHRcdFx0Y29uc3QgZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uczogRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzW10gPVxuXHRcdFx0XHRcdChhbm5vdGF0aW9uT2JqZWN0Py5GaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgYXMgRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzW10pIHx8IFtdO1xuXHRcdFx0XHRjb25zdCBjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24gPSBmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLmZpbmQocmVzdHJpY3Rpb24gPT4ge1xuXHRcdFx0XHRcdHJldHVybiAocmVzdHJpY3Rpb24uUHJvcGVydHkgYXMgUHJvcGVydHlQYXRoKS4kdGFyZ2V0ID09PSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24pIHtcblx0XHRcdFx0XHRyZXR1cm4gYWxsb3dlZEV4cHJlc3Npb24uaW5kZXhPZihjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24/LkFsbG93ZWRFeHByZXNzaW9ucz8udG9TdHJpbmcoKSkgIT09IC0xO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja09uUGF0aCA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRjaGVja0Z1bmN0aW9uOiBGdW5jdGlvbixcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghZGF0YU1vZGVsT2JqZWN0UGF0aCB8fCAhZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCkge1xuXHRcdHJldHVybiBjb25zdGFudCh0cnVlKTtcblx0fVxuXG5cdGRhdGFNb2RlbE9iamVjdFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChkYXRhTW9kZWxPYmplY3RQYXRoLCBleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD8ucHJvcGVydHlQYXRoKTtcblxuXHRsZXQgY3VycmVudEVudGl0eVNldDogRW50aXR5U2V0IHwgbnVsbCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBwYXJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IG51bGwgPSBudWxsO1xuXHRsZXQgdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWU6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdGxldCB0YXJnZXRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IG51bGwgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRjb25zdCB0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgbnVsbCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0bGV0IHJlc2V0VmlzaXRlZE5hdlByb3BzID0gZmFsc2U7XG5cblx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eSkgPT4ge1xuXHRcdGlmIChyZXNldFZpc2l0ZWROYXZQcm9wcykge1xuXHRcdFx0dmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUgPSBbXTtcblx0XHR9XG5cdFx0dmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkubmFtZSk7XG5cdFx0YWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5wdXNoKG5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0aWYgKCFuYXZpZ2F0aW9uUHJvcGVydHkuY29udGFpbnNUYXJnZXQpIHtcblx0XHRcdC8vIFdlIHNob3VsZCBoYXZlIGEgbmF2aWdhdGlvblByb3BlcnR5QmluZGluZyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhdGggc28gZmFyIHdoaWNoIGNhbiBjb25zaXN0IG9mIChbQ29udGFpbm1lbnROYXZQcm9wXS8pKltOYXZQcm9wXVxuXHRcdFx0Y29uc3QgZnVsbE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdFx0XHRpZiAoY3VycmVudEVudGl0eVNldCAmJiBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkoZnVsbE5hdmlnYXRpb25QYXRoKSkge1xuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW2Z1bGxOYXZpZ2F0aW9uUGF0aF07XG5cdFx0XHRcdHRhcmdldEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdC8vIElmIHdlIHJlYWNoZWQgYSBuYXZpZ2F0aW9uIHByb3BlcnR5IHdpdGggYSBuYXZpZ2F0aW9ucHJvcGVydHliaW5kaW5nLCB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB2aXNpdGVkIHBhdGggb24gdGhlIG5leHQgaXRlcmF0aW9uIChpZiB0aGVyZSBpcyBvbmUpXG5cdFx0XHRcdHJlc2V0VmlzaXRlZE5hdlByb3BzID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFdlIHJlYWxseSBzaG91bGQgbm90IGVuZCB1cCBoZXJlIGJ1dCBhdCBsZWFzdCBsZXQncyB0cnkgdG8gYXZvaWQgaW5jb3JyZWN0IGJlaGF2aW9yXG5cdFx0XHRcdHBhcmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBudWxsO1xuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhcmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBudWxsO1xuXHRcdH1cblx0fSk7XG5cblx0Ly8gQXQgdGhpcyBwb2ludCB3ZSBoYXZlIG5hdmlnYXRlZCBkb3duIGFsbCB0aGUgbmF2IHByb3AgYW5kIHdlIHNob3VsZCBoYXZlXG5cdC8vIFRoZSB0YXJnZXQgZW50aXR5U2V0IHBvaW50aW5nIHRvIGVpdGhlciBudWxsIChpbiBjYXNlIG9mIGNvbnRhaW5tZW50IG5hdnByb3AgYSBsYXN0IHBhcnQpLCBvciB0aGUgYWN0dWFsIHRhcmdldCAobm9uIGNvbnRhaW5tZW50IGFzIHRhcmdldClcblx0Ly8gVGhlIHBhcmVudCBlbnRpdHlTZXQgcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIGVudGl0eVNldCB1c2VkIGluIHRoZSBwYXRoXG5cdC8vIFZpc2l0ZWROYXZpZ2F0aW9uUGF0aCBzaG91bGQgY29udGFpbiB0aGUgcGF0aCB1cCB0byB0aGlzIHByb3BlcnR5XG5cblx0Ly8gUmVzdHJpY3Rpb25zIHNob3VsZCB0aGVuIGJlIGV2YWx1YXRlZCBhcyBQYXJlbnRFbnRpdHlTZXQuTmF2UmVzdHJpY3Rpb25zW05hdlByb3BlcnR5UGF0aF0gfHwgVGFyZ2V0RW50aXR5U2V0LlJlc3RyaWN0aW9uc1xuXHRjb25zdCBmdWxsTmF2aWdhdGlvblBhdGggPSB2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZS5qb2luKFwiL1wiKTtcblx0bGV0IHJlc3RyaWN0aW9ucywgdmlzaXRlZE5hdlByb3BzO1xuXHRpZiAocGFyZW50RW50aXR5U2V0ICE9PSBudWxsKSB7XG5cdFx0Y29uc3QgX3BhcmVudEVudGl0eVNldDogRW50aXR5U2V0ID0gcGFyZW50RW50aXR5U2V0O1xuXHRcdF9wYXJlbnRFbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXMuZm9yRWFjaChcblx0XHRcdChyZXN0cmljdGVkTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcykgPT4ge1xuXHRcdFx0XHRpZiAocmVzdHJpY3RlZE5hdlByb3AuTmF2aWdhdGlvblByb3BlcnR5Py50eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24ocmVzdHJpY3RlZE5hdlByb3ApO1xuXHRcdFx0XHRcdGlmIChmdWxsTmF2aWdhdGlvblBhdGggPT09IHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eS52YWx1ZSAmJiByZXN0cmljdGlvbkRlZmluaXRpb24gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMgPSBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzLnNsaWNlKDAsIC0xKTtcblx0XHRcdFx0XHRcdGlmICh0YXJnZXRFbnRpdHlTZXQgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0dmlzaXRlZE5hdlByb3BzID0gX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHM7XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHR2aXNpdGVkTmF2UHJvcHMgPSBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzLnNsaWNlKDApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dmlzaXRlZE5hdlByb3BzID0gX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjb25zdCBwYXRoUmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGg/LmNvbnRleHRMb2NhdGlvbiwgdmlzaXRlZE5hdlByb3BzKS5tYXAoXG5cdFx0XHRcdFx0XHRcdG5wID0+IG5wLm5hbWVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRjb25zdCBwYXRoVmlzaXRvckZ1bmN0aW9uID0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnBhdGhWaXNpdG9yXG5cdFx0XHRcdFx0XHRcdD8gZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24oZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGgucGF0aFZpc2l0b3IsIHBhdGhSZWxhdGl2ZUxvY2F0aW9uKVxuXHRcdFx0XHRcdFx0XHQ6IHVuZGVmaW5lZDsgLy8gc2VuZCBwYXRoVmlzaXRvciBmdW5jdGlvbiBvbmx5IHdoZW4gaXQgaXMgZGVmaW5lZCBhbmQgb25seSBzZW5kIGZ1bmN0aW9uIG9yIGRlZmluZWQgYXMgYSBwYXJhbWV0ZXJcblx0XHRcdFx0XHRcdHJlc3RyaWN0aW9ucyA9IGVxdWFsKFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uRXhwcmVzc2lvbihyZXN0cmljdGlvbkRlZmluaXRpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uLCB1bmRlZmluZWQsIHBhdGhWaXNpdG9yRnVuY3Rpb24pLFxuXHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblx0bGV0IHRhcmdldFJlc3RyaWN0aW9ucztcblx0aWYgKCFleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD8uaWdub3JlVGFyZ2V0Q29sbGVjdGlvbikge1xuXHRcdGxldCByZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcyk7XG5cdFx0aWYgKHRhcmdldEVudGl0eVNldCA9PT0gbnVsbCAmJiByZXN0cmljdGlvbkRlZmluaXRpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmVzdHJpY3Rpb25EZWZpbml0aW9uID0gY2hlY2tGdW5jdGlvbih0YXJnZXRFbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzKTtcblx0XHR9XG5cdFx0aWYgKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBwYXRoUmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzKS5tYXAoXG5cdFx0XHRcdG5wID0+IG5wLm5hbWVcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBwYXRoVmlzaXRvckZ1bmN0aW9uID0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnBhdGhWaXNpdG9yXG5cdFx0XHRcdD8gZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24oZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGgucGF0aFZpc2l0b3IsIHBhdGhSZWxhdGl2ZUxvY2F0aW9uKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdHRhcmdldFJlc3RyaWN0aW9ucyA9IGVxdWFsKFxuXHRcdFx0XHRhbm5vdGF0aW9uRXhwcmVzc2lvbihyZXN0cmljdGlvbkRlZmluaXRpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uLCB1bmRlZmluZWQsIHBhdGhWaXNpdG9yRnVuY3Rpb24pLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiAoXG5cdFx0cmVzdHJpY3Rpb25zIHx8IHRhcmdldFJlc3RyaWN0aW9ucyB8fCAoZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LmF1dGhvcml6ZVVucmVzb2x2YWJsZSA/IHVucmVzb2x2ZWFibGVFeHByZXNzaW9uIDogY29uc3RhbnQodHJ1ZSkpXG5cdCk7XG59O1xuLy8gVGhpcyBoZWxwZXIgbWV0aG9kIGlzIHVzZWQgdG8gYWRkIHJlbGF0aXZlIHBhdGggbG9jYXRpb24gYXJndW1lbnQgdG8gc2luZ2xldG9uUGF0aFZpc2l0b3JGdW5jdGlvbiBpLmUuIHBhdGhWaXNpdG9yXG4vLyBwYXRoVmlzaXRvciBtZXRob2QgaXMgdXNlZCBsYXRlciB0byBnZXQgdGhlIGNvcnJlY3QgYmluZGluZ3MgZm9yIHNpbmdsZXRvbiBlbnRpdHlcbi8vIG1ldGhvZCBpcyBpbnZva2VkIGxhdGVyIGluIGJpbmRpbmdFeHByZXNzaW9uKCkgbWV0aG9kIHRvIGdldCB0aGUgY29ycmVjdCBiaW5kaW5nLlxuY29uc3QgZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24gPSBmdW5jdGlvbihwYXRoVmlzaXRvcjogRnVuY3Rpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uOiBzdHJpbmdbXSkge1xuXHRyZXR1cm4gZnVuY3Rpb24ocGF0aDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHBhdGhWaXNpdG9yKHBhdGgsIHBhdGhSZWxhdGl2ZUxvY2F0aW9uKTtcblx0fTtcbn07XG4iXX0=
416
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFNb2RlbFBhdGhIZWxwZXIudHMiXSwibmFtZXMiOlsiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0UGF0aCIsInZpc2l0ZWROYXZQcm9wcyIsImxlbmd0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVtYWluaW5nTmF2UHJvcHMiLCJmb3JFYWNoIiwibmF2UHJvcCIsIm5hdkluZGV4IiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiY3VycmVudElkeCIsImN1cnJlbnROYXYiLCJuZXh0TmF2UHJvcCIsInBhcnRuZXIiLCJuYW1lIiwic3BsaWNlIiwiZXh0cmFOYXZQcm9wIiwibWFwIiwidGFyZ2V0VHlwZSIsImZpbmQiLCJucCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsInByb3BlcnR5UGF0aCIsInNQcm9wZXJ0eVBhdGgiLCJpc1BhdGhFeHByZXNzaW9uIiwiaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24iLCJwYXRoIiwib1RhcmdldCIsIiR0YXJnZXQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXRPYmplY3QiLCJhUGF0aFNwbGl0Iiwic3BsaXQiLCJjdXJyZW50RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5U2V0IiwiY3VycmVudEVudGl0eVR5cGUiLCJyZWR1Y2UiLCJyZWR1Y2VkRW50aXR5VHlwZSIsInBhdGhQYXJ0IiwidW5kZWZpbmVkIiwicG90ZW50aWFsTmF2UHJvcCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsInN0YXJ0aW5nRW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwiY29udmVydGVkVHlwZXMiLCJnZXRUYXJnZXRFbnRpdHlTZXRQYXRoIiwidGFyZ2V0RW50aXR5U2V0UGF0aCIsIm5hdmlnYXRlZFBhdGhzIiwiam9pbiIsImdldFRhcmdldE9iamVjdFBhdGgiLCJiUmVsYXRpdmUiLCJfdHlwZSIsImVuZHNXaXRoIiwidGVybSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJmb3JCaW5kaW5nRXhwcmVzc2lvbiIsIm5hdlByb3BlcnRpZXMiLCJpc0NvbGxlY3Rpb24iLCJ0eXBlIiwidmFsdWUiLCJxdWFsaWZpZXIiLCJpc1BhdGhVcGRhdGFibGUiLCJleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCIsImNoZWNrT25QYXRoIiwiYW5ub3RhdGlvbk9iamVjdCIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlVwZGF0YWJsZSIsImlzUGF0aFNlYXJjaGFibGUiLCJTZWFyY2hSZXN0cmljdGlvbnMiLCJTZWFyY2hhYmxlIiwiaXNQYXRoRGVsZXRhYmxlIiwiRGVsZXRlUmVzdHJpY3Rpb25zIiwiRGVsZXRhYmxlIiwiaXNQYXRoSW5zZXJ0YWJsZSIsIkluc2VydFJlc3RyaWN0aW9ucyIsIkluc2VydGFibGUiLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJhbGxvd2VkRXhwcmVzc2lvbiIsImZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiY3VycmVudE9iamVjdFJlc3RyaWN0aW9uIiwicmVzdHJpY3Rpb24iLCJQcm9wZXJ0eSIsImluZGV4T2YiLCJBbGxvd2VkRXhwcmVzc2lvbnMiLCJ0b1N0cmluZyIsImNoZWNrRnVuY3Rpb24iLCJjb25zdGFudCIsInBhcmVudEVudGl0eVNldCIsInZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lIiwiYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcyIsInJlc2V0VmlzaXRlZE5hdlByb3BzIiwibmF2aWdhdGlvblByb3BlcnR5IiwiY29udGFpbnNUYXJnZXQiLCJmdWxsTmF2aWdhdGlvblBhdGgiLCJyZXN0cmljdGlvbnMiLCJfcGFyZW50RW50aXR5U2V0IiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJOYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwiUmVzdHJpY3RlZFByb3BlcnRpZXMiLCJyZXN0cmljdGVkTmF2UHJvcCIsIk5hdmlnYXRpb25Qcm9wZXJ0eSIsInJlc3RyaWN0aW9uRGVmaW5pdGlvbiIsIl9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzIiwicGF0aFJlbGF0aXZlTG9jYXRpb24iLCJwYXRoVmlzaXRvckZ1bmN0aW9uIiwicGF0aFZpc2l0b3IiLCJnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbiIsImVxdWFsIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJ0YXJnZXRSZXN0cmljdGlvbnMiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwidW5yZXNvbHZlYWJsZUV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQThCTyxNQUFNQSx1QkFBdUIsR0FBRyxVQUN0Q0MsV0FEc0MsRUFHZjtBQUFBLFFBRHZCQyxlQUN1Qix1RUFEaUIsRUFDakI7O0FBQ3ZCLFFBQUksQ0FBQ0QsV0FBTCxFQUFrQjtBQUNqQixhQUFPQyxlQUFQO0FBQ0EsS0FGRCxNQUVPLElBQUlBLGVBQWUsQ0FBQ0MsTUFBaEIsSUFBMEJGLFdBQVcsQ0FBQ0csb0JBQVosQ0FBaUNELE1BQS9ELEVBQXVFO0FBQzdFLFVBQUlFLGlCQUF1QyxHQUFHLEVBQTlDO0FBQ0FKLE1BQUFBLFdBQVcsQ0FBQ0csb0JBQVosQ0FBaUNFLE9BQWpDLENBQXlDLFVBQUNDLE9BQUQsRUFBVUMsUUFBVixFQUF1QjtBQUMvRCxZQUFJTixlQUFlLENBQUNNLFFBQUQsQ0FBZixLQUE4QkQsT0FBbEMsRUFBMkM7QUFDMUNGLFVBQUFBLGlCQUFpQixDQUFDSSxJQUFsQixDQUF1QlAsZUFBZSxDQUFDTSxRQUFELENBQXRDO0FBQ0E7QUFDRCxPQUpEO0FBS0FILE1BQUFBLGlCQUFpQixHQUFHQSxpQkFBaUIsQ0FBQ0ssTUFBbEIsQ0FBeUJSLGVBQWUsQ0FBQ1MsS0FBaEIsQ0FBc0JWLFdBQVcsQ0FBQ0cs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QUFoQixLQUF1Q2xELDBCQUEwQixTQUExQixJQUFBQSwwQkFBMEIsV0FBMUIsSUFBQUEsMEJBQTBCLENBQUVvRCxxQkFBNUIsR0FBb0RDLHVCQUFwRCxHQUE4RTNCLFFBQVEsQ0FBQyxJQUFELENBQTdILENBREQ7QUFHQSxHQXJHTSxDLENBc0dQO0FBQ0E7QUFDQTs7Ozs7QUFDQSxNQUFNcUIsMEJBQTBCLEdBQUcsVUFBVUQsV0FBVixFQUFpQ0Ysb0JBQWpDLEVBQWlFO0FBQ25HLFdBQU8sVUFBVWxGLElBQVYsRUFBd0I7QUFDOUIsYUFBT29GLFdBQVcsQ0FBQ3BGLElBQUQsRUFBT2tGLG9CQUFQLENBQWxCO0FBQ0EsS0FGRDtBQUdBLEdBSkQiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnZlcnRlck91dHB1dCwgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L2dlbmVyYXRlZC9DYXBhYmlsaXRpZXNcIjtcbmltcG9ydCB7XG5cdEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyxcblx0RW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9nZW5lcmF0ZWQvQ2FwYWJpbGl0aWVzX0VkbVwiO1xuaW1wb3J0IHtcblx0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdHlwZXMvZ2VuZXJhdGVkL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHsgYW5ub3RhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgRXhwcmVzc2lvbiwgdW5yZXNvbHZlYWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgUHJvcGVydHlPclBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EaXNwbGF5TW9kZUZvcm1hdHRlclwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24sIGlzUGF0aEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuXG5leHBvcnQgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoID0ge1xuXHRzdGFydGluZ0VudGl0eVNldDogRW50aXR5U2V0O1xuXHRjb250ZXh0TG9jYXRpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoO1xuXHRuYXZpZ2F0aW9uUHJvcGVydGllczogTmF2aWdhdGlvblByb3BlcnR5W107XG5cdHRhcmdldEVudGl0eVNldD86IEVudGl0eVNldDtcblx0dGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZTtcblx0dGFyZ2V0T2JqZWN0OiBhbnk7XG5cdGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZXJPdXRwdXQ7XG59O1xuXG50eXBlIEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoID0ge1xuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT47XG5cdHBhdGhWaXNpdG9yPzogRnVuY3Rpb247XG5cdGlnbm9yZVRhcmdldENvbGxlY3Rpb24/OiBib29sZWFuO1xuXHRhdXRob3JpemVVbnJlc29sdmFibGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZnVuY3Rpb24gKFxuXHRjb250ZXh0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHZpc2l0ZWROYXZQcm9wczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXVxuKTogTmF2aWdhdGlvblByb3BlcnR5W10ge1xuXHRpZiAoIWNvbnRleHRQYXRoKSB7XG5cdFx0cmV0dXJuIHZpc2l0ZWROYXZQcm9wcztcblx0fSBlbHNlIGlmICh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoID49IGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdGxldCByZW1haW5pbmdOYXZQcm9wczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0XHRjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZQcm9wLCBuYXZJbmRleCkgPT4ge1xuXHRcdFx0aWYgKHZpc2l0ZWROYXZQcm9wc1tuYXZJbmRleF0gIT09IG5hdlByb3ApIHtcblx0XHRcdFx0cmVtYWluaW5nTmF2UHJvcHMucHVzaCh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZW1haW5pbmdOYXZQcm9wcyA9IHJlbWFpbmluZ05hdlByb3BzLmNvbmNhdCh2aXNpdGVkTmF2UHJvcHMuc2xpY2UoY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoKSk7XG5cdFx0Ly8gQ2xlYW4gdXAgTmF2UHJvcCAtPiBPd25lclxuXHRcdGxldCBjdXJyZW50SWR4ID0gMDtcblx0XHR3aGlsZSAocmVtYWluaW5nTmF2UHJvcHMubGVuZ3RoID4gMSAmJiBjdXJyZW50SWR4ICE9IHJlbWFpbmluZ05hdlByb3BzLmxlbmd0aCAtIDEpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnROYXYgPSByZW1haW5pbmdOYXZQcm9wc1tjdXJyZW50SWR4XTtcblx0XHRcdGNvbnN0IG5leHROYXZQcm9wID0gcmVtYWluaW5nTmF2UHJvcHNbY3VycmVudElkeCArIDFdO1xuXHRcdFx0aWYgKGN1cnJlbnROYXYucGFydG5lciA9PT0gbmV4dE5hdlByb3AubmFtZSkge1xuXHRcdFx0XHRyZW1haW5pbmdOYXZQcm9wcy5zcGxpY2UoMCwgMik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjdXJyZW50SWR4Kys7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZW1haW5pbmdOYXZQcm9wcztcblx0fSBlbHNlIHtcblx0XHRsZXQgZXh0cmFOYXZQcm9wOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRcdHZpc2l0ZWROYXZQcm9wcy5mb3JFYWNoKChuYXZQcm9wLCBuYXZJbmRleCkgPT4ge1xuXHRcdFx0aWYgKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzW25hdkluZGV4XSAhPT0gbmF2UHJvcCkge1xuXHRcdFx0XHRleHRyYU5hdlByb3AucHVzaCh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRleHRyYU5hdlByb3AgPSBleHRyYU5hdlByb3AuY29uY2F0KGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNsaWNlKHZpc2l0ZWROYXZQcm9wcy5sZW5ndGgpKTtcblx0XHQvLyBDbGVhbiB1cCBOYXZQcm9wIC0+IE93bmVyXG5cdFx0bGV0IGN1cnJlbnRJZHggPSAwO1xuXHRcdHdoaWxlIChleHRyYU5hdlByb3AubGVuZ3RoID4gMSAmJiBjdXJyZW50SWR4ICE9IGV4dHJhTmF2UHJvcC5sZW5ndGggLSAxKSB7XG5cdFx0XHRjb25zdCBjdXJyZW50TmF2ID0gZXh0cmFOYXZQcm9wW2N1cnJlbnRJZHhdO1xuXHRcdFx0Y29uc3QgbmV4dE5hdlByb3AgPSBleHRyYU5hdlByb3BbY3VycmVudElkeCArIDFdO1xuXHRcdFx0aWYgKGN1cnJlbnROYXYucGFydG5lciA9PT0gbmV4dE5hdlByb3AubmFtZSkge1xuXHRcdFx0XHRleHRyYU5hdlByb3Auc3BsaWNlKDAsIDIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudElkeCsrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRleHRyYU5hdlByb3AgPSBleHRyYU5hdlByb3AubWFwKChuYXZQcm9wKSA9PiB7XG5cdFx0XHRyZXR1cm4gbmF2UHJvcC50YXJnZXRUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKG5wKSA9PiBucC5uYW1lID09PSBuYXZQcm9wLnBhcnRuZXIpIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHR9KTtcblx0XHRyZXR1cm4gZXh0cmFOYXZQcm9wO1xuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgZW5oYW5jZURhdGFNb2RlbFBhdGggPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5PlxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGxldCBzUHJvcGVydHlQYXRoOiBzdHJpbmcgPSBcIlwiO1xuXHRpZiAoKGlzUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSB8fCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpKSAmJiBwcm9wZXJ0eVBhdGgucGF0aCkge1xuXHRcdHNQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGgucGF0aDtcblx0fSBlbHNlIGlmICh0eXBlb2YgcHJvcGVydHlQYXRoID09PSBcInN0cmluZ1wiKSB7XG5cdFx0c1Byb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aCBhcyBzdHJpbmc7XG5cdH1cblx0bGV0IG9UYXJnZXQ7XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgfHwgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSkge1xuXHRcdG9UYXJnZXQgPSBwcm9wZXJ0eVBhdGguJHRhcmdldDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUpIHtcblx0XHRvVGFyZ2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKHNQcm9wZXJ0eVBhdGgpO1xuXHR9IGVsc2Uge1xuXHRcdG9UYXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXHRjb25zdCBhUGF0aFNwbGl0ID0gc1Byb3BlcnR5UGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQ7XG5cdGxldCBjdXJyZW50RW50aXR5VHlwZSA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmNvbmNhdCgpO1xuXHQvLyBQcm9jZXNzIG9ubHkgaWYgd2UgaGF2ZSB0byBnbyB0aHJvdWdoIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXG5cdGFQYXRoU3BsaXQucmVkdWNlKChyZWR1Y2VkRW50aXR5VHlwZTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCwgcGF0aFBhcnQ6IHN0cmluZykgPT4ge1xuXHRcdGlmICghcmVkdWNlZEVudGl0eVR5cGUpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IHBvdGVudGlhbE5hdlByb3AgPSByZWR1Y2VkRW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChuYXZQcm9wKSA9PiBuYXZQcm9wLm5hbWUgPT09IHBhdGhQYXJ0KTtcblx0XHRpZiAocG90ZW50aWFsTmF2UHJvcCkge1xuXHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChwb3RlbnRpYWxOYXZQcm9wKTtcblx0XHRcdGN1cnJlbnRFbnRpdHlUeXBlID0gcG90ZW50aWFsTmF2UHJvcC50YXJnZXRUeXBlO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KHBhdGhQYXJ0KSkge1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3BhdGhQYXJ0XTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjdXJyZW50RW50aXR5VHlwZTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fSwgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlKTtcblxuXHRyZXR1cm4ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRjb250ZXh0TG9jYXRpb246IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdHRhcmdldEVudGl0eVNldDogY3VycmVudEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBjdXJyZW50RW50aXR5VHlwZSxcblx0XHR0YXJnZXRPYmplY3Q6IG9UYXJnZXQsXG5cdFx0Y29udmVydGVkVHlwZXM6IGRhdGFNb2RlbE9iamVjdFBhdGguY29udmVydGVkVHlwZXNcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0UGF0aDogc3RyaW5nID0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHRsZXQgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBuYXZpZ2F0ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZQcm9wKSA9PiB7XG5cdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKSkpIHtcblx0XHRcdHRhcmdldEVudGl0eVNldFBhdGggKz0gYC8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke25hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpfS8kYDtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIildO1xuXHRcdFx0bmF2aWdhdGVkUGF0aHMgPSBbXTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gdGFyZ2V0RW50aXR5U2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRPYmplY3RQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIGJSZWxhdGl2ZTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcblx0bGV0IHBhdGggPSBcIlwiO1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gXCIvXCI7XG5cdH1cblx0aWYgKCFiUmVsYXRpdmUpIHtcblx0XHRwYXRoICs9IGAvJHtkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWV9YDtcblx0fVxuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcCgobmF2UHJvcCkgPT4gbmF2UHJvcC5uYW1lKS5qb2luKFwiL1wiKTtcblx0fVxuXG5cdGlmIChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWUgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Ll90eXBlICE9PSBcIkVudGl0eVR5cGVcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmICghcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz0gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwidGVybVwiKSkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9yQmluZGluZ0V4cHJlc3Npb246IGJvb2xlYW4gPSBmYWxzZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbmF2UHJvcGVydGllcyA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKTtcblx0aWYgKGZvckJpbmRpbmdFeHByZXNzaW9uKSB7XG5cdFx0aWYgKG5hdlByb3BlcnRpZXMuZmluZCgobnApID0+IG5wLmlzQ29sbGVjdGlvbikpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGxldCBwYXRoID0gbmF2UHJvcGVydGllcy5tYXAoKG5wKSA9PiBucC5uYW1lKS5qb2luKFwiL1wiKTtcblx0aWYgKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmXG5cdFx0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWUgfHxcblx0XHRcdChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnZhbHVlKSkgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0XG5cdCkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9XG5cdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiXG5cdFx0XHRcdD8gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWV9YFxuXHRcdFx0XHQ6IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWV9YDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInRlcm1cIikpIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBgQCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudGVybX1gO1xuXHRcdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInF1YWxpZmllclwiKSAmJiAhIWRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnF1YWxpZmllcikge1xuXHRcdFx0cGF0aCArPSBgIyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyfWA7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoVXBkYXRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uVXBkYXRlUmVzdHJpY3Rpb25zPy5VcGRhdGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aFNlYXJjaGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5TZWFyY2hSZXN0cmljdGlvbnM/LlNlYXJjaGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aERlbGV0YWJsZSA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LkRlbGV0ZVJlc3RyaWN0aW9ucz8uRGVsZXRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhJbnNlcnRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uSW5zZXJ0UmVzdHJpY3Rpb25zPy5JbnNlcnRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGFsbG93ZWRFeHByZXNzaW9uOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzIHwgRW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QgJiYgXCJGaWx0ZXJSZXN0cmljdGlvbnNcIiBpbiBhbm5vdGF0aW9uT2JqZWN0KSB7XG5cdFx0XHRcdGNvbnN0IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnM6IEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdID1cblx0XHRcdFx0XHQoYW5ub3RhdGlvbk9iamVjdD8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIGFzIEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgY3VycmVudE9iamVjdFJlc3RyaWN0aW9uID0gZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5maW5kKChyZXN0cmljdGlvbikgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAocmVzdHJpY3Rpb24uUHJvcGVydHkgYXMgUHJvcGVydHlQYXRoKS4kdGFyZ2V0ID09PSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24pIHtcblx0XHRcdFx0XHRyZXR1cm4gYWxsb3dlZEV4cHJlc3Npb24uaW5kZXhPZihjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24/LkFsbG93ZWRFeHByZXNzaW9ucz8udG9TdHJpbmcoKSkgIT09IC0xO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja09uUGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0Y2hlY2tGdW5jdGlvbjogRnVuY3Rpb24sXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGggfHwgIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQodHJ1ZSk7XG5cdH1cblxuXHRkYXRhTW9kZWxPYmplY3RQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnByb3BlcnR5UGF0aCk7XG5cblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRsZXQgcGFyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBudWxsID0gbnVsbDtcblx0bGV0IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBudWxsID0gY3VycmVudEVudGl0eVNldDtcblx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZSB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGxldCByZXNldFZpc2l0ZWROYXZQcm9wcyA9IGZhbHNlO1xuXG5cdGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHkpID0+IHtcblx0XHRpZiAocmVzZXRWaXNpdGVkTmF2UHJvcHMpIHtcblx0XHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lID0gW107XG5cdFx0fVxuXHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLnB1c2gobmF2aWdhdGlvblByb3BlcnR5Lm5hbWUpO1xuXHRcdGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkpO1xuXHRcdGlmICghbmF2aWdhdGlvblByb3BlcnR5LmNvbnRhaW5zVGFyZ2V0KSB7XG5cdFx0XHQvLyBXZSBzaG91bGQgaGF2ZSBhIG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRoIHNvIGZhciB3aGljaCBjYW4gY29uc2lzdCBvZiAoW0NvbnRhaW5tZW50TmF2UHJvcF0vKSpbTmF2UHJvcF1cblx0XHRcdGNvbnN0IGZ1bGxOYXZpZ2F0aW9uUGF0aCA9IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLmpvaW4oXCIvXCIpO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KGZ1bGxOYXZpZ2F0aW9uUGF0aCkpIHtcblx0XHRcdFx0cGFyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tmdWxsTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHQvLyBJZiB3ZSByZWFjaGVkIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoIGEgbmF2aWdhdGlvbnByb3BlcnR5YmluZGluZywgd2UgbmVlZCB0byByZXNldCB0aGUgdmlzaXRlZCBwYXRoIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbiAoaWYgdGhlcmUgaXMgb25lKVxuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBXZSByZWFsbHkgc2hvdWxkIG5vdCBlbmQgdXAgaGVyZSBidXQgYXQgbGVhc3QgbGV0J3MgdHJ5IHRvIGF2b2lkIGluY29ycmVjdCBiZWhhdmlvclxuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gbnVsbDtcblx0XHRcdFx0cmVzZXRWaXNpdGVkTmF2UHJvcHMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0ID0gbnVsbDtcblx0XHR9XG5cdH0pO1xuXG5cdC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBuYXZpZ2F0ZWQgZG93biBhbGwgdGhlIG5hdiBwcm9wIGFuZCB3ZSBzaG91bGQgaGF2ZVxuXHQvLyBUaGUgdGFyZ2V0IGVudGl0eVNldCBwb2ludGluZyB0byBlaXRoZXIgbnVsbCAoaW4gY2FzZSBvZiBjb250YWlubWVudCBuYXZwcm9wIGEgbGFzdCBwYXJ0KSwgb3IgdGhlIGFjdHVhbCB0YXJnZXQgKG5vbiBjb250YWlubWVudCBhcyB0YXJnZXQpXG5cdC8vIFRoZSBwYXJlbnQgZW50aXR5U2V0IHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBlbnRpdHlTZXQgdXNlZCBpbiB0aGUgcGF0aFxuXHQvLyBWaXNpdGVkTmF2aWdhdGlvblBhdGggc2hvdWxkIGNvbnRhaW4gdGhlIHBhdGggdXAgdG8gdGhpcyBwcm9wZXJ0eVxuXG5cdC8vIFJlc3RyaWN0aW9ucyBzaG91bGQgdGhlbiBiZSBldmFsdWF0ZWQgYXMgUGFyZW50RW50aXR5U2V0Lk5hdlJlc3RyaWN0aW9uc1tOYXZQcm9wZXJ0eVBhdGhdIHx8IFRhcmdldEVudGl0eVNldC5SZXN0cmljdGlvbnNcblx0Y29uc3QgZnVsbE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdGxldCByZXN0cmljdGlvbnMsIHZpc2l0ZWROYXZQcm9wcztcblx0aWYgKHBhcmVudEVudGl0eVNldCAhPT0gbnVsbCkge1xuXHRcdGNvbnN0IF9wYXJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCA9IHBhcmVudEVudGl0eVNldDtcblx0XHRfcGFyZW50RW50aXR5U2V0LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzLmZvckVhY2goXG5cdFx0XHQocmVzdHJpY3RlZE5hdlByb3A6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uVHlwZXMpID0+IHtcblx0XHRcdFx0aWYgKHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eT8udHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdFx0XHRjb25zdCByZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHJlc3RyaWN0ZWROYXZQcm9wKTtcblx0XHRcdFx0XHRpZiAoZnVsbE5hdmlnYXRpb25QYXRoID09PSByZXN0cmljdGVkTmF2UHJvcC5OYXZpZ2F0aW9uUHJvcGVydHkudmFsdWUgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzID0gYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5zbGljZSgwLCAtMSk7XG5cdFx0XHRcdFx0XHR2aXNpdGVkTmF2UHJvcHMgPSBfYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcztcblx0XHRcdFx0XHRcdGNvbnN0IHBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aD8uY29udGV4dExvY2F0aW9uLCB2aXNpdGVkTmF2UHJvcHMpLm1hcChcblx0XHRcdFx0XHRcdFx0KG5wKSA9PiBucC5uYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aFZpc2l0b3JGdW5jdGlvbiA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wYXRoVmlzaXRvclxuXHRcdFx0XHRcdFx0XHQ/IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoLnBhdGhWaXNpdG9yLCBwYXRoUmVsYXRpdmVMb2NhdGlvbilcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7IC8vIHNlbmQgcGF0aFZpc2l0b3IgZnVuY3Rpb24gb25seSB3aGVuIGl0IGlzIGRlZmluZWQgYW5kIG9ubHkgc2VuZCBmdW5jdGlvbiBvciBkZWZpbmVkIGFzIGEgcGFyYW1ldGVyXG5cdFx0XHRcdFx0XHRyZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvbkV4cHJlc3Npb24ocmVzdHJpY3Rpb25EZWZpbml0aW9uLCBwYXRoUmVsYXRpdmVMb2NhdGlvbiwgdW5kZWZpbmVkLCBwYXRoVmlzaXRvckZ1bmN0aW9uKSxcblx0XHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQpO1xuXHR9XG5cdGxldCB0YXJnZXRSZXN0cmljdGlvbnM7XG5cdGlmICghZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/Lmlnbm9yZVRhcmdldENvbGxlY3Rpb24pIHtcblx0XHRsZXQgcmVzdHJpY3Rpb25EZWZpbml0aW9uID0gY2hlY2tGdW5jdGlvbih0YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXMpO1xuXHRcdGlmICh0YXJnZXRFbnRpdHlTZXQgPT09IG51bGwgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24odGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcyk7XG5cdFx0fVxuXHRcdGlmIChyZXN0cmljdGlvbkRlZmluaXRpb24gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgcGF0aFJlbGF0aXZlTG9jYXRpb24gPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiwgYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcykubWFwKFxuXHRcdFx0XHQobnApID0+IG5wLm5hbWVcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBwYXRoVmlzaXRvckZ1bmN0aW9uID0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnBhdGhWaXNpdG9yXG5cdFx0XHRcdD8gZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24oZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGgucGF0aFZpc2l0b3IsIHBhdGhSZWxhdGl2ZUxvY2F0aW9uKVxuXHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdHRhcmdldFJlc3RyaWN0aW9ucyA9IGVxdWFsKFxuXHRcdFx0XHRhbm5vdGF0aW9uRXhwcmVzc2lvbihyZXN0cmljdGlvbkRlZmluaXRpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uLCB1bmRlZmluZWQsIHBhdGhWaXNpdG9yRnVuY3Rpb24pLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiAoXG5cdFx0cmVzdHJpY3Rpb25zIHx8IHRhcmdldFJlc3RyaWN0aW9ucyB8fCAoZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LmF1dGhvcml6ZVVucmVzb2x2YWJsZSA/IHVucmVzb2x2ZWFibGVFeHByZXNzaW9uIDogY29uc3RhbnQodHJ1ZSkpXG5cdCk7XG59O1xuLy8gVGhpcyBoZWxwZXIgbWV0aG9kIGlzIHVzZWQgdG8gYWRkIHJlbGF0aXZlIHBhdGggbG9jYXRpb24gYXJndW1lbnQgdG8gc2luZ2xldG9uUGF0aFZpc2l0b3JGdW5jdGlvbiBpLmUuIHBhdGhWaXNpdG9yXG4vLyBwYXRoVmlzaXRvciBtZXRob2QgaXMgdXNlZCBsYXRlciB0byBnZXQgdGhlIGNvcnJlY3QgYmluZGluZ3MgZm9yIHNpbmdsZXRvbiBlbnRpdHlcbi8vIG1ldGhvZCBpcyBpbnZva2VkIGxhdGVyIGluIGJpbmRpbmdFeHByZXNzaW9uKCkgbWV0aG9kIHRvIGdldCB0aGUgY29ycmVjdCBiaW5kaW5nLlxuY29uc3QgZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24gPSBmdW5jdGlvbiAocGF0aFZpc2l0b3I6IEZ1bmN0aW9uLCBwYXRoUmVsYXRpdmVMb2NhdGlvbjogc3RyaW5nW10pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gcGF0aFZpc2l0b3IocGF0aCwgcGF0aFJlbGF0aXZlTG9jYXRpb24pO1xuXHR9O1xufTtcbiJdfQ==
@@ -1,17 +1,17 @@
1
1
  import { ConverterOutput, EntitySet, EntityType, NavigationProperty, Property } from "@sap-ux/annotation-converter";
2
- import { annotationExpression, constant, equal, Expression, unresolveableExpression } from "sap/fe/core/helpers/BindingExpression";
2
+ import { PropertyPath } from "@sap-ux/vocabularies-types";
3
3
  import { NavigationPropertyRestrictionTypes } from "@sap-ux/vocabularies-types/dist/generated/Capabilities";
4
- import { PropertyOrPath } from "sap/fe/core/templating/DisplayModeFormatter";
5
- import { isAnnotationPathExpression, isPathExpression } from "sap/fe/core/templating/PropertyHelper";
6
- import {
7
- FilterExpressionRestrictionTypeTypes,
8
- NavigationPropertyRestriction
9
- } from "@sap-ux/vocabularies-types/types/generated/Capabilities";
10
4
  import {
11
5
  EntitySetAnnotations_Capabilities,
12
6
  EntityTypeAnnotations_Capabilities
13
7
  } from "@sap-ux/vocabularies-types/dist/generated/Capabilities_Edm";
14
- import { PropertyPath } from "@sap-ux/vocabularies-types";
8
+ import {
9
+ FilterExpressionRestrictionTypeTypes,
10
+ NavigationPropertyRestriction
11
+ } from "@sap-ux/vocabularies-types/types/generated/Capabilities";
12
+ import { annotationExpression, constant, equal, Expression, unresolveableExpression } from "sap/fe/core/helpers/BindingExpression";
13
+ import { PropertyOrPath } from "sap/fe/core/templating/DisplayModeFormatter";
14
+ import { isAnnotationPathExpression, isPathExpression } from "sap/fe/core/templating/PropertyHelper";
15
15
 
16
16
  export type DataModelObjectPath = {
17
17
  startingEntitySet: EntitySet;
@@ -30,7 +30,7 @@ type ExtractionParametersOnPath = {
30
30
  authorizeUnresolvable?: boolean;
31
31
  };
32
32
 
33
- export const getPathRelativeLocation = function(
33
+ export const getPathRelativeLocation = function (
34
34
  contextPath?: DataModelObjectPath,
35
35
  visitedNavProps: NavigationProperty[] = []
36
36
  ): NavigationProperty[] {
@@ -75,14 +75,14 @@ export const getPathRelativeLocation = function(
75
75
  currentIdx++;
76
76
  }
77
77
  }
78
- extraNavProp = extraNavProp.map(navProp => {
79
- return navProp.targetType.navigationProperties.find(np => np.name === navProp.partner) as NavigationProperty;
78
+ extraNavProp = extraNavProp.map((navProp) => {
79
+ return navProp.targetType.navigationProperties.find((np) => np.name === navProp.partner) as NavigationProperty;
80
80
  });
81
81
  return extraNavProp;
82
82
  }
83
83
  };
84
84
 
85
- export const enhanceDataModelPath = function(
85
+ export const enhanceDataModelPath = function (
86
86
  dataModelObjectPath: DataModelObjectPath,
87
87
  propertyPath?: PropertyOrPath<Property>
88
88
  ): DataModelObjectPath {
@@ -110,7 +110,7 @@ export const enhanceDataModelPath = function(
110
110
  if (!reducedEntityType) {
111
111
  return undefined;
112
112
  }
113
- const potentialNavProp = reducedEntityType.navigationProperties.find(navProp => navProp.name === pathPart);
113
+ const potentialNavProp = reducedEntityType.navigationProperties.find((navProp) => navProp.name === pathPart);
114
114
  if (potentialNavProp) {
115
115
  navigationProperties.push(potentialNavProp);
116
116
  currentEntityType = potentialNavProp.targetType;
@@ -133,11 +133,11 @@ export const enhanceDataModelPath = function(
133
133
  };
134
134
  };
135
135
 
136
- export const getTargetEntitySetPath = function(dataModelObjectPath: DataModelObjectPath): string {
136
+ export const getTargetEntitySetPath = function (dataModelObjectPath: DataModelObjectPath): string {
137
137
  let targetEntitySetPath: string = `/${dataModelObjectPath.startingEntitySet.name}`;
138
138
  let currentEntitySet = dataModelObjectPath.startingEntitySet;
139
139
  let navigatedPaths: string[] = [];
140
- dataModelObjectPath.navigationProperties.forEach(navProp => {
140
+ dataModelObjectPath.navigationProperties.forEach((navProp) => {
141
141
  navigatedPaths.push(navProp.name);
142
142
  if (currentEntitySet && currentEntitySet.navigationPropertyBinding.hasOwnProperty(navigatedPaths.join("/"))) {
143
143
  targetEntitySetPath += `/$NavigationPropertyBinding/${navigatedPaths.join("/")}/$`;
@@ -148,7 +148,7 @@ export const getTargetEntitySetPath = function(dataModelObjectPath: DataModelObj
148
148
  return targetEntitySetPath;
149
149
  };
150
150
 
151
- export const getTargetObjectPath = function(dataModelObjectPath: DataModelObjectPath, bRelative: boolean = false): string {
151
+ export const getTargetObjectPath = function (dataModelObjectPath: DataModelObjectPath, bRelative: boolean = false): string {
152
152
  let path = "";
153
153
  if (!dataModelObjectPath.startingEntitySet) {
154
154
  return "/";
@@ -160,7 +160,7 @@ export const getTargetObjectPath = function(dataModelObjectPath: DataModelObject
160
160
  if (path.length > 0) {
161
161
  path += "/";
162
162
  }
163
- path += dataModelObjectPath.navigationProperties.map(navProp => navProp.name).join("/");
163
+ path += dataModelObjectPath.navigationProperties.map((navProp) => navProp.name).join("/");
164
164
  }
165
165
 
166
166
  if (
@@ -183,17 +183,17 @@ export const getTargetObjectPath = function(dataModelObjectPath: DataModelObject
183
183
  return path;
184
184
  };
185
185
 
186
- export const getContextRelativeTargetObjectPath = function(
186
+ export const getContextRelativeTargetObjectPath = function (
187
187
  dataModelObjectPath: DataModelObjectPath,
188
188
  forBindingExpression: boolean = false
189
189
  ): string | undefined {
190
190
  const navProperties = getPathRelativeLocation(dataModelObjectPath.contextLocation, dataModelObjectPath.navigationProperties);
191
191
  if (forBindingExpression) {
192
- if (navProperties.find(np => np.isCollection)) {
192
+ if (navProperties.find((np) => np.isCollection)) {
193
193
  return undefined;
194
194
  }
195
195
  }
196
- let path = navProperties.map(np => np.name).join("/");
196
+ let path = navProperties.map((np) => np.name).join("/");
197
197
  if (
198
198
  dataModelObjectPath.targetObject &&
199
199
  (dataModelObjectPath.targetObject.name ||
@@ -222,7 +222,7 @@ export const getContextRelativeTargetObjectPath = function(
222
222
  return path;
223
223
  };
224
224
 
225
- export const isPathUpdatable = function(
225
+ export const isPathUpdatable = function (
226
226
  dataModelObjectPath: DataModelObjectPath | undefined,
227
227
  extractionParametersOnPath?: ExtractionParametersOnPath
228
228
  ): Expression<boolean> {
@@ -235,7 +235,7 @@ export const isPathUpdatable = function(
235
235
  );
236
236
  };
237
237
 
238
- export const isPathSearchable = function(
238
+ export const isPathSearchable = function (
239
239
  dataModelObjectPath: DataModelObjectPath | undefined,
240
240
  extractionParametersOnPath?: ExtractionParametersOnPath
241
241
  ): Expression<boolean> {
@@ -248,7 +248,7 @@ export const isPathSearchable = function(
248
248
  );
249
249
  };
250
250
 
251
- export const isPathDeletable = function(
251
+ export const isPathDeletable = function (
252
252
  dataModelObjectPath: DataModelObjectPath | undefined,
253
253
  extractionParametersOnPath?: ExtractionParametersOnPath
254
254
  ): Expression<boolean> {
@@ -261,7 +261,7 @@ export const isPathDeletable = function(
261
261
  );
262
262
  };
263
263
 
264
- export const isPathInsertable = function(
264
+ export const isPathInsertable = function (
265
265
  dataModelObjectPath: DataModelObjectPath | undefined,
266
266
  extractionParametersOnPath?: ExtractionParametersOnPath
267
267
  ): Expression<boolean> {
@@ -274,7 +274,7 @@ export const isPathInsertable = function(
274
274
  );
275
275
  };
276
276
 
277
- export const checkFilterExpressionRestrictions = function(
277
+ export const checkFilterExpressionRestrictions = function (
278
278
  dataModelObjectPath: DataModelObjectPath,
279
279
  allowedExpression: (string | undefined)[]
280
280
  ): Expression<boolean> {
@@ -284,7 +284,7 @@ export const checkFilterExpressionRestrictions = function(
284
284
  if (annotationObject && "FilterRestrictions" in annotationObject) {
285
285
  const filterExpressionRestrictions: FilterExpressionRestrictionTypeTypes[] =
286
286
  (annotationObject?.FilterRestrictions?.FilterExpressionRestrictions as FilterExpressionRestrictionTypeTypes[]) || [];
287
- const currentObjectRestriction = filterExpressionRestrictions.find(restriction => {
287
+ const currentObjectRestriction = filterExpressionRestrictions.find((restriction) => {
288
288
  return (restriction.Property as PropertyPath).$target === dataModelObjectPath.targetObject;
289
289
  });
290
290
  if (currentObjectRestriction) {
@@ -299,7 +299,7 @@ export const checkFilterExpressionRestrictions = function(
299
299
  );
300
300
  };
301
301
 
302
- export const checkOnPath = function(
302
+ export const checkOnPath = function (
303
303
  dataModelObjectPath: DataModelObjectPath | undefined,
304
304
  checkFunction: Function,
305
305
  extractionParametersOnPath?: ExtractionParametersOnPath
@@ -361,15 +361,9 @@ export const checkOnPath = function(
361
361
  const restrictionDefinition = checkFunction(restrictedNavProp);
362
362
  if (fullNavigationPath === restrictedNavProp.NavigationProperty.value && restrictionDefinition !== undefined) {
363
363
  const _allVisitedNavigationProps = allVisitedNavigationProps.slice(0, -1);
364
- if (targetEntitySet !== null) {
365
- visitedNavProps = _allVisitedNavigationProps;
366
- } else if (_allVisitedNavigationProps.length === 0) {
367
- visitedNavProps = allVisitedNavigationProps.slice(0);
368
- } else {
369
- visitedNavProps = _allVisitedNavigationProps;
370
- }
364
+ visitedNavProps = _allVisitedNavigationProps;
371
365
  const pathRelativeLocation = getPathRelativeLocation(dataModelObjectPath?.contextLocation, visitedNavProps).map(
372
- np => np.name
366
+ (np) => np.name
373
367
  );
374
368
  const pathVisitorFunction = extractionParametersOnPath?.pathVisitor
375
369
  ? getPathVisitorForSingleton(extractionParametersOnPath.pathVisitor, pathRelativeLocation)
@@ -391,7 +385,7 @@ export const checkOnPath = function(
391
385
  }
392
386
  if (restrictionDefinition !== undefined) {
393
387
  const pathRelativeLocation = getPathRelativeLocation(dataModelObjectPath.contextLocation, allVisitedNavigationProps).map(
394
- np => np.name
388
+ (np) => np.name
395
389
  );
396
390
  const pathVisitorFunction = extractionParametersOnPath?.pathVisitor
397
391
  ? getPathVisitorForSingleton(extractionParametersOnPath.pathVisitor, pathRelativeLocation)
@@ -410,8 +404,8 @@ export const checkOnPath = function(
410
404
  // This helper method is used to add relative path location argument to singletonPathVisitorFunction i.e. pathVisitor
411
405
  // pathVisitor method is used later to get the correct bindings for singleton entity
412
406
  // method is invoked later in bindingExpression() method to get the correct binding.
413
- const getPathVisitorForSingleton = function(pathVisitor: Function, pathRelativeLocation: string[]) {
414
- return function(path: string) {
407
+ const getPathVisitorForSingleton = function (pathVisitor: Function, pathRelativeLocation: string[]) {
408
+ return function (path: string) {
415
409
  return pathVisitor(path, pathRelativeLocation);
416
410
  };
417
411
  };
@@ -6,6 +6,7 @@ sap.ui.define(["sap/fe/core/templating/PropertyHelper"], function (PropertyHelpe
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
9
+ var isPropertyPathExpression = PropertyHelper.isPropertyPathExpression;
9
10
  var isPathExpression = PropertyHelper.isPathExpression;
10
11
 
11
12
  var EDM_TYPE_MAPPING = {
@@ -20,7 +21,8 @@ sap.ui.define(["sap/fe/core/templating/PropertyHelper"], function (PropertyHelpe
20
21
  },
21
22
  "Edm.DateTimeOffset": {
22
23
  constraints: {
23
- "$Precision": "precision"
24
+ "$Precision": "precision",
25
+ "$V4": "V4"
24
26
  },
25
27
  type: "sap.ui.model.odata.type.DateTimeOffset"
26
28
  },
@@ -78,6 +80,24 @@ sap.ui.define(["sap/fe/core/templating/PropertyHelper"], function (PropertyHelpe
78
80
  }
79
81
  };
80
82
  _exports.EDM_TYPE_MAPPING = EDM_TYPE_MAPPING;
83
+ var ODATA_TYPE_MAPPING = {
84
+ "sap.ui.model.odata.type.Boolean": "Edm.Boolean",
85
+ "sap.ui.model.odata.type.Byte": "Edm.Byte",
86
+ "sap.ui.model.odata.type.Date": "Edm.Date",
87
+ "sap.ui.model.odata.type.DateTimeOffset": "Edm.DateTimeOffset",
88
+ "sap.ui.model.odata.type.Decimal": "Edm.Decimal",
89
+ "sap.ui.model.odata.type.Double": "Edm.Double",
90
+ "sap.ui.model.odata.type.Guid": "Edm.Guid",
91
+ "sap.ui.model.odata.type.Int16": "Edm.Int16",
92
+ "sap.ui.model.odata.type.Int32": "Edm.Int32",
93
+ "sap.ui.model.odata.type.Int64": "Edm.Int64",
94
+ "sap.ui.model.odata.type.SByte": "Edm.SByte",
95
+ "sap.ui.model.odata.type.Single": "Edm.Single",
96
+ "sap.ui.model.odata.type.Stream": "Edm.Stream",
97
+ "sap.ui.model.odata.type.TimeOfDay": "Edm.TimeOfDay",
98
+ "sap.ui.model.odata.type.String": "Edm.String"
99
+ };
100
+ _exports.ODATA_TYPE_MAPPING = ODATA_TYPE_MAPPING;
81
101
 
82
102
  var getDisplayMode = function (oPropertyPath, oDataModelObjectPath) {
83
103
  var _oProperty$annotation, _oProperty$annotation2, _oTextAnnotation$anno, _oTextAnnotation$anno2, _oTextAnnotation$anno3, _oEntityType$annotati, _oEntityType$annotati2, _oEntityType$annotati3, _oEntityType$annotati4, _oEntityType$annotati5, _oEntityType$annotati6;
@@ -86,7 +106,7 @@ sap.ui.define(["sap/fe/core/templating/PropertyHelper"], function (PropertyHelpe
86
106
  return "Value";
87
107
  }
88
108
 
89
- var oProperty = isPathExpression(oPropertyPath) && oPropertyPath.$target || oPropertyPath;
109
+ var oProperty = (isPathExpression(oPropertyPath) || isPropertyPathExpression(oPropertyPath)) && oPropertyPath.$target || oPropertyPath;
90
110
  var oEntityType = oDataModelObjectPath && oDataModelObjectPath.targetEntityType;
91
111
  var oTextAnnotation = (_oProperty$annotation = oProperty.annotations) === null || _oProperty$annotation === void 0 ? void 0 : (_oProperty$annotation2 = _oProperty$annotation.Common) === null || _oProperty$annotation2 === void 0 ? void 0 : _oProperty$annotation2.Text;
92
112
  var oTextArrangementAnnotation = typeof oTextAnnotation !== "string" && (oTextAnnotation === null || oTextAnnotation === void 0 ? void 0 : (_oTextAnnotation$anno = oTextAnnotation.annotations) === null || _oTextAnnotation$anno === void 0 ? void 0 : (_oTextAnnotation$anno2 = _oTextAnnotation$anno.UI) === null || _oTextAnnotation$anno2 === void 0 ? void 0 : (_oTextAnnotation$anno3 = _oTextAnnotation$anno2.TextArrangement) === null || _oTextAnnotation$anno3 === void 0 ? void 0 : _oTextAnnotation$anno3.toString()) || (oEntityType === null || oEntityType === void 0 ? void 0 : (_oEntityType$annotati = oEntityType.annotations) === null || _oEntityType$annotati === void 0 ? void 0 : (_oEntityType$annotati2 = _oEntityType$annotati.UI) === null || _oEntityType$annotati2 === void 0 ? void 0 : (_oEntityType$annotati3 = _oEntityType$annotati2.TextArrangement) === null || _oEntityType$annotati3 === void 0 ? void 0 : _oEntityType$annotati3.toString());
@@ -111,4 +131,4 @@ sap.ui.define(["sap/fe/core/templating/PropertyHelper"], function (PropertyHelpe
111
131
  _exports.getDisplayMode = getDisplayMode;
112
132
  return _exports;
113
133
  }, false);
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRpc3BsYXlNb2RlRm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbIkVETV9UWVBFX01BUFBJTkciLCJ0eXBlIiwiY29uc3RyYWludHMiLCJnZXREaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YU1vZGVsT2JqZWN0UGF0aCIsIm9Qcm9wZXJ0eSIsImlzUGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0Iiwib0VudGl0eVR5cGUiLCJ0YXJnZXRFbnRpdHlUeXBlIiwib1RleHRBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0Iiwib1RleHRBcnJhbmdlbWVudEFubm90YXRpb24iLCJVSSIsIlRleHRBcnJhbmdlbWVudCIsInRvU3RyaW5nIiwic0Rpc3BsYXlWYWx1ZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7OztBQVdPLE1BQU1BLGdCQUFxQyxHQUFHO0FBQ3BELG1CQUFlO0FBQUVDLE1BQUFBLElBQUksRUFBRTtBQUFSLEtBRHFDO0FBRXBELGdCQUFZO0FBQUVBLE1BQUFBLElBQUksRUFBRTtBQUFSLEtBRndDO0FBR3BELGdCQUFZO0FBQUVBLE1BQUFBLElBQUksRUFBRTtBQUFSLEtBSHdDO0FBSXBELDBCQUFzQjtBQUNyQkMsTUFBQUEsV0FBVyxFQUFFO0FBQ1osc0JBQWM7QUFERixPQURRO0FBSXJCRCxNQUFBQSxJQUFJLEVBQUU7QUFKZSxLQUo4QjtBQVVwRCxtQkFBZTtBQUNkQyxNQUFBQSxXQUFXLEVBQUU7QUFDWixxREFBNkMsU0FEakM7QUFFWiw4RUFBc0Usa0JBRjFEO0FBR1oscURBQTZDLFNBSGpDO0FBSVosOEVBQXNFLGtCQUoxRDtBQUtaLHNCQUFjLFdBTEY7QUFNWixrQkFBVTtBQU5FLE9BREM7QUFTZEQsTUFBQUEsSUFBSSxFQUFFO0FBVFEsS0FWcUM7QUFxQnBELGtCQUFjO0FBQUVBLE1BQUFBLElBQUksRUFBRTtBQUFSLEtBckJzQztBQXNCcEQsZ0JBQVk7QUFBRUEsTUFBQUEsSUFBSSxFQUFFO0FBQVIsS0F0QndDO0FBdUJwRCxpQkFBYTtBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQXZCdUM7QUF3QnBELGlCQUFhO0FBQUVBLE1BQUFBLElBQUksRUFBRTtBQUFSLEtBeEJ1QztBQXlCcEQsaUJBQWE7QUFBRUEsTUFBQUEsSUFBSSxFQUFFO0FBQVIsS0F6QnVDO0FBMEJwRCxpQkFBYTtBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQTFCdUM7QUEyQnBELGtCQUFjO0FBQUVBLE1BQUFBLElBQUksRUFBRTtBQUFSLEtBM0JzQztBQTRCcEQsa0JBQWM7QUFBRUEsTUFBQUEsSUFBSSxFQUFFO0FBQVIsS0E1QnNDO0FBNkJwRCxrQkFBYztBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQTdCc0M7QUE4QnBELGtCQUFjO0FBQ2JDLE1BQUFBLFdBQVcsRUFBRTtBQUNaLDJEQUFtRCxpQkFEdkM7QUFFWixzQkFBYyxXQUZGO0FBR1oscUJBQWE7QUFIRCxPQURBO0FBTWJELE1BQUFBLElBQUksRUFBRTtBQU5PLEtBOUJzQztBQXNDcEQscUJBQWlCO0FBQ2hCQyxNQUFBQSxXQUFXLEVBQUU7QUFDWixzQkFBYztBQURGLE9BREc7QUFJaEJELE1BQUFBLElBQUksRUFBRTtBQUpVO0FBdENtQyxHQUE5Qzs7O0FBK0NBLE1BQU1FLGNBQWMsR0FBRyxVQUFTQyxhQUFULEVBQWtEQyxvQkFBbEQsRUFBMkc7QUFBQTs7QUFDeEksUUFBSSxDQUFDRCxhQUFELElBQWtCLE9BQU9BLGFBQVAsS0FBeUIsUUFBL0MsRUFBeUQ7QUFDeEQsYUFBTyxPQUFQO0FBQ0E7O0FBQ0QsUUFBTUUsU0FBUyxHQUFJQyxnQkFBZ0IsQ0FBQ0gsYUFBRCxDQUFoQixJQUFtQ0EsYUFBYSxDQUFDSSxPQUFsRCxJQUErREosYUFBakY7QUFDQSxRQUFNSyxXQUFXLEdBQUdKLG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0ssZ0JBQWpFO0FBQ0EsUUFBTUMsZUFBZSw0QkFBR0wsU0FBUyxDQUFDTSxXQUFiLG9GQUFHLHNCQUF1QkMsTUFBMUIsMkRBQUcsdUJBQStCQyxJQUF2RDtBQUNBLFFBQU1DLDBCQUEwQixHQUM5QixPQUFPSixlQUFQLEtBQTJCLFFBQTNCLEtBQXVDQSxlQUF2QyxhQUF1Q0EsZUFBdkMsZ0RBQXVDQSxlQUFlLENBQUVDLFdBQXhELG9GQUF1QyxzQkFBOEJJLEVBQXJFLHFGQUF1Qyx1QkFBa0NDLGVBQXpFLDJEQUF1Qyx1QkFBbURDLFFBQW5ELEVBQXZDLENBQUQsS0FDQVQsV0FEQSxhQUNBQSxXQURBLGdEQUNBQSxXQUFXLENBQUVHLFdBRGIsb0ZBQ0Esc0JBQTBCSSxFQUQxQixxRkFDQSx1QkFBOEJDLGVBRDlCLDJEQUNBLHVCQUErQ0MsUUFBL0MsRUFEQSxDQUREO0FBSUEsUUFBSUMsYUFBYSxHQUFHUixlQUFlLEdBQUcsa0JBQUgsR0FBd0IsT0FBM0Q7O0FBQ0EsUUFBS0EsZUFBZSxJQUFJSSwwQkFBcEIsSUFBbUROLFdBQW5ELGFBQW1EQSxXQUFuRCx5Q0FBbURBLFdBQVcsQ0FBRUcsV0FBaEUsNkVBQW1ELHVCQUEwQkksRUFBN0UsNkVBQW1ELHVCQUE4QkMsZUFBakYsbURBQW1ELHVCQUErQ0MsUUFBL0MsRUFBdkQsRUFBa0g7QUFDakgsVUFBSUgsMEJBQTBCLEtBQUssaUNBQW5DLEVBQXNFO0FBQ3JFSSxRQUFBQSxhQUFhLEdBQUcsYUFBaEI7QUFDQSxPQUZELE1BRU8sSUFBSUosMEJBQTBCLEtBQUssaUNBQW5DLEVBQXNFO0FBQzVFSSxRQUFBQSxhQUFhLEdBQUcsa0JBQWhCO0FBQ0EsT0FGTSxNQUVBLElBQUlKLDBCQUEwQixLQUFLLHFDQUFuQyxFQUEwRTtBQUNoRkksUUFBQUEsYUFBYSxHQUFHLE9BQWhCO0FBQ0EsT0FGTSxNQUVBO0FBQ047QUFDQUEsUUFBQUEsYUFBYSxHQUFHLGtCQUFoQjtBQUNBO0FBQ0Q7O0FBQ0QsV0FBT0EsYUFBUDtBQUNBLEdBekJNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcGFyYXRpbmcgdGhlc2UgbWV0aG9kcyBmcm9tIHRoZSBVSUZvcm1hdHRlcnMgYXMgdGhleSBhcmUgdXNlZCBhbHNvIGluIHRoZSBjb252ZXJ0ZXIuXG4gKiBUaGVzZSBtZXRob2RzIG11c3QgTk9UIHVzZWQgYW55IGRlcGVuZGVuY3kgZnJvbSB0aGUgVUk1IHJ1bnRpbWUuXG4gKiBXaGVuIGNvbnN1bWVkIG91dHNpZGUgb2YgY29udmVydGVycywgeW91IHNob3VsZCBjYWxsIHRoZW0gdmlhIFVJRm9ybWF0dGVycy5cbiAqL1xuXG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgaXNQYXRoRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdHlwZXMvRWRtXCI7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5T3JQYXRoPFA+ID0gc3RyaW5nIHwgUCB8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPjtcblxuZXhwb3J0IGNvbnN0IEVETV9UWVBFX01BUFBJTkc6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG5cdFwiRWRtLkJvb2xlYW5cIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkJvb2xlYW5cIiB9LFxuXHRcIkVkbS5CeXRlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5CeXRlXCIgfSxcblx0XCJFZG0uRGF0ZVwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVwiIH0sXG5cdFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCI6IHtcblx0XHRjb25zdHJhaW50czoge1xuXHRcdFx0XCIkUHJlY2lzaW9uXCI6IFwicHJlY2lzaW9uXCJcblx0XHR9LFxuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVRpbWVPZmZzZXRcIlxuXHR9LFxuXHRcIkVkbS5EZWNpbWFsXCI6IHtcblx0XHRjb25zdHJhaW50czoge1xuXHRcdFx0XCJAT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWluaW11bS8kRGVjaW1hbFwiOiBcIm1pbmltdW1cIixcblx0XHRcdFwiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbmltdW1AT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuRXhjbHVzaXZlXCI6IFwibWluaW11bUV4Y2x1c2l2ZVwiLFxuXHRcdFx0XCJAT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWF4aW11bS8kRGVjaW1hbFwiOiBcIm1heGltdW1cIixcblx0XHRcdFwiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heGltdW1AT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuRXhjbHVzaXZlXCI6IFwibWF4aW11bUV4Y2x1c2l2ZVwiLFxuXHRcdFx0XCIkUHJlY2lzaW9uXCI6IFwicHJlY2lzaW9uXCIsXG5cdFx0XHRcIiRTY2FsZVwiOiBcInNjYWxlXCJcblx0XHR9LFxuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGVjaW1hbFwiXG5cdH0sXG5cdFwiRWRtLkRvdWJsZVwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRG91YmxlXCIgfSxcblx0XCJFZG0uR3VpZFwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuR3VpZFwiIH0sXG5cdFwiRWRtLkludDE2XCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQxNlwiIH0sXG5cdFwiRWRtLkludDMyXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQzMlwiIH0sXG5cdFwiRWRtLkludDY0XCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQ2NFwiIH0sXG5cdFwiRWRtLlNCeXRlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TQnl0ZVwiIH0sXG5cdFwiRWRtLlNpbmdsZVwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU2luZ2xlXCIgfSxcblx0XCJFZG0uU3RyZWFtXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJlYW1cIiB9LFxuXHRcIkVkbS5CaW5hcnlcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmVhbVwiIH0sXG5cdFwiRWRtLlN0cmluZ1wiOiB7XG5cdFx0Y29uc3RyYWludHM6IHtcblx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5Jc0RpZ2l0U2VxdWVuY2VcIjogXCJpc0RpZ2l0U2VxdWVuY2VcIixcblx0XHRcdFwiJE1heExlbmd0aFwiOiBcIm1heExlbmd0aFwiLFxuXHRcdFx0XCIkTnVsbGFibGVcIjogXCJudWxsYWJsZVwiXG5cdFx0fSxcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiXG5cdH0sXG5cdFwiRWRtLlRpbWVPZkRheVwiOiB7XG5cdFx0Y29uc3RyYWludHM6IHtcblx0XHRcdFwiJFByZWNpc2lvblwiOiBcInByZWNpc2lvblwiXG5cdFx0fSxcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlRpbWVPZkRheVwiXG5cdH1cbn07XG5cbmV4cG9ydCB0eXBlIERpc3BsYXlNb2RlID0gXCJWYWx1ZVwiIHwgXCJEZXNjcmlwdGlvblwiIHwgXCJEZXNjcmlwdGlvblZhbHVlXCIgfCBcIlZhbHVlRGVzY3JpcHRpb25cIjtcbmV4cG9ydCBjb25zdCBnZXREaXNwbGF5TW9kZSA9IGZ1bmN0aW9uKG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Piwgb0RhdGFNb2RlbE9iamVjdFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoKTogRGlzcGxheU1vZGUge1xuXHRpZiAoIW9Qcm9wZXJ0eVBhdGggfHwgdHlwZW9mIG9Qcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gXCJWYWx1ZVwiO1xuXHR9XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCBvRW50aXR5VHlwZSA9IG9EYXRhTW9kZWxPYmplY3RQYXRoICYmIG9EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGNvbnN0IG9UZXh0QW5ub3RhdGlvbiA9IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRjb25zdCBvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9XG5cdFx0KHR5cGVvZiBvVGV4dEFubm90YXRpb24gIT09IFwic3RyaW5nXCIgJiYgb1RleHRBbm5vdGF0aW9uPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSkgfHxcblx0XHRvRW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQ/LnRvU3RyaW5nKCk7XG5cblx0bGV0IHNEaXNwbGF5VmFsdWUgPSBvVGV4dEFubm90YXRpb24gPyBcIkRlc2NyaXB0aW9uVmFsdWVcIiA6IFwiVmFsdWVcIjtcblx0aWYgKChvVGV4dEFubm90YXRpb24gJiYgb1RleHRBcnJhbmdlbWVudEFubm90YXRpb24pIHx8IG9FbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSkge1xuXHRcdGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRPbmx5XCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIkRlc2NyaXB0aW9uXCI7XG5cdFx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRMYXN0XCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIlZhbHVlRGVzY3JpcHRpb25cIjtcblx0XHR9IGVsc2UgaWYgKG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uID09PSBcIlVJLlRleHRBcnJhbmdlbWVudFR5cGUvVGV4dFNlcGFyYXRlXCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIlZhbHVlXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vRGVmYXVsdCBzaG91bGQgYmUgVGV4dEZpcnN0IGlmIHRoZXJlIGlzIGEgVGV4dCBhbm5vdGF0aW9uIGFuZCBuZWl0aGVyIFRleHRPbmx5IG5vciBUZXh0TGFzdCBhcmUgc2V0XG5cdFx0XHRzRGlzcGxheVZhbHVlID0gXCJEZXNjcmlwdGlvblZhbHVlXCI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzRGlzcGxheVZhbHVlIGFzIERpc3BsYXlNb2RlO1xufTtcbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRpc3BsYXlNb2RlRm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbIkVETV9UWVBFX01BUFBJTkciLCJ0eXBlIiwiY29uc3RyYWludHMiLCJPREFUQV9UWVBFX01BUFBJTkciLCJnZXREaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YU1vZGVsT2JqZWN0UGF0aCIsIm9Qcm9wZXJ0eSIsImlzUGF0aEV4cHJlc3Npb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0Iiwib0VudGl0eVR5cGUiLCJ0YXJnZXRFbnRpdHlUeXBlIiwib1RleHRBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0Iiwib1RleHRBcnJhbmdlbWVudEFubm90YXRpb24iLCJVSSIsIlRleHRBcnJhbmdlbWVudCIsInRvU3RyaW5nIiwic0Rpc3BsYXlWYWx1ZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFXTyxNQUFNQSxnQkFBcUMsR0FBRztBQUNwRCxtQkFBZTtBQUFFQyxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQURxQztBQUVwRCxnQkFBWTtBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUZ3QztBQUdwRCxnQkFBWTtBQUFFQSxNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUh3QztBQUlwRCwwQkFBc0I7QUFDckJDLE1BQUFBLFdBQVcsRUFBRTtBQUNaLHNCQUFjLFdBREY7QUFFWixlQUFPO0FBRkssT0FEUTtBQUtyQkQsTUFBQUEsSUFBSSxFQUFFO0FBTGUsS0FKOEI7QUFXcEQsbUJBQWU7QUFDZEMsTUFBQUEsV0FBVyxFQUFFO0FBQ1oscURBQTZDLFNBRGpDO0FBRVosOEVBQXNFLGtCQUYxRDtBQUdaLHFEQUE2QyxTQUhqQztBQUlaLDhFQUFzRSxrQkFKMUQ7QUFLWixzQkFBYyxXQUxGO0FBTVosa0JBQVU7QUFORSxPQURDO0FBU2RELE1BQUFBLElBQUksRUFBRTtBQVRRLEtBWHFDO0FBc0JwRCxrQkFBYztBQUFF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QW1ELHVCQUErQ0MsUUFBL0MsRUFBdkQsRUFBa0g7QUFDakgsVUFBSUgsMEJBQTBCLEtBQUssaUNBQW5DLEVBQXNFO0FBQ3JFSSxRQUFBQSxhQUFhLEdBQUcsYUFBaEI7QUFDQSxPQUZELE1BRU8sSUFBSUosMEJBQTBCLEtBQUssaUNBQW5DLEVBQXNFO0FBQzVFSSxRQUFBQSxhQUFhLEdBQUcsa0JBQWhCO0FBQ0EsT0FGTSxNQUVBLElBQUlKLDBCQUEwQixLQUFLLHFDQUFuQyxFQUEwRTtBQUNoRkksUUFBQUEsYUFBYSxHQUFHLE9BQWhCO0FBQ0EsT0FGTSxNQUVBO0FBQ047QUFDQUEsUUFBQUEsYUFBYSxHQUFHLGtCQUFoQjtBQUNBO0FBQ0Q7O0FBQ0QsV0FBT0EsYUFBUDtBQUNBLEdBM0JNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcGFyYXRpbmcgdGhlc2UgbWV0aG9kcyBmcm9tIHRoZSBVSUZvcm1hdHRlcnMgYXMgdGhleSBhcmUgdXNlZCBhbHNvIGluIHRoZSBjb252ZXJ0ZXIuXG4gKiBUaGVzZSBtZXRob2RzIG11c3QgTk9UIHVzZSBhbnkgZGVwZW5kZW5jeSBmcm9tIHRoZSBTQVAgVUk1IHJ1bnRpbWUuXG4gKiBXaGVuIGNvbnN1bWVkIG91dHNpZGUgb2YgY29udmVydGVycywgeW91IHNob3VsZCBjYWxsIHRoZW0gdmlhIFVJRm9ybWF0dGVycy5cbiAqL1xuXG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L2Fubm90YXRpb24tY29udmVydGVyXCI7XG5pbXBvcnQgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdHlwZXMvRWRtXCI7XG5pbXBvcnQgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgaXNQYXRoRXhwcmVzc2lvbiwgaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcblxuZXhwb3J0IHR5cGUgUHJvcGVydHlPclBhdGg8UD4gPSBzdHJpbmcgfCBQIHwgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPFA+O1xuXG5leHBvcnQgY29uc3QgRURNX1RZUEVfTUFQUElORzogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcblx0XCJFZG0uQm9vbGVhblwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuQm9vbGVhblwiIH0sXG5cdFwiRWRtLkJ5dGVcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkJ5dGVcIiB9LFxuXHRcIkVkbS5EYXRlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlXCIgfSxcblx0XCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjoge1xuXHRcdGNvbnN0cmFpbnRzOiB7XG5cdFx0XHRcIiRQcmVjaXNpb25cIjogXCJwcmVjaXNpb25cIixcblx0XHRcdFwiJFY0XCI6IFwiVjRcIlxuXHRcdH0sXG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlVGltZU9mZnNldFwiXG5cdH0sXG5cdFwiRWRtLkRlY2ltYWxcIjoge1xuXHRcdGNvbnN0cmFpbnRzOiB7XG5cdFx0XHRcIkBPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NaW5pbXVtLyREZWNpbWFsXCI6IFwibWluaW11bVwiLFxuXHRcdFx0XCJAT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWluaW11bUBPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5FeGNsdXNpdmVcIjogXCJtaW5pbXVtRXhjbHVzaXZlXCIsXG5cdFx0XHRcIkBPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5NYXhpbXVtLyREZWNpbWFsXCI6IFwibWF4aW11bVwiLFxuXHRcdFx0XCJAT3JnLk9EYXRhLlZhbGlkYXRpb24uVjEuTWF4aW11bUBPcmcuT0RhdGEuVmFsaWRhdGlvbi5WMS5FeGNsdXNpdmVcIjogXCJtYXhpbXVtRXhjbHVzaXZlXCIsXG5cdFx0XHRcIiRQcmVjaXNpb25cIjogXCJwcmVjaXNpb25cIixcblx0XHRcdFwiJFNjYWxlXCI6IFwic2NhbGVcIlxuXHRcdH0sXG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EZWNpbWFsXCJcblx0fSxcblx0XCJFZG0uRG91YmxlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGVcIiB9LFxuXHRcIkVkbS5HdWlkXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5HdWlkXCIgfSxcblx0XCJFZG0uSW50MTZcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDE2XCIgfSxcblx0XCJFZG0uSW50MzJcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDMyXCIgfSxcblx0XCJFZG0uSW50NjRcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDY0XCIgfSxcblx0XCJFZG0uU0J5dGVcIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlNCeXRlXCIgfSxcblx0XCJFZG0uU2luZ2xlXCI6IHsgdHlwZTogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TaW5nbGVcIiB9LFxuXHRcIkVkbS5TdHJlYW1cIjogeyB0eXBlOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmVhbVwiIH0sXG5cdFwiRWRtLkJpbmFyeVwiOiB7IHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyZWFtXCIgfSxcblx0XCJFZG0uU3RyaW5nXCI6IHtcblx0XHRjb25zdHJhaW50czoge1xuXHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGlnaXRTZXF1ZW5jZVwiOiBcImlzRGlnaXRTZXF1ZW5jZVwiLFxuXHRcdFx0XCIkTWF4TGVuZ3RoXCI6IFwibWF4TGVuZ3RoXCIsXG5cdFx0XHRcIiROdWxsYWJsZVwiOiBcIm51bGxhYmxlXCJcblx0XHR9LFxuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCJcblx0fSxcblx0XCJFZG0uVGltZU9mRGF5XCI6IHtcblx0XHRjb25zdHJhaW50czoge1xuXHRcdFx0XCIkUHJlY2lzaW9uXCI6IFwicHJlY2lzaW9uXCJcblx0XHR9LFxuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVGltZU9mRGF5XCJcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IE9EQVRBX1RZUEVfTUFQUElORzogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Cb29sZWFuXCI6IFwiRWRtLkJvb2xlYW5cIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5CeXRlXCI6IFwiRWRtLkJ5dGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlXCI6IFwiRWRtLkRhdGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5EYXRlVGltZU9mZnNldFwiOiBcIkVkbS5EYXRlVGltZU9mZnNldFwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRlY2ltYWxcIjogXCJFZG0uRGVjaW1hbFwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRvdWJsZVwiOiBcIkVkbS5Eb3VibGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5HdWlkXCI6IFwiRWRtLkd1aWRcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnQxNlwiOiBcIkVkbS5JbnQxNlwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkludDMyXCI6IFwiRWRtLkludDMyXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50NjRcIjogXCJFZG0uSW50NjRcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TQnl0ZVwiOiBcIkVkbS5TQnl0ZVwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlNpbmdsZVwiOiBcIkVkbS5TaW5nbGVcIixcblx0XCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJlYW1cIjogXCJFZG0uU3RyZWFtXCIsXG5cdFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVGltZU9mRGF5XCI6IFwiRWRtLlRpbWVPZkRheVwiLFxuXHRcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiOiBcIkVkbS5TdHJpbmdcIlxufTtcblxuZXhwb3J0IHR5cGUgRGlzcGxheU1vZGUgPSBcIlZhbHVlXCIgfCBcIkRlc2NyaXB0aW9uXCIgfCBcIkRlc2NyaXB0aW9uVmFsdWVcIiB8IFwiVmFsdWVEZXNjcmlwdGlvblwiO1xuZXhwb3J0IGNvbnN0IGdldERpc3BsYXlNb2RlID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Piwgb0RhdGFNb2RlbE9iamVjdFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoKTogRGlzcGxheU1vZGUge1xuXHRpZiAoIW9Qcm9wZXJ0eVBhdGggfHwgdHlwZW9mIG9Qcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gXCJWYWx1ZVwiO1xuXHR9XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9XG5cdFx0KChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpIHx8IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSkgJiYgKG9Qcm9wZXJ0eVBhdGguJHRhcmdldCBhcyBQcm9wZXJ0eSkpIHx8XG5cdFx0KG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCBvRW50aXR5VHlwZSA9IG9EYXRhTW9kZWxPYmplY3RQYXRoICYmIG9EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGNvbnN0IG9UZXh0QW5ub3RhdGlvbiA9IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRjb25zdCBvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9XG5cdFx0KHR5cGVvZiBvVGV4dEFubm90YXRpb24gIT09IFwic3RyaW5nXCIgJiYgb1RleHRBbm5vdGF0aW9uPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSkgfHxcblx0XHRvRW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQ/LnRvU3RyaW5nKCk7XG5cblx0bGV0IHNEaXNwbGF5VmFsdWUgPSBvVGV4dEFubm90YXRpb24gPyBcIkRlc2NyaXB0aW9uVmFsdWVcIiA6IFwiVmFsdWVcIjtcblx0aWYgKChvVGV4dEFubm90YXRpb24gJiYgb1RleHRBcnJhbmdlbWVudEFubm90YXRpb24pIHx8IG9FbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudD8udG9TdHJpbmcoKSkge1xuXHRcdGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRPbmx5XCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIkRlc2NyaXB0aW9uXCI7XG5cdFx0fSBlbHNlIGlmIChvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9PT0gXCJVSS5UZXh0QXJyYW5nZW1lbnRUeXBlL1RleHRMYXN0XCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIlZhbHVlRGVzY3JpcHRpb25cIjtcblx0XHR9IGVsc2UgaWYgKG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uID09PSBcIlVJLlRleHRBcnJhbmdlbWVudFR5cGUvVGV4dFNlcGFyYXRlXCIpIHtcblx0XHRcdHNEaXNwbGF5VmFsdWUgPSBcIlZhbHVlXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vRGVmYXVsdCBzaG91bGQgYmUgVGV4dEZpcnN0IGlmIHRoZXJlIGlzIGEgVGV4dCBhbm5vdGF0aW9uIGFuZCBuZWl0aGVyIFRleHRPbmx5IG5vciBUZXh0TGFzdCBhcmUgc2V0XG5cdFx0XHRzRGlzcGxheVZhbHVlID0gXCJEZXNjcmlwdGlvblZhbHVlXCI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzRGlzcGxheVZhbHVlIGFzIERpc3BsYXlNb2RlO1xufTtcbiJdfQ==
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * Separating these methods from the UIFormatters as they are used also in the converter.
3
- * These methods must NOT used any dependency from the UI5 runtime.
3
+ * These methods must NOT use any dependency from the SAP UI5 runtime.
4
4
  * When consumed outside of converters, you should call them via UIFormatters.
5
5
  */
6
6
 
7
7
  import { Property } from "@sap-ux/annotation-converter";
8
- import { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
9
- import { isPathExpression } from "sap/fe/core/templating/PropertyHelper";
10
8
  import { PathAnnotationExpression } from "@sap-ux/vocabularies-types/types/Edm";
9
+ import { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
10
+ import { isPathExpression, isPropertyPathExpression } from "sap/fe/core/templating/PropertyHelper";
11
11
 
12
12
  export type PropertyOrPath<P> = string | P | PathAnnotationExpression<P>;
13
13
 
@@ -17,7 +17,8 @@ export const EDM_TYPE_MAPPING: Record<string, any> = {
17
17
  "Edm.Date": { type: "sap.ui.model.odata.type.Date" },
18
18
  "Edm.DateTimeOffset": {
19
19
  constraints: {
20
- "$Precision": "precision"
20
+ "$Precision": "precision",
21
+ "$V4": "V4"
21
22
  },
22
23
  type: "sap.ui.model.odata.type.DateTimeOffset"
23
24
  },
@@ -57,12 +58,32 @@ export const EDM_TYPE_MAPPING: Record<string, any> = {
57
58
  }
58
59
  };
59
60
 
61
+ export const ODATA_TYPE_MAPPING: Record<string, any> = {
62
+ "sap.ui.model.odata.type.Boolean": "Edm.Boolean",
63
+ "sap.ui.model.odata.type.Byte": "Edm.Byte",
64
+ "sap.ui.model.odata.type.Date": "Edm.Date",
65
+ "sap.ui.model.odata.type.DateTimeOffset": "Edm.DateTimeOffset",
66
+ "sap.ui.model.odata.type.Decimal": "Edm.Decimal",
67
+ "sap.ui.model.odata.type.Double": "Edm.Double",
68
+ "sap.ui.model.odata.type.Guid": "Edm.Guid",
69
+ "sap.ui.model.odata.type.Int16": "Edm.Int16",
70
+ "sap.ui.model.odata.type.Int32": "Edm.Int32",
71
+ "sap.ui.model.odata.type.Int64": "Edm.Int64",
72
+ "sap.ui.model.odata.type.SByte": "Edm.SByte",
73
+ "sap.ui.model.odata.type.Single": "Edm.Single",
74
+ "sap.ui.model.odata.type.Stream": "Edm.Stream",
75
+ "sap.ui.model.odata.type.TimeOfDay": "Edm.TimeOfDay",
76
+ "sap.ui.model.odata.type.String": "Edm.String"
77
+ };
78
+
60
79
  export type DisplayMode = "Value" | "Description" | "DescriptionValue" | "ValueDescription";
61
- export const getDisplayMode = function(oPropertyPath: PropertyOrPath<Property>, oDataModelObjectPath?: DataModelObjectPath): DisplayMode {
80
+ export const getDisplayMode = function (oPropertyPath: PropertyOrPath<Property>, oDataModelObjectPath?: DataModelObjectPath): DisplayMode {
62
81
  if (!oPropertyPath || typeof oPropertyPath === "string") {
63
82
  return "Value";
64
83
  }
65
- const oProperty = (isPathExpression(oPropertyPath) && oPropertyPath.$target) || (oPropertyPath as Property);
84
+ const oProperty =
85
+ ((isPathExpression(oPropertyPath) || isPropertyPathExpression(oPropertyPath)) && (oPropertyPath.$target as Property)) ||
86
+ (oPropertyPath as Property);
66
87
  const oEntityType = oDataModelObjectPath && oDataModelObjectPath.targetEntityType;
67
88
  const oTextAnnotation = oProperty.annotations?.Common?.Text;
68
89
  const oTextArrangementAnnotation =