@sapui5/sap.fe.macros 1.139.0 → 1.139.4

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 (67) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Chart.js +1 -1
  4. package/src/sap/fe/macros/Chart.tsx +1 -1
  5. package/src/sap/fe/macros/RichTextEditor.js +1 -2
  6. package/src/sap/fe/macros/RichTextEditor.tsx +0 -1
  7. package/src/sap/fe/macros/ValueHelp.js +4 -28
  8. package/src/sap/fe/macros/ValueHelp.tsx +2 -42
  9. package/src/sap/fe/macros/chart/MdcChartTemplate.js +2 -4
  10. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +1 -4
  11. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  12. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  13. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  14. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  15. package/src/sap/fe/macros/controls/Section.js +3 -2
  16. package/src/sap/fe/macros/controls/Section.ts +2 -1
  17. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  18. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  19. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +8 -8
  20. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +7 -7
  21. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +2 -2
  22. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +1 -1
  23. package/src/sap/fe/macros/field/FieldBaseDelegate.js +13 -7
  24. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +12 -8
  25. package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
  26. package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
  27. package/src/sap/fe/macros/filter/FilterUtils.js +7 -1
  28. package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
  29. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +5 -3
  30. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +13 -3
  31. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  32. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  33. package/src/sap/fe/macros/form/Form.block.js +6 -2
  34. package/src/sap/fe/macros/form/Form.block.ts +4 -1
  35. package/src/sap/fe/macros/form/FormDelegate.js +20 -1
  36. package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
  37. package/src/sap/fe/macros/internal/field/DisplayStyle.js +4 -2
  38. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +3 -1
  39. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  40. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  41. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  42. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
  43. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +5 -1
  44. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +4 -0
  45. package/src/sap/fe/macros/library.js +1 -1
  46. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  47. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  48. package/src/sap/fe/macros/table/MdcTableTemplate.js +3 -1
  49. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +2 -1
  50. package/src/sap/fe/macros/table/Table.js +7 -1
  51. package/src/sap/fe/macros/table/Table.tsx +7 -1
  52. package/src/sap/fe/macros/table/TableAPI.js +8 -1
  53. package/src/sap/fe/macros/table/TableAPI.ts +15 -2
  54. package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
  55. package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
  56. package/src/sap/fe/macros/table/TreeTable.js +7 -1
  57. package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
  58. package/src/sap/fe/macros/table/delegates/TableDelegate.js +3 -2
  59. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +10 -3
  60. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  61. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  62. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
  63. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
  64. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +27 -3
  65. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +28 -2
  66. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  67. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
@@ -1088,6 +1088,10 @@ const ValueListHelper = {
1088
1088
  }
1089
1089
  if (!path.key) {
1090
1090
  path.key = firstKey;
1091
+ const propertyPath = `/${annotationValueListType.CollectionPath}/${firstKey}`;
1092
+ const propertyAnnotations = (metaModelVH.getObject(`${propertyPath}@`) || {}) as AnnotationsForProperty;
1093
+ // We update path.descriptionPath for the key property
1094
+ path.descriptionPath = propertyAnnotations[AnnotationText]?.$Path || "";
1091
1095
  }
1092
1096
 
1093
1097
  /* Ensure that vhKeys are part of the columnDefs, otherwise it is not considered in $select (BCP 2270141154) */
@@ -24,7 +24,7 @@ sap.ui.define(["sap/base/Log", "sap/f/library", "sap/fe/controls/library", "sap/
24
24
  controls: [],
25
25
  elements: [],
26
26
  // eslint-disable-next-line no-template-curly-in-string
27
- version: "1.139.0",
27
+ version: "1.139.4",
28
28
  noLibraryCSS: true,
29
29
  extensions: {
30
30
  flChangeHandlers: {
@@ -99,7 +99,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
99
99
  * @returns Supported filter fields.
100
100
  */
101
101
  async _getSupportedFilterFields(control) {
102
- if (control.isA("sap.ui.mdc.Filterbar")) {
102
+ if (control.isA("sap.ui.mdc.Table")) {
103
+ return control.getParent().getEnhancedFetchedPropertyInfos();
104
+ } else if (control.isA("sap.ui.mdc.Filterbar")) {
103
105
  await control.waitForInitialization();
104
106
  return control.getControlDelegate().fetchFilterProperties(control);
105
107
  } else if (control.isA("sap.fe.macros.controls.FilterBar")) {
@@ -110,7 +112,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
110
112
  return control.getControlDelegate().fetchProperties(control);
111
113
  },
112
114
  /**
113
- * Clears all input values of visible filter fields in the table, chart, or filter bar..
115
+ * Clears all input values of visible filter fields in the table, chart, or filter bar.
114
116
  * @param controlInstance This can be a filter bar, chart, or table.
115
117
  */
116
118
  async clearFilterValues(controlInstance) {
@@ -183,9 +185,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
183
185
  propertyInfos.forEach(propertyInfo => {
184
186
  if (control.isA("sap.ui.mdc.Table")) {
185
187
  propertyInfo["conditionPath"] = propertyInfo.name;
186
- propertyInfo["annotationPath"] = propertyInfo.metadataPath ? propertyInfo.metadataPath : "";
187
188
  propertyInfo["hasValueHelp"] = PropertyHelper.hasValueHelp(control.getPropertyHelper().getProperty(propertyInfo.name));
188
- propertyInfo["dataType"] = propertyInfo?.typeConfig?.className;
189
189
  } else if (control.isA("sap.ui.mdc.Chart")) {
190
190
  if (propertyInfo.path) {
191
191
  propertyInfo["name"] = propertyInfo.path;
@@ -203,11 +203,13 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
203
203
  * @param controlInstance This could be a table, chart, or filter bar
204
204
  * @param selectionVariant The selection variant to apply to the respective mdc controls
205
205
  * @param prefillDescriptions Optional. If true, we will use the associated text property values (if they're available in the selectionVariant) to display the filter value descriptions, instead of loading them from the backend
206
+ * @param fromNavigationParameters Optional. If true, the selection variant is assumed to come from navigation parameters. In this case, if the selection variant contains select options for properties that are not present in the filter bar, these select options will be ignored and will not lead to clearing the filter bar.
206
207
  * @returns A promise for asynchronous handling
207
208
  * @public
208
209
  */
209
210
  async setSelectionVariantToMdcControl(controlInstance, selectionVariant) {
210
211
  let prefillDescriptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
212
+ let fromNavigationParameters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
211
213
  try {
212
214
  const state = await StateUtil.retrieveExternalState(controlInstance);
213
215
  if (!state.filter) {
@@ -215,6 +217,14 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
215
217
  return;
216
218
  }
217
219
  const conditions = await this.convertSelectionVariantToStateFilters(controlInstance, selectionVariant, prefillDescriptions, controlInstance?.getModel());
220
+ if (fromNavigationParameters && selectionVariant.getSelectOptionsPropertyNames().length > 0 && Object.keys(conditions).length === 0) {
221
+ // If the selection variant has select options but no conditions could be mapped to the filter bar, we return an empty array
222
+ // This is to avoid clearing the filter bar in this case
223
+ // This can happen if the selection variant has only parameters or select options for properties not present in the filter bar
224
+ // In this case, we assume that the selection variant is not meant to clear the filter bar
225
+ // and we do not apply it
226
+ return undefined;
227
+ }
218
228
 
219
229
  // Clear filter of table before applying selection variant
220
230
  await this.clearFilterValues(controlInstance?.getParent());
@@ -257,4 +267,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepClone", "sap/fe/core/templatin
257
267
  };
258
268
  return StateHelper;
259
269
  }, false);
260
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0ZUhlbHBlciIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJjb250cm9sIiwiY29udHJvbFN0YXRlIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiY29udHJvbE9iamVjdCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCJnZXRQYXJlbnQiLCJpc0EiLCJnZXRQYXJhbWV0ZXJzIiwidW5kZWZpbmVkIiwic2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImdldFByb3BlcnR5SGVscGVyIiwiZXh0ZXJuYWxTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3RPcHRpb25zIiwiX2dldFNlbGVjdE9wdGlvbnMiLCJwcm9wZXJ0eSIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzcGxpdCIsImVycm9yIiwiaWQiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsIkxvZyIsImNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwibW9kZWwiLCJwcm9wZXJ0eUluZm9zIiwiX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsImxlbmd0aCIsImZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIiwiX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbiIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvcHlvZlByb3BlcnR5SW5mb3MiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ1cGRhdGVkUHJvcGVydHlJbmZvcyIsIl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTViIsImNvbmRpdGlvbnMiLCJzdlRvU3RhdGVGaWx0ZXJzIiwiZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWIiwiZ2V0TW9kZWwiLCJjb250ZXh0UGF0aCIsImRhdGEiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInZpZXdEYXRhSW5zdGFuY2UiLCJ2aWV3RGF0YSIsImdldERhdGEiLCJjb25maWciLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJmaWx0ZXJGaWVsZHMiLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJnZXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaEZpbHRlclByb3BlcnRpZXMiLCJhd2FpdENvbnRyb2xEZWxlZ2F0ZSIsImZldGNoUHJvcGVydGllcyIsImNsZWFyRmlsdGVyVmFsdWVzIiwiY29udHJvbEluc3RhbmNlIiwiX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMiLCJjb250ZW50IiwiZmlyZUV2ZW50Iiwib3B0aW9ucyIsInN0YXRlIiwiZWRpdFN0YXRlUGF0aCIsImN1cnJlbnRFZGl0U3RhdGVDb25kaXRpb24iLCJlZGl0U3RhdGVEZWZhdWx0VmFsdWUiLCJjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0Iiwic2hvdWxkQ2xlYXJFZGl0RmlsdGVyIiwiRHJhZnRFZGl0U3RhdGUiLCJBTEwiLCJkZWVwQ2xvbmUiLCJ2YWx1ZXMiLCJPYmplY3QiLCJrZXlzIiwiY2xlYXJFZGl0RmlsdGVyIiwiY29uZGl0aW9uUGF0aCIsImNvbmRpdGlvbiIsImZpbHRlcmVkIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiY2xlYW5VcEFsbEZpbHRlckZpZWxkc0luRXJyb3JTdGF0ZSIsImZvckVhY2giLCJwcm9wZXJ0eUluZm8iLCJuYW1lIiwibWV0YWRhdGFQYXRoIiwiUHJvcGVydHlIZWxwZXIiLCJoYXNWYWx1ZUhlbHAiLCJnZXRQcm9wZXJ0eSIsInR5cGVDb25maWciLCJjbGFzc05hbWUiLCJwYXRoIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJ0YXJnZXRPYmplY3QiLCJkYXRhVHlwZSIsInNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2wiLCJhcmd1bWVudHMiLCJzdGF0ZVRvQXBwbHkiLCJnZXRTdGF0ZVRvQXBwbHkiLCJjb252ZXJ0Q29uZGl0aW9uc0ZvckNoYXJ0IiwiZGlmZlN0YXRlIiwiYXBwbHlTdGF0ZVJlc3VsdCIsImVyciIsImFzc2lnbiIsIml0ZW1zIiwicHJvcGVydHlPYmoiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN0YXRlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IERyYWZ0RWRpdFN0YXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9EcmFmdEVkaXRTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvUHJvcGVydHlJbmZvXCI7XG5pbXBvcnQgdHlwZSB7IENvbnZlcnNpb25JbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvbWRjL2FkYXB0ZXIvU2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzXCI7XG5pbXBvcnQgc3ZUb1N0YXRlRmlsdGVycyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tZGMvYWRhcHRlci9TZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnNcIjtcbmltcG9ydCBTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9tYWNyb3MvbWRjL2FkYXB0ZXIvU3RhdGVGaWx0ZXJUb1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxTdGF0ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy92YWx1ZWhlbHAvVmFsdWVIZWxwRGVsZWdhdGVcIjtcbmltcG9ydCBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBDb3JlQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIHsgU3RhdGVUb0FwcGx5LCBGaWx0ZXIgYXMgU3RhdGVVdGlsRmlsdGVyIH0gZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDaGFydFR5cGUgZnJvbSBcIi4uLy4uL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBNYWNyb0FQSSBmcm9tIFwiLi4vLi4vTWFjcm9BUElcIjtcblxuLyoqXG4gKiBUaGlzIGlzIHRvIGV4dGVuZCBNREMgY29udHJvbCBBUElzIGZvciBmaWx0ZXIsIHRhYmxlLCBjaGFydCBidWlsZGluZyBibG9ja3MuXG4gKiBAcHVibGljXG4gKi9cblxuY29uc3QgU3RhdGVIZWxwZXIgPSB7XG5cdC8qKlxuXHQgKiBHZXRzIHNlbGVjdGlvbiB2YXJpYW50IGZyb20gdGhlIG1kYyBjb250cm9sLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGUgY29udHJvbCBmb3Igd2hpY2ggU2VsZWN0aW9uIFZhcmlhbnQgaXMgdG8gYmUgZmV0Y2hlZFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2l0aCBhIHtAbGluayBzYXAuZmUubmF2aWdhdGlvbi5TZWxlY3Rpb25WYXJpYW50fVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyBnZXRTZWxlY3Rpb25WYXJpYW50KGNvbnRyb2w6IENvcmVDb250cm9sIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxTZWxlY3Rpb25WYXJpYW50PiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGNvbnRyb2xTdGF0ZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbCBhcyBDb250cm9sKTtcblx0XHRcdGNvbnN0IGNvbnRyb2xPYmplY3QgPSBjb250cm9sU3RhdGUuZmlsdGVyIGFzIFN0YXRlVXRpbEZpbHRlcjtcblx0XHRcdGxldCBwYXJhbWV0ZXJzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCA9IFtdO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRjb250cm9sPy5nZXRQYXJlbnQoKT8uaXNBKFwic2FwLmZlLm1hY3Jvcy5maWx0ZXJCYXIuRmlsdGVyQmFyQVBJXCIpICYmXG5cdFx0XHRcdChjb250cm9sLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSSkuZ2V0UGFyYW1ldGVycyAhPT0gdW5kZWZpbmVkXG5cdFx0XHQpIHtcblx0XHRcdFx0cGFyYW1ldGVycyA9IChjb250cm9sLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSSkuZ2V0UGFyYW1ldGVycygpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc2VsZWN0aW9uVmFyaWFudCA9IFN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3Rpb25WYXJpYW50RnJvbUNvbmRpdGlvbnMoXG5cdFx0XHRcdGNvbnRyb2xPYmplY3QsXG5cdFx0XHRcdChjb250cm9sIGFzIENvbnRyb2wpLmdldFByb3BlcnR5SGVscGVyKCksXG5cdFx0XHRcdHBhcmFtZXRlcnNcblx0XHRcdCk7XG5cdFx0XHRpZiAoY29udHJvbD8uaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSkge1xuXHRcdFx0XHRjb25zdCBleHRlcm5hbFNWID0gbmV3IFNlbGVjdGlvblZhcmlhbnQoKTtcblx0XHRcdFx0Y29uc3Qgc2VsZWN0T3B0aW9ucyA9IHNlbGVjdGlvblZhcmlhbnQuX2dldFNlbGVjdE9wdGlvbnMoKTtcblx0XHRcdFx0Zm9yIChjb25zdCBwcm9wZXJ0eSBpbiBzZWxlY3RPcHRpb25zKSB7XG5cdFx0XHRcdFx0ZXh0ZXJuYWxTVi5tYXNzQWRkU2VsZWN0T3B0aW9uKHByb3BlcnR5LnNwbGl0KFwiX2ZlX2dyb3VwYWJsZV9cIilbMV0sIHNlbGVjdE9wdGlvbnNbcHJvcGVydHldKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZXh0ZXJuYWxTVjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBzZWxlY3Rpb25WYXJpYW50O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY29udHJvbD8uZ2V0SWQoKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG5cdFx0XHRMb2cuZXJyb3IoYEJ1aWxkaW5nIEJsb2NrICgke2lkfSkgLSBnZXQgc2VsZWN0aW9uIHZhcmlhbnQgZmFpbGVkIDogJHttZXNzYWdlfWApO1xuXHRcdFx0dGhyb3cgRXJyb3IobWVzc2FnZSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0IHNlbGVjdGlvbiB2YXJpYW50IHRvIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgY2FuIGJlIGEgdGFibGUsIGNoYXJ0IG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IHRvIGFwcGx5IHRvIHRoZSB0YWJsZSBvciBjaGFydCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBJZiB0cnVlLCB3ZSB0cnkgdG8gZmluZCB0aGUgYXNzb2NpYXRlZCBUZXh0IHZhbHVlIGZvciBlYWNoIHByb3BlcnR5IGluIHRoZSBzZWxlY3Rpb25WYXJpYW50ICh0byBhdm9pZCBmZXRjaGluZyBpdCBmcm9tIHRoZSBzZXJ2ZXIpXG5cdCAqIEBwYXJhbSBtb2RlbCBUaGUgY29udHJvbCBtb2RlbFxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2aW5nIHRvIGNvbmRpdGlvbnNcblx0ICovXG5cdGFzeW5jIGNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0Y29udHJvbDogQ29udHJvbCxcblx0XHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdHByZWZpbGxEZXNjcmlwdGlvbnM6IGJvb2xlYW4sXG5cdFx0bW9kZWw/OiBNb2RlbFxuXHQpOiBQcm9taXNlPFN0YXRlVXRpbEZpbHRlcj4ge1xuXHRcdC8vIE5vdGU6IFRoaXMgbWV0aG9kIGlzIHByaXZhdGUgYW5kIHJlc3RyaWN0ZWQgdG8gdXNhZ2UgYnkgc2FwLmZlKFZpZXdTdGF0ZSBjb250cm9sbGVyIGV4dGVuc2lvbikgZm9yIGZpbHRlciBiYXIvIGNoYXJ0IC8gdGFibGUgc3RhdGUgc2NlbmFyaW9zLlxuXHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSBhd2FpdCB0aGlzLl9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbCk7XG5cblx0XHRpZiAoIXByb3BlcnR5SW5mb3MubGVuZ3RoKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyB2YWxpZCBtZXRhZGF0YSBwcm9wZXJ0aWVzIHByZXNlbnQgZm9yIGZpbHRlciBiYXJcIik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb24gPSB0aGlzLl9nZXRDb250cm9sSW5mb0ZvckNvbnZlcnNpb24oY29udHJvbCk7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gbW9kZWw/LmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGNvbnN0IGNvcHlvZlByb3BlcnR5SW5mb3MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByb3BlcnR5SW5mb3MpKTtcblx0XHRjb25zdCB1cGRhdGVkUHJvcGVydHlJbmZvcyA9IHRoaXMuX3VwZGF0ZVByb3BlcnR5SW5mb1RvU3VwcG9ydFNWKGNvbnRyb2wsIGNvcHlvZlByb3BlcnR5SW5mb3MpO1xuXHRcdGNvbnN0IGNvbmRpdGlvbnM6IFN0YXRlVXRpbEZpbHRlciA9IHN2VG9TdGF0ZUZpbHRlcnMuZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWKFxuXHRcdFx0c2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdGZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uLFxuXHRcdFx0dXBkYXRlZFByb3BlcnR5SW5mb3MgPz8gY29weW9mUHJvcGVydHlJbmZvcyxcblx0XHRcdHByZWZpbGxEZXNjcmlwdGlvbnMsXG5cdFx0XHRtZXRhTW9kZWxcblx0XHQpO1xuXG5cdFx0cmV0dXJuIGNvbmRpdGlvbnM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZmlsdGVyIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgdGhlIGNvbnZlcnNpb24gb2Ygc2VsZWN0aW9uIHZhcmlhbnQgdG8gY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjYW4gYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlcmJhclxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCBpbmZvcm1hdGlvbiAobWV0YU1vZGVsLCBjb250ZXh0UGF0aCwgdXNlIG9mIHNlbWFudGljIGRhdGUgcmFuZ2UsIGFsbCBmaWx0ZXIgZmllbGRzIGNvbmZpZylcblx0ICovXG5cdF9nZXRDb250cm9sSW5mb0ZvckNvbnZlcnNpb24oY29udHJvbDogQ29udHJvbCk6IENvbnZlcnNpb25JbmZvIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBjb250cm9sLmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsLFxuXHRcdFx0Y29udGV4dFBhdGggPSBjb250cm9sLmRhdGEoXCJlbnRpdHlUeXBlXCIpIGFzIHN0cmluZztcblx0XHRpZiAoY29udHJvbC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0Y29uc3QgdXNlU2VtYW50aWNEYXRlUmFuZ2U6IGJvb2xlYW4gPVxuXHRcdFx0XHRcdGNvbnRyb2wuZGF0YShcInVzZVNlbWFudGljRGF0ZVJhbmdlXCIpID09PSBcInRydWVcIiB8fCBjb250cm9sLmRhdGEoXCJ1c2VTZW1hbnRpY0RhdGVSYW5nZVwiKSA9PT0gdHJ1ZSxcblx0XHRcdFx0dmlld0RhdGFJbnN0YW5jZSA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJ2aWV3RGF0YVwiKSBhcyBKU09OTW9kZWwsXG5cdFx0XHRcdHZpZXdEYXRhID0gdmlld0RhdGFJbnN0YW5jZS5nZXREYXRhKCkgYXMgVmlld0RhdGEsXG5cdFx0XHRcdGNvbmZpZyA9IHZpZXdEYXRhPy5jb250cm9sQ29uZmlndXJhdGlvbixcblx0XHRcdFx0c2VsZWN0aW9uRmllbGRzQ29uZmlncyA9IGNvbmZpZz8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiXSxcblx0XHRcdFx0ZmlsdGVyRmllbGRzQ29uZmlnID0gc2VsZWN0aW9uRmllbGRzQ29uZmlncz8uZmlsdGVyRmllbGRzO1xuXHRcdFx0cmV0dXJuIHsgbWV0YU1vZGVsLCBjb250ZXh0UGF0aCwgdXNlU2VtYW50aWNEYXRlUmFuZ2UsIGZpbHRlckZpZWxkc0NvbmZpZywgc2VsZWN0aW9uRmllbGRzQ29uZmlncyB9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4geyBtZXRhTW9kZWwsIGNvbnRleHRQYXRoIH07XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgc3VwcG9ydGVkIGZpbHRlciBmaWVsZCBwcm9wZXJ0aWVzIGZyb20gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2wgQ29udHJvbCBjYW4gYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgU3VwcG9ydGVkIGZpbHRlciBmaWVsZHMuXG5cdCAqL1xuXHRhc3luYyBfZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGNvbnRyb2w6IENvbnRyb2wpOiBQcm9taXNlPENvbnRyb2xQcm9wZXJ0eUluZm9bXT4ge1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyYmFyXCIpKSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLndhaXRGb3JJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSBpZiAoKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBUYWJsZSB8IENoYXJ0KS5hd2FpdENvbnRyb2xEZWxlZ2F0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gKGNvbnRyb2wgYXMgVGFibGUgfCBDaGFydCB8IEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci4uXG5cdCAqIEBwYXJhbSBjb250cm9sSW5zdGFuY2UgVGhpcyBjYW4gYmUgYSBmaWx0ZXIgYmFyLCBjaGFydCwgb3IgdGFibGUuXG5cdCAqL1xuXHRhc3luYyBjbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U6IE1hY3JvQVBJKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy5fY2xlYXJGaWx0ZXJWYWx1ZXNXaXRoT3B0aW9ucyhjb250cm9sSW5zdGFuY2UuY29udGVudCBhcyBDb250cm9sKTtcblx0XHQvLyBBbGxvdyBhcHAgZGV2ZWxvcGVycyB0byB1cGRhdGUgZmlsdGVycyBhZnRlciBjbGVhcmluZ1xuXHRcdGNvbnRyb2xJbnN0YW5jZS5maXJlRXZlbnQoXCJhZnRlckNsZWFyXCIpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjYW4gYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZmlsdGVyaW5nIHRoZSBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBvcHRpb25zLmNsZWFyRWRpdEZpbHRlciBXaGV0aGVyIHRvIGNsZWFyIHRoZSBlZGl0IGZpbHRlciBvciByZXRhaW4gdGhlIGRlZmF1bHQgdmFsdWUgJ0FsbCdcblx0ICovXG5cdGFzeW5jIF9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGNvbnRyb2w6IENvbnRyb2wsIG9wdGlvbnM/OiB7IGNsZWFyRWRpdEZpbHRlcjogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbCk7XG5cdFx0bGV0IGVkaXRTdGF0ZVBhdGggPSBcIlwiLFxuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbixcblx0XHRcdGVkaXRTdGF0ZURlZmF1bHRWYWx1ZSxcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG5cdFx0XHRzaG91bGRDbGVhckVkaXRGaWx0ZXI6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cdFx0aWYgKGNvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0ZWRpdFN0YXRlUGF0aCA9IFwiJGVkaXRTdGF0ZVwiO1xuXHRcdFx0ZWRpdFN0YXRlRGVmYXVsdFZhbHVlID0gRHJhZnRFZGl0U3RhdGUuQUxMLmlkO1xuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbiA9IGRlZXBDbG9uZShzdGF0ZS5maWx0ZXJbZWRpdFN0YXRlUGF0aF0/LlswXSk7XG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0ID0gY3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbj8udmFsdWVzWzBdID09PSBlZGl0U3RhdGVEZWZhdWx0VmFsdWU7XG5cdFx0XHRzaG91bGRDbGVhckVkaXRGaWx0ZXIgPSBvcHRpb25zICYmIE9iamVjdC5rZXlzKG9wdGlvbnMpLmxlbmd0aCA+IDAgJiYgb3B0aW9ucy5jbGVhckVkaXRGaWx0ZXI7XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYXIgYWxsIGNvbmRpdGlvbnNcblx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvblBhdGggb2YgT2JqZWN0LmtleXMoc3RhdGUuZmlsdGVyKSkge1xuXHRcdFx0aWYgKCFzaG91bGRDbGVhckVkaXRGaWx0ZXIgJiYgY29uZGl0aW9uUGF0aCA9PT0gZWRpdFN0YXRlUGF0aCAmJiBjdXJyZW50RWRpdFN0YXRlSXNEZWZhdWx0KSB7XG5cdFx0XHRcdC8vIERvIG5vdCBjbGVhciBlZGl0IHN0YXRlIGNvbmRpdGlvbiBpZiBpdCBpcyBhbHJlYWR5IFwiQUxMXCJcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzdGF0ZS5maWx0ZXJbY29uZGl0aW9uUGF0aF0pIHtcblx0XHRcdFx0Y29uZGl0aW9uLmZpbHRlcmVkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbCwgeyBmaWx0ZXI6IHN0YXRlLmZpbHRlciB9KTtcblxuXHRcdGlmIChjb250cm9sLmlzQTxGaWx0ZXJCYXI+KFwic2FwLnVpLm1kYy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdC8vIFNldCBlZGl0IHN0YXRlIHRvICdBTEwnIGlmIGl0IHdhc24ndCBiZWZvcmVcblx0XHRcdGlmICghc2hvdWxkQ2xlYXJFZGl0RmlsdGVyICYmIGN1cnJlbnRFZGl0U3RhdGVDb25kaXRpb24gJiYgIWN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQpIHtcblx0XHRcdFx0Y3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbi52YWx1ZXMgPSBbZWRpdFN0YXRlRGVmYXVsdFZhbHVlXTtcblx0XHRcdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjb250cm9sLCB7IGZpbHRlcjogeyBbZWRpdFN0YXRlUGF0aF06IFtjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uXSB9IH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NsZWFyIGZpbHRlciBmaWVsZHMgaW4gZXJyb3Igc3RhdGVcblx0XHRcdGNvbnRyb2wuY2xlYW5VcEFsbEZpbHRlckZpZWxkc0luRXJyb3JTdGF0ZSgpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHJldHVybnMgdGhlIGNvcHkgb2YgcHJvcGVydHlJbmZvIGJ5IGFkZGluZyBuZWNlc3NhcnkgZmllbGRzIHNvIHRoYXQgc2VsZWN0aW9uIHZhcmlhbnQgY2FuIGJlIHNldCB0byBhIGNvbnRyb2wgbGlrZSB0YWJsZSBhbmQgY2hhcnQuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHByb3BlcnR5SW5mb3MgQXJyYXkgb2YgUHJvcGVydHlJbmZvIG9mIHRoZSBjb250cm9sXG5cdCAqIEByZXR1cm5zIFRoZSBkZWVwIGNsb25lIG9mIHByb3BlcnR5SW5mb3Mgd2l0aCBzb21lIGFkZGl0aW9uYWwgZmllbGRzXG5cdCAqL1xuXHRfdXBkYXRlUHJvcGVydHlJbmZvVG9TdXBwb3J0U1YoY29udHJvbDogQ29udHJvbCwgcHJvcGVydHlJbmZvczogQ29udHJvbFByb3BlcnR5SW5mb1tdKTogQ29udHJvbFByb3BlcnR5SW5mb1tdIHtcblx0XHRpZiAoY29udHJvbC5pc0EoXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdFx0fVxuXHRcdHByb3BlcnR5SW5mb3MuZm9yRWFjaCgocHJvcGVydHlJbmZvOiBDb250cm9sUHJvcGVydHlJbmZvKSA9PiB7XG5cdFx0XHRpZiAoKGNvbnRyb2wgYXMgQ29udHJvbCkuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLm5hbWU7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImFubm90YXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLm1ldGFkYXRhUGF0aCA/IHByb3BlcnR5SW5mby5tZXRhZGF0YVBhdGggOiBcIlwiO1xuXHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJoYXNWYWx1ZUhlbHBcIl0gPSBQcm9wZXJ0eUhlbHBlci5oYXNWYWx1ZUhlbHAoXG5cdFx0XHRcdFx0KGNvbnRyb2wgYXMgVGFibGUpLmdldFByb3BlcnR5SGVscGVyKCkuZ2V0UHJvcGVydHkocHJvcGVydHlJbmZvLm5hbWUpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImRhdGFUeXBlXCJdID0gcHJvcGVydHlJbmZvPy50eXBlQ29uZmlnPy5jbGFzc05hbWUgYXMgc3RyaW5nO1xuXHRcdFx0fSBlbHNlIGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eUluZm8ucGF0aCkge1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcIm5hbWVcIl0gPSBwcm9wZXJ0eUluZm8ucGF0aDtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLnBhdGg7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSAoKGNvbnRyb2wgYXMgQ2hhcnQpLmdldFBhcmVudCgpIGFzIENoYXJ0VHlwZSk/LmdldFByb3BlcnR5RGF0YU1vZGVsKHByb3BlcnR5SW5mby5wYXRoKT8udGFyZ2V0T2JqZWN0O1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImhhc1ZhbHVlSGVscFwiXSA9IHByb3BlcnR5ID8gUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKHByb3BlcnR5KSA6IGZhbHNlO1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImRhdGFUeXBlXCJdID0gKHByb3BlcnR5SW5mbz8udHlwZUNvbmZpZz8uY2xhc3NOYW1lIGFzIHN0cmluZykgfHwgcHJvcGVydHlJbmZvLmRhdGFUeXBlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgc2VsZWN0aW9uIHZhcmlhbnQgdG8gdGhlIHRhYmxlLiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgdGhlIGV4aXN0aW5nIGZpbHRlcnMgYW5kIHRoZW4gYXBwbHkgdGhlIFNlbGVjdGlvblZhcmlhbnQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gY29udHJvbEluc3RhbmNlIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IHRvIGFwcGx5IHRvIHRoZSByZXNwZWN0aXZlIG1kYyBjb250cm9sc1xuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBPcHRpb25hbC4gSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgdGhlIGFzc29jaWF0ZWQgdGV4dCBwcm9wZXJ0eSB2YWx1ZXMgKGlmIHRoZXkncmUgYXZhaWxhYmxlIGluIHRoZSBzZWxlY3Rpb25WYXJpYW50KSB0byBkaXNwbGF5IHRoZSBmaWx0ZXIgdmFsdWUgZGVzY3JpcHRpb25zLCBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlbSBmcm9tIHRoZSBiYWNrZW5kXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2woXG5cdFx0Y29udHJvbEluc3RhbmNlOiBDb3JlQ29udHJvbCB8IHVuZGVmaW5lZCxcblx0XHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZVxuXHQpOiBQcm9taXNlPHsgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZTsgYXBwbHlTdGF0ZVJlc3VsdDogdW5rbm93biB9IHwgdW5kZWZpbmVkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0aWYgKCFzdGF0ZS5maWx0ZXIpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBGRSA6IHNldFNlbGVjdGlvblZhcmlhbnQgQVBJIGNhbm5vdCBiZSBhcHBsaWVkIG9uIDogJHtjb250cm9sSW5zdGFuY2U/LmdldElkKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbmRpdGlvbnM6IFN0YXRlVXRpbEZpbHRlciA9IGF3YWl0IHRoaXMuY29udmVydFNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycyhcblx0XHRcdFx0Y29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsXG5cdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByZWZpbGxEZXNjcmlwdGlvbnMsXG5cdFx0XHRcdGNvbnRyb2xJbnN0YW5jZT8uZ2V0TW9kZWwoKVxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gQ2xlYXIgZmlsdGVyIG9mIHRhYmxlIGJlZm9yZSBhcHBseWluZyBzZWxlY3Rpb24gdmFyaWFudFxuXHRcdFx0YXdhaXQgdGhpcy5jbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U/LmdldFBhcmVudCgpIGFzIE1hY3JvQVBJKTtcblxuXHRcdFx0Ly8gU3RhdGUgdG8gYXBwbHlcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSBhd2FpdCB0aGlzLl9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0Y29uc3Qgc3RhdGVUb0FwcGx5ID0gc3ZUb1N0YXRlRmlsdGVycy5nZXRTdGF0ZVRvQXBwbHkocHJvcGVydHlJbmZvcywgY29uZGl0aW9ucyk7XG5cdFx0XHRpZiAoY29udHJvbEluc3RhbmNlPy5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuY29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5kaWZmU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlLCBzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0Y29uc3QgYXBwbHlTdGF0ZVJlc3VsdCA9IGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlVG9BcHBseSk7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRkaWZmU3RhdGUsXG5cdFx0XHRcdGFwcGx5U3RhdGVSZXN1bHRcblx0XHRcdH07XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY29udHJvbEluc3RhbmNlPy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBCdWlsZGluZ0Jsb2NrICgke2lkfSkgLSBzZXQgc2VsZWN0aW9uIHZhcmlhbnQgZmFpbGVkICA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fSxcblx0LyoqXG5cdCAqIENvbnZlcnQgdGhlIGNoYXJ0IHByb3BlcnRpZXMgdG8gaW50ZXJuYWwgcHJvcGVydGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBzdGF0ZVRvQXBwbHkgVGhpcyBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGZpbHRlciBhbmQgY29uZGl0aW9uc1xuXHQgKi9cblx0Y29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHk6IFN0YXRlVG9BcHBseSk6IHZvaWQge1xuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBmaWx0ZXIgb2JqZWN0IGZyb20gXCJTYWxlc09kZXJcIiB0byBpbnRlcm5hbCBmb3JtYXQgXCJfZmVfZ3JvdXBhYmxlX1NhbGVzT3JkZXJcIlxuXHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc3RhdGVUb0FwcGx5LmZpbHRlcikge1xuXHRcdFx0ZGVsZXRlIE9iamVjdC5hc3NpZ24oc3RhdGVUb0FwcGx5LmZpbHRlciwgeyBbXCJfZmVfZ3JvdXBhYmxlX1wiICsgcHJvcGVydHldOiBzdGF0ZVRvQXBwbHkuZmlsdGVyW3Byb3BlcnR5XSB9KVtwcm9wZXJ0eV07XG5cdFx0fVxuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBpdGVtcyBhcnJheSBmcm9tIFwiU2FsZXNPZGVyXCIgdG8gaW50ZXJuYWwgZm9ybWF0IFwiX2ZlX2dyb3VwYWJsZV9TYWxlc09yZGVyXCJcblx0XHRzdGF0ZVRvQXBwbHkuaXRlbXMuZm9yRWFjaCgocHJvcGVydHlPYmo6IHsgbmFtZTogc3RyaW5nIH0pID0+IHtcblx0XHRcdHByb3BlcnR5T2JqLm5hbWUgPSBcIl9mZV9ncm91cGFibGVfXCIgKyBwcm9wZXJ0eU9iai5uYW1lO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb250cm9sUHJvcGVydHlJbmZvID0gUHJvcGVydHlJbmZvICYge1xuXHRjb25kaXRpb25QYXRoOiBzdHJpbmc7XG5cdGRhdGFUeXBlOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdGlzUGFyYW1ldGVyPzogYm9vbGVhbjtcblx0aGlkZGVuRmlsdGVyPzogYm9vbGVhbjtcblx0aGFzVmFsdWVIZWxwPzogYm9vbGVhbjtcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxu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
270
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0ZUhlbHBlciIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJjb250cm9sIiwiY29udHJvbFN0YXRlIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwiY29udHJvbE9iamVjdCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCJnZXRQYXJlbnQiLCJpc0EiLCJnZXRQYXJhbWV0ZXJzIiwidW5kZWZpbmVkIiwic2VsZWN0aW9uVmFyaWFudCIsIlN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnRGcm9tQ29uZGl0aW9ucyIsImdldFByb3BlcnR5SGVscGVyIiwiZXh0ZXJuYWxTViIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3RPcHRpb25zIiwiX2dldFNlbGVjdE9wdGlvbnMiLCJwcm9wZXJ0eSIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzcGxpdCIsImVycm9yIiwiaWQiLCJnZXRJZCIsIm1lc3NhZ2UiLCJFcnJvciIsIlN0cmluZyIsIkxvZyIsImNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJwcmVmaWxsRGVzY3JpcHRpb25zIiwibW9kZWwiLCJwcm9wZXJ0eUluZm9zIiwiX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyIsImxlbmd0aCIsImZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIiwiX2dldENvbnRyb2xJbmZvRm9yQ29udmVyc2lvbiIsIm1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImNvcHlvZlByb3BlcnR5SW5mb3MiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJ1cGRhdGVkUHJvcGVydHlJbmZvcyIsIl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTViIsImNvbmRpdGlvbnMiLCJzdlRvU3RhdGVGaWx0ZXJzIiwiZ2V0U3RhdGVGaWx0ZXJzRnJvbVNWIiwiZ2V0TW9kZWwiLCJjb250ZXh0UGF0aCIsImRhdGEiLCJ1c2VTZW1hbnRpY0RhdGVSYW5nZSIsInZpZXdEYXRhSW5zdGFuY2UiLCJ2aWV3RGF0YSIsImdldERhdGEiLCJjb25maWciLCJjb250cm9sQ29uZmlndXJhdGlvbiIsInNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJmaWx0ZXJGaWVsZHMiLCJnZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZ2V0Q29udHJvbERlbGVnYXRlIiwiZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzIiwiYXdhaXRDb250cm9sRGVsZWdhdGUiLCJmZXRjaFByb3BlcnRpZXMiLCJjbGVhckZpbHRlclZhbHVlcyIsImNvbnRyb2xJbnN0YW5jZSIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY29udGVudCIsImZpcmVFdmVudCIsIm9wdGlvbnMiLCJzdGF0ZSIsImVkaXRTdGF0ZVBhdGgiLCJjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uIiwiZWRpdFN0YXRlRGVmYXVsdFZhbHVlIiwiY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCIsInNob3VsZENsZWFyRWRpdEZpbHRlciIsIkRyYWZ0RWRpdFN0YXRlIiwiQUxMIiwiZGVlcENsb25lIiwidmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsImNsZWFyRWRpdEZpbHRlciIsImNvbmRpdGlvblBhdGgiLCJjb25kaXRpb24iLCJmaWx0ZXJlZCIsImFwcGx5RXh0ZXJuYWxTdGF0ZSIsImNsZWFuVXBBbGxGaWx0ZXJGaWVsZHNJbkVycm9yU3RhdGUiLCJmb3JFYWNoIiwicHJvcGVydHlJbmZvIiwibmFtZSIsIlByb3BlcnR5SGVscGVyIiwiaGFzVmFsdWVIZWxwIiwiZ2V0UHJvcGVydHkiLCJwYXRoIiwiZ2V0UHJvcGVydHlEYXRhTW9kZWwiLCJ0YXJnZXRPYmplY3QiLCJ0eXBlQ29uZmlnIiwiY2xhc3NOYW1lIiwiZGF0YVR5cGUiLCJzZXRTZWxlY3Rpb25WYXJpYW50VG9NZGNDb250cm9sIiwiYXJndW1lbnRzIiwiZnJvbU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJzdGF0ZVRvQXBwbHkiLCJnZXRTdGF0ZVRvQXBwbHkiLCJjb252ZXJ0Q29uZGl0aW9uc0ZvckNoYXJ0IiwiZGlmZlN0YXRlIiwiYXBwbHlTdGF0ZVJlc3VsdCIsImVyciIsImFzc2lnbiIsIml0ZW1zIiwicHJvcGVydHlPYmoiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN0YXRlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB0eXBlIHsgVmlld0RhdGEgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVtcGxhdGVkVmlld1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCBEcmFmdEVkaXRTdGF0ZSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRHJhZnRFZGl0U3RhdGVcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhckFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL1Byb3BlcnR5SW5mb1wiO1xuaW1wb3J0IHR5cGUgeyBDb252ZXJzaW9uSW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1NlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVyc1wiO1xuaW1wb3J0IHN2VG9TdGF0ZUZpbHRlcnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvbWRjL2FkYXB0ZXIvU2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzXCI7XG5pbXBvcnQgU3RhdGVGaWx0ZXJzVG9TZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbWFjcm9zL21kYy9hZGFwdGVyL1N0YXRlRmlsdGVyVG9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsU3RhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdmFsdWVoZWxwL1ZhbHVlSGVscERlbGVnYXRlXCI7XG5pbXBvcnQgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgQ29yZUNvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIENoYXJ0IGZyb20gXCJzYXAvdWkvbWRjL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFN0YXRlVG9BcHBseSwgRmlsdGVyIGFzIFN0YXRlVXRpbEZpbHRlciB9IGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgU3RhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRUeXBlIGZyb20gXCIuLi8uLi9DaGFydFwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcIi4uLy4uL01hY3JvQVBJXCI7XG5cbi8qKlxuICogVGhpcyBpcyB0byBleHRlbmQgTURDIGNvbnRyb2wgQVBJcyBmb3IgZmlsdGVyLCB0YWJsZSwgY2hhcnQgYnVpbGRpbmcgYmxvY2tzLlxuICogQHB1YmxpY1xuICovXG5cbmNvbnN0IFN0YXRlSGVscGVyID0ge1xuXHQvKipcblx0ICogR2V0cyBzZWxlY3Rpb24gdmFyaWFudCBmcm9tIHRoZSBtZGMgY29udHJvbC5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhlIGNvbnRyb2wgZm9yIHdoaWNoIFNlbGVjdGlvbiBWYXJpYW50IGlzIHRvIGJlIGZldGNoZWRcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGggYSB7QGxpbmsgc2FwLmZlLm5hdmlnYXRpb24uU2VsZWN0aW9uVmFyaWFudH1cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZ2V0U2VsZWN0aW9uVmFyaWFudChjb250cm9sOiBDb3JlQ29udHJvbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8U2VsZWN0aW9uVmFyaWFudD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjb250cm9sU3RhdGUgPSBhd2FpdCBTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKGNvbnRyb2wgYXMgQ29udHJvbCk7XG5cdFx0XHRjb25zdCBjb250cm9sT2JqZWN0ID0gY29udHJvbFN0YXRlLmZpbHRlciBhcyBTdGF0ZVV0aWxGaWx0ZXI7XG5cdFx0XHRsZXQgcGFyYW1ldGVyczogc3RyaW5nW10gfCB1bmRlZmluZWQgPSBbXTtcblx0XHRcdGlmIChcblx0XHRcdFx0Y29udHJvbD8uZ2V0UGFyZW50KCk/LmlzQShcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiKSAmJlxuXHRcdFx0XHQoY29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEkpLmdldFBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZFxuXHRcdFx0KSB7XG5cdFx0XHRcdHBhcmFtZXRlcnMgPSAoY29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEkpLmdldFBhcmFtZXRlcnMoKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHNlbGVjdGlvblZhcmlhbnQgPSBTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0aW9uVmFyaWFudEZyb21Db25kaXRpb25zKFxuXHRcdFx0XHRjb250cm9sT2JqZWN0LFxuXHRcdFx0XHQoY29udHJvbCBhcyBDb250cm9sKS5nZXRQcm9wZXJ0eUhlbHBlcigpLFxuXHRcdFx0XHRwYXJhbWV0ZXJzXG5cdFx0XHQpO1xuXHRcdFx0aWYgKGNvbnRyb2w/LmlzQShcInNhcC51aS5tZGMuQ2hhcnRcIikpIHtcblx0XHRcdFx0Y29uc3QgZXh0ZXJuYWxTViA9IG5ldyBTZWxlY3Rpb25WYXJpYW50KCk7XG5cdFx0XHRcdGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50Ll9nZXRTZWxlY3RPcHRpb25zKCk7XG5cdFx0XHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc2VsZWN0T3B0aW9ucykge1xuXHRcdFx0XHRcdGV4dGVybmFsU1YubWFzc0FkZFNlbGVjdE9wdGlvbihwcm9wZXJ0eS5zcGxpdChcIl9mZV9ncm91cGFibGVfXCIpWzFdLCBzZWxlY3RPcHRpb25zW3Byb3BlcnR5XSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGV4dGVybmFsU1Y7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gc2VsZWN0aW9uVmFyaWFudDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0Y29uc3QgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNvbnRyb2w/LmdldElkKCk7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuXHRcdFx0TG9nLmVycm9yKGBCdWlsZGluZyBCbG9jayAoJHtpZH0pIC0gZ2V0IHNlbGVjdGlvbiB2YXJpYW50IGZhaWxlZCA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQ29udmVydCBzZWxlY3Rpb24gdmFyaWFudCB0byBjb25kaXRpb25zLlxuXHQgKiBAcGFyYW0gY29udHJvbCBDb250cm9sIGNhbiBiZSBhIHRhYmxlLCBjaGFydCBvciBmaWx0ZXIgYmFyXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFRoZSBzZWxlY3Rpb24gdmFyaWFudCB0byBhcHBseSB0byB0aGUgdGFibGUgb3IgY2hhcnQgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIHByZWZpbGxEZXNjcmlwdGlvbnMgSWYgdHJ1ZSwgd2UgdHJ5IHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQgVGV4dCB2YWx1ZSBmb3IgZWFjaCBwcm9wZXJ0eSBpbiB0aGUgc2VsZWN0aW9uVmFyaWFudCAodG8gYXZvaWQgZmV0Y2hpbmcgaXQgZnJvbSB0aGUgc2VydmVyKVxuXHQgKiBAcGFyYW0gbW9kZWwgVGhlIGNvbnRyb2wgbW9kZWxcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0byBjb25kaXRpb25zXG5cdCAqL1xuXHRhc3luYyBjb252ZXJ0U2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzKFxuXHRcdGNvbnRyb2w6IENvbnRyb2wsXG5cdFx0c2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRwcmVmaWxsRGVzY3JpcHRpb25zOiBib29sZWFuLFxuXHRcdG1vZGVsPzogTW9kZWxcblx0KTogUHJvbWlzZTxTdGF0ZVV0aWxGaWx0ZXI+IHtcblx0XHQvLyBOb3RlOiBUaGlzIG1ldGhvZCBpcyBwcml2YXRlIGFuZCByZXN0cmljdGVkIHRvIHVzYWdlIGJ5IHNhcC5mZShWaWV3U3RhdGUgY29udHJvbGxlciBleHRlbnNpb24pIGZvciBmaWx0ZXIgYmFyLyBjaGFydCAvIHRhYmxlIHN0YXRlIHNjZW5hcmlvcy5cblx0XHRjb25zdCBwcm9wZXJ0eUluZm9zID0gYXdhaXQgdGhpcy5fZ2V0U3VwcG9ydGVkRmlsdGVyRmllbGRzKGNvbnRyb2wpO1xuXG5cdFx0aWYgKCFwcm9wZXJ0eUluZm9zLmxlbmd0aCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiTm8gdmFsaWQgbWV0YWRhdGEgcHJvcGVydGllcyBwcmVzZW50IGZvciBmaWx0ZXIgYmFyXCIpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uID0gdGhpcy5fZ2V0Q29udHJvbEluZm9Gb3JDb252ZXJzaW9uKGNvbnRyb2wpO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IG1vZGVsPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRjb25zdCBjb3B5b2ZQcm9wZXJ0eUluZm9zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9wZXJ0eUluZm9zKSk7XG5cdFx0Y29uc3QgdXBkYXRlZFByb3BlcnR5SW5mb3MgPSB0aGlzLl91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTVihjb250cm9sLCBjb3B5b2ZQcm9wZXJ0eUluZm9zKTtcblx0XHRjb25zdCBjb25kaXRpb25zOiBTdGF0ZVV0aWxGaWx0ZXIgPSBzdlRvU3RhdGVGaWx0ZXJzLmdldFN0YXRlRmlsdGVyc0Zyb21TVihcblx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbixcblx0XHRcdHVwZGF0ZWRQcm9wZXJ0eUluZm9zID8/IGNvcHlvZlByb3BlcnR5SW5mb3MsXG5cdFx0XHRwcmVmaWxsRGVzY3JpcHRpb25zLFxuXHRcdFx0bWV0YU1vZGVsXG5cdFx0KTtcblxuXHRcdHJldHVybiBjb25kaXRpb25zO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpbHRlciBpbmZvcm1hdGlvbiBuZWVkZWQgZm9yIHRoZSBjb252ZXJzaW9uIG9mIHNlbGVjdGlvbiB2YXJpYW50IHRvIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBjb250cm9sIFRoaXMgY2FuIGJlIGEgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXJiYXJcblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgaW5mb3JtYXRpb24gKG1ldGFNb2RlbCwgY29udGV4dFBhdGgsIHVzZSBvZiBzZW1hbnRpYyBkYXRlIHJhbmdlLCBhbGwgZmlsdGVyIGZpZWxkcyBjb25maWcpXG5cdCAqL1xuXHRfZ2V0Q29udHJvbEluZm9Gb3JDb252ZXJzaW9uKGNvbnRyb2w6IENvbnRyb2wpOiBDb252ZXJzaW9uSW5mbyB7XG5cdFx0Y29uc3QgbWV0YU1vZGVsID0gY29udHJvbC5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdGNvbnRleHRQYXRoID0gY29udHJvbC5kYXRhKFwiZW50aXR5VHlwZVwiKSBhcyBzdHJpbmc7XG5cdFx0aWYgKGNvbnRyb2wuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWx0ZXJCYXJcIikpIHtcblx0XHRcdGNvbnN0IHVzZVNlbWFudGljRGF0ZVJhbmdlOiBib29sZWFuID1cblx0XHRcdFx0XHRjb250cm9sLmRhdGEoXCJ1c2VTZW1hbnRpY0RhdGVSYW5nZVwiKSA9PT0gXCJ0cnVlXCIgfHwgY29udHJvbC5kYXRhKFwidXNlU2VtYW50aWNEYXRlUmFuZ2VcIikgPT09IHRydWUsXG5cdFx0XHRcdHZpZXdEYXRhSW5zdGFuY2UgPSBjb250cm9sLmdldE1vZGVsKFwidmlld0RhdGFcIikgYXMgSlNPTk1vZGVsLFxuXHRcdFx0XHR2aWV3RGF0YSA9IHZpZXdEYXRhSW5zdGFuY2UuZ2V0RGF0YSgpIGFzIFZpZXdEYXRhLFxuXHRcdFx0XHRjb25maWcgPSB2aWV3RGF0YT8uY29udHJvbENvbmZpZ3VyYXRpb24sXG5cdFx0XHRcdHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MgPSBjb25maWc/LltcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIl0sXG5cdFx0XHRcdGZpbHRlckZpZWxkc0NvbmZpZyA9IHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3M/LmZpbHRlckZpZWxkcztcblx0XHRcdHJldHVybiB7IG1ldGFNb2RlbCwgY29udGV4dFBhdGgsIHVzZVNlbWFudGljRGF0ZVJhbmdlLCBmaWx0ZXJGaWVsZHNDb25maWcsIHNlbGVjdGlvbkZpZWxkc0NvbmZpZ3MgfTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHsgbWV0YU1vZGVsLCBjb250ZXh0UGF0aCB9O1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2V0IHN1cHBvcnRlZCBmaWx0ZXIgZmllbGQgcHJvcGVydGllcyBmcm9tIHRoZSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXIuXG5cdCAqIEBwYXJhbSBjb250cm9sIENvbnRyb2wgY2FuIGJlIGEgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFN1cHBvcnRlZCBmaWx0ZXIgZmllbGRzLlxuXHQgKi9cblx0YXN5bmMgX2dldFN1cHBvcnRlZEZpbHRlckZpZWxkcyhjb250cm9sOiBDb250cm9sKTogUHJvbWlzZTxDb250cm9sUHJvcGVydHlJbmZvW10+IHtcblx0XHRpZiAoKGNvbnRyb2wgYXMgVGFibGUpLmlzQShcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdHJldHVybiAoKGNvbnRyb2wgYXMgVGFibGUpLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKS5nZXRFbmhhbmNlZEZldGNoZWRQcm9wZXJ0eUluZm9zKCkgYXMgdW5rbm93biBhcyBDb250cm9sUHJvcGVydHlJbmZvW107XG5cdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyYmFyXCIpKSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBGaWx0ZXJCYXIpLndhaXRGb3JJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSBpZiAoKGNvbnRyb2wgYXMgRmlsdGVyQmFyKS5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkZpbHRlckJhclwiKSkge1xuXHRcdFx0cmV0dXJuIChjb250cm9sIGFzIEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hGaWx0ZXJQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhd2FpdCAoY29udHJvbCBhcyBUYWJsZSB8IENoYXJ0KS5hd2FpdENvbnRyb2xEZWxlZ2F0ZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gKGNvbnRyb2wgYXMgVGFibGUgfCBDaGFydCB8IEZpbHRlckJhcikuZ2V0Q29udHJvbERlbGVnYXRlKCkuZmV0Y2hQcm9wZXJ0aWVzKGNvbnRyb2wpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDbGVhcnMgYWxsIGlucHV0IHZhbHVlcyBvZiB2aXNpYmxlIGZpbHRlciBmaWVsZHMgaW4gdGhlIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhci5cblx0ICogQHBhcmFtIGNvbnRyb2xJbnN0YW5jZSBUaGlzIGNhbiBiZSBhIGZpbHRlciBiYXIsIGNoYXJ0LCBvciB0YWJsZS5cblx0ICovXG5cdGFzeW5jIGNsZWFyRmlsdGVyVmFsdWVzKGNvbnRyb2xJbnN0YW5jZTogTWFjcm9BUEkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKGNvbnRyb2xJbnN0YW5jZS5jb250ZW50IGFzIENvbnRyb2wpO1xuXHRcdC8vIEFsbG93IGFwcCBkZXZlbG9wZXJzIHRvIHVwZGF0ZSBmaWx0ZXJzIGFmdGVyIGNsZWFyaW5nXG5cdFx0Y29udHJvbEluc3RhbmNlLmZpcmVFdmVudChcImFmdGVyQ2xlYXJcIik7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENsZWFycyBhbGwgaW5wdXQgdmFsdWVzIG9mIHZpc2libGUgZmlsdGVyIGZpZWxkcyBpbiB0aGUgdGFibGUsIGNoYXJ0LCBvciBmaWx0ZXIgYmFyLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGlzIGNhbiBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBmaWx0ZXJpbmcgdGhlIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIG9wdGlvbnMuY2xlYXJFZGl0RmlsdGVyIFdoZXRoZXIgdG8gY2xlYXIgdGhlIGVkaXQgZmlsdGVyIG9yIHJldGFpbiB0aGUgZGVmYXVsdCB2YWx1ZSAnQWxsJ1xuXHQgKi9cblx0YXN5bmMgX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnMoY29udHJvbDogQ29udHJvbCwgb3B0aW9ucz86IHsgY2xlYXJFZGl0RmlsdGVyOiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc3RhdGU6IEV4dGVybmFsU3RhdGVUeXBlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShjb250cm9sKTtcblx0XHRsZXQgZWRpdFN0YXRlUGF0aCA9IFwiXCIsXG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uLFxuXHRcdFx0ZWRpdFN0YXRlRGVmYXVsdFZhbHVlLFxuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRcdHNob3VsZENsZWFyRWRpdEZpbHRlcjogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblx0XHRpZiAoY29udHJvbC5pc0E8RmlsdGVyQmFyPihcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRlZGl0U3RhdGVQYXRoID0gXCIkZWRpdFN0YXRlXCI7XG5cdFx0XHRlZGl0U3RhdGVEZWZhdWx0VmFsdWUgPSBEcmFmdEVkaXRTdGF0ZS5BTEwuaWQ7XG5cdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uID0gZGVlcENsb25lKHN0YXRlLmZpbHRlcltlZGl0U3RhdGVQYXRoXT8uWzBdKTtcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQgPSBjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uPy52YWx1ZXNbMF0gPT09IGVkaXRTdGF0ZURlZmF1bHRWYWx1ZTtcblx0XHRcdHNob3VsZENsZWFyRWRpdEZpbHRlciA9IG9wdGlvbnMgJiYgT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID4gMCAmJiBvcHRpb25zLmNsZWFyRWRpdEZpbHRlcjtcblx0XHR9XG5cblx0XHQvLyBDbGVhciBhbGwgY29uZGl0aW9uc1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uUGF0aCBvZiBPYmplY3Qua2V5cyhzdGF0ZS5maWx0ZXIpKSB7XG5cdFx0XHRpZiAoIXNob3VsZENsZWFyRWRpdEZpbHRlciAmJiBjb25kaXRpb25QYXRoID09PSBlZGl0U3RhdGVQYXRoICYmIGN1cnJlbnRFZGl0U3RhdGVJc0RlZmF1bHQpIHtcblx0XHRcdFx0Ly8gRG8gbm90IGNsZWFyIGVkaXQgc3RhdGUgY29uZGl0aW9uIGlmIGl0IGlzIGFscmVhZHkgXCJBTExcIlxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHN0YXRlLmZpbHRlcltjb25kaXRpb25QYXRoXSkge1xuXHRcdFx0XHRjb25kaXRpb24uZmlsdGVyZWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZShjb250cm9sLCB7IGZpbHRlcjogc3RhdGUuZmlsdGVyIH0pO1xuXG5cdFx0aWYgKGNvbnRyb2wuaXNBPEZpbHRlckJhcj4oXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSkge1xuXHRcdFx0Ly8gU2V0IGVkaXQgc3RhdGUgdG8gJ0FMTCcgaWYgaXQgd2Fzbid0IGJlZm9yZVxuXHRcdFx0aWYgKCFzaG91bGRDbGVhckVkaXRGaWx0ZXIgJiYgY3VycmVudEVkaXRTdGF0ZUNvbmRpdGlvbiAmJiAhY3VycmVudEVkaXRTdGF0ZUlzRGVmYXVsdCkge1xuXHRcdFx0XHRjdXJyZW50RWRpdFN0YXRlQ29uZGl0aW9uLnZhbHVlcyA9IFtlZGl0U3RhdGVEZWZhdWx0VmFsdWVdO1xuXHRcdFx0XHRhd2FpdCBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKGNvbnRyb2wsIHsgZmlsdGVyOiB7IFtlZGl0U3RhdGVQYXRoXTogW2N1cnJlbnRFZGl0U3RhdGVDb25kaXRpb25dIH0gfSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vY2xlYXIgZmlsdGVyIGZpZWxkcyBpbiBlcnJvciBzdGF0ZVxuXHRcdFx0Y29udHJvbC5jbGVhblVwQWxsRmlsdGVyRmllbGRzSW5FcnJvclN0YXRlKCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgcmV0dXJucyB0aGUgY29weSBvZiBwcm9wZXJ0eUluZm8gYnkgYWRkaW5nIG5lY2Vzc2FyeSBmaWVsZHMgc28gdGhhdCBzZWxlY3Rpb24gdmFyaWFudCBjYW4gYmUgc2V0IHRvIGEgY29udHJvbCBsaWtlIHRhYmxlIGFuZCBjaGFydC5cblx0ICogQHBhcmFtIGNvbnRyb2wgVGhpcyBjb3VsZCBiZSBhIHRhYmxlLCBjaGFydCwgb3IgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gcHJvcGVydHlJbmZvcyBBcnJheSBvZiBQcm9wZXJ0eUluZm8gb2YgdGhlIGNvbnRyb2xcblx0ICogQHJldHVybnMgVGhlIGRlZXAgY2xvbmUgb2YgcHJvcGVydHlJbmZvcyB3aXRoIHNvbWUgYWRkaXRpb25hbCBmaWVsZHNcblx0ICovXG5cdF91cGRhdGVQcm9wZXJ0eUluZm9Ub1N1cHBvcnRTVihjb250cm9sOiBDb250cm9sLCBwcm9wZXJ0eUluZm9zOiBDb250cm9sUHJvcGVydHlJbmZvW10pOiBDb250cm9sUHJvcGVydHlJbmZvW10ge1xuXHRcdGlmIChjb250cm9sLmlzQShcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpKSB7XG5cdFx0XHRyZXR1cm4gcHJvcGVydHlJbmZvcztcblx0XHR9XG5cdFx0cHJvcGVydHlJbmZvcy5mb3JFYWNoKChwcm9wZXJ0eUluZm86IENvbnRyb2xQcm9wZXJ0eUluZm8pID0+IHtcblx0XHRcdGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRcdHByb3BlcnR5SW5mb1tcImNvbmRpdGlvblBhdGhcIl0gPSBwcm9wZXJ0eUluZm8ubmFtZTtcblx0XHRcdFx0cHJvcGVydHlJbmZvW1wiaGFzVmFsdWVIZWxwXCJdID0gUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKFxuXHRcdFx0XHRcdChjb250cm9sIGFzIFRhYmxlKS5nZXRQcm9wZXJ0eUhlbHBlcigpLmdldFByb3BlcnR5KHByb3BlcnR5SW5mby5uYW1lKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIGlmICgoY29udHJvbCBhcyBDb250cm9sKS5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdGlmIChwcm9wZXJ0eUluZm8ucGF0aCkge1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcIm5hbWVcIl0gPSBwcm9wZXJ0eUluZm8ucGF0aDtcblx0XHRcdFx0XHRwcm9wZXJ0eUluZm9bXCJjb25kaXRpb25QYXRoXCJdID0gcHJvcGVydHlJbmZvLnBhdGg7XG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSAoKGNvbnRyb2wgYXMgQ2hhcnQpLmdldFBhcmVudCgpIGFzIENoYXJ0VHlwZSk/LmdldFByb3BlcnR5RGF0YU1vZGVsKHByb3BlcnR5SW5mby5wYXRoKT8udGFyZ2V0T2JqZWN0O1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImhhc1ZhbHVlSGVscFwiXSA9IHByb3BlcnR5ID8gUHJvcGVydHlIZWxwZXIuaGFzVmFsdWVIZWxwKHByb3BlcnR5KSA6IGZhbHNlO1xuXHRcdFx0XHRcdHByb3BlcnR5SW5mb1tcImRhdGFUeXBlXCJdID0gKHByb3BlcnR5SW5mbz8udHlwZUNvbmZpZz8uY2xhc3NOYW1lIGFzIHN0cmluZykgfHwgcHJvcGVydHlJbmZvLmRhdGFUeXBlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHByb3BlcnR5SW5mb3M7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgc2VsZWN0aW9uIHZhcmlhbnQgdG8gdGhlIHRhYmxlLiBOb3RlOiBzZXRTZWxlY3Rpb25WYXJpYW50IHdpbGwgY2xlYXIgdGhlIGV4aXN0aW5nIGZpbHRlcnMgYW5kIHRoZW4gYXBwbHkgdGhlIFNlbGVjdGlvblZhcmlhbnQgdmFsdWVzLlxuXHQgKiBAcGFyYW0gY29udHJvbEluc3RhbmNlIFRoaXMgY291bGQgYmUgYSB0YWJsZSwgY2hhcnQsIG9yIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvbiB2YXJpYW50IHRvIGFwcGx5IHRvIHRoZSByZXNwZWN0aXZlIG1kYyBjb250cm9sc1xuXHQgKiBAcGFyYW0gcHJlZmlsbERlc2NyaXB0aW9ucyBPcHRpb25hbC4gSWYgdHJ1ZSwgd2Ugd2lsbCB1c2UgdGhlIGFzc29jaWF0ZWQgdGV4dCBwcm9wZXJ0eSB2YWx1ZXMgKGlmIHRoZXkncmUgYXZhaWxhYmxlIGluIHRoZSBzZWxlY3Rpb25WYXJpYW50KSB0byBkaXNwbGF5IHRoZSBmaWx0ZXIgdmFsdWUgZGVzY3JpcHRpb25zLCBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhlbSBmcm9tIHRoZSBiYWNrZW5kXG5cdCAqIEBwYXJhbSBmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgT3B0aW9uYWwuIElmIHRydWUsIHRoZSBzZWxlY3Rpb24gdmFyaWFudCBpcyBhc3N1bWVkIHRvIGNvbWUgZnJvbSBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMuIEluIHRoaXMgY2FzZSwgaWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGNvbnRhaW5zIHNlbGVjdCBvcHRpb25zIGZvciBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIHRoZSBmaWx0ZXIgYmFyLCB0aGVzZSBzZWxlY3Qgb3B0aW9ucyB3aWxsIGJlIGlnbm9yZWQgYW5kIHdpbGwgbm90IGxlYWQgdG8gY2xlYXJpbmcgdGhlIGZpbHRlciBiYXIuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmNocm9ub3VzIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNldFNlbGVjdGlvblZhcmlhbnRUb01kY0NvbnRyb2woXG5cdFx0Y29udHJvbEluc3RhbmNlOiBDb3JlQ29udHJvbCB8IHVuZGVmaW5lZCxcblx0XHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdHByZWZpbGxEZXNjcmlwdGlvbnMgPSBmYWxzZSxcblx0XHRmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgPSBmYWxzZVxuXHQpOiBQcm9taXNlPHsgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZTsgYXBwbHlTdGF0ZVJlc3VsdDogdW5rbm93biB9IHwgdW5kZWZpbmVkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0aWYgKCFzdGF0ZS5maWx0ZXIpIHtcblx0XHRcdFx0TG9nLmVycm9yKGBGRSA6IHNldFNlbGVjdGlvblZhcmlhbnQgQVBJIGNhbm5vdCBiZSBhcHBsaWVkIG9uIDogJHtjb250cm9sSW5zdGFuY2U/LmdldElkKCl9YCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbmRpdGlvbnM6IFN0YXRlVXRpbEZpbHRlciA9IGF3YWl0IHRoaXMuY29udmVydFNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycyhcblx0XHRcdFx0Y29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsXG5cdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdHByZWZpbGxEZXNjcmlwdGlvbnMsXG5cdFx0XHRcdGNvbnRyb2xJbnN0YW5jZT8uZ2V0TW9kZWwoKVxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRmcm9tTmF2aWdhdGlvblBhcmFtZXRlcnMgJiZcblx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcygpLmxlbmd0aCA+IDAgJiZcblx0XHRcdFx0T2JqZWN0LmtleXMoY29uZGl0aW9ucykubGVuZ3RoID09PSAwXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gSWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGhhcyBzZWxlY3Qgb3B0aW9ucyBidXQgbm8gY29uZGl0aW9ucyBjb3VsZCBiZSBtYXBwZWQgdG8gdGhlIGZpbHRlciBiYXIsIHdlIHJldHVybiBhbiBlbXB0eSBhcnJheVxuXHRcdFx0XHQvLyBUaGlzIGlzIHRvIGF2b2lkIGNsZWFyaW5nIHRoZSBmaWx0ZXIgYmFyIGluIHRoaXMgY2FzZVxuXHRcdFx0XHQvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbGVjdGlvbiB2YXJpYW50IGhhcyBvbmx5IHBhcmFtZXRlcnMgb3Igc2VsZWN0IG9wdGlvbnMgZm9yIHByb3BlcnRpZXMgbm90IHByZXNlbnQgaW4gdGhlIGZpbHRlciBiYXJcblx0XHRcdFx0Ly8gSW4gdGhpcyBjYXNlLCB3ZSBhc3N1bWUgdGhhdCB0aGUgc2VsZWN0aW9uIHZhcmlhbnQgaXMgbm90IG1lYW50IHRvIGNsZWFyIHRoZSBmaWx0ZXIgYmFyXG5cdFx0XHRcdC8vIGFuZCB3ZSBkbyBub3QgYXBwbHkgaXRcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2xlYXIgZmlsdGVyIG9mIHRhYmxlIGJlZm9yZSBhcHBseWluZyBzZWxlY3Rpb24gdmFyaWFudFxuXHRcdFx0YXdhaXQgdGhpcy5jbGVhckZpbHRlclZhbHVlcyhjb250cm9sSW5zdGFuY2U/LmdldFBhcmVudCgpIGFzIE1hY3JvQVBJKTtcblxuXHRcdFx0Ly8gU3RhdGUgdG8gYXBwbHlcblx0XHRcdGNvbnN0IHByb3BlcnR5SW5mb3MgPSBhd2FpdCB0aGlzLl9nZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wpO1xuXHRcdFx0Y29uc3Qgc3RhdGVUb0FwcGx5ID0gc3ZUb1N0YXRlRmlsdGVycy5nZXRTdGF0ZVRvQXBwbHkocHJvcGVydHlJbmZvcywgY29uZGl0aW9ucyk7XG5cdFx0XHRpZiAoY29udHJvbEluc3RhbmNlPy5pc0EoXCJzYXAudWkubWRjLkNoYXJ0XCIpKSB7XG5cdFx0XHRcdHRoaXMuY29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBFeHRlcm5hbFN0YXRlVHlwZSA9IGF3YWl0IFN0YXRlVXRpbC5kaWZmU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlLCBzdGF0ZVRvQXBwbHkpO1xuXHRcdFx0Y29uc3QgYXBwbHlTdGF0ZVJlc3VsdCA9IGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUoY29udHJvbEluc3RhbmNlIGFzIENvbnRyb2wsIHN0YXRlVG9BcHBseSk7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRkaWZmU3RhdGUsXG5cdFx0XHRcdGFwcGx5U3RhdGVSZXN1bHRcblx0XHRcdH07XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY29udHJvbEluc3RhbmNlPy5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHRcdExvZy5lcnJvcihgRkUgOiBCdWlsZGluZ0Jsb2NrICgke2lkfSkgLSBzZXQgc2VsZWN0aW9uIHZhcmlhbnQgZmFpbGVkICA6ICR7bWVzc2FnZX1gKTtcblx0XHRcdHRocm93IEVycm9yKG1lc3NhZ2UpO1xuXHRcdH1cblx0fSxcblx0LyoqXG5cdCAqIENvbnZlcnQgdGhlIGNoYXJ0IHByb3BlcnRpZXMgdG8gaW50ZXJuYWwgcHJvcGVydGllcyBiZWZvcmUgYXBwbHlpbmcgdGhlIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBzdGF0ZVRvQXBwbHkgVGhpcyBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGZpbHRlciBhbmQgY29uZGl0aW9uc1xuXHQgKi9cblx0Y29udmVydENvbmRpdGlvbnNGb3JDaGFydChzdGF0ZVRvQXBwbHk6IFN0YXRlVG9BcHBseSk6IHZvaWQge1xuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBmaWx0ZXIgb2JqZWN0IGZyb20gXCJTYWxlc09kZXJcIiB0byBpbnRlcm5hbCBmb3JtYXQgXCJfZmVfZ3JvdXBhYmxlX1NhbGVzT3JkZXJcIlxuXHRcdGZvciAoY29uc3QgcHJvcGVydHkgaW4gc3RhdGVUb0FwcGx5LmZpbHRlcikge1xuXHRcdFx0ZGVsZXRlIE9iamVjdC5hc3NpZ24oc3RhdGVUb0FwcGx5LmZpbHRlciwgeyBbXCJfZmVfZ3JvdXBhYmxlX1wiICsgcHJvcGVydHldOiBzdGF0ZVRvQXBwbHkuZmlsdGVyW3Byb3BlcnR5XSB9KVtwcm9wZXJ0eV07XG5cdFx0fVxuXHRcdC8vIHJlcGxhY2Uga2V5cyBvZiBpdGVtcyBhcnJheSBmcm9tIFwiU2FsZXNPZGVyXCIgdG8gaW50ZXJuYWwgZm9ybWF0IFwiX2ZlX2dyb3VwYWJsZV9TYWxlc09yZGVyXCJcblx0XHRzdGF0ZVRvQXBwbHkuaXRlbXMuZm9yRWFjaCgocHJvcGVydHlPYmo6IHsgbmFtZTogc3RyaW5nIH0pID0+IHtcblx0XHRcdHByb3BlcnR5T2JqLm5hbWUgPSBcIl9mZV9ncm91cGFibGVfXCIgKyBwcm9wZXJ0eU9iai5uYW1lO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgdHlwZSBDb250cm9sUHJvcGVydHlJbmZvID0gUHJvcGVydHlJbmZvICYge1xuXHRjb25kaXRpb25QYXRoOiBzdHJpbmc7XG5cdGRhdGFUeXBlOiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdGlzUGFyYW1ldGVyPzogYm9vbGVhbjtcblx0aGlkZGVuRmlsdGVyPzogYm9vbGVhbjtcblx0aGFzVmFsdWVIZWxwPzogYm9vbGVhbjtcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVIZWxwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUEwQkE7QUFDQTtBQUNBO0FBQ0E7O0VBRUEsTUFBTUEsV0FBVyxHQUFHO0lBQ25CO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDLE1BQU1DLG1CQUFtQkEsQ0FBQ0MsT0FBZ0MsRUFBNkI7TUFDdEYsSUFBSTtRQUNILE1BQU1DLFlBQVksR0FBRyxNQUFNQyxTQUFTLENBQUNDLHFCQUFxQixDQUFDSCxPQUFrQixDQUFDO1FBQzlFLE1BQU1JLGFBQWEsR0FBR0gsWUFBWSxDQUFDSSxNQUF5QjtRQUM1RCxJQUFJQyxVQUFnQyxHQUFHLEVBQUU7UUFDekMsSUFDQ04sT0FBTyxFQUFFTyxTQUFTLENBQUMsQ0FBQyxFQUFFQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsSUFDaEVSLE9BQU8sQ0FBQ08sU0FBUyxDQUFDLENBQUMsQ0FBa0JFLGFBQWEsS0FBS0MsU0FBUyxFQUNoRTtVQUNESixVQUFVLEdBQUlOLE9BQU8sQ0FBQ08sU0FBUyxDQUFDLENBQUMsQ0FBa0JFLGFBQWEsQ0FBQyxDQUFDO1FBQ25FO1FBQ0EsTUFBTUUsZ0JBQWdCLEdBQUdDLDhCQUE4QixDQUFDQyxpQ0FBaUMsQ0FDeEZULGFBQWEsRUFDWkosT0FBTyxDQUFhYyxpQkFBaUIsQ0FBQyxDQUFDLEVBQ3hDUixVQUNELENBQUM7UUFDRCxJ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
@@ -2,6 +2,7 @@ import Log from "sap/base/Log";
2
2
  import deepClone from "sap/base/util/deepClone";
3
3
  import type { ViewData } from "sap/fe/core/services/TemplatedViewServiceFactory";
4
4
  import * as PropertyHelper from "sap/fe/core/templating/PropertyHelper";
5
+ import type TableAPI from "sap/fe/macros/Table";
5
6
  import DraftEditState from "sap/fe/macros/filterBar/DraftEditState";
6
7
  import type FilterBarAPI from "sap/fe/macros/filterBar/FilterBarAPI";
7
8
  import type { PropertyInfo } from "sap/fe/macros/internal/PropertyInfo";
@@ -133,7 +134,9 @@ const StateHelper = {
133
134
  * @returns Supported filter fields.
134
135
  */
135
136
  async _getSupportedFilterFields(control: Control): Promise<ControlPropertyInfo[]> {
136
- if (control.isA("sap.ui.mdc.Filterbar")) {
137
+ if ((control as Table).isA("sap.ui.mdc.Table")) {
138
+ return ((control as Table).getParent() as TableAPI).getEnhancedFetchedPropertyInfos() as unknown as ControlPropertyInfo[];
139
+ } else if (control.isA("sap.ui.mdc.Filterbar")) {
137
140
  await (control as FilterBar).waitForInitialization();
138
141
  return (control as FilterBar).getControlDelegate().fetchFilterProperties(control);
139
142
  } else if ((control as FilterBar).isA("sap.fe.macros.controls.FilterBar")) {
@@ -145,7 +148,7 @@ const StateHelper = {
145
148
  },
146
149
 
147
150
  /**
148
- * Clears all input values of visible filter fields in the table, chart, or filter bar..
151
+ * Clears all input values of visible filter fields in the table, chart, or filter bar.
149
152
  * @param controlInstance This can be a filter bar, chart, or table.
150
153
  */
151
154
  async clearFilterValues(controlInstance: MacroAPI): Promise<void> {
@@ -215,11 +218,9 @@ const StateHelper = {
215
218
  propertyInfos.forEach((propertyInfo: ControlPropertyInfo) => {
216
219
  if ((control as Control).isA("sap.ui.mdc.Table")) {
217
220
  propertyInfo["conditionPath"] = propertyInfo.name;
218
- propertyInfo["annotationPath"] = propertyInfo.metadataPath ? propertyInfo.metadataPath : "";
219
221
  propertyInfo["hasValueHelp"] = PropertyHelper.hasValueHelp(
220
222
  (control as Table).getPropertyHelper().getProperty(propertyInfo.name)
221
223
  );
222
- propertyInfo["dataType"] = propertyInfo?.typeConfig?.className as string;
223
224
  } else if ((control as Control).isA("sap.ui.mdc.Chart")) {
224
225
  if (propertyInfo.path) {
225
226
  propertyInfo["name"] = propertyInfo.path;
@@ -238,13 +239,15 @@ const StateHelper = {
238
239
  * @param controlInstance This could be a table, chart, or filter bar
239
240
  * @param selectionVariant The selection variant to apply to the respective mdc controls
240
241
  * @param prefillDescriptions Optional. If true, we will use the associated text property values (if they're available in the selectionVariant) to display the filter value descriptions, instead of loading them from the backend
242
+ * @param fromNavigationParameters Optional. If true, the selection variant is assumed to come from navigation parameters. In this case, if the selection variant contains select options for properties that are not present in the filter bar, these select options will be ignored and will not lead to clearing the filter bar.
241
243
  * @returns A promise for asynchronous handling
242
244
  * @public
243
245
  */
244
246
  async setSelectionVariantToMdcControl(
245
247
  controlInstance: CoreControl | undefined,
246
248
  selectionVariant: SelectionVariant,
247
- prefillDescriptions = false
249
+ prefillDescriptions = false,
250
+ fromNavigationParameters = false
248
251
  ): Promise<{ diffState: ExternalStateType; applyStateResult: unknown } | undefined> {
249
252
  try {
250
253
  const state: ExternalStateType = await StateUtil.retrieveExternalState(controlInstance as Control);
@@ -259,6 +262,19 @@ const StateHelper = {
259
262
  controlInstance?.getModel()
260
263
  );
261
264
 
265
+ if (
266
+ fromNavigationParameters &&
267
+ selectionVariant.getSelectOptionsPropertyNames().length > 0 &&
268
+ Object.keys(conditions).length === 0
269
+ ) {
270
+ // If the selection variant has select options but no conditions could be mapped to the filter bar, we return an empty array
271
+ // This is to avoid clearing the filter bar in this case
272
+ // This can happen if the selection variant has only parameters or select options for properties not present in the filter bar
273
+ // In this case, we assume that the selection variant is not meant to clear the filter bar
274
+ // and we do not apply it
275
+ return undefined;
276
+ }
277
+
262
278
  // Clear filter of table before applying selection variant
263
279
  await this.clearFilterValues(controlInstance?.getParent() as MacroAPI);
264
280