@sapui5/sap.fe.core 1.97.0 → 1.99.1

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 (249) hide show
  1. package/package.json +5 -4
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +377 -405
  4. package/src/sap/fe/core/AnnotationHelper.ts +385 -0
  5. package/src/sap/fe/core/AppComponent.js +6 -3
  6. package/src/sap/fe/core/AppStateHandler.js +229 -181
  7. package/src/sap/fe/core/AppStateHandler.ts +171 -0
  8. package/src/sap/fe/core/BaseController.js +3 -2
  9. package/src/sap/fe/core/BusyLocker.js +105 -121
  10. package/src/sap/fe/core/BusyLocker.ts +98 -0
  11. package/src/sap/fe/core/CommonUtils.js +2073 -2379
  12. package/src/sap/fe/core/CommonUtils.ts +2078 -0
  13. package/src/sap/fe/core/ExtensionAPI.js +16 -7
  14. package/src/sap/fe/core/PageController.js +84 -119
  15. package/src/sap/fe/core/PageController.ts +101 -0
  16. package/src/sap/fe/core/RouterProxy.js +986 -807
  17. package/src/sap/fe/core/RouterProxy.ts +838 -0
  18. package/src/sap/fe/core/Synchronization.js +51 -35
  19. package/src/sap/fe/core/Synchronization.ts +29 -0
  20. package/src/sap/fe/core/TemplateComponent.js +173 -155
  21. package/src/sap/fe/core/TemplateComponent.ts +166 -0
  22. package/src/sap/fe/core/TemplateModel.js +97 -54
  23. package/src/sap/fe/core/TemplateModel.ts +64 -0
  24. package/src/sap/fe/core/TransactionHelper.js +1576 -1579
  25. package/src/sap/fe/core/TransactionHelper.ts +1706 -0
  26. package/src/sap/fe/core/actions/draft.js +560 -581
  27. package/src/sap/fe/core/actions/draft.ts +594 -0
  28. package/src/sap/fe/core/actions/messageHandling.js +545 -511
  29. package/src/sap/fe/core/actions/messageHandling.ts +532 -0
  30. package/src/sap/fe/core/actions/nonDraft.js +17 -19
  31. package/src/sap/fe/core/actions/nonDraft.ts +12 -0
  32. package/src/sap/fe/core/actions/operations.js +1074 -1211
  33. package/src/sap/fe/core/actions/operations.ts +1162 -0
  34. package/src/sap/fe/core/actions/sticky.js +102 -105
  35. package/src/sap/fe/core/actions/sticky.ts +102 -0
  36. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +3 -2
  37. package/src/sap/fe/core/controllerextensions/EditFlow.js +229 -260
  38. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +3 -2
  39. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +288 -13
  40. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +27 -23
  41. package/src/sap/fe/core/controllerextensions/InternalRouting.js +82 -46
  42. package/src/sap/fe/core/controllerextensions/KPIManagement.js +113 -25
  43. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +135 -44
  44. package/src/sap/fe/core/controllerextensions/MassEdit.js +172 -0
  45. package/src/sap/fe/core/controllerextensions/MessageHandler.js +22 -9
  46. package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
  47. package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -8
  48. package/src/sap/fe/core/controllerextensions/Paginator.js +37 -9
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +8 -4
  50. package/src/sap/fe/core/controllerextensions/Routing.js +25 -5
  51. package/src/sap/fe/core/controllerextensions/RoutingListener.js +3 -2
  52. package/src/sap/fe/core/controllerextensions/Share.js +22 -8
  53. package/src/sap/fe/core/controllerextensions/SideEffects.js +9 -9
  54. package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -21
  55. package/src/sap/fe/core/controllerextensions/ViewState.js +3 -2
  56. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -1
  57. package/src/sap/fe/core/controls/CommandExecution.js +3 -2
  58. package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -2
  59. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -2
  60. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +9 -5
  61. package/src/sap/fe/core/controls/FieldWrapper.js +18 -23
  62. package/src/sap/fe/core/controls/FilterBar.js +3 -2
  63. package/src/sap/fe/core/controls/FormElementWrapper.js +3 -7
  64. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -2
  65. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +2 -1
  66. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +3 -2
  67. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +5 -4
  68. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -2
  69. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -2
  70. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  71. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +79 -0
  72. package/src/sap/fe/core/converters/ConverterContext.js +14 -2
  73. package/src/sap/fe/core/converters/ConverterContext.ts +14 -3
  74. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  75. package/src/sap/fe/core/converters/ManifestSettings.ts +4 -0
  76. package/src/sap/fe/core/converters/ManifestWrapper.js +56 -32
  77. package/src/sap/fe/core/converters/ManifestWrapper.ts +24 -6
  78. package/src/sap/fe/core/converters/MetaModelConverter.js +67 -6
  79. package/src/sap/fe/core/converters/MetaModelConverter.ts +70 -14
  80. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  81. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -2
  82. package/src/sap/fe/core/converters/annotations/DataField.js +3 -3
  83. package/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
  84. package/src/sap/fe/core/converters/common/AnnotationConverter.js +33 -21
  85. package/src/sap/fe/core/converters/controls/Common/Action.js +11 -2
  86. package/src/sap/fe/core/converters/controls/Common/Action.ts +8 -2
  87. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -3
  88. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  89. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
  90. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  91. package/src/sap/fe/core/converters/controls/Common/Form.js +20 -10
  92. package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -4
  93. package/src/sap/fe/core/converters/controls/Common/KPI.js +69 -4
  94. package/src/sap/fe/core/converters/controls/Common/KPI.ts +72 -0
  95. package/src/sap/fe/core/converters/controls/Common/Table.js +390 -398
  96. package/src/sap/fe/core/converters/controls/Common/Table.ts +497 -484
  97. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +527 -0
  98. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +655 -0
  99. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +489 -37
  100. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +506 -58
  101. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  102. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  103. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -9
  104. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +24 -9
  105. package/src/sap/fe/core/converters/helpers/Aggregation.js +18 -3
  106. package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -5
  107. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -1
  108. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -0
  109. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +4 -4
  110. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +3 -3
  111. package/src/sap/fe/core/converters/templates/ListReportConverter.js +13 -6
  112. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +26 -15
  113. package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -2
  114. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  115. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  116. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  117. package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  118. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  119. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  120. package/src/sap/fe/core/formatters/TableFormatter.js +39 -28
  121. package/src/sap/fe/core/formatters/TableFormatter.ts +43 -28
  122. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  123. package/src/sap/fe/core/formatters/ValueFormatter.ts +30 -7
  124. package/src/sap/fe/core/fpm/Component.js +3 -2
  125. package/src/sap/fe/core/helpers/AppStartupHelper.js +359 -0
  126. package/src/sap/fe/core/helpers/AppStartupHelper.ts +391 -0
  127. package/src/sap/fe/core/helpers/BindingExpression.js +484 -437
  128. package/src/sap/fe/core/helpers/BindingExpression.ts +480 -463
  129. package/src/sap/fe/core/helpers/ClassSupport.js +27 -15
  130. package/src/sap/fe/core/helpers/ClassSupport.ts +31 -20
  131. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +63 -59
  132. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +56 -0
  133. package/src/sap/fe/core/helpers/EditState.js +81 -84
  134. package/src/sap/fe/core/helpers/EditState.ts +81 -0
  135. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
  136. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  137. package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
  138. package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  139. package/src/sap/fe/core/helpers/KeepAliveHelper.js +4 -5
  140. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +10 -10
  141. package/src/sap/fe/core/helpers/MassEditHelper.js +687 -0
  142. package/src/sap/fe/core/helpers/ModelHelper.js +229 -225
  143. package/src/sap/fe/core/helpers/ModelHelper.ts +227 -0
  144. package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
  145. package/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  146. package/src/sap/fe/core/helpers/SemanticDateOperators.js +332 -313
  147. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +330 -0
  148. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
  149. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  150. package/src/sap/fe/core/helpers/StableIdHelper.js +4 -7
  151. package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  152. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  153. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  154. package/src/sap/fe/core/library.js +30 -3
  155. package/src/sap/fe/core/library.support.js +12 -5
  156. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +62 -0
  157. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -0
  158. package/src/sap/fe/core/messagebundle.properties +61 -13
  159. package/src/sap/fe/core/messagebundle_ar.properties +33 -2
  160. package/src/sap/fe/core/messagebundle_bg.properties +33 -2
  161. package/src/sap/fe/core/messagebundle_ca.properties +33 -2
  162. package/src/sap/fe/core/messagebundle_cs.properties +34 -3
  163. package/src/sap/fe/core/messagebundle_cy.properties +33 -2
  164. package/src/sap/fe/core/messagebundle_da.properties +33 -2
  165. package/src/sap/fe/core/messagebundle_de.properties +33 -2
  166. package/src/sap/fe/core/messagebundle_el.properties +33 -2
  167. package/src/sap/fe/core/messagebundle_en.properties +32 -1
  168. package/src/sap/fe/core/messagebundle_en_GB.properties +32 -1
  169. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +36 -1
  170. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +33 -2
  171. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +33 -2
  172. package/src/sap/fe/core/messagebundle_es.properties +33 -2
  173. package/src/sap/fe/core/messagebundle_es_MX.properties +33 -2
  174. package/src/sap/fe/core/messagebundle_et.properties +33 -2
  175. package/src/sap/fe/core/messagebundle_fi.properties +34 -3
  176. package/src/sap/fe/core/messagebundle_fr.properties +38 -7
  177. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -2
  178. package/src/sap/fe/core/messagebundle_hi.properties +33 -2
  179. package/src/sap/fe/core/messagebundle_hr.properties +33 -2
  180. package/src/sap/fe/core/messagebundle_hu.properties +34 -3
  181. package/src/sap/fe/core/messagebundle_id.properties +36 -5
  182. package/src/sap/fe/core/messagebundle_it.properties +33 -2
  183. package/src/sap/fe/core/messagebundle_iw.properties +33 -2
  184. package/src/sap/fe/core/messagebundle_ja.properties +33 -2
  185. package/src/sap/fe/core/messagebundle_kk.properties +33 -2
  186. package/src/sap/fe/core/messagebundle_ko.properties +33 -2
  187. package/src/sap/fe/core/messagebundle_lt.properties +33 -2
  188. package/src/sap/fe/core/messagebundle_lv.properties +33 -2
  189. package/src/sap/fe/core/messagebundle_ms.properties +33 -2
  190. package/src/sap/fe/core/messagebundle_nl.properties +33 -2
  191. package/src/sap/fe/core/messagebundle_no.properties +33 -2
  192. package/src/sap/fe/core/messagebundle_pl.properties +33 -2
  193. package/src/sap/fe/core/messagebundle_pt.properties +34 -3
  194. package/src/sap/fe/core/messagebundle_pt_PT.properties +33 -2
  195. package/src/sap/fe/core/messagebundle_ro.properties +33 -2
  196. package/src/sap/fe/core/messagebundle_ru.properties +33 -2
  197. package/src/sap/fe/core/messagebundle_sh.properties +33 -2
  198. package/src/sap/fe/core/messagebundle_sk.properties +33 -2
  199. package/src/sap/fe/core/messagebundle_sl.properties +33 -2
  200. package/src/sap/fe/core/messagebundle_sv.properties +34 -3
  201. package/src/sap/fe/core/messagebundle_th.properties +33 -2
  202. package/src/sap/fe/core/messagebundle_tr.properties +33 -2
  203. package/src/sap/fe/core/messagebundle_uk.properties +33 -2
  204. package/src/sap/fe/core/messagebundle_vi.properties +33 -2
  205. package/src/sap/fe/core/messagebundle_zh_CN.properties +33 -2
  206. package/src/sap/fe/core/messagebundle_zh_TW.properties +33 -2
  207. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  208. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  209. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +269 -202
  210. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  211. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +4 -3
  212. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +9 -5
  213. package/src/sap/fe/core/services/NavigationServiceFactory.js +406 -300
  214. package/src/sap/fe/core/services/NavigationServiceFactory.ts +316 -0
  215. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +149 -81
  216. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +80 -0
  217. package/src/sap/fe/core/services/RoutingServiceFactory.js +987 -1152
  218. package/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  219. package/src/sap/fe/core/services/ShellServicesFactory.js +31 -2
  220. package/src/sap/fe/core/services/ShellServicesFactory.ts +45 -11
  221. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +42 -85
  222. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +57 -100
  223. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +461 -478
  224. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +453 -0
  225. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +10 -8
  226. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  227. package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  228. package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  229. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  230. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  231. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  232. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  233. package/src/sap/fe/core/templating/DataModelPathHelper.js +10 -48
  234. package/src/sap/fe/core/templating/DataModelPathHelper.ts +14 -46
  235. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  236. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  237. package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
  238. package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  239. package/src/sap/fe/core/templating/FilterHelper.js +139 -70
  240. package/src/sap/fe/core/templating/FilterHelper.ts +140 -70
  241. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  242. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  243. package/src/sap/fe/core/templating/UIFormatters.js +45 -110
  244. package/src/sap/fe/core/templating/UIFormatters.ts +39 -75
  245. package/src/sap/fe/core/type/Email.js +1 -1
  246. package/src/sap/fe/core/type/Email.ts +4 -6
  247. package/ui5.yaml +0 -3
  248. package/src/sap/fe/core/controls/filterbar.d.js +0 -8
  249. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
@@ -84,6 +84,7 @@ export type KPIConfiguration = {
84
84
  model?: string;
85
85
  entitySet: string;
86
86
  qualifier: string;
87
+ detailNavigation?: string;
87
88
  };
88
89
 
89
90
  /**
@@ -120,6 +121,7 @@ export type BaseManifestSettings = {
120
121
  contentDensities?: ContentDensitiesType;
121
122
  shellContentDensity?: string;
122
123
  isDesktop?: boolean;
124
+ isPhone?: boolean;
123
125
  };
124
126
 
125
127
  export type NavigationTargetConfiguration = {
@@ -238,6 +240,7 @@ export type ListReportManifestSettings = BaseManifestSettings & {
238
240
  keyPerformanceIndicators?: {
239
241
  [kpiName: string]: KPIConfiguration;
240
242
  };
243
+ hideFilterBar?: boolean;
241
244
  };
242
245
 
243
246
  export type ViewPathConfiguration = SingleViewPathConfiguration | CombinedViewPathConfiguration;
@@ -285,6 +288,7 @@ export type FilterManifestConfiguration = {
285
288
  };
286
289
 
287
290
  export type FilterFieldManifestConfiguration = Positionable & {
291
+ type?: string;
288
292
  label?: string;
289
293
  template?: string;
290
294
  availability?: AvailabilityType;
@@ -42,6 +42,19 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
42
42
  value: function getTemplateType() {
43
43
  return this.oManifestSettings.converterType;
44
44
  }
45
+ /**
46
+ * Checks whether the current template should display the filter bar.
47
+ *
48
+ * @returns {boolean} `true` if the filter bar should be hidden
49
+ */
50
+
51
+ }, {
52
+ key: "isFilterBarHidden",
53
+ value: function isFilterBarHidden() {
54
+ var _this$oManifestSettin;
55
+
56
+ return !!((_this$oManifestSettin = this.oManifestSettings) !== null && _this$oManifestSettin !== void 0 && _this$oManifestSettin.hideFilterBar);
57
+ }
45
58
  /**
46
59
  * Checks whether the current environment is a desktop or not.
47
60
  *
@@ -54,57 +67,68 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
54
67
  return !!this.oManifestSettings.isDesktop;
55
68
  }
56
69
  /**
57
- * Retrieves the form containers (field groups/identification) defined in the manifest.
70
+ * Checks whether the current environment is a mobile phone or not.
71
+ *
72
+ * @returns {boolean} `true` if we are on a mobile phone
73
+ */
74
+
75
+ }, {
76
+ key: "isPhone",
77
+ value: function isPhone() {
78
+ return !!this.oManifestSettings.isPhone;
79
+ }
80
+ /**
81
+ * Retrieves the form containers (field groups or identification) defined in the manifest.
58
82
  *
59
83
  * @param {string} facetTarget The target annotation path for this form
60
- * @returns {FormManifestConfiguration} A set of manifest header facets indexed by an iterable key
84
+ * @returns {FormManifestConfiguration} A set of form containers defined in the manifest indexed by an iterable key
61
85
  */
62
86
 
63
87
  }, {
64
88
  key: "getFormContainer",
65
89
  value: function getFormContainer(facetTarget) {
66
- var _this$oManifestSettin;
90
+ var _this$oManifestSettin2;
67
91
 
68
- return (_this$oManifestSettin = this.oManifestSettings.controlConfiguration) === null || _this$oManifestSettin === void 0 ? void 0 : _this$oManifestSettin[facetTarget];
92
+ return (_this$oManifestSettin2 = this.oManifestSettings.controlConfiguration) === null || _this$oManifestSettin2 === void 0 ? void 0 : _this$oManifestSettin2[facetTarget];
69
93
  }
70
94
  /**
71
- * Retrieves the headerFacets defined in the manifest.
95
+ * Retrieves the header facets defined in the manifest.
72
96
  *
73
- * @returns {ConfigurableRecord<ManifestHeaderFacet>} A set of manifest header facets indexed by an iterable key
97
+ * @returns {ConfigurableRecord<ManifestHeaderFacet>} A set of header facets defined in the manifest indexed by an iterable key
74
98
  */
75
99
 
76
100
  }, {
77
101
  key: "getHeaderFacets",
78
102
  value: function getHeaderFacets() {
79
- var _this$oManifestSettin2, _this$oManifestSettin3, _content, _content$header;
103
+ var _this$oManifestSettin3, _this$oManifestSettin4, _content, _content$header;
80
104
 
81
- return this.mergeFn({}, (_this$oManifestSettin2 = this.oManifestSettings.controlConfiguration) === null || _this$oManifestSettin2 === void 0 ? void 0 : (_this$oManifestSettin3 = _this$oManifestSettin2["@com.sap.vocabularies.UI.v1.HeaderFacets"]) === null || _this$oManifestSettin3 === void 0 ? void 0 : _this$oManifestSettin3.facets, (_content = this.oManifestSettings.content) === null || _content === void 0 ? void 0 : (_content$header = _content.header) === null || _content$header === void 0 ? void 0 : _content$header.facets);
105
+ return this.mergeFn({}, (_this$oManifestSettin3 = this.oManifestSettings.controlConfiguration) === null || _this$oManifestSettin3 === void 0 ? void 0 : (_this$oManifestSettin4 = _this$oManifestSettin3["@com.sap.vocabularies.UI.v1.HeaderFacets"]) === null || _this$oManifestSettin4 === void 0 ? void 0 : _this$oManifestSettin4.facets, (_content = this.oManifestSettings.content) === null || _content === void 0 ? void 0 : (_content$header = _content.header) === null || _content$header === void 0 ? void 0 : _content$header.facets);
82
106
  }
83
107
  /**
84
108
  * Retrieves the header actions defined in the manifest.
85
109
  *
86
- * @returns {ConfigurableRecord<ManifestAction>} A set of manifest actions indexed by an iterable key
110
+ * @returns {ConfigurableRecord<ManifestAction>} A set of actions defined in the manifest indexed by an iterable key
87
111
  */
88
112
 
89
113
  }, {
90
114
  key: "getHeaderActions",
91
115
  value: function getHeaderActions() {
92
- var _this$oManifestSettin4, _this$oManifestSettin5;
116
+ var _this$oManifestSettin5, _this$oManifestSettin6;
93
117
 
94
- return ((_this$oManifestSettin4 = this.oManifestSettings.content) === null || _this$oManifestSettin4 === void 0 ? void 0 : (_this$oManifestSettin5 = _this$oManifestSettin4.header) === null || _this$oManifestSettin5 === void 0 ? void 0 : _this$oManifestSettin5.actions) || {};
118
+ return ((_this$oManifestSettin5 = this.oManifestSettings.content) === null || _this$oManifestSettin5 === void 0 ? void 0 : (_this$oManifestSettin6 = _this$oManifestSettin5.header) === null || _this$oManifestSettin6 === void 0 ? void 0 : _this$oManifestSettin6.actions) || {};
95
119
  }
96
120
  /**
97
121
  * Retrieves the footer actions defined in the manifest.
98
122
  *
99
- * @returns {ConfigurableRecord<ManifestAction>} A set of manifest actions indexed by an iterable key
123
+ * @returns {ConfigurableRecord<ManifestAction>} A set of actions defined in the manifest indexed by an iterable key
100
124
  */
101
125
 
102
126
  }, {
103
127
  key: "getFooterActions",
104
128
  value: function getFooterActions() {
105
- var _this$oManifestSettin6, _this$oManifestSettin7;
129
+ var _this$oManifestSettin7, _this$oManifestSettin8;
106
130
 
107
- return ((_this$oManifestSettin6 = this.oManifestSettings.content) === null || _this$oManifestSettin6 === void 0 ? void 0 : (_this$oManifestSettin7 = _this$oManifestSettin6.footer) === null || _this$oManifestSettin7 === void 0 ? void 0 : _this$oManifestSettin7.actions) || {};
131
+ return ((_this$oManifestSettin7 = this.oManifestSettings.content) === null || _this$oManifestSettin7 === void 0 ? void 0 : (_this$oManifestSettin8 = _this$oManifestSettin7.footer) === null || _this$oManifestSettin8 === void 0 ? void 0 : _this$oManifestSettin8.actions) || {};
108
132
  }
109
133
  /**
110
134
  * Retrieves the variant management as defined in the manifest.
@@ -139,9 +163,9 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
139
163
  }, {
140
164
  key: "getControlConfiguration",
141
165
  value: function getControlConfiguration(sAnnotationPath) {
142
- var _this$oManifestSettin8, _this$oManifestSettin9;
166
+ var _this$oManifestSettin9, _this$oManifestSettin10;
143
167
 
144
- return ((_this$oManifestSettin8 = this.oManifestSettings) === null || _this$oManifestSettin8 === void 0 ? void 0 : (_this$oManifestSettin9 = _this$oManifestSettin8.controlConfiguration) === null || _this$oManifestSettin9 === void 0 ? void 0 : _this$oManifestSettin9[sAnnotationPath]) || {};
168
+ return ((_this$oManifestSettin9 = this.oManifestSettings) === null || _this$oManifestSettin9 === void 0 ? void 0 : (_this$oManifestSettin10 = _this$oManifestSettin9.controlConfiguration) === null || _this$oManifestSettin10 === void 0 ? void 0 : _this$oManifestSettin10[sAnnotationPath]) || {};
145
169
  }
146
170
  /**
147
171
  * Retrieves the configured settings for a given navigation target.
@@ -153,9 +177,9 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
153
177
  }, {
154
178
  key: "getNavigationConfiguration",
155
179
  value: function getNavigationConfiguration(navigationOrCollectionName) {
156
- var _this$oManifestSettin10, _this$oManifestSettin11;
180
+ var _this$oManifestSettin11, _this$oManifestSettin12;
157
181
 
158
- return ((_this$oManifestSettin10 = this.oManifestSettings) === null || _this$oManifestSettin10 === void 0 ? void 0 : (_this$oManifestSettin11 = _this$oManifestSettin10.navigation) === null || _this$oManifestSettin11 === void 0 ? void 0 : _this$oManifestSettin11[navigationOrCollectionName]) || {};
182
+ return ((_this$oManifestSettin11 = this.oManifestSettings) === null || _this$oManifestSettin11 === void 0 ? void 0 : (_this$oManifestSettin12 = _this$oManifestSettin11.navigation) === null || _this$oManifestSettin12 === void 0 ? void 0 : _this$oManifestSettin12[navigationOrCollectionName]) || {};
159
183
  }
160
184
  /**
161
185
  * Retrieves the view level.
@@ -166,9 +190,9 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
166
190
  }, {
167
191
  key: "getViewLevel",
168
192
  value: function getViewLevel() {
169
- var _this$oManifestSettin12;
193
+ var _this$oManifestSettin13;
170
194
 
171
- return ((_this$oManifestSettin12 = this.oManifestSettings) === null || _this$oManifestSettin12 === void 0 ? void 0 : _this$oManifestSettin12.viewLevel) || -1;
195
+ return ((_this$oManifestSettin13 = this.oManifestSettings) === null || _this$oManifestSettin13 === void 0 ? void 0 : _this$oManifestSettin13.viewLevel) || -1;
172
196
  }
173
197
  /**
174
198
  * Retrieves the contentDensities setting of the application.
@@ -179,9 +203,9 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
179
203
  }, {
180
204
  key: "getContentDensities",
181
205
  value: function getContentDensities() {
182
- var _this$oManifestSettin13;
206
+ var _this$oManifestSettin14;
183
207
 
184
- return ((_this$oManifestSettin13 = this.oManifestSettings) === null || _this$oManifestSettin13 === void 0 ? void 0 : _this$oManifestSettin13.contentDensities) || {
208
+ return ((_this$oManifestSettin14 = this.oManifestSettings) === null || _this$oManifestSettin14 === void 0 ? void 0 : _this$oManifestSettin14.contentDensities) || {
185
209
  cozy: false,
186
210
  compact: false
187
211
  };
@@ -195,9 +219,9 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
195
219
  }, {
196
220
  key: "isFclEnabled",
197
221
  value: function isFclEnabled() {
198
- var _this$oManifestSettin14;
222
+ var _this$oManifestSettin15;
199
223
 
200
- return !!((_this$oManifestSettin14 = this.oManifestSettings) !== null && _this$oManifestSettin14 !== void 0 && _this$oManifestSettin14.fclEnabled);
224
+ return !!((_this$oManifestSettin15 = this.oManifestSettings) !== null && _this$oManifestSettin15 !== void 0 && _this$oManifestSettin15.fclEnabled);
201
225
  }
202
226
  /**
203
227
  * Checks whether the current settings (application / shell) allows us to use condensed layout.
@@ -208,13 +232,13 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
208
232
  }, {
209
233
  key: "isCondensedLayoutCompliant",
210
234
  value: function isCondensedLayoutCompliant() {
211
- var _this$oManifestSettin15, _this$oManifestSettin16;
235
+ var _this$oManifestSettin16, _this$oManifestSettin17;
212
236
 
213
- var manifestContentDensity = ((_this$oManifestSettin15 = this.oManifestSettings) === null || _this$oManifestSettin15 === void 0 ? void 0 : _this$oManifestSettin15.contentDensities) || {
237
+ var manifestContentDensity = ((_this$oManifestSettin16 = this.oManifestSettings) === null || _this$oManifestSettin16 === void 0 ? void 0 : _this$oManifestSettin16.contentDensities) || {
214
238
  cozy: false,
215
239
  compact: false
216
240
  };
217
- var shellContentDensity = ((_this$oManifestSettin16 = this.oManifestSettings) === null || _this$oManifestSettin16 === void 0 ? void 0 : _this$oManifestSettin16.shellContentDensity) || "compact";
241
+ var shellContentDensity = ((_this$oManifestSettin17 = this.oManifestSettings) === null || _this$oManifestSettin17 === void 0 ? void 0 : _this$oManifestSettin17.shellContentDensity) || "compact";
218
242
  var isCondensedLayoutCompliant = true;
219
243
 
220
244
  if ((manifestContentDensity === null || manifestContentDensity === void 0 ? void 0 : manifestContentDensity.cozy) === true && (manifestContentDensity === null || manifestContentDensity === void 0 ? void 0 : manifestContentDensity.compact) !== true || shellContentDensity === "cozy") {
@@ -233,9 +257,9 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
233
257
  }, {
234
258
  key: "getSections",
235
259
  value: function getSections() {
236
- var _this$oManifestSettin17, _this$oManifestSettin18, _content2, _content2$body;
260
+ var _this$oManifestSettin18, _this$oManifestSettin19, _content2, _content2$body;
237
261
 
238
- return this.mergeFn({}, (_this$oManifestSettin17 = this.oManifestSettings.controlConfiguration) === null || _this$oManifestSettin17 === void 0 ? void 0 : (_this$oManifestSettin18 = _this$oManifestSettin17["@com.sap.vocabularies.UI.v1.Facets"]) === null || _this$oManifestSettin18 === void 0 ? void 0 : _this$oManifestSettin18.sections, (_content2 = this.oManifestSettings.content) === null || _content2 === void 0 ? void 0 : (_content2$body = _content2.body) === null || _content2$body === void 0 ? void 0 : _content2$body.sections);
262
+ return this.mergeFn({}, (_this$oManifestSettin18 = this.oManifestSettings.controlConfiguration) === null || _this$oManifestSettin18 === void 0 ? void 0 : (_this$oManifestSettin19 = _this$oManifestSettin18["@com.sap.vocabularies.UI.v1.Facets"]) === null || _this$oManifestSettin19 === void 0 ? void 0 : _this$oManifestSettin19.sections, (_content2 = this.oManifestSettings.content) === null || _content2 === void 0 ? void 0 : (_content2$body = _content2.body) === null || _content2$body === void 0 ? void 0 : _content2$body.sections);
239
263
  }
240
264
  /**
241
265
  * Returns true of the header of the application is editable and should appear in the facets.
@@ -364,9 +388,9 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
364
388
  }, {
365
389
  key: "getContextPath",
366
390
  value: function getContextPath() {
367
- var _this$oManifestSettin19;
391
+ var _this$oManifestSettin20;
368
392
 
369
- return (_this$oManifestSettin19 = this.oManifestSettings) === null || _this$oManifestSettin19 === void 0 ? void 0 : _this$oManifestSettin19.contextPath;
393
+ return (_this$oManifestSettin20 = this.oManifestSettings) === null || _this$oManifestSettin20 === void 0 ? void 0 : _this$oManifestSettin20.contextPath;
370
394
  }
371
395
  /**
372
396
  * Returns true if there are multiple visualizations.
@@ -401,4 +425,4 @@ sap.ui.define(["sap/fe/core/converters/ManifestSettings"], function (ManifestSet
401
425
 
402
426
  return ManifestWrapper;
403
427
  }, false);
404
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlmZXN0V3JhcHBlci50cyJdLCJuYW1lcyI6WyJNYW5pZmVzdFdyYXBwZXIiLCJvTWFuaWZlc3RTZXR0aW5ncyIsIm1lcmdlRm4iLCJjb252ZXJ0ZXJUeXBlIiwiaXNEZXNrdG9wIiwiZmFjZXRUYXJnZXQiLCJjb250cm9sQ29uZmlndXJhdGlvbiIsImZhY2V0cyIsImNvbnRlbnQiLCJoZWFkZXIiLCJhY3Rpb25zIiwiZm9vdGVyIiwidmFyaWFudE1hbmFnZW1lbnQiLCJWYXJpYW50TWFuYWdlbWVudFR5cGUiLCJOb25lIiwiZGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGgiLCJzQW5ub3RhdGlvblBhdGgiLCJuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZSIsIm5hdmlnYXRpb24iLCJ2aWV3TGV2ZWwiLCJjb250ZW50RGVuc2l0aWVzIiwiY296eSIsImNvbXBhY3QiLCJmY2xFbmFibGVkIiwibWFuaWZlc3RDb250ZW50RGVuc2l0eSIsInNoZWxsQ29udGVudERlbnNpdHkiLCJpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCIsInNlY3Rpb25zIiwiYm9keSIsImdldFNob3dPYmplY3RQYWdlSGVhZGVyIiwiZWRpdGFibGVIZWFkZXJDb250ZW50IiwiYW5jaG9yQmFyVmlzaWJsZSIsInVuZGVmaW5lZCIsImdldFNob3dBbmNob3JCYXIiLCJzZWN0aW9uTGF5b3V0IiwidmlzaWJsZSIsInZpZXdzIiwia2V5UGVyZm9ybWFuY2VJbmRpY2F0b3JzIiwiZ2V0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJ2aWV3Q29uZmlnIiwiZ2V0Vmlld0NvbmZpZ3VyYXRpb24iLCJwYXRocyIsIm1hbmlmZXN0RW50aXR5U2V0IiwiZW50aXR5U2V0IiwiZmluZCIsInBhdGgiLCJ0ZW1wbGF0ZSIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJwcmltYXJ5Iiwic2Vjb25kYXJ5Iiwic29tZSIsImNvbnRleHRQYXRoIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiO0FBQUE7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QTtBQUNBOzs7O2FBQ0MsbUNBQTBCTixJQUExQixFQUFpRTtBQUFBOztBQUNoRSxZQUFJLENBQUNBLElBQUwsRUFBVztBQUNWLGNBQU1OLFVBQVUsR0FBRyxLQUFLQyxvQkFBTCxNQUErQjtBQUFFQyxZQUFBQSxLQUFLLEVBQUU7QUFBVCxXQUFsRDtBQUNBLGlCQUFPRixVQUFVLENBQUNFLEtBQVgsQ0FBaUJTLElBQWpCLENBQXNCLFVBQUFMLElBQUksRUFBSTtBQUFBOztBQUNwQyxtQkFDQyxhQUFDQSxJQUFELENBQXdDRyxPQUF4QyxzREFBaURJLE1BQWpELElBQTBELENBQTFELElBQ0EsZUFBQ1AsSUFBRCxDQUF3Q0ksU0FBeEMsMERBQW1ERyxNQUFuRCxJQUE0RCxDQUY3RDtBQUlBLFdBTE0sQ0FBUDtBQU1BOztBQUNELGVBQU8sY0FBQ1AsSUFBRCxDQUF3Q0csT0FBeEMsd0RBQWlESSxNQUFqRCxJQUEwRCxDQUExRCxJQUErRCxnQkFBQ1AsSUFBRCxDQUF3Q0ksU0FBeEMsNERBQW1ERyxNQUFuRCxJQUE0RCxDQUFsSTtBQUNBLE8sQ0FFRDs7Ozs7OztTQUdjcEQsZSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlndXJhYmxlUmVjb3JkIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7XG5cdEJhc2VNYW5pZmVzdFNldHRpbmdzLFxuXHRDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbixcblx0Q29udGVudERlbnNpdGllc1R5cGUsXG5cdEZpbHRlck1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0Rm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0TGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsXG5cdE1hbmlmZXN0QWN0aW9uLFxuXHRNYW5pZmVzdEhlYWRlckZhY2V0LFxuXHRNYW5pZmVzdFNlY3Rpb24sXG5cdE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uLFxuXHROYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uLFxuXHRPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncyxcblx0U2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uLFxuXHRWaWV3UGF0aENvbmZpZ3VyYXRpb24sXG5cdFRlbXBsYXRlVHlwZSxcblx0VmFyaWFudE1hbmFnZW1lbnRUeXBlLFxuXHRDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uLFxuXHRWaWV3Q29uZmlndXJhdGlvbixcblx0S1BJQ29uZmlndXJhdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5cbi8qKlxuICpcbiAqL1xuY2xhc3MgTWFuaWZlc3RXcmFwcGVyIHtcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSB3cmFwcGVyIG9iamVjdCB0byBlbnN1cmUgdGhlIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgbWFuaWZlc3QgaXMgY29uc2lzdGVudCBhbmQgZXZlcnl0aGluZyBpcyBtZXJnZWQgY29ycmVjdGx5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Jhc2VNYW5pZmVzdFNldHRpbmdzfSBvTWFuaWZlc3RTZXR0aW5ncyBUaGUgbWFuaWZlc3Qgc2V0dGluZ3MgZm9yIHRoZSBjdXJyZW50IHBhZ2Vcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGbiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIG1lcmdlXG5cdCAqIEByZXR1cm5zIHtNYW5pZmVzdFdyYXBwZXJ9IFRoZSBtYW5pZmVzdCB3cmFwcGVyIG9iamVjdFxuXHQgKi9cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBvTWFuaWZlc3RTZXR0aW5nczogQmFzZU1hbmlmZXN0U2V0dGluZ3MsIHByaXZhdGUgbWVyZ2VGbjogRnVuY3Rpb24pIHt9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGVtcGxhdGUgdHlwZS5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgdGVtcGxhdGVcblx0ICovXG5cdGdldFRlbXBsYXRlVHlwZSgpOiBUZW1wbGF0ZVR5cGUge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnZlcnRlclR5cGU7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBkZXNrdG9wIG9yIG5vdC5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB3ZSBhcmUgb24gYSBkZXNrdG9wXG5cdCAqL1xuXHRpc0Rlc2t0b3AoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5pc0Rlc2t0b3A7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBmb3JtIGNvbnRhaW5lcnMgKGZpZWxkIGdyb3Vwcy9pZGVudGlmaWNhdGlvbikgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBmYWNldFRhcmdldCBUaGUgdGFyZ2V0IGFubm90YXRpb24gcGF0aCBmb3IgdGhpcyBmb3JtXG5cdCAqIEByZXR1cm5zIHtGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9ufSBBIHNldCBvZiBtYW5pZmVzdCBoZWFkZXIgZmFjZXRzIGluZGV4ZWQgYnkgYW4gaXRlcmFibGUga2V5XG5cdCAqL1xuXHRnZXRGb3JtQ29udGFpbmVyKGZhY2V0VGFyZ2V0OiBzdHJpbmcpOiBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbj8uW2ZhY2V0VGFyZ2V0XSBhcyBGb3JtTWFuaWZlc3RDb25maWd1cmF0aW9uO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGhlYWRlckZhY2V0cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0Pn0gQSBzZXQgb2YgbWFuaWZlc3QgaGVhZGVyIGZhY2V0cyBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0SGVhZGVyRmFjZXRzKCk6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEhlYWRlckZhY2V0PiB7XG5cdFx0cmV0dXJuIHRoaXMubWVyZ2VGbihcblx0XHRcdHt9LFxuXHRcdFx0dGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbj8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhlYWRlckZhY2V0c1wiXT8uZmFjZXRzLFxuXHRcdFx0KHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmhlYWRlcj8uZmFjZXRzXG5cdFx0KTtcblx0fVxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBoZWFkZXIgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEFjdGlvbj59IEEgc2V0IG9mIG1hbmlmZXN0IGFjdGlvbnMgaW5kZXhlZCBieSBhbiBpdGVyYWJsZSBrZXlcblx0ICovXG5cdGdldEhlYWRlckFjdGlvbnMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udGVudD8uaGVhZGVyPy5hY3Rpb25zIHx8IHt9O1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZvb3RlciBhY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Q29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPn0gQSBzZXQgb2YgbWFuaWZlc3QgYWN0aW9ucyBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0Rm9vdGVyQWN0aW9ucygpOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250ZW50Py5mb290ZXI/LmFjdGlvbnMgfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB2YXJpYW50IG1hbmFnZW1lbnQgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtWYXJpYW50TWFuYWdlbWVudFR5cGV9IEEgdHlwZSBvZiB2YXJpYW50IG1hbmFnZW1lbnRcblx0ICovXG5cdGdldFZhcmlhbnRNYW5hZ2VtZW50KCk6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MudmFyaWFudE1hbmFnZW1lbnQgfHwgVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmU7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBhbm5vdGF0aW9uIFBhdGggZm9yIHRoZSBTUFYgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gVGhlIGFubm90YXRpb24gcGF0aCBmb3IgdGhlIGRlZmF1bHQgU1BWIG9yIHVuZGVmaW5lZC5cblx0ICovXG5cdGdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuZGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250cm9sIGNvbmZpZ3VyYXRpb24gYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgZm9yIGEgc3BlY2lmaWMgYW5ub3RhdGlvbiBwYXRoLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0Fubm90YXRpb25QYXRoIFRoZSByZWxhdGl2ZSBhbm5vdGF0aW9uIHBhdGhcblx0ICogQHByaXZhdGVcblx0ICogQHJldHVybnMge29iamVjdH0gVGhlIGNvbnRyb2wgY29uZmlndXJhdGlvblxuXHQgKi9cblx0Z2V0Q29udHJvbENvbmZpZ3VyYXRpb24oc0Fubm90YXRpb25QYXRoOiBzdHJpbmcpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250cm9sQ29uZmlndXJhdGlvbj8uW3NBbm5vdGF0aW9uUGF0aF0gfHwge307XG5cdH1cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29uZmlndXJlZCBzZXR0aW5ncyBmb3IgYSBnaXZlbiBuYXZpZ2F0aW9uIHRhcmdldC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG5hdmlnYXRpb25PckNvbGxlY3Rpb25OYW1lIFRoZSBuYW1lIG9mIHRoZSBuYXZpZ2F0aW9uIHRvIGNoZWNrXG5cdCAqIEByZXR1cm5zIHtOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9ufSBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRnZXROYXZpZ2F0aW9uQ29uZmlndXJhdGlvbihuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZTogc3RyaW5nKTogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/Lm5hdmlnYXRpb24/LltuYXZpZ2F0aW9uT3JDb2xsZWN0aW9uTmFtZV0gfHwge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSB2aWV3IGxldmVsLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgY3VycmVudCB2aWV3IGxldmVsXG5cdCAqL1xuXHRnZXRWaWV3TGV2ZWwoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8udmlld0xldmVsIHx8IC0xO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGVudERlbnNpdGllcyBzZXR0aW5nIG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICpcblx0ICogQHJldHVybnMge0NvbnRlbnREZW5zaXRpZXNUeXBlfSBUaGUgY3VycmVudCBjb250ZW50IGRlbnNpdHlcblx0ICovXG5cdGdldENvbnRlbnREZW5zaXRpZXMoKTogQ29udGVudERlbnNpdGllc1R5cGUge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250ZW50RGVuc2l0aWVzIHx8IHtcblx0XHRcdFx0Y296eTogZmFsc2UsXG5cdFx0XHRcdGNvbXBhY3Q6IGZhbHNlXG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciB3ZSBhcmUgaW4gRkNMIG1vZGUgb3Igbm90LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHdlIGFyZSBpbiBGQ0xcblx0ICovXG5cdGlzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5mY2xFbmFibGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHNldHRpbmdzIChhcHBsaWNhdGlvbiAvIHNoZWxsKSBhbGxvd3MgdXMgdG8gdXNlIGNvbmRlbnNlZCBsYXlvdXQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgd2UgY2FuIHVzZSB0aGUgY29uZGVuc2VkIGxheW91dCwgZmFsc2Ugb3RoZXJ3aXNlXG5cdCAqL1xuXHRpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBtYW5pZmVzdENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uY29udGVudERlbnNpdGllcyB8fCB7XG5cdFx0XHRjb3p5OiBmYWxzZSxcblx0XHRcdGNvbXBhY3Q6IGZhbHNlXG5cdFx0fTtcblx0XHRjb25zdCBzaGVsbENvbnRlbnREZW5zaXR5ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uc2hlbGxDb250ZW50RGVuc2l0eSB8fCBcImNvbXBhY3RcIjtcblx0XHRsZXQgaXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQgPSB0cnVlO1xuXHRcdGlmICgobWFuaWZlc3RDb250ZW50RGVuc2l0eT8uY296eSA9PT0gdHJ1ZSAmJiBtYW5pZmVzdENvbnRlbnREZW5zaXR5Py5jb21wYWN0ICE9PSB0cnVlKSB8fCBzaGVsbENvbnRlbnREZW5zaXR5ID09PSBcImNvenlcIikge1xuXHRcdFx0aXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50O1xuXHR9XG5cblx0Ly9yZWdpb24gT1AgU3BlY2lmaWNcblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBzZWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge0NvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdFNlY3Rpb24+fSBBIHNldCBvZiBtYW5pZmVzdCBzZWN0aW9ucyBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0U2VjdGlvbnMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj4ge1xuXHRcdHJldHVybiB0aGlzLm1lcmdlRm4oXG5cdFx0XHR7fSxcblx0XHRcdHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udHJvbENvbmZpZ3VyYXRpb24/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GYWNldHNcIl0/LnNlY3Rpb25zLFxuXHRcdFx0KHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmNvbnRlbnQ/LmJvZHk/LnNlY3Rpb25zXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgb2YgdGhlIGhlYWRlciBvZiB0aGUgYXBwbGljYXRpb24gaXMgZWRpdGFibGUgYW5kIHNob3VsZCBhcHBlYXIgaW4gdGhlIGZhY2V0cy5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaGVhZGVyIGlmIGVkaXRhYmxlXG5cdCAqL1xuXHRpc0hlYWRlckVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldFNob3dPYmplY3RQYWdlSGVhZGVyKCkgJiYgKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpLmVkaXRhYmxlSGVhZGVyQ29udGVudDtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBzaG93IHRoZSBvYmplY3QgcGFnZSBoZWFkZXIuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGhlYWRlciBzaG91bGQgYmUgZGlzcGxheWVkXG5cdCAqL1xuXHRnZXRTaG93QW5jaG9yQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy5hbmNob3JCYXJWaXNpYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdD8gISEodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy5hbmNob3JCYXJWaXNpYmxlXG5cdFx0XHQ6IHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgc2VjdGlvbiB3aWxsIGJlIGRpc3BsYXllZCBpbiBkaWZmZXJlbnQgdGFicy5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaWNvbiB0YWIgYmFyIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2Ygc2Nyb2xsaW5nXG5cdCAqL1xuXHR1c2VJY29uVGFiQmFyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldFNob3dBbmNob3JCYXIoKSAmJiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuc2VjdGlvbkxheW91dCA9PT0gXCJUYWJzXCI7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZSBvYmplY3QgcGFnZSBoZWFkZXIgaXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIG9iamVjdCBwYWdlIGhlYWRlciBpcyB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdGdldFNob3dPYmplY3RQYWdlSGVhZGVyKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy52aXNpYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdD8gISEodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy52aXNpYmxlXG5cdFx0XHQ6IHRydWU7XG5cdH1cblxuXHQvL2VuZHJlZ2lvbiBPUCBTcGVjaWZpY1xuXG5cdC8vcmVnaW9uIExSIFNwZWNpZmljXG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgbXVsdGlwbGUgdmlldyBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7TXVsdGlwbGVWaWV3c0NvbmZpZ3VyYXRpb259IFRoZSB2aWV3cyB0aGF0IHJlcHJlc2VudCB0aGUgbWFuaWZlc3Qgb2JqZWN0XG5cdCAqL1xuXHRnZXRWaWV3Q29uZmlndXJhdGlvbigpOiBNdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKS52aWV3cztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIEtQSSBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBSZXR1cm5zIGEgbWFwIGJldHdlZW4gS1BJIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdGdldEtQSUNvbmZpZ3VyYXRpb24oKTogeyBba3BpTmFtZTogc3RyaW5nXTogS1BJQ29uZmlndXJhdGlvbiB9IHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MpLmtleVBlcmZvcm1hbmNlSW5kaWNhdG9ycyB8fCB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZpbHRlciBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7RmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9ufSBUaGUgZmlsdGVyIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3Rcblx0ICovXG5cdGdldEZpbHRlckNvbmZpZ3VyYXRpb24oKTogRmlsdGVyTWFuaWZlc3RDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDb250cm9sQ29uZmlndXJhdGlvbihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIik7XG5cdH1cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZW50aXR5IHNldHMgdG8gYmUgZGlzcGxheWVkLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBlbnRpdHkgc2V0c1xuXHQgKi9cblx0aGFzTXVsdGlwbGVFbnRpdHlTZXRzKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHZpZXdDb25maWcgPSB0aGlzLmdldFZpZXdDb25maWd1cmF0aW9uKCkgfHwgeyBwYXRoczogW10gfTtcblx0XHRjb25zdCBtYW5pZmVzdEVudGl0eVNldCA9IHRoaXMub01hbmlmZXN0U2V0dGluZ3MuZW50aXR5U2V0O1xuXHRcdHJldHVybiAoXG5cdFx0XHR2aWV3Q29uZmlnLnBhdGhzLmZpbmQoKHBhdGg6IFZpZXdDb25maWd1cmF0aW9uKSA9PiB7XG5cdFx0XHRcdGlmICgocGF0aCBhcyBDdXN0b21WaWV3VGVtcGxhdGVDb25maWd1cmF0aW9uKT8udGVtcGxhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyhwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uKSkge1xuXHRcdFx0XHRcdGNvbnN0IHsgcHJpbWFyeSwgc2Vjb25kYXJ5IH0gPSBwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uO1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRwcmltYXJ5LnNvbWUocGF0aCA9PiBwYXRoLmVudGl0eVNldCAmJiBwYXRoLmVudGl0eVNldCAhPT0gbWFuaWZlc3RFbnRpdHlTZXQpIHx8XG5cdFx0XHRcdFx0XHRzZWNvbmRhcnkuc29tZShwYXRoID0+IHBhdGguZW50aXR5U2V0ICYmIHBhdGguZW50aXR5U2V0ICE9PSBtYW5pZmVzdEVudGl0eVNldClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhdGggPSBwYXRoIGFzIFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbjtcblx0XHRcdFx0XHRyZXR1cm4gcGF0aC5lbnRpdHlTZXQgJiYgcGF0aC5lbnRpdHlTZXQgIT09IG1hbmlmZXN0RW50aXR5U2V0O1xuXHRcdFx0XHR9XG5cdFx0XHR9KSAhPT0gdW5kZWZpbmVkXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb250ZXh0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZSBpZiBpdCBpcyBzcGVjaWZpZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29udGV4dCBwYXRoIGZvciB0aGUgdGVtcGxhdGVcblx0ICovXG5cdGdldENvbnRleHRQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmNvbnRleHRQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmlzdWFsaXphdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Vmlld1BhdGhDb25maWd1cmF0aW9ufSBwYXRoIFRoZSBwYXRoIGZyb20gdGhlIHZpZXdcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmlzdWFsaXphdGlvbnNcblx0ICovXG5cdGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMocGF0aD86IFZpZXdQYXRoQ29uZmlndXJhdGlvbik6IGJvb2xlYW4ge1xuXHRcdGlmICghcGF0aCkge1xuXHRcdFx0Y29uc3Qgdmlld0NvbmZpZyA9IHRoaXMuZ2V0Vmlld0NvbmZpZ3VyYXRpb24oKSB8fCB7IHBhdGhzOiBbXSB9O1xuXHRcdFx0cmV0dXJuIHZpZXdDb25maWcucGF0aHMuc29tZShwYXRoID0+IHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQocGF0aCBhcyBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbikucHJpbWFyeT8ubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdChwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uKS5zZWNvbmRhcnk/Lmxlbmd0aCA+IDBcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gKHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pLnByaW1hcnk/Lmxlbmd0aCA+IDAgJiYgKHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pLnNlY29uZGFyeT8ubGVuZ3RoID4gMDtcblx0fVxuXG5cdC8vZW5kIHJlZ2lvbiBMUiBTcGVjaWZpY1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYW5pZmVzdFdyYXBwZXI7XG4iXX0=
428
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbmlmZXN0V3JhcHBlci50cyJdLCJuYW1lcyI6WyJNYW5pZmVzdFdyYXBwZXIiLCJvTWFuaWZlc3RTZXR0aW5ncyIsIm1lcmdlRm4iLCJjb252ZXJ0ZXJUeXBlIiwiaGlkZUZpbHRlckJhciIsImlzRGVza3RvcCIsImlzUGhvbmUiLCJmYWNldFRhcmdldCIsImNvbnRyb2xDb25maWd1cmF0aW9uIiwiZmFjZXRzIiwiY29udGVudCIsImhlYWRlciIsImFjdGlvbnMiLCJmb290ZXIiLCJ2YXJpYW50TWFuYWdlbWVudCIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIk5vbmUiLCJkZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aCIsInNBbm5vdGF0aW9uUGF0aCIsIm5hdmlnYXRpb25PckNvbGxlY3Rpb25OYW1lIiwibmF2aWdhdGlvbiIsInZpZXdMZXZlbCIsImNvbnRlbnREZW5zaXRpZXMiLCJjb3p5IiwiY29tcGFjdCIsImZjbEVuYWJsZWQiLCJtYW5pZmVzdENvbnRlbnREZW5zaXR5Iiwic2hlbGxDb250ZW50RGVuc2l0eSIsImlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50Iiwic2VjdGlvbnMiLCJib2R5IiwiZ2V0U2hvd09iamVjdFBhZ2VIZWFkZXIiLCJlZGl0YWJsZUhlYWRlckNvbnRlbnQiLCJhbmNob3JCYXJWaXNpYmxlIiwidW5kZWZpbmVkIiwiZ2V0U2hvd0FuY2hvckJhciIsInNlY3Rpb25MYXlvdXQiLCJ2aXNpYmxlIiwidmlld3MiLCJrZXlQZXJmb3JtYW5jZUluZGljYXRvcnMiLCJnZXRDb250cm9sQ29uZmlndXJhdGlvbiIsInZpZXdDb25maWciLCJnZXRWaWV3Q29uZmlndXJhdGlvbiIsInBhdGhzIiwibWFuaWZlc3RFbnRpdHlTZXQiLCJlbnRpdHlTZXQiLCJmaW5kIiwicGF0aCIsInRlbXBsYXRlIiwiaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJzb21lIiwiY29udGV4dFBhdGgiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQXFCQTtBQUNBO0FBQ0E7TUFDTUEsZTtBQUNMO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0MsNkJBQW9CQyxpQkFBcEIsRUFBcUVDLE9BQXJFLEVBQXdGO0FBQUE7O0FBQUEsV0FBcEVELGlCQUFvRSxHQUFwRUEsaUJBQW9FO0FBQUEsV0FBbkJDLE9BQW1CLEdBQW5CQSxPQUFtQjtBQUFFO0FBRTFGO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7O2FBQ0MsMkJBQWdDO0FBQy9CLGVBQU8sS0FBS0QsaUJBQUwsQ0FBdUJFLGFBQTlCO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsNkJBQTZCO0FBQUE7O0FBQzVCLGVBQU8sQ0FBQywyQkFBRSxLQUFLRixpQkFBUCxrREFBQyxzQkFBd0RHLGFBQXpELENBQVI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxxQkFBcUI7QUFDcEIsZUFBTyxDQUFDLENBQUMsS0FBS0gsaUJBQUwsQ0FBdUJJLFNBQWhDO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsbUJBQW1CO0FBQ2xCLGVBQU8sQ0FBQyxDQUFDLEtBQUtKLGlCQUFMLENBQXVCSyxPQUFoQztBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsMEJBQWlCQyxXQUFqQixFQUFpRTtBQUFBOztBQUNoRSx5Q0FBTyxLQUFLTixpQkFBTCxDQUF1Qk8sb0JBQTlCLDJEQUFPLHVCQUE4Q0QsV0FBOUMsQ0FBUDtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLDJCQUEyRDtBQUFBOztBQUMxRCxlQUFPLEtBQUtMLE9BQUwsQ0FDTixFQURNLDRCQUVOLEtBQUtELGlCQUFMLENBQXVCTyxvQkFGakIscUZBRU4sdUJBQThDLDBDQUE5QyxDQUZNLDJEQUVOLHVCQUEyRkMsTUFGckYsY0FHTCxLQUFLUixpQkFBTixDQUF1RFMsT0FIakQsZ0VBR04sU0FBZ0VDLE1BSDFELG9EQUdOLGdCQUF3RUYsTUFIbEUsQ0FBUDtBQUtBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLDRCQUF1RDtBQUFBOztBQUN0RCxlQUFPLGdDQUFLUixpQkFBTCxDQUF1QlMsT0FBdkIsNEdBQWdDQyxNQUFoQyxrRkFBd0NDLE9BQXhDLEtBQW1ELEVBQTFEO0FBQ0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsNEJBQXVEO0FBQUE7O0FBQ3RELGVBQU8sZ0NBQUtYLGlCQUFMLENBQXVCUyxPQUF2Qiw0R0FBZ0NHLE1BQWhDLGtGQUF3Q0QsT0FBeEMsS0FBbUQsRUFBMUQ7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxnQ0FBOEM7QUFDN0MsZUFBTyxLQUFLWCxpQkFBTCxDQUF1QmEsaUJBQXZCLElBQTRDQyxxQkFBcUIsQ0FBQ0MsSUFBekU7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyw0Q0FBdUQ7QUFDdEQsZUFBTyxLQUFLZixpQkFBTCxDQUF1QmdCLDZCQUE5QjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxpQ0FBd0JDLGVBQXhCLEVBQXNEO0FBQUE7O0FBQ3JELGVBQU8sZ0NBQUtqQixpQkFBTCw2R0FBd0JPLG9CQUF4QixvRkFBK0NVLGVBQS9DLE1BQW1FLEVBQTFFO0FBQ0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxvQ0FBMkJDLDBCQUEzQixFQUFnRztBQUFBOztBQUMvRixlQUFPLGlDQUFLbEIsaUJBQUwsK0dBQXdCbUIsVUFBeEIsb0ZBQXFDRCwwQkFBckMsTUFBb0UsRUFBM0U7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyx3QkFBdUI7QUFBQTs7QUFDdEIsZUFBTyxpQ0FBS2xCLGlCQUFMLG9GQUF3Qm9CLFNBQXhCLEtBQXFDLENBQUMsQ0FBN0M7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQywrQkFBNEM7QUFBQTs7QUFDM0MsZUFDQyxpQ0FBS3BCLGlCQUFMLG9GQUF3QnFCLGdCQUF4QixLQUE0QztBQUMzQ0MsVUFBQUEsSUFBSSxFQUFFLEtBRHFDO0FBRTNDQyxVQUFBQSxPQUFPLEVBQUU7QUFGa0MsU0FEN0M7QUFNQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyx3QkFBd0I7QUFBQTs7QUFDdkIsZUFBTyxDQUFDLDZCQUFDLEtBQUt2QixpQkFBTixvREFBQyx3QkFBd0J3QixVQUF6QixDQUFSO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0Msc0NBQXNDO0FBQUE7O0FBQ3JDLFlBQU1DLHNCQUFzQixHQUFHLGlDQUFLekIsaUJBQUwsb0ZBQXdCcUIsZ0JBQXhCLEtBQTRDO0FBQzFFQyxVQUFBQSxJQUFJLEVBQUUsS0FEb0U7QUFFMUVDLFVBQUFBLE9BQU8sRUFBRTtBQUZpRSxTQUEzRTtBQUlBLFlBQU1HLG1CQUFtQixHQUFHLGlDQUFLMUIsaUJBQUwsb0ZBQXdCMEIsbUJBQXhCLEtBQStDLFNBQTNFO0FBQ0EsWUFBSUMsMEJBQTBCLEdBQUcsSUFBakM7O0FBQ0EsWUFBSyxDQUFBRixzQkFBc0IsU0FBdEIsSUFBQUEsc0JBQXNCLFdBQXRCLFlBQUFBLHNCQUFzQixDQUFFSCxJQUF4QixNQUFpQyxJQUFqQyxJQUF5QyxDQUFBRyxzQkFBc0IsU0FBdEIsSUFBQUEsc0JBQXNCLFdBQXRCLFlBQUFBLHNCQUFzQixDQUFFRixPQUF4QixNQUFvQyxJQUE5RSxJQUF1RkcsbUJBQW1CLEtBQUssTUFBbkgsRUFBMkg7QUFDMUhDLFVBQUFBLDBCQUEwQixHQUFHLEtBQTdCO0FBQ0E7O0FBQ0QsZUFBT0EsMEJBQVA7QUFDQSxPLENBRUQ7O0FBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLHVCQUFtRDtBQUFBOztBQUNsRCxlQUFPLEtBQUsxQixPQUFMLENBQ04sRUFETSw2QkFFTixLQUFLRCxpQkFBTCxDQUF1Qk8sb0JBRmpCLHVGQUVOLHdCQUE4QyxvQ0FBOUMsQ0FGTSw0REFFTix3QkFBcUZxQixRQUYvRSxlQUdMLEtBQUs1QixpQkFBTixDQUF1RFMsT0FIakQsZ0VBR04sVUFBZ0VvQixJQUgxRCxtREFHTixlQUFzRUQsUUFIaEUsQ0FBUDtBQUtBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLDRCQUE0QjtBQUMzQixlQUFPLEtBQUtFLHVCQUFMLE1BQW1DLEtBQUs5QixpQkFBTixDQUF1RCtCLHFCQUFoRztBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLDRCQUE0QjtBQUFBOztBQUMzQixlQUFPLGNBQUMsS0FBSy9CLGlCQUFOLENBQXVEUyxPQUF2RCw0RUFBZ0VDLE1BQWhFLHNFQUF3RXNCLGdCQUF4RSxNQUE2RkMsU0FBN0YsR0FDSixDQUFDLGVBQUUsS0FBS2pDLGlCQUFOLENBQXVEUyxPQUF4RCwwREFBQyxVQUFnRUMsTUFBakUsNkNBQUMsaUJBQXdFc0IsZ0JBQXpFLENBREcsR0FFSixJQUZIO0FBR0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MseUJBQXlCO0FBQ3hCLGVBQU8sS0FBS0UsZ0JBQUwsTUFBNEIsS0FBS2xDLGlCQUFOLENBQXVEbUMsYUFBdkQsS0FBeUUsTUFBM0c7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxtQ0FBbUM7QUFBQTs7QUFDbEMsZUFBTyxjQUFDLEtBQUtuQyxpQkFBTixDQUF1RFMsT0FBdkQsNEVBQWdFQyxNQUFoRSxzRUFBd0UwQixPQUF4RSxNQUFvRkgsU0FBcEYsR0FDSixDQUFDLGVBQUUsS0FBS2pDLGlCQUFOLENBQXVEUyxPQUF4RCwwREFBQyxVQUFnRUMsTUFBakUsNkNBQUMsaUJBQXdFMEIsT0FBekUsQ0FERyxHQUVKLElBRkg7QUFHQSxPLENBRUQ7QUFFQTs7QUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7O2FBQ0MsZ0NBQStEO0FBQzlELGVBQVEsS0FBS3BDLGlCQUFOLENBQXVEcUMsS0FBOUQ7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQywrQkFBK0Q7QUFDOUQsZUFBUSxLQUFLckMsaUJBQU4sQ0FBdURzQyx3QkFBdkQsSUFBbUYsRUFBMUY7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7Ozs7YUFDQyxrQ0FBc0Q7QUFDckQsZUFBTyxLQUFLQyx1QkFBTCxDQUE2Qiw2Q0FBN0IsQ0FBUDtBQUNBO0FBQ0Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLGlDQUFpQztBQUFBOztBQUNoQyxZQUFNQyxVQUFVLEdBQUcsS0FBS0Msb0JBQUwsTUFBK0I7QUFBRUMsVUFBQUEsS0FBSyxFQUFFO0FBQVQsU0FBbEQ7QUFDQSxZQUFNQyxpQkFBaUIsR0FBRyxLQUFLM0MsaUJBQUwsQ0FBdUI0QyxTQUFqRDtBQUNBLGVBQ0NKLFVBQVUsQ0FBQ0UsS0FBWCxDQUFpQkcsSUFBakIsQ0FBc0IsVUFBQ0MsSUFBRCxFQUE2QjtBQUFBOztBQUNsRCx1QkFBS0EsSUFBTCxrQ0FBSSxNQUEyQ0MsUUFBL0MsRUFBeUQ7QUFDeEQsbUJBQU9kLFNBQVA7QUFDQSxXQUZELE1BRU8sSUFBSSxLQUFJLENBQUNlLHlCQUFMLENBQStCRixJQUEvQixDQUFKLEVBQTJFO0FBQ2pGLHVCQUErQkEsSUFBL0I7QUFBQSxnQkFBUUcsT0FBUixRQUFRQSxPQUFSO0FBQUEsZ0JBQWlCQyxTQUFqQixRQUFpQkEsU0FBakI7QUFDQSxtQkFDQ0QsT0FBTyxDQUFDRSxJQUFSLENBQWEsVUFBQUwsSUFBSTtBQUFBLHFCQUFJQSxJQUFJLENBQUNGLFNBQUwsSUFBa0JFLElBQUksQ0FBQ0YsU0FBTCxLQUFtQkQsaUJBQXpDO0FBQUEsYUFBakIsS0FDQU8sU0FBUyxDQUFDQyxJQUFWLENBQWUsVUFBQUwsSUFBSTtBQUFBLHFCQUFJQSxJQUFJLENBQUNGLFNBQUwsSUFBa0JFLElBQUksQ0FBQ0YsU0FBTCxLQUFtQkQsaUJBQXpDO0FBQUEsYUFBbkIsQ0FGRDtBQUlBLFdBTk0sTUFNQTtBQUNORyxZQUFBQSxJQUFJLEdBQUdBLElBQVA7QUFDQSxtQkFBT0EsSUFBSSxDQUFDRixTQUFMLElBQWtCRSxJQUFJLENBQUNGLFNBQUwsS0FBbUJELGlCQUE1QztBQUNBO0FBQ0QsU0FiRCxNQWFPVixTQWRSO0FBZ0JBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLDBCQUFxQztBQUFBOztBQUNwQywwQ0FBTyxLQUFLakMsaUJBQVosNERBQU8sd0JBQXdCb0QsV0FBL0I7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OzthQUNDLG1DQUEwQk4sSUFBMUIsRUFBaUU7QUFBQTs7QUFDaEUsWUFBSSxDQUFDQSxJQUFMLEVBQVc7QUFDVixjQUFNTixVQUFVLEdBQUcsS0FBS0Msb0JBQUwsTUFBK0I7QUFBRUMsWUFBQUEsS0FBSyxFQUFFO0FBQVQsV0FBbEQ7QUFDQSxpQkFBT0YsVUFBVSxDQUFDRSxLQUFYLENBQWlCUyxJQUFqQixDQUFzQixVQUFBTCxJQUFJLEVBQUk7QUFBQTs7QUFDcEMsbUJBQ0MsYUFBQ0EsSUFBRCxDQUF3Q0csT0FBeEMsc0RBQWlESSxNQUFqRCxJQUEwRCxDQUExRCxJQUNBLGVBQUNQLElBQUQsQ0FBd0NJLFNBQXhDLDBEQUFtREcsTUFBbkQsSUFBNEQsQ0FGN0Q7QUFJQSxXQUxNLENBQVA7QUFNQTs7QUFDRCxlQUFPLGNBQUNQLElBQUQsQ0FBd0NHLE9BQXhDLHdEQUFpREksTUFBakQsSUFBMEQsQ0FBMUQsSUFBK0QsZ0JBQUNQLElBQUQsQ0FBd0NJLFNBQXhDLDREQUFtREcsTUFBbkQsSUFBNEQsQ0FBbEk7QUFDQSxPLENBRUQ7Ozs7Ozs7U0FHY3RELGUiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyYWJsZVJlY29yZCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQge1xuXHRCYXNlTWFuaWZlc3RTZXR0aW5ncyxcblx0Q29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24sXG5cdENvbnRlbnREZW5zaXRpZXNUeXBlLFxuXHRGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb24sXG5cdEZvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb24sXG5cdExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzLFxuXHRNYW5pZmVzdEFjdGlvbixcblx0TWFuaWZlc3RIZWFkZXJGYWNldCxcblx0TWFuaWZlc3RTZWN0aW9uLFxuXHRNdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbixcblx0TmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbixcblx0T2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MsXG5cdFNpbmdsZVZpZXdQYXRoQ29uZmlndXJhdGlvbixcblx0Vmlld1BhdGhDb25maWd1cmF0aW9uLFxuXHRUZW1wbGF0ZVR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSxcblx0Q3VzdG9tVmlld1RlbXBsYXRlQ29uZmlndXJhdGlvbixcblx0Vmlld0NvbmZpZ3VyYXRpb24sXG5cdEtQSUNvbmZpZ3VyYXRpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuXG4vKipcbiAqXG4gKi9cbmNsYXNzIE1hbmlmZXN0V3JhcHBlciB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgd3JhcHBlciBvYmplY3QgdG8gZW5zdXJlIHRoZSBkYXRhIHJldHVybmVkIGZyb20gdGhlIG1hbmlmZXN0IGlzIGNvbnNpc3RlbnQgYW5kIGV2ZXJ5dGhpbmcgaXMgbWVyZ2VkIGNvcnJlY3RseS5cblx0ICpcblx0ICogQHBhcmFtIHtCYXNlTWFuaWZlc3RTZXR0aW5nc30gb01hbmlmZXN0U2V0dGluZ3MgVGhlIG1hbmlmZXN0IHNldHRpbmdzIGZvciB0aGUgY3VycmVudCBwYWdlXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRm4gQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgdXNlZCB0byBwZXJmb3JtIHRoZSBtZXJnZVxuXHQgKiBAcmV0dXJucyB7TWFuaWZlc3RXcmFwcGVyfSBUaGUgbWFuaWZlc3Qgd3JhcHBlciBvYmplY3Rcblx0ICovXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgb01hbmlmZXN0U2V0dGluZ3M6IEJhc2VNYW5pZmVzdFNldHRpbmdzLCBwcml2YXRlIG1lcmdlRm46IEZ1bmN0aW9uKSB7fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHRlbXBsYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSB0eXBlIG9mIHRoZSBjdXJyZW50IHRlbXBsYXRlXG5cdCAqL1xuXHRnZXRUZW1wbGF0ZVR5cGUoKTogVGVtcGxhdGVUeXBlIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb252ZXJ0ZXJUeXBlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHRlbXBsYXRlIHNob3VsZCBkaXNwbGF5IHRoZSBmaWx0ZXIgYmFyLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBmaWx0ZXIgYmFyIHNob3VsZCBiZSBoaWRkZW5cblx0ICovXG5cdGlzRmlsdGVyQmFySGlkZGVuKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhISh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzKT8uaGlkZUZpbHRlckJhcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBhIGRlc2t0b3Agb3Igbm90LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHdlIGFyZSBvbiBhIGRlc2t0b3Bcblx0ICovXG5cdGlzRGVza3RvcCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmlzRGVza3RvcDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBhIG1vYmlsZSBwaG9uZSBvciBub3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgd2UgYXJlIG9uIGEgbW9iaWxlIHBob25lXG5cdCAqL1xuXHRpc1Bob25lKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhIXRoaXMub01hbmlmZXN0U2V0dGluZ3MuaXNQaG9uZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGZvcm0gY29udGFpbmVycyAoZmllbGQgZ3JvdXBzIG9yIGlkZW50aWZpY2F0aW9uKSBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGZhY2V0VGFyZ2V0IFRoZSB0YXJnZXQgYW5ub3RhdGlvbiBwYXRoIGZvciB0aGlzIGZvcm1cblx0ICogQHJldHVybnMge0Zvcm1NYW5pZmVzdENvbmZpZ3VyYXRpb259IEEgc2V0IG9mIGZvcm0gY29udGFpbmVycyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0Rm9ybUNvbnRhaW5lcihmYWNldFRhcmdldDogc3RyaW5nKTogRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3MuY29udHJvbENvbmZpZ3VyYXRpb24/LltmYWNldFRhcmdldF0gYXMgRm9ybU1hbmlmZXN0Q29uZmlndXJhdGlvbjtcblx0fVxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBoZWFkZXIgZmFjZXRzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Q29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+fSBBIHNldCBvZiBoZWFkZXIgZmFjZXRzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGluZGV4ZWQgYnkgYW4gaXRlcmFibGUga2V5XG5cdCAqL1xuXHRnZXRIZWFkZXJGYWNldHMoKTogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0SGVhZGVyRmFjZXQ+IHtcblx0XHRyZXR1cm4gdGhpcy5tZXJnZUZuKFxuXHRcdFx0e30sXG5cdFx0XHR0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnRyb2xDb25maWd1cmF0aW9uPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGVhZGVyRmFjZXRzXCJdPy5mYWNldHMsXG5cdFx0XHQodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uaGVhZGVyPy5mYWNldHNcblx0XHQpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGhlYWRlciBhY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Q29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPn0gQSBzZXQgb2YgYWN0aW9ucyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBpbmRleGVkIGJ5IGFuIGl0ZXJhYmxlIGtleVxuXHQgKi9cblx0Z2V0SGVhZGVyQWN0aW9ucygpOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250ZW50Py5oZWFkZXI/LmFjdGlvbnMgfHwge307XG5cdH1cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZm9vdGVyIGFjdGlvbnMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RBY3Rpb24+fSBBIHNldCBvZiBhY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGluZGV4ZWQgYnkgYW4gaXRlcmFibGUga2V5XG5cdCAqL1xuXHRnZXRGb290ZXJBY3Rpb25zKCk6IENvbmZpZ3VyYWJsZVJlY29yZDxNYW5pZmVzdEFjdGlvbj4ge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzLmNvbnRlbnQ/LmZvb3Rlcj8uYWN0aW9ucyB8fCB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBhcyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdC5cblx0ICpcblx0ICogQHJldHVybnMge1ZhcmlhbnRNYW5hZ2VtZW50VHlwZX0gQSB0eXBlIG9mIHZhcmlhbnQgbWFuYWdlbWVudFxuXHQgKi9cblx0Z2V0VmFyaWFudE1hbmFnZW1lbnQoKTogVmFyaWFudE1hbmFnZW1lbnRUeXBlIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy52YXJpYW50TWFuYWdlbWVudCB8fCBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGFubm90YXRpb24gUGF0aCBmb3IgdGhlIFNQViBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBUaGUgYW5ub3RhdGlvbiBwYXRoIGZvciB0aGUgZGVmYXVsdCBTUFYgb3IgdW5kZWZpbmVkLlxuXHQgKi9cblx0Z2V0RGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5kZWZhdWx0VGVtcGxhdGVBbm5vdGF0aW9uUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRyb2wgY29uZmlndXJhdGlvbiBhcyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBmb3IgYSBzcGVjaWZpYyBhbm5vdGF0aW9uIHBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzQW5ub3RhdGlvblBhdGggVGhlIHJlbGF0aXZlIGFubm90YXRpb24gcGF0aFxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgY29udHJvbCBjb25maWd1cmF0aW9uXG5cdCAqL1xuXHRnZXRDb250cm9sQ29uZmlndXJhdGlvbihzQW5ub3RhdGlvblBhdGg6IHN0cmluZyk6IGFueSB7XG5cdFx0cmV0dXJuIHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmNvbnRyb2xDb25maWd1cmF0aW9uPy5bc0Fubm90YXRpb25QYXRoXSB8fCB7fTtcblx0fVxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb25maWd1cmVkIHNldHRpbmdzIGZvciBhIGdpdmVuIG5hdmlnYXRpb24gdGFyZ2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmF2aWdhdGlvbk9yQ29sbGVjdGlvbk5hbWUgVGhlIG5hbWUgb2YgdGhlIG5hdmlnYXRpb24gdG8gY2hlY2tcblx0ICogQHJldHVybnMge05hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb259IFRoZSBuYXZpZ2F0aW9uIHNldHRpbmdzIGNvbmZpZ3VyYXRpb25cblx0ICovXG5cdGdldE5hdmlnYXRpb25Db25maWd1cmF0aW9uKG5hdmlnYXRpb25PckNvbGxlY3Rpb25OYW1lOiBzdHJpbmcpOiBOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8ubmF2aWdhdGlvbj8uW25hdmlnYXRpb25PckNvbGxlY3Rpb25OYW1lXSB8fCB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHZpZXcgbGV2ZWwuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBjdXJyZW50IHZpZXcgbGV2ZWxcblx0ICovXG5cdGdldFZpZXdMZXZlbCgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy52aWV3TGV2ZWwgfHwgLTE7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBjb250ZW50RGVuc2l0aWVzIHNldHRpbmcgb2YgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Q29udGVudERlbnNpdGllc1R5cGV9IFRoZSBjdXJyZW50IGNvbnRlbnQgZGVuc2l0eVxuXHQgKi9cblx0Z2V0Q29udGVudERlbnNpdGllcygpOiBDb250ZW50RGVuc2l0aWVzVHlwZSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdHRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmNvbnRlbnREZW5zaXRpZXMgfHwge1xuXHRcdFx0XHRjb3p5OiBmYWxzZSxcblx0XHRcdFx0Y29tcGFjdDogZmFsc2Vcblx0XHRcdH1cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyB3aGV0aGVyIHdlIGFyZSBpbiBGQ0wgbW9kZSBvciBub3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgd2UgYXJlIGluIEZDTFxuXHQgKi9cblx0aXNGY2xFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhIXRoaXMub01hbmlmZXN0U2V0dGluZ3M/LmZjbEVuYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgc2V0dGluZ3MgKGFwcGxpY2F0aW9uIC8gc2hlbGwpIGFsbG93cyB1cyB0byB1c2UgY29uZGVuc2VkIGxheW91dC5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB3ZSBjYW4gdXNlIHRoZSBjb25kZW5zZWQgbGF5b3V0LCBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdGlzQ29uZGVuc2VkTGF5b3V0Q29tcGxpYW50KCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG1hbmlmZXN0Q29udGVudERlbnNpdHkgPSB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5jb250ZW50RGVuc2l0aWVzIHx8IHtcblx0XHRcdGNvenk6IGZhbHNlLFxuXHRcdFx0Y29tcGFjdDogZmFsc2Vcblx0XHR9O1xuXHRcdGNvbnN0IHNoZWxsQ29udGVudERlbnNpdHkgPSB0aGlzLm9NYW5pZmVzdFNldHRpbmdzPy5zaGVsbENvbnRlbnREZW5zaXR5IHx8IFwiY29tcGFjdFwiO1xuXHRcdGxldCBpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCA9IHRydWU7XG5cdFx0aWYgKChtYW5pZmVzdENvbnRlbnREZW5zaXR5Py5jb3p5ID09PSB0cnVlICYmIG1hbmlmZXN0Q29udGVudERlbnNpdHk/LmNvbXBhY3QgIT09IHRydWUpIHx8IHNoZWxsQ29udGVudERlbnNpdHkgPT09IFwiY296eVwiKSB7XG5cdFx0XHRpc0NvbmRlbnNlZExheW91dENvbXBsaWFudCA9IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gaXNDb25kZW5zZWRMYXlvdXRDb21wbGlhbnQ7XG5cdH1cblxuXHQvL3JlZ2lvbiBPUCBTcGVjaWZpY1xuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHNlY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Q29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0U2VjdGlvbj59IEEgc2V0IG9mIG1hbmlmZXN0IHNlY3Rpb25zIGluZGV4ZWQgYnkgYW4gaXRlcmFibGUga2V5XG5cdCAqL1xuXHRnZXRTZWN0aW9ucygpOiBDb25maWd1cmFibGVSZWNvcmQ8TWFuaWZlc3RTZWN0aW9uPiB7XG5cdFx0cmV0dXJuIHRoaXMubWVyZ2VGbihcblx0XHRcdHt9LFxuXHRcdFx0dGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5jb250cm9sQ29uZmlndXJhdGlvbj8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZhY2V0c1wiXT8uc2VjdGlvbnMsXG5cdFx0XHQodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuY29udGVudD8uYm9keT8uc2VjdGlvbnNcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdHJ1ZSBvZiB0aGUgaGVhZGVyIG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBlZGl0YWJsZSBhbmQgc2hvdWxkIGFwcGVhciBpbiB0aGUgZmFjZXRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBoZWFkZXIgaWYgZWRpdGFibGVcblx0ICovXG5cdGlzSGVhZGVyRWRpdGFibGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0U2hvd09iamVjdFBhZ2VIZWFkZXIoKSAmJiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncykuZWRpdGFibGVIZWFkZXJDb250ZW50O1xuXHR9XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHNob3cgdGhlIG9iamVjdCBwYWdlIGhlYWRlci5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaGVhZGVyIHNob3VsZCBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdGdldFNob3dBbmNob3JCYXIoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LmFuY2hvckJhclZpc2libGUgIT09IHVuZGVmaW5lZFxuXHRcdFx0PyAhISh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LmFuY2hvckJhclZpc2libGVcblx0XHRcdDogdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBzZWN0aW9uIHdpbGwgYmUgZGlzcGxheWVkIGluIGRpZmZlcmVudCB0YWJzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBpY29uIHRhYiBiYXIgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiBzY3JvbGxpbmdcblx0ICovXG5cdHVzZUljb25UYWJCYXIoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0U2hvd0FuY2hvckJhcigpICYmICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5zZWN0aW9uTGF5b3V0ID09PSBcIlRhYnNcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRydWUgaWYgdGhlIG9iamVjdCBwYWdlIGhlYWRlciBpcyB0byBiZSBzaG93bi5cblx0ICpcblx0ICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgb2JqZWN0IHBhZ2UgaGVhZGVyIGlzIHRvIGJlIGRpc3BsYXllZFxuXHQgKi9cblx0Z2V0U2hvd09iamVjdFBhZ2VIZWFkZXIoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LnZpc2libGUgIT09IHVuZGVmaW5lZFxuXHRcdFx0PyAhISh0aGlzLm9NYW5pZmVzdFNldHRpbmdzIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKS5jb250ZW50Py5oZWFkZXI/LnZpc2libGVcblx0XHRcdDogdHJ1ZTtcblx0fVxuXG5cdC8vZW5kcmVnaW9uIE9QIFNwZWNpZmljXG5cblx0Ly9yZWdpb24gTFIgU3BlY2lmaWNcblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBtdWx0aXBsZSB2aWV3IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtNdWx0aXBsZVZpZXdzQ29uZmlndXJhdGlvbn0gVGhlIHZpZXdzIHRoYXQgcmVwcmVzZW50IHRoZSBtYW5pZmVzdCBvYmplY3Rcblx0ICovXG5cdGdldFZpZXdDb25maWd1cmF0aW9uKCk6IE11bHRpcGxlVmlld3NDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gKHRoaXMub01hbmlmZXN0U2V0dGluZ3MgYXMgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MpLnZpZXdzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgS1BJIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtvYmplY3R9IFJldHVybnMgYSBtYXAgYmV0d2VlbiBLUEkgbmFtZXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgY29uZmlndXJhdGlvblxuXHQgKi9cblx0Z2V0S1BJQ29uZmlndXJhdGlvbigpOiB7IFtrcGlOYW1lOiBzdHJpbmddOiBLUElDb25maWd1cmF0aW9uIH0ge1xuXHRcdHJldHVybiAodGhpcy5vTWFuaWZlc3RTZXR0aW5ncyBhcyBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncykua2V5UGVyZm9ybWFuY2VJbmRpY2F0b3JzIHx8IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZmlsdGVyIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb259IFRoZSBmaWx0ZXIgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBtYW5pZmVzdFxuXHQgKi9cblx0Z2V0RmlsdGVyQ29uZmlndXJhdGlvbigpOiBGaWx0ZXJNYW5pZmVzdENvbmZpZ3VyYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbnRyb2xDb25maWd1cmF0aW9uKFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiKTtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBlbnRpdHkgc2V0cyB0byBiZSBkaXNwbGF5ZWQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGVudGl0eSBzZXRzXG5cdCAqL1xuXHRoYXNNdWx0aXBsZUVudGl0eVNldHMoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgdmlld0NvbmZpZyA9IHRoaXMuZ2V0Vmlld0NvbmZpZ3VyYXRpb24oKSB8fCB7IHBhdGhzOiBbXSB9O1xuXHRcdGNvbnN0IG1hbmlmZXN0RW50aXR5U2V0ID0gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncy5lbnRpdHlTZXQ7XG5cdFx0cmV0dXJuIChcblx0XHRcdHZpZXdDb25maWcucGF0aHMuZmluZCgocGF0aDogVmlld0NvbmZpZ3VyYXRpb24pID0+IHtcblx0XHRcdFx0aWYgKChwYXRoIGFzIEN1c3RvbVZpZXdUZW1wbGF0ZUNvbmZpZ3VyYXRpb24pPy50ZW1wbGF0ZSkge1xuXHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBwcmltYXJ5LCBzZWNvbmRhcnkgfSA9IHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb247XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdHByaW1hcnkuc29tZShwYXRoID0+IHBhdGguZW50aXR5U2V0ICYmIHBhdGguZW50aXR5U2V0ICE9PSBtYW5pZmVzdEVudGl0eVNldCkgfHxcblx0XHRcdFx0XHRcdHNlY29uZGFyeS5zb21lKHBhdGggPT4gcGF0aC5lbnRpdHlTZXQgJiYgcGF0aC5lbnRpdHlTZXQgIT09IG1hbmlmZXN0RW50aXR5U2V0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cGF0aCA9IHBhdGggYXMgU2luZ2xlVmlld1BhdGhDb25maWd1cmF0aW9uO1xuXHRcdFx0XHRcdHJldHVybiBwYXRoLmVudGl0eVNldCAmJiBwYXRoLmVudGl0eVNldCAhPT0gbWFuaWZlc3RFbnRpdHlTZXQ7XG5cdFx0XHRcdH1cblx0XHRcdH0pICE9PSB1bmRlZmluZWRcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGNvbnRleHQgcGF0aCBmb3IgdGhlIHRlbXBsYXRlIGlmIGl0IGlzIHNwZWNpZmllZCBpbiB0aGUgbWFuaWZlc3QuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb250ZXh0IHBhdGggZm9yIHRoZSB0ZW1wbGF0ZVxuXHQgKi9cblx0Z2V0Q29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5vTWFuaWZlc3RTZXR0aW5ncz8uY29udGV4dFBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB2aXN1YWxpemF0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtWaWV3UGF0aENvbmZpZ3VyYXRpb259IHBhdGggVGhlIHBhdGggZnJvbSB0aGUgdmlld1xuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB2aXN1YWxpemF0aW9uc1xuXHQgKi9cblx0aGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyhwYXRoPzogVmlld1BhdGhDb25maWd1cmF0aW9uKTogYm9vbGVhbiB7XG5cdFx0aWYgKCFwYXRoKSB7XG5cdFx0XHRjb25zdCB2aWV3Q29uZmlnID0gdGhpcy5nZXRWaWV3Q29uZmlndXJhdGlvbigpIHx8IHsgcGF0aHM6IFtdIH07XG5cdFx0XHRyZXR1cm4gdmlld0NvbmZpZy5wYXRocy5zb21lKHBhdGggPT4ge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdChwYXRoIGFzIENvbWJpbmVkVmlld1BhdGhDb25maWd1cmF0aW9uKS5wcmltYXJ5Py5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0KHBhdGggYXMgQ29tYmluZWRWaWV3UGF0aENvbmZpZ3VyYXRpb24pLnNlY29uZGFyeT8ubGVuZ3RoID4gMFxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiAocGF0aCBhcyBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbikucHJpbWFyeT8ubGVuZ3RoID4gMCAmJiAocGF0aCBhcyBDb21iaW5lZFZpZXdQYXRoQ29uZmlndXJhdGlvbikuc2Vjb25kYXJ5Py5sZW5ndGggPiAwO1xuXHR9XG5cblx0Ly9lbmQgcmVnaW9uIExSIFNwZWNpZmljXG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hbmlmZXN0V3JhcHBlcjtcbiJdfQ==
@@ -43,6 +43,15 @@ class ManifestWrapper {
43
43
  return this.oManifestSettings.converterType;
44
44
  }
45
45
 
46
+ /**
47
+ * Checks whether the current template should display the filter bar.
48
+ *
49
+ * @returns {boolean} `true` if the filter bar should be hidden
50
+ */
51
+ isFilterBarHidden(): boolean {
52
+ return !!(this.oManifestSettings as ListReportManifestSettings)?.hideFilterBar;
53
+ }
54
+
46
55
  /**
47
56
  * Checks whether the current environment is a desktop or not.
48
57
  *
@@ -53,18 +62,27 @@ class ManifestWrapper {
53
62
  }
54
63
 
55
64
  /**
56
- * Retrieves the form containers (field groups/identification) defined in the manifest.
65
+ * Checks whether the current environment is a mobile phone or not.
66
+ *
67
+ * @returns {boolean} `true` if we are on a mobile phone
68
+ */
69
+ isPhone(): boolean {
70
+ return !!this.oManifestSettings.isPhone;
71
+ }
72
+
73
+ /**
74
+ * Retrieves the form containers (field groups or identification) defined in the manifest.
57
75
  *
58
76
  * @param {string} facetTarget The target annotation path for this form
59
- * @returns {FormManifestConfiguration} A set of manifest header facets indexed by an iterable key
77
+ * @returns {FormManifestConfiguration} A set of form containers defined in the manifest indexed by an iterable key
60
78
  */
61
79
  getFormContainer(facetTarget: string): FormManifestConfiguration {
62
80
  return this.oManifestSettings.controlConfiguration?.[facetTarget] as FormManifestConfiguration;
63
81
  }
64
82
  /**
65
- * Retrieves the headerFacets defined in the manifest.
83
+ * Retrieves the header facets defined in the manifest.
66
84
  *
67
- * @returns {ConfigurableRecord<ManifestHeaderFacet>} A set of manifest header facets indexed by an iterable key
85
+ * @returns {ConfigurableRecord<ManifestHeaderFacet>} A set of header facets defined in the manifest indexed by an iterable key
68
86
  */
69
87
  getHeaderFacets(): ConfigurableRecord<ManifestHeaderFacet> {
70
88
  return this.mergeFn(
@@ -76,7 +94,7 @@ class ManifestWrapper {
76
94
  /**
77
95
  * Retrieves the header actions defined in the manifest.
78
96
  *
79
- * @returns {ConfigurableRecord<ManifestAction>} A set of manifest actions indexed by an iterable key
97
+ * @returns {ConfigurableRecord<ManifestAction>} A set of actions defined in the manifest indexed by an iterable key
80
98
  */
81
99
  getHeaderActions(): ConfigurableRecord<ManifestAction> {
82
100
  return this.oManifestSettings.content?.header?.actions || {};
@@ -84,7 +102,7 @@ class ManifestWrapper {
84
102
  /**
85
103
  * Retrieves the footer actions defined in the manifest.
86
104
  *
87
- * @returns {ConfigurableRecord<ManifestAction>} A set of manifest actions indexed by an iterable key
105
+ * @returns {ConfigurableRecord<ManifestAction>} A set of actions defined in the manifest indexed by an iterable key
88
106
  */
89
107
  getFooterActions(): ConfigurableRecord<ManifestAction> {
90
108
  return this.oManifestSettings.content?.footer?.actions || {};