@sapui5/sap.fe.core 1.102.0 → 1.103.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 (311) hide show
  1. package/package.json +5 -5
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +62 -26
  4. package/src/sap/fe/core/AppComponent.ts +56 -40
  5. package/src/sap/fe/core/AppStateHandler.js +10 -10
  6. package/src/sap/fe/core/AppStateHandler.ts +9 -9
  7. package/src/sap/fe/core/BaseController.js +11 -9
  8. package/src/sap/fe/core/BaseController.ts +15 -13
  9. package/src/sap/fe/core/CommonUtils.js +236 -109
  10. package/src/sap/fe/core/CommonUtils.ts +252 -136
  11. package/src/sap/fe/core/ExtensionAPI.js +24 -27
  12. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  13. package/src/sap/fe/core/PageController.js +4 -4
  14. package/src/sap/fe/core/PageController.ts +4 -5
  15. package/src/sap/fe/core/TemplateComponent.js +1 -1
  16. package/src/sap/fe/core/TemplateComponent.ts +6 -6
  17. package/src/sap/fe/core/TemplateModel.js +1 -1
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +8 -8
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +11 -10
  23. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
  24. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
  25. package/src/sap/fe/core/controllerextensions/EditFlow.js +129 -118
  26. package/src/sap/fe/core/controllerextensions/EditFlow.ts +154 -141
  27. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
  28. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  29. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +31 -26
  30. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +34 -35
  31. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +70 -70
  32. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +77 -77
  33. package/src/sap/fe/core/controllerextensions/InternalRouting.js +84 -78
  34. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +105 -101
  35. package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
  36. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  37. package/src/sap/fe/core/controllerextensions/MassEdit.js +8 -8
  38. package/src/sap/fe/core/controllerextensions/MassEdit.ts +19 -26
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +29 -14
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  47. package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  49. package/src/sap/fe/core/controllerextensions/Share.js +22 -22
  50. package/src/sap/fe/core/controllerextensions/Share.ts +30 -29
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +65 -62
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +68 -63
  55. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  56. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  57. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +6 -6
  58. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +12 -17
  59. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
  60. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
  61. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
  62. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
  63. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +184 -137
  64. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +253 -206
  65. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +113 -121
  66. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +148 -158
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +198 -148
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +223 -159
  69. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
  70. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
  71. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -44
  72. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +90 -60
  73. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +52 -55
  74. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +55 -58
  75. package/src/sap/fe/core/controls/Any.js +9 -5
  76. package/src/sap/fe/core/controls/Any.ts +10 -4
  77. package/src/sap/fe/core/controls/CommandExecution.js +11 -25
  78. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  81. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
  82. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  83. package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
  84. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  85. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  86. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  87. package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
  88. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  89. package/src/sap/fe/core/controls/FileWrapper.js +2 -2
  90. package/src/sap/fe/core/controls/FileWrapper.ts +11 -11
  91. package/src/sap/fe/core/controls/FilterBar.js +6 -2
  92. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  93. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  94. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  95. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  96. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  97. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
  98. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
  99. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  100. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
  101. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  102. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +47 -47
  103. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +52 -52
  104. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  105. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  106. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  107. package/src/sap/fe/core/converters/ConverterContext.js +26 -33
  108. package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
  109. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  110. package/src/sap/fe/core/converters/ManifestSettings.ts +14 -14
  111. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  112. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  113. package/src/sap/fe/core/converters/MetaModelConverter.js +50 -32
  114. package/src/sap/fe/core/converters/MetaModelConverter.ts +145 -127
  115. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  116. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  117. package/src/sap/fe/core/converters/annotations/DataField.js +54 -34
  118. package/src/sap/fe/core/converters/annotations/DataField.ts +97 -75
  119. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
  120. package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
  121. package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
  122. package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
  123. package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -26
  124. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  125. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  126. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
  127. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
  128. package/src/sap/fe/core/converters/controls/Common/Form.js +25 -27
  129. package/src/sap/fe/core/converters/controls/Common/Form.ts +37 -45
  130. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  131. package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
  132. package/src/sap/fe/core/converters/controls/Common/Table.js +174 -183
  133. package/src/sap/fe/core/converters/controls/Common/Table.ts +237 -250
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  135. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
  137. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +64 -57
  138. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  139. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  140. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  141. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  142. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
  143. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
  144. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +73 -72
  145. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +98 -96
  146. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  147. package/src/sap/fe/core/converters/helpers/Aggregation.ts +10 -13
  148. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  149. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  150. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
  151. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
  152. package/src/sap/fe/core/converters/helpers/ID.js +46 -46
  153. package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
  154. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  155. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  156. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  157. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
  158. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  159. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  160. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
  161. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
  162. package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
  163. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
  164. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
  165. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
  166. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  167. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  168. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  169. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  170. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  171. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  172. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  173. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  174. package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
  175. package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
  176. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  177. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  178. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  179. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  180. package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
  181. package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
  182. package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
  183. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +365 -264
  184. package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
  185. package/src/sap/fe/core/helpers/ClassSupport.ts +14 -10
  186. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  187. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  188. package/src/sap/fe/core/helpers/EditState.js +1 -6
  189. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  190. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  191. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  192. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  193. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  194. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  195. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  196. package/src/sap/fe/core/helpers/MassEditHelper.js +281 -254
  197. package/src/sap/fe/core/helpers/MassEditHelper.ts +337 -289
  198. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  199. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  200. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  201. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  202. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  203. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  204. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  205. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  206. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  207. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  208. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  209. package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
  210. package/src/sap/fe/core/library.js +42 -3
  211. package/src/sap/fe/core/library.ts +38 -0
  212. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  213. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  214. package/src/sap/fe/core/messagebundle.properties +49 -35
  215. package/src/sap/fe/core/messagebundle_ar.properties +13 -5
  216. package/src/sap/fe/core/messagebundle_bg.properties +13 -5
  217. package/src/sap/fe/core/messagebundle_ca.properties +13 -5
  218. package/src/sap/fe/core/messagebundle_cs.properties +13 -5
  219. package/src/sap/fe/core/messagebundle_cy.properties +14 -6
  220. package/src/sap/fe/core/messagebundle_da.properties +13 -5
  221. package/src/sap/fe/core/messagebundle_de.properties +15 -7
  222. package/src/sap/fe/core/messagebundle_el.properties +14 -6
  223. package/src/sap/fe/core/messagebundle_en.properties +9 -1
  224. package/src/sap/fe/core/messagebundle_en_GB.properties +11 -3
  225. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +7 -1
  226. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +9 -1
  227. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -85
  228. package/src/sap/fe/core/messagebundle_es.properties +13 -5
  229. package/src/sap/fe/core/messagebundle_es_MX.properties +13 -5
  230. package/src/sap/fe/core/messagebundle_et.properties +13 -5
  231. package/src/sap/fe/core/messagebundle_fi.properties +14 -6
  232. package/src/sap/fe/core/messagebundle_fr.properties +14 -6
  233. package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -6
  234. package/src/sap/fe/core/messagebundle_hi.properties +14 -6
  235. package/src/sap/fe/core/messagebundle_hr.properties +14 -6
  236. package/src/sap/fe/core/messagebundle_hu.properties +13 -5
  237. package/src/sap/fe/core/messagebundle_id.properties +13 -5
  238. package/src/sap/fe/core/messagebundle_it.properties +33 -25
  239. package/src/sap/fe/core/messagebundle_iw.properties +13 -5
  240. package/src/sap/fe/core/messagebundle_ja.properties +14 -6
  241. package/src/sap/fe/core/messagebundle_kk.properties +13 -5
  242. package/src/sap/fe/core/messagebundle_ko.properties +13 -5
  243. package/src/sap/fe/core/messagebundle_lt.properties +13 -5
  244. package/src/sap/fe/core/messagebundle_lv.properties +14 -6
  245. package/src/sap/fe/core/messagebundle_ms.properties +13 -5
  246. package/src/sap/fe/core/messagebundle_nl.properties +13 -5
  247. package/src/sap/fe/core/messagebundle_no.properties +13 -5
  248. package/src/sap/fe/core/messagebundle_pl.properties +13 -5
  249. package/src/sap/fe/core/messagebundle_pt.properties +13 -5
  250. package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -6
  251. package/src/sap/fe/core/messagebundle_ro.properties +13 -5
  252. package/src/sap/fe/core/messagebundle_ru.properties +13 -5
  253. package/src/sap/fe/core/messagebundle_sh.properties +13 -5
  254. package/src/sap/fe/core/messagebundle_sk.properties +13 -5
  255. package/src/sap/fe/core/messagebundle_sl.properties +17 -9
  256. package/src/sap/fe/core/messagebundle_sv.properties +14 -6
  257. package/src/sap/fe/core/messagebundle_th.properties +13 -5
  258. package/src/sap/fe/core/messagebundle_tr.properties +13 -5
  259. package/src/sap/fe/core/messagebundle_uk.properties +13 -5
  260. package/src/sap/fe/core/messagebundle_vi.properties +13 -5
  261. package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -6
  262. package/src/sap/fe/core/messagebundle_zh_TW.properties +13 -5
  263. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  264. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  265. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
  266. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
  267. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  268. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  269. package/src/sap/fe/core/services/NavigationServiceFactory.js +53 -44
  270. package/src/sap/fe/core/services/NavigationServiceFactory.ts +54 -46
  271. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
  272. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  273. package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
  274. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  275. package/src/sap/fe/core/services/ShellServicesFactory.js +72 -76
  276. package/src/sap/fe/core/services/ShellServicesFactory.ts +76 -82
  277. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
  278. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  279. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +20 -15
  280. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +26 -21
  281. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  282. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  283. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  284. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  285. package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
  286. package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
  287. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  288. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  289. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  290. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  291. package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
  292. package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
  293. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  294. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  295. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  296. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  297. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  298. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  299. package/src/sap/fe/core/templating/FilterHelper.js +10 -9
  300. package/src/sap/fe/core/templating/FilterHelper.ts +13 -13
  301. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  302. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  303. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  304. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  305. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  306. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  307. package/src/sap/fe/core/templating/UIFormatters.js +148 -93
  308. package/src/sap/fe/core/templating/UIFormatters.ts +196 -124
  309. package/src/sap/fe/core/type/Email.js +2 -2
  310. package/src/sap/fe/core/type/Email.ts +2 -2
  311. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -1,20 +1,20 @@
1
- import * as CorePasteHelper from "sap/ui/core/util/PasteHelper";
2
- import MessageBox from "sap/m/MessageBox";
3
1
  import Log from "sap/base/Log";
4
- import PageController from "sap/fe/core/PageController";
2
+ import type PageController from "sap/fe/core/PageController";
3
+ import MessageBox from "sap/m/MessageBox";
5
4
  import Core from "sap/ui/core/Core";
6
- import { CoreEx } from "types/extension_types";
5
+ import * as CorePasteHelper from "sap/ui/core/util/PasteHelper";
6
+ import type { CoreEx } from "types/extension_types";
7
7
 
8
8
  export type customValidationMessage = {
9
9
  messageText?: string;
10
10
  messageTarget?: string;
11
11
  };
12
12
 
13
- const getInfoForEntityProperty = function(propertyPath: any, rowBindingPath: any, metaContext: any, metaModel: any): any {
13
+ const getInfoForEntityProperty = function (propertyPath: any, rowBindingPath: any, metaContext: any, metaModel: any): any {
14
14
  const property = metaContext.getProperty(propertyPath),
15
15
  formatOptions = { parseKeepsEmptyString: true },
16
16
  type = metaModel.getUI5Type(`${rowBindingPath}/${propertyPath}`, formatOptions),
17
- isIgnored = !property || metaContext.getProperty(propertyPath + "@Org.OData.Core.V1.Computed");
17
+ isIgnored = !property || metaContext.getProperty(`${propertyPath}@Org.OData.Core.V1.Computed`);
18
18
  return {
19
19
  property: propertyPath,
20
20
  ignore: isIgnored,
@@ -22,7 +22,7 @@ const getInfoForEntityProperty = function(propertyPath: any, rowBindingPath: any
22
22
  };
23
23
  };
24
24
 
25
- const displayErrorMessages = function(errorMessages: string[]): void {
25
+ const displayErrorMessages = function (errorMessages: string[]): void {
26
26
  const messageDetails = [...errorMessages];
27
27
  const resourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core"),
28
28
  errorCorrectionMessage = resourceBundle.getText("C_PASTE_HELPER_SAPFE_PASTE_ERROR_CORRECTION_MESSAGE"),
@@ -45,7 +45,7 @@ const displayErrorMessages = function(errorMessages: string[]): void {
45
45
 
46
46
  const PasteHelper = {
47
47
  displayErrorMessages: displayErrorMessages,
48
- formatCustomMessage: function(validationMessages: customValidationMessage[], iRowNumber: number): string {
48
+ formatCustomMessage: function (validationMessages: customValidationMessage[], iRowNumber: number): string {
49
49
  let errorMessage = "";
50
50
  const numberMessages = validationMessages.length;
51
51
  const resourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core"),
@@ -60,7 +60,7 @@ const PasteHelper = {
60
60
  }
61
61
  return errorMessage;
62
62
  },
63
- getColumnInfo: function(table: any): Promise<any[]> {
63
+ getColumnInfo: function (table: any): Promise<any[]> {
64
64
  const model = table.getRowBinding().getModel(),
65
65
  metaModel = model.getMetaModel(),
66
66
  rowBindingPath = model.resolve(table.getRowBinding().getPath(), table.getRowBinding().getContext()),
@@ -110,15 +110,10 @@ const PasteHelper = {
110
110
  });
111
111
  },
112
112
  getInfoForEntityProperty: getInfoForEntityProperty,
113
- /**
114
- *
115
- * @param rawData
116
- * @param table
117
- * @returns {Promise<any>}
118
- */
119
- parsePastedData: function(rawData: any, table: any): Promise<any[]> {
113
+
114
+ parsePastedData: function (rawData: any, table: any): Promise<any[]> {
120
115
  return this.getColumnInfo(table)
121
- .then(function(pasteInfos: any[]) {
116
+ .then(function (pasteInfos: any[]) {
122
117
  // Check if we have data for at least the first editable column
123
118
  const pastedColumnCount = rawData.length ? rawData[0].length : 0;
124
119
  let firstEditableColumnIndex = -1;
@@ -133,7 +128,7 @@ const PasteHelper = {
133
128
  })
134
129
  .then((parseResult: any) => {
135
130
  if (parseResult.errors) {
136
- const errorMessages = parseResult.errors.map(function(oElement: any) {
131
+ const errorMessages = parseResult.errors.map(function (oElement: any) {
137
132
  return oElement.message;
138
133
  });
139
134
  this.displayErrorMessages(errorMessages);
@@ -143,15 +138,15 @@ const PasteHelper = {
143
138
  }
144
139
  });
145
140
  },
146
- pasteData: function(rawData: any, table: any, controller: PageController): Promise<any> {
141
+ pasteData: function (rawData: any, table: any, controller: PageController): Promise<any> {
147
142
  const oInternalEditFlow = (controller as any)._editFlow;
148
143
  const tableDefinition = table.getParent().getTableDefinition();
149
144
  let aData: any[] = [];
150
145
  return this.parsePastedData(rawData, table)
151
- .then(aParsedData => {
146
+ .then((aParsedData) => {
152
147
  aData = aParsedData || [];
153
148
  return Promise.all(
154
- aData.map(mData =>
149
+ aData.map((mData) =>
155
150
  oInternalEditFlow.getTransactionHelper().validateDocument(
156
151
  table.getBindingContext(),
157
152
  {
@@ -163,8 +158,8 @@ const PasteHelper = {
163
158
  )
164
159
  );
165
160
  })
166
- .then(aValidationMessages => {
167
- const aErrorMessages = aValidationMessages.reduce(function(aMessages, aCustomMessages, index) {
161
+ .then((aValidationMessages) => {
162
+ const aErrorMessages = aValidationMessages.reduce(function (aMessages, aCustomMessages, index) {
168
163
  if (aCustomMessages.length > 0) {
169
164
  aMessages.push({ messages: aCustomMessages, row: index + 1 });
170
165
  }
@@ -177,7 +172,7 @@ const PasteHelper = {
177
172
  }
178
173
  return aData;
179
174
  })
180
- .then(aValidatedData => {
175
+ .then((aValidatedData) => {
181
176
  return aValidatedData.length > 0
182
177
  ? oInternalEditFlow.createMultipleDocuments(
183
178
  table.getRowBinding(),
@@ -188,7 +183,7 @@ const PasteHelper = {
188
183
  )
189
184
  : undefined;
190
185
  })
191
- .catch(oError => {
186
+ .catch((oError) => {
192
187
  Log.error("Error while pasting data", oError);
193
188
  });
194
189
  }
@@ -346,4 +346,4 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/mdc/condition/FilterOperatorUtil", "s
346
346
  };
347
347
  return SemanticDateOperators;
348
348
  }, false);
349
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiYWRkT3BlcmF0b3IiLCJnZXRTdXBwb3J0ZWRPcGVyYXRpb25zIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRpb25zIiwiYU9wZXJhdGlvbnMiLCJuIiwicHVzaCIsIm1hcCIsImtleSIsImhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJvQ29uZGl0aW9ucyIsImFTZW1hbnRpY0RhdGVPcHMiLCJhRmlsdGVyQ29uZHRpb24iLCJvU2VtYW50aWNPcGVyYXRvciIsImZpbmQiLCJvQ29uZGl0aW9uIiwib3BlcmF0b3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFLQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLElBQWpCLEVBQXVCLFdBQXZCLENBQTdCO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsY0FBOUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1DLHlCQUF5QixHQUFHLGtCQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLG1CQUFuQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLGVBQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxh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VSxDQUFDQyxRQUFwQyxJQUFnRCxDQUFDLENBQXhEO0FBQ0EsU0FGeUIsQ0FBMUI7O0FBR0EsWUFBSUgsaUJBQUosRUFBdUI7QUFDdEIsaUJBQU8sS0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0E7QUEzQzRCLEdBQTlCO1NBOENlckIscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3JVdGlsIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9GaWx0ZXJPcGVyYXRvclV0aWxcIjtcbmltcG9ydCBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBNb2RlbE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5pbXBvcnQgeyBDb3JlRXggfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbmNvbnN0IGFTdXBwb3J0ZWRPcGVyYXRpb25zID0gW1wiREFURVwiLCBcIkZST01cIiwgXCJUT1wiLCBcIkRBVEVSQU5HRVwiXTtcbmNvbnN0IERZTkFNSUNfREFURV9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFXCI7XG5jb25zdCBGSVhFRF9EQVRFX0NBVEVHT1JZID0gXCJGSVhFRC5EQVRFXCI7XG5jb25zdCBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEUuSU5UXCI7XG5jb25zdCBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFUkFOR0VcIjtcbmNvbnN0IERZTkFNSUNfTU9OVEhfQ0FURUdPUlkgPSBcIkRZTkFNSUMuTU9OVEhcIjtcbmNvbnN0IEZJWEVEX1dFRUtfQ0FURUdPUlkgPSBcIkZJWEVELldFRUtcIjtcbmNvbnN0IEZJWEVEX01PTlRIX0NBVEVHT1JZID0gXCJGSVhFRC5NT05USFwiO1xuY29uc3QgRklYRURfUVVBUlRFUl9DQVRFR09SWSA9IFwiRklYRUQuUVVBUlRFUlwiO1xuY29uc3QgRklYRURfWUVBUl9DQVRFR09SWSA9IFwiRklYRUQuWUVBUlwiO1xuY29uc3QgRFlOQU1JQ19XRUVLX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5XRUVLLklOVFwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuTU9OVEguSU5UXCI7XG5jb25zdCBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLlFVQVJURVIuSU5UXCI7XG5jb25zdCBEWU5BTUlDX1lFQVJfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLllFQVIuSU5UXCI7XG5jb25zdCBtU2VtYW50aWNEYXRlT3BlcmF0aW9uczogYW55ID0ge1xuXHRcIkRBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiRlJPTVwiOiB7XG5cdFx0XCJrZXlcIjogXCJGUk9NXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJUT1wiOiB7XG5cdFx0XCJrZXlcIjogXCJUT1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiREFURVJBTkdFXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVSQU5HRVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUllcblx0fSxcblx0XCJTUEVDSUZJQ01PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIlNQRUNJRklDTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJUT0RBWVwiOiB7XG5cdFx0XCJrZXlcIjogXCJUT0RBWVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZRlJPTVRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZRlJPTVRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiWUVTVEVSREFZXCI6IHtcblx0XHRcImtleVwiOiBcIllFU1RFUkRBWVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPTU9SUk9XXCI6IHtcblx0XHRcImtleVwiOiBcIlRPTU9SUk9XXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVERBWVNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVERBWVNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNXRUVLXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNXRUVLXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9XRUVLX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFdFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFdFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1NcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFdFRUtTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFdFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFdFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1NcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFdFRUtTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU01PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVE1PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVE1PTlRIU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVE1PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVE1PTlRIU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTUVVBUlRFUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTUVVBUlRFUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RRVUFSVEVSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRRVUFSVEVSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIxXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIxXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjJcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSM1wiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSM1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVI0XCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVI0XCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1lFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUWUVBUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUWUVBUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRUFSVE9EQVRFXCI6IHtcblx0XHRcImtleVwiOiBcIllFQVJUT0RBVEVcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFVE9ZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVUT1lFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fVxufTtcblxuZnVuY3Rpb24gX2dldERhdGVSYW5nZU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZTogYW55KSB7XG5cdGNvbnN0IHNEYXRlUmFuZ2UgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVfUkFOR0VcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVJBTkdFXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuQlQsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoW14hXS4qKSBcXFxcLSAoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSAtIHsxfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGYsIChPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGVSYW5nZSxcblx0XHR0b2tlblRleHQ6IHNEYXRlUmFuZ2UsXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCIsXG5cdFx0dmFsaWRhdGU6IGZ1bmN0aW9uKGFWYWx1ZXM6IGFueSwgb1R5cGU6IGFueSkge1xuXHRcdFx0aWYgKGFWYWx1ZXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJEYXRlIFJhbmdlIG11c3QgaGF2ZSB0d28gdmFsdWVzXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzBdKTtcblx0XHRcdFx0Y29uc3QgdG9EYXRlID0gbmV3IERhdGUoYVZhbHVlc1sxXSk7XG5cdFx0XHRcdGlmIChmcm9tRGF0ZS5nZXRUaW1lKCkgPiB0b0RhdGUuZ2V0VGltZSgpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRnJvbSBEYXRlIFNob3VsZCBCZSBMZXNzIFRoYW4gVG8gRGF0ZVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0T3BlcmF0b3IucHJvdG90eXBlLnZhbGlkYXRlLmFwcGx5KHRoaXMsIFthVmFsdWVzLCBvVHlwZV0pO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGUgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkVRLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGUsXG5cdFx0dG9rZW5UZXh0OiBzRGF0ZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRnJvbSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfRlJPTVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJGUk9NXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuR0UsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRnJvbSxcblx0XHR0b2tlblRleHQ6IHNGcm9tLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0VG9PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzVG8gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1RPXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIlRPXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuTEUsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzVG8sXG5cdFx0dG9rZW5UZXh0OiBzVG8sXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbjogYW55LCBhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0aWYgKCFhT3BlcmF0b3JDb25maWd1cmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbiA9IEFycmF5LmlzQXJyYXkoYU9wZXJhdG9yQ29uZmlndXJhdGlvbikgPyBhT3BlcmF0b3JDb25maWd1cmF0aW9uIDogW2FPcGVyYXRvckNvbmZpZ3VyYXRpb25dO1xuXHRsZXQgYlJlc3VsdDtcblxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uLnNvbWUoZnVuY3Rpb24ob09wZXJhdG9yQ29uZmlndXJhdGlvbjogYW55KSB7XG5cdFx0bGV0IGo7XG5cdFx0aWYgKCFvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGgpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBzVmFsdWUgPSBvT3BlcmF0aW9uW29PcGVyYXRvckNvbmZpZ3VyYXRpb24ucGF0aF07XG5cdFx0Y29uc3QgYkV4Y2x1ZGUgPSBvT3BlcmF0b3JDb25maWd1cmF0aW9uLmV4Y2x1ZGUgfHwgZmFsc2U7XG5cdFx0bGV0IGFPcGVyYXRvclZhbHVlcztcblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmNvbnRhaW5zICYmIHNWYWx1ZSkge1xuXHRcdFx0YU9wZXJhdG9yVmFsdWVzID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucy5zcGxpdChcIixcIik7XG5cdFx0XHRiUmVzdWx0ID0gYkV4Y2x1ZGU7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgYU9wZXJhdG9yVmFsdWVzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIWJFeGNsdWRlICYmIHNWYWx1ZS5pbmRleE9mKGFPcGVyYXRvclZhbHVlc1tqXSkgPiAtMSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzICYmIHNWYWx1ZSkge1xuXHRcdFx0YU9wZXJhdG9yVmFsdWVzID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5lcXVhbHMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlID09PSBhT3BlcmF0b3JWYWx1ZXNbal0pIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIWJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IHRydWU7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0pO1xuXHRyZXR1cm4gYlJlc3VsdDtcbn1cbmNvbnN0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyA9IHtcblx0Ly8gRXh0ZW5kaW5nIG9wZXJhdG9ycyBmb3IgU2VtYXRpYyBEYXRlIENvbnRyb2xcblx0YWRkU2VtYW50aWNEYXRlT3BlcmF0b3JzOiBmdW5jdGlvbigpIHtcblx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXHRcdEZpbHRlck9wZXJhdG9yVXRpbC5hZGRPcGVyYXRvcihfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXRGcm9tT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXRUb09wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZSkpO1xuXHR9LFxuXHRnZXRTdXBwb3J0ZWRPcGVyYXRpb25zOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gYVN1cHBvcnRlZE9wZXJhdGlvbnM7XG5cdH0sXG5cdGdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhtU2VtYW50aWNEYXRlT3BlcmF0aW9ucyk7XG5cdH0sXG5cdC8vIFRPRE86IFdvdWxkIG5lZWQgdG8gY2hlY2sgd2l0aCBNREMgZm9yIHJlbW92ZU9wZXJhdG9yIG1ldGhvZFxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5cdHJlbW92ZVNlbWFudGljRGF0ZU9wZXJhdG9yczogZnVuY3Rpb24oKSB7fSxcblx0Ly8gVG8gZmlsdGVyIG9wZXJhdG9ycyBiYXNlZCBvbiBtYW5pZmVzdCBhT3BlcmF0b3JDb25maWd1cmF0aW9uIHNldHRpbmdzXG5cdGdldEZpbHRlck9wZXJhdGlvbnM6IGZ1bmN0aW9uKGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGNvbnN0IGFPcGVyYXRpb25zID0gW107XG5cdFx0Zm9yIChjb25zdCBuIGluIG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBvT3BlcmF0aW9uID0gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnNbbl07XG5cdFx0XHRpZiAoX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uLCBhT3BlcmF0b3JDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRhT3BlcmF0aW9ucy5wdXNoKG9PcGVyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYU9wZXJhdGlvbnMubWFwKGZ1bmN0aW9uKG9PcGVyYXRpb246IGFueSkge1xuXHRcdFx0cmV0dXJuIG9PcGVyYXRpb24ua2V5O1xuXHRcdH0pO1xuXHR9LFxuXHRoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBmdW5jdGlvbihvQ29uZGl0aW9uczogYW55KSB7XG5cdFx0Y29uc3QgYVNlbWFudGljRGF0ZU9wcyA9IHRoaXMuZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucygpO1xuXHRcdGZvciAoY29uc3QgbiBpbiBvQ29uZGl0aW9ucykge1xuXHRcdFx0Y29uc3QgYUZpbHRlckNvbmR0aW9uID0gb0NvbmRpdGlvbnNbbl07XG5cdFx0XHRjb25zdCBvU2VtYW50aWNPcGVyYXRvciA9IGFGaWx0ZXJDb25kdGlvbi5maW5kKGZ1bmN0aW9uKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYVNlbWFudGljRGF0ZU9wcy5pbmRleE9mKG9Db25kaXRpb24ub3BlcmF0b3IpID4gLTE7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvU2VtYW50aWNPcGVyYXRvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG4iXX0=
349
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiRmlsdGVyT3BlcmF0b3JVdGlsIiwiYWRkT3BlcmF0b3IiLCJnZXRTdXBwb3J0ZWRPcGVyYXRpb25zIiwiZ2V0U2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJnZXRGaWx0ZXJPcGVyYXRpb25zIiwiYU9wZXJhdGlvbnMiLCJuIiwicHVzaCIsIm1hcCIsImtleSIsImhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnMiLCJvQ29uZGl0aW9ucyIsImFTZW1hbnRpY0RhdGVPcHMiLCJhRmlsdGVyQ29uZHRpb24iLCJvU2VtYW50aWNPcGVyYXRvciIsImZpbmQiLCJvQ29uZGl0aW9uIiwib3BlcmF0b3IiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFLQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLElBQWpCLEVBQXVCLFdBQXZCLENBQTdCO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsY0FBOUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1DLHlCQUF5QixHQUFHLGtCQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLG1CQUFuQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLGVBQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxhQUE3QjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLGVBQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsWUFBNUI7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxrQkFBbEM7QUFDQSxNQUFNQywwQkFBMEIsR0FBRyxtQkFBbkM7QUFDQSxNQUFNQyw0QkFBNEIsR0FBRyxxQkFBckM7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxrQkFBbEM7QUFDQSxNQUFNQyx1QkFBNEIsR0FBRztBQUNwQyxZQUFRO0FBQ1AsYUFBTyxNQURBO0FBRVAsa0JBQVliO0FBRkwsS0FENEI7QUFLcEMsWUFBUTtBQUNQLGFBQU8sTUFEQTtBQUVQLGtCQUFZQTtBQUZMLEtBTDRCO0FBU3BDLFVBQU07QUFDTCxhQUFPLElBREY7QUFFTCxrQkFBWUE7QUFGUCxLQVQ4QjtBQWFwQyxpQkFBYTtBQUNaLGFBQU8sV0FESztBQUVaLGtCQUFZRztBQUZBLEtBYnVCO0FBaUJwQyxxQkFBaUI7QUFDaEIsYUFBTyxlQURTO0FBRWhCLGtCQUFZQztBQUZJLEtBakJtQjtBQXFCcEMsYUFBUztBQUNSLGFBQU8sT0FEQztBQUVSLGtCQUFZSDtBQUZKLEtBckIyQjtBQXlCcEMsbUJBQWU7QUFDZCxhQUFPLGFBRE87QUFFZCxrQkFBWUM7QUFGRSxLQXpCcUI7QUE2QnBDLGlCQUFhO0FBQ1osYUFBTyxXQURLO0FBRVosa0JBQVlEO0FBRkEsS0E3QnVCO0FBaUNwQyxnQkFBWTtBQUNYLGFBQU8sVUFESTtBQUVYLGtCQUFZQTtBQUZELEtBakN3QjtBQXFDcEMsZ0JBQVk7QUFDWCxhQUFPLFVBREk7QUFFWCxrQkFBWUM7QUFGRCxLQXJDd0I7QUF5Q3BDLGdCQUFZO0FBQ1gsYUFBTyxVQURJO0FBRVgsa0JBQVlBO0FBRkQsS0F6Q3dCO0FBNkNwQyxnQkFBWTtBQUNYLGFBQU8sVUFESTtBQUVYLGtCQUFZRztBQUZELEtBN0N3QjtBQWlEcEMsZ0JBQVk7QUFDWCxhQUFPLFVBREk7QUFFWCxrQkFBWUE7QUFGRCxLQWpEd0I7QUFxRHBDLGlCQUFhO0FBQ1osYUFBTyxXQURLO0FBRVosa0JBQVlJO0FBRkEsS0FyRHVCO0FBeURwQyxnQkFBWTtBQUNYLGFBQU8sVUFESTtBQUVYLGtCQUFZSjtBQUZELEtBekR3QjtBQTZEcEMsaUJBQWE7QUFDWixhQUFPLFdBREs7QUFFWixrQkFBWUk7QUFGQSxLQTdEdUI7QUFpRXBDLGlCQUFhO0FBQ1osYUFBTyxXQURLO0FBRVosa0JBQVlIO0FBRkEsS0FqRXVCO0FBcUVwQyxpQkFBYTtBQUNaLGFBQU8sV0FESztBQUVaLGtCQUFZQTtBQUZBLEtBckV1QjtBQXlFcEMsa0JBQWM7QUFDYixhQUFPLFlBRE07QUFFYixrQkFBWUk7QUFGQyxLQXpFc0I7QUE2RXBDLGlCQUFhO0FBQ1osYUFBTyxXQURLO0FBRVosa0JBQVlKO0FBRkEsS0E3RXVCO0FBaUZwQyxrQkFBYztBQUNiLGFBQU8sWUFETTtBQUViLGtCQUFZSTtBQUZDLEtBakZzQjtBQXFGcEMsbUJBQWU7QUFDZCxhQUFPLGFBRE87QUFFZCxrQkFBWUg7QUFGRSxLQXJGcUI7QUF5RnBDLG1CQUFlO0FBQ2QsYUFBTyxhQURPO0FBRWQsa0JBQVlBO0FBRkUsS0F6RnFCO0FBNkZwQyxvQkFBZ0I7QUFDZixhQUFPLGNBRFE7QUFFZixrQkFBWUk7QUFGRyxLQTdGb0I7QUFpR3BDLG1CQUFlO0FBQ2QsYUFBTyxhQURPO0FBRWQsa0JBQVlKO0FBRkUsS0FqR3FCO0FBcUdwQyxvQkFBZ0I7QUFDZixhQUFPLGNBRFE7QUFFZixrQkFBWUk7QUFGRyxLQXJHb0I7QUF5R3BDLGdCQUFZO0FBQ1gsYUFBTyxVQURJO0FBRVgsa0JBQVlKO0FBRkQsS0F6R3dCO0FBNkdwQyxnQkFBWTtBQUNYLGFBQU8sVUFESTtBQUVYLGtCQUFZQTtBQUZELEtBN0d3QjtBQWlIcEMsZ0JBQVk7QUFDWCxhQUFPLFVBREk7QUFFWCxrQkFBWUE7QUFGRCxLQWpId0I7QUFxSHBDLGdCQUFZO0FBQ1gsYUFBTyxVQURJO0FBRVgsa0JBQVlBO0FBRkQsS0FySHdCO0FBeUhwQyxnQkFBWTtBQUNYLGFBQU8sVUFESTtBQUVYLGtCQUFZQztBQUZELEtBekh3QjtBQTZIcEMsZ0JBQVk7QUFDWCxhQUFPLFVBREk7QUFFWCxrQkFBWUE7QUFGRCxLQTdId0I7QUFpSXBDLGlCQUFhO0FBQ1osYUFBTyxXQURLO0FBRVosa0JBQVlJO0FBRkEsS0FqSXVCO0FBcUlwQyxnQkFBWTtBQUNYLGFBQU8sVUFESTtBQUVYLGtCQUFZSjtBQUZELEtBckl3QjtBQXlJcEMsaUJBQWE7QUFDWixhQUFPLFdBREs7QUFFWixrQkFBWUk7QUFGQSxLQXpJdUI7QUE2SXBDLGtCQUFjO0FBQ2IsYUFBTyxZQURNO0FBRWIsa0JBQVlKO0FBRkMsS0E3SXNCO0FBaUpwQyxrQkFBYztBQUNiLGFBQU8sWUFETTtBQUViLGtCQUFZQTtBQUZDO0FBakpzQixHQUFyQzs7QUF1SkEsV0FBU00scUJBQVQsQ0FBK0JDLGVBQS9CLEVBQXFEO0FBQ3BELFFBQU1DLFVBQVUsR0FBR0QsZUFBZSxJQUFJQSxlQUFlLENBQUNFLE9BQWhCLENBQXdCLGNBQXhCLENBQXRDO0FBQ0EsV0FBTyxJQUFJQyxRQUFKLENBQWE7QUFDbkJDLE1BQUFBLElBQUksRUFBRSxXQURhO0FBRW5CQyxNQUFBQSxjQUFjLEVBQUVDLGFBQWEsQ0FBQ0MsRUFGWDtBQUduQkMsTUFBQUEsVUFBVSxFQUFFLHVDQUhPO0FBSW5CQyxNQUFBQSxXQUFXLEVBQUUseUJBSk07QUFLbkJDLE1BQUFBLFVBQVUsRUFBRSxDQUFFUCxRQUFELENBQWtCUSxTQUFsQixDQUE0QkMsSUFBN0IsRUFBb0NULFFBQUQsQ0FBa0JRLFNBQWxCLENBQTRCQyxJQUEvRCxDQUxPO0FBTW5CQyxNQUFBQSxRQUFRLEVBQUVaLFVBTlM7QUFPbkJhLE1BQUFBLFNBQVMsRUFBRWIsVUFQUTtBQVFuQmMsTUFBQUEsY0FBYyxFQUFFLEVBUkc7QUFTbkJDLE1BQUFBLFFBQVEsRUFBRSxVQUFVQyxPQUFWLEVBQXdCQyxLQUF4QixFQUFvQztBQUM3QyxZQUFJRCxPQUFPLENBQUNFLE1BQVIsR0FBaUIsQ0FBckIsRUFBd0I7QUFDdkIsZ0JBQU0sSUFBSUMsaUJBQUosQ0FBc0IsaUNBQXRCLENBQU47QUFDQSxTQUZELE1BRU87QUFDTixjQUFNQyxRQUFRLEdBQUcsSUFBSUMsSUFBSixDQUFTTCxPQUFPLENBQUMsQ0FBRCxDQUFoQixDQUFqQjtBQUNBLGNBQU1NLE1BQU0sR0FBRyxJQUFJRCxJQUFKLENBQVNMLE9BQU8sQ0FBQyxDQUFELENBQWhCLENBQWY7O0FBQ0EsY0FBSUksUUFBUSxDQUFDRyxPQUFULEtBQXFCRCxNQUFNLENBQUNDLE9BQVAsRUFBekIsRUFBMkM7QUFDMUMsa0JBQU0sSUFBSUosaUJBQUosQ0FBc0IsdUNBQXRCLENBQU47QUFDQTtBQUNEOztBQUNEakIsUUFBQUEsUUFBUSxDQUFDc0IsU0FBVCxDQUFtQlQsUUFBbkIsQ0FBNEJVLEtBQTVCLENBQWtDLElBQWxDLEVBQXdDLENBQUNULE9BQUQsRUFBVUMsS0FBVixDQUF4QztBQUNBO0FBcEJrQixLQUFiLENBQVA7QUFzQkE7O0FBRUQsV0FBU1MsZ0JBQVQsQ0FBMEIzQixlQUExQixFQUFnRDtBQUMvQyxRQUFNNEIsS0FBSyxHQUFHNUIsZUFBZSxJQUFJQSxlQUFlLENBQUNFLE9BQWhCLENBQXdCLFFBQXhCLENBQWpDO0FBQ0EsV0FBTyxJQUFJQyxRQUFKLENBQWE7QUFDbkJDLE1BQUFBLElBQUksRUFBRSxNQURhO0FBRW5CQyxNQUFBQSxjQUFjLEVBQUVDLGFBQWEsQ0FBQ3VCLEVBRlg7QUFHbkJyQixNQUFBQSxVQUFVLEVBQUUsMEJBSE87QUFJbkJDLE1BQUFBLFdBQVcsRUFBRSxtQkFKTTtBQUtuQkMsTUFBQUEsVUFBVSxFQUFFLENBQUVQLFFBQUQsQ0FBa0JRLFNBQWxCLENBQTRCQyxJQUE3QixDQUxPO0FBTW5CQyxNQUFBQSxRQUFRLEVBQUVlLEtBTlM7QUFPbkJkLE1BQUFBLFNBQVMsRUFBRWMsS0FQUTtBQVFuQmIsTUFBQUEsY0FBYyxFQUFFO0FBUkcsS0FBYixDQUFQO0FBVUE7O0FBRUQsV0FBU2UsZ0JBQVQsQ0FBMEI5QixlQUExQixFQUFnRDtBQUMvQyxRQUFNK0IsS0FBSyxHQUFHL0IsZUFBZSxJQUFJQSxlQUFlLENBQUNFLE9BQWhCLENBQXdCLFFBQXhCLENBQWpDO0FBQ0EsV0FBTyxJQUFJQyxRQUFKLENBQWE7QUFDbkJDLE1BQUFBLElBQUksRUFBRSxNQURhO0FBRW5CQyxNQUFBQSxjQUFjLEVBQUVDLGFBQWEsQ0FBQzBCLEVBRlg7QUFHbkJ4QixNQUFBQSxVQUFVLEVBQUUsMEJBSE87QUFJbkJDLE1BQUFBLFdBQVcsRUFBRSxtQkFKTTtBQUtuQkMsTUFBQUEsVUFBVSxFQUFFLENBQUVQLFFBQUQsQ0FBa0JRLFNBQWxCLENBQTRCQyxJQUE3QixDQUxPO0FBTW5CQyxNQUFBQSxRQUFRLEVBQUVrQixLQU5TO0FBT25CakIsTUFBQUEsU0FBUyxFQUFFaUIsS0FQUTtBQVFuQmhCLE1BQUFBLGNBQWMsRUFBRTtBQVJHLEtBQWIsQ0FBUDtBQVVBOztBQUVELFdBQVNrQixjQUFULENBQXdCakMsZUFBeEIsRUFBOEM7QUFDN0MsUUFBTWtDLEdBQUcsR0FBR2xDLGVBQWUsSUFBSUEsZUFBZSxDQUFDRSxPQUFoQixDQUF3QixNQUF4QixDQUEvQjtBQUNBLFdBQU8sSUFBSUMsUUFBSixDQUFhO0FBQ25CQyxNQUFBQSxJQUFJLEVBQUUsSUFEYTtBQUVuQkMsTUFBQUEsY0FBYyxFQUFFQyxhQUFhLENBQUM2QixFQUZYO0FBR25CM0IsTUFBQUEsVUFBVSxFQUFFLDBCQUhPO0FBSW5CQyxNQUFBQSxXQUFXLEVBQUUsbUJBSk07QUFLbkJDLE1BQUFBLFVBQVUsRUFBRSxDQUFFUCxRQUFELENBQWtCUSxTQUFsQixDQUE0QkMsSUFBN0IsQ0FMTztBQU1uQkMsTUFBQUEsUUFBUSxFQUFFcUIsR0FOUztBQU9uQnBCLE1BQUFBLFNBQVMsRUFBRW9CLEdBUFE7QUFRbkJuQixNQUFBQSxjQUFjLEVBQUU7QUFSRyxLQUFiLENBQVA7QUFVQTs7QUFFRCxXQUFTcUIsZ0JBQVQsQ0FBMEJDLFVBQTFCLEVBQTJDQyxzQkFBM0MsRUFBd0U7QUFDdkUsUUFBSSxDQUFDQSxzQkFBTCxFQUE2QjtBQUM1QixhQUFPLElBQVA7QUFDQTs7QUFDREEsSUFBQUEsc0JBQXNCLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixzQkFBZCxJQUF3Q0Esc0JBQXhDLEdBQWlFLENBQUNBLHNCQUFELENBQTFGO0FBQ0EsUUFBSUcsT0FBSjtBQUVBSCxJQUFBQSxzQkFBc0IsQ0FBQ0ksSUFBdkIsQ0FBNEIsVUFBVUMsc0JBQVYsRUFBdUM7QUFDbEUsVUFBSUMsQ0FBSjs7QUFDQSxVQUFJLENBQUNELHNCQUFzQixDQUFDRSxJQUE1QixFQUFrQztBQUNqQyxlQUFPLEtBQVA7QUFDQTs7QUFFRCxVQUFNQyxNQUFNLEdBQUdULFVBQVUsQ0FBQ00sc0JBQXNCLENBQUNFLElBQXhCLENBQXpCO0FBQ0EsVUFBTUUsUUFBUSxHQUFHSixzQkFBc0IsQ0FBQ0ssT0FBdkIsSUFBa0MsS0FBbkQ7QUFDQSxVQUFJQyxlQUFKOztBQUVBLFVBQUlOLHNCQUFzQixDQUFDTyxRQUF2QixJQUFtQ0osTUFBdkMsRUFBK0M7QUFDOUNHLFFBQUFBLGVBQWUsR0FBR04sc0JBQXNCLENBQUNPLFFBQXZCLENBQWdDQyxLQUFoQyxDQUFzQyxHQUF0QyxDQUFsQjtBQUNBVixRQUFBQSxPQUFPLEdBQUdNLFFBQVY7O0FBQ0EsYUFBS0gsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHSyxlQUFlLENBQUM5QixNQUFoQyxFQUF3Q3lCLENBQUMsRUFBekMsRUFBNkM7QUFDNUMsY0FBSUcsUUFBUSxJQUFJRCxNQUFNLENBQUNNLE9BQVAsQ0FBZUgsZUFBZSxDQUFDTCxDQUFELENBQTlCLElBQXFDLENBQUMsQ0FBdEQsRUFBeUQ7QUFDeERILFlBQUFBLE9BQU8sR0FBRyxLQUFWO0FBQ0EsbUJBQU8sSUFBUDtBQUNBLFdBSEQsTUFHTyxJQUFJLENBQUNNLFFBQUQsSUFBYUQsTUFBTSxDQUFDTSxPQUFQLENBQWVILGVBQWUsQ0FBQ0wsQ0FBRCxDQUE5QixJQUFxQyxDQUFDLENBQXZELEVBQTBEO0FBQ2hFSCxZQUFBQSxPQUFPLEdBQUcsSUFBVjtBQUNBLG1CQUFPLElBQVA7QUFDQTtBQUNEO0FBQ0Q7O0FBRUQsVUFBSUUsc0JBQXNCLENBQUNVLE1BQXZCLElBQWlDUCxNQUFyQyxFQUE2QztBQUM1Q0csUUFBQUEsZUFBZSxHQUFHTixzQkFBc0IsQ0FBQ1UsTUFBdkIsQ0FBOEJGLEtBQTlCLENBQW9DLEdBQXBDLENBQWxCO0FBQ0FWLFFBQUFBLE9BQU8sR0FBR00sUUFBVjs7QUFDQSxhQUFLSCxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUdLLGVBQWUsQ0FBQzlCLE1BQWhDLEVBQXdDeUIsQ0FBQyxFQUF6QyxFQUE2QztBQUM1QyxjQUFJRyxRQUFRLElBQUlELE1BQU0sS0FBS0csZUFBZSxDQUFDTCxDQUFELENBQTFDLEVBQStDO0FBQzlDSCxZQUFBQSxPQUFPLEdBQUcsS0FBVjtBQUNBLG1CQUFPLElBQVA7QUFDQSxXQUhELE1BR08sSUFBSSxDQUFDTSxRQUFELElBQWFELE1BQU0sS0FBS0csZUFBZSxDQUFDTCxDQUFELENBQTNDLEVBQWdEO0FBQ3RESCxZQUFBQSxPQUFPLEdBQUcsSUFBVjtBQUNBLG1CQUFPLElBQVA7QUFDQTtBQUNEO0FBQ0Q7O0FBRUQsYUFBTyxLQUFQO0FBQ0EsS0F2Q0Q7QUF3Q0EsV0FBT0EsT0FBUDtBQUNBOztBQUNELE1BQU1hLHFCQUFxQixHQUFHO0FBQzdCO0FBQ0FDLElBQUFBLHdCQUF3QixFQUFFLFlBQVk7QUFDckMsVUFBTXZELGVBQWUsR0FBSXdELElBQUQsQ0FBaUJDLHdCQUFqQixDQUEwQyxhQUExQyxDQUF4QjtBQUNBQyxNQUFBQSxrQkFBa0IsQ0FBQ0MsV0FBbkIsQ0FBK0I1RCxxQkFBcUIsQ0FBQ0MsZUFBRCxDQUFwRDtBQUNBMEQsTUFBQUEsa0JBQWtCLENBQUNDLFdBQW5CLENBQStCaEMsZ0JBQWdCLENBQUMzQixlQUFELENBQS9DO0FBQ0EwRCxNQUFBQSxrQkFBa0IsQ0FBQ0MsV0FBbkIsQ0FBK0I3QixnQkFBZ0IsQ0FBQzlCLGVBQUQsQ0FBL0M7QUFDQTBELE1BQUFBLGtCQUFrQixDQUFDQyxXQUFuQixDQUErQjFCLGNBQWMsQ0FBQ2pDLGVBQUQsQ0FBN0M7QUFDQSxLQVI0QjtBQVM3QjRELElBQUFBLHNCQUFzQixFQUFFLFlBQVk7QUFDbkMsYUFBTzVFLG9CQUFQO0FBQ0EsS0FYNEI7QUFZN0I2RSxJQUFBQSx5QkFBeUIsRUFBRSxZQUFZO0FBQ3RDLGFBQU9DLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZakUsdUJBQVosQ0FBUDtBQUNBLEtBZDRCO0FBZTdCO0FBQ0E7QUFDQWtFLElBQUFBLDJCQUEyQixFQUFFLFlBQVksQ0FBRSxDQWpCZDtBQWtCN0I7QUFDQUMsSUFBQUEsbUJBQW1CLEVBQUUsVUFBVTNCLHNCQUFWLEVBQXVDO0FBQzNELFVBQU00QixXQUFXLEdBQUcsRUFBcEI7O0FBQ0EsV0FBSyxJQUFNQyxDQUFYLElBQWdCckUsdUJBQWhCLEVBQXlDO0FBQ3hDLFlBQU11QyxVQUFVLEdBQUd2Qyx1QkFBdUIsQ0FBQ3FFLENBQUQsQ0FBMUM7O0FBQ0EsWUFBSS9CLGdCQUFnQixDQUFDQyxVQUFELEVBQWFDLHNCQUFiLENBQXBCLEVBQTBEO0FBQ3pENEIsVUFBQUEsV0FBVyxDQUFDRSxJQUFaLENBQWlCL0IsVUFBakI7QUFDQTtBQUNEOztBQUNELGFBQU82QixXQUFXLENBQUNHLEdBQVosQ0FBZ0IsVUFBVWhDLFVBQVYsRUFBMkI7QUFDakQsZUFBT0EsVUFBVSxDQUFDaUMsR0FBbEI7QUFDQSxPQUZNLENBQVA7QUFHQSxLQTlCNEI7QUErQjdCQyxJQUFBQSx5QkFBeUIsRUFBRSxVQUFVQyxXQUFWLEVBQTRCO0FBQ3RELFVBQU1DLGdCQUFnQixHQUFHLEtBQUtaLHlCQUFMLEVBQXpCOztBQUNBLFdBQUssSUFBTU0sQ0FBWCxJQUFnQkssV0FBaEIsRUFBNkI7QUFDNUIsWUFBTUUsZUFBZSxHQUFHRixXQUFXLENBQUNMLENBQUQsQ0FBbkM7QUFDQSxZQUFNUSxpQkFBaUIsR0FBR0QsZUFBZSxDQUFDRSxJQUFoQixDQUFxQixVQUFVQyxVQUFWLEVBQTJCO0FBQ3pFLGlCQUFPSixnQkFBZ0IsQ0FBQ3JCLE9BQWpCLENBQXlCeUIsVUFBVSxDQUFDQyxRQUFwQyxJQUFnRCxDQUFDLENBQXhEO0FBQ0EsU0FGeUIsQ0FBMUI7O0FBR0EsWUFBSUgsaUJBQUosRUFBdUI7QUFDdEIsaUJBQU8sS0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0E7QUEzQzRCLEdBQTlCO1NBOENlckIscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3JVdGlsIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9GaWx0ZXJPcGVyYXRvclV0aWxcIjtcbmltcG9ydCBPcGVyYXRvciBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vT3BlcmF0b3JcIjtcbmltcG9ydCBNb2RlbE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IENvcmVFeCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuY29uc3QgYVN1cHBvcnRlZE9wZXJhdGlvbnMgPSBbXCJEQVRFXCIsIFwiRlJPTVwiLCBcIlRPXCIsIFwiREFURVJBTkdFXCJdO1xuY29uc3QgRFlOQU1JQ19EQVRFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVcIjtcbmNvbnN0IEZJWEVEX0RBVEVfQ0FURUdPUlkgPSBcIkZJWEVELkRBVEVcIjtcbmNvbnN0IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuREFURS5JTlRcIjtcbmNvbnN0IERZTkFNSUNfREFURVJBTkdFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVSQU5HRVwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USFwiO1xuY29uc3QgRklYRURfV0VFS19DQVRFR09SWSA9IFwiRklYRUQuV0VFS1wiO1xuY29uc3QgRklYRURfTU9OVEhfQ0FURUdPUlkgPSBcIkZJWEVELk1PTlRIXCI7XG5jb25zdCBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZID0gXCJGSVhFRC5RVUFSVEVSXCI7XG5jb25zdCBGSVhFRF9ZRUFSX0NBVEVHT1JZID0gXCJGSVhFRC5ZRUFSXCI7XG5jb25zdCBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLldFRUsuSU5UXCI7XG5jb25zdCBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USC5JTlRcIjtcbmNvbnN0IERZTkFNSUNfUVVBUlRFUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuUVVBUlRFUi5JTlRcIjtcbmNvbnN0IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuWUVBUi5JTlRcIjtcbmNvbnN0IG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBhbnkgPSB7XG5cdFwiREFURVwiOiB7XG5cdFx0XCJrZXlcIjogXCJEQVRFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJGUk9NXCI6IHtcblx0XHRcImtleVwiOiBcIkZST01cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFUkFOR0VcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVJBTkdFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWVxuXHR9LFxuXHRcIlNQRUNJRklDTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiU1BFQ0lGSUNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9EQVlGUk9NVE9cIjoge1xuXHRcdFwia2V5XCI6IFwiVE9EQVlGUk9NVE9cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRVNURVJEQVlcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVTVEVSREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9NT1JST1dcIjoge1xuXHRcdFwia2V5XCI6IFwiVE9NT1JST1dcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFREQVlTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFREQVlTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1dFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1dFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU01PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJORVhUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjFcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjFcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSMlwiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSMlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIzXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIzXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjRcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjRcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJUSElTWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIllFQVJUT0RBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVBUlRPREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkRBVEVUT1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVRPWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9XG59O1xuXG5mdW5jdGlvbiBfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGVSYW5nZSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfREFURV9SQU5HRVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJEQVRFUkFOR0VcIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5CVCxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKChbXiFdLiopIFxcXFwtICguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9IC0gezF9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZiwgKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRGF0ZVJhbmdlLFxuXHRcdHRva2VuVGV4dDogc0RhdGVSYW5nZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIixcblx0XHR2YWxpZGF0ZTogZnVuY3Rpb24gKGFWYWx1ZXM6IGFueSwgb1R5cGU6IGFueSkge1xuXHRcdFx0aWYgKGFWYWx1ZXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJEYXRlIFJhbmdlIG11c3QgaGF2ZSB0d28gdmFsdWVzXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzBdKTtcblx0XHRcdFx0Y29uc3QgdG9EYXRlID0gbmV3IERhdGUoYVZhbHVlc1sxXSk7XG5cdFx0XHRcdGlmIChmcm9tRGF0ZS5nZXRUaW1lKCkgPiB0b0RhdGUuZ2V0VGltZSgpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRnJvbSBEYXRlIFNob3VsZCBCZSBMZXNzIFRoYW4gVG8gRGF0ZVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0T3BlcmF0b3IucHJvdG90eXBlLnZhbGlkYXRlLmFwcGx5KHRoaXMsIFthVmFsdWVzLCBvVHlwZV0pO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXREYXRlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGUgPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0RBVEVcIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiREFURVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkVRLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0RhdGUsXG5cdFx0dG9rZW5UZXh0OiBzRGF0ZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRnJvbSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfRlJPTVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJGUk9NXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuR0UsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRnJvbSxcblx0XHR0b2tlblRleHQ6IHNGcm9tLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0VG9PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzVG8gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1RPXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIlRPXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuTEUsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzVG8sXG5cdFx0dG9rZW5UZXh0OiBzVG8sXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbjogYW55LCBhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0aWYgKCFhT3BlcmF0b3JDb25maWd1cmF0aW9uKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbiA9IEFycmF5LmlzQXJyYXkoYU9wZXJhdG9yQ29uZmlndXJhdGlvbikgPyBhT3BlcmF0b3JDb25maWd1cmF0aW9uIDogW2FPcGVyYXRvckNvbmZpZ3VyYXRpb25dO1xuXHRsZXQgYlJlc3VsdDtcblxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uLnNvbWUoZnVuY3Rpb24gKG9PcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGxldCBqO1xuXHRcdGlmICghb09wZXJhdG9yQ29uZmlndXJhdGlvbi5wYXRoKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc1ZhbHVlID0gb09wZXJhdGlvbltvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGhdO1xuXHRcdGNvbnN0IGJFeGNsdWRlID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5leGNsdWRlIHx8IGZhbHNlO1xuXHRcdGxldCBhT3BlcmF0b3JWYWx1ZXM7XG5cblx0XHRpZiAob09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uY29udGFpbnMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlLmluZGV4T2YoYU9wZXJhdG9yVmFsdWVzW2pdKSA+IC0xKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmVxdWFscyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzLnNwbGl0KFwiLFwiKTtcblx0XHRcdGJSZXN1bHQgPSBiRXhjbHVkZTtcblx0XHRcdGZvciAoaiA9IDA7IGogPCBhT3BlcmF0b3JWYWx1ZXMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0aWYgKGJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUgPT09IGFPcGVyYXRvclZhbHVlc1tqXSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KTtcblx0cmV0dXJuIGJSZXN1bHQ7XG59XG5jb25zdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSB7XG5cdC8vIEV4dGVuZGluZyBvcGVyYXRvcnMgZm9yIFNlbWF0aWMgRGF0ZSBDb250cm9sXG5cdGFkZFNlbWFudGljRGF0ZU9wZXJhdG9yczogZnVuY3Rpb24gKCkge1xuXHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IChDb3JlIGFzIENvcmVFeCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlUmFuZ2VPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldERhdGVPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldFRvT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdH0sXG5cdGdldFN1cHBvcnRlZE9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gYVN1cHBvcnRlZE9wZXJhdGlvbnM7XG5cdH0sXG5cdGdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMobVNlbWFudGljRGF0ZU9wZXJhdGlvbnMpO1xuXHR9LFxuXHQvLyBUT0RPOiBXb3VsZCBuZWVkIHRvIGNoZWNrIHdpdGggTURDIGZvciByZW1vdmVPcGVyYXRvciBtZXRob2Rcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuXHRyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uICgpIHt9LFxuXHQvLyBUbyBmaWx0ZXIgb3BlcmF0b3JzIGJhc2VkIG9uIG1hbmlmZXN0IGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gc2V0dGluZ3Ncblx0Z2V0RmlsdGVyT3BlcmF0aW9uczogZnVuY3Rpb24gKGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGNvbnN0IGFPcGVyYXRpb25zID0gW107XG5cdFx0Zm9yIChjb25zdCBuIGluIG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKSB7XG5cdFx0XHRjb25zdCBvT3BlcmF0aW9uID0gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnNbbl07XG5cdFx0XHRpZiAoX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uLCBhT3BlcmF0b3JDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRhT3BlcmF0aW9ucy5wdXNoKG9PcGVyYXRpb24pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYU9wZXJhdGlvbnMubWFwKGZ1bmN0aW9uIChvT3BlcmF0aW9uOiBhbnkpIHtcblx0XHRcdHJldHVybiBvT3BlcmF0aW9uLmtleTtcblx0XHR9KTtcblx0fSxcblx0aGFzU2VtYW50aWNEYXRlT3BlcmF0aW9uczogZnVuY3Rpb24gKG9Db25kaXRpb25zOiBhbnkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNEYXRlT3BzID0gdGhpcy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBuIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRjb25zdCBhRmlsdGVyQ29uZHRpb24gPSBvQ29uZGl0aW9uc1tuXTtcblx0XHRcdGNvbnN0IG9TZW1hbnRpY09wZXJhdG9yID0gYUZpbHRlckNvbmR0aW9uLmZpbmQoZnVuY3Rpb24gKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYVNlbWFudGljRGF0ZU9wcy5pbmRleE9mKG9Db25kaXRpb24ub3BlcmF0b3IpID4gLTE7XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvU2VtYW50aWNPcGVyYXRvcikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG4iXX0=
@@ -3,7 +3,7 @@ import FilterOperatorUtil from "sap/ui/mdc/condition/FilterOperatorUtil";
3
3
  import Operator from "sap/ui/mdc/condition/Operator";
4
4
  import ModelOperator from "sap/ui/model/FilterOperator";
5
5
  import ValidateException from "sap/ui/model/ValidateException";
6
- import { CoreEx } from "types/extension_types";
6
+ import type { CoreEx } from "types/extension_types";
7
7
 
8
8
  const aSupportedOperations = ["DATE", "FROM", "TO", "DATERANGE"];
9
9
  const DYNAMIC_DATE_CATEGORY = "DYNAMIC.DATE";
@@ -181,7 +181,7 @@ function _getDateRangeOperator(oResourceBundle: any) {
181
181
  longText: sDateRange,
182
182
  tokenText: sDateRange,
183
183
  additionalInfo: "",
184
- validate: function(aValues: any, oType: any) {
184
+ validate: function (aValues: any, oType: any) {
185
185
  if (aValues.length < 2) {
186
186
  throw new ValidateException("Date Range must have two values");
187
187
  } else {
@@ -245,7 +245,7 @@ function _filterOperation(oOperation: any, aOperatorConfiguration: any) {
245
245
  aOperatorConfiguration = Array.isArray(aOperatorConfiguration) ? aOperatorConfiguration : [aOperatorConfiguration];
246
246
  let bResult;
247
247
 
248
- aOperatorConfiguration.some(function(oOperatorConfiguration: any) {
248
+ aOperatorConfiguration.some(function (oOperatorConfiguration: any) {
249
249
  let j;
250
250
  if (!oOperatorConfiguration.path) {
251
251
  return false;
@@ -289,24 +289,24 @@ function _filterOperation(oOperation: any, aOperatorConfiguration: any) {
289
289
  }
290
290
  const SemanticDateOperators = {
291
291
  // Extending operators for Sematic Date Control
292
- addSemanticDateOperators: function() {
292
+ addSemanticDateOperators: function () {
293
293
  const oResourceBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
294
294
  FilterOperatorUtil.addOperator(_getDateRangeOperator(oResourceBundle));
295
295
  FilterOperatorUtil.addOperator(_getDateOperator(oResourceBundle));
296
296
  FilterOperatorUtil.addOperator(_getFromOperator(oResourceBundle));
297
297
  FilterOperatorUtil.addOperator(_getToOperator(oResourceBundle));
298
298
  },
299
- getSupportedOperations: function() {
299
+ getSupportedOperations: function () {
300
300
  return aSupportedOperations;
301
301
  },
302
- getSemanticDateOperations: function() {
302
+ getSemanticDateOperations: function () {
303
303
  return Object.keys(mSemanticDateOperations);
304
304
  },
305
305
  // TODO: Would need to check with MDC for removeOperator method
306
306
  // eslint-disable-next-line @typescript-eslint/no-empty-function
307
- removeSemanticDateOperators: function() {},
307
+ removeSemanticDateOperators: function () {},
308
308
  // To filter operators based on manifest aOperatorConfiguration settings
309
- getFilterOperations: function(aOperatorConfiguration: any) {
309
+ getFilterOperations: function (aOperatorConfiguration: any) {
310
310
  const aOperations = [];
311
311
  for (const n in mSemanticDateOperations) {
312
312
  const oOperation = mSemanticDateOperations[n];
@@ -314,15 +314,15 @@ const SemanticDateOperators = {
314
314
  aOperations.push(oOperation);
315
315
  }
316
316
  }
317
- return aOperations.map(function(oOperation: any) {
317
+ return aOperations.map(function (oOperation: any) {
318
318
  return oOperation.key;
319
319
  });
320
320
  },
321
- hasSemanticDateOperations: function(oConditions: any) {
321
+ hasSemanticDateOperations: function (oConditions: any) {
322
322
  const aSemanticDateOps = this.getSemanticDateOperations();
323
323
  for (const n in oConditions) {
324
324
  const aFilterCondtion = oConditions[n];
325
- const oSemanticOperator = aFilterCondtion.find(function(oCondition: any) {
325
+ const oSemanticOperator = aFilterCondtion.find(function (oCondition: any) {
326
326
  return aSemanticDateOps.indexOf(oCondition.operator) > -1;
327
327
  });
328
328
  if (oSemanticOperator) {
@@ -32,7 +32,7 @@ sap.ui.define(["sap/base/Log"], function (Log) {
32
32
 
33
33
  if (this._isPathForSemantic(sTechnicalPath) && oSemanticObjectInformation.semanticKeys) {
34
34
  var aSemanticKeys = oSemanticObjectInformation.semanticKeys,
35
- oEntityType = oMetaModel.getObject("/" + oMetaModel.getObject("/" + sEntitySetName).$Type);
35
+ oEntityType = oMetaModel.getObject("/".concat(oMetaModel.getObject("/".concat(sEntitySetName)).$Type));
36
36
 
37
37
  try {
38
38
  var sSemanticKeysPart = aSemanticKeys.map(function (oSemanticKey) {
@@ -40,7 +40,7 @@ sap.ui.define(["sap/base/Log"], function (Log) {
40
40
  var sKeyValue = oContext.getProperty(sPropertyPath);
41
41
 
42
42
  if (sKeyValue === undefined || sKeyValue === null) {
43
- throw new Error("Couldn't resolve semantic key value for " + sPropertyPath);
43
+ throw new Error("Couldn't resolve semantic key value for ".concat(sPropertyPath));
44
44
  } else {
45
45
  if (oEntityType[sPropertyPath].$Type === "Edm.String") {
46
46
  sKeyValue = "'".concat(encodeURIComponent(sKeyValue), "'");
@@ -73,4 +73,4 @@ sap.ui.define(["sap/base/Log"], function (Log) {
73
73
  };
74
74
  return SemanticKeyHelper;
75
75
  }, false);
76
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljS2V5SGVscGVyLnRzIl0sIm5hbWVzIjpbIlNlbWFudGljS2V5SGVscGVyIiwiZ2V0U2VtYW50aWNLZXlzIiwib01ldGFNb2RlbCIsInNFbnRpdHlTZXROYW1lIiwiZ2V0T2JqZWN0IiwiZ2V0U2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbiIsIm9TZW1hbnRpY09iamVjdCIsImFTZW1hbnRpY0tleXMiLCJzZW1hbnRpY09iamVjdCIsInNlbWFudGljS2V5cyIsImdldFNlbWFudGljUGF0aCIsIm9Db250ZXh0IiwiYlN0cmljdCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZ2V0TWV0YUNvbnRleHQiLCJnZXRQYXRoIiwib1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24iLCJzVGVjaG5pY2FsUGF0aCIsInNTZW1hbnRpY1BhdGgiLCJpc0EiLCJpc1JlbGF0aXZlIiwiZ2V0SGVhZGVyQ29udGV4dCIsIl9pc1BhdGhGb3JTZW1hbnRpYyIsIm9FbnRpdHlUeXBlIiwiJFR5cGUiLCJzU2VtYW50aWNLZXlzUGFydCIsIm1hcCIsIm9TZW1hbnRpY0tleSIsInNQcm9wZXJ0eVBhdGgiLCIkUHJvcGVydHlQYXRoIiwic0tleVZhbHVlIiwiZ2V0UHJvcGVydHkiLCJ1bmRlZmluZWQiLCJFcnJvciIsImVuY29kZVVSSUNvbXBvbmVudCIsImxlbmd0aCIsImpvaW4iLCJlIiwiTG9nIiwiaW5mbyIsInNQYXRoIiwidGVzdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUNBLE1BQU1BLGlCQUFpQixHQUFHO0FBQ3pCQyxJQUFBQSxlQUFlLEVBQUUsVUFBU0MsVUFBVCxFQUFxQ0MsY0FBckMsRUFBNkQ7QUFDN0UsYUFBT0QsVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixrREFBUDtBQUNBLEtBSHdCO0FBSXpCRSxJQUFBQSw0QkFBNEIsRUFBRSxVQUFTSCxVQUFULEVBQXFDQyxjQUFyQyxFQUE2RDtBQUMxRixVQUFNRyxlQUFlLEdBQUdK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QyxJQUF6QixDQUE4QkQsS0FBOUIsQ0FBUDtBQUNBO0FBbEV3QixHQUExQjtTQXFFZXpDLGlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbmNvbnN0IFNlbWFudGljS2V5SGVscGVyID0ge1xuXHRnZXRTZW1hbnRpY0tleXM6IGZ1bmN0aW9uKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY0tleWApO1xuXHR9LFxuXHRnZXRTZW1hbnRpY09iamVjdEluZm9ybWF0aW9uOiBmdW5jdGlvbihvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCwgc0VudGl0eVNldE5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IG9TZW1hbnRpY09iamVjdCA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdGApO1xuXHRcdGNvbnN0IGFTZW1hbnRpY0tleXMgPSB0aGlzLmdldFNlbWFudGljS2V5cyhvTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbWFudGljT2JqZWN0OiBvU2VtYW50aWNPYmplY3QsXG5cdFx0XHRzZW1hbnRpY0tleXM6IGFTZW1hbnRpY0tleXNcblx0XHR9O1xuXHR9LFxuXHRnZXRTZW1hbnRpY1BhdGg6IGZ1bmN0aW9uKG9Db250ZXh0OiBhbnksIGJTdHJpY3Q6IGJvb2xlYW4gPSBmYWxzZSkge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0c0VudGl0eVNldE5hbWUgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KG9Db250ZXh0LmdldFBhdGgoKSkuZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIiksXG5cdFx0XHRvU2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbiA9IHRoaXMuZ2V0U2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbihvTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZSk7XG5cdFx0bGV0IHNUZWNobmljYWxQYXRoLCBzU2VtYW50aWNQYXRoO1xuXG5cdFx0aWYgKG9Db250ZXh0LmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpICYmIG9Db250ZXh0LmlzUmVsYXRpdmUoKSkge1xuXHRcdFx0c1RlY2huaWNhbFBhdGggPSBvQ29udGV4dC5nZXRIZWFkZXJDb250ZXh0KCkuZ2V0UGF0aCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzVGVjaG5pY2FsUGF0aCA9IG9Db250ZXh0LmdldFBhdGgoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5faXNQYXRoRm9yU2VtYW50aWMoc1RlY2huaWNhbFBhdGgpICYmIG9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uLnNlbWFudGljS2V5cykge1xuXHRcdFx0Y29uc3QgYVNlbWFudGljS2V5cyA9IG9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uLnNlbWFudGljS2V5cyxcblx0XHRcdFx0b0VudGl0eVR5cGUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9cIiArIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiICsgc0VudGl0eVNldE5hbWUpLiRUeXBlKTtcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc1NlbWFudGljS2V5c1BhcnQgPSBhU2VtYW50aWNLZXlzXG5cdFx0XHRcdFx0Lm1hcChmdW5jdGlvbihvU2VtYW50aWNLZXk6IGFueSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IG9TZW1hbnRpY0tleS4kUHJvcGVydHlQYXRoO1xuXHRcdFx0XHRcdFx0bGV0IHNLZXlWYWx1ZSA9IG9Db250ZXh0LmdldFByb3BlcnR5KHNQcm9wZXJ0eVBhdGgpO1xuXG5cdFx0XHRcdFx0XHRpZiAoc0tleVZhbHVlID09PSB1bmRlZmluZWQgfHwgc0tleVZhbHVlID09PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IHJlc29sdmUgc2VtYW50aWMga2V5IHZhbHVlIGZvciBcIiArIHNQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKG9FbnRpdHlUeXBlW3NQcm9wZXJ0eVBhdGhdLiRUeXBlID09PSBcIkVkbS5TdHJpbmdcIikge1xuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAnJHtlbmNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlKX0nYDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYVNlbWFudGljS2V5cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gU2V2ZXJhbCBzZW1hbnRpYyBrZXlzIC0tPiBwYXRoIHNob3VsZCBiZSBlbnRpdHlTZXQoa2V5MT12YWx1ZTEsIGtleTI9dmFsdWUyLCAuLi4pXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtlZXAgZW50aXR5U2V0KGtleVZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAke3NQcm9wZXJ0eVBhdGh9PSR7c0tleVZhbHVlfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNLZXlWYWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5qb2luKFwiLFwiKTtcblxuXHRcdFx0XHRzU2VtYW50aWNQYXRoID0gYC8ke3NFbnRpdHlTZXROYW1lfSgke3NTZW1hbnRpY0tleXNQYXJ0fSlgO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRMb2cuaW5mbyhlIGFzIGFueSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGJTdHJpY3QgPyBzU2VtYW50aWNQYXRoIDogc1NlbWFudGljUGF0aCB8fCBzVGVjaG5pY2FsUGF0aDtcblx0fSxcblxuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblx0Ly8gSU5URVJOQUwgTUVUSE9EU1xuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXHRfaXNQYXRoRm9yU2VtYW50aWM6IGZ1bmN0aW9uKHNQYXRoOiBhbnkpIHtcblx0XHQvLyBPbmx5IHBhdGggb24gcm9vdCBvYmplY3RzIGFsbG93IHNlbWFudGljIGtleXMsIGkuZS4gc1BhdGggPSB4eHgoeXl5KVxuXHRcdHJldHVybiAvXlteXFwoXFwpXStcXChbXlxcKFxcKV0rXFwpJC8udGVzdChzUGF0aCk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlbWFudGljS2V5SGVscGVyO1xuIl19
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljS2V5SGVscGVyLnRzIl0sIm5hbWVzIjpbIlNlbWFudGljS2V5SGVscGVyIiwiZ2V0U2VtYW50aWNLZXlzIiwib01ldGFNb2RlbCIsInNFbnRpdHlTZXROYW1lIiwiZ2V0T2JqZWN0IiwiZ2V0U2VtYW50aWNPYmplY3RJbmZvcm1hdGlvbiIsIm9TZW1hbnRpY09iamVjdCIsImFTZW1hbnRpY0tleXMiLCJzZW1hbnRpY09iamVjdCIsInNlbWFudGljS2V5cyIsImdldFNlbWFudGljUGF0aCIsIm9Db250ZXh0IiwiYlN0cmljdCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZ2V0TWV0YUNvbnRleHQiLCJnZXRQYXRoIiwib1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24iLCJzVGVjaG5pY2FsUGF0aCIsInNTZW1hbnRpY1BhdGgiLCJpc0EiLCJpc1JlbGF0aXZlIiwiZ2V0SGVhZGVyQ29udGV4dCIsIl9pc1BhdGhGb3JTZW1hbnRpYyIsIm9FbnRpdHlUeXBlIiwiJFR5cGUiLCJzU2VtYW50aWNLZXlzUGFydCIsIm1hcCIsIm9TZW1hbnRpY0tleSIsInNQcm9wZXJ0eVBhdGgiLCIkUHJvcGVydHlQYXRoIiwic0tleVZhbHVlIiwiZ2V0UHJvcGVydHkiLCJ1bmRlZmluZWQiLCJFcnJvciIsImVuY29kZVVSSUNvbXBvbmVudCIsImxlbmd0aCIsImpvaW4iLCJlIiwiTG9nIiwiaW5mbyIsInNQYXRoIiwidGVzdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUNBLE1BQU1BLGlCQUFpQixHQUFHO0FBQ3pCQyxJQUFBQSxlQUFlLEVBQUUsVUFBVUMsVUFBVixFQUFzQ0MsY0FBdEMsRUFBOEQ7QUFDOUUsYUFBT0QsVUFBVSxDQUFDRSxTQUFYLFlBQXlCRCxjQUF6QixrREFBUDtBQUNBLEtBSHdCO0FBSXpCRSxJQUFBQSw0QkFBNEIsRUFBRSxVQUFVSCxVQUFWLEVBQXNDQyxjQUF0QyxFQUE4RDtBQUMzRixVQUFNRyxlQUFlLEdBQUdK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S0FBOUIsQ0FBUDtBQUNBO0FBbEV3QixHQUExQjtTQXFFZXpDLGlCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuY29uc3QgU2VtYW50aWNLZXlIZWxwZXIgPSB7XG5cdGdldFNlbWFudGljS2V5czogZnVuY3Rpb24gKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsLCBzRW50aXR5U2V0TmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX0vQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY0tleWApO1xuXHR9LFxuXHRnZXRTZW1hbnRpY09iamVjdEluZm9ybWF0aW9uOiBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsIHNFbnRpdHlTZXROYW1lOiBzdHJpbmcpIHtcblx0XHRjb25zdCBvU2VtYW50aWNPYmplY3QgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0VudGl0eVNldE5hbWV9L0Bjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VtYW50aWNPYmplY3RgKTtcblx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gdGhpcy5nZXRTZW1hbnRpY0tleXMob01ldGFNb2RlbCwgc0VudGl0eVNldE5hbWUpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW1hbnRpY09iamVjdDogb1NlbWFudGljT2JqZWN0LFxuXHRcdFx0c2VtYW50aWNLZXlzOiBhU2VtYW50aWNLZXlzXG5cdFx0fTtcblx0fSxcblx0Z2V0U2VtYW50aWNQYXRoOiBmdW5jdGlvbiAob0NvbnRleHQ6IGFueSwgYlN0cmljdDogYm9vbGVhbiA9IGZhbHNlKSB7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRzRW50aXR5U2V0TmFtZSA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQob0NvbnRleHQuZ2V0UGF0aCgpKS5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSxcblx0XHRcdG9TZW1hbnRpY09iamVjdEluZm9ybWF0aW9uID0gdGhpcy5nZXRTZW1hbnRpY09iamVjdEluZm9ybWF0aW9uKG9NZXRhTW9kZWwsIHNFbnRpdHlTZXROYW1lKTtcblx0XHRsZXQgc1RlY2huaWNhbFBhdGgsIHNTZW1hbnRpY1BhdGg7XG5cblx0XHRpZiAob0NvbnRleHQuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikgJiYgb0NvbnRleHQuaXNSZWxhdGl2ZSgpKSB7XG5cdFx0XHRzVGVjaG5pY2FsUGF0aCA9IG9Db250ZXh0LmdldEhlYWRlckNvbnRleHQoKS5nZXRQYXRoKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNUZWNobmljYWxQYXRoID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9pc1BhdGhGb3JTZW1hbnRpYyhzVGVjaG5pY2FsUGF0aCkgJiYgb1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24uc2VtYW50aWNLZXlzKSB7XG5cdFx0XHRjb25zdCBhU2VtYW50aWNLZXlzID0gb1NlbWFudGljT2JqZWN0SW5mb3JtYXRpb24uc2VtYW50aWNLZXlzLFxuXHRcdFx0XHRvRW50aXR5VHlwZSA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHtvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0VudGl0eVNldE5hbWV9YCkuJFR5cGV9YCk7XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHNTZW1hbnRpY0tleXNQYXJ0ID0gYVNlbWFudGljS2V5c1xuXHRcdFx0XHRcdC5tYXAoZnVuY3Rpb24gKG9TZW1hbnRpY0tleTogYW55KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzUHJvcGVydHlQYXRoID0gb1NlbWFudGljS2V5LiRQcm9wZXJ0eVBhdGg7XG5cdFx0XHRcdFx0XHRsZXQgc0tleVZhbHVlID0gb0NvbnRleHQuZ2V0UHJvcGVydHkoc1Byb3BlcnR5UGF0aCk7XG5cblx0XHRcdFx0XHRcdGlmIChzS2V5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBzS2V5VmFsdWUgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCByZXNvbHZlIHNlbWFudGljIGtleSB2YWx1ZSBmb3IgJHtzUHJvcGVydHlQYXRofWApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKG9FbnRpdHlUeXBlW3NQcm9wZXJ0eVBhdGhdLiRUeXBlID09PSBcIkVkbS5TdHJpbmdcIikge1xuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAnJHtlbmNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlKX0nYDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYVNlbWFudGljS2V5cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gU2V2ZXJhbCBzZW1hbnRpYyBrZXlzIC0tPiBwYXRoIHNob3VsZCBiZSBlbnRpdHlTZXQoa2V5MT12YWx1ZTEsIGtleTI9dmFsdWUyLCAuLi4pXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtlZXAgZW50aXR5U2V0KGtleVZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGAke3NQcm9wZXJ0eVBhdGh9PSR7c0tleVZhbHVlfWA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNLZXlWYWx1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5qb2luKFwiLFwiKTtcblxuXHRcdFx0XHRzU2VtYW50aWNQYXRoID0gYC8ke3NFbnRpdHlTZXROYW1lfSgke3NTZW1hbnRpY0tleXNQYXJ0fSlgO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRMb2cuaW5mbyhlIGFzIGFueSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGJTdHJpY3QgPyBzU2VtYW50aWNQYXRoIDogc1NlbWFudGljUGF0aCB8fCBzVGVjaG5pY2FsUGF0aDtcblx0fSxcblxuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblx0Ly8gSU5URVJOQUwgTUVUSE9EU1xuXHQvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXHRfaXNQYXRoRm9yU2VtYW50aWM6IGZ1bmN0aW9uIChzUGF0aDogYW55KSB7XG5cdFx0Ly8gT25seSBwYXRoIG9uIHJvb3Qgb2JqZWN0cyBhbGxvdyBzZW1hbnRpYyBrZXlzLCBpLmUuIHNQYXRoID0geHh4KHl5eSlcblx0XHRyZXR1cm4gL15bXlxcKFxcKV0rXFwoW15cXChcXCldK1xcKSQvLnRlc3Qoc1BhdGgpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZW1hbnRpY0tleUhlbHBlcjtcbiJdfQ==
@@ -1,11 +1,11 @@
1
1
  import Log from "sap/base/Log";
2
- import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
2
+ import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
3
3
 
4
4
  const SemanticKeyHelper = {
5
- getSemanticKeys: function(oMetaModel: ODataMetaModel, sEntitySetName: string) {
5
+ getSemanticKeys: function (oMetaModel: ODataMetaModel, sEntitySetName: string) {
6
6
  return oMetaModel.getObject(`/${sEntitySetName}/@com.sap.vocabularies.Common.v1.SemanticKey`);
7
7
  },
8
- getSemanticObjectInformation: function(oMetaModel: ODataMetaModel, sEntitySetName: string) {
8
+ getSemanticObjectInformation: function (oMetaModel: ODataMetaModel, sEntitySetName: string) {
9
9
  const oSemanticObject = oMetaModel.getObject(`/${sEntitySetName}/@com.sap.vocabularies.Common.v1.SemanticObject`);
10
10
  const aSemanticKeys = this.getSemanticKeys(oMetaModel, sEntitySetName);
11
11
  return {
@@ -13,7 +13,7 @@ const SemanticKeyHelper = {
13
13
  semanticKeys: aSemanticKeys
14
14
  };
15
15
  },
16
- getSemanticPath: function(oContext: any, bStrict: boolean = false) {
16
+ getSemanticPath: function (oContext: any, bStrict: boolean = false) {
17
17
  const oMetaModel = oContext.getModel().getMetaModel(),
18
18
  sEntitySetName = oMetaModel.getMetaContext(oContext.getPath()).getObject("@sapui.name"),
19
19
  oSemanticObjectInformation = this.getSemanticObjectInformation(oMetaModel, sEntitySetName);
@@ -27,16 +27,16 @@ const SemanticKeyHelper = {
27
27
 
28
28
  if (this._isPathForSemantic(sTechnicalPath) && oSemanticObjectInformation.semanticKeys) {
29
29
  const aSemanticKeys = oSemanticObjectInformation.semanticKeys,
30
- oEntityType = oMetaModel.getObject("/" + oMetaModel.getObject("/" + sEntitySetName).$Type);
30
+ oEntityType = oMetaModel.getObject(`/${oMetaModel.getObject(`/${sEntitySetName}`).$Type}`);
31
31
 
32
32
  try {
33
33
  const sSemanticKeysPart = aSemanticKeys
34
- .map(function(oSemanticKey: any) {
34
+ .map(function (oSemanticKey: any) {
35
35
  const sPropertyPath = oSemanticKey.$PropertyPath;
36
36
  let sKeyValue = oContext.getProperty(sPropertyPath);
37
37
 
38
38
  if (sKeyValue === undefined || sKeyValue === null) {
39
- throw new Error("Couldn't resolve semantic key value for " + sPropertyPath);
39
+ throw new Error(`Couldn't resolve semantic key value for ${sPropertyPath}`);
40
40
  } else {
41
41
  if (oEntityType[sPropertyPath].$Type === "Edm.String") {
42
42
  sKeyValue = `'${encodeURIComponent(sKeyValue)}'`;
@@ -64,7 +64,7 @@ const SemanticKeyHelper = {
64
64
  // INTERNAL METHODS
65
65
  // ==============================
66
66
 
67
- _isPathForSemantic: function(sPath: any) {
67
+ _isPathForSemantic: function (sPath: any) {
68
68
  // Only path on root objects allow semantic keys, i.e. sPath = xxx(yyy)
69
69
  return /^[^\(\)]+\([^\(\)]+\)$/.test(sPath);
70
70
  }
@@ -14,8 +14,8 @@ sap.ui.define([], function () {
14
14
  /**
15
15
  * Copy for the Core.isValid function to be independent.
16
16
  *
17
- * @param {string} vValue String to validate
18
- * @returns {boolean} Whether the value is valid or not
17
+ * @param vValue String to validate
18
+ * @returns Whether the value is valid or not
19
19
  */
20
20
  function isValid(vValue) {
21
21
  return /^([A-Za-z_][-A-Za-z0-9_.:]*)$/.test(vValue);
@@ -24,7 +24,7 @@ sap.ui.define([], function () {
24
24
  function replaceSpecialChars(sId) {
25
25
  if (sId.indexOf(" ") >= 0) {
26
26
  // Log.error(sId + " - Spaces are not allowed in ID parts.");
27
- throw sId + " - Spaces are not allowed in ID parts.";
27
+ throw "".concat(sId, " - Spaces are not allowed in ID parts.");
28
28
  }
29
29
 
30
30
  sId = sId.replace(/^\/|^@|^#|^\*/, "") // remove special characters from the beginning of the string
@@ -102,8 +102,8 @@ sap.ui.define([], function () {
102
102
  *
103
103
  * Currently supported metadata context is Collection/Reference facet identified by 'Facet' key.
104
104
  *
105
- * @param {Array<(string|object)>} aStableIdParts Array of strings and objects
106
- * @returns {string} Stable Id constructed from the provided parameters
105
+ * @param aStableIdParts Array of strings and objects
106
+ * @returns Stable Id constructed from the provided parameters
107
107
  */
108
108
 
109
109
 
@@ -173,9 +173,9 @@ sap.ui.define([], function () {
173
173
  }
174
174
 
175
175
  if (typeof oDataField.Action == "string") {
176
- sIdPart += "::" + oDataField.Action;
176
+ sIdPart += "::".concat(oDataField.Action);
177
177
  } else if (oDataField.Action && oDataField.Action.$Path) {
178
- sIdPart += "::" + oDataField.Action.$Path;
178
+ sIdPart += "::".concat(oDataField.Action.$Path);
179
179
  }
180
180
 
181
181
  if (oDataField["RequiresContext"] && oDataField["RequiresContext"] == true) {
@@ -207,7 +207,7 @@ sap.ui.define([], function () {
207
207
  sIdPart = "DataFieldWithAction::";
208
208
 
209
209
  if (oDataField.Value) {
210
- sIdPart += getStableIdPartFromValue(oDataField.Value) + "::";
210
+ sIdPart += "".concat(getStableIdPartFromValue(oDataField.Value), "::");
211
211
  }
212
212
 
213
213
  sIdPart += oDataField.Action;
@@ -218,7 +218,7 @@ sap.ui.define([], function () {
218
218
  return prepareId(sIdPart);
219
219
  } else if (oDataField.$Type && oDataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation") {
220
220
  sIdPart = "DataFieldWithIntentBasedNavigation::";
221
- sIdPart += getStableIdPartFromValue(oDataField.Value) + "::";
221
+ sIdPart += "".concat(getStableIdPartFromValue(oDataField.Value), "::");
222
222
  sIdPart += getStableIdPartFromSemanticObjectAndAction(oDataField);
223
223
  return prepareId(sIdPart);
224
224
  } else if (oDataField.$Type && oDataField.$Type === "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath") {
@@ -226,7 +226,7 @@ sap.ui.define([], function () {
226
226
  sIdPart += getStableIdPartFromValue(oDataField.Value);
227
227
 
228
228
  if (oDataField.Target && oDataField.Target["$NavigationPropertyPath"]) {
229
- sIdPart += "::" + oDataField.Target["$NavigationPropertyPath"];
229
+ sIdPart += "::".concat(oDataField.Target["$NavigationPropertyPath"]);
230
230
  }
231
231
 
232
232
  return prepareId(sIdPart);
@@ -253,11 +253,11 @@ sap.ui.define([], function () {
253
253
  return sId;
254
254
  } else {
255
255
  // Log.error(sId + " - Stable Id could not be generated due to insufficient information.");
256
- throw sId + " - Stable Id could not be generated due to insufficient information.";
256
+ throw "".concat(sId, " - Stable Id could not be generated due to insufficient information.");
257
257
  }
258
258
  };
259
259
 
260
260
  _exports.prepareId = prepareId;
261
261
  return _exports;
262
262
  }, false);
263
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YWJsZUlkSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzVmFsaWQiLCJ2VmFsdWUiLCJ0ZXN0IiwicmVwbGFjZVNwZWNpYWxDaGFycyIsInNJZCIsImluZGV4T2YiLCJyZXBsYWNlIiwic2xpY2UiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlIiwib1ZhbHVlIiwiJFBhdGgiLCJwYXRoIiwiJEFwcGx5IiwiJEZ1bmN0aW9uIiwic1BhdGhDb25jYXQiLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJhU3RhYmxlSWRQYXJ0cyIsInNTdGFibGVJZCIsInZFbGVtZW50Iiwic0ZhY2V0SWQiLCJGYWNldCIsIiRUeXBlIiwiSUQiLCJUYXJnZXQiLCIkQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsIkxhYmVsIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInByZXBhcmVJZCIsImdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbiIsIm9EYXRhRmllbGQiLCJzSWRQYXJ0IiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJtUGFyYW1ldGVyIiwiVmFsdWUiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwidG9TdHJpbmciLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFTQSxPQUFULENBQWlCQyxNQUFqQixFQUFpQztBQUNoQyxXQUFPLGdDQUFnQ0MsSUFBaEMsQ0FBcUNELE1BQXJDLENBQVA7QUFDQTs7QUFFTSxXQUFTRSxtQkFBVCxDQUE2QkMsR0FBN0IsRUFBMEM7QUFDaEQsUUFBSUEsR0FBRyxDQUFDQyxPQUFKLENBQVksR0FBWixLQUFvQixDQUF4QixFQUEyQjtBQUMxQjtBQUNBLFlBQU1ELEdBQUcsR0FBRyx3Q0FBWjtBQUNBOztBQUNEQSxJQUFBQSxHQUFHLEdBQUdB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QSxRQUFJSixPQUFPLENBQUNJLEdBQUQsQ0FBWCxFQUFrQjtBQUNqQixhQUFPQSxHQUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ047QUFDQSxZQUFNQSxHQUFHLEdBQUcsc0VBQVo7QUFDQTtBQUNELEdBUk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG4vKipcbiAqIFN0YWJsZSBJZCBoZWxwZXJcbiAqL1xuXG4vKipcbiAqIENvcHkgZm9yIHRoZSBDb3JlLmlzVmFsaWQgZnVuY3Rpb24gdG8gYmUgaW5kZXBlbmRlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZWYWx1ZSBTdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSB2YWx1ZSBpcyB2YWxpZCBvciBub3RcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZCh2VmFsdWU6IHN0cmluZykge1xuXHRyZXR1cm4gL14oW0EtWmEtel9dWy1BLVphLXowLTlfLjpdKikkLy50ZXN0KHZWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlU3BlY2lhbENoYXJzKHNJZDogc3RyaW5nKSB7XG5cdGlmIChzSWQuaW5kZXhPZihcIiBcIikgPj0gMCkge1xuXHRcdC8vIExvZy5lcnJvcihzSWQgKyBcIiAtIFNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gSUQgcGFydHMuXCIpO1xuXHRcdHRocm93IHNJZCArIFwiIC0gU3BhY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBJRCBwYXJ0cy5cIjtcblx0fVxuXHRzSWQgPSBzSWRcblx0XHQucmVwbGFjZSgvXlxcL3xeQHxeI3xeXFwqLywgXCJcIikgLy8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZ1xuXHRcdC5yZXBsYWNlKC9cXC8kfEAkfCMkfFxcKiQvLCBcIlwiKSAvLyByZW1vdmUgc3BlY2lhbCBjaGFyYWN0ZXJzIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nXG5cdFx0LnJlcGxhY2UoL1xcL3xAfFxcKHxcXCl8I3xcXCovZywgXCI6OlwiKTsgLy8gcmVwbGFjZSBzcGVjaWFsIGNoYXJhY3RlcnMgd2l0aCA6OlxuXG5cdC8vIFJlcGxhY2UgZG91YmxlIG9jY3VycmVuY2VzIG9mIHRoZSBzZXBhcmF0b3Igd2l0aCBhIHNpbmdsZSBzZXBhcmF0b3Jcblx0d2hpbGUgKHNJZC5pbmRleE9mKFwiOjo6OlwiKSA+IC0xKSB7XG5cdFx0c0lkID0gc0lkLnJlcGxhY2UoXCI6Ojo6XCIsIFwiOjpcIik7XG5cdH1cblxuXHQvLyBJZiB0aGVyZSBpcyBhIDo6IGF0IHRoZSBlbmQgb2YgdGhlIElEIHJlbW92ZSBpdFxuXHRpZiAoc0lkLnNsaWNlKC0yKSA9PSBcIjo6XCIpIHtcblx0XHRzSWQgPSBzSWQuc2xpY2UoMCwgLTIpO1xuXHR9XG5cblx0cmV0dXJuIHNJZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTmFtZXNwYWNlcyhzSWQ6IHN0cmluZykge1xuXHRzSWQgPSBzSWQucmVwbGFjZShcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlwiLCBcIlwiKTtcblx0c0lkID0gc0lkLnJlcGxhY2UoXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLlwiLCBcIlwiKTtcblx0cmV0dXJuIHNJZDtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9WYWx1ZTogYW55KSB7XG5cdGlmICgob1ZhbHVlICYmIG9WYWx1ZS4kUGF0aCkgfHwgb1ZhbHVlLnBhdGgpIHtcblx0XHRyZXR1cm4gb1ZhbHVlLiRQYXRoIHx8IG9WYWx1ZS5wYXRoO1xuXHR9XG5cblx0aWYgKG9WYWx1ZSAmJiBvVmFsdWUuJEFwcGx5ICYmIG9WYWx1ZS4kRnVuY3Rpb24gPT09IFwib2RhdGEuY29uY2F0XCIpIHtcblx0XHRsZXQgc1BhdGhDb25jYXQgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb1ZhbHVlLiRBcHBseS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKG9WYWx1ZS4kQXBwbHlbaV0uJFBhdGgpIHtcblx0XHRcdFx0aWYgKHNQYXRoQ29uY2F0KSB7XG5cdFx0XHRcdFx0c1BhdGhDb25jYXQgKz0gXCI6OlwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNQYXRoQ29uY2F0ICs9IG9WYWx1ZS4kQXBwbHlbaV0uJFBhdGg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzUGF0aENvbmNhdDtcblx0fVxuXG5cdGlmIChvVmFsdWUpIHtcblx0XHRyZXR1cm4gcmVwbGFjZVNwZWNpYWxDaGFycyhvVmFsdWUucmVwbGFjZSgvIC9nLCBcIl9cIikpO1xuXHR9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIFN0YWJsZSBJZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVyc1xuICpcbiAqIHBhcmFtZXRlcnMgYXJlIGNvbWJpbmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUgcHJvdmlkZWQgYW5kIGFyZSBzZXBhcmF0ZWQgYnkgJzo6J1xuICogc3BlY2lhbCBjaGFyYWN0ZXJzIChALCAvLCAjKSBhcmUgcmVwbGFjZWQgYnkgJzo6JyBpZiB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBTdGFibGUgSWQgYW5kIHJlbW92ZWQgYWxsIHRvZ2V0aGVyIGlmIHRoZSBhcmUgcGFydCBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZFxuICogRXhhbXBsZTpcbiAqIC8vIEdldCBDb25zdGFudCBTdGFibGUgSWRcbiAqIGdlbmVyYXRlKFsnU3RhYmxlJywgJ0lkJ10pIHdvdWxkIHJlc3VsdCBpbiAnU3RhYmxlOjpJZCcgYXMgdGhlIFN0YWJsZSBJZFxuICpcbiAqIC8vIEdldCBQYXJhbWVydGVyaXplZCBTdGFibGUgSWQgZnJvbSBhIENvbGxlY3Rpb24gRmFjZXRcbiAqIHZhciBvUGFyYW1ldGVyID0ge1xuICogXHRcdEZhY2V0OiB7XG4gKiBcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIixcbiAqIFx0XHRcdExhYmVsOiBcIkdlbmVyYWwgSW5mbyBGYWNldCBMYWJlbFwiLFxuICogXHRcdFx0SUQ6ICdHZW5lcmFsSW5mb3JtYXRpb24nXG4gKiBcdFx0fVxuICogfTtcbiAqIGdlbmVyYXRlKFsnc2VjdGlvbicsIG9QYXJhbWV0ZXJdKSB3b3VsZCByZXN1bHQgaW4gJ3NlY3Rpb246OkdlbmVyYWxJbmZvcm1hdGlvbicgYXMgdGhlIFN0YWJsZSBJZFxuICpcbiAqIG9QYXJhbWV0ZXIgaXMgYW5kIG9iamVjdCBvZiBNZXRhZGF0YSBjb250ZXh0cyBhdmFpbGFibGUgd2hpbGUgdGVtcGxhdGluZyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgU3RhYmxlIElEcy5cbiAqIG9QYXJhbWV0ZXIgb2JqZWN0IGtleXMgZGVmaW5lIHRoZSB0eXBlIG9mIG1ldGFkYXRhIGNvbnRleHQuXG4gKiBGb3IgZXhhbXBsZSwgdGhlIGtleSAnRmFjZXQnaW4gdGhlIGFib3ZlIGV4YW1wbGUgdGVsbHMgdGhlIFN0YWJsZSBJZCBIZWxwZXIgdGhhdCB0aGUgY29udGV4dCBpcyBhIEZhY2V0IChjb3VsZCBiZSByZWZlcmVuY2Ugb3IgY29sbGVjdGlvbiBmYWNldClcbiAqXG4gKiBDdXJyZW50bHkgc3VwcG9ydGVkIG1ldGFkYXRhIGNvbnRleHQgaXMgQ29sbGVjdGlvbi9SZWZlcmVuY2UgZmFjZXQgaWRlbnRpZmllZCBieSAnRmFjZXQnIGtleS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PChzdHJpbmd8b2JqZWN0KT59IGFTdGFibGVJZFBhcnRzIEFycmF5IG9mIHN0cmluZ3MgYW5kIG9iamVjdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0YWJsZSBJZCBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZSA9IGZ1bmN0aW9uIChhU3RhYmxlSWRQYXJ0czogQXJyYXk8c3RyaW5nIHwgb2JqZWN0Pikge1xuXHRsZXQgc1N0YWJsZUlkID0gXCJcIixcblx0XHR2RWxlbWVudDogYW55LFxuXHRcdHNGYWNldElkO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVN0YWJsZUlkUGFydHMubGVuZ3RoOyBpKyspIHtcblx0XHR2RWxlbWVudCA9IGFTdGFibGVJZFBhcnRzW2ldO1xuXHRcdGlmICghdkVsZW1lbnQpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRzU3RhYmxlSWQgKz0gc1N0YWJsZUlkICE9PSBcIlwiID8gXCI6OlwiIDogXCJcIjtcblx0XHRpZiAodkVsZW1lbnRbXCJGYWNldFwiXSAmJiB2RWxlbWVudFtcIkZhY2V0XCJdW1wiJFR5cGVcIl0gJiYgdkVsZW1lbnRbXCJGYWNldFwiXVtcIiRUeXBlXCJdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIpIHtcblx0XHRcdHNTdGFibGVJZCArPSB2RWxlbWVudFtcIkZhY2V0XCJdW1wiSURcIl07XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGlmICh2RWxlbWVudCkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gdkVsZW1lbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdkVsZW1lbnQgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdC8vIGhhbmRsZSBwYXJhbWV0ZXJzXG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnQuRmFjZXQpIHtcblx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh2RWxlbWVudC5GYWNldC4kVHlwZSAmJiB2RWxlbWVudC5GYWNldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiKSB7XG5cdFx0XHRcdFx0aWYgKHZFbGVtZW50LkZhY2V0LklEKSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LklEO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRmFjZXRJZCA9IHZFbGVtZW50LkZhY2V0LlRhcmdldC4kQW5ub3RhdGlvblBhdGggfHwgdkVsZW1lbnQuRmFjZXQuVGFyZ2V0LnZhbHVlOyAvLyBDb21wbGlhbnQgd2l0aCBDb252ZXJ0ZXJzXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBUeXBlXCIpIHtcblx0XHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXQuTGFiZWwpIHtcblx0XHRcdFx0XHRcdHNGYWNldElkID0gdkVsZW1lbnQuRmFjZXQuTGFiZWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChzRmFjZXRJZCkge1xuXHRcdFx0XHRcdHNTdGFibGVJZCArPSBzRmFjZXRJZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHZFbGVtZW50ICYmIHZFbGVtZW50W1wiJFR5cGVcIl0gJiYgdkVsZW1lbnRbXCIkVHlwZVwiXS5pbmRleE9mKFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIpID4gLTEpIHtcblx0XHRcdFx0c1N0YWJsZUlkICs9IGdldFN0YWJsZUlkUGFydEZyb21EYXRhRmllbGQodkVsZW1lbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRzU3RhYmxlSWQgPSBwcmVwYXJlSWQoc1N0YWJsZUlkKTtcblx0cmV0dXJuIHNTdGFibGVJZDtcbn07XG5leHBvcnQgY29uc3QgZ2V0U3RhYmxlSWRQYXJ0RnJvbVNlbWFudGljT2JqZWN0QW5kQWN0aW9uID0gZnVuY3Rpb24gKG9EYXRhRmllbGQ6IGFueSk6IHN0cmluZyB7XG5cdGxldCBzSWRQYXJ0ID0gXCJcIjtcblx0aWYgKHR5cGVvZiBvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0ID09IFwic3RyaW5nXCIpIHtcblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3Q7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdC4kUGF0aCkge1xuXHRcdHNJZFBhcnQgKz0gb0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdC4kUGF0aDtcblx0fVxuXHRpZiAodHlwZW9mIG9EYXRhRmllbGQuQWN0aW9uID09IFwic3RyaW5nXCIpIHtcblx0XHRzSWRQYXJ0ICs9IFwiOjpcIiArIG9EYXRhRmllbGQuQWN0aW9uO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuQWN0aW9uICYmIG9EYXRhRmllbGQuQWN0aW9uLiRQYXRoKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6XCIgKyBvRGF0YUZpZWxkLkFjdGlvbi4kUGF0aDtcblx0fVxuXHRpZiAob0RhdGFGaWVsZFtcIlJlcXVpcmVzQ29udGV4dFwiXSAmJiBvRGF0YUZpZWxkW1wiUmVxdWlyZXNDb250ZXh0XCJdID09IHRydWUpIHtcblx0XHRzSWRQYXJ0ICs9IFwiOjpSZXF1aXJlc0NvbnRleHRcIjtcblx0fVxuXHRyZXR1cm4gc0lkUGFydDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdGFibGVJZFBhcnRGcm9tRGF0YUZpZWxkID0gZnVuY3Rpb24gKG9EYXRhRmllbGQ6IGFueSwgbVBhcmFtZXRlcjogeyBjb250ZXh0PzogQ29udGV4dCB9ID0ge30pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRsZXQgc0lkUGFydCA9IFwiXCI7XG5cblx0aWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckFjdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLkFjdGlvbjtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHNJZFBhcnQ7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFubm90YXRpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZEZvckFubm90YXRpb246OlwiO1xuXHRcdHNJZFBhcnQgKz0gcHJlcGFyZUlkKG9EYXRhRmllbGQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aCB8fCBvRGF0YUZpZWxkLlRhcmdldC52YWx1ZSk7XG5cdFx0cmV0dXJuIHNJZFBhcnQ7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhBY3Rpb246OlwiO1xuXHRcdGlmIChvRGF0YUZpZWxkLlZhbHVlKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKSArIFwiOjpcIjtcblx0XHR9XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLkFjdGlvbjtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZDo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSkgKyBcIjo6XCI7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldCAmJiBvRGF0YUZpZWxkLlRhcmdldFtcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCJdKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IFwiOjpcIiArIG9EYXRhRmllbGQuVGFyZ2V0W1wiJE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIl07XG5cdFx0fVxuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhVcmxcIikge1xuXHRcdHNJZFBhcnQgPSBcIkRhdGFGaWVsZFdpdGhVcmw6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAobVBhcmFtZXRlciAmJiBtUGFyYW1ldGVyLmNvbnRleHQgJiYgbVBhcmFtZXRlci5jb250ZXh0LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpKSB7XG5cdFx0Ly8gdGhlIGNvbnRleHQgaXMgbm90IHJlZmVycmluZyB0byBkYSBkYXRhIGZpZWxkIGJ1dCBkaXJlY3RseSB0byBhIHByb3BlcnR5LCByZXR1cm4gdGhlIHByb3BlcnR5IG5hbWVcblx0XHRyZXR1cm4gcHJlcGFyZUlkKG1QYXJhbWV0ZXIuY29udGV4dC5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKS50b1N0cmluZygpKTtcblx0fSBlbHNlIHtcblx0XHQvLyBJbiBjYXNlIG9mIGEgc3RyaW5nIG9yIHVua25vd24gcHJvcGVydHlcblx0XHQvLyBMb2cuZXJyb3IoXCJTdGFibGUgSUQgSGVscGVyOiBVbmFibGUgdG8gY3JlYXRlIGEgc3RhYmxlIElELiBQbGVhc2UgY2hlY2sgdGhlIGFubm90YXRpb25zLlwiKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVJZCA9IGZ1bmN0aW9uIChzSWQ6IHN0cmluZykge1xuXHRzSWQgPSByZXBsYWNlU3BlY2lhbENoYXJzKHJlbW92ZU5hbWVzcGFjZXMoc0lkKSk7XG5cdGlmIChpc1ZhbGlkKHNJZCkpIHtcblx0XHRyZXR1cm4gc0lkO1xuXHR9IGVsc2Uge1xuXHRcdC8vIExvZy5lcnJvcihzSWQgKyBcIiAtIFN0YWJsZSBJZCBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkIGR1ZSB0byBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24uXCIpO1xuXHRcdHRocm93IHNJZCArIFwiIC0gU3RhYmxlIElkIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgZHVlIHRvIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi5cIjtcblx0fVxufTtcbiJdfQ==
263
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YWJsZUlkSGVscGVyLnRzIl0sIm5hbWVzIjpbImlzVmFsaWQiLCJ2VmFsdWUiLCJ0ZXN0IiwicmVwbGFjZVNwZWNpYWxDaGFycyIsInNJZCIsImluZGV4T2YiLCJyZXBsYWNlIiwic2xpY2UiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlIiwib1ZhbHVlIiwiJFBhdGgiLCJwYXRoIiwiJEFwcGx5IiwiJEZ1bmN0aW9uIiwic1BhdGhDb25jYXQiLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGUiLCJhU3RhYmxlSWRQYXJ0cyIsInNTdGFibGVJZCIsInZFbGVtZW50Iiwic0ZhY2V0SWQiLCJGYWNldCIsIiRUeXBlIiwiSUQiLCJUYXJnZXQiLCIkQW5ub3RhdGlvblBhdGgiLCJ2YWx1ZSIsIkxhYmVsIiwiZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCIsInByZXBhcmVJZCIsImdldFN0YWJsZUlkUGFydEZyb21TZW1hbnRpY09iamVjdEFuZEFjdGlvbiIsIm9EYXRhRmllbGQiLCJzSWRQYXJ0IiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJtUGFyYW1ldGVyIiwiVmFsdWUiLCJjb250ZXh0IiwiZ2V0T2JqZWN0IiwidG9TdHJpbmciLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFTQSxPQUFULENBQWlCQyxNQUFqQixFQUFpQztBQUNoQyxXQUFPLGdDQUFnQ0MsSUFBaEMsQ0FBcUNELE1BQXJDLENBQVA7QUFDQTs7QUFFTSxXQUFTRSxtQkFBVCxDQUE2QkMsR0FBN0IsRUFBMEM7QUFDaEQsUUFBSUEsR0FBRyxDQUFDQyxPQUFKLENBQVksR0FBWixLQUFvQixDQUF4QixFQUEyQjtBQUMxQjtBQUNBLHNCQUFTRCxHQUFUO0FBQ0E7O0FBQ0RBLElBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUNQ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RCxDQUFYLEVBQWtCO0FBQ2pCLGFBQU9BLEdBQVA7QUFDQSxLQUZELE1BRU87QUFDTjtBQUNBLHNCQUFTQSxHQUFUO0FBQ0E7QUFDRCxHQVJNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG4vKipcbiAqIFN0YWJsZSBJZCBoZWxwZXJcbiAqL1xuXG4vKipcbiAqIENvcHkgZm9yIHRoZSBDb3JlLmlzVmFsaWQgZnVuY3Rpb24gdG8gYmUgaW5kZXBlbmRlbnQuXG4gKlxuICogQHBhcmFtIHZWYWx1ZSBTdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIHZhbGlkIG9yIG5vdFxuICovXG5mdW5jdGlvbiBpc1ZhbGlkKHZWYWx1ZTogc3RyaW5nKSB7XG5cdHJldHVybiAvXihbQS1aYS16X11bLUEtWmEtejAtOV8uOl0qKSQvLnRlc3QodlZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VTcGVjaWFsQ2hhcnMoc0lkOiBzdHJpbmcpIHtcblx0aWYgKHNJZC5pbmRleE9mKFwiIFwiKSA+PSAwKSB7XG5cdFx0Ly8gTG9nLmVycm9yKHNJZCArIFwiIC0gU3BhY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBJRCBwYXJ0cy5cIik7XG5cdFx0dGhyb3cgYCR7c0lkfSAtIFNwYWNlcyBhcmUgbm90IGFsbG93ZWQgaW4gSUQgcGFydHMuYDtcblx0fVxuXHRzSWQgPSBzSWRcblx0XHQucmVwbGFjZSgvXlxcL3xeQHxeI3xeXFwqLywgXCJcIikgLy8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZ1xuXHRcdC5yZXBsYWNlKC9cXC8kfEAkfCMkfFxcKiQvLCBcIlwiKSAvLyByZW1vdmUgc3BlY2lhbCBjaGFyYWN0ZXJzIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nXG5cdFx0LnJlcGxhY2UoL1xcL3xAfFxcKHxcXCl8I3xcXCovZywgXCI6OlwiKTsgLy8gcmVwbGFjZSBzcGVjaWFsIGNoYXJhY3RlcnMgd2l0aCA6OlxuXG5cdC8vIFJlcGxhY2UgZG91YmxlIG9jY3VycmVuY2VzIG9mIHRoZSBzZXBhcmF0b3Igd2l0aCBhIHNpbmdsZSBzZXBhcmF0b3Jcblx0d2hpbGUgKHNJZC5pbmRleE9mKFwiOjo6OlwiKSA+IC0xKSB7XG5cdFx0c0lkID0gc0lkLnJlcGxhY2UoXCI6Ojo6XCIsIFwiOjpcIik7XG5cdH1cblxuXHQvLyBJZiB0aGVyZSBpcyBhIDo6IGF0IHRoZSBlbmQgb2YgdGhlIElEIHJlbW92ZSBpdFxuXHRpZiAoc0lkLnNsaWNlKC0yKSA9PSBcIjo6XCIpIHtcblx0XHRzSWQgPSBzSWQuc2xpY2UoMCwgLTIpO1xuXHR9XG5cblx0cmV0dXJuIHNJZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTmFtZXNwYWNlcyhzSWQ6IHN0cmluZykge1xuXHRzSWQgPSBzSWQucmVwbGFjZShcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlwiLCBcIlwiKTtcblx0c0lkID0gc0lkLnJlcGxhY2UoXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLlwiLCBcIlwiKTtcblx0cmV0dXJuIHNJZDtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9WYWx1ZTogYW55KSB7XG5cdGlmICgob1ZhbHVlICYmIG9WYWx1ZS4kUGF0aCkgfHwgb1ZhbHVlLnBhdGgpIHtcblx0XHRyZXR1cm4gb1ZhbHVlLiRQYXRoIHx8IG9WYWx1ZS5wYXRoO1xuXHR9XG5cblx0aWYgKG9WYWx1ZSAmJiBvVmFsdWUuJEFwcGx5ICYmIG9WYWx1ZS4kRnVuY3Rpb24gPT09IFwib2RhdGEuY29uY2F0XCIpIHtcblx0XHRsZXQgc1BhdGhDb25jYXQgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgb1ZhbHVlLiRBcHBseS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKG9WYWx1ZS4kQXBwbHlbaV0uJFBhdGgpIHtcblx0XHRcdFx0aWYgKHNQYXRoQ29uY2F0KSB7XG5cdFx0XHRcdFx0c1BhdGhDb25jYXQgKz0gXCI6OlwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNQYXRoQ29uY2F0ICs9IG9WYWx1ZS4kQXBwbHlbaV0uJFBhdGg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzUGF0aENvbmNhdDtcblx0fVxuXG5cdGlmIChvVmFsdWUpIHtcblx0XHRyZXR1cm4gcmVwbGFjZVNwZWNpYWxDaGFycyhvVmFsdWUucmVwbGFjZSgvIC9nLCBcIl9cIikpO1xuXHR9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIFN0YWJsZSBJZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVyc1xuICpcbiAqIHBhcmFtZXRlcnMgYXJlIGNvbWJpbmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUgcHJvdmlkZWQgYW5kIGFyZSBzZXBhcmF0ZWQgYnkgJzo6J1xuICogc3BlY2lhbCBjaGFyYWN0ZXJzIChALCAvLCAjKSBhcmUgcmVwbGFjZWQgYnkgJzo6JyBpZiB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBTdGFibGUgSWQgYW5kIHJlbW92ZWQgYWxsIHRvZ2V0aGVyIGlmIHRoZSBhcmUgcGFydCBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZFxuICogRXhhbXBsZTpcbiAqIC8vIEdldCBDb25zdGFudCBTdGFibGUgSWRcbiAqIGdlbmVyYXRlKFsnU3RhYmxlJywgJ0lkJ10pIHdvdWxkIHJlc3VsdCBpbiAnU3RhYmxlOjpJZCcgYXMgdGhlIFN0YWJsZSBJZFxuICpcbiAqIC8vIEdldCBQYXJhbWVydGVyaXplZCBTdGFibGUgSWQgZnJvbSBhIENvbGxlY3Rpb24gRmFjZXRcbiAqIHZhciBvUGFyYW1ldGVyID0ge1xuICogXHRcdEZhY2V0OiB7XG4gKiBcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIixcbiAqIFx0XHRcdExhYmVsOiBcIkdlbmVyYWwgSW5mbyBGYWNldCBMYWJlbFwiLFxuICogXHRcdFx0SUQ6ICdHZW5lcmFsSW5mb3JtYXRpb24nXG4gKiBcdFx0fVxuICogfTtcbiAqIGdlbmVyYXRlKFsnc2VjdGlvbicsIG9QYXJhbWV0ZXJdKSB3b3VsZCByZXN1bHQgaW4gJ3NlY3Rpb246OkdlbmVyYWxJbmZvcm1hdGlvbicgYXMgdGhlIFN0YWJsZSBJZFxuICpcbiAqIG9QYXJhbWV0ZXIgaXMgYW5kIG9iamVjdCBvZiBNZXRhZGF0YSBjb250ZXh0cyBhdmFpbGFibGUgd2hpbGUgdGVtcGxhdGluZyB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgU3RhYmxlIElEcy5cbiAqIG9QYXJhbWV0ZXIgb2JqZWN0IGtleXMgZGVmaW5lIHRoZSB0eXBlIG9mIG1ldGFkYXRhIGNvbnRleHQuXG4gKiBGb3IgZXhhbXBsZSwgdGhlIGtleSAnRmFjZXQnaW4gdGhlIGFib3ZlIGV4YW1wbGUgdGVsbHMgdGhlIFN0YWJsZSBJZCBIZWxwZXIgdGhhdCB0aGUgY29udGV4dCBpcyBhIEZhY2V0IChjb3VsZCBiZSByZWZlcmVuY2Ugb3IgY29sbGVjdGlvbiBmYWNldClcbiAqXG4gKiBDdXJyZW50bHkgc3VwcG9ydGVkIG1ldGFkYXRhIGNvbnRleHQgaXMgQ29sbGVjdGlvbi9SZWZlcmVuY2UgZmFjZXQgaWRlbnRpZmllZCBieSAnRmFjZXQnIGtleS5cbiAqXG4gKiBAcGFyYW0gYVN0YWJsZUlkUGFydHMgQXJyYXkgb2Ygc3RyaW5ncyBhbmQgb2JqZWN0c1xuICogQHJldHVybnMgU3RhYmxlIElkIGNvbnN0cnVjdGVkIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlID0gZnVuY3Rpb24gKGFTdGFibGVJZFBhcnRzOiBBcnJheTxzdHJpbmcgfCBvYmplY3Q+KSB7XG5cdGxldCBzU3RhYmxlSWQgPSBcIlwiLFxuXHRcdHZFbGVtZW50OiBhbnksXG5cdFx0c0ZhY2V0SWQ7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhU3RhYmxlSWRQYXJ0cy5sZW5ndGg7IGkrKykge1xuXHRcdHZFbGVtZW50ID0gYVN0YWJsZUlkUGFydHNbaV07XG5cdFx0aWYgKCF2RWxlbWVudCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdHNTdGFibGVJZCArPSBzU3RhYmxlSWQgIT09IFwiXCIgPyBcIjo6XCIgOiBcIlwiO1xuXHRcdGlmICh2RWxlbWVudFtcIkZhY2V0XCJdICYmIHZFbGVtZW50W1wiRmFjZXRcIl1bXCIkVHlwZVwiXSAmJiB2RWxlbWVudFtcIkZhY2V0XCJdW1wiJFR5cGVcIl0gPT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5Db2xsZWN0aW9uRmFjZXRcIikge1xuXHRcdFx0c1N0YWJsZUlkICs9IHZFbGVtZW50W1wiRmFjZXRcIl1bXCJJRFwiXTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiB2RWxlbWVudCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0aWYgKHZFbGVtZW50KSB7XG5cdFx0XHRcdHNTdGFibGVJZCArPSB2RWxlbWVudDtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHR5cGVvZiB2RWxlbWVudCA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0Ly8gaGFuZGxlIHBhcmFtZXRlcnNcblx0XHRcdGlmICh2RWxlbWVudCAmJiB2RWxlbWVudC5GYWNldCkge1xuXHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXQuJFR5cGUgJiYgdkVsZW1lbnQuRmFjZXQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ29sbGVjdGlvbkZhY2V0XCIpIHtcblx0XHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXQuSUQpIHtcblx0XHRcdFx0XHRcdHNGYWNldElkID0gdkVsZW1lbnQuRmFjZXQuSUQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHZFbGVtZW50LkZhY2V0LiRUeXBlICYmIHZFbGVtZW50LkZhY2V0LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlJlZmVyZW5jZUZhY2V0XCIpIHtcblx0XHRcdFx0XHRpZiAodkVsZW1lbnQuRmFjZXQuSUQpIHtcblx0XHRcdFx0XHRcdHNGYWNldElkID0gdkVsZW1lbnQuRmFjZXQuSUQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNGYWNldElkID0gdkVsZW1lbnQuRmFjZXQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aCB8fCB2RWxlbWVudC5GYWNldC5UYXJnZXQudmFsdWU7IC8vIENvbXBsaWFudCB3aXRoIENvbnZlcnRlcnNcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAodkVsZW1lbnQuRmFjZXQuJFR5cGUgJiYgdkVsZW1lbnQuRmFjZXQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRmllbGRHcm91cFR5cGVcIikge1xuXHRcdFx0XHRcdGlmICh2RWxlbWVudC5GYWNldC5MYWJlbCkge1xuXHRcdFx0XHRcdFx0c0ZhY2V0SWQgPSB2RWxlbWVudC5GYWNldC5MYWJlbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNGYWNldElkKSB7XG5cdFx0XHRcdFx0c1N0YWJsZUlkICs9IHNGYWNldElkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodkVsZW1lbnQgJiYgdkVsZW1lbnRbXCIkVHlwZVwiXSAmJiB2RWxlbWVudFtcIiRUeXBlXCJdLmluZGV4T2YoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIikgPiAtMSkge1xuXHRcdFx0XHRzU3RhYmxlSWQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCh2RWxlbWVudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHNTdGFibGVJZCA9IHByZXBhcmVJZChzU3RhYmxlSWQpO1xuXHRyZXR1cm4gc1N0YWJsZUlkO1xufTtcbmV4cG9ydCBjb25zdCBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24gPSBmdW5jdGlvbiAob0RhdGFGaWVsZDogYW55KTogc3RyaW5nIHtcblx0bGV0IHNJZFBhcnQgPSBcIlwiO1xuXHRpZiAodHlwZW9mIG9EYXRhRmllbGQuU2VtYW50aWNPYmplY3QgPT0gXCJzdHJpbmdcIikge1xuXHRcdHNJZFBhcnQgKz0gb0RhdGFGaWVsZC5TZW1hbnRpY09iamVjdDtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0LiRQYXRoKSB7XG5cdFx0c0lkUGFydCArPSBvRGF0YUZpZWxkLlNlbWFudGljT2JqZWN0LiRQYXRoO1xuXHR9XG5cdGlmICh0eXBlb2Ygb0RhdGFGaWVsZC5BY3Rpb24gPT0gXCJzdHJpbmdcIikge1xuXHRcdHNJZFBhcnQgKz0gYDo6JHtvRGF0YUZpZWxkLkFjdGlvbn1gO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuQWN0aW9uICYmIG9EYXRhRmllbGQuQWN0aW9uLiRQYXRoKSB7XG5cdFx0c0lkUGFydCArPSBgOjoke29EYXRhRmllbGQuQWN0aW9uLiRQYXRofWA7XG5cdH1cblx0aWYgKG9EYXRhRmllbGRbXCJSZXF1aXJlc0NvbnRleHRcIl0gJiYgb0RhdGFGaWVsZFtcIlJlcXVpcmVzQ29udGV4dFwiXSA9PSB0cnVlKSB7XG5cdFx0c0lkUGFydCArPSBcIjo6UmVxdWlyZXNDb250ZXh0XCI7XG5cdH1cblx0cmV0dXJuIHNJZFBhcnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhYmxlSWRQYXJ0RnJvbURhdGFGaWVsZCA9IGZ1bmN0aW9uIChvRGF0YUZpZWxkOiBhbnksIG1QYXJhbWV0ZXI6IHsgY29udGV4dD86IENvbnRleHQgfSA9IHt9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0bGV0IHNJZFBhcnQgPSBcIlwiO1xuXG5cdGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRGb3JBY3Rpb246OlwiO1xuXHRcdHNJZFBhcnQgKz0gb0RhdGFGaWVsZC5BY3Rpb247XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVNlbWFudGljT2JqZWN0QW5kQWN0aW9uKG9EYXRhRmllbGQpO1xuXHRcdHJldHVybiBzSWRQYXJ0O1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRGb3JBbm5vdGF0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IHByZXBhcmVJZChvRGF0YUZpZWxkLlRhcmdldC4kQW5ub3RhdGlvblBhdGggfHwgb0RhdGFGaWVsZC5UYXJnZXQudmFsdWUpO1xuXHRcdHJldHVybiBzSWRQYXJ0O1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoQWN0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoQWN0aW9uOjpcIjtcblx0XHRpZiAob0RhdGFGaWVsZC5WYWx1ZSkge1xuXHRcdFx0c0lkUGFydCArPSBgJHtnZXRTdGFibGVJZFBhcnRGcm9tVmFsdWUob0RhdGFGaWVsZC5WYWx1ZSl9OjpgO1xuXHRcdH1cblx0XHRzSWRQYXJ0ICs9IG9EYXRhRmllbGQuQWN0aW9uO1xuXHRcdHJldHVybiBwcmVwYXJlSWQoc0lkUGFydCk7XG5cdH0gZWxzZSBpZiAob0RhdGFGaWVsZC4kVHlwZSAmJiBvRGF0YUZpZWxkLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFwiKSB7XG5cdFx0c0lkUGFydCA9IFwiRGF0YUZpZWxkOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKTtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGAke2dldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKX06OmA7XG5cdFx0c0lkUGFydCArPSBnZXRTdGFibGVJZFBhcnRGcm9tU2VtYW50aWNPYmplY3RBbmRBY3Rpb24ob0RhdGFGaWVsZCk7XG5cdFx0cmV0dXJuIHByZXBhcmVJZChzSWRQYXJ0KTtcblx0fSBlbHNlIGlmIChvRGF0YUZpZWxkLiRUeXBlICYmIG9EYXRhRmllbGQuJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6OlwiO1xuXHRcdHNJZFBhcnQgKz0gZ2V0U3RhYmxlSWRQYXJ0RnJvbVZhbHVlKG9EYXRhRmllbGQuVmFsdWUpO1xuXHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldCAmJiBvRGF0YUZpZWxkLlRhcmdldFtcIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCJdKSB7XG5cdFx0XHRzSWRQYXJ0ICs9IGA6OiR7b0RhdGFGaWVsZC5UYXJnZXRbXCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aFwiXX1gO1xuXHRcdH1cblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuJFR5cGUgJiYgb0RhdGFGaWVsZC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCIpIHtcblx0XHRzSWRQYXJ0ID0gXCJEYXRhRmllbGRXaXRoVXJsOjpcIjtcblx0XHRzSWRQYXJ0ICs9IGdldFN0YWJsZUlkUGFydEZyb21WYWx1ZShvRGF0YUZpZWxkLlZhbHVlKTtcblx0XHRyZXR1cm4gcHJlcGFyZUlkKHNJZFBhcnQpO1xuXHR9IGVsc2UgaWYgKG1QYXJhbWV0ZXIgJiYgbVBhcmFtZXRlci5jb250ZXh0ICYmIG1QYXJhbWV0ZXIuY29udGV4dC5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSkge1xuXHRcdC8vIHRoZSBjb250ZXh0IGlzIG5vdCByZWZlcnJpbmcgdG8gZGEgZGF0YSBmaWVsZCBidXQgZGlyZWN0bHkgdG8gYSBwcm9wZXJ0eSwgcmV0dXJuIHRoZSBwcm9wZXJ0eSBuYW1lXG5cdFx0cmV0dXJuIHByZXBhcmVJZChtUGFyYW1ldGVyLmNvbnRleHQuZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIikudG9TdHJpbmcoKSk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gSW4gY2FzZSBvZiBhIHN0cmluZyBvciB1bmtub3duIHByb3BlcnR5XG5cdFx0Ly8gTG9nLmVycm9yKFwiU3RhYmxlIElEIEhlbHBlcjogVW5hYmxlIHRvIGNyZWF0ZSBhIHN0YWJsZSBJRC4gUGxlYXNlIGNoZWNrIHRoZSBhbm5vdGF0aW9ucy5cIik7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBwcmVwYXJlSWQgPSBmdW5jdGlvbiAoc0lkOiBzdHJpbmcpIHtcblx0c0lkID0gcmVwbGFjZVNwZWNpYWxDaGFycyhyZW1vdmVOYW1lc3BhY2VzKHNJZCkpO1xuXHRpZiAoaXNWYWxpZChzSWQpKSB7XG5cdFx0cmV0dXJuIHNJZDtcblx0fSBlbHNlIHtcblx0XHQvLyBMb2cuZXJyb3Ioc0lkICsgXCIgLSBTdGFibGUgSWQgY291bGQgbm90IGJlIGdlbmVyYXRlZCBkdWUgdG8gaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLlwiKTtcblx0XHR0aHJvdyBgJHtzSWR9IC0gU3RhYmxlIElkIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgZHVlIHRvIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi5gO1xuXHR9XG59O1xuIl19