@sapui5/sap.fe.core 1.105.1 → 1.107.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 (181) hide show
  1. package/package.json +3 -2
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +38 -19
  4. package/src/sap/fe/core/ActionRuntime.ts +50 -16
  5. package/src/sap/fe/core/AppComponent.js +5 -2
  6. package/src/sap/fe/core/AppComponent.ts +5 -1
  7. package/src/sap/fe/core/AppStateHandler.js +5 -1
  8. package/src/sap/fe/core/AppStateHandler.ts +3 -1
  9. package/src/sap/fe/core/CommonUtils.js +192 -148
  10. package/src/sap/fe/core/CommonUtils.ts +219 -165
  11. package/src/sap/fe/core/ExtensionAPI.js +34 -1
  12. package/src/sap/fe/core/ExtensionAPI.ts +30 -0
  13. package/src/sap/fe/core/PageController.js +9 -7
  14. package/src/sap/fe/core/PageController.ts +10 -1
  15. package/src/sap/fe/core/TemplateComponent.js +5 -2
  16. package/src/sap/fe/core/TemplateComponent.ts +3 -1
  17. package/src/sap/fe/core/TemplateModel.js +4 -2
  18. package/src/sap/fe/core/TemplateModel.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +73 -45
  20. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +67 -43
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +344 -280
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +115 -45
  23. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +114 -79
  24. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +97 -78
  25. package/src/sap/fe/core/controllerextensions/EditFlow.js +150 -81
  26. package/src/sap/fe/core/controllerextensions/EditFlow.ts +63 -17
  27. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +7 -17
  28. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +3 -15
  29. package/src/sap/fe/core/controllerextensions/InternalRouting.js +19 -10
  30. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +15 -6
  31. package/src/sap/fe/core/controllerextensions/KPIManagement.js +4 -20
  32. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -17
  33. package/src/sap/fe/core/controllerextensions/MessageHandler.js +38 -31
  34. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +5 -6
  35. package/src/sap/fe/core/controllerextensions/Share.js +4 -4
  36. package/src/sap/fe/core/controllerextensions/Share.ts +3 -3
  37. package/src/sap/fe/core/controllerextensions/SideEffects.js +156 -96
  38. package/src/sap/fe/core/controllerextensions/SideEffects.ts +151 -95
  39. package/src/sap/fe/core/controllerextensions/ViewState.js +13 -8
  40. package/src/sap/fe/core/controllerextensions/ViewState.ts +17 -3
  41. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +15 -1
  42. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +19 -0
  43. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +10 -34
  44. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +17 -42
  45. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +8 -17
  46. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +87 -83
  47. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +65 -44
  48. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +466 -387
  49. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +271 -183
  50. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +75 -41
  51. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +104 -70
  52. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +1 -1
  53. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +18 -10
  54. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +1 -1
  55. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -3
  56. package/src/sap/fe/core/controls/FieldWrapper.js +11 -21
  57. package/src/sap/fe/core/controls/FieldWrapper.ts +0 -3
  58. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +14 -8
  59. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +5 -13
  60. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +53 -58
  61. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +15 -31
  62. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +18 -23
  63. package/src/sap/fe/core/converters/ConverterContext.js +24 -70
  64. package/src/sap/fe/core/converters/ConverterContext.ts +32 -70
  65. package/src/sap/fe/core/converters/ManifestSettings.js +19 -18
  66. package/src/sap/fe/core/converters/ManifestSettings.ts +50 -47
  67. package/src/sap/fe/core/converters/ManifestWrapper.js +43 -1
  68. package/src/sap/fe/core/converters/ManifestWrapper.ts +36 -1
  69. package/src/sap/fe/core/converters/MetaModelConverter.js +25 -16
  70. package/src/sap/fe/core/converters/MetaModelConverter.ts +25 -15
  71. package/src/sap/fe/core/converters/annotations/DataField.js +1 -5
  72. package/src/sap/fe/core/converters/annotations/DataField.ts +0 -4
  73. package/src/sap/fe/core/converters/controls/Common/Action.js +112 -63
  74. package/src/sap/fe/core/converters/controls/Common/Action.ts +135 -65
  75. package/src/sap/fe/core/converters/controls/Common/Chart.js +59 -43
  76. package/src/sap/fe/core/converters/controls/Common/Chart.ts +18 -20
  77. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +5 -2
  78. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +4 -1
  79. package/src/sap/fe/core/converters/controls/Common/Table.js +118 -88
  80. package/src/sap/fe/core/converters/controls/Common/Table.ts +192 -124
  81. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +2 -2
  82. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +0 -2
  83. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +56 -36
  84. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +51 -31
  85. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +42 -26
  86. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +23 -10
  87. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +9 -33
  88. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -26
  89. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +61 -35
  90. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +49 -27
  91. package/src/sap/fe/core/converters/helpers/Aggregation.js +57 -3
  92. package/src/sap/fe/core/converters/helpers/Aggregation.ts +59 -6
  93. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +75 -29
  94. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +63 -35
  95. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +3 -3
  96. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +3 -3
  97. package/src/sap/fe/core/converters/templates/ListReportConverter.js +2 -2
  98. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +1 -1
  99. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +26 -8
  100. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +29 -9
  101. package/src/sap/fe/core/formatters/FPMFormatter.js +4 -4
  102. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  103. package/src/sap/fe/core/formatters/ValueFormatter.js +14 -1
  104. package/src/sap/fe/core/formatters/ValueFormatter.ts +15 -0
  105. package/src/sap/fe/core/helpers/BindingToolkit.js +17 -10
  106. package/src/sap/fe/core/helpers/BindingToolkit.ts +32 -10
  107. package/src/sap/fe/core/helpers/LoaderUtils.js +39 -0
  108. package/src/sap/fe/core/helpers/LoaderUtils.ts +14 -0
  109. package/src/sap/fe/core/helpers/MassEditHelper.js +501 -90
  110. package/src/sap/fe/core/helpers/MassEditHelper.ts +452 -78
  111. package/src/sap/fe/core/helpers/ModelHelper.js +46 -5
  112. package/src/sap/fe/core/helpers/ModelHelper.ts +43 -4
  113. package/src/sap/fe/core/helpers/SemanticDateOperators.js +82 -36
  114. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +52 -36
  115. package/src/sap/fe/core/helpers/SideEffectsHelper.js +146 -0
  116. package/src/sap/fe/core/helpers/SideEffectsHelper.ts +128 -0
  117. package/src/sap/fe/core/jsx-runtime/jsx-control.js +12 -3
  118. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +9 -3
  119. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
  120. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
  121. package/src/sap/fe/core/library.js +23 -5
  122. package/src/sap/fe/core/library.ts +19 -3
  123. package/src/sap/fe/core/messagebundle.properties +16 -1
  124. package/src/sap/fe/core/messagebundle_ar.properties +10 -0
  125. package/src/sap/fe/core/messagebundle_bg.properties +10 -0
  126. package/src/sap/fe/core/messagebundle_ca.properties +10 -0
  127. package/src/sap/fe/core/messagebundle_cs.properties +10 -0
  128. package/src/sap/fe/core/messagebundle_cy.properties +10 -0
  129. package/src/sap/fe/core/messagebundle_da.properties +10 -0
  130. package/src/sap/fe/core/messagebundle_de.properties +12 -2
  131. package/src/sap/fe/core/messagebundle_el.properties +10 -0
  132. package/src/sap/fe/core/messagebundle_en.properties +10 -0
  133. package/src/sap/fe/core/messagebundle_en_GB.properties +10 -0
  134. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +10 -3
  135. package/src/sap/fe/core/messagebundle_es.properties +10 -0
  136. package/src/sap/fe/core/messagebundle_es_MX.properties +10 -0
  137. package/src/sap/fe/core/messagebundle_et.properties +10 -0
  138. package/src/sap/fe/core/messagebundle_fi.properties +10 -0
  139. package/src/sap/fe/core/messagebundle_fr.properties +10 -0
  140. package/src/sap/fe/core/messagebundle_fr_CA.properties +10 -0
  141. package/src/sap/fe/core/messagebundle_hi.properties +10 -0
  142. package/src/sap/fe/core/messagebundle_hr.properties +10 -0
  143. package/src/sap/fe/core/messagebundle_hu.properties +10 -0
  144. package/src/sap/fe/core/messagebundle_id.properties +10 -0
  145. package/src/sap/fe/core/messagebundle_it.properties +10 -0
  146. package/src/sap/fe/core/messagebundle_iw.properties +10 -0
  147. package/src/sap/fe/core/messagebundle_ja.properties +10 -0
  148. package/src/sap/fe/core/messagebundle_kk.properties +10 -0
  149. package/src/sap/fe/core/messagebundle_ko.properties +12 -2
  150. package/src/sap/fe/core/messagebundle_lt.properties +10 -0
  151. package/src/sap/fe/core/messagebundle_lv.properties +10 -0
  152. package/src/sap/fe/core/messagebundle_ms.properties +10 -0
  153. package/src/sap/fe/core/messagebundle_nl.properties +10 -0
  154. package/src/sap/fe/core/messagebundle_no.properties +10 -0
  155. package/src/sap/fe/core/messagebundle_pl.properties +10 -0
  156. package/src/sap/fe/core/messagebundle_pt.properties +10 -0
  157. package/src/sap/fe/core/messagebundle_pt_PT.properties +10 -0
  158. package/src/sap/fe/core/messagebundle_ro.properties +10 -0
  159. package/src/sap/fe/core/messagebundle_ru.properties +10 -0
  160. package/src/sap/fe/core/messagebundle_sh.properties +10 -0
  161. package/src/sap/fe/core/messagebundle_sk.properties +10 -0
  162. package/src/sap/fe/core/messagebundle_sl.properties +10 -0
  163. package/src/sap/fe/core/messagebundle_sv.properties +10 -0
  164. package/src/sap/fe/core/messagebundle_th.properties +10 -0
  165. package/src/sap/fe/core/messagebundle_tr.properties +10 -0
  166. package/src/sap/fe/core/messagebundle_uk.properties +10 -0
  167. package/src/sap/fe/core/messagebundle_vi.properties +10 -0
  168. package/src/sap/fe/core/messagebundle_zh_CN.properties +10 -0
  169. package/src/sap/fe/core/messagebundle_zh_TW.properties +10 -0
  170. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  171. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +2 -2
  172. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +53 -29
  173. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +44 -26
  174. package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -3
  175. package/src/sap/fe/core/templating/DataModelPathHelper.ts +3 -0
  176. package/src/sap/fe/core/templating/EntitySetHelper.js +4 -5
  177. package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -3
  178. package/src/sap/fe/core/templating/FilterHelper.js +26 -7
  179. package/src/sap/fe/core/templating/FilterHelper.ts +23 -7
  180. package/src/sap/fe/core/templating/UIFormatters.js +6 -3
  181. package/src/sap/fe/core/templating/UIFormatters.ts +3 -3
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.105.1",
3
+ "version": "1.107.1",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "SAP SE (https://www.sap.com)",
7
7
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
8
8
  "scripts": {
9
9
  "build": "echo 'nothing to do'",
10
+ "build-dts": "tsc --project tsconfig-dts.json",
10
11
  "build-local": "tsc --project tsconfig-local.json && copyfiles -u 5 \"../../lib/annotation-converter-ui5/ui5-dist/**/*.js\" dist-local/src && copyfiles ui5.yaml dist-local",
11
12
  "copy-dependency": "copyfiles -u 5 \"../../lib/annotation-converter-ui5/ui5-dist/**/*.js\" target/classes/META-INF/resources",
12
13
  "prepare-npm-sources": "copyfiles -u 5 \"../../lib/annotation-converter-ui5/ui5-dist/**/*.js\" target/npm-sources/src && babel target/npm-sources/src --out-dir target/npm-sources/src --extensions \".ts,.tsx\" --config-file ../../.babelrc && babel target/npm-sources/src --out-dir target/npm-sources/src --extensions \".mdx\" --config-file ../../.babelrc-next",
13
- "prepare-ts-class-doc": "ts-node ../../docbuilder/prepareTSClassDoc sap.fe.core",
14
+ "prepare-ts-class-doc": "ts-node ../../lib/docbuilder/prepareTSClassDoc sap.fe.core",
14
15
  "prepare-ui5-build-sources": "copyfiles -u 5 \"../../lib/annotation-converter-ui5/ui5-dist/**/*.js\" target/ui5-build-tmp/src && babel target/ui5-build-tmp/src --out-dir target/ui5-build-tmp/src --extensions \".ts,.tsx\" --config-file ../../.babelrc && babel target/ui5-build-tmp/src --out-dir target/ui5-build-tmp/src --extensions \".mdx\" --config-file ../../.babelrc-next && babel target/ui5-build-tmp/test --out-dir target/ui5-build-tmp/test --extensions \".ts,.tsx\" --config-file ../../.babelrc && babel target/ui5-build-tmp/test --out-dir target/ui5-build-tmp/test --extensions \".mdx\" --config-file ../../.babelrc-next",
15
16
  "test": "jest --maxWorkers=4",
16
17
  "test-refs": "jest --runInBand --config jest.config-refs.js",
@@ -6,7 +6,7 @@
6
6
  <copyright>SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.105.1</version>
9
+ <version>1.107.1</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -26,6 +26,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit"],
26
26
  var aPromises = [];
27
27
 
28
28
  for (var sAction in oActionOperationAvailableMap) {
29
+ var aRequestPromises = [];
29
30
  oInternalModelContext.setProperty(sAction, false);
30
31
  var sProperty = oActionOperationAvailableMap[sAction];
31
32
 
@@ -42,18 +43,25 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit"],
42
43
  break;
43
44
  }
44
45
  } else if (sControl === "table") {
45
- aPromises.push(this._setActionEnablementForTable(oSelectedContext, oInternalModelContext, sAction, sProperty));
46
+ aRequestPromises = this._setActionEnablementForTable(oSelectedContext, oInternalModelContext, sAction, sProperty, aRequestPromises);
46
47
  }
47
48
  }
48
49
  }
49
50
 
50
- if (sControl === "table" && !aSelectedContexts.length) {
51
- oInternalModelContext.setProperty("dynamicActions/".concat(sAction), {
52
- bEnabled: false,
53
- aApplicable: [],
54
- aNotApplicable: []
55
- });
56
- aPromises.push(CommonUtils.setContextsBasedOnOperationAvailable(oInternalModelContext, []));
51
+ if (sControl === "table") {
52
+ if (!aSelectedContexts.length) {
53
+ oInternalModelContext.setProperty("dynamicActions/".concat(sAction), {
54
+ bEnabled: false,
55
+ aApplicable: [],
56
+ aNotApplicable: []
57
+ });
58
+ aPromises.push(CommonUtils.setContextsBasedOnOperationAvailable(oInternalModelContext, []));
59
+ } else if (aSelectedContexts.length && typeof sProperty === "string") {
60
+ // When all property values have been retrieved, set
61
+ // The applicable and not-applicable selected contexts for each action and
62
+ // The enabled property of the dynamic action in internal model context.
63
+ aPromises.push(CommonUtils.setContextsBasedOnOperationAvailable(oInternalModelContext, aRequestPromises));
64
+ }
57
65
  }
58
66
  }
59
67
 
@@ -61,7 +69,25 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit"],
61
69
  return Promise.all(aPromises);
62
70
  }
63
71
  },
64
- _setActionEnablementForTable: function (oSelectedContext, oInternalModelContext, sAction, sProperty) {
72
+ setActionEnablementAfterPatch: function (oView, oListBinding, oInternalModelContext) {
73
+ var oInternalModelContextData = oInternalModelContext === null || oInternalModelContext === void 0 ? void 0 : oInternalModelContext.getObject();
74
+ var oControls = (oInternalModelContextData === null || oInternalModelContextData === void 0 ? void 0 : oInternalModelContextData.controls) || {};
75
+
76
+ for (var sKey in oControls) {
77
+ if (oControls[sKey] && oControls[sKey].controlId) {
78
+ var oTable = oView.byId(sKey);
79
+
80
+ if (oTable.isA("sap.ui.mdc.Table")) {
81
+ var oRowBinding = oTable.getRowBinding();
82
+
83
+ if (oRowBinding == oListBinding) {
84
+ ActionRuntime.setActionEnablement(oInternalModelContext, JSON.parse(oTable.data("operationAvailableMap").customData), oTable.getSelectedContexts(), "table");
85
+ }
86
+ }
87
+ }
88
+ }
89
+ },
90
+ _setActionEnablementForTable: function (oSelectedContext, oInternalModelContext, sAction, sProperty, aRequestPromises) {
65
91
  // Reset all properties before computation
66
92
  oInternalModelContext.setProperty("dynamicActions/".concat(sAction), {
67
93
  bEnabled: false,
@@ -94,8 +120,6 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit"],
94
120
 
95
121
  CommonUtils.setDynamicActionContexts(oInternalModelContext, sAction, aApplicable, aNotApplicable);
96
122
  } else {
97
- var aRequestPromises = [];
98
-
99
123
  var _oContextData = oSelectedContext.getObject();
100
124
 
101
125
  if (sProperty === null && !!_oContextData["#".concat(sAction)]) {
@@ -104,17 +128,12 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit"],
104
128
  } else {
105
129
  // Collect promises to retrieve singleton or normal property value asynchronously
106
130
  aRequestPromises.push(CommonUtils.requestProperty(oSelectedContext, sAction, sProperty, sDynamicActionEnabledPath));
107
- } // When all property values have been retrieved, set
108
- // The applicable and not-applicable selected contexts for each action and
109
- // The enabled property of the dynamic action in internal model context.
110
-
111
-
112
- return CommonUtils.setContextsBasedOnOperationAvailable(oInternalModelContext, aRequestPromises);
131
+ }
113
132
  }
114
133
 
115
- return {};
134
+ return aRequestPromises;
116
135
  }
117
136
  };
118
137
  return ActionRuntime;
119
138
  }, false);
120
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25SdW50aW1lIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJhU2VsZWN0ZWRDb250ZXh0cyIsInNDb250cm9sIiwiYVByb21pc2VzIiwic0FjdGlvbiIsInNldFByb3BlcnR5Iiwic1Byb3BlcnR5IiwiaSIsImxlbmd0aCIsIm9TZWxlY3RlZENvbnRleHQiLCJvQ29udGV4dERhdGEiLCJnZXRPYmplY3QiLCJwdXNoIiwiX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZSIsImJFbmFibGVkIiwiYUFwcGxpY2FibGUiLCJhTm90QXBwbGljYWJsZSIsIkNvbW1vblV0aWxzIiwic2V0Q29udGV4dHNCYXNlZE9uT3BlcmF0aW9uQXZhaWxhYmxlIiwiUHJvbWlzZSIsImFsbCIsInNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgiLCJnZXRQYXRoIiwidW5kZWZpbmVkIiwib1RyYW5zZm9ybWVkQmluZGluZyIsInRyYW5zZm9ybVJlY3Vyc2l2ZWx5Iiwib0JpbmRpbmdFeHByZXNzaW9uIiwiY29uc3RhbnQiLCJwYXRoIiwic1Jlc3VsdCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0TW9kZWwiLCJzZXREeW5hbWljQWN0aW9uQ29udGV4dHMiLCJhUmVxdWVzdFByb21pc2VzIiwicmVxdWVzdFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb25SdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgdHJhbnNmb3JtUmVjdXJzaXZlbHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5jb25zdCBBY3Rpb25SdW50aW1lID0ge1xuXHQvKipcblx0ICogU2V0cyB0aGUgYWN0aW9uIGVuYWJsZW1lbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzZXRBY3Rpb25FbmFibGVtZW50XG5cdCAqIEBwYXJhbSBvSW50ZXJuYWxNb2RlbENvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgbW9kZWxcblx0ICogQHBhcmFtIG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAgTWFwIGNvbnRhaW5pbmcgdGhlIG9wZXJhdGlvbiBhdmFpbGFiaWxpdHkgb2YgYWN0aW9uc1xuXHQgKiBAcGFyYW0gYVNlbGVjdGVkQ29udGV4dHMgQXJyYXkgY29udGFpbmluZyBzZWxlY3RlZCBjb250ZXh0cyBvZiB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHNDb250cm9sIENvbnRyb2wgbmFtZVxuXHQgKiBAcmV0dXJucyBQcm9taXNlLmFsbChhUHJvbWlzZXMpXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0c2V0QWN0aW9uRW5hYmxlbWVudDogZnVuY3Rpb24gKFxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0b0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcDogYW55LFxuXHRcdGFTZWxlY3RlZENvbnRleHRzOiBhbnlbXSxcblx0XHRzQ29udHJvbDogc3RyaW5nXG5cdCkge1xuXHRcdGNvbnN0IGFQcm9taXNlcyA9IFtdO1xuXHRcdGZvciAoY29uc3Qgc0FjdGlvbiBpbiBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwKSB7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0FjdGlvbiwgZmFsc2UpO1xuXHRcdFx0Y29uc3Qgc1Byb3BlcnR5ID0gb0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcFtzQWN0aW9uXTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgb1NlbGVjdGVkQ29udGV4dCA9IGFTZWxlY3RlZENvbnRleHRzW2ldO1xuXHRcdFx0XHRpZiAob1NlbGVjdGVkQ29udGV4dCkge1xuXHRcdFx0XHRcdGNvbnN0IG9Db250ZXh0RGF0YSA9IG9TZWxlY3RlZENvbnRleHQuZ2V0T2JqZWN0KCk7XG5cdFx0XHRcdFx0aWYgKHNDb250cm9sID09PSBcImNoYXJ0XCIpIHtcblx0XHRcdFx0XHRcdGlmICgoc1Byb3BlcnR5ID09PSBudWxsICYmICEhb0NvbnRleHREYXRhW2AjJHtzQWN0aW9ufWBdKSB8fCBvU2VsZWN0ZWRDb250ZXh0LmdldE9iamVjdChzUHJvcGVydHkpKSB7XG5cdFx0XHRcdFx0XHRcdC8vbG9vayBmb3IgYWN0aW9uIGFkdmVydGlzZW1lbnQgaWYgcHJlc2VudCBhbmQgaXRzIHZhbHVlIGlzIG5vdCBudWxsXG5cdFx0XHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzQWN0aW9uLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChzQ29udHJvbCA9PT0gXCJ0YWJsZVwiKSB7XG5cdFx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9zZXRBY3Rpb25FbmFibGVtZW50Rm9yVGFibGUob1NlbGVjdGVkQ29udGV4dCwgb0ludGVybmFsTW9kZWxDb250ZXh0LCBzQWN0aW9uLCBzUHJvcGVydHkpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChzQ29udHJvbCA9PT0gXCJ0YWJsZVwiICYmICFhU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBkeW5hbWljQWN0aW9ucy8ke3NBY3Rpb259YCwge1xuXHRcdFx0XHRcdGJFbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0XHRhQXBwbGljYWJsZTogW10sXG5cdFx0XHRcdFx0YU5vdEFwcGxpY2FibGU6IFtdXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhUHJvbWlzZXMucHVzaChDb21tb25VdGlscy5zZXRDb250ZXh0c0Jhc2VkT25PcGVyYXRpb25BdmFpbGFibGUob0ludGVybmFsTW9kZWxDb250ZXh0LCBbXSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoc0NvbnRyb2wgPT09IFwidGFibGVcIikge1xuXHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKGFQcm9taXNlcyk7XG5cdFx0fVxuXHR9LFxuXHRfc2V0QWN0aW9uRW5hYmxlbWVudEZvclRhYmxlOiBmdW5jdGlvbiAob1NlbGVjdGVkQ29udGV4dDogYW55LCBvSW50ZXJuYWxNb2RlbENvbnRleHQ6IGFueSwgc0FjdGlvbjogc3RyaW5nLCBzUHJvcGVydHk6IGFueSkge1xuXHRcdC8vIFJlc2V0IGFsbCBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wdXRhdGlvblxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufWAsIHtcblx0XHRcdGJFbmFibGVkOiBmYWxzZSxcblx0XHRcdGFBcHBsaWNhYmxlOiBbXSxcblx0XHRcdGFOb3RBcHBsaWNhYmxlOiBbXVxuXHRcdH0pO1xuXHRcdC8vIE5vdGUgdGhhdCBub24gZHluYW1pYyBhY3Rpb25zIGFyZSBub3QgcHJvY2Vzc2VkIGhlcmUuIFRoZXkgYXJlIGVuYWJsZWQgYmVjYXVzZVxuXHRcdC8vIG9uZSBvciBtb3JlIGFyZSBzZWxlY3RlZCBhbmQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBjb25kaXRpb24gaW4gdGhlIHRlbXBsYXRpbmdcblx0XHQvLyBpcyB0aGVuIHVuZGVmaW5lZCBhbmQgdGh1cyB0aGUgYnV0dG9uIHRha2VzIHRoZSBkZWZhdWx0IGVuYWJsaW5nLCB3aGljaCBpcyB0cnVlIVxuXHRcdGNvbnN0IGFBcHBsaWNhYmxlID0gW10sXG5cdFx0XHRhTm90QXBwbGljYWJsZSA9IFtdLFxuXHRcdFx0c0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCA9IGAke29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2R5bmFtaWNBY3Rpb25zLyR7c0FjdGlvbn0vYkVuYWJsZWRgO1xuXHRcdGlmICh0eXBlb2Ygc1Byb3BlcnR5ID09PSBcIm9iamVjdFwiICYmIHNQcm9wZXJ0eSAhPT0gbnVsbCAmJiBzUHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKG9TZWxlY3RlZENvbnRleHQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3QoKTtcblx0XHRcdFx0Y29uc3Qgb1RyYW5zZm9ybWVkQmluZGluZyA9IHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KFxuXHRcdFx0XHRcdHNQcm9wZXJ0eSxcblx0XHRcdFx0XHRcIlBhdGhJbk1vZGVsXCIsXG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuXHRcdFx0XHRcdGZ1bmN0aW9uIChvQmluZGluZ0V4cHJlc3Npb246IGFueSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbnN0YW50KG9Db250ZXh0RGF0YVtvQmluZGluZ0V4cHJlc3Npb24ucGF0aF0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBzUmVzdWx0ID0gY29tcGlsZUV4cHJlc3Npb24ob1RyYW5zZm9ybWVkQmluZGluZyk7XG5cdFx0XHRcdGlmIChzUmVzdWx0ID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgsIHRydWUpO1xuXHRcdFx0XHRcdGFBcHBsaWNhYmxlLnB1c2gob1NlbGVjdGVkQ29udGV4dCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YU5vdEFwcGxpY2FibGUucHVzaChvU2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Q29tbW9uVXRpbHMuc2V0RHluYW1pY0FjdGlvbkNvbnRleHRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgc0FjdGlvbiwgYUFwcGxpY2FibGUsIGFOb3RBcHBsaWNhYmxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYVJlcXVlc3RQcm9taXNlcyA9IFtdO1xuXHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3QoKTtcblx0XHRcdGlmIChzUHJvcGVydHkgPT09IG51bGwgJiYgISFvQ29udGV4dERhdGFbYCMke3NBY3Rpb259YF0pIHtcblx0XHRcdFx0Ly9sb29rIGZvciBhY3Rpb24gYWR2ZXJ0aXNlbWVudCBpZiBwcmVzZW50IGFuZCBpdHMgdmFsdWUgaXMgbm90IG51bGxcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LmdldE1vZGVsKCkuc2V0UHJvcGVydHkoc0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCwgdHJ1ZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBDb2xsZWN0IHByb21pc2VzIHRvIHJldHJpZXZlIHNpbmdsZXRvbiBvciBub3JtYWwgcHJvcGVydHkgdmFsdWUgYXN5bmNocm9ub3VzbHlcblx0XHRcdFx0YVJlcXVlc3RQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnJlcXVlc3RQcm9wZXJ0eShvU2VsZWN0ZWRDb250ZXh0LCBzQWN0aW9uLCBzUHJvcGVydHksIHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2hlbiBhbGwgcHJvcGVydHkgdmFsdWVzIGhhdmUgYmVlbiByZXRyaWV2ZWQsIHNldFxuXHRcdFx0Ly8gVGhlIGFwcGxpY2FibGUgYW5kIG5vdC1hcHBsaWNhYmxlIHNlbGVjdGVkIGNvbnRleHRzIGZvciBlYWNoIGFjdGlvbiBhbmRcblx0XHRcdC8vIFRoZSBlbmFibGVkIHByb3BlcnR5IG9mIHRoZSBkeW5hbWljIGFjdGlvbiBpbiBpbnRlcm5hbCBtb2RlbCBjb250ZXh0LlxuXHRcdFx0cmV0dXJuIENvbW1vblV0aWxzLnNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZShvSW50ZXJuYWxNb2RlbENvbnRleHQsIGFSZXF1ZXN0UHJvbWlzZXMpO1xuXHRcdH1cblx0XHRyZXR1cm4ge307XG5cdH1cbn07XG5leHBvcnQgZGVmYXVsdCBBY3Rpb25SdW50aW1lO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztFQUdBLElBQU1BLGFBQWEsR0FBRztJQUNyQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsbUJBQW1CLEVBQUUsVUFDcEJDLHFCQURvQixFQUVwQkMsNEJBRm9CLEVBR3BCQyxpQkFIb0IsRUFJcEJDLFFBSm9CLEVBS25CO01BQ0QsSUFBTUMsU0FBUyxHQUFHLEVBQWxCOztNQUNBLEtBQUssSUFBTUMsT0FBWCxJQUFzQkosNEJBQXRCLEVBQW9EO1FBQ25ERCxxQkFBcUIsQ0FBQ00sV0FBdEIsQ0FBa0NELE9BQWxDLEVBQTJDLEtBQTNDO1FBQ0EsSUFBTUUsU0FBUyxHQUFHTiw0QkFBNEIsQ0FBQ0ksT0FBRCxDQUE5Qzs7UUFDQSxLQUFLLElBQUlHLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdOLGlCQUFpQixDQUFDTyxNQUF0QyxFQUE4Q0QsQ0FBQyxFQUEvQyxFQUFtRDtVQUNsRCxJQUFNRSxnQkFBZ0IsR0FBR1IsaUJBQWlCLENBQUNNLENBQUQsQ0FBMUM7O1VBQ0EsSUFBSUUsZ0JBQUosRUFBc0I7WUFDckIsSUFBTUMsWUFBWSxHQUFHRCxnQkFBZ0IsQ0FBQ0UsU0FBakIsRUFBckI7O1lBQ0EsSUFBSVQsUUFBUSxLQUFLLE9BQWpCLEVBQTBCO2NBQ3pC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
139
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25SdW50aW1lIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJhU2VsZWN0ZWRDb250ZXh0cyIsInNDb250cm9sIiwiYVByb21pc2VzIiwic0FjdGlvbiIsImFSZXF1ZXN0UHJvbWlzZXMiLCJzZXRQcm9wZXJ0eSIsInNQcm9wZXJ0eSIsImkiLCJsZW5ndGgiLCJvU2VsZWN0ZWRDb250ZXh0Iiwib0NvbnRleHREYXRhIiwiZ2V0T2JqZWN0IiwiX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZSIsImJFbmFibGVkIiwiYUFwcGxpY2FibGUiLCJhTm90QXBwbGljYWJsZSIsInB1c2giLCJDb21tb25VdGlscyIsInNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZSIsIlByb21pc2UiLCJhbGwiLCJzZXRBY3Rpb25FbmFibGVtZW50QWZ0ZXJQYXRjaCIsIm9WaWV3Iiwib0xpc3RCaW5kaW5nIiwib0ludGVybmFsTW9kZWxDb250ZXh0RGF0YSIsIm9Db250cm9scyIsImNvbnRyb2xzIiwic0tleSIsImNvbnRyb2xJZCIsIm9UYWJsZSIsImJ5SWQiLCJpc0EiLCJvUm93QmluZGluZyIsImdldFJvd0JpbmRpbmciLCJKU09OIiwicGFyc2UiLCJkYXRhIiwiY3VzdG9tRGF0YSIsImdldFNlbGVjdGVkQ29udGV4dHMiLCJzRHluYW1pY0FjdGlvbkVuYWJsZWRQYXRoIiwiZ2V0UGF0aCIsInVuZGVmaW5lZCIsIm9UcmFuc2Zvcm1lZEJpbmRpbmciLCJ0cmFuc2Zvcm1SZWN1cnNpdmVseSIsIm9CaW5kaW5nRXhwcmVzc2lvbiIsImNvbnN0YW50IiwicGF0aCIsInNSZXN1bHQiLCJjb21waWxlRXhwcmVzc2lvbiIsImdldE1vZGVsIiwic2V0RHluYW1pY0FjdGlvbkNvbnRleHRzIiwicmVxdWVzdFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb25SdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgdHJhbnNmb3JtUmVjdXJzaXZlbHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5jb25zdCBBY3Rpb25SdW50aW1lID0ge1xuXHQvKipcblx0ICogU2V0cyB0aGUgYWN0aW9uIGVuYWJsZW1lbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzZXRBY3Rpb25FbmFibGVtZW50XG5cdCAqIEBwYXJhbSBvSW50ZXJuYWxNb2RlbENvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgbW9kZWxcblx0ICogQHBhcmFtIG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAgTWFwIGNvbnRhaW5pbmcgdGhlIG9wZXJhdGlvbiBhdmFpbGFiaWxpdHkgb2YgYWN0aW9uc1xuXHQgKiBAcGFyYW0gYVNlbGVjdGVkQ29udGV4dHMgQXJyYXkgY29udGFpbmluZyBzZWxlY3RlZCBjb250ZXh0cyBvZiB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHNDb250cm9sIENvbnRyb2wgbmFtZVxuXHQgKiBAcmV0dXJucyBQcm9taXNlLmFsbChhUHJvbWlzZXMpXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0c2V0QWN0aW9uRW5hYmxlbWVudDogZnVuY3Rpb24gKFxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0b0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcDogYW55LFxuXHRcdGFTZWxlY3RlZENvbnRleHRzOiBhbnlbXSxcblx0XHRzQ29udHJvbDogc3RyaW5nXG5cdCkge1xuXHRcdGNvbnN0IGFQcm9taXNlcyA9IFtdO1xuXHRcdGZvciAoY29uc3Qgc0FjdGlvbiBpbiBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwKSB7XG5cdFx0XHRsZXQgYVJlcXVlc3RQcm9taXNlcyA9IFtdO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KHNBY3Rpb24sIGZhbHNlKTtcblx0XHRcdGNvbnN0IHNQcm9wZXJ0eSA9IG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXBbc0FjdGlvbl07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFTZWxlY3RlZENvbnRleHRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IG9TZWxlY3RlZENvbnRleHQgPSBhU2VsZWN0ZWRDb250ZXh0c1tpXTtcblx0XHRcdFx0aWYgKG9TZWxlY3RlZENvbnRleHQpIHtcblx0XHRcdFx0XHRjb25zdCBvQ29udGV4dERhdGEgPSBvU2VsZWN0ZWRDb250ZXh0LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdGlmIChzQ29udHJvbCA9PT0gXCJjaGFydFwiKSB7XG5cdFx0XHRcdFx0XHRpZiAoKHNQcm9wZXJ0eSA9PT0gbnVsbCAmJiAhIW9Db250ZXh0RGF0YVtgIyR7c0FjdGlvbn1gXSkgfHwgb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3Qoc1Byb3BlcnR5KSkge1xuXHRcdFx0XHRcdFx0XHQvL2xvb2sgZm9yIGFjdGlvbiBhZHZlcnRpc2VtZW50IGlmIHByZXNlbnQgYW5kIGl0cyB2YWx1ZSBpcyBub3QgbnVsbFxuXHRcdFx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0FjdGlvbiwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoc0NvbnRyb2wgPT09IFwidGFibGVcIikge1xuXHRcdFx0XHRcdFx0YVJlcXVlc3RQcm9taXNlcyA9IHRoaXMuX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZShcblx0XHRcdFx0XHRcdFx0b1NlbGVjdGVkQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRzQWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRzUHJvcGVydHksXG5cdFx0XHRcdFx0XHRcdGFSZXF1ZXN0UHJvbWlzZXNcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoc0NvbnRyb2wgPT09IFwidGFibGVcIikge1xuXHRcdFx0XHRpZiAoIWFTZWxlY3RlZENvbnRleHRzLmxlbmd0aCkge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufWAsIHtcblx0XHRcdFx0XHRcdGJFbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdGFBcHBsaWNhYmxlOiBbXSxcblx0XHRcdFx0XHRcdGFOb3RBcHBsaWNhYmxlOiBbXVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZShvSW50ZXJuYWxNb2RlbENvbnRleHQsIFtdKSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoICYmIHR5cGVvZiBzUHJvcGVydHkgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0XHQvLyBXaGVuIGFsbCBwcm9wZXJ0eSB2YWx1ZXMgaGF2ZSBiZWVuIHJldHJpZXZlZCwgc2V0XG5cdFx0XHRcdFx0Ly8gVGhlIGFwcGxpY2FibGUgYW5kIG5vdC1hcHBsaWNhYmxlIHNlbGVjdGVkIGNvbnRleHRzIGZvciBlYWNoIGFjdGlvbiBhbmRcblx0XHRcdFx0XHQvLyBUaGUgZW5hYmxlZCBwcm9wZXJ0eSBvZiB0aGUgZHluYW1pYyBhY3Rpb24gaW4gaW50ZXJuYWwgbW9kZWwgY29udGV4dC5cblx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaChDb21tb25VdGlscy5zZXRDb250ZXh0c0Jhc2VkT25PcGVyYXRpb25BdmFpbGFibGUob0ludGVybmFsTW9kZWxDb250ZXh0LCBhUmVxdWVzdFByb21pc2VzKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHNDb250cm9sID09PSBcInRhYmxlXCIpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLmFsbChhUHJvbWlzZXMpO1xuXHRcdH1cblx0fSxcblx0c2V0QWN0aW9uRW5hYmxlbWVudEFmdGVyUGF0Y2g6IGZ1bmN0aW9uIChvVmlldzogYW55LCBvTGlzdEJpbmRpbmc6IGFueSwgb0ludGVybmFsTW9kZWxDb250ZXh0OiBhbnkpIHtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHREYXRhOiBhbnkgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldE9iamVjdCgpO1xuXHRcdGNvbnN0IG9Db250cm9scyA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dERhdGE/LmNvbnRyb2xzIHx8IHt9O1xuXHRcdGZvciAoY29uc3Qgc0tleSBpbiBvQ29udHJvbHMpIHtcblx0XHRcdGlmIChvQ29udHJvbHNbc0tleV0gJiYgb0NvbnRyb2xzW3NLZXldLmNvbnRyb2xJZCkge1xuXHRcdFx0XHRjb25zdCBvVGFibGU6IGFueSA9IG9WaWV3LmJ5SWQoc0tleSk7XG5cdFx0XHRcdGlmIChvVGFibGUuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0XHRcdGNvbnN0IG9Sb3dCaW5kaW5nID0gb1RhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdFx0XHRpZiAob1Jvd0JpbmRpbmcgPT0gb0xpc3RCaW5kaW5nKSB7XG5cdFx0XHRcdFx0XHRBY3Rpb25SdW50aW1lLnNldEFjdGlvbkVuYWJsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0SlNPTi5wYXJzZShvVGFibGUuZGF0YShcIm9wZXJhdGlvbkF2YWlsYWJsZU1hcFwiKS5jdXN0b21EYXRhKSxcblx0XHRcdFx0XHRcdFx0b1RhYmxlLmdldFNlbGVjdGVkQ29udGV4dHMoKSxcblx0XHRcdFx0XHRcdFx0XCJ0YWJsZVwiXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0X3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZTogZnVuY3Rpb24gKFxuXHRcdG9TZWxlY3RlZENvbnRleHQ6IGFueSxcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQ6IGFueSxcblx0XHRzQWN0aW9uOiBzdHJpbmcsXG5cdFx0c1Byb3BlcnR5OiBhbnksXG5cdFx0YVJlcXVlc3RQcm9taXNlczogYW55XG5cdCkge1xuXHRcdC8vIFJlc2V0IGFsbCBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wdXRhdGlvblxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufWAsIHtcblx0XHRcdGJFbmFibGVkOiBmYWxzZSxcblx0XHRcdGFBcHBsaWNhYmxlOiBbXSxcblx0XHRcdGFOb3RBcHBsaWNhYmxlOiBbXVxuXHRcdH0pO1xuXHRcdC8vIE5vdGUgdGhhdCBub24gZHluYW1pYyBhY3Rpb25zIGFyZSBub3QgcHJvY2Vzc2VkIGhlcmUuIFRoZXkgYXJlIGVuYWJsZWQgYmVjYXVzZVxuXHRcdC8vIG9uZSBvciBtb3JlIGFyZSBzZWxlY3RlZCBhbmQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBjb25kaXRpb24gaW4gdGhlIHRlbXBsYXRpbmdcblx0XHQvLyBpcyB0aGVuIHVuZGVmaW5lZCBhbmQgdGh1cyB0aGUgYnV0dG9uIHRha2VzIHRoZSBkZWZhdWx0IGVuYWJsaW5nLCB3aGljaCBpcyB0cnVlIVxuXHRcdGNvbnN0IGFBcHBsaWNhYmxlID0gW10sXG5cdFx0XHRhTm90QXBwbGljYWJsZSA9IFtdLFxuXHRcdFx0c0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCA9IGAke29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2R5bmFtaWNBY3Rpb25zLyR7c0FjdGlvbn0vYkVuYWJsZWRgO1xuXHRcdGlmICh0eXBlb2Ygc1Byb3BlcnR5ID09PSBcIm9iamVjdFwiICYmIHNQcm9wZXJ0eSAhPT0gbnVsbCAmJiBzUHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKG9TZWxlY3RlZENvbnRleHQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3QoKTtcblx0XHRcdFx0Y29uc3Qgb1RyYW5zZm9ybWVkQmluZGluZyA9IHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KFxuXHRcdFx0XHRcdHNQcm9wZXJ0eSxcblx0XHRcdFx0XHRcIlBhdGhJbk1vZGVsXCIsXG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuXHRcdFx0XHRcdGZ1bmN0aW9uIChvQmluZGluZ0V4cHJlc3Npb246IGFueSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbnN0YW50KG9Db250ZXh0RGF0YVtvQmluZGluZ0V4cHJlc3Npb24ucGF0aF0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBzUmVzdWx0ID0gY29tcGlsZUV4cHJlc3Npb24ob1RyYW5zZm9ybWVkQmluZGluZyk7XG5cdFx0XHRcdGlmIChzUmVzdWx0ID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgsIHRydWUpO1xuXHRcdFx0XHRcdGFBcHBsaWNhYmxlLnB1c2gob1NlbGVjdGVkQ29udGV4dCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YU5vdEFwcGxpY2FibGUucHVzaChvU2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Q29tbW9uVXRpbHMuc2V0RHluYW1pY0FjdGlvbkNvbnRleHRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgc0FjdGlvbiwgYUFwcGxpY2FibGUsIGFOb3RBcHBsaWNhYmxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3QoKTtcblx0XHRcdGlmIChzUHJvcGVydHkgPT09IG51bGwgJiYgISFvQ29udGV4dERhdGFbYCMke3NBY3Rpb259YF0pIHtcblx0XHRcdFx0Ly9sb29rIGZvciBhY3Rpb24gYWR2ZXJ0aXNlbWVudCBpZiBwcmVzZW50IGFuZCBpdHMgdmFsdWUgaXMgbm90IG51bGxcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LmdldE1vZGVsKCkuc2V0UHJvcGVydHkoc0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCwgdHJ1ZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBDb2xsZWN0IHByb21pc2VzIHRvIHJldHJpZXZlIHNpbmdsZXRvbiBvciBub3JtYWwgcHJvcGVydHkgdmFsdWUgYXN5bmNocm9ub3VzbHlcblx0XHRcdFx0YVJlcXVlc3RQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnJlcXVlc3RQcm9wZXJ0eShvU2VsZWN0ZWRDb250ZXh0LCBzQWN0aW9uLCBzUHJvcGVydHksIHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFSZXF1ZXN0UHJvbWlzZXM7XG5cdH1cbn07XG5leHBvcnQgZGVmYXVsdCBBY3Rpb25SdW50aW1lO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztFQUdBLElBQU1BLGFBQWEsR0FBRztJQUNyQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0Ms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
@@ -22,6 +22,7 @@ const ActionRuntime = {
22
22
  ) {
23
23
  const aPromises = [];
24
24
  for (const sAction in oActionOperationAvailableMap) {
25
+ let aRequestPromises = [];
25
26
  oInternalModelContext.setProperty(sAction, false);
26
27
  const sProperty = oActionOperationAvailableMap[sAction];
27
28
  for (let i = 0; i < aSelectedContexts.length; i++) {
@@ -35,24 +36,63 @@ const ActionRuntime = {
35
36
  break;
36
37
  }
37
38
  } else if (sControl === "table") {
38
- aPromises.push(this._setActionEnablementForTable(oSelectedContext, oInternalModelContext, sAction, sProperty));
39
+ aRequestPromises = this._setActionEnablementForTable(
40
+ oSelectedContext,
41
+ oInternalModelContext,
42
+ sAction,
43
+ sProperty,
44
+ aRequestPromises
45
+ );
39
46
  }
40
47
  }
41
48
  }
42
- if (sControl === "table" && !aSelectedContexts.length) {
43
- oInternalModelContext.setProperty(`dynamicActions/${sAction}`, {
44
- bEnabled: false,
45
- aApplicable: [],
46
- aNotApplicable: []
47
- });
48
- aPromises.push(CommonUtils.setContextsBasedOnOperationAvailable(oInternalModelContext, []));
49
+ if (sControl === "table") {
50
+ if (!aSelectedContexts.length) {
51
+ oInternalModelContext.setProperty(`dynamicActions/${sAction}`, {
52
+ bEnabled: false,
53
+ aApplicable: [],
54
+ aNotApplicable: []
55
+ });
56
+ aPromises.push(CommonUtils.setContextsBasedOnOperationAvailable(oInternalModelContext, []));
57
+ } else if (aSelectedContexts.length && typeof sProperty === "string") {
58
+ // When all property values have been retrieved, set
59
+ // The applicable and not-applicable selected contexts for each action and
60
+ // The enabled property of the dynamic action in internal model context.
61
+ aPromises.push(CommonUtils.setContextsBasedOnOperationAvailable(oInternalModelContext, aRequestPromises));
62
+ }
49
63
  }
50
64
  }
51
65
  if (sControl === "table") {
52
66
  return Promise.all(aPromises);
53
67
  }
54
68
  },
55
- _setActionEnablementForTable: function (oSelectedContext: any, oInternalModelContext: any, sAction: string, sProperty: any) {
69
+ setActionEnablementAfterPatch: function (oView: any, oListBinding: any, oInternalModelContext: any) {
70
+ const oInternalModelContextData: any = oInternalModelContext?.getObject();
71
+ const oControls = oInternalModelContextData?.controls || {};
72
+ for (const sKey in oControls) {
73
+ if (oControls[sKey] && oControls[sKey].controlId) {
74
+ const oTable: any = oView.byId(sKey);
75
+ if (oTable.isA("sap.ui.mdc.Table")) {
76
+ const oRowBinding = oTable.getRowBinding();
77
+ if (oRowBinding == oListBinding) {
78
+ ActionRuntime.setActionEnablement(
79
+ oInternalModelContext,
80
+ JSON.parse(oTable.data("operationAvailableMap").customData),
81
+ oTable.getSelectedContexts(),
82
+ "table"
83
+ );
84
+ }
85
+ }
86
+ }
87
+ }
88
+ },
89
+ _setActionEnablementForTable: function (
90
+ oSelectedContext: any,
91
+ oInternalModelContext: any,
92
+ sAction: string,
93
+ sProperty: any,
94
+ aRequestPromises: any
95
+ ) {
56
96
  // Reset all properties before computation
57
97
  oInternalModelContext.setProperty(`dynamicActions/${sAction}`, {
58
98
  bEnabled: false,
@@ -87,7 +127,6 @@ const ActionRuntime = {
87
127
  }
88
128
  CommonUtils.setDynamicActionContexts(oInternalModelContext, sAction, aApplicable, aNotApplicable);
89
129
  } else {
90
- const aRequestPromises = [];
91
130
  const oContextData = oSelectedContext.getObject();
92
131
  if (sProperty === null && !!oContextData[`#${sAction}`]) {
93
132
  //look for action advertisement if present and its value is not null
@@ -96,13 +135,8 @@ const ActionRuntime = {
96
135
  // Collect promises to retrieve singleton or normal property value asynchronously
97
136
  aRequestPromises.push(CommonUtils.requestProperty(oSelectedContext, sAction, sProperty, sDynamicActionEnabledPath));
98
137
  }
99
-
100
- // When all property values have been retrieved, set
101
- // The applicable and not-applicable selected contexts for each action and
102
- // The enabled property of the dynamic action in internal model context.
103
- return CommonUtils.setContextsBasedOnOperationAvailable(oInternalModelContext, aRequestPromises);
104
138
  }
105
- return {};
139
+ return aRequestPromises;
106
140
  }
107
141
  };
108
142
  export default ActionRuntime;
@@ -249,8 +249,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/contr
249
249
  this._oDiagnostics = new Diagnostics();
250
250
  var oModel = this.getModel();
251
251
 
252
- if (oModel) {
252
+ if (oModel && oModel.isA("sap.ui.model.odata.v4.ODataModel")) {
253
253
  this.entityContainer = oModel.getMetaModel().requestObject("/$EntityContainer/");
254
+ } else {
255
+ // not an OData v4 service
256
+ this.entityContainer = Promise.resolve();
254
257
  }
255
258
 
256
259
  var oManifestUI5 = this.getMetadata().getManifestEntry("/sap.ui5", true);
@@ -428,4 +431,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/AppStateHandler", "sap/fe/core/contr
428
431
  }(UIComponent), _class2.instanceMap = {}, _class2)) || _class);
429
432
  return AppComponent;
430
433
  }, false);
431
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJST1VURVJDTEFTUyIsIk5BVkNPTlRBSU5FUiIsIkFwcENvbXBvbmVudCIsImRlZmluZVVJNUNsYXNzIiwiaW50ZXJmYWNlcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0Iiwic2VydmljZXMiLCJyZXNvdXJjZU1vZGVsIiwiZmFjdG9yeU5hbWUiLCJyb3V0aW5nU2VydmljZSIsInN0YXJ0dXAiLCJzaGVsbFNlcnZpY2VzIiwiU2hlbGxVSVNlcnZpY2UiLCJuYXZpZ2F0aW9uU2VydmljZSIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiYXN5bmNDb21wb25lbnRTZXJ2aWNlIiwicm9vdFZpZXciLCJ2aWV3TmFtZSIsInR5cGUiLCJhc3luYyIsImlkIiwicm91dGluZyIsImNvbnRyb2xJZCIsInJvdXRlckNsYXNzIiwidmlld1R5cGUiLCJjb250cm9sQWdncmVnYXRpb24iLCJjb250YWluZXJPcHRpb25zIiwicHJvcGFnYXRlTW9kZWwiLCJkZXNpZ250aW1lIiwic3RhcnR1cE1vZGUiLCJOb3JtYWwiLCJfaXNGY2xFbmFibGVkIiwib01hbmlmZXN0VUk1IiwiZ2V0TWV0YWRhdGEiLCJnZXRNYW5pZmVzdEVudHJ5IiwiZ2V0Um91dGVyUHJveHkiLCJfb1JvdXRlclByb3h5IiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiX29BcHBTdGF0ZUhhbmRsZXIiLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJnZXRSb290Q29udGFpbmVyIiwiZ2V0Q29udGVudCIsImdldFN0YXJ0dXBNb2RlIiwic2V0U3RhcnR1cE1vZGVDcmVhdGUiLCJDcmVhdGUiLCJzZXRTdGFydHVwTW9kZURlZXBsaW5rIiwiRGVlcGxpbmsiLCJpbml0IiwidWlNb2RlbCIsIkpTT05Nb2RlbCIsImVkaXRNb2RlIiwiRWRpdE1vZGUiLCJEaXNwbGF5IiwiaXNFZGl0YWJsZSIsImRyYWZ0U3RhdHVzIiwiRHJhZnRTdGF0dXMiLCJDbGVhciIsImJ1c3kiLCJidXN5TG9jYWwiLCJwYWdlcyIsIm9JbnRlcm5hbE1vZGVsIiwic2V0RGVmYXVsdEJpbmRpbmdNb2RlIiwiTW9kZWxIZWxwZXIiLCJlbmhhbmNlVWlKU09OTW9kZWwiLCJlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwiLCJzZXRNb2RlbCIsImJJbml0aWFsaXplUm91dGluZyIsInVuZGVmaW5lZCIsIlJvdXRlclByb3h5IiwiQXBwU3RhdGVIYW5kbGVyIiwiX29EaWFnbm9zdGljcyIsIkRpYWdub3N0aWNzIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJlbnRpdHlDb250YWluZXIiLCJnZXRNZXRhTW9kZWwiLCJyZXF1ZXN0T2JqZWN0IiwiTG9nIiwiaW5mbyIsImluZGV4T2YiLCJFcnJvciIsIlNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImFkZFNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImluc3RhbmNlTWFwIiwiZ2V0SWQiLCJvblNlcnZpY2VzU3RhcnRlZCIsImZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbiIsInRoZW4iLCJhdHRhY2hSb3V0ZU1hdGNoZXJzIiwiZ2V0Um91dGVyIiwiaW5pdGlhbGl6ZSIsImNhdGNoIiwiZXJyb3IiLCJvUmVzb3VyY2VCdW5kbGUiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiZGlzcGxheU1lc3NhZ2VQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiRkNMTGV2ZWwiLCJnZXRSb3V0aW5nU2VydmljZSIsImluaXRpYWxpemVSb3V0aW5nIiwiYXR0YWNoQWZ0ZXJJbml0IiwiZXJyIiwiZXhpdCIsImRlc3Ryb3kiLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImdldERpYWdub3N0aWNzIiwiVmFsdWVMaXN0SGVscGVyIiwiaW5pdGlhbGl6ZUNhY2hlZFZhbHVlSGVscCIsIndpbmRvdyIsIl9yb3V0aW5nIiwiZSIsIm9NYWluTW9kZWwiLCJvTW9kZWxzIiwib0hlYWRlcnMiLCJvUmVxdWVzdG9yIiwialF1ZXJ5IiwiZXh0ZW5kIiwibUhlYWRlcnMiLCJiZWZvcmVFeGl0IiwiYXJncyIsImdldENvbXBvbmVudERhdGEiLCJnZXRTaGVsbFNlcnZpY2VzIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldFN0YXJ0dXBQYXJhbWV0ZXJzIiwib0NvbXBvbmVudERhdGEiLCJvU3RhcnRVcFBhcmFtZXRlcnMiLCJzdGFydHVwUGFyYW1ldGVycyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzdG9yZSIsInZpZXdTdGF0ZSIsIm9uUmVzdG9yZSIsInN1c3BlbmQiLCJvblN1c3BlbmQiLCJVSUNvbXBvbmVudCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IEFwcFN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgUm91dGVyUHJveHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3JvdXRpbmcvUm91dGVyUHJveHlcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9FbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IFZhbHVlTGlzdEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IHR5cGUgQmFzZUNvbnRyb2xsZXIgZnJvbSBcIi4vQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGRlbGV0ZU1vZGVsQ2FjaGVEYXRhIH0gZnJvbSBcIi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcIi4vaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcblxuY29uc3QgU3RhcnR1cE1vZGUgPSBsaWJyYXJ5LlN0YXJ0dXBNb2RlO1xuXG5jb25zdCBOQVZDT05GID0ge1xuXHRGQ0w6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5GY2xcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAuZi5yb3V0aW5nLlJvdXRlclwiXG5cdH0sXG5cdE5BVkNPTlRBSU5FUjoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5tLnJvdXRpbmcuUm91dGVyXCJcblx0fVxufTtcblxuLyoqXG4gKiBNYWluIGNsYXNzIGZvciBjb21wb25lbnRzIHVzZWQgZm9yIGFuIGFwcGxpY2F0aW9uIGluIFNBUCBGaW9yaSBlbGVtZW50cy5cbiAqXG4gKiBBcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHVzaW5nIHRoZSB0ZW1wbGF0ZXMgYW5kIGJ1aWxkaW5nIGJsb2NrcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgc2hvdWxkIGNyZWF0ZSB0aGVpciBhcHBzIGJ5IGV4dGVuZGluZyB0aGlzIGNvbXBvbmVudC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHNlcnZpY2VzIHRoYXQgeW91IG5lZWQgZm9yIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIHRlbXBsYXRlcyB0byB3b3JrIHByb3Blcmx5IGFyZSBzdGFydGVkLlxuICpcbiAqIFdoZW4geW91IHVzZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQgYXMgdGhlIGJhc2UgY29tcG9uZW50LCB5b3UgYWxzbyBuZWVkIHRvIHVzZSBhIHJvb3RWaWV3LiBTQVAgRmlvcmkgZWxlbWVudHMgcHJvdmlkZXMgdHdvIG9wdGlvbnM6IDxici8+XG4gKiAgLSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5OYXZDb250YWluZXIgd2hlbiB1c2luZyBzYXAubS5yb3V0aW5nLlJvdXRlciA8YnIvPlxuICogIC0gc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuRmNsIHdoZW4gdXNpbmcgc2FwLmYucm91dGluZy5Sb3V0ZXIgKEZDTCB1c2UgY2FzZSkgPGJyLz5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIsIHtcblx0aW50ZXJmYWNlczogW1wic2FwLnVpLmNvcmUuSUFzeW5jQ29udGVudENyZWF0aW9uXCJdLFxuXHRjb25maWc6IHtcblx0XHRmdWxsV2lkdGg6IHRydWVcblx0fSxcblx0bWFuaWZlc3Q6IHtcblx0XHRcInNhcC51aTVcIjoge1xuXHRcdFx0c2VydmljZXM6IHtcblx0XHRcdFx0cmVzb3VyY2VNb2RlbDoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJlc291cmNlTW9kZWxTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0XCJzdGFydHVwXCI6IFwid2FpdEZvclwiLFxuXHRcdFx0XHRcdFwic2V0dGluZ3NcIjoge1xuXHRcdFx0XHRcdFx0XCJidW5kbGVzXCI6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRcIm1vZGVsTmFtZVwiOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJvdXRpbmdTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuUm91dGluZ1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaGVsbFNlcnZpY2VzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2hlbGxTZXJ2aWNlc1wiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFNoZWxsVUlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLnVzaGVsbC51aTVzZXJ2aWNlLlNoZWxsVUlTZXJ2aWNlXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0bmF2aWdhdGlvblNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVudmlyb25tZW50Q2FwYWJpbGl0aWVzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuRW52aXJvbm1lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2lkZUVmZmVjdHNTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2lkZUVmZmVjdHNTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0YXN5bmNDb21wb25lbnRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQXN5bmNDb21wb25lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJvb3RWaWV3OiB7XG5cdFx0XHRcdHZpZXdOYW1lOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSxcblx0XHRcdFx0dHlwZTogXCJYTUxcIixcblx0XHRcdFx0YXN5bmM6IHRydWUsXG5cdFx0XHRcdGlkOiBcImFwcFJvb3RWaWV3XCJcblx0XHRcdH0sXG5cdFx0XHRyb3V0aW5nOiB7XG5cdFx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRcdGNvbnRyb2xJZDogXCJhcHBDb250ZW50XCIsXG5cdFx0XHRcdFx0cm91dGVyQ2xhc3M6IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTLFxuXHRcdFx0XHRcdHZpZXdUeXBlOiBcIlhNTFwiLFxuXHRcdFx0XHRcdGNvbnRyb2xBZ2dyZWdhdGlvbjogXCJwYWdlc1wiLFxuXHRcdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRcdGNvbnRhaW5lck9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdHByb3BhZ2F0ZU1vZGVsOiB0cnVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRkZXNpZ250aW1lOiBcInNhcC9mZS9jb3JlL2Rlc2lnbnRpbWUvQXBwQ29tcG9uZW50LmRlc2lnbnRpbWVcIixcblxuXHRsaWJyYXJ5OiBcInNhcC5mZS5jb3JlXCJcbn0pXG5jbGFzcyBBcHBDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudCB7XG5cdHN0YXRpYyBpbnN0YW5jZU1hcDogUmVjb3JkPHN0cmluZywgQXBwQ29tcG9uZW50PiA9IHt9O1xuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblx0cHJpdmF0ZSBfb0FwcFN0YXRlSGFuZGxlciE6IEFwcFN0YXRlSGFuZGxlcjtcblx0cHJpdmF0ZSBiSW5pdGlhbGl6ZVJvdXRpbmc/OiBib29sZWFuO1xuXHRwcml2YXRlIF9vRGlhZ25vc3RpY3MhOiBEaWFnbm9zdGljcztcblx0cHJpdmF0ZSBlbnRpdHlDb250YWluZXI6IGFueTtcblx0cHJpdmF0ZSBzdGFydHVwTW9kZTogc3RyaW5nID0gU3RhcnR1cE1vZGUuTm9ybWFsO1xuXG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXG5cdF9pc0ZjbEVuYWJsZWQoKSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCIvc2FwLnVpNVwiLCB0cnVlKTtcblx0XHRyZXR1cm4gTkFWQ09ORi5GQ0wuVklFV05BTUUgPT09IG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldFJvdXRlclByb3h5XG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMgQSBSZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5XG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvdXRlclByb3h5KCk6IFJvdXRlclByb3h5IHtcblx0XHRyZXR1cm4gdGhpcy5fb1JvdXRlclByb3h5O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldEFwcFN0YXRlSGFuZGxlclxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBBcHBTdGF0ZUhhbmRsZXJcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0QXBwU3RhdGVIYW5kbGVyKCkge1xuXHRcdHJldHVybiB0aGlzLl9vQXBwU3RhdGVIYW5kbGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgbmF2L0ZDTCBDb250cm9sbGVyLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldFJvb3RWaWV3Q29udHJvbGxlclxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byB0aGUgRkNMIENvbnRyb2xsZXJcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um9vdFZpZXdDb250cm9sbGVyKCk6IEJhc2VDb250cm9sbGVyIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0Um9vdENvbnRyb2woKSBhcyBWaWV3KS5nZXRDb250cm9sbGVyKCkgYXMgQmFzZUNvbnRyb2xsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQjZ2V0Um9vdENvbnRhaW5lclxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2xcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um9vdENvbnRhaW5lcigpIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0Um9vdENvbnRyb2woKSBhcyBWaWV3KS5nZXRDb250ZW50KClbMF07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzdGFydHVwIG1vZGUgb2YgdGhlIGFwcC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIHN0YXJ0dXAgbW9kZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0U3RhcnR1cE1vZGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zdGFydHVwTW9kZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQ3JlYXRlJy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlQ3JlYXRlKCkge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0RlZXBsaW5rJy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlRGVlcGxpbmsoKSB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkRlZXBsaW5rO1xuXHR9XG5cblx0aW5pdCgpIHtcblx0XHRjb25zdCB1aU1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRlZGl0TW9kZTogbGlicmFyeS5FZGl0TW9kZS5EaXNwbGF5LFxuXHRcdFx0aXNFZGl0YWJsZTogZmFsc2UsXG5cdFx0XHRkcmFmdFN0YXR1czogbGlicmFyeS5EcmFmdFN0YXR1cy5DbGVhcixcblx0XHRcdGJ1c3k6IGZhbHNlLFxuXHRcdFx0YnVzeUxvY2FsOiB7fSxcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHQvLyBzZXQgdGhlIGJpbmRpbmcgT25lV2F5IGZvciB1aU1vZGVsIHRvIHByZXZlbnQgY2hhbmdlcyBpZiBjb250cm9sbGVyIGV4dGVuc2lvbnMgbW9kaWZ5IGEgYm91bmQgcHJvcGVydHkgb2YgYSBjb250cm9sXG5cdFx0dWlNb2RlbC5zZXREZWZhdWx0QmluZGluZ01vZGUoXCJPbmVXYXlcIik7XG5cdFx0Ly8gZm9yIGludGVybmFsIG1vZGVsIGJpbmRpbmcgbmVlZHMgdG8gYmUgdHdvIHdheVxuXHRcdE1vZGVsSGVscGVyLmVuaGFuY2VVaUpTT05Nb2RlbCh1aU1vZGVsLCBsaWJyYXJ5KTtcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwob0ludGVybmFsTW9kZWwpO1xuXG5cdFx0dGhpcy5zZXRNb2RlbCh1aU1vZGVsLCBcInVpXCIpO1xuXHRcdHRoaXMuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cblx0XHR0aGlzLmJJbml0aWFsaXplUm91dGluZyA9IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmJJbml0aWFsaXplUm91dGluZyA6IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5ID0gbmV3IFJvdXRlclByb3h5KCk7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlciA9IG5ldyBBcHBTdGF0ZUhhbmRsZXIodGhpcyk7XG5cdFx0dGhpcy5fb0RpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG5cdFx0Y29uc3Qgb01vZGVsID0gdGhpcy5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdFx0aWYgKG9Nb2RlbCkge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdE9iamVjdChcIi8kRW50aXR5Q29udGFpbmVyL1wiKTtcblx0XHR9XG5cblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0TWFuaWZlc3RFbnRyeShcIi9zYXAudWk1XCIsIHRydWUpO1xuXHRcdGlmIChcblx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUUgJiZcblx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nLmNvbmZpZy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1Ncblx0XHQpIHtcblx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5GQ0wuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUgJiZcblx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nLmNvbmZpZy5yb3V0ZXJDbGFzcyA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1Ncblx0XHQpIHtcblx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0fSBlbHNlIGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUuaW5kZXhPZihcInNhcC5mZVwiKSAhPT0gLTEpIHtcblx0XHRcdHRocm93IEVycm9yKFxuXHRcdFx0XHRgXFxuV3JvbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvdXBsZSAocm9vdFZpZXcvcm91dGVyQ2xhc3MpIGluIG1hbmlmZXN0IGZpbGUuXFxuYCArXG5cdFx0XHRcdFx0YEN1cnJlbnQgdmFsdWVzIGFyZSA6KCR7b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lfS8ke29NYW5pZmVzdFVJNS5yb3V0aW5nLmNvbmZpZy5yb3V0ZXJDbGFzc30pXFxuYCArXG5cdFx0XHRcdFx0YEV4cGVjdGVkIHZhbHVlcyBhcmUgXFxuYCArXG5cdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FfS8ke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfSlcXG5gICtcblx0XHRcdFx0XHRgXFx0IC0gKCR7TkFWQ09ORi5GQ0wuVklFV05BTUV9LyR7TkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1N9KWBcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU31cImApO1xuXHRcdH1cblxuXHRcdC8vIEFkZGluZyBTZW1hbnRpYyBEYXRlIE9wZXJhdG9yc1xuXHRcdC8vIENvbW1lbnRpbmcgc2luY2UgaXQgaXMgbm90IG5lZWRlZCBmb3IgU2luZ2xlUmFuZ2Vcblx0XHRTZW1hbnRpY0RhdGVPcGVyYXRvcnMuYWRkU2VtYW50aWNEYXRlT3BlcmF0b3JzKCk7XG5cblx0XHQvLyB0aGUgaW5pdCBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSByb3V0aW5nIGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MgYWJvdmVcblx0XHQvLyBpdCB3aWxsIGNhbGwgdGhlIGNyZWF0ZUNvbnRlbnQgZnVuY3Rpb24gdG8gaW5zdGFudGlhdGUgdGhlIFJvb3RWaWV3IGFuZCBhZGQgaXQgdG8gdGhlIFVJQ29tcG9uZW50IGFnZ3JlZ2F0aW9uc1xuXG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldID0gdGhpcztcblx0fVxuXHRvblNlcnZpY2VzU3RhcnRlZCgpIHtcblx0XHQvL3JvdXRlciBtdXN0IGJlIHN0YXJ0ZWQgb25jZSB0aGUgcm9vdGNvbnRhaW5lciBpcyBpbml0aWFsaXplZFxuXHRcdC8vc3RhcnRpbmcgb2YgdGhlIHJvdXRlclxuXHRcdGNvbnN0IGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbiA9ICgpID0+IHtcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRpZiAoKHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgYW55KS5hdHRhY2hSb3V0ZU1hdGNoZXJzKSB7XG5cdFx0XHRcdFx0XHQodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLmF0dGFjaFJvdXRlTWF0Y2hlcnMoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5nZXRSb3V0ZXIoKS5pbml0aWFsaXplKCk7XG5cdFx0XHRcdFx0dGhpcy5nZXRSb3V0ZXJQcm94eSgpLmluaXQodGhpcywgdGhpcy5faXNGY2xFbmFibGVkKCkpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKGVycm9yOiBhbnkpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpO1xuXG5cdFx0XHRcdFx0KHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgYW55KS5kaXNwbGF5TWVzc2FnZVBhZ2UoXG5cdFx0XHRcdFx0XHRvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQVBQX0NPTVBPTkVOVF9TQVBGRV9BUFBTVEFSVF9URUNITklDQUxfSVNTVUVTXCIpLFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9FUlJPUlwiKSxcblx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdEZDTExldmVsOiAwXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdGlmICh0aGlzLmJJbml0aWFsaXplUm91dGluZykge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0Um91dGluZ1NlcnZpY2UoKVxuXHRcdFx0XHQuaW5pdGlhbGl6ZVJvdXRpbmcoKVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0KHRoaXMuZ2V0Um9vdENvbnRyb2woKSBhcyBhbnkpLmF0dGFjaEFmdGVySW5pdChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBjYW5ub3QgY2Fubm90IGluaXRpYWxpemUgcm91dGluZzogJHtlcnJ9YCk7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRleGl0KCkge1xuXHRcdHRoaXMuX29BcHBTdGF0ZUhhbmRsZXIuZGVzdHJveSgpO1xuXHRcdHRoaXMuX29Sb3V0ZXJQcm94eS5kZXN0cm95KCk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb0FwcFN0YXRlSGFuZGxlcjtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vUm91dGVyUHJveHk7XG5cdFx0ZGVsZXRlTW9kZWxDYWNoZURhdGEodGhpcy5nZXRNZXRhTW9kZWwoKSk7XG5cdFx0dGhpcy5nZXRNb2RlbChcInVpXCIpLmRlc3Ryb3koKTtcblx0fVxuXHRnZXRNZXRhTW9kZWwoKTogT0RhdGFNZXRhTW9kZWwge1xuXHRcdHJldHVybiB0aGlzLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdH1cblx0Z2V0RGlhZ25vc3RpY3MoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX29EaWFnbm9zdGljcztcblx0fVxuXHRkZXN0cm95KC4uLmFyZ3M6IGFueVtdKSB7XG5cdFx0Ly8gTEVBS1MsIHdpdGggd29ya2Fyb3VuZCBmb3Igc29tZSBGbGV4IC8gTURDIGlzc3VlXG5cdFx0dHJ5IHtcblx0XHRcdC8vIFx0Ly8gVGhpcyBvbmUgaXMgb25seSBhIGxlYWsgaWYgeW91IGRvbid0IGdvIGJhY2sgdG8gdGhlIHNhbWUgY29tcG9uZW50IGluIHRoZSBsb25nIHJ1blxuXHRcdFx0Ly9kZWxldGUgc2FwLnVpLmZsLkZsZXhDb250cm9sbGVyRmFjdG9yeS5fY29tcG9uZW50SW5zdGFudGlhdGlvblByb21pc2VzW3RoaXMuZ2V0SWQoKV07XG5cblx0XHRcdFZhbHVlTGlzdEhlbHBlci5pbml0aWFsaXplQ2FjaGVkVmFsdWVIZWxwKCk7XG5cblx0XHRcdGRlbGV0ZSBBcHBDb21wb25lbnQuaW5zdGFuY2VNYXBbdGhpcy5nZXRJZCgpXTtcblxuXHRcdFx0Ly8gXHR2YXIgb1JlZ2lzdHJ5ID0gc2FwLnVpLm1kYy5wMTNuLkVuZ2luZS5nZXRJbnN0YW5jZSgpLl9nZXRSZWdpc3RyeSgpO1xuXHRcdFx0Ly8gXHRPYmplY3Qua2V5cyhvUmVnaXN0cnkpLmZvckVhY2goZnVuY3Rpb24oc0tleSkge1xuXHRcdFx0Ly8gXHRcdE9iamVjdC5rZXlzKG9SZWdpc3RyeVtzS2V5XS5jb250cm9sbGVyKS5mb3JFYWNoKGZ1bmN0aW9uKHNDb250cm9sbGVyS2V5KSB7XG5cdFx0XHQvLyBcdFx0XHRvUmVnaXN0cnlbc0tleV0uY29udHJvbGxlcltzQ29udHJvbGxlcktleV0uZGVzdHJveSgpO1xuXHRcdFx0Ly8gXHRcdH0pO1xuXHRcdFx0Ly8gXHR9KTtcblx0XHRcdC8vIFx0c2FwLnVpLm1kYy5wMTNuLkVuZ2luZS5nZXRJbnN0YW5jZSgpLmRlc3Ryb3koKTtcblx0XHRcdGRlbGV0ZSAod2luZG93IGFzIGFueSkuX3JvdXRpbmc7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmluZm8oZSBhcyBhbnkpO1xuXHRcdH1cblxuXHRcdC8vV09SS0FST1VORCBmb3Igc3RpY2t5IGRpc2NhcmQgcmVxdWVzdCA6IGR1ZSB0byBhc3luYyBjYWxsYmFjaywgcmVxdWVzdCB0cmlnZ2VyZWQgYnkgdGhlIGV4aXRBcHBsaWNhdGlvbiB3aWxsIGJlIHNlbmQgYWZ0ZXIgdGhlIFVJQ29tcG9uZW50LnByb3RvdHlwZS5kZXN0cm95XG5cdFx0Ly9zbyB3ZSBuZWVkIHRvIGNvcHkgdGhlIFJlcXVlc3RvciBoZWFkZXJzIGFzIGl0IHdpbGwgYmUgZGVzdHJveVxuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCBvTWFpbk1vZGVsID0gKHRoaXMgYXMgYW55KS5vTW9kZWxzW3VuZGVmaW5lZF07XG5cdFx0bGV0IG9IZWFkZXJzO1xuXHRcdGlmIChvTWFpbk1vZGVsLm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9IZWFkZXJzID0galF1ZXJ5LmV4dGVuZCh7fSwgb01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzKTtcblx0XHR9XG5cblx0XHQvLyBBcyB3ZSBuZWVkIHRvIGNsZWFudXAgdGhlIGFwcGxpY2F0aW9uIC8gaGFuZGxlIHRoZSBkaXJ0eSBvYmplY3Qgd2UgbmVlZCB0byBjYWxsIG91ciBjbGVhbnVwIGJlZm9yZSB0aGUgbW9kZWxzIGFyZSBkZXN0cm95ZWRcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCk/LmJlZm9yZUV4aXQoKTtcblx0XHRzdXBlci5kZXN0cm95KC4uLmFyZ3MpO1xuXHRcdGlmIChvSGVhZGVycyAmJiBvTWFpbk1vZGVsLm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyA9IG9IZWFkZXJzO1xuXHRcdH1cblx0fVxuXHRnZXRDb21wb25lbnREYXRhKCk6IGFueSB7XG5cdFx0cmV0dXJuIHN1cGVyLmdldENvbXBvbmVudERhdGEoKTtcblx0fVxuXHRnZXRSb3V0aW5nU2VydmljZSgpOiBSb3V0aW5nU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFJvdXRpbmdTZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cdGdldFNoZWxsU2VydmljZXMoKTogSVNoZWxsU2VydmljZXMge1xuXHRcdHJldHVybiB7fSBhcyBJU2hlbGxTZXJ2aWNlczsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXHRnZXROYXZpZ2F0aW9uU2VydmljZSgpOiBOYXZpZ2F0aW9uU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIE5hdmlnYXRpb25TZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cdGdldFNpZGVFZmZlY3RzU2VydmljZSgpOiBTaWRlRWZmZWN0c1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBTaWRlRWZmZWN0c1NlcnZpY2U7XG5cdH1cblx0Z2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKTogRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0U3RhcnR1cFBhcmFtZXRlcnMoKSB7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSB0aGlzLmdldENvbXBvbmVudERhdGEoKTtcblx0XHRjb25zdCBvU3RhcnRVcFBhcmFtZXRlcnMgPSAob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUob1N0YXJ0VXBQYXJhbWV0ZXJzKTtcblx0fVxuXHRyZXN0b3JlKCkge1xuXHRcdC8vIGNhbGxlZCBieSBGTFAgd2hlbiBhcHAgc2FwLWtlZXAtYWxpdmUgaXMgZW5hYmxlZCBhbmQgYXBwIGlzIHJlc3RvcmVkXG5cdFx0KHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgYW55KS52aWV3U3RhdGUub25SZXN0b3JlKCk7XG5cdH1cblx0c3VzcGVuZCgpIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyBzdXNwZW5kZWRcblx0XHQodGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBhbnkpLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcHBDb21wb25lbnQ7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7RUF3QkEsSUFBTUEsV0FBVyxHQUFHQyxPQUFPLENBQUNELFdBQTVCO0VBRUEsSUFBTUUsT0FBTyxHQUFHO0lBQ2ZDLEdBQUcsRUFBRTtNQUNKQyxRQUFRLEVBQUUseUNBRE47TUFFSkMsV0FBVyxFQUFFO0lBRlQsQ0FEVTtJQUtmQyxZQUFZLEVBQUU7TUFDYkYsUUFBUSxFQUFFLGtEQURHO01BRWJDLFdBQVcsRUFBRTtJQUZBO0VBTEMsQ0FBaEI7RUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztNQXFFTUUsWSxXQXBFTEMsY0FBYyxDQUFDLDBCQUFELEVBQTZCO0lBQzNDQyxVQUFVLEVBQUUsQ0FBQyxtQ0FBRCxDQUQrQjtJQUUzQ0MsTUFBTSxFQUFFO01BQ1BDLFNBQVMsRUFBRTtJQURKLENBRm1DO0lBSzNDQyxRQUFRLEVBQUU7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
434
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJST1VURVJDTEFTUyIsIk5BVkNPTlRBSU5FUiIsIkFwcENvbXBvbmVudCIsImRlZmluZVVJNUNsYXNzIiwiaW50ZXJmYWNlcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0Iiwic2VydmljZXMiLCJyZXNvdXJjZU1vZGVsIiwiZmFjdG9yeU5hbWUiLCJyb3V0aW5nU2VydmljZSIsInN0YXJ0dXAiLCJzaGVsbFNlcnZpY2VzIiwiU2hlbGxVSVNlcnZpY2UiLCJuYXZpZ2F0aW9uU2VydmljZSIsImVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2lkZUVmZmVjdHNTZXJ2aWNlIiwiYXN5bmNDb21wb25lbnRTZXJ2aWNlIiwicm9vdFZpZXciLCJ2aWV3TmFtZSIsInR5cGUiLCJhc3luYyIsImlkIiwicm91dGluZyIsImNvbnRyb2xJZCIsInJvdXRlckNsYXNzIiwidmlld1R5cGUiLCJjb250cm9sQWdncmVnYXRpb24iLCJjb250YWluZXJPcHRpb25zIiwicHJvcGFnYXRlTW9kZWwiLCJkZXNpZ250aW1lIiwic3RhcnR1cE1vZGUiLCJOb3JtYWwiLCJfaXNGY2xFbmFibGVkIiwib01hbmlmZXN0VUk1IiwiZ2V0TWV0YWRhdGEiLCJnZXRNYW5pZmVzdEVudHJ5IiwiZ2V0Um91dGVyUHJveHkiLCJfb1JvdXRlclByb3h5IiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiX29BcHBTdGF0ZUhhbmRsZXIiLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJnZXRSb290Q29udGFpbmVyIiwiZ2V0Q29udGVudCIsImdldFN0YXJ0dXBNb2RlIiwic2V0U3RhcnR1cE1vZGVDcmVhdGUiLCJDcmVhdGUiLCJzZXRTdGFydHVwTW9kZURlZXBsaW5rIiwiRGVlcGxpbmsiLCJpbml0IiwidWlNb2RlbCIsIkpTT05Nb2RlbCIsImVkaXRNb2RlIiwiRWRpdE1vZGUiLCJEaXNwbGF5IiwiaXNFZGl0YWJsZSIsImRyYWZ0U3RhdHVzIiwiRHJhZnRTdGF0dXMiLCJDbGVhciIsImJ1c3kiLCJidXN5TG9jYWwiLCJwYWdlcyIsIm9JbnRlcm5hbE1vZGVsIiwic2V0RGVmYXVsdEJpbmRpbmdNb2RlIiwiTW9kZWxIZWxwZXIiLCJlbmhhbmNlVWlKU09OTW9kZWwiLCJlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwiLCJzZXRNb2RlbCIsImJJbml0aWFsaXplUm91dGluZyIsInVuZGVmaW5lZCIsIlJvdXRlclByb3h5IiwiQXBwU3RhdGVIYW5kbGVyIiwiX29EaWFnbm9zdGljcyIsIkRpYWdub3N0aWNzIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJpc0EiLCJlbnRpdHlDb250YWluZXIiLCJnZXRNZXRhTW9kZWwiLCJyZXF1ZXN0T2JqZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJMb2ciLCJpbmZvIiwiaW5kZXhPZiIsIkVycm9yIiwiU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiYWRkU2VtYW50aWNEYXRlT3BlcmF0b3JzIiwiaW5zdGFuY2VNYXAiLCJnZXRJZCIsIm9uU2VydmljZXNTdGFydGVkIiwiZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uIiwidGhlbiIsImF0dGFjaFJvdXRlTWF0Y2hlcnMiLCJnZXRSb3V0ZXIiLCJpbml0aWFsaXplIiwiY2F0Y2giLCJlcnJvciIsIm9SZXNvdXJjZUJ1bmRsZSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJkaXNwbGF5TWVzc2FnZVBhZ2UiLCJnZXRUZXh0IiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIm1lc3NhZ2UiLCJGQ0xMZXZlbCIsImdldFJvdXRpbmdTZXJ2aWNlIiwiaW5pdGlhbGl6ZVJvdXRpbmciLCJhdHRhY2hBZnRlckluaXQiLCJlcnIiLCJleGl0IiwiZGVzdHJveSIsImRlbGV0ZU1vZGVsQ2FjaGVEYXRhIiwiZ2V0RGlhZ25vc3RpY3MiLCJWYWx1ZUxpc3RIZWxwZXIiLCJpbml0aWFsaXplQ2FjaGVkVmFsdWVIZWxwIiwid2luZG93IiwiX3JvdXRpbmciLCJlIiwib01haW5Nb2RlbCIsIm9Nb2RlbHMiLCJvSGVhZGVycyIsIm9SZXF1ZXN0b3IiLCJqUXVlcnkiLCJleHRlbmQiLCJtSGVhZGVycyIsImJlZm9yZUV4aXQiLCJhcmdzIiwiZ2V0Q29tcG9uZW50RGF0YSIsImdldFNoZWxsU2VydmljZXMiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0U3RhcnR1cFBhcmFtZXRlcnMiLCJvQ29tcG9uZW50RGF0YSIsIm9TdGFydFVwUGFyYW1ldGVycyIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwicmVzdG9yZSIsInZpZXdTdGF0ZSIsIm9uUmVzdG9yZSIsInN1c3BlbmQiLCJvblN1c3BlbmQiLCJVSUNvbXBvbmVudCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IEFwcFN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgUm91dGVyUHJveHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3JvdXRpbmcvUm91dGVyUHJveHlcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9FbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBEaWFnbm9zdGljcyBmcm9tIFwic2FwL2ZlL2NvcmUvc3VwcG9ydC9EaWFnbm9zdGljc1wiO1xuaW1wb3J0IFZhbHVlTGlzdEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IHR5cGUgQmFzZUNvbnRyb2xsZXIgZnJvbSBcIi4vQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGRlbGV0ZU1vZGVsQ2FjaGVEYXRhIH0gZnJvbSBcIi4vY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgZnJvbSBcIi4vaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcblxuY29uc3QgU3RhcnR1cE1vZGUgPSBsaWJyYXJ5LlN0YXJ0dXBNb2RlO1xuXG5jb25zdCBOQVZDT05GID0ge1xuXHRGQ0w6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5GY2xcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAuZi5yb3V0aW5nLlJvdXRlclwiXG5cdH0sXG5cdE5BVkNPTlRBSU5FUjoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5tLnJvdXRpbmcuUm91dGVyXCJcblx0fVxufTtcblxuLyoqXG4gKiBNYWluIGNsYXNzIGZvciBjb21wb25lbnRzIHVzZWQgZm9yIGFuIGFwcGxpY2F0aW9uIGluIFNBUCBGaW9yaSBlbGVtZW50cy5cbiAqXG4gKiBBcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHVzaW5nIHRoZSB0ZW1wbGF0ZXMgYW5kIGJ1aWxkaW5nIGJsb2NrcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgc2hvdWxkIGNyZWF0ZSB0aGVpciBhcHBzIGJ5IGV4dGVuZGluZyB0aGlzIGNvbXBvbmVudC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHNlcnZpY2VzIHRoYXQgeW91IG5lZWQgZm9yIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIHRlbXBsYXRlcyB0byB3b3JrIHByb3Blcmx5IGFyZSBzdGFydGVkLlxuICpcbiAqIFdoZW4geW91IHVzZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQgYXMgdGhlIGJhc2UgY29tcG9uZW50LCB5b3UgYWxzbyBuZWVkIHRvIHVzZSBhIHJvb3RWaWV3LiBTQVAgRmlvcmkgZWxlbWVudHMgcHJvdmlkZXMgdHdvIG9wdGlvbnM6IDxici8+XG4gKiAgLSBzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5OYXZDb250YWluZXIgd2hlbiB1c2luZyBzYXAubS5yb3V0aW5nLlJvdXRlciA8YnIvPlxuICogIC0gc2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuRmNsIHdoZW4gdXNpbmcgc2FwLmYucm91dGluZy5Sb3V0ZXIgKEZDTCB1c2UgY2FzZSkgPGJyLz5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIsIHtcblx0aW50ZXJmYWNlczogW1wic2FwLnVpLmNvcmUuSUFzeW5jQ29udGVudENyZWF0aW9uXCJdLFxuXHRjb25maWc6IHtcblx0XHRmdWxsV2lkdGg6IHRydWVcblx0fSxcblx0bWFuaWZlc3Q6IHtcblx0XHRcInNhcC51aTVcIjoge1xuXHRcdFx0c2VydmljZXM6IHtcblx0XHRcdFx0cmVzb3VyY2VNb2RlbDoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJlc291cmNlTW9kZWxTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0XCJzdGFydHVwXCI6IFwid2FpdEZvclwiLFxuXHRcdFx0XHRcdFwic2V0dGluZ3NcIjoge1xuXHRcdFx0XHRcdFx0XCJidW5kbGVzXCI6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRcIm1vZGVsTmFtZVwiOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJvdXRpbmdTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuUm91dGluZ1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaGVsbFNlcnZpY2VzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2hlbGxTZXJ2aWNlc1wiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFNoZWxsVUlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLnVzaGVsbC51aTVzZXJ2aWNlLlNoZWxsVUlTZXJ2aWNlXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0bmF2aWdhdGlvblNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVudmlyb25tZW50Q2FwYWJpbGl0aWVzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuRW52aXJvbm1lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2lkZUVmZmVjdHNTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2lkZUVmZmVjdHNTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0YXN5bmNDb21wb25lbnRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQXN5bmNDb21wb25lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHJvb3RWaWV3OiB7XG5cdFx0XHRcdHZpZXdOYW1lOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRSxcblx0XHRcdFx0dHlwZTogXCJYTUxcIixcblx0XHRcdFx0YXN5bmM6IHRydWUsXG5cdFx0XHRcdGlkOiBcImFwcFJvb3RWaWV3XCJcblx0XHRcdH0sXG5cdFx0XHRyb3V0aW5nOiB7XG5cdFx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRcdGNvbnRyb2xJZDogXCJhcHBDb250ZW50XCIsXG5cdFx0XHRcdFx0cm91dGVyQ2xhc3M6IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTLFxuXHRcdFx0XHRcdHZpZXdUeXBlOiBcIlhNTFwiLFxuXHRcdFx0XHRcdGNvbnRyb2xBZ2dyZWdhdGlvbjogXCJwYWdlc1wiLFxuXHRcdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRcdGNvbnRhaW5lck9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdHByb3BhZ2F0ZU1vZGVsOiB0cnVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRkZXNpZ250aW1lOiBcInNhcC9mZS9jb3JlL2Rlc2lnbnRpbWUvQXBwQ29tcG9uZW50LmRlc2lnbnRpbWVcIixcblxuXHRsaWJyYXJ5OiBcInNhcC5mZS5jb3JlXCJcbn0pXG5jbGFzcyBBcHBDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudCB7XG5cdHN0YXRpYyBpbnN0YW5jZU1hcDogUmVjb3JkPHN0cmluZywgQXBwQ29tcG9uZW50PiA9IHt9O1xuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblx0cHJpdmF0ZSBfb0FwcFN0YXRlSGFuZGxlciE6IEFwcFN0YXRlSGFuZGxlcjtcblx0cHJpdmF0ZSBiSW5pdGlhbGl6ZVJvdXRpbmc/OiBib29sZWFuO1xuXHRwcml2YXRlIF9vRGlhZ25vc3RpY3MhOiBEaWFnbm9zdGljcztcblx0cHJpdmF0ZSBlbnRpdHlDb250YWluZXI6IGFueTtcblx0cHJpdmF0ZSBzdGFydHVwTW9kZTogc3RyaW5nID0gU3RhcnR1cE1vZGUuTm9ybWFsO1xuXG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQuZ2V0TWV0YWRhdGFcblx0ICogQGZ1bmN0aW9uXG5cdCAqL1xuXG5cdF9pc0ZjbEVuYWJsZWQoKSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCIvc2FwLnVpNVwiLCB0cnVlKTtcblx0XHRyZXR1cm4gTkFWQ09ORi5GQ0wuVklFV05BTUUgPT09IG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldFJvdXRlclByb3h5XG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5BcHBDb21wb25lbnRcblx0ICogQHJldHVybnMgQSBSZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5XG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvdXRlclByb3h5KCk6IFJvdXRlclByb3h5IHtcblx0XHRyZXR1cm4gdGhpcy5fb1JvdXRlclByb3h5O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldEFwcFN0YXRlSGFuZGxlclxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBBcHBTdGF0ZUhhbmRsZXJcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0QXBwU3RhdGVIYW5kbGVyKCkge1xuXHRcdHJldHVybiB0aGlzLl9vQXBwU3RhdGVIYW5kbGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgbmF2L0ZDTCBDb250cm9sbGVyLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50I2dldFJvb3RWaWV3Q29udHJvbGxlclxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byB0aGUgRkNMIENvbnRyb2xsZXJcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um9vdFZpZXdDb250cm9sbGVyKCk6IEJhc2VDb250cm9sbGVyIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0Um9vdENvbnRyb2woKSBhcyBWaWV3KS5nZXRDb250cm9sbGVyKCkgYXMgQmFzZUNvbnRyb2xsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQjZ2V0Um9vdENvbnRhaW5lclxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2xcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um9vdENvbnRhaW5lcigpIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0Um9vdENvbnRyb2woKSBhcyBWaWV3KS5nZXRDb250ZW50KClbMF07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzdGFydHVwIG1vZGUgb2YgdGhlIGFwcC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIHN0YXJ0dXAgbW9kZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0Z2V0U3RhcnR1cE1vZGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zdGFydHVwTW9kZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQ3JlYXRlJy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlQ3JlYXRlKCkge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0RlZXBsaW5rJy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlRGVlcGxpbmsoKSB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkRlZXBsaW5rO1xuXHR9XG5cblx0aW5pdCgpIHtcblx0XHRjb25zdCB1aU1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRlZGl0TW9kZTogbGlicmFyeS5FZGl0TW9kZS5EaXNwbGF5LFxuXHRcdFx0aXNFZGl0YWJsZTogZmFsc2UsXG5cdFx0XHRkcmFmdFN0YXR1czogbGlicmFyeS5EcmFmdFN0YXR1cy5DbGVhcixcblx0XHRcdGJ1c3k6IGZhbHNlLFxuXHRcdFx0YnVzeUxvY2FsOiB7fSxcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHQvLyBzZXQgdGhlIGJpbmRpbmcgT25lV2F5IGZvciB1aU1vZGVsIHRvIHByZXZlbnQgY2hhbmdlcyBpZiBjb250cm9sbGVyIGV4dGVuc2lvbnMgbW9kaWZ5IGEgYm91bmQgcHJvcGVydHkgb2YgYSBjb250cm9sXG5cdFx0dWlNb2RlbC5zZXREZWZhdWx0QmluZGluZ01vZGUoXCJPbmVXYXlcIik7XG5cdFx0Ly8gZm9yIGludGVybmFsIG1vZGVsIGJpbmRpbmcgbmVlZHMgdG8gYmUgdHdvIHdheVxuXHRcdE1vZGVsSGVscGVyLmVuaGFuY2VVaUpTT05Nb2RlbCh1aU1vZGVsLCBsaWJyYXJ5KTtcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwob0ludGVybmFsTW9kZWwpO1xuXG5cdFx0dGhpcy5zZXRNb2RlbCh1aU1vZGVsLCBcInVpXCIpO1xuXHRcdHRoaXMuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cblx0XHR0aGlzLmJJbml0aWFsaXplUm91dGluZyA9IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmJJbml0aWFsaXplUm91dGluZyA6IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5ID0gbmV3IFJvdXRlclByb3h5KCk7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlciA9IG5ldyBBcHBTdGF0ZUhhbmRsZXIodGhpcyk7XG5cdFx0dGhpcy5fb0RpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG5cblx0XHRjb25zdCBvTW9kZWwgPSB0aGlzLmdldE1vZGVsKCkgYXMgT0RhdGFNb2RlbDtcblx0XHRpZiAob01vZGVsICYmIG9Nb2RlbC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNb2RlbFwiKSkge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdE9iamVjdChcIi8kRW50aXR5Q29udGFpbmVyL1wiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbm90IGFuIE9EYXRhIHY0IHNlcnZpY2Vcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCIvc2FwLnVpNVwiLCB0cnVlKTtcblx0XHRpZiAoXG5cdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FICYmXG5cdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZy5jb25maWcucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTXG5cdFx0KSB7XG5cdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke05BVkNPTkYuRkNMLlZJRVdOQU1FfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLkZDTC5ST1VURVJDTEFTU31cImApO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICYmXG5cdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZy5jb25maWcucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTXG5cdFx0KSB7XG5cdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FfVwiIC0gUm91dGVyY2xhc3M6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU31cImApO1xuXHRcdH0gZWxzZSBpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lLmluZGV4T2YoXCJzYXAuZmVcIikgIT09IC0xKSB7XG5cdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0YFxcbldyb25nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb3VwbGUgKHJvb3RWaWV3L3JvdXRlckNsYXNzKSBpbiBtYW5pZmVzdCBmaWxlLlxcbmAgK1xuXHRcdFx0XHRcdGBDdXJyZW50IHZhbHVlcyBhcmUgOigke29NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZX0vJHtvTWFuaWZlc3RVSTUucm91dGluZy5jb25maWcucm91dGVyQ2xhc3N9KVxcbmAgK1xuXHRcdFx0XHRcdGBFeHBlY3RlZCB2YWx1ZXMgYXJlIFxcbmAgK1xuXHRcdFx0XHRcdGBcXHQgLSAoJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRX0vJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU30pXFxuYCArXG5cdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuRkNMLlZJRVdOQU1FfS8ke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfSlgXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke29NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHR9XG5cblx0XHQvLyBBZGRpbmcgU2VtYW50aWMgRGF0ZSBPcGVyYXRvcnNcblx0XHQvLyBDb21tZW50aW5nIHNpbmNlIGl0IGlzIG5vdCBuZWVkZWQgZm9yIFNpbmdsZVJhbmdlXG5cdFx0U2VtYW50aWNEYXRlT3BlcmF0b3JzLmFkZFNlbWFudGljRGF0ZU9wZXJhdG9ycygpO1xuXG5cdFx0Ly8gdGhlIGluaXQgZnVuY3Rpb24gY29uZmlndXJlcyB0aGUgcm91dGluZyBhY2NvcmRpbmcgdG8gdGhlIHNldHRpbmdzIGFib3ZlXG5cdFx0Ly8gaXQgd2lsbCBjYWxsIHRoZSBjcmVhdGVDb250ZW50IGZ1bmN0aW9uIHRvIGluc3RhbnRpYXRlIHRoZSBSb290VmlldyBhbmQgYWRkIGl0IHRvIHRoZSBVSUNvbXBvbmVudCBhZ2dyZWdhdGlvbnNcblxuXHRcdHN1cGVyLmluaXQoKTtcblx0XHRBcHBDb21wb25lbnQuaW5zdGFuY2VNYXBbdGhpcy5nZXRJZCgpXSA9IHRoaXM7XG5cdH1cblx0b25TZXJ2aWNlc1N0YXJ0ZWQoKSB7XG5cdFx0Ly9yb3V0ZXIgbXVzdCBiZSBzdGFydGVkIG9uY2UgdGhlIHJvb3Rjb250YWluZXIgaXMgaW5pdGlhbGl6ZWRcblx0XHQvL3N0YXJ0aW5nIG9mIHRoZSByb3V0ZXJcblx0XHRjb25zdCBmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24gPSAoKSA9PiB7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lclxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkuYXR0YWNoUm91dGVNYXRjaGVycykge1xuXHRcdFx0XHRcdFx0KHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgYW55KS5hdHRhY2hSb3V0ZU1hdGNoZXJzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuZ2V0Um91dGVyKCkuaW5pdGlhbGl6ZSgpO1xuXHRcdFx0XHRcdHRoaXMuZ2V0Um91dGVyUHJveHkoKS5pbml0KHRoaXMsIHRoaXMuX2lzRmNsRW5hYmxlZCgpKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gKENvcmUgYXMgQ29yZUV4KS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblxuXHRcdFx0XHRcdCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkuZGlzcGxheU1lc3NhZ2VQYWdlKFxuXHRcdFx0XHRcdFx0b1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0FQUF9DT01QT05FTlRfU0FQRkVfQVBQU1RBUlRfVEVDSE5JQ0FMX0lTU1VFU1wiKSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfRVJST1JcIiksXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuXHRcdFx0XHRcdFx0XHRGQ0xMZXZlbDogMFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKClcblx0XHRcdFx0LmluaXRpYWxpemVSb3V0aW5nKClcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdCh0aGlzLmdldFJvb3RDb250cm9sKCkgYXMgYW55KS5hdHRhY2hBZnRlckluaXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnI6IGFueSkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihgY2Fubm90IGNhbm5vdCBpbml0aWFsaXplIHJvdXRpbmc6ICR7ZXJyfWApO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0ZXhpdCgpIHtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyLmRlc3Ryb3koKTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkuZGVzdHJveSgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb1JvdXRlclByb3h5O1xuXHRcdGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKHRoaXMuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKS5kZXN0cm95KCk7XG5cdH1cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHR9XG5cdGdldERpYWdub3N0aWNzKCkge1xuXHRcdHJldHVybiB0aGlzLl9vRGlhZ25vc3RpY3M7XG5cdH1cblx0ZGVzdHJveSguLi5hcmdzOiBhbnlbXSkge1xuXHRcdC8vIExFQUtTLCB3aXRoIHdvcmthcm91bmQgZm9yIHNvbWUgRmxleCAvIE1EQyBpc3N1ZVxuXHRcdHRyeSB7XG5cdFx0XHQvLyBcdC8vIFRoaXMgb25lIGlzIG9ubHkgYSBsZWFrIGlmIHlvdSBkb24ndCBnbyBiYWNrIHRvIHRoZSBzYW1lIGNvbXBvbmVudCBpbiB0aGUgbG9uZyBydW5cblx0XHRcdC8vZGVsZXRlIHNhcC51aS5mbC5GbGV4Q29udHJvbGxlckZhY3RvcnkuX2NvbXBvbmVudEluc3RhbnRpYXRpb25Qcm9taXNlc1t0aGlzLmdldElkKCldO1xuXG5cdFx0XHRWYWx1ZUxpc3RIZWxwZXIuaW5pdGlhbGl6ZUNhY2hlZFZhbHVlSGVscCgpO1xuXG5cdFx0XHRkZWxldGUgQXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV07XG5cblx0XHRcdC8vIFx0dmFyIG9SZWdpc3RyeSA9IHNhcC51aS5tZGMucDEzbi5FbmdpbmUuZ2V0SW5zdGFuY2UoKS5fZ2V0UmVnaXN0cnkoKTtcblx0XHRcdC8vIFx0T2JqZWN0LmtleXMob1JlZ2lzdHJ5KS5mb3JFYWNoKGZ1bmN0aW9uKHNLZXkpIHtcblx0XHRcdC8vIFx0XHRPYmplY3Qua2V5cyhvUmVnaXN0cnlbc0tleV0uY29udHJvbGxlcikuZm9yRWFjaChmdW5jdGlvbihzQ29udHJvbGxlcktleSkge1xuXHRcdFx0Ly8gXHRcdFx0b1JlZ2lzdHJ5W3NLZXldLmNvbnRyb2xsZXJbc0NvbnRyb2xsZXJLZXldLmRlc3Ryb3koKTtcblx0XHRcdC8vIFx0XHR9KTtcblx0XHRcdC8vIFx0fSk7XG5cdFx0XHQvLyBcdHNhcC51aS5tZGMucDEzbi5FbmdpbmUuZ2V0SW5zdGFuY2UoKS5kZXN0cm95KCk7XG5cdFx0XHRkZWxldGUgKHdpbmRvdyBhcyBhbnkpLl9yb3V0aW5nO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5pbmZvKGUgYXMgYW55KTtcblx0XHR9XG5cblx0XHQvL1dPUktBUk9VTkQgZm9yIHN0aWNreSBkaXNjYXJkIHJlcXVlc3QgOiBkdWUgdG8gYXN5bmMgY2FsbGJhY2ssIHJlcXVlc3QgdHJpZ2dlcmVkIGJ5IHRoZSBleGl0QXBwbGljYXRpb24gd2lsbCBiZSBzZW5kIGFmdGVyIHRoZSBVSUNvbXBvbmVudC5wcm90b3R5cGUuZGVzdHJveVxuXHRcdC8vc28gd2UgbmVlZCB0byBjb3B5IHRoZSBSZXF1ZXN0b3IgaGVhZGVycyBhcyBpdCB3aWxsIGJlIGRlc3Ryb3lcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3Qgb01haW5Nb2RlbCA9ICh0aGlzIGFzIGFueSkub01vZGVsc1t1bmRlZmluZWRdO1xuXHRcdGxldCBvSGVhZGVycztcblx0XHRpZiAob01haW5Nb2RlbC5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvSGVhZGVycyA9IGpRdWVyeS5leHRlbmQoe30sIG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyk7XG5cdFx0fVxuXG5cdFx0Ly8gQXMgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSBhcHBsaWNhdGlvbiAvIGhhbmRsZSB0aGUgZGlydHkgb2JqZWN0IHdlIG5lZWQgdG8gY2FsbCBvdXIgY2xlYW51cCBiZWZvcmUgdGhlIG1vZGVscyBhcmUgZGVzdHJveWVkXG5cdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpPy5iZWZvcmVFeGl0KCk7XG5cdFx0c3VwZXIuZGVzdHJveSguLi5hcmdzKTtcblx0XHRpZiAob0hlYWRlcnMgJiYgb01haW5Nb2RlbC5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvTWFpbk1vZGVsLm9SZXF1ZXN0b3IubUhlYWRlcnMgPSBvSGVhZGVycztcblx0XHR9XG5cdH1cblx0Z2V0Q29tcG9uZW50RGF0YSgpOiBhbnkge1xuXHRcdHJldHVybiBzdXBlci5nZXRDb21wb25lbnREYXRhKCk7XG5cdH1cblx0Z2V0Um91dGluZ1NlcnZpY2UoKTogUm91dGluZ1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBSb3V0aW5nU2VydmljZTsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXHRnZXRTaGVsbFNlcnZpY2VzKCk6IElTaGVsbFNlcnZpY2VzIHtcblx0XHRyZXR1cm4ge30gYXMgSVNoZWxsU2VydmljZXM7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblx0Z2V0TmF2aWdhdGlvblNlcnZpY2UoKTogTmF2aWdhdGlvblNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBOYXZpZ2F0aW9uU2VydmljZTsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXHRnZXRTaWRlRWZmZWN0c1NlcnZpY2UoKTogU2lkZUVmZmVjdHNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgU2lkZUVmZmVjdHNTZXJ2aWNlO1xuXHR9XG5cdGdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCk6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZTtcblx0fVxuXG5cdGdldFN0YXJ0dXBQYXJhbWV0ZXJzKCkge1xuXHRcdGNvbnN0IG9Db21wb25lbnREYXRhID0gdGhpcy5nZXRDb21wb25lbnREYXRhKCk7XG5cdFx0Y29uc3Qgb1N0YXJ0VXBQYXJhbWV0ZXJzID0gKG9Db21wb25lbnREYXRhICYmIG9Db21wb25lbnREYXRhLnN0YXJ0dXBQYXJhbWV0ZXJzKSB8fCB7fTtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9TdGFydFVwUGFyYW1ldGVycyk7XG5cdH1cblx0cmVzdG9yZSgpIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyByZXN0b3JlZFxuXHRcdCh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpIGFzIGFueSkudmlld1N0YXRlLm9uUmVzdG9yZSgpO1xuXHR9XG5cdHN1c3BlbmQoKSB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgc3VzcGVuZGVkXG5cdFx0KHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgYW55KS52aWV3U3RhdGUub25TdXNwZW5kKCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwQ29tcG9uZW50O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0VBd0JBLElBQU1BLFdBQVcsR0FBR0MsT0FBTyxDQUFDRCxXQUE1QjtFQUVBLElBQU1FLE9BQU8sR0FBRztJQUNmQyxHQUFHLEVBQUU7TUFDSkMsUUFBUSxFQUFFLHlDQUROO01BRUpDLFdBQVcsRUFBRTtJQUZULENBRFU7SUFLZkMsWUFBWSxFQUFFO01BQ2JGLFFBQVEsRUFBRSxrREFERztNQUViQyxXQUFXLEVBQUU7SUFGQTtFQUxDLENBQWhCO0VBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
@@ -246,9 +246,13 @@ class AppComponent extends UIComponent {
246
246
  this._oRouterProxy = new RouterProxy();
247
247
  this._oAppStateHandler = new AppStateHandler(this);
248
248
  this._oDiagnostics = new Diagnostics();
249
+
249
250
  const oModel = this.getModel() as ODataModel;
250
- if (oModel) {
251
+ if (oModel && oModel.isA("sap.ui.model.odata.v4.ODataModel")) {
251
252
  this.entityContainer = oModel.getMetaModel().requestObject("/$EntityContainer/");
253
+ } else {
254
+ // not an OData v4 service
255
+ this.entityContainer = Promise.resolve();
252
256
  }
253
257
 
254
258
  const oManifestUI5 = this.getMetadata().getManifestEntry("/sap.ui5", true);
@@ -167,6 +167,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
167
167
  throw new Error("viewState extension required for controller ".concat(oRootController.getMetadata().getName()));
168
168
  }
169
169
 
170
+ if (!oAppData && sNavType == NavType.iAppState) {
171
+ return {};
172
+ }
173
+
170
174
  return oRootController.viewState.applyViewState(_this4._mCurrentAppState, _this4._createNavigationParameters(oAppData, sNavType));
171
175
  }).catch(function (oError) {
172
176
  Log.error("appState could not be applied", oError);
@@ -209,4 +213,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
209
213
 
210
214
  return AppStateHandler;
211
215
  }, true);
212
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib2R5IiwicmVjb3ZlciIsInJlc3VsdCIsImUiLCJ0aGVuIiwiTmF2VHlwZSIsImxpYnJhcnkiLCJBcHBTdGF0ZUhhbmRsZXIiLCJkZWZpbmVVSTVDbGFzcyIsIm9BcHBDb21wb25lbnQiLCJfbUN1cnJlbnRBcHBTdGF0ZSIsInNJZCIsImdldElkIiwiYk5vUm91dGVDaGFuZ2UiLCJMb2ciLCJpbmZvIiwiY3JlYXRlQXBwU3RhdGUiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkFwcFN0YXRlIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwib05hdmlnYXRpb25TZXJ2aWNlIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJvUm91dGVyUHJveHkiLCJnZXRSb3V0ZXJQcm94eSIsInNIYXNoIiwiZ2V0SGFzaCIsIm9Db250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiYklzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwidmlld1N0YXRlIiwiRXJyb3IiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsIm1Jbm5lckFwcFN0YXRlIiwib1N0b3JlRGF0YSIsImFwcFN0YXRlIiwiZGVlcEVxdWFsIiwic3RvcmVJbm5lckFwcFN0YXRlQXN5bmMiLCJzQXBwU3RhdGVLZXkiLCJzTmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwib0Vycm9yIiwiZXJyb3IiLCJfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvQXBwRGF0YSIsInNOYXZUeXBlIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwib0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHkiLCJuYXZpZ2F0aW9uVHlwZSIsImFwcGx5QXBwU3RhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImxvY2siLCJ0b0VTNlByb21pc2UiLCJwYXJzZU5hdmlnYXRpb24iLCJjYXRjaCIsImFFcnJvckRhdGEiLCJ3YXJuaW5nIiwiYVJlc3VsdHMiLCJpbml0aWFsIiwib1Jvb3RDb250cm9sbGVyIiwiaUFwcFN0YXRlIiwidW5kZWZpbmVkIiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwiX2lzTGlzdEJhc2VkQ29tcG9uZW50Iiwib0NvbXBvbmVudCIsImlzQSIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFwcFN0YXRlSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHRvRVM2UHJvbWlzZSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Ub0VTNlByb21pc2VcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcIi4vaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuXG5jb25zdCBOYXZUeXBlID0gbGlicmFyeS5OYXZUeXBlO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5BcHBTdGF0ZUhhbmRsZXJcIilcbmNsYXNzIEFwcFN0YXRlSGFuZGxlciBleHRlbmRzIEJhc2VPYmplY3Qge1xuXHRwdWJsaWMgc0lkOiBzdHJpbmc7XG5cdHB1YmxpYyBvQXBwQ29tcG9uZW50OiBhbnk7IC8vIEFwcENvbXBvbmVudFxuXHRwdWJsaWMgYk5vUm91dGVDaGFuZ2U6IGJvb2xlYW47XG5cdHByaXZhdGUgX21DdXJyZW50QXBwU3RhdGU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblx0Y29uc3RydWN0b3Iob0FwcENvbXBvbmVudDogYW55KSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLm9BcHBDb21wb25lbnQgPSBvQXBwQ29tcG9uZW50O1xuXHRcdHRoaXMuc0lkID0gYCR7b0FwcENvbXBvbmVudC5nZXRJZCgpfS9BcHBTdGF0ZUhhbmRsZXJgO1xuXG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cdGdldElkKCkge1xuXHRcdHJldHVybiB0aGlzLnNJZDtcblx0fVxuXHQvKipcblx0ICogQ3JlYXRlcy91cGRhdGVzIHRoZSBhcHBzdGF0ZS5cblx0ICpcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgc3RvcmVkIGRhdGFcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRhc3luYyBjcmVhdGVBcHBTdGF0ZSgpOiBQcm9taXNlPHZvaWQgfCBhbnk+IHtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKSxcblx0XHRcdG9Sb3V0ZXJQcm94eSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0c0hhc2ggPSBvUm91dGVyUHJveHkuZ2V0SGFzaCgpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRiSXNTdGlja3lNb2RlID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKHRoaXMub0FwcENvbXBvbmVudC5nZXRNZXRhTW9kZWwoKSk7XG5cblx0XHRpZiAoIW9Db250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGB2aWV3U3RhdGUgY29udHJvbGxlciBleHRlbnNpb24gbm90IGF2YWlsYWJsZSBmb3IgY29udHJvbGxlcjogJHtvQ29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHR9XG5cblx0XHRjb25zdCBtSW5uZXJBcHBTdGF0ZSA9IGF3YWl0IG9Db250cm9sbGVyLnZpZXdTdGF0ZS5yZXRyaWV2ZVZpZXdTdGF0ZSgpO1xuXHRcdGNvbnN0IG9TdG9yZURhdGEgPSB7IGFwcFN0YXRlOiBtSW5uZXJBcHBTdGF0ZSB9O1xuXHRcdGlmIChtSW5uZXJBcHBTdGF0ZSAmJiAhZGVlcEVxdWFsKHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIG1Jbm5lckFwcFN0YXRlKSkge1xuXHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9IG1Jbm5lckFwcFN0YXRlO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc0FwcFN0YXRlS2V5ID0gYXdhaXQgb05hdmlnYXRpb25TZXJ2aWNlLnN0b3JlSW5uZXJBcHBTdGF0ZUFzeW5jKG9TdG9yZURhdGEsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBBcHBzdGF0ZSBzdG9yZWRcIik7XG5cdFx0XHRcdGNvbnN0IHNOZXdIYXNoID0gb05hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNIYXNoLCBzQXBwU3RhdGVLZXkpO1xuXHRcdFx0XHRpZiAoc05ld0hhc2ggIT09IHNIYXNoKSB7XG5cdFx0XHRcdFx0b1JvdXRlclByb3h5Lm5hdlRvSGFzaChzTmV3SGFzaCwgbnVsbCwgbnVsbCwgbnVsbCwgIWJJc1N0aWNreU1vZGUpO1xuXHRcdFx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IG5hdlRvSGFzaFwiKTtcblx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvU3RvcmVEYXRhO1xuXHR9XG5cblx0X2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhOiBhbnksIHNOYXZUeXBlOiBhbnkpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgYW4gYXBwc3RhdGUgYnkgZmV0Y2hpbmcgYXBwZGF0YSBhbmQgcGFzc2luZyBpdCB0byBfYXBwbHlBcHBzdGF0ZVRvUGFnZS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBzdGF0aWNcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkFwcFN0YXRlSGFuZGxlclxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jIGhhbmRsaW5nXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0YXBwbHlBcHBTdGF0ZSgpIHtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMpO1xuXHRcdC8vIERvbmUgZm9yIGJ1c3kgaW5kaWNhdG9yXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblxuXHRcdGNvbnN0IG9OYXZpZ2F0aW9uU2VydmljZSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpO1xuXHRcdC8vIFRPRE8gb05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpIHNob3VsZCByZXR1cm4gRVM2IHByb21pc2UgaW5zdGVhZCBqUXVlcnkucHJvbWlzZVxuXHRcdHJldHVybiB0b0VTNlByb21pc2Uob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiBhbnkpIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0pO1xuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC8qIGFwcCBkYXRhICovXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzFdLFxuXHRcdFx0XHRcdGFFcnJvckRhdGFbMl1cblx0XHRcdFx0XTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoYVJlc3VsdHM6IGFueSkgPT4ge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBQYXJzZSBOYXZpZ2F0aW9uIGRvbmVcIik7XG5cblx0XHRcdFx0Ly8gYVJlc3VsdHNbMV0gPT4gb1N0YXJ0dXBQYXJhbWV0ZXJzIChub3QgZXZhbHVhdGVkKVxuXHRcdFx0XHRjb25zdCBvQXBwRGF0YSA9IGFSZXN1bHRzWzBdIHx8IHt9LFxuXHRcdFx0XHRcdHNOYXZUeXBlID0gYVJlc3VsdHNbMl0gfHwgTmF2VHlwZS5pbml0aWFsLFxuXHRcdFx0XHRcdG9Sb290Q29udHJvbGxlciA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblxuXHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0gc05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlID8gb0FwcERhdGEgJiYgb0FwcERhdGEuYXBwU3RhdGUgOiB1bmRlZmluZWQ7XG5cblx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGB2aWV3U3RhdGUgZXh0ZW5zaW9uIHJlcXVpcmVkIGZvciBjb250cm9sbGVyICR7b1Jvb3RDb250cm9sbGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuYXBwbHlWaWV3U3RhdGUoXG5cdFx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSxcblx0XHRcdFx0XHR0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJhcHBTdGF0ZSBjb3VsZCBub3QgYmUgYXBwbGllZFwiLCBvRXJyb3IpO1xuXHRcdFx0XHR0aHJvdyBvRXJyb3I7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzKTtcblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdFx0fSk7XG5cdH1cblx0LyoqXG5cdCAqIFRvIGNoZWNrIGlzIHJvdXRlIGlzIGNoYW5nZWQgYnkgY2hhbmdlIGluIHRoZSBpQVBQU3RhdGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcm91dGUgaGFzIGNobmFnZWRcblx0ICovXG5cdGNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYk5vUm91dGVDaGFuZ2U7XG5cdH1cblx0LyoqXG5cdCAqIFJlc2V0IHRoZSByb3V0ZSBjaGFuZ2VkIGJ5IGlBUFBTdGF0ZS5cblx0ICovXG5cdHJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwKCkge1xuXHRcdGlmICh0aGlzLmJOb1JvdXRlQ2hhbmdlKSB7XG5cdFx0XHR0aGlzLmJOb1JvdXRlQ2hhbmdlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdF9pc0xpc3RCYXNlZENvbXBvbmVudChvQ29tcG9uZW50OiBhbnkpIHtcblx0XHRyZXR1cm4gb0NvbXBvbmVudC5pc0EoXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RDb21wb25lbnRcIik7XG5cdH1cbn1cblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IEFwcFN0YXRlSGFuZGxlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7RUFrakJPLGdCQUFnQkEsSUFBaEIsRUFBc0JD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
216
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib2R5IiwicmVjb3ZlciIsInJlc3VsdCIsImUiLCJ0aGVuIiwiTmF2VHlwZSIsImxpYnJhcnkiLCJBcHBTdGF0ZUhhbmRsZXIiLCJkZWZpbmVVSTVDbGFzcyIsIm9BcHBDb21wb25lbnQiLCJfbUN1cnJlbnRBcHBTdGF0ZSIsInNJZCIsImdldElkIiwiYk5vUm91dGVDaGFuZ2UiLCJMb2ciLCJpbmZvIiwiY3JlYXRlQXBwU3RhdGUiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkFwcFN0YXRlIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwib05hdmlnYXRpb25TZXJ2aWNlIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJvUm91dGVyUHJveHkiLCJnZXRSb3V0ZXJQcm94eSIsInNIYXNoIiwiZ2V0SGFzaCIsIm9Db250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiYklzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwidmlld1N0YXRlIiwiRXJyb3IiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsIm1Jbm5lckFwcFN0YXRlIiwib1N0b3JlRGF0YSIsImFwcFN0YXRlIiwiZGVlcEVxdWFsIiwic3RvcmVJbm5lckFwcFN0YXRlQXN5bmMiLCJzQXBwU3RhdGVLZXkiLCJzTmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwib0Vycm9yIiwiZXJyb3IiLCJfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvQXBwRGF0YSIsInNOYXZUeXBlIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwib0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHkiLCJuYXZpZ2F0aW9uVHlwZSIsImFwcGx5QXBwU3RhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImxvY2siLCJ0b0VTNlByb21pc2UiLCJwYXJzZU5hdmlnYXRpb24iLCJjYXRjaCIsImFFcnJvckRhdGEiLCJ3YXJuaW5nIiwiYVJlc3VsdHMiLCJpbml0aWFsIiwib1Jvb3RDb250cm9sbGVyIiwiaUFwcFN0YXRlIiwidW5kZWZpbmVkIiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwiX2lzTGlzdEJhc2VkQ29tcG9uZW50Iiwib0NvbXBvbmVudCIsImlzQSIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFwcFN0YXRlSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHRvRVM2UHJvbWlzZSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Ub0VTNlByb21pc2VcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcIi4vaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuXG5jb25zdCBOYXZUeXBlID0gbGlicmFyeS5OYXZUeXBlO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5BcHBTdGF0ZUhhbmRsZXJcIilcbmNsYXNzIEFwcFN0YXRlSGFuZGxlciBleHRlbmRzIEJhc2VPYmplY3Qge1xuXHRwdWJsaWMgc0lkOiBzdHJpbmc7XG5cdHB1YmxpYyBvQXBwQ29tcG9uZW50OiBhbnk7IC8vIEFwcENvbXBvbmVudFxuXHRwdWJsaWMgYk5vUm91dGVDaGFuZ2U6IGJvb2xlYW47XG5cdHByaXZhdGUgX21DdXJyZW50QXBwU3RhdGU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblx0Y29uc3RydWN0b3Iob0FwcENvbXBvbmVudDogYW55KSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLm9BcHBDb21wb25lbnQgPSBvQXBwQ29tcG9uZW50O1xuXHRcdHRoaXMuc0lkID0gYCR7b0FwcENvbXBvbmVudC5nZXRJZCgpfS9BcHBTdGF0ZUhhbmRsZXJgO1xuXG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cdGdldElkKCkge1xuXHRcdHJldHVybiB0aGlzLnNJZDtcblx0fVxuXHQvKipcblx0ICogQ3JlYXRlcy91cGRhdGVzIHRoZSBhcHBzdGF0ZS5cblx0ICpcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgc3RvcmVkIGRhdGFcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRhc3luYyBjcmVhdGVBcHBTdGF0ZSgpOiBQcm9taXNlPHZvaWQgfCBhbnk+IHtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKSxcblx0XHRcdG9Sb3V0ZXJQcm94eSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0c0hhc2ggPSBvUm91dGVyUHJveHkuZ2V0SGFzaCgpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRiSXNTdGlja3lNb2RlID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKHRoaXMub0FwcENvbXBvbmVudC5nZXRNZXRhTW9kZWwoKSk7XG5cblx0XHRpZiAoIW9Db250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGB2aWV3U3RhdGUgY29udHJvbGxlciBleHRlbnNpb24gbm90IGF2YWlsYWJsZSBmb3IgY29udHJvbGxlcjogJHtvQ29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHR9XG5cblx0XHRjb25zdCBtSW5uZXJBcHBTdGF0ZSA9IGF3YWl0IG9Db250cm9sbGVyLnZpZXdTdGF0ZS5yZXRyaWV2ZVZpZXdTdGF0ZSgpO1xuXHRcdGNvbnN0IG9TdG9yZURhdGEgPSB7IGFwcFN0YXRlOiBtSW5uZXJBcHBTdGF0ZSB9O1xuXHRcdGlmIChtSW5uZXJBcHBTdGF0ZSAmJiAhZGVlcEVxdWFsKHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIG1Jbm5lckFwcFN0YXRlKSkge1xuXHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9IG1Jbm5lckFwcFN0YXRlO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc0FwcFN0YXRlS2V5ID0gYXdhaXQgb05hdmlnYXRpb25TZXJ2aWNlLnN0b3JlSW5uZXJBcHBTdGF0ZUFzeW5jKG9TdG9yZURhdGEsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBBcHBzdGF0ZSBzdG9yZWRcIik7XG5cdFx0XHRcdGNvbnN0IHNOZXdIYXNoID0gb05hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHNIYXNoLCBzQXBwU3RhdGVLZXkpO1xuXHRcdFx0XHRpZiAoc05ld0hhc2ggIT09IHNIYXNoKSB7XG5cdFx0XHRcdFx0b1JvdXRlclByb3h5Lm5hdlRvSGFzaChzTmV3SGFzaCwgbnVsbCwgbnVsbCwgbnVsbCwgIWJJc1N0aWNreU1vZGUpO1xuXHRcdFx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IG5hdlRvSGFzaFwiKTtcblx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvU3RvcmVEYXRhO1xuXHR9XG5cblx0X2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhOiBhbnksIHNOYXZUeXBlOiBhbnkpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgYW4gYXBwc3RhdGUgYnkgZmV0Y2hpbmcgYXBwZGF0YSBhbmQgcGFzc2luZyBpdCB0byBfYXBwbHlBcHBzdGF0ZVRvUGFnZS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBzdGF0aWNcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkFwcFN0YXRlSGFuZGxlclxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jIGhhbmRsaW5nXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0YXBwbHlBcHBTdGF0ZSgpIHtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcykpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMpO1xuXHRcdC8vIERvbmUgZm9yIGJ1c3kgaW5kaWNhdG9yXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblxuXHRcdGNvbnN0IG9OYXZpZ2F0aW9uU2VydmljZSA9IHRoaXMub0FwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpO1xuXHRcdC8vIFRPRE8gb05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpIHNob3VsZCByZXR1cm4gRVM2IHByb21pc2UgaW5zdGVhZCBqUXVlcnkucHJvbWlzZVxuXHRcdHJldHVybiB0b0VTNlByb21pc2Uob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiBhbnkpIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0pO1xuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC8qIGFwcCBkYXRhICovXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzFdLFxuXHRcdFx0XHRcdGFFcnJvckRhdGFbMl1cblx0XHRcdFx0XTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoYVJlc3VsdHM6IGFueSkgPT4ge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBQYXJzZSBOYXZpZ2F0aW9uIGRvbmVcIik7XG5cblx0XHRcdFx0Ly8gYVJlc3VsdHNbMV0gPT4gb1N0YXJ0dXBQYXJhbWV0ZXJzIChub3QgZXZhbHVhdGVkKVxuXHRcdFx0XHRjb25zdCBvQXBwRGF0YSA9IGFSZXN1bHRzWzBdIHx8IHt9LFxuXHRcdFx0XHRcdHNOYXZUeXBlID0gYVJlc3VsdHNbMl0gfHwgTmF2VHlwZS5pbml0aWFsLFxuXHRcdFx0XHRcdG9Sb290Q29udHJvbGxlciA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblxuXHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0gc05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlID8gb0FwcERhdGEgJiYgb0FwcERhdGEuYXBwU3RhdGUgOiB1bmRlZmluZWQ7XG5cblx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGB2aWV3U3RhdGUgZXh0ZW5zaW9uIHJlcXVpcmVkIGZvciBjb250cm9sbGVyICR7b1Jvb3RDb250cm9sbGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghb0FwcERhdGEgJiYgc05hdlR5cGUgPT0gTmF2VHlwZS5pQXBwU3RhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuYXBwbHlWaWV3U3RhdGUoXG5cdFx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSxcblx0XHRcdFx0XHR0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJhcHBTdGF0ZSBjb3VsZCBub3QgYmUgYXBwbGllZFwiLCBvRXJyb3IpO1xuXHRcdFx0XHR0aHJvdyBvRXJyb3I7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzKTtcblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdFx0fSk7XG5cdH1cblx0LyoqXG5cdCAqIFRvIGNoZWNrIGlzIHJvdXRlIGlzIGNoYW5nZWQgYnkgY2hhbmdlIGluIHRoZSBpQVBQU3RhdGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcm91dGUgaGFzIGNobmFnZWRcblx0ICovXG5cdGNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYk5vUm91dGVDaGFuZ2U7XG5cdH1cblx0LyoqXG5cdCAqIFJlc2V0IHRoZSByb3V0ZSBjaGFuZ2VkIGJ5IGlBUFBTdGF0ZS5cblx0ICovXG5cdHJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwKCkge1xuXHRcdGlmICh0aGlzLmJOb1JvdXRlQ2hhbmdlKSB7XG5cdFx0XHR0aGlzLmJOb1JvdXRlQ2hhbmdlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdF9pc0xpc3RCYXNlZENvbXBvbmVudChvQ29tcG9uZW50OiBhbnkpIHtcblx0XHRyZXR1cm4gb0NvbXBvbmVudC5pc0EoXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RDb21wb25lbnRcIik7XG5cdH1cbn1cblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBk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
@@ -124,7 +124,9 @@ class AppStateHandler extends BaseObject {
124
124
  if (!oRootController.viewState) {
125
125
  throw new Error(`viewState extension required for controller ${oRootController.getMetadata().getName()}`);
126
126
  }
127
-
127
+ if (!oAppData && sNavType == NavType.iAppState) {
128
+ return {};
129
+ }
128
130
  return oRootController.viewState.applyViewState(
129
131
  this._mCurrentAppState,
130
132
  this._createNavigationParameters(oAppData, sNavType)