@sap/open.fe 1.96.0 → 1.97.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 (490) hide show
  1. package/package.json +1 -1
  2. package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
  3. package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
  4. package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +57 -42
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
  6. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
  7. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +2 -2
  8. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +4 -4
  9. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
  10. package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
  11. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/resources.json +4 -4
  13. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  14. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  15. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  16. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  17. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  18. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +2 -2
  19. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
  20. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +59 -274
  21. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
  22. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +52 -64
  23. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
  24. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +2 -2
  25. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +1 -1
  26. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +18 -22
  27. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
  28. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +80 -4
  29. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
  30. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +42 -23
  31. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
  32. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +36 -21
  33. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  34. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +9 -3
  35. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  36. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +20 -50
  37. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  38. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +222 -102
  39. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
  40. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +33 -6
  41. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  42. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +109 -111
  43. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +1 -1
  44. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d-dbg.js +8 -0
  45. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.js +5 -0
  46. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.ts +0 -0
  47. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +2 -1
  48. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  49. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
  50. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +10 -1
  51. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  52. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +9 -1
  53. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +2 -2
  54. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  55. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
  56. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +67 -40
  57. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  58. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +6 -3
  59. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  60. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +6 -3
  61. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +57 -18
  62. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  63. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +51 -13
  64. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -19
  65. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  66. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +139 -18
  67. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID-dbg.js +9 -1
  68. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.js +1 -1
  69. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.ts +4 -0
  70. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +18 -7
  71. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  72. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +17 -12
  73. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +2 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
  75. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +1 -1
  76. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +2 -2
  77. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +27 -4
  78. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  79. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
  80. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  81. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +211 -0
  82. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +5 -0
  83. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
  84. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +32 -0
  85. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +5 -0
  86. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
  87. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +51 -0
  88. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  89. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +1 -1
  90. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +10 -9
  91. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +1 -1
  92. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +232 -228
  93. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
  94. package/packages/sap.fe.core/src/sap/fe/core/library.js +1 -1
  95. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  96. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +15 -1
  97. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +10 -0
  98. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +10 -0
  99. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +10 -0
  100. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +10 -0
  101. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +10 -0
  102. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +10 -0
  103. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +10 -0
  104. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +10 -0
  105. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +10 -0
  106. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +10 -0
  107. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +6 -0
  108. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +11 -1
  109. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +11 -1
  110. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +10 -0
  111. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +10 -0
  112. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +10 -0
  113. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +10 -0
  114. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +10 -0
  115. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +10 -0
  116. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +10 -0
  117. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +10 -0
  118. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +10 -0
  119. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +11 -1
  120. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +10 -0
  121. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +10 -0
  122. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +19 -9
  123. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +10 -0
  124. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +10 -0
  125. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +10 -0
  126. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +10 -0
  127. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +10 -0
  128. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +10 -0
  129. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +10 -0
  130. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +10 -0
  131. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +11 -1
  132. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +10 -0
  133. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +10 -0
  134. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +10 -0
  135. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +10 -0
  136. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +10 -0
  137. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +10 -0
  138. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +10 -0
  139. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +10 -0
  140. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +10 -0
  141. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +10 -0
  142. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +10 -0
  143. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +10 -0
  144. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +10 -0
  145. package/packages/sap.fe.core/src/sap/fe/core/resources.json +200 -121
  146. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +30 -19
  147. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  148. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +1 -1
  149. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  150. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper-dbg.js +80 -7
  151. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
  152. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.ts +42 -2
  153. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -1
  154. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  155. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  156. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +4 -0
  157. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +1 -0
  158. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/manifest.json +2 -2
  159. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +13 -10
  160. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +7 -4
  161. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +1 -2
  162. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +1 -0
  163. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +119 -0
  164. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +285 -4
  165. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +121 -0
  166. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +79 -0
  167. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +147 -0
  168. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +96 -0
  169. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +51 -18
  170. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +109 -17
  171. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +66 -0
  172. package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelper.cds +33 -0
  173. package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelperMainEntitySortableFalse.cds +12 -0
  174. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableGetSelectionMode.cds +8 -8
  175. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +68 -0
  176. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +38 -0
  177. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.js +483 -0
  178. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.ts +376 -0
  179. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.js +101 -0
  180. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.ts +105 -0
  181. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.js +103 -0
  182. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.ts +106 -0
  183. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.js +118 -0
  184. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.ts +118 -0
  185. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.js +101 -0
  186. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.ts +102 -0
  187. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +118 -1
  188. package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +70 -0
  189. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.js +89 -0
  190. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.ts +73 -0
  191. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +4 -2
  192. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +6 -0
  193. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  194. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  195. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +15 -5
  196. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  197. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +9 -5
  198. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
  199. package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil-dbg.js +30 -11
  200. package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil.js +1 -1
  201. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +3 -5
  202. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
  203. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +3 -5
  204. package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate-dbg.js +17 -3
  205. package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate.js +1 -1
  206. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +1 -1
  207. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +1 -2
  208. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +4 -4
  209. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  210. package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.fragment.xml +6 -15
  211. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +14 -12
  212. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +1 -1
  213. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  214. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +2 -1
  215. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +12 -1
  216. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  217. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +15 -8
  218. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  219. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +10 -0
  220. package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper-dbg.js +1 -1
  221. package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper.js +1 -1
  222. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +81 -9
  223. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  224. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +13 -3
  225. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  226. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +5 -5
  227. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  228. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +4 -4
  229. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +1 -7
  230. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -3
  231. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  232. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForContact.fragment.xml +1 -1
  233. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime-dbg.js +46 -0
  234. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime.js +6 -0
  235. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +17 -8
  236. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +26 -16
  237. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +1 -0
  238. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +4 -13
  239. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  240. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +10 -10
  241. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +5 -3
  242. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +1 -1
  243. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +72 -8
  244. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  245. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  246. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +12 -11
  247. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
  248. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +93 -91
  249. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  250. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  251. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  252. package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime-dbg.js +1 -1
  253. package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js +1 -1
  254. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +5 -0
  255. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +2 -2
  256. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +2 -2
  257. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +2 -2
  258. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +2 -2
  259. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +2 -2
  260. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +2 -2
  261. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +2 -2
  262. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +2 -2
  263. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +1 -1
  264. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
  265. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -0
  266. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +2 -2
  267. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +2 -2
  268. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +2 -2
  269. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +2 -2
  270. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +2 -2
  271. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +2 -2
  272. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +2 -2
  273. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +2 -2
  274. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +2 -2
  275. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +2 -2
  276. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +2 -2
  277. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +2 -2
  278. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -3
  279. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +2 -2
  280. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +2 -2
  281. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +2 -2
  282. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +2 -2
  283. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +2 -2
  284. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +2 -2
  285. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +2 -2
  286. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +2 -2
  287. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +2 -2
  288. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +2 -2
  289. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +2 -2
  290. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +2 -2
  291. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +2 -2
  292. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +2 -2
  293. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +2 -2
  294. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +2 -2
  295. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +2 -2
  296. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +2 -2
  297. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +2 -2
  298. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +2 -2
  299. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +2 -2
  300. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +2 -2
  301. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/MicroChartTitle.fragment.xml +21 -11
  302. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/RadialMicroChart.fragment.xml +2 -1
  303. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +149 -110
  304. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +3 -0
  305. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +70 -29
  306. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +53 -36
  307. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  308. package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +1 -1
  309. package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils.js +1 -1
  310. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +3 -4
  311. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  312. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +2 -2
  313. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  314. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  315. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +844 -0
  316. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +833 -0
  317. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.js +495 -0
  318. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.ts +440 -0
  319. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.js +469 -0
  320. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.ts +448 -0
  321. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +94 -0
  322. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +70 -0
  323. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +12 -1
  324. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +11 -0
  325. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DelegateUtil.spec.js +61 -0
  326. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.js +46 -0
  327. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.ts +30 -0
  328. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +13 -1
  329. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +11 -0
  330. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.js +66 -0
  331. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.ts +35 -0
  332. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +48 -1
  333. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +56 -0
  334. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.js +68 -0
  335. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.ts +65 -0
  336. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +82 -0
  337. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +23 -5
  338. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldHelper.spec.ts.snap +47 -0
  339. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +52 -3
  340. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FormElement.spec.ts.snap +25 -0
  341. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +0 -3
  342. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +69 -0
  343. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +451 -0
  344. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldHelper.xml +68 -0
  345. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +13 -1
  346. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableFieldLabel.cds +152 -0
  347. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +116 -0
  348. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +115 -0
  349. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.js +86 -0
  350. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.ts +54 -0
  351. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/__snapshots__/FormElement.spec.ts.snap +33 -0
  352. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +154 -0
  353. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +128 -0
  354. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +7 -2
  355. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +23 -12
  356. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +1 -1
  357. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
  358. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +1 -1
  359. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
  360. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +108 -1
  361. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  362. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  363. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  364. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  365. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
  366. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  367. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  368. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  369. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  370. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  371. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  372. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  373. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  374. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  375. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +4 -4
  376. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +1 -1
  377. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  378. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  379. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +3 -3
  380. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderALP.fragment.html +1 -1
  381. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOVP.fragment.html +1 -1
  382. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  383. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  384. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  385. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  386. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  387. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  388. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  389. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +2 -2
  390. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +91 -60
  391. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  392. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  393. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +31 -5
  394. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
  395. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +5 -5
  396. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +2 -2
  397. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  398. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +18 -1
  399. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  400. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +114 -85
  401. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  402. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +8 -0
  403. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
  404. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  405. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +23 -3
  406. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
  407. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +15 -15
  408. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +6 -5
  409. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +1 -1
  410. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +6 -4
  411. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +26 -16
  412. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +5 -5
  413. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +63 -9
  414. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
  415. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +54 -32
  416. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
  417. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController-dbg.js +24 -21
  418. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +1 -1
  419. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +2 -1
  420. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +1 -1
  421. package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +2 -0
  422. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  423. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +8 -9
  424. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
  425. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +23 -30
  426. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  427. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  428. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +13 -13
  429. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +51 -60
  430. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  431. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -1
  432. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  433. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  434. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.js +95 -0
  435. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.ts +66 -0
  436. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +134 -0
  437. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +94 -0
  438. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +61 -0
  439. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/ObjectPageHeaderForm.spec.ts.snap +53 -0
  440. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  441. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  442. package/packages/sap.fe.test/src/sap/fe/test/FCLView-dbg.js +0 -6
  443. package/packages/sap.fe.test/src/sap/fe/test/FCLView.js +1 -1
  444. package/packages/sap.fe.test/src/sap/fe/test/Flexibility-dbg.js +14 -3
  445. package/packages/sap.fe.test/src/sap/fe/test/Flexibility.js +1 -1
  446. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +85 -8
  447. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  448. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +54 -2
  449. package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +0 -11
  450. package/packages/sap.fe.test/src/sap/fe/test/ListReport.js +1 -1
  451. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +0 -38
  452. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
  453. package/packages/sap.fe.test/src/sap/fe/test/TemplatePage-dbg.js +0 -12
  454. package/packages/sap.fe.test/src/sap/fe/test/TemplatePage.js +1 -1
  455. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +22 -1
  456. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  457. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +14 -0
  458. package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +21 -0
  459. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +9 -5
  460. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +1 -1
  461. package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions-dbg.js +18 -5
  462. package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions.js +1 -1
  463. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions-dbg.js +25 -5
  464. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions.js +1 -1
  465. package/packages/sap.fe.test/src/sap/fe/test/api/EditState-dbg.js +9 -0
  466. package/packages/sap.fe.test/src/sap/fe/test/api/EditState.js +1 -1
  467. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions-dbg.js +38 -4
  468. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions.js +1 -1
  469. package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions-dbg.js +33 -4
  470. package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions.js +1 -1
  471. package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.js +1 -1
  472. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  473. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +3 -3
  474. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +23 -16
  475. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
  476. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  477. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  478. package/packages/sap.fe.test/src/sap/fe/test/resources.json +36 -34
  479. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  480. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  481. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.jsmeta.json +1 -1
  482. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  483. package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.96.json +0 -49
  484. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.96.json +0 -189
  485. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldRuntime.qunit.js +0 -73
  486. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.96.json +0 -160
  487. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/relnote/changes-1.96.json +0 -17
  488. package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover-dbg.js +0 -26
  489. package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover.js +0 -6
  490. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.96.json +0 -153
@@ -376,6 +376,53 @@ sap.ui.define(["sap/fe/test/JestTemplatingHelper", "sap/fe/macros/internal/Field
376
376
  }
377
377
  });
378
378
  });
379
+ describe("- check control templating for ListReport / field with nowrapper", function () {
380
+ it("when there is a nowrapper for a field ", {
381
+ "references": [{
382
+ "type": "JIRA",
383
+ "ID": "FIORITECHP1-22012"
384
+ }]
385
+ }, function () {
386
+ try {
387
+ var xmlField = "<internalMacro:Field xmlns:internalMacro=\"sap.fe.macros.internal\"\n\t\t\t\t\t\t\t\t\tentitySet=\"{entitySet>}\"\n\t\t\t\t\t\t\t\t\tdataField=\"propWithText\"\n\t\t\t\t\t\t\t\t\teditMode=\"Display\">\n\t\t\t\t\t\t\t\t\t<internalMacro:formatOptions fieldMode=\"nowrapper\"/>\n </internalMacro:Field>";
388
+ return Promise.resolve(getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {})).then(function (templatedXML) {
389
+ expect(templatedXML).toMatchSnapshot();
390
+ });
391
+ } catch (e) {
392
+ return Promise.reject(e);
393
+ }
394
+ });
395
+ it("when there is not a nowrapper for a field ", {
396
+ "references": [{
397
+ "type": "JIRA",
398
+ "ID": "FIORITECHP1-22012"
399
+ }]
400
+ }, function () {
401
+ try {
402
+ var xmlField = "<internalMacro:Field xmlns:internalMacro=\"sap.fe.macros.internal\"\n\t\t\t\t\t\t\t\t\tentitySet=\"{entitySet>}\"\n\t\t\t\t\t\t\t\t\tdataField=\"propWithText\"\n\t\t\t\t\t\t\t\t\teditMode=\"Display\">\n\t\t\t\t\t\t\t\t\t<internalMacro:formatOptions fieldMode=\"\"/>\n </internalMacro:Field>";
403
+ return Promise.resolve(getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {})).then(function (templatedXML) {
404
+ expect(templatedXML).toMatchSnapshot();
405
+ });
406
+ } catch (e) {
407
+ return Promise.reject(e);
408
+ }
409
+ });
410
+ it("when there is a nowrapper for a field and analytics is true ", {
411
+ "references": [{
412
+ "type": "JIRA",
413
+ "ID": "FIORITECHP1-22012"
414
+ }]
415
+ }, function () {
416
+ try {
417
+ var xmlField = "<internalMacro:Field xmlns:internalMacro=\"sap.fe.macros.internal\"\n\t\t\t\t\t\t\t\t\tentitySet=\"{entitySet>}\"\n\t\t\t\t\t\t\t\t\tdataField=\"propWithText\"\n\t\t\t\t\t\t\t\t\teditMode=\"Display\">\n\t\t\t\t\t\t\t\t\t<internalMacro:formatOptions fieldMode=\"nowrapper\" isAnalytics=\"true\"/>\n </internalMacro:Field>";
418
+ return Promise.resolve(getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {})).then(function (templatedXML) {
419
+ expect(templatedXML).toMatchSnapshot();
420
+ });
421
+ } catch (e) {
422
+ return Promise.reject(e);
423
+ }
424
+ });
425
+ });
379
426
  describe("- dataField annotation- ", function () {
380
427
  it("criticality ", function () {
381
428
  try {
@@ -462,4 +509,4 @@ sap.ui.define(["sap/fe/test/JestTemplatingHelper", "sap/fe/macros/internal/Field
462
509
  });
463
510
  });
464
511
  }, false);
465
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpbXBsZUZpZWxkTWFjcm8uc3BlYy50cyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImJlZm9yZUFsbCIsInJlZ2lzdGVyTWFjcm8iLCJGaWVsZE1ldGFkYXRhIiwiYWZ0ZXJBbGwiLCJ1bnJlZ2lzdGVyTWFjcm8iLCJzTWV0YWRhdGFVcmwiLCJjb21waWxlQ0RTIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJtQmluZGluZ0NvbnRleHRzIiwiaXQiLCJ4bWxGaWVsZCIsImdldFRlbXBsYXRlZFhNTCIsInRlbXBsYXRlZFhNTCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBRUFBLEVBQUFBLFFBQVEsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUM1QkMsSUFBQUEsU0FBUyxDQUFDLFlBQU07QUFDZkMsTUFBQUEsYUFBYSxDQUFDQyxhQUFELENBQWI7QUFDQSxLQUZRLENBQVQ7QUFHQUMsSUFBQUEsUUFBUSxDQUFDLFlBQU07QUFDZEMsTUFBQUEsZUFBZSxDQUFDRixhQUFELENBQWY7QUFDQSxLQUZPLENBQVI7QUFHQSxRQUFNRyxZQUFZLEdBQUdDLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDQyxJQUFMLENBQVVDLFNBQVYsRUFBcUIsNkJBQXJCLENBQUQsQ0FBL0I7QUFDQSxRQUFNQyxnQkFBZ0IsR0FBRztBQUN4QixtQkFBYTtBQURXLEtBQXpCO0FBSUFYLElBQUFBLFFBQVEsQ0FBQyx5RUFBRCxFQUE0RSxZQUFNO0FBQ3pGWSxNQUFBQSxFQUFFLENBQUMsaUNBQUQ7QUFBQSxZQUFnRDtBQUNqRCxjQUFNQyxRQUFRLG9OQUFkO0FBRGlELGlDQUt0QkMsZUFBZSxDQUFDRCxRQUFELEVBQVdQLFlBQVgsRUFBeUJLLGdCQUF6QixFQUEyQyxFQUEzQyxDQUxPLGlCQUszQ0ksWUFMMkM7QUFNakRDLFlBQUFBLE1BQU0sQ0FBQ0QsWUFBRCxDQUFOLENBQXFCRSxlQUFyQjtBQU5pRDtBQU9qRCxTQVBD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QUFBLFFBQUY7QUFTQSxLQWxFTyxDQUFSO0FBbUVBLEdBbmJPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVDRFMsIGdldFRlbXBsYXRlZFhNTCwgcmVnaXN0ZXJNYWNybywgdW5yZWdpc3Rlck1hY3JvIH0gZnJvbSBcInNhcC9mZS90ZXN0L0plc3RUZW1wbGF0aW5nSGVscGVyXCI7XG5pbXBvcnQgRmllbGRNZXRhZGF0YSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9GaWVsZC5tZXRhZGF0YVwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5kZXNjcmliZShcIk1hY3JvRmllbGRcIiwgKCkgPT4ge1xuXHRiZWZvcmVBbGwoKCkgPT4ge1xuXHRcdHJlZ2lzdGVyTWFjcm8oRmllbGRNZXRhZGF0YSk7XG5cdH0pO1xuXHRhZnRlckFsbCgoKSA9PiB7XG5cdFx0dW5yZWdpc3Rlck1hY3JvKEZpZWxkTWV0YWRhdGEpO1xuXHR9KTtcblx0Y29uc3Qgc01ldGFkYXRhVXJsID0gY29tcGlsZUNEUyhwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4vZGF0YS9zaW1wbGVGaWVsZE1hY3JvLmNkc1wiKSk7XG5cdGNvbnN0IG1CaW5kaW5nQ29udGV4dHMgPSB7XG5cdFx0XCJlbnRpdHlTZXRcIjogXCIvSXRlbXNcIlxuXHR9O1xuXG5cdGRlc2NyaWJlKFwiLSB3aXRoIGFubm90YXRpb25zIG9uIHRoZSBkYXRhRmllbGQncyBWYWx1ZSBwcm9wZXJ0eSAoZXhjZXB0IHNlbWFudGljKSBcIiwgKCkgPT4ge1xuXHRcdGl0KFwiSW1hZ2UgaWRlbnRpZmllZCBieSBJc0ltYWdlVVJMIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiSW1hZ2UgaWRlbnRpZmllZCBieSBpbWFnZVVSTFN0cmVhbSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8zXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIkltYWdlIGlkZW50aWZpZWQgYnkgaXNNZWRpYVR5cGUgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vNFwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIlN0cmVhbU5vSW1hZ2UgcmVuZGVycyBJY29uLCBMaW5rIGFuZCBGaWxlVXBsb2FkZXIgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMThcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXG5cdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGFuIGVtYWlsIGFkZHJlc3MgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xMVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgcGhvbmUgbnVtYmVyIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFxuXHRcdFx0XCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCBjdXJyZW5jeSBwcm9wZXJ0eSBcIixcblx0XHRcdHtcblx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcInR5cGVcIjogXCJCQ1BcIixcblx0XHRcdFx0XHRcdFwiSURcIjogXCIwMDIwNzUxMjk1MDAwMDMxNDUyNDIwMjFcIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XVxuXHRcdFx0fSxcblx0XHRcdGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH1cblx0XHQpO1xuXHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggY3VycmVuY3kgcHJvcGVydHkgZm9yIEFuYWx5dGljc1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE2XCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBpc0FuYWx5dGljcz1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCB1bml0IG9mIG1lYXN1cmUgKHRleHQpIHByb3BlcnR5IGZvciBhbmFseXRpY3NcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE0XCJcblx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIGlzQW5hbHl0aWNzPVwidHJ1ZVwiIC8+XG5cdFx0XHRcdFx0XHRcdDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFxuXHRcdFx0XCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgTXVsdGkgTGluZSB0ZXh0IHByb3BlcnR5IFwiLFxuXHRcdFx0e1xuXHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHRcdHsgXCJ0eXBlXCI6IFwiSklSQVwiLCBcIklEXCI6IFwiRklPUklURUNIUDEtMjEwNzhcIiB9LFxuXHRcdFx0XHRcdHsgXCJ0eXBlXCI6IFwiSklSQVwiLCBcIklEXCI6IFwiRklPUklURUNIUDEtMTk0MDlcIiB9XG5cdFx0XHRcdF1cblx0XHRcdH0sXG5cdFx0XHRhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI2Jpcy8wXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIHRleHRMaW5lc0VkaXQ9XCIzMVwiIHRleHRNYXhMaW5lcz1cIjM5XCIgdGV4dEV4cGFuZEJlaGF2aW9yRGlzcGxheT1cIlBvcG92ZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0TWF4Q2hhcmFjdGVyc0Rpc3BsYXk9XCI1MFwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH1cblx0XHQpO1xuXHRcdGl0KFwiRGF0YUZpZWxkIHdpdGggaGFyZGNvZGUgc3RyaW5nIFZhbHVlIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI2Jpcy8yXCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCItIHdoZW4gaXQgdXNlcyBkaXJlY3RseSBhIHByb3BlcnR5IC0gXCIsICgpID0+IHtcblx0XHRpdChcIlByb3BlcnR5IHdpdGggdGV4dCBhcnJhbmdlbWVudCBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cInByb3BXaXRoVGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIlByb3BlcnR5IHdpdGggdGV4dCBhcnJhbmdlbWVudCBhbmQgb3ZlcnJpZGUgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcm9wV2l0aFRleHRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgZGlzcGxheU1vZGU9XCJWYWx1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJCb29sZWFuIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcmVmZXJyZWRJdGVtXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCItIGNoZWNrIGNvbnRyb2wgdGVtcGxhdGluZyBmb3IgYmFzaWMgdHlwZXMgYW5kIGlucHV0IGFsaWdubWVudC0gXCIsICgpID0+IHtcblx0XHRkZXNjcmliZShcIi0gZm9yIHRhYmxlIC0gXCIsICgpID0+IHtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIHN0cmluZyBwcm9wZXJ0eSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzFcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBib29sZWFuIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS81XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgVGltZXN0YW1wIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS82XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgRGVjaW1hbCBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vN1wiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFRpbWUgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzhcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBEb3VibGUgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzlcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBJbnRlZ2VyIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xMFwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIERhdGUgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzEzXCJcblx0XHRcdFx0XHRcdFx0XHRcdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCB1bml0IHByb3BlcnR5IHdoZXJlIHVuaXQgaXMgYWxzbyBlZGl0YWJsZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggdW5pdCBwcm9wZXJ0eSB3aGVyZSB1bml0IGlzIHJlYWRvbmx5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCBjdXJyZW5jeSBwcm9wZXJ0eSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE2XCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBRdWFudGl0eSB3aXRoIHN0YXRpYyB1bml0IGFubm90YXRpb25cIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE3XCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0ZGVzY3JpYmUoXCItIGZvciBmb3JtIC0gXCIsICgpID0+IHtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIHN0cmluZyBwcm9wZXJ0eSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzFcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgdGV4dEFsaWduTW9kZT1cIkZvcm1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJXaGVuIENvbW1vbi5pc0RpZ2l0c2VxdWVuY2UgaXMgYW5ub3RhdGVkIGZvciBhIHN0cmluZ1wiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJpc0RpZ2l0U2VxdWVuY2VcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgdGV4dEFsaWduTW9kZT1cIkZvcm1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBJbnRlZ2VyIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xMFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyB0ZXh0QWxpZ25Nb2RlPVwiRm9ybVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBEYXRlIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xM1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyB0ZXh0QWxpZ25Nb2RlPVwiRm9ybVwiLz5cblx0XHRcdFx0XHRcdFx0XHQ8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCItIGNoZWNrIGNvbnRyb2wgdGVtcGxhdGluZyBmb3IgZW1wdHkgcGxhY2VIb2xkZXIgdHJpZ2dlci0gXCIsICgpID0+IHtcblx0XHRpdChcIndoZW4gdGhlcmUgaXMgbm8gZm9ybWF0T3B0aW9ucy9zaG93RW1wdHlJbmRpY2F0b3IgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwid2hlbiB0aGVyZSBpcyBmb3JtYXRPcHRpb25zL3Nob3dFbXB0eUluZGljYXRvciBmb3IgYSBEYXRhZmllbGQgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBzaG93RW1wdHlJbmRpY2F0b3I9XCJ0cnVlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwid2hlbiB0aGVyZSBpcyBmb3JtYXRPcHRpb25zL3Nob3dFbXB0eUluZGljYXRvciBmb3IgYSBwcm9wZXJ0eSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cInByb3BXaXRoVGV4dFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBzaG93RW1wdHlJbmRpY2F0b3I9XCJ0cnVlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCItIGRhdGFGaWVsZCBhbm5vdGF0aW9uLSBcIiwgKCkgPT4ge1xuXHRcdGl0KFwiY3JpdGljYWxpdHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRGF0YUZpZWxkcy8wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRkZXNjcmliZShcIlRlc3QgdGhlIFJlYWRPbmx5IHByb3BlcnR5IFwiLCAoKSA9PiB7XG5cdFx0aXQoXCJPbiB0aGUgRGF0YUZpZWxkIHByb3BlcnR5IC0gRHluYW1pYyB2YWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJPbiB0aGUgRGF0YUZpZWxkIHByb3BlcnR5IC0gU3RhdGljIHZhbHVlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwiT24gYm90aCBwcm9wZXJ0aWVzIC0gRHluYW1pYyBWYWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJPbiBib3RoIHByb3BlcnRpZXMgLSBTdGF0aWMgdmFsdWUgUmVhZE9ubHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNGaWVsZENvbnRyb2xWYWx1ZS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiT24gYm90aCBwcm9wZXJ0aWVzIC0gU3RhdGljIHZhbHVlIEVkaXRhYmxlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwiT24gdGhlIGFubm90YXRpb24gcHJvcGVydHkgLSBEeW5hbWljIFZhbHVlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIk9uIHRoZSBhbm5vdGF0aW9uIHByb3BlcnR5IC0gU3RhdGljIFZhbHVlXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG59KTtcbiJdfQ==
512
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNpbXBsZUZpZWxkTWFjcm8uc3BlYy50cyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImJlZm9yZUFsbCIsInJlZ2lzdGVyTWFjcm8iLCJGaWVsZE1ldGFkYXRhIiwiYWZ0ZXJBbGwiLCJ1bnJlZ2lzdGVyTWFjcm8iLCJzTWV0YWRhdGFVcmwiLCJjb21waWxlQ0RTIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJtQmluZGluZ0NvbnRleHRzIiwiaXQiLCJ4bWxGaWVsZCIsImdldFRlbXBsYXRlZFhNTCIsInRlbXBsYXRlZFhNTCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBRUFBLEVBQUFBLFFBQVEsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUM1QkMsSUFBQUEsU0FBUyxDQUFDLFlBQU07QUFDZkMsTUFBQUEsYUFBYSxDQUFDQyxhQUFELENBQWI7QUFDQSxLQUZRLENBQVQ7QUFHQUMsSUFBQUEsUUFBUSxDQUFDLFlBQU07QUFDZEMsTUFBQUEsZUFBZSxDQUFDRixhQUFELENBQWY7QUFDQSxLQUZPLENBQVI7QUFHQSxRQUFNRyxZQUFZLEdBQUdDLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDQyxJQUFMLENBQVVDLFNBQVYsRUFBcUIsNkJBQXJCLENBQUQsQ0FBL0I7QUFDQSxRQUFNQyxnQkFBZ0IsR0FBRztBQUN4QixtQkFBYTtBQURXLEtBQXpCO0FBSUFYLElBQUFBLFFBQVEsQ0FBQyx5RUFBRCxFQUE0RSxZQUFNO0FBQ3pGWSxNQUFBQSxFQUFFLENBQUMsaUNBQUQ7QUFBQSxZQUFnRDtBQUNqRCxjQUFNQyxRQUFRLG9OQUFkO0FBRGlELGlDQUt0QkMsZUFBZSxDQUFDRCxRQUFELEVBQVdQLFlBQVgsRUFBeUJLLGdCQUF6QixFQUEyQyxFQUEzQyxDQUxPLGlCQUszQ0ksWUFMMkM7QUFNakRDLFlBQUFBLE1BQU0sQ0FBQ0QsWUFBRCxDQUFOLENBQXFCRSxlQUFyQjtBQU5pRDtBQU9qRCxTQVBD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Q0FBTixDQUFxQkUsZUFBckI7QUFQMkQ7QUFRM0QsU0FSQztBQUFBO0FBQUE7QUFBQSxRQUFGO0FBU0EsS0FsRU8sQ0FBUjtBQW1FQSxHQTNlTyxDQUFSIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21waWxlQ0RTLCBnZXRUZW1wbGF0ZWRYTUwsIHJlZ2lzdGVyTWFjcm8sIHVucmVnaXN0ZXJNYWNybyB9IGZyb20gXCJzYXAvZmUvdGVzdC9KZXN0VGVtcGxhdGluZ0hlbHBlclwiO1xuaW1wb3J0IEZpZWxkTWV0YWRhdGEgZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvRmllbGQubWV0YWRhdGFcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuZGVzY3JpYmUoXCJNYWNyb0ZpZWxkXCIsICgpID0+IHtcblx0YmVmb3JlQWxsKCgpID0+IHtcblx0XHRyZWdpc3Rlck1hY3JvKEZpZWxkTWV0YWRhdGEpO1xuXHR9KTtcblx0YWZ0ZXJBbGwoKCkgPT4ge1xuXHRcdHVucmVnaXN0ZXJNYWNybyhGaWVsZE1ldGFkYXRhKTtcblx0fSk7XG5cdGNvbnN0IHNNZXRhZGF0YVVybCA9IGNvbXBpbGVDRFMocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuL2RhdGEvc2ltcGxlRmllbGRNYWNyby5jZHNcIikpO1xuXHRjb25zdCBtQmluZGluZ0NvbnRleHRzID0ge1xuXHRcdFwiZW50aXR5U2V0XCI6IFwiL0l0ZW1zXCJcblx0fTtcblxuXHRkZXNjcmliZShcIi0gd2l0aCBhbm5vdGF0aW9ucyBvbiB0aGUgZGF0YUZpZWxkJ3MgVmFsdWUgcHJvcGVydHkgKGV4Y2VwdCBzZW1hbnRpYykgXCIsICgpID0+IHtcblx0XHRpdChcIkltYWdlIGlkZW50aWZpZWQgYnkgSXNJbWFnZVVSTCBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8yXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIkltYWdlIGlkZW50aWZpZWQgYnkgaW1hZ2VVUkxTdHJlYW0gXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vM1wiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJJbWFnZSBpZGVudGlmaWVkIGJ5IGlzTWVkaWFUeXBlIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXG5cdFx0aXQoXCJTdHJlYW1Ob0ltYWdlIHJlbmRlcnMgSWNvbiwgTGluayBhbmQgRmlsZVVwbG9hZGVyIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE4XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblxuXHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhbiBlbWFpbCBhZGRyZXNzIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTFcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIHBob25lIG51bWJlciBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzEyXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcblx0XHRcdFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggY3VycmVuY3kgcHJvcGVydHkgXCIsXG5cdFx0XHR7XG5cdFx0XHRcdFwicmVmZXJlbmNlc1wiOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XCJ0eXBlXCI6IFwiQkNQXCIsXG5cdFx0XHRcdFx0XHRcIklEXCI6IFwiMDAyMDc1MTI5NTAwMDAzMTQ1MjQyMDIxXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH0sXG5cdFx0XHRhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTZcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9XG5cdFx0KTtcblx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBRdWFudGl0eSB3aXRoIGN1cnJlbmN5IHByb3BlcnR5IGZvciBBbmFseXRpY3NcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgaXNBbmFseXRpY3M9XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggdW5pdCBvZiBtZWFzdXJlICh0ZXh0KSBwcm9wZXJ0eSBmb3IgYW5hbHl0aWNzXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNFwiXG5cdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBpc0FuYWx5dGljcz1cInRydWVcIiAvPlxuXHRcdFx0XHRcdFx0XHQ8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcblx0XHRcdFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIE11bHRpIExpbmUgdGV4dCBwcm9wZXJ0eSBcIixcblx0XHRcdHtcblx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0XHR7IFwidHlwZVwiOiBcIkpJUkFcIiwgXCJJRFwiOiBcIkZJT1JJVEVDSFAxLTIxMDc4XCIgfSxcblx0XHRcdFx0XHR7IFwidHlwZVwiOiBcIkpJUkFcIiwgXCJJRFwiOiBcIkZJT1JJVEVDSFAxLTE5NDA5XCIgfVxuXHRcdFx0XHRdXG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNiaXMvMFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyB0ZXh0TGluZXNFZGl0PVwiMzFcIiB0ZXh0TWF4TGluZXM9XCIzOVwiIHRleHRFeHBhbmRCZWhhdmlvckRpc3BsYXk9XCJQb3BvdmVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dE1heENoYXJhY3RlcnNEaXNwbGF5PVwiNTBcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHQ8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9XG5cdFx0KTtcblx0XHRpdChcIkRhdGFGaWVsZCB3aXRoIGhhcmRjb2RlIHN0cmluZyBWYWx1ZSBcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNiaXMvMlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSB3aGVuIGl0IHVzZXMgZGlyZWN0bHkgYSBwcm9wZXJ0eSAtIFwiLCAoKSA9PiB7XG5cdFx0aXQoXCJQcm9wZXJ0eSB3aXRoIHRleHQgYXJyYW5nZW1lbnQgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcm9wV2l0aFRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJQcm9wZXJ0eSB3aXRoIHRleHQgYXJyYW5nZW1lbnQgYW5kIG92ZXJyaWRlIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwicHJvcFdpdGhUZXh0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIGRpc3BsYXlNb2RlPVwiVmFsdWVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiQm9vbGVhbiBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwicHJlZmVycmVkSXRlbVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSBjaGVjayBjb250cm9sIHRlbXBsYXRpbmcgZm9yIGJhc2ljIHR5cGVzIGFuZCBpbnB1dCBhbGlnbm1lbnQtIFwiLCAoKSA9PiB7XG5cdFx0ZGVzY3JpYmUoXCItIGZvciB0YWJsZSAtIFwiLCAoKSA9PiB7XG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBzdHJpbmcgcHJvcGVydHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgYm9vbGVhbiBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vNVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFRpbWVzdGFtcCBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIERlY2ltYWwgcHJvcGVydHlcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzdcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBUaW1lIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS84XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgRG91YmxlIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS85XCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgSW50ZWdlciBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTBcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBEYXRlIHByb3BlcnR5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xM1wiXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggdW5pdCBwcm9wZXJ0eSB3aGVyZSB1bml0IGlzIGFsc28gZWRpdGFibGVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzE0XCJcblx0XHRcdFx0XHRcdFx0XHRcdHBhcmVudENvbnRyb2w9XCJUYWJsZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHQvPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBRdWFudGl0eSB3aXRoIHVuaXQgcHJvcGVydHkgd2hlcmUgdW5pdCBpcyByZWFkb25seVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cGFyZW50Q29udHJvbD1cIlRhYmxlXCJcblx0XHRcdFx0XHRcdFx0XHRcdC8+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblx0XHRcdGl0KFwiU2ltcGxlIERhdGFGaWVsZCBvbiBhIFF1YW50aXR5IHdpdGggY3VycmVuY3kgcHJvcGVydHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xNlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgUXVhbnRpdHkgd2l0aCBzdGF0aWMgdW5pdCBhbm5vdGF0aW9uXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xN1wiXG5cdFx0XHRcdFx0XHRcdFx0XHRwYXJlbnRDb250cm9sPVwiVGFibGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5gO1xuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdGRlc2NyaWJlKFwiLSBmb3IgZm9ybSAtIFwiLCAoKSA9PiB7XG5cdFx0XHRpdChcIlNpbXBsZSBEYXRhRmllbGQgb24gYSBzdHJpbmcgcHJvcGVydHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbS8xXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIHRleHRBbGlnbk1vZGU9XCJGb3JtXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGl0KFwiV2hlbiBDb21tb24uaXNEaWdpdHNlcXVlbmNlIGlzIGFubm90YXRlZCBmb3IgYSBzdHJpbmdcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiaXNEaWdpdFNlcXVlbmNlXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIHRleHRBbGlnbk1vZGU9XCJGb3JtXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgSW50ZWdlciBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTBcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgdGV4dEFsaWduTW9kZT1cIkZvcm1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aXQoXCJTaW1wbGUgRGF0YUZpZWxkIG9uIGEgRGF0ZSBwcm9wZXJ0eVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0vMTNcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgdGV4dEFsaWduTW9kZT1cIkZvcm1cIi8+XG5cdFx0XHRcdFx0XHRcdFx0PC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSBjaGVjayBjb250cm9sIHRlbXBsYXRpbmcgZm9yIGVtcHR5IHBsYWNlSG9sZGVyIHRyaWdnZXItIFwiLCAoKSA9PiB7XG5cdFx0aXQoXCJ3aGVuIHRoZXJlIGlzIG5vIGZvcm1hdE9wdGlvbnMvc2hvd0VtcHR5SW5kaWNhdG9yIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIndoZW4gdGhlcmUgaXMgZm9ybWF0T3B0aW9ucy9zaG93RW1wdHlJbmRpY2F0b3IgZm9yIGEgRGF0YWZpZWxkIFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtLzFcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgc2hvd0VtcHR5SW5kaWNhdG9yPVwidHJ1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIndoZW4gdGhlcmUgaXMgZm9ybWF0T3B0aW9ucy9zaG93RW1wdHlJbmRpY2F0b3IgZm9yIGEgcHJvcGVydHkgXCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcm9wV2l0aFRleHRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgc2hvd0VtcHR5SW5kaWNhdG9yPVwidHJ1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSBjaGVjayBjb250cm9sIHRlbXBsYXRpbmcgZm9yIExpc3RSZXBvcnQgLyBmaWVsZCB3aXRoIG5vd3JhcHBlclwiLCAoKSA9PiB7XG5cdFx0aXQoXG5cdFx0XHRcIndoZW4gdGhlcmUgaXMgYSBub3dyYXBwZXIgZm9yIGEgZmllbGQgXCIsXG5cdFx0XHR7XG5cdFx0XHRcdFwicmVmZXJlbmNlc1wiOiBbeyBcInR5cGVcIjogXCJKSVJBXCIsIFwiSURcIjogXCJGSU9SSVRFQ0hQMS0yMjAxMlwiIH1dXG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwicHJvcFdpdGhUZXh0XCJcblx0XHRcdFx0XHRcdFx0XHRcdGVkaXRNb2RlPVwiRGlzcGxheVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGludGVybmFsTWFjcm86Zm9ybWF0T3B0aW9ucyBmaWVsZE1vZGU9XCJub3dyYXBwZXJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0aXQoXG5cdFx0XHRcIndoZW4gdGhlcmUgaXMgbm90IGEgbm93cmFwcGVyIGZvciBhIGZpZWxkIFwiLFxuXHRcdFx0e1xuXHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW3sgXCJ0eXBlXCI6IFwiSklSQVwiLCBcIklEXCI6IFwiRklPUklURUNIUDEtMjIwMTJcIiB9XVxuXHRcdFx0fSxcblx0XHRcdGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cInByb3BXaXRoVGV4dFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlZGl0TW9kZT1cIkRpc3BsYXlcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpbnRlcm5hbE1hY3JvOmZvcm1hdE9wdGlvbnMgZmllbGRNb2RlPVwiXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0XHR9XG5cdFx0KTtcblxuXHRcdGl0KFxuXHRcdFx0XCJ3aGVuIHRoZXJlIGlzIGEgbm93cmFwcGVyIGZvciBhIGZpZWxkIGFuZCBhbmFseXRpY3MgaXMgdHJ1ZSBcIixcblx0XHRcdHtcblx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFt7IFwidHlwZVwiOiBcIkpJUkFcIiwgXCJJRFwiOiBcIkZJT1JJVEVDSFAxLTIyMDEyXCIgfV1cblx0XHRcdH0sXG5cdFx0XHRhc3luYyAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJwcm9wV2l0aFRleHRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZWRpdE1vZGU9XCJEaXNwbGF5XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW50ZXJuYWxNYWNybzpmb3JtYXRPcHRpb25zIGZpZWxkTW9kZT1cIm5vd3JhcHBlclwiIGlzQW5hbHl0aWNzPVwidHJ1ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdFx0fVxuXHRcdCk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiLSBkYXRhRmllbGQgYW5ub3RhdGlvbi0gXCIsICgpID0+IHtcblx0XHRpdChcImNyaXRpY2FsaXR5IFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0RhdGFGaWVsZHMvMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCJUZXN0IHRoZSBSZWFkT25seSBwcm9wZXJ0eSBcIiwgKCkgPT4ge1xuXHRcdGl0KFwiT24gdGhlIERhdGFGaWVsZCBwcm9wZXJ0eSAtIER5bmFtaWMgdmFsdWVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNGaWVsZENvbnRyb2xWYWx1ZS8wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiT24gdGhlIERhdGFGaWVsZCBwcm9wZXJ0eSAtIFN0YXRpYyB2YWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIk9uIGJvdGggcHJvcGVydGllcyAtIER5bmFtaWMgVmFsdWVcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3QgeG1sRmllbGQgPSBgPGludGVybmFsTWFjcm86RmllbGQgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0PVwie2VudGl0eVNldD59XCJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbSNGaWVsZENvbnRyb2xWYWx1ZS8yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ludGVybmFsTWFjcm86RmllbGQ+YDtcblxuXHRcdFx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGVkWE1MKHhtbEZpZWxkLCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIHt9KTtcblx0XHRcdGV4cGVjdCh0ZW1wbGF0ZWRYTUwpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHRcdH0pO1xuXHRcdGl0KFwiT24gYm90aCBwcm9wZXJ0aWVzIC0gU3RhdGljIHZhbHVlIFJlYWRPbmx5XCIsIGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IHhtbEZpZWxkID0gYDxpbnRlcm5hbE1hY3JvOkZpZWxkIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldD1cIntlbnRpdHlTZXQ+fVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhRmllbGQ9XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW0jRmllbGRDb250cm9sVmFsdWUvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pbnRlcm5hbE1hY3JvOkZpZWxkPmA7XG5cblx0XHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWxGaWVsZCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCB7fSk7XG5cdFx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0XHR9KTtcblx0XHRpdChcIk9uIGJvdGggcHJvcGVydGllcyAtIFN0YXRpYyB2YWx1ZSBFZGl0YWJsZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cblx0XHRpdChcIk9uIHRoZSBhbm5vdGF0aW9uIHByb3BlcnR5IC0gRHluYW1pYyBWYWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdFx0aXQoXCJPbiB0aGUgYW5ub3RhdGlvbiBwcm9wZXJ0eSAtIFN0YXRpYyBWYWx1ZVwiLCBhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCB4bWxGaWVsZCA9IGA8aW50ZXJuYWxNYWNybzpGaWVsZCB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ9XCJ7ZW50aXR5U2V0Pn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtI0ZpZWxkQ29udHJvbFZhbHVlLzZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW50ZXJuYWxNYWNybzpGaWVsZD5gO1xuXG5cdFx0XHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0ZWRYTUwoeG1sRmllbGQsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywge30pO1xuXHRcdFx0ZXhwZWN0KHRlbXBsYXRlZFhNTCkudG9NYXRjaFNuYXBzaG90KCk7XG5cdFx0fSk7XG5cdH0pO1xufSk7XG4iXX0=
@@ -358,6 +358,62 @@ describe("MacroField", () => {
358
358
  });
359
359
  });
360
360
 
361
+ describe("- check control templating for ListReport / field with nowrapper", () => {
362
+ it(
363
+ "when there is a nowrapper for a field ",
364
+ {
365
+ "references": [{ "type": "JIRA", "ID": "FIORITECHP1-22012" }]
366
+ },
367
+ async () => {
368
+ const xmlField = `<internalMacro:Field xmlns:internalMacro="sap.fe.macros.internal"
369
+ entitySet="{entitySet>}"
370
+ dataField="propWithText"
371
+ editMode="Display">
372
+ <internalMacro:formatOptions fieldMode="nowrapper"/>
373
+ </internalMacro:Field>`;
374
+
375
+ const templatedXML = await getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {});
376
+ expect(templatedXML).toMatchSnapshot();
377
+ }
378
+ );
379
+
380
+ it(
381
+ "when there is not a nowrapper for a field ",
382
+ {
383
+ "references": [{ "type": "JIRA", "ID": "FIORITECHP1-22012" }]
384
+ },
385
+ async () => {
386
+ const xmlField = `<internalMacro:Field xmlns:internalMacro="sap.fe.macros.internal"
387
+ entitySet="{entitySet>}"
388
+ dataField="propWithText"
389
+ editMode="Display">
390
+ <internalMacro:formatOptions fieldMode=""/>
391
+ </internalMacro:Field>`;
392
+
393
+ const templatedXML = await getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {});
394
+ expect(templatedXML).toMatchSnapshot();
395
+ }
396
+ );
397
+
398
+ it(
399
+ "when there is a nowrapper for a field and analytics is true ",
400
+ {
401
+ "references": [{ "type": "JIRA", "ID": "FIORITECHP1-22012" }]
402
+ },
403
+ async () => {
404
+ const xmlField = `<internalMacro:Field xmlns:internalMacro="sap.fe.macros.internal"
405
+ entitySet="{entitySet>}"
406
+ dataField="propWithText"
407
+ editMode="Display">
408
+ <internalMacro:formatOptions fieldMode="nowrapper" isAnalytics="true"/>
409
+ </internalMacro:Field>`;
410
+
411
+ const templatedXML = await getTemplatedXML(xmlField, sMetadataUrl, mBindingContexts, {});
412
+ expect(templatedXML).toMatchSnapshot();
413
+ }
414
+ );
415
+ });
416
+
361
417
  describe("- dataField annotation- ", () => {
362
418
  it("criticality ", async () => {
363
419
  const xmlField = `<internalMacro:Field xmlns:internalMacro="sap.fe.macros.internal"
@@ -0,0 +1,68 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/test/JestTemplatingHelper", "sap/fe/macros/Table.metadata", "path", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/Table", "sap/fe/core/converters/ManifestSettings"], function (JestTemplatingHelper, TableAPI, path, MetaModelConverter, Table, ManifestSettings) {
6
+ "use strict";
7
+
8
+ var TemplateType = ManifestSettings.TemplateType;
9
+ var createTableVisualization = Table.createTableVisualization;
10
+ var convertTypes = MetaModelConverter.convertTypes;
11
+ var getMetaModel = JestTemplatingHelper.getMetaModel;
12
+ var getConverterContextForTest = JestTemplatingHelper.getConverterContextForTest;
13
+ var unregisterMacro = JestTemplatingHelper.unregisterMacro;
14
+ var registerMacro = JestTemplatingHelper.registerMacro;
15
+ var getTemplatedXML = JestTemplatingHelper.getTemplatedXML;
16
+ var compileCDS = JestTemplatingHelper.compileCDS;
17
+
18
+ describe("TableFieldLabel", function () {
19
+ beforeAll(function () {
20
+ registerMacro(TableAPI);
21
+ });
22
+ afterAll(function () {
23
+ unregisterMacro(TableAPI);
24
+ });
25
+ var sMetadataUrl = compileCDS(path.join(__dirname, "./data/TableFieldLabel.cds"));
26
+ var mBindingContexts = {
27
+ "entitySet": "/SalesOrderItem",
28
+ "tableDef": "/"
29
+ };
30
+ it("FieldGroup DataFields Label within a LineItem", function () {
31
+ try {
32
+ return Promise.resolve(getMetaModel(sMetadataUrl)).then(function (metaModel) {
33
+ var convertedTypes = convertTypes(metaModel);
34
+ var manifestSettings = {
35
+ entitySet: "SalesOrderItem",
36
+ converterType: TemplateType.ListReport,
37
+ controlConfiguration: {
38
+ "@com.sap.vocabularies.UI.v1.LineItem": {
39
+ columns: {
40
+ "DataFieldForAnnotation::FieldGroup::myFieldGroup": {
41
+ showDataFieldsLabel: true
42
+ }
43
+ }
44
+ }
45
+ }
46
+ };
47
+ var converterContext = getConverterContextForTest(convertedTypes, manifestSettings);
48
+ var resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
49
+ var lineItem = resolvedTarget.annotation;
50
+ var tableVisualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
51
+ var mInternalModels = {
52
+ "tableDef": {
53
+ data: tableVisualization,
54
+ isTemplateModel: true
55
+ }
56
+ };
57
+ var xml = "<internalMacro:Table xmlns:internalMacro=\"sap.fe.macros.internal\"\n\t\t\t\t\t\tid=\"abc\"\n\t\t\t\t\t\tmetaPath=\"@com.sap.vocabularies.UI.v1.LineItem\"\n\t\t\t\t\t\tcontextPath=\"/SalesOrderItem\"\n\t\t\t\t\t\ttableDefinition=\"{tableDef>}\"\n\t\t/>";
58
+ return Promise.resolve(getTemplatedXML(xml, sMetadataUrl, mBindingContexts, mInternalModels)).then(function (templatedXML) {
59
+ expect(templatedXML).toMatchSnapshot();
60
+ });
61
+ });
62
+ } catch (e) {
63
+ return Promise.reject(e);
64
+ }
65
+ });
66
+ });
67
+ }, false);
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhYmxlRmllbGRMYWJlbC5zcGVjLnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwicmVnaXN0ZXJNYWNybyIsIlRhYmxlQVBJIiwiYWZ0ZXJBbGwiLCJ1bnJlZ2lzdGVyTWFjcm8iLCJzTWV0YWRhdGFVcmwiLCJjb21waWxlQ0RTIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJtQmluZGluZ0NvbnRleHRzIiwiaXQiLCJnZXRNZXRhTW9kZWwiLCJtZXRhTW9kZWwiLCJjb252ZXJ0ZWRUeXBlcyIsImNvbnZlcnRUeXBlcyIsIm1hbmlmZXN0U2V0dGluZ3MiLCJlbnRpdHlTZXQiLCJjb252ZXJ0ZXJUeXBlIiwiVGVtcGxhdGVUeXBlIiwiTGlzdFJlcG9ydCIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwiY29sdW1ucyIsInNob3dEYXRhRmllbGRzTGFiZWwiLCJjb252ZXJ0ZXJDb250ZXh0IiwiZ2V0Q29udmVydGVyQ29udGV4dEZvclRlc3QiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwibGluZUl0ZW0iLCJhbm5vdGF0aW9uIiwidGFibGVWaXN1YWxpemF0aW9uIiwiY3JlYXRlVGFibGVWaXN1YWxpemF0aW9uIiwibUludGVybmFsTW9kZWxzIiwiZGF0YSIsImlzVGVtcGxhdGVNb2RlbCIsInhtbCIsImdldFRlbXBsYXRlZFhNTCIsInRlbXBsYXRlZFhNTCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFhQUEsRUFBQUEsUUFBUSxDQUFDLGlCQUFELEVBQW9CLFlBQU07QUFDakNDLElBQUFBLFNBQVMsQ0FBQyxZQUFNO0FBQ2ZDLE1BQUFBLGFBQWEsQ0FBQ0MsUUFBRCxDQUFiO0FBQ0EsS0FGUSxDQUFUO0FBR0FDLElBQUFBLFFBQVEsQ0FBQyxZQUFNO0FBQ2RDLE1BQUFBLGVBQWUsQ0FBQ0YsUUFBRCxDQUFmO0FBQ0EsS0FGTyxDQUFSO0FBR0EsUUFBTUcsWUFBWSxHQUFHQyxVQUFVLENBQUNDLElBQUksQ0FBQ0MsSUFBTCxDQUFVQyxTQUFWLEVBQXFCLDRCQUFyQixDQUFELENBQS9CO0FBQ0EsUUFBTUMsZ0JBQWdCLEdBQUc7QUFDeEIsbUJBQWEsaUJBRFc7QUFFeEIsa0JBQVk7QUFGWSxLQUF6QjtBQUtBQyxJQUFBQSxFQUFFLENBQUMsK0NBQUQ7QUFBQSxVQUE4RDtBQUFBLCtCQUN2Q0MsWUFBWSxDQUFDUCxZQUFELENBRDJCLGlCQUN6RFEsU0FEeUQ7QUFFL0QsY0FBTUMsY0FBYyxHQUFHQyxZQUFZLENBQUNGLFNBQUQsQ0FBbkM7QUFDQSxjQUFNRyxnQkFBZ0IsR0FBRztBQUN4QkMsWUFBQUEsU0FBUyxFQUFFLGdCQURhO0FBRXhCQyxZQUFBQSxhQUFhLEVBQUVDLFlBQVksQ0FBQ0MsVUFGSjtBQUd4QkMsWUFBQUEsb0JBQW9CLEVBQUU7QUFDckIsc0RBQXdDO0FBQ3ZDQyxnQkFBQUEsT0FBTyxFQUFFO0FBQ1Isc0VBQW9EO0FBQ25EQyxvQkFBQUEsbUJBQW1CLEVBQUU7QUFEOEI7QUFENUM7QUFEOEI7QUFEbkI7QUFIRSxXQUF6QjtBQWFBLGNBQU1DLGdCQUFnQixHQUFHQywwQkFBMEIsQ0FBQ1gsY0FBRCxFQUFpQkUsZ0JBQWpCLENBQW5EO0FBQ0EsY0FBTVUsY0FBYyxHQUFHRixnQkFBZ0IsQ0FBQ0csdUJBQWpCLENBQXlDLHNDQUF6QyxDQUF2QjtBQUNBLGNBQU1DLFFBQVEsR0FBR0YsY0FBYyxDQUFDRyxVQUFoQztBQUNBLGNBQU1DLGtCQUFrQixHQUFHQyx3QkFBd0IsQ0FBQ0gsUUFBRCxFQUFXLHNDQUFYLEVBQW1ESixnQkFBbkQsQ0FBbkQ7QUFDQSxjQUFNUSxlQUFlLEdBQUc7QUFDdkIsd0JBQVk7QUFDWEMsY0FBQUEsSUFBSSxFQUFFSCxrQkFESztBQUVYSSxjQUFBQSxlQUFlLEVBQUU7QUFGTjtBQURXLFdBQXhCO0FBT0EsY0FBTUMsR0FBRyxpUUFBVDtBQTNCK0QsaUNBaUNwQ0MsZUFBZSxDQUFDRCxHQUFELEVBQU05QixZQUFOLEVBQW9CSyxnQkFBcEIsRUFBc0NzQixlQUF0QyxDQWpDcUIsaUJBaUN6REssWUFqQ3lEO0FBa0MvREMsWUFBQUEsTUFBTSxDQUFDRCxZQUFELENBQU4sQ0FBcUJFLGVBQXJCO0FBbEMrRDtBQUFBO0FBbUMvRCxPQW5DQztBQUFBO0FBQUE7QUFBQSxNQUFGO0FBb0NBLEdBakRPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGNvbXBpbGVDRFMsXG5cdGdldFRlbXBsYXRlZFhNTCxcblx0cmVnaXN0ZXJNYWNybyxcblx0dW5yZWdpc3Rlck1hY3JvLFxuXHRnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yVGVzdCxcblx0Z2V0TWV0YU1vZGVsXG59IGZyb20gXCJzYXAvZmUvdGVzdC9KZXN0VGVtcGxhdGluZ0hlbHBlclwiO1xuaW1wb3J0IFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL1RhYmxlLm1ldGFkYXRhXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9UYWJsZVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgTGluZUl0ZW0gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcblxuZGVzY3JpYmUoXCJUYWJsZUZpZWxkTGFiZWxcIiwgKCkgPT4ge1xuXHRiZWZvcmVBbGwoKCkgPT4ge1xuXHRcdHJlZ2lzdGVyTWFjcm8oVGFibGVBUEkpO1xuXHR9KTtcblx0YWZ0ZXJBbGwoKCkgPT4ge1xuXHRcdHVucmVnaXN0ZXJNYWNybyhUYWJsZUFQSSk7XG5cdH0pO1xuXHRjb25zdCBzTWV0YWRhdGFVcmwgPSBjb21waWxlQ0RTKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi9kYXRhL1RhYmxlRmllbGRMYWJlbC5jZHNcIikpO1xuXHRjb25zdCBtQmluZGluZ0NvbnRleHRzID0ge1xuXHRcdFwiZW50aXR5U2V0XCI6IFwiL1NhbGVzT3JkZXJJdGVtXCIsXG5cdFx0XCJ0YWJsZURlZlwiOiBcIi9cIlxuXHR9O1xuXG5cdGl0KFwiRmllbGRHcm91cCBEYXRhRmllbGRzIExhYmVsIHdpdGhpbiBhIExpbmVJdGVtXCIsIGFzeW5jICgpID0+IHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBhd2FpdCBnZXRNZXRhTW9kZWwoc01ldGFkYXRhVXJsKTtcblx0XHRjb25zdCBjb252ZXJ0ZWRUeXBlcyA9IGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpO1xuXHRcdGNvbnN0IG1hbmlmZXN0U2V0dGluZ3MgPSB7XG5cdFx0XHRlbnRpdHlTZXQ6IFwiU2FsZXNPcmRlckl0ZW1cIixcblx0XHRcdGNvbnZlcnRlclR5cGU6IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LFxuXHRcdFx0Y29udHJvbENvbmZpZ3VyYXRpb246IHtcblx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIjoge1xuXHRcdFx0XHRcdGNvbHVtbnM6IHtcblx0XHRcdFx0XHRcdFwiRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjo6RmllbGRHcm91cDo6bXlGaWVsZEdyb3VwXCI6IHtcblx0XHRcdFx0XHRcdFx0c2hvd0RhdGFGaWVsZHNMYWJlbDogdHJ1ZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IGdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0KGNvbnZlcnRlZFR5cGVzLCBtYW5pZmVzdFNldHRpbmdzKTtcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIik7XG5cdFx0Y29uc3QgbGluZUl0ZW0gPSByZXNvbHZlZFRhcmdldC5hbm5vdGF0aW9uIGFzIExpbmVJdGVtO1xuXHRcdGNvbnN0IHRhYmxlVmlzdWFsaXphdGlvbiA9IGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbihsaW5lSXRlbSwgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0Y29uc3QgbUludGVybmFsTW9kZWxzID0ge1xuXHRcdFx0XCJ0YWJsZURlZlwiOiB7XG5cdFx0XHRcdGRhdGE6IHRhYmxlVmlzdWFsaXphdGlvbixcblx0XHRcdFx0aXNUZW1wbGF0ZU1vZGVsOiB0cnVlXG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdGNvbnN0IHhtbCA9IGA8aW50ZXJuYWxNYWNybzpUYWJsZSB4bWxuczppbnRlcm5hbE1hY3JvPVwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiXG5cdFx0XHRcdFx0XHRpZD1cImFiY1wiXG5cdFx0XHRcdFx0XHRtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiXG5cdFx0XHRcdFx0XHRjb250ZXh0UGF0aD1cIi9TYWxlc09yZGVySXRlbVwiXG5cdFx0XHRcdFx0XHR0YWJsZURlZmluaXRpb249XCJ7dGFibGVEZWY+fVwiXG5cdFx0Lz5gO1xuXHRcdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRlZFhNTCh4bWwsIHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywgbUludGVybmFsTW9kZWxzKTtcblx0XHRleHBlY3QodGVtcGxhdGVkWE1MKS50b01hdGNoU25hcHNob3QoKTtcblx0fSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,65 @@
1
+ import {
2
+ compileCDS,
3
+ getTemplatedXML,
4
+ registerMacro,
5
+ unregisterMacro,
6
+ getConverterContextForTest,
7
+ getMetaModel
8
+ } from "sap/fe/test/JestTemplatingHelper";
9
+ import TableAPI from "sap/fe/macros/Table.metadata";
10
+ import * as path from "path";
11
+ import { convertTypes } from "sap/fe/core/converters/MetaModelConverter";
12
+ import { createTableVisualization } from "sap/fe/core/converters/controls/Common/Table";
13
+ import { TemplateType } from "sap/fe/core/converters/ManifestSettings";
14
+ import { LineItem } from "@sap-ux/vocabularies-types";
15
+
16
+ describe("TableFieldLabel", () => {
17
+ beforeAll(() => {
18
+ registerMacro(TableAPI);
19
+ });
20
+ afterAll(() => {
21
+ unregisterMacro(TableAPI);
22
+ });
23
+ const sMetadataUrl = compileCDS(path.join(__dirname, "./data/TableFieldLabel.cds"));
24
+ const mBindingContexts = {
25
+ "entitySet": "/SalesOrderItem",
26
+ "tableDef": "/"
27
+ };
28
+
29
+ it("FieldGroup DataFields Label within a LineItem", async () => {
30
+ const metaModel = await getMetaModel(sMetadataUrl);
31
+ const convertedTypes = convertTypes(metaModel);
32
+ const manifestSettings = {
33
+ entitySet: "SalesOrderItem",
34
+ converterType: TemplateType.ListReport,
35
+ controlConfiguration: {
36
+ "@com.sap.vocabularies.UI.v1.LineItem": {
37
+ columns: {
38
+ "DataFieldForAnnotation::FieldGroup::myFieldGroup": {
39
+ showDataFieldsLabel: true
40
+ }
41
+ }
42
+ }
43
+ }
44
+ };
45
+ const converterContext = getConverterContextForTest(convertedTypes, manifestSettings);
46
+ const resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
47
+ const lineItem = resolvedTarget.annotation as LineItem;
48
+ const tableVisualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
49
+ const mInternalModels = {
50
+ "tableDef": {
51
+ data: tableVisualization,
52
+ isTemplateModel: true
53
+ }
54
+ };
55
+
56
+ const xml = `<internalMacro:Table xmlns:internalMacro="sap.fe.macros.internal"
57
+ id="abc"
58
+ metaPath="@com.sap.vocabularies.UI.v1.LineItem"
59
+ contextPath="/SalesOrderItem"
60
+ tableDefinition="{tableDef>}"
61
+ />`;
62
+ const templatedXML = await getTemplatedXML(xml, sMetadataUrl, mBindingContexts, mInternalModels);
63
+ expect(templatedXML).toMatchSnapshot();
64
+ });
65
+ });
@@ -0,0 +1,82 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ChartDelegate _createPropertyInfosForAggregatable check _createPropertyInfosForAggregatable for custom aggregates 1`] = `
4
+ Array [
5
+ Object {
6
+ "aggregatable": true,
7
+ "availableRoles": undefined,
8
+ "contextDefiningProperty": Array [],
9
+ "datapoint": null,
10
+ "groupable": false,
11
+ "kind": "Aggregatable",
12
+ "label": "Custom Aggregate (SalesAmount)",
13
+ "name": "SalesAmount",
14
+ "role": "axis1",
15
+ "sortOrder": "both",
16
+ "sortable": true,
17
+ },
18
+ ]
19
+ `;
20
+
21
+ exports[`ChartDelegate _createPropertyInfosForAggregatable check _createPropertyInfosForAggregatable for transformational aggregates 1`] = `
22
+ Array [
23
+ Object {
24
+ "aggregatable": true,
25
+ "aggregationMethod": "min",
26
+ "availableRoles": undefined,
27
+ "datapoint": null,
28
+ "filterable": true,
29
+ "groupable": false,
30
+ "kind": "Aggregatable",
31
+ "label": "Minimal Net Amount",
32
+ "maxConditions": -1,
33
+ "name": "minPricing",
34
+ "propertyPath": "NetPricing",
35
+ "role": "axis1",
36
+ "sortable": true,
37
+ },
38
+ Object {
39
+ "aggregatable": true,
40
+ "aggregationMethod": "max",
41
+ "availableRoles": undefined,
42
+ "datapoint": null,
43
+ "filterable": true,
44
+ "groupable": false,
45
+ "kind": "Aggregatable",
46
+ "label": "Maximal Net Amount",
47
+ "maxConditions": -1,
48
+ "name": "maxPricing",
49
+ "propertyPath": "NetPricing",
50
+ "role": "axis1",
51
+ "sortable": true,
52
+ },
53
+ ]
54
+ `;
55
+
56
+ exports[`ChartDelegate _getBindingInfo check binding info of the chart when collection path is entityset 1`] = `
57
+ Object {
58
+ "parameters": Object {
59
+ "$$groupId": "$auto.workers",
60
+ "entitySet": "SalesOrderManage",
61
+ "noPaging": true,
62
+ "provideGrandTotals": true,
63
+ "provideTotalResultSize": true,
64
+ "useBatchRequests": true,
65
+ },
66
+ "path": "//SalesOrderManage",
67
+ }
68
+ `;
69
+
70
+ exports[`ChartDelegate _getBindingInfo check binding info of the chart when collection path is not entityset 1`] = `
71
+ Object {
72
+ "parameters": Object {
73
+ "$$groupId": "$auto.workers",
74
+ "entitySet": "SalesOrderItem",
75
+ "noPaging": true,
76
+ "provideGrandTotals": true,
77
+ "provideTotalResultSize": true,
78
+ "useBatchRequests": true,
79
+ },
80
+ "path": "_Item",
81
+ }
82
+ `;
@@ -25,7 +25,7 @@ exports[`DataPoint macro tests DataPoint from a Header Facet reached via a navig
25
25
  xmlns:ns2=\\"sap.ui.core\\"
26
26
  ns2:require=\\"{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}\\"
27
27
  state=\\"{= (%{_SubItems/Criticality} === 'UI.CriticalityType/Negative' || %{_SubItems/Criticality} === 1 || %{_SubItems/Criticality} === '1') ? 'Error' : ((%{_SubItems/Criticality} === 'UI.CriticalityType/Critical' || %{_SubItems/Criticality} === 2 || %{_SubItems/Criticality} === '2') ? 'Warning' : ((%{_SubItems/Criticality} === 'UI.CriticalityType/Positive' || %{_SubItems/Criticality} === 3 || %{_SubItems/Criticality} === '3') ? 'Success' : ((%{_SubItems/Criticality} === 'UI.CriticalityType/Information' || %{_SubItems/Criticality} === 5 || %{_SubItems/Criticality} === '5') ? 'Indication05' : 'None')))}\\"
28
- number=\\"{path:'_SubItems/ObjectNumber', type: 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}}\\"
28
+ number=\\"{path:'_SubItems/ObjectNumber', type: 'sap.ui.model.odata.type.String', constraints: {maxLength: 60}, formatOptions: {parseKeepsEmptyString: true}}\\"
29
29
  visible=\\"true\\"
30
30
  emphasized=\\"false\\"
31
31
  class=\\"sapMObjectNumberLarge\\"
@@ -76,7 +76,7 @@ exports[`DataPoint macro tests DataPoint macro with Number, defaultDataPointStyl
76
76
  ns2:require=\\"{ FieldRuntime: 'sap/fe/macros/field/FieldRuntime' }\\"
77
77
  icon=\\"\\"
78
78
  state=\\"None\\"
79
- text=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {precision: 4, scale: 2}}\\"
79
+ text=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {scale: 2, precision: 4}}\\"
80
80
  />
81
81
  </root>
82
82
  "
@@ -301,7 +301,7 @@ exports[`DataPoint macro tests DataPoint with Nav Prop in its target 1`] = `
301
301
  xmlns:ns2=\\"sap.ui.core\\"
302
302
  ns2:require=\\"{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}\\"
303
303
  state=\\"None\\"
304
- number=\\"{path:'_SubItems/Text', type: 'sap.ui.model.odata.type.String', formatOptions: {parseKeepsEmptyString: true}}\\"
304
+ number=\\"{path:'_SubItems/Text', type: 'sap.ui.model.odata.type.String', constraints: {maxLength: 10}, formatOptions: {parseKeepsEmptyString: true}}\\"
305
305
  visible=\\"true\\"
306
306
  emphasized=\\"false\\"
307
307
  class=\\"sapMObjectNumberLarge\\"
@@ -320,7 +320,7 @@ exports[`DataPoint macro tests Datapoint with value format, defaultDataPointStyl
320
320
  ns2:require=\\"{ FieldRuntime: 'sap/fe/macros/field/FieldRuntime' }\\"
321
321
  icon=\\"\\"
322
322
  state=\\"None\\"
323
- text=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {precision: 4, scale: 1}}\\"
323
+ text=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {scale: 1, precision: 4}}\\"
324
324
  />
325
325
  </root>
326
326
  "
@@ -383,6 +383,24 @@ exports[`DataPoint macro tests Header: DataPoint macro with ObjectNumber ( measu
383
383
  "
384
384
  `;
385
385
 
386
+ exports[`DataPoint macro tests Header: DataPoint macro with ObjectNumber ( type DateTimeOffset ) 1`] = `
387
+ "<root>
388
+ <ObjectNumber
389
+ xmlns=\\"sap.m\\"
390
+ xmlns:ns1=\\"http://schemas.sap.com/sapui5/preprocessorextension/sap.fe.unittesting/1\\"
391
+ ns1:id=\\"ObjectNumberTest\\"
392
+ xmlns:ns2=\\"sap.ui.core\\"
393
+ ns2:require=\\"{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}\\"
394
+ state=\\"None\\"
395
+ number=\\"{path:'creationDate', type: 'sap.ui.model.odata.type.DateTimeOffset', constraints: {precision: 7}}\\"
396
+ visible=\\"true\\"
397
+ emphasized=\\"false\\"
398
+ class=\\"sapMObjectNumberLarge\\"
399
+ />
400
+ </root>
401
+ "
402
+ `;
403
+
386
404
  exports[`DataPoint macro tests Header: DataPoint macro with ProgressIndicator 1`] = `
387
405
  "<root>
388
406
  <label
@@ -446,7 +464,7 @@ exports[`DataPoint macro tests Header: DataPoint macro with SalesOrderTypeBis 1`
446
464
  xmlns:ns2=\\"sap.ui.core\\"
447
465
  ns2:require=\\"{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}\\"
448
466
  state=\\"None\\"
449
- number=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {precision: 4, scale: 2}}\\"
467
+ number=\\"{path:'decimal', type: 'sap.ui.model.odata.type.Decimal', constraints: {scale: 2, precision: 4}}\\"
450
468
  visible=\\"true\\"
451
469
  emphasized=\\"false\\"
452
470
  class=\\"sapMObjectNumberLarge\\"