@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
@@ -1687,7 +1687,6 @@ function initialise(
1687
1687
  chartBlock._blockActions = [];
1688
1688
  chartBlock._commandActions = [];
1689
1689
  modifyIdentifiers(chartBlock);
1690
-
1691
1690
  if (chartBlock._chart) {
1692
1691
  chartBlock.chartDefinition = createChartDefinition(
1693
1692
  chartBlock,
@@ -1719,9 +1718,7 @@ function initialise(
1719
1718
  }
1720
1719
  checkPersonalizationInChartProperties(personalization, chartBlock);
1721
1720
  chartBlock.visible = chartBlock.chartDefinition.visible;
1722
- let contextPath = chartBlock._context.getPath();
1723
- contextPath = contextPath[contextPath.length - 1] === "/" ? contextPath.slice(0, -1) : contextPath;
1724
- chartBlock.draftSupported = ModelHelper.isDraftSupported(chartBlock._metaModel, contextPath);
1721
+ chartBlock.draftSupported = ModelHelper.isMetaPathDraftSupported(metaContextPath!);
1725
1722
  chartBlock._chartType = ChartHelper.formatChartType(chartBlock._chart.ChartType);
1726
1723
 
1727
1724
  const operationAvailableMap = ChartHelper.getOperationAvailableMap(chartBlock._chart, {
@@ -53,10 +53,14 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx-xml", "s
53
53
  };
54
54
  _proto.serialize = function serialize(overrideNodeName) {
55
55
  const properties = this.getMetadata().getAllProperties();
56
+ const events = this.getMetadata().getAllEvents();
56
57
  const aggregations = this.getMetadata().getAllAggregations();
57
58
  const settings = {
58
59
  children: {}
59
60
  };
61
+ for (const eventName in events) {
62
+ settings[eventName] = `THIS._fireEvent($event, $controller, '${eventName}')`;
63
+ }
60
64
  for (const propertyName in properties) {
61
65
  const property = this.getProperty(propertyName);
62
66
  if (typeof property !== "function") {
@@ -97,4 +101,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx-xml", "s
97
101
  _exports = BuildingBlockObjectProperty;
98
102
  return _exports;
99
103
  }, false);
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfVUk1RWxlbWVudCIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFByb3BlcnR5QmFnIiwic2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwiZ2V0TWV0YWRhdGEiLCJnZXRBbGxQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwicHJvcGVydHlOYW1lIiwicHJvcGVydHkiLCJnZXRQcm9wZXJ0eSIsImFnZ3JlZ2F0aW9uTmFtZSIsImFnZ3JlZ2F0aW9uQ29udGVudCIsImdldEFnZ3JlZ2F0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW5BcnJheSIsIm1hbmFnZWRPYmplY3QiLCJpc0EiLCJwdXNoIiwiZ2V0SWQiLCJzZXJpYWxpemUiLCJvdmVycmlkZU5vZGVOYW1lIiwiY2hpbGRyZW4iLCJqc3hYbWwiLCJnZXRDbGFzcyIsInVuZGVmaW5lZCIsImJpbmRQcm9wZXJ0eSIsIm5hbWUiLCJiaW5kaW5nSW5mbyIsInByb3BlcnR5TWV0YWRhdGEiLCJiaW5kYWJsZSIsImdyb3VwIiwiY2FsbCIsIlVJNUVsZW1lbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgTm9uQ29udHJvbFByb3BlcnRpZXMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQganN4WG1sIGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3gteG1sXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBidWlsZGluZyBibG9jayBjb21wbGV4IG9iamVjdCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQgdG8gWE1MLlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGV4dGVuZHMgVUk1RWxlbWVudCB7XG5cdGdldFByb3BlcnR5QmFnKCk6IFByb3BlcnRpZXNPZjx0aGlzPiB7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFByb3BlcnRpZXNPZjx0aGlzPiA9IHt9IGFzIFByb3BlcnRpZXNPZjx0aGlzPjtcblx0XHRjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbFByb3BlcnRpZXMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7XG5cdFx0XHRpZiAodHlwZW9mIHByb3BlcnR5ICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0c2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIGtleW9mIFByb3BlcnRpZXNPZjx0aGlzPl0gPSBwcm9wZXJ0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGlvbk5hbWUgaW4gYWdncmVnYXRpb25zKSB7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpKSB7XG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBtYW5hZ2VkT2JqZWN0IG9mIGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRcdGlmIChtYW5hZ2VkT2JqZWN0LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRcdGNoaWxkcmVuQXJyYXkucHVzaChtYW5hZ2VkT2JqZWN0LmdldFByb3BlcnR5QmFnKCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGNoaWxkcmVuQXJyYXk7XG5cdFx0XHR9IGVsc2UgaWYgKGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5nZXRQcm9wZXJ0eUJhZygpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNldHRpbmdzO1xuXHR9XG5cblx0c2VyaWFsaXplKG92ZXJyaWRlTm9kZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxBZ2dyZWdhdGlvbnMoKTtcblx0XHRjb25zdCBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gJiB7IGNoaWxkcmVuOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9ID0geyBjaGlsZHJlbjoge30gfTtcblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKTtcblx0XHRcdGlmICh0eXBlb2YgcHJvcGVydHkgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRzZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gcHJvcGVydHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoY29uc3QgYWdncmVnYXRpb25OYW1lIGluIGFnZ3JlZ2F0aW9ucykge1xuXHRcdFx0Y29uc3QgYWdncmVnYXRpb25Db250ZW50ID0gdGhpcy5nZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUpO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoYWdncmVnYXRpb25Db250ZW50KSkge1xuXHRcdFx0XHRjb25zdCBjaGlsZHJlbkFycmF5ID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgbWFuYWdlZE9iamVjdCBvZiBhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0XHRpZiAobWFuYWdlZE9iamVjdC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0XHRjaGlsZHJlbkFycmF5LnB1c2gobWFuYWdlZE9iamVjdC5zZXJpYWxpemUoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNldHRpbmdzLmNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZHJlbkFycmF5O1xuXHRcdFx0fSBlbHNlIGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0aW9uQ29udGVudC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0c2V0dGluZ3MuY2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5zZXJpYWxpemUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGpzeFhtbDxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFxuXHRcdFx0dGhpcy5nZXRNZXRhZGF0YSgpLmdldENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgQ29udHJvbCxcblx0XHRcdHNldHRpbmdzIGFzIE5vbkNvbnRyb2xQcm9wZXJ0aWVzPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4gJiB7XG5cdFx0XHRcdGtleT86IHN0cmluZztcblx0XHRcdFx0Y2hpbGRyZW4/OiBVSTVFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5Pjtcblx0XHRcdH0sXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHR7fSxcblx0XHRcdG92ZXJyaWRlTm9kZU5hbWVcblx0XHQpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYmluZFByb3BlcnR5KG5hbWU6IHN0cmluZywgYmluZGluZ0luZm86IFByb3BlcnR5QmluZGluZ0luZm8pOiB0aGlzIHtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFkYXRhID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnR5KG5hbWUpO1xuXHRcdGlmIChwcm9wZXJ0eU1ldGFkYXRhPy5iaW5kYWJsZSA9PT0gZmFsc2UgJiYgcHJvcGVydHlNZXRhZGF0YS5ncm91cCA9PT0gXCJEYXRhXCIpIHtcblx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtuYW1lXSA9IGJpbmRpbmdJbmZvO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5iaW5kUHJvcGVydHkobmFtZSwgYmluZGluZ0luZm8pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUFRQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQSwyQkFBMkIsSUFBQUMsSUFBQSxHQUQvQ0MsY0FBYyxDQUFDLG9EQUFvRCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSwwQkFBQUMsV0FBQTtJQUFBLFNBQUFKLDRCQUFBO01BQUEsT0FBQUksV0FBQSxDQUFBQyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtJQUFBQyxRQUFBLEdBQUFQLDJCQUFBO0lBQUFRLGNBQUEsQ0FBQVIsMkJBQUEsRUFBQUksV0FBQTtJQUFBLElBQUFLLE1BQUEsR0FBQVQsMkJBQUEsQ0FBQVUsU0FBQTtJQUFBRCxNQUFBLENBRXBFRSxjQUFjLEdBQWQsU0FBQUEsY0FBY0EsQ0FBQSxFQUF1QjtNQUNwQyxNQUFNQyxRQUE0QixHQUFHLENBQUMsQ0FBdUI7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
104
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfVUk1RWxlbWVudCIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFByb3BlcnR5QmFnIiwic2V0dGluZ3MiLCJwcm9wZXJ0aWVzIiwiZ2V0TWV0YWRhdGEiLCJnZXRBbGxQcm9wZXJ0aWVzIiwiYWdncmVnYXRpb25zIiwiZ2V0QWxsQWdncmVnYXRpb25zIiwicHJvcGVydHlOYW1lIiwicHJvcGVydHkiLCJnZXRQcm9wZXJ0eSIsImFnZ3JlZ2F0aW9uTmFtZSIsImFnZ3JlZ2F0aW9uQ29udGVudCIsImdldEFnZ3JlZ2F0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwiY2hpbGRyZW5BcnJheSIsIm1hbmFnZWRPYmplY3QiLCJpc0EiLCJwdXNoIiwiZ2V0SWQiLCJzZXJpYWxpemUiLCJvdmVycmlkZU5vZGVOYW1lIiwiZXZlbnRzIiwiZ2V0QWxsRXZlbnRzIiwiY2hpbGRyZW4iLCJldmVudE5hbWUiLCJqc3hYbWwiLCJnZXRDbGFzcyIsInVuZGVmaW5lZCIsImJpbmRQcm9wZXJ0eSIsIm5hbWUiLCJiaW5kaW5nSW5mbyIsInByb3BlcnR5TWV0YWRhdGEiLCJiaW5kYWJsZSIsImdyb3VwIiwiY2FsbCIsIlVJNUVsZW1lbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sUHJvcGVydGllcywgTm9uQ29udHJvbFByb3BlcnRpZXMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQganN4WG1sIGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3gteG1sXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBidWlsZGluZyBibG9jayBjb21wbGV4IG9iamVjdCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQgdG8gWE1MLlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGV4dGVuZHMgVUk1RWxlbWVudCB7XG5cdGdldFByb3BlcnR5QmFnKCk6IFByb3BlcnRpZXNPZjx0aGlzPiB7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFByb3BlcnRpZXNPZjx0aGlzPiA9IHt9IGFzIFByb3BlcnRpZXNPZjx0aGlzPjtcblx0XHRjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldEFsbFByb3BlcnRpZXMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLmdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7XG5cdFx0XHRpZiAodHlwZW9mIHByb3BlcnR5ICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0c2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIGtleW9mIFByb3BlcnRpZXNPZjx0aGlzPl0gPSBwcm9wZXJ0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGlvbk5hbWUgaW4gYWdncmVnYXRpb25zKSB7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpKSB7XG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBbXTtcblx0XHRcdFx0Zm9yIChjb25zdCBtYW5hZ2VkT2JqZWN0IG9mIGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRcdGlmIChtYW5hZ2VkT2JqZWN0LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRcdGNoaWxkcmVuQXJyYXkucHVzaChtYW5hZ2VkT2JqZWN0LmdldFByb3BlcnR5QmFnKCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGNoaWxkcmVuQXJyYXk7XG5cdFx0XHR9IGVsc2UgaWYgKGFnZ3JlZ2F0aW9uQ29udGVudCkge1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50LmlzQTxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5CdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHlcIikpIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWUgYXMga2V5b2YgUHJvcGVydGllc09mPHRoaXM+XSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5nZXRQcm9wZXJ0eUJhZygpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNldHRpbmdzW2FnZ3JlZ2F0aW9uTmFtZSBhcyBrZXlvZiBQcm9wZXJ0aWVzT2Y8dGhpcz5dID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNldHRpbmdzO1xuXHR9XG5cblx0c2VyaWFsaXplKG92ZXJyaWRlTm9kZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IGV2ZW50cyA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRBbGxFdmVudHMoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbnMgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0QWxsQWdncmVnYXRpb25zKCk7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYgeyBjaGlsZHJlbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSA9IHsgY2hpbGRyZW46IHt9IH07XG5cdFx0Zm9yIChjb25zdCBldmVudE5hbWUgaW4gZXZlbnRzKSB7XG5cdFx0XHRzZXR0aW5nc1tldmVudE5hbWVdID0gYFRISVMuX2ZpcmVFdmVudCgkZXZlbnQsICRjb250cm9sbGVyLCAnJHtldmVudE5hbWV9JylgO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKTtcblx0XHRcdGlmICh0eXBlb2YgcHJvcGVydHkgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRzZXR0aW5nc1twcm9wZXJ0eU5hbWVdID0gcHJvcGVydHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoY29uc3QgYWdncmVnYXRpb25OYW1lIGluIGFnZ3JlZ2F0aW9ucykge1xuXHRcdFx0Y29uc3QgYWdncmVnYXRpb25Db250ZW50ID0gdGhpcy5nZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUpO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoYWdncmVnYXRpb25Db250ZW50KSkge1xuXHRcdFx0XHRjb25zdCBjaGlsZHJlbkFycmF5ID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgbWFuYWdlZE9iamVjdCBvZiBhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0XHRpZiAobWFuYWdlZE9iamVjdC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0XHRjaGlsZHJlbkFycmF5LnB1c2gobWFuYWdlZE9iamVjdC5zZXJpYWxpemUoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNldHRpbmdzLmNoaWxkcmVuW2FnZ3JlZ2F0aW9uTmFtZV0gPSBjaGlsZHJlbkFycmF5O1xuXHRcdFx0fSBlbHNlIGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0aW9uQ29udGVudC5pc0E8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5PihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5XCIpKSB7XG5cdFx0XHRcdFx0c2V0dGluZ3MuY2hpbGRyZW5bYWdncmVnYXRpb25OYW1lXSA9IGFnZ3JlZ2F0aW9uQ29udGVudC5zZXJpYWxpemUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZXR0aW5nc1thZ2dyZWdhdGlvbk5hbWVdID0gYWdncmVnYXRpb25Db250ZW50LmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGpzeFhtbDxCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHk+KFxuXHRcdFx0dGhpcy5nZXRNZXRhZGF0YSgpLmdldENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgQ29udHJvbCxcblx0XHRcdHNldHRpbmdzIGFzIE5vbkNvbnRyb2xQcm9wZXJ0aWVzPEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eT4gJiB7XG5cdFx0XHRcdGtleT86IHN0cmluZztcblx0XHRcdFx0Y2hpbGRyZW4/OiBVSTVFbGVtZW50IHwgQ29udHJvbFByb3BlcnRpZXM8QnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5Pjtcblx0XHRcdH0sXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHR7fSxcblx0XHRcdG92ZXJyaWRlTm9kZU5hbWVcblx0XHQpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYmluZFByb3BlcnR5KG5hbWU6IHN0cmluZywgYmluZGluZ0luZm86IFByb3BlcnR5QmluZGluZ0luZm8pOiB0aGlzIHtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFkYXRhID0gdGhpcy5nZXRNZXRhZGF0YSgpLmdldFByb3BlcnR5KG5hbWUpO1xuXHRcdGlmIChwcm9wZXJ0eU1ldGFkYXRhPy5iaW5kYWJsZSA9PT0gZmFsc2UgJiYgcHJvcGVydHlNZXRhZGF0YS5ncm91cCA9PT0gXCJEYXRhXCIpIHtcblx0XHRcdCh0aGlzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtuYW1lXSA9IGJpbmRpbmdJbmZvO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5iaW5kUHJvcGVydHkobmFtZSwgYmluZGluZ0luZm8pO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUFRQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQSwyQkFBMkIsSUFBQUMsSUFBQSxHQUQvQ0MsY0FBYyxDQUFDLG9EQUFvRCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSwwQkFBQUMsV0FBQTtJQUFBLFNBQUFKLDRCQUFBO01B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
@@ -45,8 +45,12 @@ export default class BuildingBlockObjectProperty extends UI5Element {
45
45
 
46
46
  serialize(overrideNodeName?: string): string {
47
47
  const properties = this.getMetadata().getAllProperties();
48
+ const events = this.getMetadata().getAllEvents();
48
49
  const aggregations = this.getMetadata().getAllAggregations();
49
50
  const settings: Record<string, unknown> & { children: Record<string, unknown> } = { children: {} };
51
+ for (const eventName in events) {
52
+ settings[eventName] = `THIS._fireEvent($event, $controller, '${eventName}')`;
53
+ }
50
54
  for (const propertyName in properties) {
51
55
  const property = this.getProperty(propertyName);
52
56
  if (typeof property !== "function") {
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/controls/filterbar/FilterContainer", "sap/fe/macros/controls/filterbar/VisualFilterContainer", "sap/ui/core/Element", "sap/ui/mdc/FilterBar", "sap/ui/mdc/filterbar/aligned/FilterItemLayout", "./filterbar/utils/VisualFilterUtils"], function (Log, ClassSupport, FilterContainer, VisualFilterContainer, Element, MdcFilterBar, FilterItemLayout, VisualFilterUtils) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/helpers/PromiseKeeper", "sap/fe/macros/controls/filterbar/FilterContainer", "sap/fe/macros/controls/filterbar/VisualFilterContainer", "sap/ui/core/Element", "sap/ui/mdc/FilterBar", "sap/ui/mdc/filterbar/aligned/FilterItemLayout", "./filterbar/utils/VisualFilterUtils"], function (Log, ClassSupport, PromiseKeeper, FilterContainer, VisualFilterContainer, Element, MdcFilterBar, FilterItemLayout, VisualFilterUtils) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
@@ -40,11 +40,47 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
40
40
  _inheritsLoose(FilterBar, _MdcFilterBar);
41
41
  var _proto = FilterBar.prototype;
42
42
  _proto._initializeStatus = async function _initializeStatus() {
43
- await this.waitForInitialization();
43
+ // Promise keeper to hold the process.
44
+ this._initializedPromiseKeeper = new PromiseKeeper();
45
+
46
+ // Awaits
47
+ await this.initializedWithMetadata();
48
+ await this.waitForModelToBeSet();
49
+ this._initializedPromiseKeeper.resolve();
44
50
  this._isInitialized = true;
45
51
  };
52
+ _proto.waitForModelToBeSet = async function waitForModelToBeSet() {
53
+ if (this.getModel()) {
54
+ return;
55
+ }
56
+ // wait for deafault model to be set.
57
+ const modelIsSetPromiseKeeper = new PromiseKeeper();
58
+ const fnCheckAndReset = e => {
59
+ const filterbar = e.getSource();
60
+ if (filterbar.getModel()) {
61
+ // default model is set.
62
+ filterbar.detachModelContextChange(fnCheckAndReset);
63
+ modelIsSetPromiseKeeper?.resolve();
64
+ }
65
+ };
66
+ this.attachModelContextChange(fnCheckAndReset);
67
+ return modelIsSetPromiseKeeper.promise;
68
+ }
69
+
70
+ /**
71
+ * Checks if the FilterBar is fully initialized.
72
+ * @returns True if the FilterBar is initialized, false otherwise.
73
+ */;
46
74
  _proto.isInitialized = function isInitialized() {
47
75
  return !!this._isInitialized;
76
+ }
77
+
78
+ /**
79
+ * Async equivalent of 'isInitialized' to perform filter bar interactions after the filter bar is ready.
80
+ * @returns Promise that resolves when the filter bar is initialized.
81
+ */;
82
+ _proto.whenInitialized = async function whenInitialized() {
83
+ return this._initializedPromiseKeeper?.promise;
48
84
  };
49
85
  _proto.setToggleControl = function setToggleControl(vToggle) {
50
86
  if (typeof vToggle === "string") {
@@ -230,4 +266,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
230
266
  }), _class2)) || _class);
231
267
  return FilterBar;
232
268
  }, false);
233
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWSVNVQUxfRklMVEVSX0NPTlRBSU5FUiIsIkZJTFRFUl9DT05UQUlORVIiLCJGaWx0ZXJCYXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIl9kZWMzIiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWRjRmlsdGVyQmFyIiwiaWRPclByb3BzIiwic2V0dGluZ3MiLCJfdGhpcyIsInByb3BlcnR5SW5mbyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2lzSW5pdGlhbGl6ZWQiLCJfaW5pdGlhbGl6ZVN0YXR1cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiaXNJbml0aWFsaXplZCIsInNldFRvZ2dsZUNvbnRyb2wiLCJ2VG9nZ2xlIiwiX29TZWdtZW50ZWRCdXR0b24iLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0b2dnbGVDb250cm9sIiwiZGV0YWNoRXZlbnQiLCJfdG9nZ2xlTGF5b3V0IiwiYmluZCIsImF0dGFjaEV2ZW50Iiwic2V0QXNzb2NpYXRpb24iLCJ0aGVuIiwidGFyZ2V0S2V5IiwiZ2V0U2VsZWN0ZWRLZXkiLCJfb0ZpbHRlckJhckxheW91dCIsImlzQSIsIl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0IiwiVmlzdWFsRmlsdGVyQ29udGFpbmVyIiwic2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsIm9DdXJyZW50RmlsdGVyQmFyTGF5b3V0Iiwib0ZpbHRlckl0ZW1zIiwiZ2V0RmlsdGVySXRlbXMiLCJhRmlsdGVyRmllbGRzIiwiZ2V0QWxsRmlsdGVyRmllbGRzIiwiYVNvcnRlZEZpbHRlckZpZWxkcyIsImdldFNvcnRlZEZpbHRlckZpZWxkcyIsImFCdXR0b25zIiwiZ2V0QWxsQnV0dG9ucyIsImFWaXN1YWxGaWx0ZXJGaWVsZHMiLCJnZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMiLCJzZXRBbGxGaWx0ZXJGaWVsZHMiLCJmb3JFYWNoIiwib0ZpbHRlckZpZWxkIiwiaUluZGV4IiwicmVtb3ZlRmlsdGVyRmllbGQiLCJpbnNlcnRGaWx0ZXJGaWVsZCIsIm9CdXR0b24iLCJyZW1vdmVCdXR0b24iLCJhZGRCdXR0b24iLCJzZXRBZ2dyZWdhdGlvbiIsImludmFsaWRhdGUiLCJjYXRjaCIsImVycm9yIiwiTG9nIiwiYUZpbHRlckl0ZW1zIiwiYUZpbHRlcklkcyIsIm9GaWx0ZXJJdGVtIiwicHVzaCIsImdldElkIiwic29ydCIsImFGaXJzdEl0ZW0iLCJhU2Vjb25kSXRlbSIsInNGaXJzdEl0ZW1WRklkIiwic1NlY29uZEl0ZW1WRklkIiwiZ2V0Q29udGVudCIsIm9Jbm5lckNvbnRyb2wiLCJpbmRleE9mIiwiX2NyZWF0ZUlubmVyTGF5b3V0IiwiRmlsdGVyQ29udGFpbmVyIiwiX2NMYXlvdXRJdGVtIiwiRmlsdGVySXRlbUxheW91dCIsImdldElubmVyIiwiYWRkU3R5bGVDbGFzcyIsIl9hZGRCdXR0b25zIiwib0lubmVyTGF5b3V0Iiwib0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiaW5pdGlhbExheW91dCIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwiZXhpdCIsImdldFNlZ21lbnRlZEJ1dHRvbiIsImVuYWJsZVJlcXVlc3RzIiwiZW5hYmxlIiwiZGlmZlN0YXRlIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsIl9lbmFibGVWaXN1YWxGaWx0ZXJDaGFydEJpbmRpbmdzIiwiX2dldEZpbHRlckxheW91dEJ5VHlwZSIsImxheW91dENsYXNzTmFtZSIsInJldEZpbHRlckxheW91dCIsInVuZGVmaW5lZCIsInZpc3VhbEZpbHRlckxheW91dCIsImVuYWJsZUNoYXJ0QmluZGluZyIsImNvbXBhY3RGaWx0ZXJMYXlvdXQiLCJ2aXN1YWxGaWx0ZXJzIiwiVmlzdWFsRmlsdGVyVXRpbHMiLCJNZGNGaWx0ZXJCYXIiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckJhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBGaWx0ZXJDb250YWluZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvZmlsdGVyYmFyL0ZpbHRlckNvbnRhaW5lclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvVmlzdWFsRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBWaXN1YWxGaWx0ZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdmlzdWFsZmlsdGVycy9WaXN1YWxGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b24gZnJvbSBcInNhcC9tL1NlZ21lbnRlZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBFbGVtZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgJEZpbHRlckJhclNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgTWRjRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB0eXBlIElGaWx0ZXJDb250YWluZXIgZnJvbSBcInNhcC91aS9tZGMvZmlsdGVyYmFyL0lGaWx0ZXJDb250YWluZXJcIjtcbmltcG9ydCBGaWx0ZXJJdGVtTGF5b3V0IGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9hbGlnbmVkL0ZpbHRlckl0ZW1MYXlvdXRcIjtcbmltcG9ydCB7IHR5cGUgRXh0ZXJuYWxTdGF0ZVR5cGUgfSBmcm9tIFwiLi4vdmFsdWVoZWxwL1ZhbHVlSGVscERlbGVnYXRlXCI7XG5pbXBvcnQgVmlzdWFsRmlsdGVyVXRpbHMgZnJvbSBcIi4vZmlsdGVyYmFyL3V0aWxzL1Zpc3VhbEZpbHRlclV0aWxzXCI7XG5cbmNvbnN0IFZJU1VBTF9GSUxURVJfQ09OVEFJTkVSID0gXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIixcblx0RklMVEVSX0NPTlRBSU5FUiA9IFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuRmlsdGVyQ29udGFpbmVyXCI7XG50eXBlIENvbnRhaW5lclR5cGUgPSB0eXBlb2YgVklTVUFMX0ZJTFRFUl9DT05UQUlORVIgfCB0eXBlb2YgRklMVEVSX0NPTlRBSU5FUjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWx0ZXJCYXJcIilcbmNsYXNzIEZpbHRlckJhciBleHRlbmRzIE1kY0ZpbHRlckJhciB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJjb21wYWN0XCIgfSlcblx0aW5pdGlhbExheW91dCE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbCB3aGljaCBhbGxvd3MgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIHZpc3VhbCBhbmQgbm9ybWFsIGZpbHRlciBsYXlvdXRzXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLm0uU2VnbWVudGVkQnV0dG9uXCIsXG5cdFx0bXVsdGlwbGU6IGZhbHNlXG5cdH0pXG5cdHRvZ2dsZUNvbnRyb2whOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IoaWRPclByb3BzPzogUHJvcGVydGllc09mPEZpbHRlckJhcj4gJiAkRmlsdGVyQmFyU2V0dGluZ3MsIHNldHRpbmdzPzogUHJvcGVydGllc09mPEZpbHRlckJhcj4gJiAkRmlsdGVyQmFyU2V0dGluZ3MpIHtcblx0XHRkZWxldGUgaWRPclByb3BzPy5wcm9wZXJ0eUluZm87XG5cdFx0ZGVsZXRlIHNldHRpbmdzPy5wcm9wZXJ0eUluZm87XG5cdFx0c3VwZXIoaWRPclByb3BzIGFzIHVua25vd24gYXMgc3RyaW5nLCBzZXR0aW5ncyk7XG5cdFx0dGhpcy5faW5pdGlhbGl6ZVN0YXR1cygpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBfaW5pdGlhbGl6ZVN0YXR1cygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLndhaXRGb3JJbml0aWFsaXphdGlvbigpO1xuXHRcdHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHR9XG5cblx0aXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLl9pc0luaXRpYWxpemVkO1xuXHR9XG5cblx0cHJpdmF0ZSBfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgX29TZWdtZW50ZWRCdXR0b24/OiBTZWdtZW50ZWRCdXR0b247XG5cblx0cHJpdmF0ZSBfb1NlY29uZGFyeUZpbHRlckJhckxheW91dD86IElGaWx0ZXJDb250YWluZXI7XG5cblx0cHJpdmF0ZSBfb0ZpbHRlckJhckxheW91dCE6IElGaWx0ZXJDb250YWluZXI7XG5cblx0cHJpdmF0ZSBfY0xheW91dEl0ZW06IHR5cGVvZiBGaWx0ZXJJdGVtTGF5b3V0O1xuXG5cdHNldFRvZ2dsZUNvbnRyb2wodlRvZ2dsZTogc3RyaW5nIHwgU2VnbWVudGVkQnV0dG9uKTogdm9pZCB7XG5cdFx0aWYgKHR5cGVvZiB2VG9nZ2xlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0aGlzLl9vU2VnbWVudGVkQnV0dG9uID0gRWxlbWVudC5nZXRFbGVtZW50QnlJZCh2VG9nZ2xlKSBhcyBTZWdtZW50ZWRCdXR0b247XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24gPSB2VG9nZ2xlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnRvZ2dsZUNvbnRyb2wgJiYgdGhpcy5fb1NlZ21lbnRlZEJ1dHRvbikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbi5kZXRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB0aGlzLl90b2dnbGVMYXlvdXQuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9vU2VnbWVudGVkQnV0dG9uKSB7XG5cdFx0XHR0aGlzLl9vU2VnbWVudGVkQnV0dG9uLmF0dGFjaEV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIHRoaXMuX3RvZ2dsZUxheW91dC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cdFx0dGhpcy5zZXRBc3NvY2lhdGlvbihcInRvZ2dsZUNvbnRyb2xcIiwgdlRvZ2dsZSwgdHJ1ZSk7XG5cdH1cblxuXHRfdG9nZ2xlTGF5b3V0KCk6IHZvaWQge1xuXHRcdC8vIFNpbmNlIHByaW1hcnkgbGF5b3V0IGlzIGFsd2F5cyBjb21wYWN0XG5cdFx0Ly8gaGVuY2Ugc2V0IHRoZSBzZWNvbmRhcnkgbGF5b3V0IGFzIHZpc3VhbCBmaWx0ZXIgb25seSBmb3IgdGhlIGZpcnN0IHRpbWUgb25seVxuXHRcdHRoaXMud2FpdEZvckluaXRpYWxpemF0aW9uKClcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0S2V5ID0gdGhpcy5fb1NlZ21lbnRlZEJ1dHRvbj8uZ2V0U2VsZWN0ZWRLZXkoKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCh0YXJnZXRLZXkgPT09IFwidmlzdWFsXCIgJiZcblx0XHRcdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKSB8fFxuXHRcdFx0XHRcdCh0YXJnZXRLZXkgPT09IFwiY29tcGFjdFwiICYmXG5cdFx0XHRcdFx0XHQhdGhpcy5fb0ZpbHRlckJhckxheW91dD8uaXNBPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIikpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIXRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQpIHtcblx0XHRcdFx0XHR0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0ID0gbmV3IFZpc3VhbEZpbHRlckNvbnRhaW5lcigpIGFzIHVua25vd24gYXMgSUZpbHRlckNvbnRhaW5lcjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGRvIG5vdCBzaG93IEFkYXB0IEZpbHRlcnMgQnV0dG9uIGZvciB2aXN1YWwgbGF5b3V0XG5cdFx0XHRcdGlmICh0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0Py5pc0E8VmlzdWFsRmlsdGVyQ29udGFpbmVyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlckNvbnRhaW5lclwiKSkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbihmYWxzZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTaG93QWRhcHRGaWx0ZXJzQnV0dG9uKHRydWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gZ2V0IGFsbCBmaWx0ZXIgZmllbGRzIGFuZCBidXR0b24gb2YgdGhlIGN1cnJlbnQgbGF5b3V0XG5cdFx0XHRcdGNvbnN0IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0ID0gdGhpcy5fb0ZpbHRlckJhckxheW91dDtcblx0XHRcdFx0Y29uc3Qgb0ZpbHRlckl0ZW1zID0gdGhpcy5nZXRGaWx0ZXJJdGVtcygpO1xuXHRcdFx0XHRjb25zdCBhRmlsdGVyRmllbGRzID0gb0N1cnJlbnRGaWx0ZXJCYXJMYXlvdXQuZ2V0QWxsRmlsdGVyRmllbGRzKCk7XG5cdFx0XHRcdGNvbnN0IGFTb3J0ZWRGaWx0ZXJGaWVsZHMgPSB0aGlzLmdldFNvcnRlZEZpbHRlckZpZWxkcyhvRmlsdGVySXRlbXMsIGFGaWx0ZXJGaWVsZHMpO1xuXHRcdFx0XHRjb25zdCBhQnV0dG9ucyA9IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbEJ1dHRvbnMoKTtcblx0XHRcdFx0Y29uc3QgYVZpc3VhbEZpbHRlckZpZWxkcyA9XG5cdFx0XHRcdFx0b0N1cnJlbnRGaWx0ZXJCYXJMYXlvdXQuZ2V0QWxsVmlzdWFsRmlsdGVyRmllbGRzICYmXG5cdFx0XHRcdFx0KG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbFZpc3VhbEZpbHRlckZpZWxkcygpIGFzIFJlY29yZDxzdHJpbmcsIFZpc3VhbEZpbHRlcj4gfCB1bmRlZmluZWQpO1xuXHRcdFx0XHRpZiAodGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dD8uaXNBPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIikpIHtcblx0XHRcdFx0XHR0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0LnNldEFsbEZpbHRlckZpZWxkcyhhU29ydGVkRmlsdGVyRmllbGRzLCBhVmlzdWFsRmlsdGVyRmllbGRzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyB1c2Ugc2Vjb25kYXJ5IGZpbHRlciBiYXIgbGF5b3V0IGFzIG5ldyBsYXlvdXRcblx0XHRcdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dCA9IHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQhO1xuXG5cdFx0XHRcdC8vIGluc2VydCBhbGwgZmlsdGVyIGZpZWxkcyBmcm9tIGN1cnJlbnQgbGF5b3V0IHRvIG5ldyBsYXlvdXRcblx0XHRcdFx0YUZpbHRlckZpZWxkcy5mb3JFYWNoKChvRmlsdGVyRmllbGQ6IEZpbHRlckZpZWxkLCBpSW5kZXg6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LnJlbW92ZUZpbHRlckZpZWxkKG9GaWx0ZXJGaWVsZCk7XG5cdFx0XHRcdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dC5pbnNlcnRGaWx0ZXJGaWVsZChvRmlsdGVyRmllbGQsIGlJbmRleCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyBpbnNlcnQgYWxsIGJ1dHRvbnMgZnJvbSB0aGUgY3VycmVudCBsYXlvdXQgdG8gdGhlIG5ldyBsYXlvdXRcblx0XHRcdFx0YUJ1dHRvbnMuZm9yRWFjaCgob0J1dHRvbjogQnV0dG9uKSA9PiB7XG5cdFx0XHRcdFx0b0N1cnJlbnRGaWx0ZXJCYXJMYXlvdXQucmVtb3ZlQnV0dG9uKG9CdXR0b24pO1xuXHRcdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuYWRkQnV0dG9uKG9CdXR0b24pO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBzZXQgdGhlIGN1cnJlbnQgZmlsdGVyIGJhciBsYXlvdXQgdG8gdGhlIHNlY29uZGFyeSBvbmVcblx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dCA9IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0O1xuXG5cdFx0XHRcdC8vIHVwZGF0ZSB0aGUgbGF5b3V0IGFnZ3JlZ2F0aW9uIG9mIHRoZSBmaWx0ZXIgYmFyIGFuZCByZXJlbmRlciB0aGUgc2FtZS5cblx0XHRcdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcImxheW91dFwiLCB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LCB0cnVlKTtcblx0XHRcdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dC5pbnZhbGlkYXRlKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGdldFNvcnRlZEZpbHRlckZpZWxkcyhhRmlsdGVySXRlbXM6IEZpbHRlckZpZWxkW10sIGFGaWx0ZXJGaWVsZHM6IEZpbHRlckZpZWxkW10pOiBGaWx0ZXJGaWVsZFtdIHtcblx0XHRjb25zdCBhRmlsdGVySWRzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGFGaWx0ZXJJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChvRmlsdGVySXRlbTogRmlsdGVyRmllbGQpIHtcblx0XHRcdGFGaWx0ZXJJZHMucHVzaChvRmlsdGVySXRlbS5nZXRJZCgpKTtcblx0XHR9KTtcblx0XHRhRmlsdGVyRmllbGRzLnNvcnQoZnVuY3Rpb24gKGFGaXJzdEl0ZW06IEZpbHRlckZpZWxkLCBhU2Vjb25kSXRlbTogRmlsdGVyRmllbGQpIHtcblx0XHRcdGxldCBzRmlyc3RJdGVtVkZJZCwgc1NlY29uZEl0ZW1WRklkO1xuXHRcdFx0KGFGaXJzdEl0ZW0uZ2V0Q29udGVudCgpIGFzIHVua25vd24gYXMgQ29udHJvbFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChvSW5uZXJDb250cm9sOiBDb250cm9sKSB7XG5cdFx0XHRcdGlmIChvSW5uZXJDb250cm9sLmlzQTxGaWx0ZXJGaWVsZD4oXCJzYXAudWkubWRjLkZpbHRlckZpZWxkXCIpKSB7XG5cdFx0XHRcdFx0c0ZpcnN0SXRlbVZGSWQgPSBvSW5uZXJDb250cm9sLmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0KGFTZWNvbmRJdGVtLmdldENvbnRlbnQoKSBhcyB1bmtub3duIGFzIENvbnRyb2xbXSkuZm9yRWFjaChmdW5jdGlvbiAob0lubmVyQ29udHJvbDogQ29udHJvbCkge1xuXHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0E8RmlsdGVyRmllbGQ+KFwic2FwLnVpLm1kYy5GaWx0ZXJGaWVsZFwiKSkge1xuXHRcdFx0XHRcdHNTZWNvbmRJdGVtVkZJZCA9IG9Jbm5lckNvbnRyb2wuZ2V0SWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYUZpbHRlcklkcy5pbmRleE9mKHNGaXJzdEl0ZW1WRklkID8/IFwiXCIpIC0gYUZpbHRlcklkcy5pbmRleE9mKHNTZWNvbmRJdGVtVkZJZCA/PyBcIlwiKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gYUZpbHRlckZpZWxkcztcblx0fVxuXG5cdF9jcmVhdGVJbm5lckxheW91dCgpOiB2b2lkIHtcblx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0ID0gbmV3IEZpbHRlckNvbnRhaW5lcigpO1xuXHRcdHRoaXMuX2NMYXlvdXRJdGVtID0gRmlsdGVySXRlbUxheW91dDtcblx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmdldElubmVyKCkuYWRkU3R5bGVDbGFzcyhcInNhcFVpTWRjRmlsdGVyQmFyQmFzZUFGTGF5b3V0XCIpO1xuXHRcdHRoaXMuX2FkZEJ1dHRvbnMoKTtcblxuXHRcdC8vIFRPRE86IENoZWNrIHdpdGggTURDIGlmIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBsb2FkIHZpc3VhbCBmaWx0ZXIgb24gdGhlIGJhc2lzIG9mIGNvbnRyb2wgcHJvcGVydHlcblx0XHQvLyBfY3JlYXRlSW5uZXJMYXlvdXQgaXMgY2FsbGVkIG9uIEluaXQgYnkgdGhlIGZpbHRlciBiYXIgYmFzZS5cblx0XHQvLyBUaGlzIG1lYW4gdGhhdCB3ZSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbnRyb2wgcHJvcGVydGllcyB5ZXRcblx0XHQvLyBhbmQgaGVuY2Ugd2UgY2Fubm90IGRlY2lkZSBvbiB0aGUgYmFzaXMgb2YgY29udHJvbCBwcm9wZXJ0aWVzIHdoZXRoZXIgaW5pdGlhbCBsYXlvdXQgc2hvdWxkIGJlIGNvbXBhY3Qgb3IgdmlzdWFsXG5cdFx0Ly8gQXMgYSByZXN1bHQgd2UgaGF2ZSB0byBkbyB0aGlzIHdvcmthcm91bmQgdG8gYWx3YXlzIGxvYWQgdGhlIGNvbXBhY3QgbGF5b3V0IGJ5IGRlZmF1bHRcblx0XHQvLyBBbmQgdG9vZ2xlIHRoZSBzYW1lIGluIGNhc2UgdGhlIGluaXRpYWxMYXlvdXQgd2FzIHN1cHBvc2VkIHRvIGJlIHZpc3VhbCBmaWx0ZXJzLlxuXHRcdGNvbnN0IG9Jbm5lckxheW91dCA9IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuZ2V0SW5uZXIoKTtcblx0XHRjb25zdCBvRmlsdGVyQ29udGFpbmVySW5uZXJMYXlvdXRFdmVudERlbGVnYXRlID0ge1xuXHRcdFx0b25CZWZvcmVSZW5kZXJpbmc6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuaW5pdGlhbExheW91dCA9PT0gXCJ2aXN1YWxcIikge1xuXHRcdFx0XHRcdHRoaXMuX3RvZ2dsZUxheW91dCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9Jbm5lckxheW91dC5yZW1vdmVFdmVudERlbGVnYXRlKG9GaWx0ZXJDb250YWluZXJJbm5lckxheW91dEV2ZW50RGVsZWdhdGUpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0b0lubmVyTGF5b3V0LmFkZEV2ZW50RGVsZWdhdGUob0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSk7XG5cblx0XHR0aGlzLnNldEFnZ3JlZ2F0aW9uKFwibGF5b3V0XCIsIHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQsIHRydWUpO1xuXHR9XG5cblx0ZXhpdCgpOiB2b2lkIHtcblx0XHRzdXBlci5leGl0KCk7XG5cdFx0Ly8gU29tZXRpbWVzIHVwb24gZXh0ZXJuYWwgbmF2aWdhdGlvbiB0aGlzLl9TZWdtZW50ZWRCdXR0b24gaXMgYWxyZWFkeSBkZXN0cm95ZWRcblx0XHQvLyBzbyBjaGVjayBpZiBpdCBleGlzdHMgYW5kIHRoZW4gb25seSByZW1vdmUgc3R1ZmZcblx0XHRpZiAodGhpcy5fb1NlZ21lbnRlZEJ1dHRvbikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbi5kZXRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB0aGlzLl90b2dnbGVMYXlvdXQpO1xuXHRcdFx0ZGVsZXRlIHRoaXMuX29TZWdtZW50ZWRCdXR0b247XG5cdFx0fVxuXHR9XG5cblx0Z2V0U2VnbWVudGVkQnV0dG9uKCk6IFNlZ21lbnRlZEJ1dHRvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuX29TZWdtZW50ZWRCdXR0b247XG5cdH1cblxuXHQvKipcblx0ICogRW5hYmxlIG9yIGRpc2FibGUgcmVxdWVzdHMgdGhhdCBhcmUgaW5pdGlhdGVkIGJ5IHRoZSBGaWx0ZXJCYXIuXG5cdCAqXG5cdCAqIFRvIGJlIHVzZWQgdG8gc3VzcGVuZCBvciByZXN1bWUgcmVxdWVzdHModGFibGUgb3IgdmlzdWFsIGZpbHRlcnMpIHdoZW4gdGhlIGZpbHRlciBiYXIgaXMgYmVpbmcgbW9kaWZpZWQgb3Igd2hlbiB0aGUgdXNlciBpcyBwcm9ncmFtbWF0aWNhbGx5IGludGVyYWN0aW5nIHdpdGggdGhlIGZpbHRlciBjb250cm9scy5cblx0ICogVGhpcyBtZXRob2QgaXMgYWxzbyB1c2VkIHRvIGNvbnRyb2wgd2hldGhlciB0aGUgdmlzdWFsIGZpbHRlciBjaGFydCBiaW5kaW5nIHNob3VsZCBiZSByZXN1bWVkL3N1c3BlbmRlZCBiYXNlZCBvbiB0aGUgZGlmZiBzdGF0ZSwgYW5kIHJlc3VtZWQgYWZ0ZXIgY29uZGl0b24gbW9kZWwgdXBkYXRlLlxuXHQgKiBAcGFyYW0gZW5hYmxlIEVuYWJsZSBvciBkaXNhYmxlIHJlcXVlc3RzXG5cdCAqIEBwYXJhbSBkaWZmU3RhdGUgSWYgdGhlcmUgaXMgYSBkaWZmZXJuY2UgaW4gdGhlIGV4dGVybmFsIHN0YXRlIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBmb3IgdmlzdWFsIGZpbHRlciBpbi1wYXJhbWV0ZXJzXG5cdCAqL1xuXHRlbmFibGVSZXF1ZXN0cyhlbmFibGU6IGJvb2xlYW4sIGRpZmZTdGF0ZT86IEV4dGVybmFsU3RhdGVUeXBlKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRTdXNwZW5kU2VsZWN0aW9uKCFlbmFibGUpO1xuXHRcdC8vIFdlIG5lZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHZpc3VhbCBmaWx0ZXIgY2hhcnQgYmluZGluZ3MgYmFzZWQgb24gZGlmZiBzdGF0ZS5cblx0XHR0aGlzLl9lbmFibGVWaXN1YWxGaWx0ZXJDaGFydEJpbmRpbmdzKGVuYWJsZSwgZGlmZlN0YXRlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpbHRlciBsYXlvdXQgYnkgaXRzIHR5cGUuXG5cdCAqIEBwYXJhbSBsYXlvdXRDbGFzc05hbWUgVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGZpbHRlciBsYXlvdXQgdG8gYmUgcmV0dXJuZWQuXG5cdCAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBmaWx0ZXIgbGF5b3V0IHRvIGJlIHJldHVybmVkLlxuXHQgKiBAdHlwZWRlZiB7SUZpbHRlckNvbnRhaW5lcn0gVCBUaGUgdHlwZSBvZiB0aGUgZmlsdGVyIGxheW91dCB0byBiZSByZXR1cm5lZFxuXHQgKiBAcmV0dXJucyBDb3JyZXNwb25kaW5nIGZpbHRlciBsYXlvdXQgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuXHQgKi9cblx0X2dldEZpbHRlckxheW91dEJ5VHlwZTxUIGV4dGVuZHMgSUZpbHRlckNvbnRhaW5lcj4obGF5b3V0Q2xhc3NOYW1lOiBDb250YWluZXJUeXBlKTogVCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmV0RmlsdGVyTGF5b3V0ID0gdGhpcy5fb0ZpbHRlckJhckxheW91dC5pc0E8VD4obGF5b3V0Q2xhc3NOYW1lKSA/IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQgOiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuICFyZXRGaWx0ZXJMYXlvdXQgJiYgdGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dD8uaXNBPFQ+KGxheW91dENsYXNzTmFtZSlcblx0XHRcdD8gdGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dFxuXHRcdFx0OiByZXRGaWx0ZXJMYXlvdXQ7XG5cdH1cblxuXHRfZW5hYmxlVmlzdWFsRmlsdGVyQ2hhcnRCaW5kaW5ncyhlbmFibGU6IGJvb2xlYW4sIGRpZmZTdGF0ZT86IEV4dGVybmFsU3RhdGVUeXBlKTogdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCB2aXN1YWxGaWx0ZXJMYXlvdXQgPSB0aGlzLl9nZXRGaWx0ZXJMYXlvdXRCeVR5cGU8VmlzdWFsRmlsdGVyQ29udGFpbmVyPihWSVNVQUxfRklMVEVSX0NPTlRBSU5FUik7XG5cdFx0aWYgKHZpc3VhbEZpbHRlckxheW91dCkge1xuXHRcdFx0dmlzdWFsRmlsdGVyTGF5b3V0LmVuYWJsZUNoYXJ0QmluZGluZyhlbmFibGUsIGRpZmZTdGF0ZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgaW5pdGlhbCBsYXlvdXQgaXMgY29tcGFjdCwgd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzdWFsIGZpbHRlciBsYXlvdXQoY29udGFpbmVyKSBhdmFpbGFibGUgeWV0IHVudGlsIHRoZSB1c2VyIHRvZ2dsZXMgdG8gdmlzdWFsIGZpbHRlciBsYXlvdXQuXG5cdFx0Ly8gU28gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgY29tcGFjdCBmaWx0ZXIgbGF5b3V0IGhhcyB2aXN1YWwgZmlsdGVycyBhbmQgZW5hYmxlL2Rpc2FibGUgdGhlIGNoYXJ0IGJpbmRpbmcgZm9yIHRob3NlIHZpc3VhbCBmaWx0ZXJzLlxuXHRcdGNvbnN0IGNvbXBhY3RGaWx0ZXJMYXlvdXQgPSB0aGlzLl9nZXRGaWx0ZXJMYXlvdXRCeVR5cGU8RmlsdGVyQ29udGFpbmVyPihGSUxURVJfQ09OVEFJTkVSKTtcblx0XHRpZiAoY29tcGFjdEZpbHRlckxheW91dCkge1xuXHRcdFx0Y29uc3QgdmlzdWFsRmlsdGVycyA9IGNvbXBhY3RGaWx0ZXJMYXlvdXQuZ2V0QWxsVmlzdWFsRmlsdGVyRmllbGRzKCk7XG5cdFx0XHRpZiAodmlzdWFsRmlsdGVycykge1xuXHRcdFx0XHRWaXN1YWxGaWx0ZXJVdGlscy5lbmFibGVDaGFydEJpbmRpbmcodmlzdWFsRmlsdGVycywgZW5hYmxlLCBkaWZmU3RhdGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuaW50ZXJmYWNlIEZpbHRlckJhciB7XG5cdF9hZGRCdXR0b25zKCk6IHZvaWQ7XG59XG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJCYXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7RUFrQkEsTUFBTUEsdUJBQXVCLEdBQUcsd0RBQXdEO0lBQ3ZGQyxnQkFBZ0IsR0FBRyxrREFBa0Q7RUFBQyxJQUlqRUMsU0FBUyxJQUFBQyxJQUFBLEdBRGRDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFBQyxLQUFBLEdBRWpEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsWUFBWSxFQUFFO0VBQVUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNckRDLFdBQVcsQ0FBQztJQUNaSCxJQUFJLEVBQUUsdUJBQXVCO0lBQzdCSSxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQVIsSUFBQSxDQUFBUyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGFBQUE7SUFHRixTQUFBWixVQUFZYSxTQUF3RCxFQUFFQyxRQUF1RCxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUM5SCxPQUFPRixTQUFTLEVBQUVHLFlBQVk7TUFDOUIsT0FBT0YsUUFBUSxFQUFFRSxZQUFZO01BQzdCRCxLQUFBLEdBQUFILGFBQUEsQ0FBQUssSUFBQSxPQUFNSixTQUFT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
269
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWSVNVQUxfRklMVEVSX0NPTlRBSU5FUiIsIkZJTFRFUl9DT05UQUlORVIiLCJGaWx0ZXJCYXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIl9kZWMzIiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWRjRmlsdGVyQmFyIiwiaWRPclByb3BzIiwic2V0dGluZ3MiLCJfdGhpcyIsInByb3BlcnR5SW5mbyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2lzSW5pdGlhbGl6ZWQiLCJfaW5pdGlhbGl6ZVN0YXR1cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX2luaXRpYWxpemVkUHJvbWlzZUtlZXBlciIsIlByb21pc2VLZWVwZXIiLCJpbml0aWFsaXplZFdpdGhNZXRhZGF0YSIsIndhaXRGb3JNb2RlbFRvQmVTZXQiLCJyZXNvbHZlIiwiZ2V0TW9kZWwiLCJtb2RlbElzU2V0UHJvbWlzZUtlZXBlciIsImZuQ2hlY2tBbmRSZXNldCIsImUiLCJmaWx0ZXJiYXIiLCJnZXRTb3VyY2UiLCJkZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJhdHRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJwcm9taXNlIiwiaXNJbml0aWFsaXplZCIsIndoZW5Jbml0aWFsaXplZCIsInNldFRvZ2dsZUNvbnRyb2wiLCJ2VG9nZ2xlIiwiX29TZWdtZW50ZWRCdXR0b24iLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0b2dnbGVDb250cm9sIiwiZGV0YWNoRXZlbnQiLCJfdG9nZ2xlTGF5b3V0IiwiYmluZCIsImF0dGFjaEV2ZW50Iiwic2V0QXNzb2NpYXRpb24iLCJ3YWl0Rm9ySW5pdGlhbGl6YXRpb24iLCJ0aGVuIiwidGFyZ2V0S2V5IiwiZ2V0U2VsZWN0ZWRLZXkiLCJfb0ZpbHRlckJhckxheW91dCIsImlzQSIsIl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0IiwiVmlzdWFsRmlsdGVyQ29udGFpbmVyIiwic2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsIm9DdXJyZW50RmlsdGVyQmFyTGF5b3V0Iiwib0ZpbHRlckl0ZW1zIiwiZ2V0RmlsdGVySXRlbXMiLCJhRmlsdGVyRmllbGRzIiwiZ2V0QWxsRmlsdGVyRmllbGRzIiwiYVNvcnRlZEZpbHRlckZpZWxkcyIsImdldFNvcnRlZEZpbHRlckZpZWxkcyIsImFCdXR0b25zIiwiZ2V0QWxsQnV0dG9ucyIsImFWaXN1YWxGaWx0ZXJGaWVsZHMiLCJnZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMiLCJzZXRBbGxGaWx0ZXJGaWVsZHMiLCJmb3JFYWNoIiwib0ZpbHRlckZpZWxkIiwiaUluZGV4IiwicmVtb3ZlRmlsdGVyRmllbGQiLCJpbnNlcnRGaWx0ZXJGaWVsZCIsIm9CdXR0b24iLCJyZW1vdmVCdXR0b24iLCJhZGRCdXR0b24iLCJzZXRBZ2dyZWdhdGlvbiIsImludmFsaWRhdGUiLCJjYXRjaCIsImVycm9yIiwiTG9nIiwiYUZpbHRlckl0ZW1zIiwiYUZpbHRlcklkcyIsIm9GaWx0ZXJJdGVtIiwicHVzaCIsImdldElkIiwic29ydCIsImFGaXJzdEl0ZW0iLCJhU2Vjb25kSXRlbSIsInNGaXJzdEl0ZW1WRklkIiwic1NlY29uZEl0ZW1WRklkIiwiZ2V0Q29udGVudCIsIm9Jbm5lckNvbnRyb2wiLCJpbmRleE9mIiwiX2NyZWF0ZUlubmVyTGF5b3V0IiwiRmlsdGVyQ29udGFpbmVyIiwiX2NMYXlvdXRJdGVtIiwiRmlsdGVySXRlbUxheW91dCIsImdldElubmVyIiwiYWRkU3R5bGVDbGFzcyIsIl9hZGRCdXR0b25zIiwib0lubmVyTGF5b3V0Iiwib0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiaW5pdGlhbExheW91dCIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwiZXhpdCIsImdldFNlZ21lbnRlZEJ1dHRvbiIsImVuYWJsZVJlcXVlc3RzIiwiZW5hYmxlIiwiZGlmZlN0YXRlIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsIl9lbmFibGVWaXN1YWxGaWx0ZXJDaGFydEJpbmRpbmdzIiwiX2dldEZpbHRlckxheW91dEJ5VHlwZSIsImxheW91dENsYXNzTmFtZSIsInJldEZpbHRlckxheW91dCIsInVuZGVmaW5lZCIsInZpc3VhbEZpbHRlckxheW91dCIsImVuYWJsZUNoYXJ0QmluZGluZyIsImNvbXBhY3RGaWx0ZXJMYXlvdXQiLCJ2aXN1YWxGaWx0ZXJzIiwiVmlzdWFsRmlsdGVyVXRpbHMiLCJNZGNGaWx0ZXJCYXIiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckJhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCBGaWx0ZXJDb250YWluZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvZmlsdGVyYmFyL0ZpbHRlckNvbnRhaW5lclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvVmlzdWFsRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBWaXN1YWxGaWx0ZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdmlzdWFsZmlsdGVycy9WaXN1YWxGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b24gZnJvbSBcInNhcC9tL1NlZ21lbnRlZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyBNYW5hZ2VkT2JqZWN0JE1vZGVsQ29udGV4dENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRGaWx0ZXJCYXJTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IE1kY0ZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlckZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckZpZWxkXCI7XG5pbXBvcnQgdHlwZSBJRmlsdGVyQ29udGFpbmVyIGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9JRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgRmlsdGVySXRlbUxheW91dCBmcm9tIFwic2FwL3VpL21kYy9maWx0ZXJiYXIvYWxpZ25lZC9GaWx0ZXJJdGVtTGF5b3V0XCI7XG5pbXBvcnQgeyB0eXBlIEV4dGVybmFsU3RhdGVUeXBlIH0gZnJvbSBcIi4uL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlclV0aWxzIGZyb20gXCIuL2ZpbHRlcmJhci91dGlscy9WaXN1YWxGaWx0ZXJVdGlsc1wiO1xuXG5jb25zdCBWSVNVQUxfRklMVEVSX0NPTlRBSU5FUiA9IFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIsXG5cdEZJTFRFUl9DT05UQUlORVIgPSBcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLkZpbHRlckNvbnRhaW5lclwiO1xudHlwZSBDb250YWluZXJUeXBlID0gdHlwZW9mIFZJU1VBTF9GSUxURVJfQ09OVEFJTkVSIHwgdHlwZW9mIEZJTFRFUl9DT05UQUlORVI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpXG5jbGFzcyBGaWx0ZXJCYXIgZXh0ZW5kcyBNZGNGaWx0ZXJCYXIge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IFwiY29tcGFjdFwiIH0pXG5cdGluaXRpYWxMYXlvdXQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2wgd2hpY2ggYWxsb3dzIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiB2aXN1YWwgYW5kIG5vcm1hbCBmaWx0ZXIgbGF5b3V0c1xuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5tLlNlZ21lbnRlZEJ1dHRvblwiLFxuXHRcdG11bHRpcGxlOiBmYWxzZVxuXHR9KVxuXHR0b2dnbGVDb250cm9sITogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JQcm9wcz86IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXI+ICYgJEZpbHRlckJhclNldHRpbmdzLCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXI+ICYgJEZpbHRlckJhclNldHRpbmdzKSB7XG5cdFx0ZGVsZXRlIGlkT3JQcm9wcz8ucHJvcGVydHlJbmZvO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncz8ucHJvcGVydHlJbmZvO1xuXHRcdHN1cGVyKGlkT3JQcm9wcyBhcyB1bmtub3duIGFzIHN0cmluZywgc2V0dGluZ3MpO1xuXHRcdHRoaXMuX2luaXRpYWxpemVTdGF0dXMoKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgX2luaXRpYWxpemVTdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gUHJvbWlzZSBrZWVwZXIgdG8gaG9sZCB0aGUgcHJvY2Vzcy5cblx0XHR0aGlzLl9pbml0aWFsaXplZFByb21pc2VLZWVwZXIgPSBuZXcgUHJvbWlzZUtlZXBlcjx2b2lkPigpO1xuXG5cdFx0Ly8gQXdhaXRzXG5cdFx0YXdhaXQgdGhpcy5pbml0aWFsaXplZFdpdGhNZXRhZGF0YSgpO1xuXHRcdGF3YWl0IHRoaXMud2FpdEZvck1vZGVsVG9CZVNldCgpO1xuXG5cdFx0dGhpcy5faW5pdGlhbGl6ZWRQcm9taXNlS2VlcGVyLnJlc29sdmUoKTtcblx0XHR0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgd2FpdEZvck1vZGVsVG9CZVNldCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAodGhpcy5nZXRNb2RlbCgpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdC8vIHdhaXQgZm9yIGRlYWZhdWx0IG1vZGVsIHRvIGJlIHNldC5cblx0XHRjb25zdCBtb2RlbElzU2V0UHJvbWlzZUtlZXBlciA9IG5ldyBQcm9taXNlS2VlcGVyPHZvaWQ+KCk7XG5cdFx0Y29uc3QgZm5DaGVja0FuZFJlc2V0ID0gKGU6IE1hbmFnZWRPYmplY3QkTW9kZWxDb250ZXh0Q2hhbmdlRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IGZpbHRlcmJhciA9IGUuZ2V0U291cmNlKCk7XG5cdFx0XHRpZiAoZmlsdGVyYmFyLmdldE1vZGVsKCkpIHtcblx0XHRcdFx0Ly8gZGVmYXVsdCBtb2RlbCBpcyBzZXQuXG5cdFx0XHRcdGZpbHRlcmJhci5kZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UoZm5DaGVja0FuZFJlc2V0KTtcblx0XHRcdFx0bW9kZWxJc1NldFByb21pc2VLZWVwZXI/LnJlc29sdmUoKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdHRoaXMuYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKGZuQ2hlY2tBbmRSZXNldCk7XG5cdFx0cmV0dXJuIG1vZGVsSXNTZXRQcm9taXNlS2VlcGVyLnByb21pc2U7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHRoZSBGaWx0ZXJCYXIgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIEZpbHRlckJhciBpcyBpbml0aWFsaXplZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0aXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLl9pc0luaXRpYWxpemVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFzeW5jIGVxdWl2YWxlbnQgb2YgJ2lzSW5pdGlhbGl6ZWQnIHRvIHBlcmZvcm0gZmlsdGVyIGJhciBpbnRlcmFjdGlvbnMgYWZ0ZXIgdGhlIGZpbHRlciBiYXIgaXMgcmVhZHkuXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWx0ZXIgYmFyIGlzIGluaXRpYWxpemVkLlxuXHQgKi9cblx0YXN5bmMgd2hlbkluaXRpYWxpemVkKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLl9pbml0aWFsaXplZFByb21pc2VLZWVwZXI/LnByb21pc2U7XG5cdH1cblxuXHRwcml2YXRlIF9pbml0aWFsaXplZFByb21pc2VLZWVwZXI/OiBQcm9taXNlS2VlcGVyPHZvaWQ+O1xuXG5cdHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuXHRwcml2YXRlIF9vU2VnbWVudGVkQnV0dG9uPzogU2VnbWVudGVkQnV0dG9uO1xuXG5cdHByaXZhdGUgX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/OiBJRmlsdGVyQ29udGFpbmVyO1xuXG5cdHByaXZhdGUgX29GaWx0ZXJCYXJMYXlvdXQhOiBJRmlsdGVyQ29udGFpbmVyO1xuXG5cdHByaXZhdGUgX2NMYXlvdXRJdGVtOiB0eXBlb2YgRmlsdGVySXRlbUxheW91dDtcblxuXHRzZXRUb2dnbGVDb250cm9sKHZUb2dnbGU6IHN0cmluZyB8IFNlZ21lbnRlZEJ1dHRvbik6IHZvaWQge1xuXHRcdGlmICh0eXBlb2YgdlRvZ2dsZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbiA9IEVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodlRvZ2dsZSkgYXMgU2VnbWVudGVkQnV0dG9uO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9vU2VnbWVudGVkQnV0dG9uID0gdlRvZ2dsZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50b2dnbGVDb250cm9sICYmIHRoaXMuX29TZWdtZW50ZWRCdXR0b24pIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24uZGV0YWNoRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgdGhpcy5fdG9nZ2xlTGF5b3V0LmJpbmQodGhpcykpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fb1NlZ21lbnRlZEJ1dHRvbikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbi5hdHRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB0aGlzLl90b2dnbGVMYXlvdXQuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHRcdHRoaXMuc2V0QXNzb2NpYXRpb24oXCJ0b2dnbGVDb250cm9sXCIsIHZUb2dnbGUsIHRydWUpO1xuXHR9XG5cblx0X3RvZ2dsZUxheW91dCgpOiB2b2lkIHtcblx0XHQvLyBTaW5jZSBwcmltYXJ5IGxheW91dCBpcyBhbHdheXMgY29tcGFjdFxuXHRcdC8vIGhlbmNlIHNldCB0aGUgc2Vjb25kYXJ5IGxheW91dCBhcyB2aXN1YWwgZmlsdGVyIG9ubHkgZm9yIHRoZSBmaXJzdCB0aW1lIG9ubHlcblx0XHR0aGlzLndhaXRGb3JJbml0aWFsaXphdGlvbigpXG5cdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEtleSA9IHRoaXMuX29TZWdtZW50ZWRCdXR0b24/LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQodGFyZ2V0S2V5ID09PSBcInZpc3VhbFwiICYmXG5cdFx0XHRcdFx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0Py5pc0E8VmlzdWFsRmlsdGVyQ29udGFpbmVyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlckNvbnRhaW5lclwiKSkgfHxcblx0XHRcdFx0XHQodGFyZ2V0S2V5ID09PSBcImNvbXBhY3RcIiAmJlxuXHRcdFx0XHRcdFx0IXRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCF0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0KSB7XG5cdFx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dCA9IG5ldyBWaXN1YWxGaWx0ZXJDb250YWluZXIoKSBhcyB1bmtub3duIGFzIElGaWx0ZXJDb250YWluZXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBkbyBub3Qgc2hvdyBBZGFwdCBGaWx0ZXJzIEJ1dHRvbiBmb3IgdmlzdWFsIGxheW91dFxuXHRcdFx0XHRpZiAodGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dD8uaXNBPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIikpIHtcblx0XHRcdFx0XHR0aGlzLnNldFNob3dBZGFwdEZpbHRlcnNCdXR0b24oZmFsc2UpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuc2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbih0cnVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGdldCBhbGwgZmlsdGVyIGZpZWxkcyBhbmQgYnV0dG9uIG9mIHRoZSBjdXJyZW50IGxheW91dFxuXHRcdFx0XHRjb25zdCBvQ3VycmVudEZpbHRlckJhckxheW91dCA9IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ7XG5cdFx0XHRcdGNvbnN0IG9GaWx0ZXJJdGVtcyA9IHRoaXMuZ2V0RmlsdGVySXRlbXMoKTtcblx0XHRcdFx0Y29uc3QgYUZpbHRlckZpZWxkcyA9IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbEZpbHRlckZpZWxkcygpO1xuXHRcdFx0XHRjb25zdCBhU29ydGVkRmlsdGVyRmllbGRzID0gdGhpcy5nZXRTb3J0ZWRGaWx0ZXJGaWVsZHMob0ZpbHRlckl0ZW1zLCBhRmlsdGVyRmllbGRzKTtcblx0XHRcdFx0Y29uc3QgYUJ1dHRvbnMgPSBvQ3VycmVudEZpbHRlckJhckxheW91dC5nZXRBbGxCdXR0b25zKCk7XG5cdFx0XHRcdGNvbnN0IGFWaXN1YWxGaWx0ZXJGaWVsZHMgPVxuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbFZpc3VhbEZpbHRlckZpZWxkcyAmJlxuXHRcdFx0XHRcdChvQ3VycmVudEZpbHRlckJhckxheW91dC5nZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMoKSBhcyBSZWNvcmQ8c3RyaW5nLCBWaXN1YWxGaWx0ZXI+IHwgdW5kZWZpbmVkKTtcblx0XHRcdFx0aWYgKHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKSB7XG5cdFx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dC5zZXRBbGxGaWx0ZXJGaWVsZHMoYVNvcnRlZEZpbHRlckZpZWxkcywgYVZpc3VhbEZpbHRlckZpZWxkcyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gdXNlIHNlY29uZGFyeSBmaWx0ZXIgYmFyIGxheW91dCBhcyBuZXcgbGF5b3V0XG5cdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQgPSB0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0ITtcblxuXHRcdFx0XHQvLyBpbnNlcnQgYWxsIGZpbHRlciBmaWVsZHMgZnJvbSBjdXJyZW50IGxheW91dCB0byBuZXcgbGF5b3V0XG5cdFx0XHRcdGFGaWx0ZXJGaWVsZHMuZm9yRWFjaCgob0ZpbHRlckZpZWxkOiBGaWx0ZXJGaWVsZCwgaUluZGV4OiBudW1iZXIpID0+IHtcblx0XHRcdFx0XHRvQ3VycmVudEZpbHRlckJhckxheW91dC5yZW1vdmVGaWx0ZXJGaWVsZChvRmlsdGVyRmllbGQpO1xuXHRcdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaW5zZXJ0RmlsdGVyRmllbGQob0ZpbHRlckZpZWxkLCBpSW5kZXgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gaW5zZXJ0IGFsbCBidXR0b25zIGZyb20gdGhlIGN1cnJlbnQgbGF5b3V0IHRvIHRoZSBuZXcgbGF5b3V0XG5cdFx0XHRcdGFCdXR0b25zLmZvckVhY2goKG9CdXR0b246IEJ1dHRvbikgPT4ge1xuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LnJlbW92ZUJ1dHRvbihvQnV0dG9uKTtcblx0XHRcdFx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmFkZEJ1dHRvbihvQnV0dG9uKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gc2V0IHRoZSBjdXJyZW50IGZpbHRlciBiYXIgbGF5b3V0IHRvIHRoZSBzZWNvbmRhcnkgb25lXG5cdFx0XHRcdHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQgPSBvQ3VycmVudEZpbHRlckJhckxheW91dDtcblxuXHRcdFx0XHQvLyB1cGRhdGUgdGhlIGxheW91dCBhZ2dyZWdhdGlvbiBvZiB0aGUgZmlsdGVyIGJhciBhbmQgcmVyZW5kZXIgdGhlIHNhbWUuXG5cdFx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJsYXlvdXRcIiwgdGhpcy5fb0ZpbHRlckJhckxheW91dCwgdHJ1ZSk7XG5cdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaW52YWxpZGF0ZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRnZXRTb3J0ZWRGaWx0ZXJGaWVsZHMoYUZpbHRlckl0ZW1zOiBGaWx0ZXJGaWVsZFtdLCBhRmlsdGVyRmllbGRzOiBGaWx0ZXJGaWVsZFtdKTogRmlsdGVyRmllbGRbXSB7XG5cdFx0Y29uc3QgYUZpbHRlcklkczogc3RyaW5nW10gPSBbXTtcblx0XHRhRmlsdGVySXRlbXMuZm9yRWFjaChmdW5jdGlvbiAob0ZpbHRlckl0ZW06IEZpbHRlckZpZWxkKSB7XG5cdFx0XHRhRmlsdGVySWRzLnB1c2gob0ZpbHRlckl0ZW0uZ2V0SWQoKSk7XG5cdFx0fSk7XG5cdFx0YUZpbHRlckZpZWxkcy5zb3J0KGZ1bmN0aW9uIChhRmlyc3RJdGVtOiBGaWx0ZXJGaWVsZCwgYVNlY29uZEl0ZW06IEZpbHRlckZpZWxkKSB7XG5cdFx0XHRsZXQgc0ZpcnN0SXRlbVZGSWQsIHNTZWNvbmRJdGVtVkZJZDtcblx0XHRcdChhRmlyc3RJdGVtLmdldENvbnRlbnQoKSBhcyB1bmtub3duIGFzIENvbnRyb2xbXSkuZm9yRWFjaChmdW5jdGlvbiAob0lubmVyQ29udHJvbDogQ29udHJvbCkge1xuXHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0E8RmlsdGVyRmllbGQ+KFwic2FwLnVpLm1kYy5GaWx0ZXJGaWVsZFwiKSkge1xuXHRcdFx0XHRcdHNGaXJzdEl0ZW1WRklkID0gb0lubmVyQ29udHJvbC5nZXRJZCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdChhU2Vjb25kSXRlbS5nZXRDb250ZW50KCkgYXMgdW5rbm93biBhcyBDb250cm9sW10pLmZvckVhY2goZnVuY3Rpb24gKG9Jbm5lckNvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRcdFx0aWYgKG9Jbm5lckNvbnRyb2wuaXNBPEZpbHRlckZpZWxkPihcInNhcC51aS5tZGMuRmlsdGVyRmllbGRcIikpIHtcblx0XHRcdFx0XHRzU2Vjb25kSXRlbVZGSWQgPSBvSW5uZXJDb250cm9sLmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGFGaWx0ZXJJZHMuaW5kZXhPZihzRmlyc3RJdGVtVkZJZCA/PyBcIlwiKSAtIGFGaWx0ZXJJZHMuaW5kZXhPZihzU2Vjb25kSXRlbVZGSWQgPz8gXCJcIik7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFGaWx0ZXJGaWVsZHM7XG5cdH1cblxuXHRfY3JlYXRlSW5uZXJMYXlvdXQoKTogdm9pZCB7XG5cdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dCA9IG5ldyBGaWx0ZXJDb250YWluZXIoKTtcblx0XHR0aGlzLl9jTGF5b3V0SXRlbSA9IEZpbHRlckl0ZW1MYXlvdXQ7XG5cdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dC5nZXRJbm5lcigpLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaU1kY0ZpbHRlckJhckJhc2VBRkxheW91dFwiKTtcblx0XHR0aGlzLl9hZGRCdXR0b25zKCk7XG5cblx0XHQvLyBUT0RPOiBDaGVjayB3aXRoIE1EQyBpZiB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gbG9hZCB2aXN1YWwgZmlsdGVyIG9uIHRoZSBiYXNpcyBvZiBjb250cm9sIHByb3BlcnR5XG5cdFx0Ly8gX2NyZWF0ZUlubmVyTGF5b3V0IGlzIGNhbGxlZCBvbiBJbml0IGJ5IHRoZSBmaWx0ZXIgYmFyIGJhc2UuXG5cdFx0Ly8gVGhpcyBtZWFuIHRoYXQgd2UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjb250cm9sIHByb3BlcnRpZXMgeWV0XG5cdFx0Ly8gYW5kIGhlbmNlIHdlIGNhbm5vdCBkZWNpZGUgb24gdGhlIGJhc2lzIG9mIGNvbnRyb2wgcHJvcGVydGllcyB3aGV0aGVyIGluaXRpYWwgbGF5b3V0IHNob3VsZCBiZSBjb21wYWN0IG9yIHZpc3VhbFxuXHRcdC8vIEFzIGEgcmVzdWx0IHdlIGhhdmUgdG8gZG8gdGhpcyB3b3JrYXJvdW5kIHRvIGFsd2F5cyBsb2FkIHRoZSBjb21wYWN0IGxheW91dCBieSBkZWZhdWx0XG5cdFx0Ly8gQW5kIHRvb2dsZSB0aGUgc2FtZSBpbiBjYXNlIHRoZSBpbml0aWFsTGF5b3V0IHdhcyBzdXBwb3NlZCB0byBiZSB2aXN1YWwgZmlsdGVycy5cblx0XHRjb25zdCBvSW5uZXJMYXlvdXQgPSB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmdldElubmVyKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlUmVuZGVyaW5nOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmluaXRpYWxMYXlvdXQgPT09IFwidmlzdWFsXCIpIHtcblx0XHRcdFx0XHR0aGlzLl90b2dnbGVMYXlvdXQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvSW5uZXJMYXlvdXQucmVtb3ZlRXZlbnREZWxlZ2F0ZShvRmlsdGVyQ29udGFpbmVySW5uZXJMYXlvdXRFdmVudERlbGVnYXRlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdG9Jbm5lckxheW91dC5hZGRFdmVudERlbGVnYXRlKG9GaWx0ZXJDb250YWluZXJJbm5lckxheW91dEV2ZW50RGVsZWdhdGUpO1xuXG5cdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcImxheW91dFwiLCB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LCB0cnVlKTtcblx0fVxuXG5cdGV4aXQoKTogdm9pZCB7XG5cdFx0c3VwZXIuZXhpdCgpO1xuXHRcdC8vIFNvbWV0aW1lcyB1cG9uIGV4dGVybmFsIG5hdmlnYXRpb24gdGhpcy5fU2VnbWVudGVkQnV0dG9uIGlzIGFscmVhZHkgZGVzdHJveWVkXG5cdFx0Ly8gc28gY2hlY2sgaWYgaXQgZXhpc3RzIGFuZCB0aGVuIG9ubHkgcmVtb3ZlIHN0dWZmXG5cdFx0aWYgKHRoaXMuX29TZWdtZW50ZWRCdXR0b24pIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24uZGV0YWNoRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgdGhpcy5fdG9nZ2xlTGF5b3V0KTtcblx0XHRcdGRlbGV0ZSB0aGlzLl9vU2VnbWVudGVkQnV0dG9uO1xuXHRcdH1cblx0fVxuXG5cdGdldFNlZ21lbnRlZEJ1dHRvbigpOiBTZWdtZW50ZWRCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9vU2VnbWVudGVkQnV0dG9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVuYWJsZSBvciBkaXNhYmxlIHJlcXVlc3RzIHRoYXQgYXJlIGluaXRpYXRlZCBieSB0aGUgRmlsdGVyQmFyLlxuXHQgKlxuXHQgKiBUbyBiZSB1c2VkIHRvIHN1c3BlbmQgb3IgcmVzdW1lIHJlcXVlc3RzKHRhYmxlIG9yIHZpc3VhbCBmaWx0ZXJzKSB3aGVuIHRoZSBmaWx0ZXIgYmFyIGlzIGJlaW5nIG1vZGlmaWVkIG9yIHdoZW4gdGhlIHVzZXIgaXMgcHJvZ3JhbW1hdGljYWxseSBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaWx0ZXIgY29udHJvbHMuXG5cdCAqIFRoaXMgbWV0aG9kIGlzIGFsc28gdXNlZCB0byBjb250cm9sIHdoZXRoZXIgdGhlIHZpc3VhbCBmaWx0ZXIgY2hhcnQgYmluZGluZyBzaG91bGQgYmUgcmVzdW1lZC9zdXNwZW5kZWQgYmFzZWQgb24gdGhlIGRpZmYgc3RhdGUsIGFuZCByZXN1bWVkIGFmdGVyIGNvbmRpdG9uIG1vZGVsIHVwZGF0ZS5cblx0ICogQHBhcmFtIGVuYWJsZSBFbmFibGUgb3IgZGlzYWJsZSByZXF1ZXN0c1xuXHQgKiBAcGFyYW0gZGlmZlN0YXRlIElmIHRoZXJlIGlzIGEgZGlmZmVybmNlIGluIHRoZSBleHRlcm5hbCBzdGF0ZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQgZm9yIHZpc3VhbCBmaWx0ZXIgaW4tcGFyYW1ldGVyc1xuXHQgKi9cblx0ZW5hYmxlUmVxdWVzdHMoZW5hYmxlOiBib29sZWFuLCBkaWZmU3RhdGU/OiBFeHRlcm5hbFN0YXRlVHlwZSk6IHZvaWQge1xuXHRcdHRoaXMuc2V0U3VzcGVuZFNlbGVjdGlvbighZW5hYmxlKTtcblx0XHQvLyBXZSBuZWVkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aXN1YWwgZmlsdGVyIGNoYXJ0IGJpbmRpbmdzIGJhc2VkIG9uIGRpZmYgc3RhdGUuXG5cdFx0dGhpcy5fZW5hYmxlVmlzdWFsRmlsdGVyQ2hhcnRCaW5kaW5ncyhlbmFibGUsIGRpZmZTdGF0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBmaWx0ZXIgbGF5b3V0IGJ5IGl0cyB0eXBlLlxuXHQgKiBAcGFyYW0gbGF5b3V0Q2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lIG9mIHRoZSBmaWx0ZXIgbGF5b3V0IHRvIGJlIHJldHVybmVkLlxuXHQgKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgZmlsdGVyIGxheW91dCB0byBiZSByZXR1cm5lZC5cblx0ICogQHR5cGVkZWYge0lGaWx0ZXJDb250YWluZXJ9IFQgVGhlIHR5cGUgb2YgdGhlIGZpbHRlciBsYXlvdXQgdG8gYmUgcmV0dXJuZWRcblx0ICogQHJldHVybnMgQ29ycmVzcG9uZGluZyBmaWx0ZXIgbGF5b3V0IGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cblx0ICovXG5cdF9nZXRGaWx0ZXJMYXlvdXRCeVR5cGU8VCBleHRlbmRzIElGaWx0ZXJDb250YWluZXI+KGxheW91dENsYXNzTmFtZTogQ29udGFpbmVyVHlwZSk6IFQgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHJldEZpbHRlckxheW91dCA9IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaXNBPFQ+KGxheW91dENsYXNzTmFtZSkgPyB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0IDogdW5kZWZpbmVkO1xuXHRcdHJldHVybiAhcmV0RmlsdGVyTGF5b3V0ICYmIHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/LmlzQTxUPihsYXlvdXRDbGFzc05hbWUpXG5cdFx0XHQ/IHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXRcblx0XHRcdDogcmV0RmlsdGVyTGF5b3V0O1xuXHR9XG5cblx0X2VuYWJsZVZpc3VhbEZpbHRlckNoYXJ0QmluZGluZ3MoZW5hYmxlOiBib29sZWFuLCBkaWZmU3RhdGU/OiBFeHRlcm5hbFN0YXRlVHlwZSk6IHZvaWQge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3QgdmlzdWFsRmlsdGVyTGF5b3V0ID0gdGhpcy5fZ2V0RmlsdGVyTGF5b3V0QnlUeXBlPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oVklTVUFMX0ZJTFRFUl9DT05UQUlORVIpO1xuXHRcdGlmICh2aXN1YWxGaWx0ZXJMYXlvdXQpIHtcblx0XHRcdHZpc3VhbEZpbHRlckxheW91dC5lbmFibGVDaGFydEJpbmRpbmcoZW5hYmxlLCBkaWZmU3RhdGUpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIElmIGluaXRpYWwgbGF5b3V0IGlzIGNvbXBhY3QsIHdlIGRvbid0IGhhdmUgdGhlIHZpc3VhbCBmaWx0ZXIgbGF5b3V0KGNvbnRhaW5lcikgYXZhaWxhYmxlIHlldCB1bnRpbCB0aGUgdXNlciB0b2dnbGVzIHRvIHZpc3VhbCBmaWx0ZXIgbGF5b3V0LlxuXHRcdC8vIFNvIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGNvbXBhY3QgZmlsdGVyIGxheW91dCBoYXMgdmlzdWFsIGZpbHRlcnMgYW5kIGVuYWJsZS9kaXNhYmxlIHRoZSBjaGFydCBiaW5kaW5nIGZvciB0aG9zZSB2aXN1YWwgZmlsdGVycy5cblx0XHRjb25zdCBjb21wYWN0RmlsdGVyTGF5b3V0ID0gdGhpcy5fZ2V0RmlsdGVyTGF5b3V0QnlUeXBlPEZpbHRlckNvbnRhaW5lcj4oRklMVEVSX0NPTlRBSU5FUik7XG5cdFx0aWYgKGNvbXBhY3RGaWx0ZXJMYXlvdXQpIHtcblx0XHRcdGNvbnN0IHZpc3VhbEZpbHRlcnMgPSBjb21wYWN0RmlsdGVyTGF5b3V0LmdldEFsbFZpc3VhbEZpbHRlckZpZWxkcygpO1xuXHRcdFx0aWYgKHZpc3VhbEZpbHRlcnMpIHtcblx0XHRcdFx0VmlzdWFsRmlsdGVyVXRpbHMuZW5hYmxlQ2hhcnRCaW5kaW5nKHZpc3VhbEZpbHRlcnMsIGVuYWJsZSwgZGlmZlN0YXRlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbmludGVyZmFjZSBGaWx0ZXJCYXIge1xuXHRfYWRkQnV0dG9ucygpOiB2b2lkO1xufVxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyQmFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0VBb0JBLE1BQU1BLHVCQUF1QixHQUFHLHdEQUF3RDtJQUN2RkMsZ0JBQWdCLEdBQUcsa0RBQWtEO0VBQUMsSUFJakVDLFNBQVMsSUFBQUMsSUFBQSxHQURkQyxjQUFjLENBQUMsa0NBQWtDLENBQUMsRUFBQUMsS0FBQSxHQUVqREMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxRQUFRO0lBQUVDLFlBQVksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTXJEQyxXQUFXLENBQUM7SUFDWkgsSUFBSSxFQUFFLHVCQUF1QjtJQUM3QkksUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFSLElBQUEsQ0FBQVMsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxhQUFBO0lBR0YsU0FBQVosVUFBWWEsU0FBd0QsRUFBRUMsUUFBdUQsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDOUgsT0FBT0YsU0FBUyxFQUFFRyxZQUFZO01BQzlCLE9BQU9GLFFBQVEsRUFBRUUsWUFBWTtNQUM3QkQsS0FBQSxHQUFBSCxhQUFBLENBQUFLLElBQUEsT0FBTUosU0FBUyxFQUF1QkMsUUFBUSxDQUFDO01BQUNJLDBCQUFB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
@@ -1,11 +1,13 @@
1
1
  import Log from "sap/base/Log";
2
2
  import type { PropertiesOf } from "sap/fe/base/ClassSupport";
3
3
  import { association, defineUI5Class, property } from "sap/fe/base/ClassSupport";
4
+ import PromiseKeeper from "sap/fe/core/helpers/PromiseKeeper";
4
5
  import FilterContainer from "sap/fe/macros/controls/filterbar/FilterContainer";
5
6
  import VisualFilterContainer from "sap/fe/macros/controls/filterbar/VisualFilterContainer";
6
7
  import type VisualFilter from "sap/fe/macros/visualfilters/VisualFilter";
7
8
  import type Button from "sap/m/Button";
8
9
  import type SegmentedButton from "sap/m/SegmentedButton";
10
+ import type { ManagedObject$ModelContextChangeEvent } from "sap/ui/base/ManagedObject";
9
11
  import type Control from "sap/ui/core/Control";
10
12
  import { default as Element } from "sap/ui/core/Element";
11
13
  import type { $FilterBarSettings } from "sap/ui/mdc/FilterBar";
@@ -42,14 +44,53 @@ class FilterBar extends MdcFilterBar {
42
44
  }
43
45
 
44
46
  private async _initializeStatus(): Promise<void> {
45
- await this.waitForInitialization();
47
+ // Promise keeper to hold the process.
48
+ this._initializedPromiseKeeper = new PromiseKeeper<void>();
49
+
50
+ // Awaits
51
+ await this.initializedWithMetadata();
52
+ await this.waitForModelToBeSet();
53
+
54
+ this._initializedPromiseKeeper.resolve();
46
55
  this._isInitialized = true;
47
56
  }
48
57
 
58
+ private async waitForModelToBeSet(): Promise<void> {
59
+ if (this.getModel()) {
60
+ return;
61
+ }
62
+ // wait for deafault model to be set.
63
+ const modelIsSetPromiseKeeper = new PromiseKeeper<void>();
64
+ const fnCheckAndReset = (e: ManagedObject$ModelContextChangeEvent): void => {
65
+ const filterbar = e.getSource();
66
+ if (filterbar.getModel()) {
67
+ // default model is set.
68
+ filterbar.detachModelContextChange(fnCheckAndReset);
69
+ modelIsSetPromiseKeeper?.resolve();
70
+ }
71
+ };
72
+ this.attachModelContextChange(fnCheckAndReset);
73
+ return modelIsSetPromiseKeeper.promise;
74
+ }
75
+
76
+ /**
77
+ * Checks if the FilterBar is fully initialized.
78
+ * @returns True if the FilterBar is initialized, false otherwise.
79
+ */
49
80
  isInitialized(): boolean {
50
81
  return !!this._isInitialized;
51
82
  }
52
83
 
84
+ /**
85
+ * Async equivalent of 'isInitialized' to perform filter bar interactions after the filter bar is ready.
86
+ * @returns Promise that resolves when the filter bar is initialized.
87
+ */
88
+ async whenInitialized(): Promise<void> {
89
+ return this._initializedPromiseKeeper?.promise;
90
+ }
91
+
92
+ private _initializedPromiseKeeper?: PromiseKeeper<void>;
93
+
53
94
  private _isInitialized = false;
54
95
 
55
96
  private _oSegmentedButton?: SegmentedButton;
@@ -310,7 +310,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/HookSupp
310
310
  if (contentRole === "provider") {
311
311
  const infoFromProvider = sectionOnlyContent.getDataFromProvider && sectionOnlyContent.getDataFromProvider(this.useSingleTextAreaFieldAsNotes);
312
312
  if (infoFromProvider && this.getTitle() === infoFromProvider.title) {
313
- this.setTitle(infoFromProvider.title);
313
+ //commenting out this redundent title setting to avoid re-rendering issues
314
+ // this.setTitle(infoFromProvider.title);
314
315
  this.setShowTitle(true);
315
316
  // TODO: Check if this is really needed?
316
317
  classesToAdd.add("sapUiTableOnObjectPageAdjustmentsForSection");
@@ -432,4 +433,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/HookSupp
432
433
  }), _class2)) || _class) || _class);
433
434
  return Section;
434
435
  }, false);
435
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZWN0aW9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiZGVzaWdudGltZSIsIl9kZWMyIiwibWl4aW4iLCJTZWN0aW9uU3RhdGVIYW5kbGVyIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX09iamVjdFBhZ2VTZWN0aW9uIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJyZWdpc3RlckRlbGVnYXRlIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJldmVudERlbGVnYXRlcyIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJzdWJTZWN0aW9ucyIsImdldFN1YlNlY3Rpb25zIiwibGVuZ3RoIiwiZm9yRWFjaCIsInN1YlNlY3Rpb24iLCJnZXRCbG9ja3MiLCJzdWJTZWN0aW9uRXZlbnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiY2hlY2tBbmRBZGp1c3RTZWN0aW9uQ29udGVudCIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwidmlldyIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsInVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzIiwiY2hlY2tBbmRBZGp1c3RTZWN0aW9uQ29udGVudEZvclRleHRBcmVhIiwiY2hlY2tBbmRBZGp1c3RGb3JTaW5nbGVDb250ZW50Iiwic2V0T25TZWN0aW9uTG9hZGVkIiwib25TZWN0aW9uTG9hZGVkIiwibG9hZFNwbGl0Iiwic3BsaXQiLCJfc2VjdGlvbkxvYWRNZXRob2ROYW1lIiwicG9wIiwiX3NlY3Rpb25Mb2FkTW9kdWxlTmFtZSIsImpvaW4iLCJzZXRQcm9wZXJ0eSIsImFwcGx5U2V0dGluZ3MiLCJtU2V0dGluZ3MiLCJvU2NvcGUiLCJ0ZW1wbGF0ZUNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkhvb2tTdXBwb3J0IiwiaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJ1cGRhdGVOb25UYWJsZVN1YlNlY3Rpb25CYWNrZ3JvdW5kIiwiYWRqdXN0bWVudFJlc3VsdHMiLCJoYXNTdHlsZUNsYXNzIiwiX3JlZiIsInRhYmxlc0FkanVzdGVkIiwicmVtb3ZlU3R5bGVDbGFzcyIsImFkZFN0eWxlQ2xhc3MiLCJ2aXNpYmxlU3ViU2VjdGlvbnMiLCJnZXRWaXNpYmxlU3ViU2VjdGlvbnMiLCJyZWR1Y2UiLCJyZXN1bHRzIiwiY29udGVudCIsImdldFNpbmdsZUNvbnRlbnQiLCJhZGp1c3RGb3JTaW5nbGVDb250ZW50IiwicHVzaCIsImdldFZpZXdEYXRhIiwic2VjdGlvbkxheW91dCIsInNpbmdsZUNvbnRlbnQiLCJpc0EiLCJjaGVja0lmTm90ZXNSZXVzZUNvbXBvbmVudCIsInNpbmdsZUNvbnRlbnRUYWJsZUFkanVzdGVkIiwiRlBNSGVscGVyIiwibG9hZE1vZHVsZUFuZENhbGxNZXRob2QiLCJjaGVja0FuZEFkanVzdFRpdGxlcyIsIkxvZyIsImRlYnVnIiwiZ2V0SWQiLCJpbmNsdWRlcyIsInNpbmdsZVN1YlNlY3Rpb25UYWJsZUFkanVzdGVkIiwiYWRqdXN0U2VjdGlvbkNvbnRlbnRXaXRoVGl0bGUiLCJzdWJzZWN0aW9uIiwiYmxvY2tzIiwiZ2V0QWdncmVnYXRpb24iLCJzZWN0aW9uRnJvbVJlZmVyZW5jZUZhY2V0IiwiU3ViU2VjdGlvbiIsInNob3dUaXRsZSIsImdldE1haW5Db250ZW50IiwiRnVuY3Rpb24iLCJhZGp1c3RtZW50UHJvcHMiLCJzZWN0aW9uZnJvbUNvbGxlY3Rpb25GYWNldCIsIlRpdGxlIiwiZ2V0VmlzaWJsZSIsImdldFNlY3Rpb25UaXRsZSIsInRpdGxlIiwiZ2V0VGl0bGUiLCJzZWN0aW9uRGV0YWlscyIsImNsYXNzZXNUb0FkZCIsIlNldCIsInNlY3Rpb25Pbmx5Q29udGVudCIsImNvbnRlbnRSb2xlIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwiaW5mb0Zyb21Qcm92aWRlciIsImdldERhdGFGcm9tUHJvdmlkZXIiLCJzZXRUaXRsZSIsInNldFNob3dUaXRsZSIsImFkZCIsImdldFRleHQiLCJzZXRWaXNpYmxlIiwic2VuZERhdGFUb0NvbnN1bWVyIiwiaGFzTXVsdGlwbGVTdWJzZWN0aW9ucyIsInRpdGxlTGV2ZWwiLCJnZXRUaXRsZUxldmVsIiwiaGVhZGVyU3R5bGUiLCJtdWx0aXBsZVN1YlNlY3Rpb25zV2l0aFJldXNlQ29tcG9uZW50Iiwic2V0VGV4dCIsInNldFRpdGxlU3R5bGUiLCJzZXRMZXZlbCIsInZCb3hJdGVtcyIsImdldEl0ZW1zIiwidkJveEl0ZW0iLCJoZWFkZXJUb29sYmFyIiwiZ2V0Q29udGVudCIsImNvbnRyb2wiLCJub3Rlc1RpdGxlIiwiQXJyYXkiLCJmcm9tIiwiaGFzIiwiT2JqZWN0UGFnZVNlY3Rpb24iLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlNlY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBtaXhpbiwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBIb29rU3VwcG9ydCBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgRlBNSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0ZQTUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgSVNpbmdsZVNlY3Rpb25Db250cmlidXRvciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIjtcbmltcG9ydCBTZWN0aW9uU3RhdGVIYW5kbGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL3NlY3Rpb24vbWl4aW4vU2VjdGlvblN0YXRlSGFuZGxlclwiO1xuaW1wb3J0IHR5cGUgU3ViU2VjdGlvbkJsb2NrIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL09iamVjdFBhZ2UvY29udHJvbHMvU3ViU2VjdGlvbkJsb2NrXCI7XG5pbXBvcnQgdHlwZSBPdmVyZmxvd1Rvb2xiYXIgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhclwiO1xuaW1wb3J0IHR5cGUgVGl0bGUgZnJvbSBcInNhcC9tL1RpdGxlXCI7XG5pbXBvcnQgdHlwZSBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBEeW5hbWljU2lkZUNvbnRlbnQgZnJvbSBcInNhcC91aS9sYXlvdXQvRHluYW1pY1NpZGVDb250ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRPYmplY3RQYWdlU2VjdGlvblNldHRpbmdzIH0gZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VTZWN0aW9uXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IE9iamVjdFBhZ2VTZWN0aW9uIGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlU2VjdGlvblwiO1xuaW1wb3J0IHR5cGUgT2JqZWN0UGFnZVN1YlNlY3Rpb24gZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VTdWJTZWN0aW9uXCI7XG5pbXBvcnQgdHlwZSBTdWJTZWN0aW9uIGZyb20gXCIuL3NlY3Rpb24vU3ViU2VjdGlvblwiO1xuXG50eXBlIEFkanVzdG1lbnRQcm9wcyA9IHtcblx0dGFibGVzQWRqdXN0ZWQ/OiBib29sZWFuO1xufTtcblxudHlwZSBBZGp1c3RtZW50UmVzdWx0cyA9IHtcblx0c3ViU2VjdGlvbjogT2JqZWN0UGFnZVN1YlNlY3Rpb247XG59ICYgQWRqdXN0bWVudFByb3BzO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLlNlY3Rpb25cIiwgeyBkZXNpZ250aW1lOiBcInNhcC91eGFwL2Rlc2lnbnRpbWUvT2JqZWN0UGFnZVNlY3Rpb24uZGVzaWdudGltZVwiIH0pXG5AbWl4aW4oU2VjdGlvblN0YXRlSGFuZGxlcilcbmNsYXNzIFNlY3Rpb24gZXh0ZW5kcyBPYmplY3RQYWdlU2VjdGlvbiB7XG5cdC8vIFRPRE86IHRoaXMgcHJvYmFibHkgbWFrZXMgc2Vuc2UgdG8gYmUgYW4gZXZlbnQuIEJ1dCB3ZSBjYW4gYWRkcmVzcyB0aGlzIGxhdGVyLlxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG9uU2VjdGlvbkxvYWRlZCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHR1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3RlcyE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFBhdGggdG8gdGhlIGFwcGx5IHN0YXRlIGhhbmRsZXIgdG8gYmUgY2FsbGVkIGR1cmluZyBzdGF0ZSBpbnRlcmFjdGlvbnMuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGFwcGx5U3RhdGVIYW5kbGVyPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQYXRoIHRvIHRoZSByZXRyaWV2ZSBzdGF0ZSBoYW5kbGVyIHRvIGJlIGNhbGxlZCBkdXJpbmcgc3RhdGUgaW50ZXJhY3Rpb25zLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRyZXRyaWV2ZVN0YXRlSGFuZGxlcj86IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiAkT2JqZWN0UGFnZVNlY3Rpb25TZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxTZWN0aW9uPiwgb3RoZXJzPzogJE9iamVjdFBhZ2VTZWN0aW9uU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wZXJ0aWVzIGFzIHVua25vd24gYXMgc3RyaW5nLCBvdGhlcnMpO1xuXHRcdHRoaXMucmVnaXN0ZXJEZWxlZ2F0ZSgpO1xuXHR9XG5cblx0X3NlY3Rpb25Mb2FkTWV0aG9kTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF9zZWN0aW9uTG9hZE1vZHVsZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHJlZ2lzdGVyRGVsZWdhdGUoKTogdm9pZCB7XG5cdFx0Y29uc3QgZXZlbnREZWxlZ2F0ZXMgPSB7XG5cdFx0XHRvbkFmdGVyUmVuZGVyaW5nOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGxldCBzdWJTZWN0aW9ucyA9IHRoaXMuZ2V0U3ViU2VjdGlvbnMoKTtcblx0XHRcdFx0aWYgKHN1YlNlY3Rpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRcdHN1YlNlY3Rpb25zLmZvckVhY2goKHN1YlNlY3Rpb246IFN1YlNlY3Rpb24pID0+IHtcblx0XHRcdFx0XHRcdC8qIHdlIGNoZWNrIGluZGl2aWR1YWwgc3Vic2VjdGlvbiBmb3IgYmxvY2tzLiBJZiBub3QgYXZhaWxhYmxlIHdlIHdhaXQgZm9yIHRoZW0gdG8gYmUgYWRkZWQob25CZWZvcmVSZW5kZXJpbmcpIGJlZm9yZSB0cmlnZ2VyaW5nIHRpdGxlIG1lcmdlIGxvZ2ljcyAqL1xuXHRcdFx0XHRcdFx0aWYgKHN1YlNlY3Rpb24uZ2V0QmxvY2tzKCk/Lmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdWJTZWN0aW9uRXZlbnREZWxlZ2F0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja0FuZEFkanVzdFNlY3Rpb25Db250ZW50KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzdWJTZWN0aW9uLnJlbW92ZUV2ZW50RGVsZWdhdGUoc3ViU2VjdGlvbkV2ZW50RGVsZWdhdGUpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0c3ViU2VjdGlvbi5hZGRFdmVudERlbGVnYXRlKHN1YlNlY3Rpb25FdmVudERlbGVnYXRlKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tBbmRBZGp1c3RTZWN0aW9uQ29udGVudCgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuY2hlY2tBbmRBZGp1c3RTZWN0aW9uQ29udGVudCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHRoaXMuYWRkRXZlbnREZWxlZ2F0ZShldmVudERlbGVnYXRlcyk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBjaGVja3MgZm9yIHRoZSBzZWN0aW9uIGNvbnRlbnQgYW5kIGFkanVzdHMgdGhlIHNlY3Rpb24gYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBjb250ZW50LlxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRjaGVja0FuZEFkanVzdFNlY3Rpb25Db250ZW50KCk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdGlmICh0aGlzLnVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzKSB7XG5cdFx0XHR0aGlzLmNoZWNrQW5kQWRqdXN0U2VjdGlvbkNvbnRlbnRGb3JUZXh0QXJlYSgpO1xuXHRcdH1cblx0XHR0aGlzLmNoZWNrQW5kQWRqdXN0Rm9yU2luZ2xlQ29udGVudCh2aWV3KTtcblx0fVxuXG5cdHNldE9uU2VjdGlvbkxvYWRlZChvblNlY3Rpb25Mb2FkZWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGxvYWRTcGxpdCA9IG9uU2VjdGlvbkxvYWRlZC5zcGxpdChcIi5cIik7XG5cdFx0dGhpcy5fc2VjdGlvbkxvYWRNZXRob2ROYW1lID0gbG9hZFNwbGl0Py5wb3AoKTtcblx0XHR0aGlzLl9zZWN0aW9uTG9hZE1vZHVsZU5hbWUgPSBsb2FkU3BsaXQ/LmpvaW4oXCIvXCIpO1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJvblNlY3Rpb25Mb2FkZWRcIiwgb25TZWN0aW9uTG9hZGVkKTtcblx0fVxuXG5cdC8vIFRPRE86IENoZWNrIGlmIG9uQWZ0ZXJSZW5kZXJpbmcgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhcHBseVNldHRpbmdzLlxuXHRhcHBseVNldHRpbmdzKG1TZXR0aW5nczogJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgb1Njb3BlPzogb2JqZWN0KTogdGhpcyB7XG5cdFx0c3VwZXIuYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3MsIG9TY29wZSk7XG5cdFx0Y29uc3QgdGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcykgYXMgVGVtcGxhdGVDb21wb25lbnQ7XG5cdFx0Y29uc3QgcGFnZUNvbnRyb2xsZXIgPSB0ZW1wbGF0ZUNvbXBvbmVudC5nZXRSb290Q29udHJvbGxlcigpO1xuXHRcdGlmIChwYWdlQ29udHJvbGxlcikge1xuXHRcdFx0SG9va1N1cHBvcnQuaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnModGhpcywgcGFnZUNvbnRyb2xsZXIpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgc3Vic2VjdGlvbiBiYWNrZ3JvdW5kIGNsYXNzIGJhc2VkIG9uIHRhYmxlIGFkanVzdG1lbnRzIG1hZGUuXG5cdCAqIEBwYXJhbSBhZGp1c3RtZW50UmVzdWx0cyBBcnJheSBvZiBhZGp1c3RtZW50IHJlc3VsdHNcblx0ICovXG5cdHVwZGF0ZU5vblRhYmxlU3ViU2VjdGlvbkJhY2tncm91bmQoYWRqdXN0bWVudFJlc3VsdHM6IEFkanVzdG1lbnRSZXN1bHRzW10pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5oYXNTdHlsZUNsYXNzKFwic2FwVWlUYWJsZU9uT2JqZWN0UGFnZUFkanVzdG1lbnRzRm9yU2VjdGlvblwiKSkge1xuXHRcdFx0YWRqdXN0bWVudFJlc3VsdHMuZm9yRWFjaCgoeyBzdWJTZWN0aW9uLCB0YWJsZXNBZGp1c3RlZCB9KSA9PiB7XG5cdFx0XHRcdGlmICh0YWJsZXNBZGp1c3RlZCkge1xuXHRcdFx0XHRcdHN1YlNlY3Rpb24ucmVtb3ZlU3R5bGVDbGFzcyhcInNhcFVpQWRqdXN0ZWRTZWN0aW9uU3Vic2VjdGlvbldpdGhvdXRUYWJsZVwiKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdWJTZWN0aW9uLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaUFkanVzdGVkU2VjdGlvblN1YnNlY3Rpb25XaXRob3V0VGFibGVcIik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCBsb29wcyB0aHJvdWdoIGFsbCB0aGUgdmlzaWJsZSBzdWJzZWN0aW9ucyBhbmQgdHJpZ2dlcnMgdGhlIHRleHQgYXJlYSBmbG93IGlmIHRoYXRzIHRoZSBvbmx5IHNpbmdsZSBjb250cm9sIHdpdGhpbiB0aGUgc2VjdGlvbi5cblx0ICovXG5cdGNoZWNrQW5kQWRqdXN0U2VjdGlvbkNvbnRlbnRGb3JUZXh0QXJlYSgpOiB2b2lkIHtcblx0XHRjb25zdCB2aXNpYmxlU3ViU2VjdGlvbnMgPSB0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpO1xuXHRcdGNvbnN0IGFkanVzdG1lbnRSZXN1bHRzID0gdmlzaWJsZVN1YlNlY3Rpb25zLnJlZHVjZSgocmVzdWx0czogQWRqdXN0bWVudFJlc3VsdHNbXSwgc3ViU2VjdGlvbjogT2JqZWN0UGFnZVN1YlNlY3Rpb24pID0+IHtcblx0XHRcdGxldCB0YWJsZXNBZGp1c3RlZDtcblx0XHRcdGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldFNpbmdsZUNvbnRlbnQoW3N1YlNlY3Rpb25dKTtcblx0XHRcdGlmIChjb250ZW50KSB7XG5cdFx0XHRcdHRhYmxlc0FkanVzdGVkID0gdGhpcy5hZGp1c3RGb3JTaW5nbGVDb250ZW50KGNvbnRlbnQpLnRhYmxlc0FkanVzdGVkO1xuXHRcdFx0fVxuXHRcdFx0cmVzdWx0cy5wdXNoKHsgc3ViU2VjdGlvbiwgdGFibGVzQWRqdXN0ZWQgfSk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9LCBbXSk7XG5cdFx0dGhpcy51cGRhdGVOb25UYWJsZVN1YlNlY3Rpb25CYWNrZ3JvdW5kKGFkanVzdG1lbnRSZXN1bHRzKTtcblx0fVxuXG5cdGNoZWNrQW5kQWRqdXN0Rm9yU2luZ2xlQ29udGVudCh2aWV3OiBGRVZpZXcpOiB2b2lkIHwgUHJvbWlzZTx1bmtub3duPiB7XG5cdFx0aWYgKCh2aWV3Py5nZXRWaWV3RGF0YSgpIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKT8uc2VjdGlvbkxheW91dCA9PT0gXCJQYWdlXCIpIHtcblx0XHRcdGNvbnN0IHNpbmdsZUNvbnRlbnQgPSB0aGlzLmdldFNpbmdsZUNvbnRlbnQoKTtcblx0XHRcdGlmIChcblx0XHRcdFx0c2luZ2xlQ29udGVudCAmJlxuXHRcdFx0XHQoc2luZ2xlQ29udGVudC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiKSB8fFxuXHRcdFx0XHRcdHRoaXMuY2hlY2tJZk5vdGVzUmV1c2VDb21wb25lbnQoc2luZ2xlQ29udGVudCkpXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgeyB0YWJsZXNBZGp1c3RlZDogc2luZ2xlQ29udGVudFRhYmxlQWRqdXN0ZWQgfSA9IHRoaXMuYWRqdXN0Rm9yU2luZ2xlQ29udGVudChzaW5nbGVDb250ZW50KTtcblx0XHRcdFx0Y29uc3Qgc3ViU2VjdGlvbnMgPSB0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpO1xuXHRcdFx0XHR0aGlzLnVwZGF0ZU5vblRhYmxlU3ViU2VjdGlvbkJhY2tncm91bmQoW3sgc3ViU2VjdGlvbjogc3ViU2VjdGlvbnNbMF0sIHRhYmxlc0FkanVzdGVkOiBzaW5nbGVDb250ZW50VGFibGVBZGp1c3RlZCB9XSk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuX3NlY3Rpb25Mb2FkTW9kdWxlTmFtZSAmJiB0aGlzLl9zZWN0aW9uTG9hZE1ldGhvZE5hbWUpIHtcblx0XHRcdFx0cmV0dXJuIEZQTUhlbHBlci5sb2FkTW9kdWxlQW5kQ2FsbE1ldGhvZCh0aGlzLl9zZWN0aW9uTG9hZE1vZHVsZU5hbWUsIHRoaXMuX3NlY3Rpb25Mb2FkTWV0aG9kTmFtZSwgdmlldywgdGhpcyk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZ2V0U3ViU2VjdGlvbnMoKS5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdC8vIGNhbGwgbWVyZ2UgdGl0bGUgbG9naWMgZm9yIHN1YnNlY3Rpb25zXG5cdFx0XHRcdHRoaXMuY2hlY2tBbmRBZGp1c3RUaXRsZXMoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIlNlY3Rpb24gY2Fubm90IGJlIGFkanVzdGVkIGZvciBzaW5nbGUgY29udGVudCA6IEludGVyZmFjZSAnSVNpbmdsZVNlY3Rpb25Db250cmlidXRvcicgaXMgbm90IGltcGxlbWVudGVkXCIpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNoZWNrQW5kQWRqdXN0VGl0bGVzKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqXG5cdCAqIEBwYXJhbSBzaW5nbGVDb250ZW50IE9iamVjdCBvZiB0aGUgY29udGVudCBwcmVzZW50IHdpdGhpbiB0aGUgc2VjdGlvbi5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY29udGVudCBwcmVzZW50IGlzIGEgbm90ZXMgcmV1c2UgY29tcG9uZW50XG5cdCAqL1xuXHRjaGVja0lmTm90ZXNSZXVzZUNvbXBvbmVudChzaW5nbGVDb250ZW50OiBNYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG5cdFx0aWYgKHNpbmdsZUNvbnRlbnQuaXNBKFwic2FwLm0uVkJveFwiKSAmJiBzaW5nbGVDb250ZW50LmdldElkKCkuaW5jbHVkZXMoXCJOb3RlU2VjdGlvblwiKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBmb3IgdGhlIHZpc2libGUgc3Vic2VjdGlvbnMgYW5kIGNoZWNrcyBmb3IgdGhlIGNvbGxlY3Rpb24gZmFjZXQgbGFiZWwsIElmIHByZXNlbnQgdGhlbiB3ZSBtZXJnZSB0aGUgdGl0bGUgYW5kIHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgRHluYW1pY1NpZGVDb25lbnQgYXMgd2VsbC5cblx0ICovXG5cdGNoZWNrQW5kQWRqdXN0VGl0bGVzKCk6IHZvaWQge1xuXHRcdGNvbnN0IHZpc2libGVTdWJTZWN0aW9ucyA9IHRoaXMuZ2V0VmlzaWJsZVN1YlNlY3Rpb25zKCk7XG5cdFx0aWYgKHZpc2libGVTdWJTZWN0aW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHRcdGNvbnN0IHsgdGFibGVzQWRqdXN0ZWQ6IHNpbmdsZVN1YlNlY3Rpb25UYWJsZUFkanVzdGVkIH0gPSB0aGlzLmFkanVzdFNlY3Rpb25Db250ZW50V2l0aFRpdGxlKHZpc2libGVTdWJTZWN0aW9uc1swXSk7XG5cdFx0XHR0aGlzLnVwZGF0ZU5vblRhYmxlU3ViU2VjdGlvbkJhY2tncm91bmQoW3sgc3ViU2VjdGlvbjogdmlzaWJsZVN1YlNlY3Rpb25zWzBdLCB0YWJsZXNBZGp1c3RlZDogc2luZ2xlU3ViU2VjdGlvblRhYmxlQWRqdXN0ZWQgfV0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBhZGp1c3RtZW50UmVzdWx0cyA9IHZpc2libGVTdWJTZWN0aW9ucy5yZWR1Y2UoKHJlc3VsdHM6IEFkanVzdG1lbnRSZXN1bHRzW10sIHN1YnNlY3Rpb246IE9iamVjdFBhZ2VTdWJTZWN0aW9uKSA9PiB7XG5cdFx0XHRcdGxldCB0YWJsZXNBZGp1c3RlZDtcblx0XHRcdFx0bGV0IGNvbnRlbnQ7XG5cdFx0XHRcdGNvbnN0IGJsb2NrcyA9IHN1YnNlY3Rpb24uZ2V0QmxvY2tzKCk7XG5cdFx0XHRcdC8vIEluIGNhc2Ugb2YgVGFiIGxheW91dCwgd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgc2VjdGlvbiBoYXMgb25seSBvbmUgc3Vic2VjdGlvbiBhbmQgdGhhdCBzdWJzZWN0aW9uIGhhcyBvbmx5IG9uZSBjb250cm9sXG5cdFx0XHRcdC8vIEluIGNhc2Ugb2YgY29sbGVjdGlvbiBGYWNldCwgdGhlIGZpcnN0IGJsb2NrIHdpbGwgYmUgVGl0bGUgYW5kIHRoZSBzZWNvbmQgYmxvY2sgd2lsbCBiZSBTdWJTZWN0aW9uQmxvY2tcblx0XHRcdFx0aWYgKGJsb2Nrcy5sZW5ndGggPT09IDIgJiYgYmxvY2tzWzFdPy5pc0E8U3ViU2VjdGlvbkJsb2NrPihcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb250cm9scy5TdWJTZWN0aW9uQmxvY2tcIikpIHtcblx0XHRcdFx0XHR0YWJsZXNBZGp1c3RlZCA9IHRoaXMuYWRqdXN0U2VjdGlvbkNvbnRlbnRXaXRoVGl0bGUoc3Vic2VjdGlvbikudGFibGVzQWRqdXN0ZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSW4gY2FzZSBvZiBSZWZlcmVuY2UgRmFjZXQsIHRoZSBmaXJzdCBibG9jayB3aWxsIGJlIFN1YlNlY3Rpb25CbG9ja1xuXHRcdFx0XHRlbHNlIGlmIChibG9ja3MubGVuZ3RoID09PSAxICYmIGJsb2Nrc1swXT8uaXNBPFN1YlNlY3Rpb25CbG9jaz4oXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuY29udHJvbHMuU3ViU2VjdGlvbkJsb2NrXCIpKSB7XG5cdFx0XHRcdFx0Y29udGVudCA9IGJsb2Nrc1swXS5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRcIikgYXMgTWFuYWdlZE9iamVjdDtcblx0XHRcdFx0XHRpZiAoY29udGVudC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiKSkge1xuXHRcdFx0XHRcdFx0dGFibGVzQWRqdXN0ZWQgPSB0aGlzLmFkanVzdEZvclNpbmdsZUNvbnRlbnQoY29udGVudCwge1xuXHRcdFx0XHRcdFx0XHRzZWN0aW9uRnJvbVJlZmVyZW5jZUZhY2V0OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRTdWJTZWN0aW9uOiBzdWJzZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRzaG93VGl0bGU6IHRoaXMuZ2V0VmlzaWJsZVN1YlNlY3Rpb25zKCkubGVuZ3RoID4gMVxuXHRcdFx0XHRcdFx0fSkudGFibGVzQWRqdXN0ZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICgoY29udGVudCBhcyBEeW5hbWljU2lkZUNvbnRlbnQpPy5pc0EoXCJzYXAudWkubGF5b3V0LkR5bmFtaWNTaWRlQ29udGVudFwiKSkge1xuXHRcdFx0XHRcdFx0Y29udGVudCA9XG5cdFx0XHRcdFx0XHRcdChjb250ZW50IGFzIER5bmFtaWNTaWRlQ29udGVudCkuZ2V0TWFpbkNvbnRlbnQgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJlxuXHRcdFx0XHRcdFx0XHQoY29udGVudCBhcyBEeW5hbWljU2lkZUNvbnRlbnQpPy5nZXRNYWluQ29udGVudCgpO1xuXHRcdFx0XHRcdFx0aWYgKGNvbnRlbnQgJiYgY29udGVudC5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRcdFx0Y29udGVudCA9IGNvbnRlbnRbMF07XG5cdFx0XHRcdFx0XHRcdHRhYmxlc0FkanVzdGVkID0gdGhpcy5hZGp1c3RGb3JTaW5nbGVDb250ZW50KGNvbnRlbnQsIHtcblx0XHRcdFx0XHRcdFx0XHRzZWN0aW9uRnJvbVJlZmVyZW5jZUZhY2V0OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFN1YlNlY3Rpb246IHN1YnNlY3Rpb25cblx0XHRcdFx0XHRcdFx0fSkudGFibGVzQWRqdXN0ZWQ7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJlc3VsdHMucHVzaCh7IHN1YlNlY3Rpb246IHN1YnNlY3Rpb24sIHRhYmxlc0FkanVzdGVkIH0pO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdH0sIFtdKTtcblx0XHRcdHRoaXMudXBkYXRlTm9uVGFibGVTdWJTZWN0aW9uQmFja2dyb3VuZChhZGp1c3RtZW50UmVzdWx0cyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGZvciB0aGUgZm9yIHRoZSBjb2xsZWN0aW9uIGZhY2V0IGxhYmVsLElmIHByZXNlbnQgdGhlbiB3ZSBtZXJnZSB0aGUgdGl0bGUuXG5cdCAqIEBwYXJhbSBzdWJzZWN0aW9uIE9iamVjdFBhZ2UgU3ViU2VjdGlvblxuXHQgKi9cblx0YWRqdXN0U2VjdGlvbkNvbnRlbnRXaXRoVGl0bGUoc3Vic2VjdGlvbjogT2JqZWN0UGFnZVN1YlNlY3Rpb24pOiBBZGp1c3RtZW50UmVzdWx0cyB7XG5cdFx0bGV0IGFkanVzdG1lbnRQcm9wczogQWRqdXN0bWVudFByb3BzID0ge307XG5cdFx0Y29uc3QgYmxvY2tzID0gc3Vic2VjdGlvbi5nZXRCbG9ja3MoKTtcblx0XHRsZXQgY29udGVudDtcblx0XHRpZiAoYmxvY2tzLmxlbmd0aCA9PT0gMiAmJiBibG9ja3NbMV0uaXNBPFN1YlNlY3Rpb25CbG9jaz4oXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuY29udHJvbHMuU3ViU2VjdGlvbkJsb2NrXCIpKSB7XG5cdFx0XHRjb250ZW50ID0gYmxvY2tzWzFdLmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFwiKSBhcyBNYW5hZ2VkT2JqZWN0O1xuXHRcdFx0aWYgKGNvbnRlbnQgJiYgY29udGVudC5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLnNlY3Rpb24uSVNpbmdsZVNlY3Rpb25Db250cmlidXRvclwiKSAmJiBibG9ja3NbMF0uaXNBPFRpdGxlPihcInNhcC5tLlRpdGxlXCIpKSB7XG5cdFx0XHRcdGFkanVzdG1lbnRQcm9wcyA9IHRoaXMuYWRqdXN0Rm9yU2luZ2xlQ29udGVudChjb250ZW50LCB7XG5cdFx0XHRcdFx0c2VjdGlvbmZyb21Db2xsZWN0aW9uRmFjZXQ6IHRydWUsXG5cdFx0XHRcdFx0VGl0bGU6IGJsb2Nrc1swXSxcblx0XHRcdFx0XHRTdWJTZWN0aW9uOiBzdWJzZWN0aW9uLFxuXHRcdFx0XHRcdHNob3dUaXRsZTogdGhpcy5nZXRWaXNpYmxlU3ViU2VjdGlvbnMoKS5sZW5ndGggPiAxXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChjb250ZW50ICYmIGNvbnRlbnQuaXNBPER5bmFtaWNTaWRlQ29udGVudD4oXCJzYXAudWkubGF5b3V0LkR5bmFtaWNTaWRlQ29udGVudFwiKSkge1xuXHRcdFx0XHRjb250ZW50ID0gY29udGVudC5nZXRNYWluQ29udGVudCBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmIGNvbnRlbnQ/LmdldE1haW5Db250ZW50KCk7XG5cdFx0XHRcdGlmIChjb250ZW50ICYmIGNvbnRlbnQubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0Y29udGVudCA9IGNvbnRlbnRbMF07XG5cdFx0XHRcdFx0YWRqdXN0bWVudFByb3BzID0gdGhpcy5hZGp1c3RGb3JTaW5nbGVDb250ZW50KGNvbnRlbnQsIHtcblx0XHRcdFx0XHRcdHNlY3Rpb25mcm9tQ29sbGVjdGlvbkZhY2V0OiB0cnVlLFxuXHRcdFx0XHRcdFx0VGl0bGU6IGJsb2Nrc1swXSBhcyBUaXRsZSxcblx0XHRcdFx0XHRcdFN1YlNlY3Rpb246IHN1YnNlY3Rpb25cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4geyBzdWJTZWN0aW9uOiBzdWJzZWN0aW9uLCB0YWJsZXNBZGp1c3RlZDogYWRqdXN0bWVudFByb3BzLnRhYmxlc0FkanVzdGVkIH07XG5cdH1cblxuXHRnZXRTaW5nbGVDb250ZW50KHZpc2libGVTdWJTZWN0aW9ucz86IE9iamVjdFBhZ2VTdWJTZWN0aW9uW10pOiBNYW5hZ2VkT2JqZWN0IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzdWJTZWN0aW9ucyA9IHZpc2libGVTdWJTZWN0aW9ucyA/PyB0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpO1xuXHRcdGlmIChzdWJTZWN0aW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHRcdGNvbnN0IGJsb2NrcyA9IHN1YlNlY3Rpb25zWzBdLmdldEJsb2NrcygpO1xuXHRcdFx0aWYgKGJsb2Nrcy5sZW5ndGggPT09IDEgJiYgYmxvY2tzWzBdLmlzQTxTdWJTZWN0aW9uQmxvY2s+KFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLmNvbnRyb2xzLlN1YlNlY3Rpb25CbG9ja1wiKSkge1xuXHRcdFx0XHRyZXR1cm4gYmxvY2tzWzBdLmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFwiKSBhcyBNYW5hZ2VkT2JqZWN0O1xuXHRcdFx0fVxuXHRcdFx0Ly9JZiB0aGVyZSBpcyBhbiBpbnZpc2libGUgdGV4dCBiZWZvcmUgYSBzdGFuZGFyZCBidWlsZGluZyBibG9jaywgdGhlbiBhbHNvIHRoZSBtZXJnZSB0aXRsZSBsb2dpYyBzaG91bGQgYmUgYXBwbGllZCBhcyBpdHMgc3RpbGwgYSBzaW5nbGUgY29udGVudFxuXHRcdFx0ZWxzZSBpZiAoXG5cdFx0XHRcdGJsb2Nrcy5sZW5ndGggPT09IDIgJiZcblx0XHRcdFx0YmxvY2tzWzBdLmlzQShcInNhcC51aS5jb3JlLkludmlzaWJsZVRleHRcIikgJiZcblx0XHRcdFx0YmxvY2tzWzFdLmlzQTxTdWJTZWN0aW9uQmxvY2s+KFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLmNvbnRyb2xzLlN1YlNlY3Rpb25CbG9ja1wiKVxuXHRcdFx0KVxuXHRcdFx0XHRyZXR1cm4gYmxvY2tzWzFdLmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFwiKSBhcyBNYW5hZ2VkT2JqZWN0O1xuXHRcdH1cblx0fVxuXG5cdGdldFZpc2libGVTdWJTZWN0aW9ucygpOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdIHtcblx0XHRjb25zdCBzdWJTZWN0aW9ucyA9IHRoaXMuZ2V0U3ViU2VjdGlvbnMoKTtcblx0XHRyZXR1cm4gc3ViU2VjdGlvbnMucmVkdWNlKCh2aXNpYmxlU3ViU2VjdGlvbnM6IE9iamVjdFBhZ2VTdWJTZWN0aW9uW10sIHN1YlNlY3Rpb24pID0+IHtcblx0XHRcdGlmIChzdWJTZWN0aW9uLmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR2aXNpYmxlU3ViU2VjdGlvbnMucHVzaChzdWJTZWN0aW9uKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB2aXNpYmxlU3ViU2VjdGlvbnM7XG5cdFx0fSwgW10gYXMgT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSk7XG5cdH1cblxuXHRnZXRTZWN0aW9uVGl0bGUoKTogc3RyaW5nIHtcblx0XHRsZXQgdGl0bGUgPSB0aGlzLmdldFRpdGxlKCk7XG5cdFx0aWYgKHRoaXMuZ2V0VmlzaWJsZVN1YlNlY3Rpb25zKCkubGVuZ3RoID09PSAxKSB7XG5cdFx0XHR0aXRsZSA9IHRoaXMuZ2V0VmlzaWJsZVN1YlNlY3Rpb25zKClbMF0uZ2V0VGl0bGUoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRpdGxlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkanVzdCB0aGUgc2VjdGlvbiBhbmQgc3Vic2VjdGlvbiBiYXNlZCBvbiB0aGUgYXZhaWxhYmxlIGNvbnRlbnQuXG5cdCAqIEBwYXJhbSBzaW5nbGVDb250ZW50IENvbnRlbnRcblx0ICogQHBhcmFtIHNlY3Rpb25EZXRhaWxzIERldGFpbHNcblx0ICogQHJldHVybnMgSXMgdGhlIHNlY3Rpb24gYWRqdXN0ZWQuXG5cdCAqL1xuXHRhZGp1c3RGb3JTaW5nbGVDb250ZW50KFxuXHRcdHNpbmdsZUNvbnRlbnQ6IE1hbmFnZWRPYmplY3QsXG5cdFx0c2VjdGlvbkRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCBPYmplY3RQYWdlU3ViU2VjdGlvbiB8IFRpdGxlIHwgYm9vbGVhbj5cblx0KTogQWRqdXN0bWVudFByb3BzIHtcblx0XHQvLyBzYXBVaVRhYmxlT25PYmplY3RQYWdlQWRqdXN0bWVudHNGb3JTZWN0aW9uIGNsYXNzIGF0IGxldmVsIG1ha2VzIGJhY2tncm91bmQgb2Ygc3Vic2VjdGlvbiB0aXRsZXMgdHJhbnNwYXJlbnQuXG5cdFx0Ly8gVGhpcyB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGlzIHByb3BhZ2F0ZWQgdG8gY29udGVudHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gc2hvdyBvcGFxdWUgYmFja2dyb3VuZHMgYnkgZGVmYXVsdC5cblx0XHQvLyBXZSBuZWVkIHRvIGFkZCBleGNsdXNpb24gY2xhc3MgXCJzYXBVaUFkanVzdGVkU2VjdGlvblN1YnNlY3Rpb25XaXRob3V0VGFibGVcIiB0byB0aGUgc3Vic2VjdGlvbiB0aGF0IGRvZXNuJ3QgbmVlZFxuXHRcdGNvbnN0IGNsYXNzZXNUb0FkZDogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cdFx0Y29uc3Qgc2VjdGlvbk9ubHlDb250ZW50ID0gc2luZ2xlQ29udGVudCBhcyB1bmtub3duIGFzIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3I7XG5cdFx0Ly8gVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYmUgY2FsbGVkIGZyb20gdGhlIGV4dGVuc2lvbkFQSSBhbG9uZyB3aXRoIHNvbWUgY29udHJvbHMgYnkgdGhlIGFwcGxpY2F0aW9uIGRldmVsb3BlciwgdGhlIGJlbG93IGNoZWNrIGlzIGFkZGVkIHRvIGNvdmVyIHRoZSBjYXNlcyB3aGVyZSB0aGUgY29udHJvbHMgcGFzc2VkIGxpa2Ugc2FwLm0uVGl0bGUgYXJlIG5vdCBpbXBsZW1lbnRpbmcgdGhlIGludGVyZmFjZVxuXHRcdGNvbnN0IGNvbnRlbnRSb2xlID0gc2VjdGlvbk9ubHlDb250ZW50LmdldFNlY3Rpb25Db250ZW50Um9sZSAmJiBzZWN0aW9uT25seUNvbnRlbnQuZ2V0U2VjdGlvbkNvbnRlbnRSb2xlKCk7XG5cdFx0aWYgKGNvbnRlbnRSb2xlID09PSBcInByb3ZpZGVyXCIpIHtcblx0XHRcdGNvbnN0IGluZm9Gcm9tUHJvdmlkZXIgPVxuXHRcdFx0XHRzZWN0aW9uT25seUNvbnRlbnQuZ2V0RGF0YUZyb21Qcm92aWRlciAmJiBzZWN0aW9uT25seUNvbnRlbnQuZ2V0RGF0YUZyb21Qcm92aWRlcih0aGlzLnVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzKTtcblx0XHRcdGlmIChpbmZvRnJvbVByb3ZpZGVyICYmIHRoaXMuZ2V0VGl0bGUoKSA9PT0gaW5mb0Zyb21Qcm92aWRlci50aXRsZSkge1xuXHRcdFx0XHR0aGlzLnNldFRpdGxlKGluZm9Gcm9tUHJvdmlkZXIudGl0bGUpO1xuXHRcdFx0XHR0aGlzLnNldFNob3dUaXRsZSh0cnVlKTtcblx0XHRcdFx0Ly8gVE9ETzogQ2hlY2sgaWYgdGhpcyBpcyByZWFsbHkgbmVlZGVkP1xuXHRcdFx0XHRjbGFzc2VzVG9BZGQuYWRkKFwic2FwVWlUYWJsZU9uT2JqZWN0UGFnZUFkanVzdG1lbnRzRm9yU2VjdGlvblwiKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbnRlbnRSb2xlID09PSBcImNvbnN1bWVyXCIpIHtcblx0XHRcdGxldCB0aXRsZSA9IHRoaXMuZ2V0U2VjdGlvblRpdGxlKCk7XG5cdFx0XHRpZiAoc2VjdGlvbkRldGFpbHM/LnNlY3Rpb25mcm9tQ29sbGVjdGlvbkZhY2V0KSB7XG5cdFx0XHRcdHRpdGxlID0gKHNlY3Rpb25EZXRhaWxzPy5UaXRsZSBhcyBUaXRsZSk/LmdldFRleHQoKTtcblx0XHRcdFx0KHNlY3Rpb25EZXRhaWxzPy5UaXRsZSBhcyBUaXRsZSk/LnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0XHQoc2VjdGlvbkRldGFpbHM/LlN1YlNlY3Rpb24gYXMgT2JqZWN0UGFnZVN1YlNlY3Rpb24pPy5zZXRTaG93VGl0bGUoZmFsc2UpO1xuXHRcdFx0fSBlbHNlIGlmIChzZWN0aW9uRGV0YWlscz8uc2VjdGlvbkZyb21SZWZlcmVuY2VGYWNldCkge1xuXHRcdFx0XHR0aXRsZSA9IChzZWN0aW9uRGV0YWlscz8uU3ViU2VjdGlvbiBhcyBPYmplY3RQYWdlU3ViU2VjdGlvbik/LmdldFRpdGxlKCk7XG5cdFx0XHRcdChzZWN0aW9uRGV0YWlscz8uU3ViU2VjdGlvbiBhcyBPYmplY3RQYWdlU3ViU2VjdGlvbik/LnNldFNob3dUaXRsZShmYWxzZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGl0bGUgPT09IFwiXCIgJiYgc2VjdGlvbkRldGFpbHM/LlN1YlNlY3Rpb24pIHtcblx0XHRcdFx0dGl0bGUgPSAoc2VjdGlvbkRldGFpbHM/LlN1YlNlY3Rpb24gYXMgT2JqZWN0UGFnZVN1YlNlY3Rpb24pLmdldFRpdGxlKCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc2VjdGlvbk9ubHlDb250ZW50LnNlbmREYXRhVG9Db25zdW1lcikge1xuXHRcdFx0XHRjb25zdCBzdWJTZWN0aW9ucyA9IHRoaXMuZ2V0U3ViU2VjdGlvbnMoKTtcblx0XHRcdFx0Y29uc3QgaGFzTXVsdGlwbGVTdWJzZWN0aW9ucyA9ICEhKHN1YlNlY3Rpb25zPy5sZW5ndGggPiAxKTtcblxuXHRcdFx0XHRzZWN0aW9uT25seUNvbnRlbnQuc2VuZERhdGFUb0NvbnN1bWVyKHtcblx0XHRcdFx0XHR0aXRsZUxldmVsOiB0aGlzLmdldFRpdGxlTGV2ZWwoKSxcblx0XHRcdFx0XHR0aXRsZTogdGl0bGUsXG5cdFx0XHRcdFx0aGVhZGVyU3R5bGU6IGhhc011bHRpcGxlU3Vic2VjdGlvbnMgPyBcIkg1XCIgOiBcIkg0XCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuc2V0U2hvd1RpdGxlKCEhc2VjdGlvbkRldGFpbHM/LnNob3dUaXRsZSk7XG5cdFx0XHRcdGNsYXNzZXNUb0FkZC5hZGQoXCJzYXBVaVRhYmxlT25PYmplY3RQYWdlQWRqdXN0bWVudHNGb3JTZWN0aW9uXCIpO1xuXG5cdFx0XHRcdC8vIGlmIHRoZSBzZWN0aW9uIGhhcyBvbmx5IHN1YiBzZWN0aW9uLCB0aGVuIHRoZSBzdWIgc2VjdGlvbidzIHRpdGxlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkXG5cdFx0XHRcdGlmICghaGFzTXVsdGlwbGVTdWJzZWN0aW9ucykgc3ViU2VjdGlvbnNbMF0uc2V0U2hvd1RpdGxlKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHNpbmdsZUNvbnRlbnQ/LmlzQShcInNhcC5tLlRpdGxlXCIpKSB7XG5cdFx0XHRjb25zdCBzdWJTZWN0aW9ucyA9IHRoaXMuZ2V0VmlzaWJsZVN1YlNlY3Rpb25zKCkgfHwgW107XG5cdFx0XHRjb25zdCBoYXNNdWx0aXBsZVN1YnNlY3Rpb25zID0gc3ViU2VjdGlvbnMubGVuZ3RoID4gMTtcblxuXHRcdFx0Ly8gSGFuZGxlIHRpdGxlIHN0eWxpbmcgYW5kIHZpc2liaWxpdHkgaWYgcmV1c2UgY29tcG9uZW50IGlzIG5vdCBlbmFibGVkXG5cdFx0XHRpZiAoIXNlY3Rpb25EZXRhaWxzPy5tdWx0aXBsZVN1YlNlY3Rpb25zV2l0aFJldXNlQ29tcG9uZW50KSB7XG5cdFx0XHRcdGNvbnN0IHRpdGxlID0gc2luZ2xlQ29udGVudCBhcyBUaXRsZTtcblx0XHRcdFx0dGl0bGUuc2V0VGV4dCh0aGlzLmdldFRpdGxlKCkpO1xuXHRcdFx0XHR0aXRsZS5zZXRUaXRsZVN0eWxlKGhhc011bHRpcGxlU3Vic2VjdGlvbnMgPyBcIkg1XCIgOiBcIkg0XCIpO1xuXHRcdFx0XHR0aXRsZS5zZXRMZXZlbCh0aGlzLmdldFRpdGxlTGV2ZWwoKSk7XG5cdFx0XHRcdHRoaXMuc2V0U2hvd1RpdGxlKGZhbHNlKTtcblx0XHRcdFx0Y2xhc3Nlc1RvQWRkLmFkZChcInNhcFVpVGFibGVPbk9iamVjdFBhZ2VBZGp1c3RtZW50c0ZvclNlY3Rpb25cIik7XG5cdFx0XHR9XG5cdFx0XHQvLyBIaWRlIHN1YnNlY3Rpb24gdGl0bGUgaWYgdGhlcmUncyBvbmx5IG9uZSB2aXNpYmxlIHN1YnNlY3Rpb25cblx0XHRcdGlmIChzdWJTZWN0aW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0c3ViU2VjdGlvbnNbMF0uc2V0U2hvd1RpdGxlKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHRoaXMuY2hlY2tJZk5vdGVzUmV1c2VDb21wb25lbnQoc2luZ2xlQ29udGVudCkpIHtcblx0XHRcdC8qKlxuXHRcdFx0ICogTm90ZXMgUmV1c2UgY29tcG9uZW50IGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSA6XG5cdFx0XHQgKiA8VkJveCBpZD1cIk5vdGVTZWN0aW9uXCI+XG5cdFx0XHQgKiA8TWVzc2FnZVN0cmlwIGlkPVwibm90ZXNEZWJ1Z1Byb3BlcnRpZXNcIj5cblx0XHRcdCAqIDxMaXN0IGlkPVwiTm90ZXNMaXN0XCI+XG5cdFx0XHQgKiA8aGVhZGVyVG9vbGJhcj5cblx0XHRcdCAqIDxPdmVyZmxvd1Rvb2xiYXIgaWQ9XCJub3RlSGVhZGVyT3ZlcmZsb3dUb29sYmFyXCIgc3R5bGU9XCJTdGFuZGFyZFwiPlxuXHRcdFx0ICogICAgICAgPFRpdGxlIGlkPVwibm90ZUhlYWRlck92ZXJmbG93VG9vbGJhclRpdGxlXCIvPlxuXHRcdFx0ICpcdFx0Li4uLi4uXG5cdFx0XHQgKlx0PC9PdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHQgKlx0PC9oZWFkZXJUb29sYmFyPlxuXHRcdFx0ICpcdC4uLi4uLlxuXHRcdFx0ICpcdDwvTGlzdD5cblx0XHRcdCAqXHQ8L1ZCb3g+XG5cdFx0XHQgKlx0Li4uLi5cblx0XHRcdCAqXG5cdFx0XHQgKiBXZSBhcmUgYXBwbHlpbmcgdGhlIHRpdGxlIG1lcmdlIGxvZ2ljIGZvciB0aGUgdGl0bGUgd2l0aGluIHRoZSBvdmVyZmxvdyB0b29sYmFyXG5cdFx0XHQgKiBpbiB0aGUgZm9sbG93aW5nIGNvZGVcblx0XHRcdCAqXG5cdFx0XHQgKi9cblx0XHRcdGNvbnN0IHZCb3hJdGVtcyA9IChzaW5nbGVDb250ZW50IGFzIFZCb3gpLmdldEl0ZW1zKCk7XG5cdFx0XHR2Qm94SXRlbXMuZm9yRWFjaCgodkJveEl0ZW0pID0+IHtcblx0XHRcdFx0Y29uc3QgaGVhZGVyVG9vbGJhciA9IHZCb3hJdGVtLmdldEFnZ3JlZ2F0aW9uKFwiaGVhZGVyVG9vbGJhclwiKTtcblx0XHRcdFx0aWYgKGhlYWRlclRvb2xiYXIpIHtcblx0XHRcdFx0XHQoaGVhZGVyVG9vbGJhciBhcyBPdmVyZmxvd1Rvb2xiYXIpPy5nZXRDb250ZW50KCkuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGNvbnRyb2wuaXNBKFwic2FwLm0uVGl0bGVcIikpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgbm90ZXNUaXRsZSA9IGNvbnRyb2wgYXMgVGl0bGU7XG5cdFx0XHRcdFx0XHRcdG5vdGVzVGl0bGUuc2V0VGV4dCh0aGlzLmdldFRpdGxlKCkpO1xuXHRcdFx0XHRcdFx0XHRub3Rlc1RpdGxlLnNldFRpdGxlU3R5bGUoXCJINFwiKTtcblx0XHRcdFx0XHRcdFx0bm90ZXNUaXRsZS5zZXRMZXZlbCh0aGlzLmdldFRpdGxlTGV2ZWwoKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0Ly8gU2luZ2xlIGNvbnRlbnQgd2l0aCBzaW5nbGUgc3Vic2VjdGlvbiBtZWFucyBzZWN0aW9uIHRpdGxlKDEpLCBzdWJzZWN0aW9uIHRpdGxlKDIpIGFuZCBOb3RlcyBSZXVzZSBjb21wb25lbnQgdGl0bGUoMykgYXJlIGF2YWlsYWJsZS5cblx0XHRcdC8vIFdlIHNoYWxsIHNob3cgb25seSAzLiBXZSBoaWRlIDEgYW5kIDIuXG5cdFx0XHRjb25zdCBzdWJTZWN0aW9ucyA9IHRoaXMuZ2V0VmlzaWJsZVN1YlNlY3Rpb25zKCk7XG5cdFx0XHRpZiAoc3ViU2VjdGlvbnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdHN1YlNlY3Rpb25zWzBdLnNldFNob3dUaXRsZShmYWxzZSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnNldFNob3dUaXRsZShmYWxzZSk7XG5cdFx0XHRjbGFzc2VzVG9BZGQuYWRkKFwic2FwVWlUYWJsZU9uT2JqZWN0UGFnZUFkanVzdG1lbnRzRm9yU2VjdGlvblwiKTtcblx0XHR9XG5cdFx0dGhpcy5hZGRTdHlsZUNsYXNzKEFycmF5LmZyb20oY2xhc3Nlc1RvQWRkKS5qb2luKFwiIFwiKSk7XG5cdFx0cmV0dXJuIHsgdGFibGVzQWRqdXN0ZWQ6IGNsYXNzZXNUb0FkZC5oYXMoXCJzYXBVaVRhYmxlT25PYmplY3RQYWdlQWRqdXN0bWVudHNGb3JTZWN0aW9uXCIpIH07XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2VjdGlvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztFQW9CQTtFQUFBLElBZU1BLE9BQU8sSUFBQUMsSUFBQSxHQUZaQyxjQUFjLENBQUMsZ0NBQWdDLEVBQUU7SUFBRUMsVUFBVSxFQUFFO0VBQW1ELENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBQ3BIQyxLQUFLLENBQUNDLG1CQUFtQixDQUFDLEVBQUFDLEtB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
436
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZWN0aW9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiZGVzaWdudGltZSIsIl9kZWMyIiwibWl4aW4iLCJTZWN0aW9uU3RhdGVIYW5kbGVyIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX09iamVjdFBhZ2VTZWN0aW9uIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJyZWdpc3RlckRlbGVnYXRlIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJldmVudERlbGVnYXRlcyIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJzdWJTZWN0aW9ucyIsImdldFN1YlNlY3Rpb25zIiwibGVuZ3RoIiwiZm9yRWFjaCIsInN1YlNlY3Rpb24iLCJnZXRCbG9ja3MiLCJzdWJTZWN0aW9uRXZlbnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiY2hlY2tBbmRBZGp1c3RTZWN0aW9uQ29udGVudCIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwidmlldyIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsInVzZVNpbmdsZVRleHRBcmVhRmllbGRBc05vdGVzIiwiY2hlY2tBbmRBZGp1c3RTZWN0aW9uQ29udGVudEZvclRleHRBcmVhIiwiY2hlY2tBbmRBZGp1c3RGb3JTaW5nbGVDb250ZW50Iiwic2V0T25TZWN0aW9uTG9hZGVkIiwib25TZWN0aW9uTG9hZGVkIiwibG9hZFNwbGl0Iiwic3BsaXQiLCJfc2VjdGlvbkxvYWRNZXRob2ROYW1lIiwicG9wIiwiX3NlY3Rpb25Mb2FkTW9kdWxlTmFtZSIsImpvaW4iLCJzZXRQcm9wZXJ0eSIsImFwcGx5U2V0dGluZ3MiLCJtU2V0dGluZ3MiLCJvU2NvcGUiLCJ0ZW1wbGF0ZUNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkhvb2tTdXBwb3J0IiwiaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJ1cGRhdGVOb25UYWJsZVN1YlNlY3Rpb25CYWNrZ3JvdW5kIiwiYWRqdXN0bWVudFJlc3VsdHMiLCJoYXNTdHlsZUNsYXNzIiwiX3JlZiIsInRhYmxlc0FkanVzdGVkIiwicmVtb3ZlU3R5bGVDbGFzcyIsImFkZFN0eWxlQ2xhc3MiLCJ2aXNpYmxlU3ViU2VjdGlvbnMiLCJnZXRWaXNpYmxlU3ViU2VjdGlvbnMiLCJyZWR1Y2UiLCJyZXN1bHRzIiwiY29udGVudCIsImdldFNpbmdsZUNvbnRlbnQiLCJhZGp1c3RGb3JTaW5nbGVDb250ZW50IiwicHVzaCIsImdldFZpZXdEYXRhIiwic2VjdGlvbkxheW91dCIsInNpbmdsZUNvbnRlbnQiLCJpc0EiLCJjaGVja0lmTm90ZXNSZXVzZUNvbXBvbmVudCIsInNpbmdsZUNvbnRlbnRUYWJsZUFkanVzdGVkIiwiRlBNSGVscGVyIiwibG9hZE1vZHVsZUFuZENhbGxNZXRob2QiLCJjaGVja0FuZEFkanVzdFRpdGxlcyIsIkxvZyIsImRlYnVnIiwiZ2V0SWQiLCJpbmNsdWRlcyIsInNpbmdsZVN1YlNlY3Rpb25UYWJsZUFkanVzdGVkIiwiYWRqdXN0U2VjdGlvbkNvbnRlbnRXaXRoVGl0bGUiLCJzdWJzZWN0aW9uIiwiYmxvY2tzIiwiZ2V0QWdncmVnYXRpb24iLCJzZWN0aW9uRnJvbVJlZmVyZW5jZUZhY2V0IiwiU3ViU2VjdGlvbiIsInNob3dUaXRsZSIsImdldE1haW5Db250ZW50IiwiRnVuY3Rpb24iLCJhZGp1c3RtZW50UHJvcHMiLCJzZWN0aW9uZnJvbUNvbGxlY3Rpb25GYWNldCIsIlRpdGxlIiwiZ2V0VmlzaWJsZSIsImdldFNlY3Rpb25UaXRsZSIsInRpdGxlIiwiZ2V0VGl0bGUiLCJzZWN0aW9uRGV0YWlscyIsImNsYXNzZXNUb0FkZCIsIlNldCIsInNlY3Rpb25Pbmx5Q29udGVudCIsImNvbnRlbnRSb2xlIiwiZ2V0U2VjdGlvbkNvbnRlbnRSb2xlIiwiaW5mb0Zyb21Qcm92aWRlciIsImdldERhdGFGcm9tUHJvdmlkZXIiLCJzZXRTaG93VGl0bGUiLCJhZGQiLCJnZXRUZXh0Iiwic2V0VmlzaWJsZSIsInNlbmREYXRhVG9Db25zdW1lciIsImhhc011bHRpcGxlU3Vic2VjdGlvbnMiLCJ0aXRsZUxldmVsIiwiZ2V0VGl0bGVMZXZlbCIsImhlYWRlclN0eWxlIiwibXVsdGlwbGVTdWJTZWN0aW9uc1dpdGhSZXVzZUNvbXBvbmVudCIsInNldFRleHQiLCJzZXRUaXRsZVN0eWxlIiwic2V0TGV2ZWwiLCJ2Qm94SXRlbXMiLCJnZXRJdGVtcyIsInZCb3hJdGVtIiwiaGVhZGVyVG9vbGJhciIsImdldENvbnRlbnQiLCJjb250cm9sIiwibm90ZXNUaXRsZSIsIkFycmF5IiwiZnJvbSIsImhhcyIsIk9iamVjdFBhZ2VTZWN0aW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgbWl4aW4sIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgSG9va1N1cHBvcnQgZnJvbSBcInNhcC9mZS9iYXNlL0hvb2tTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IEZQTUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9GUE1IZWxwZXJcIjtcbmltcG9ydCB0eXBlIElTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvc2VjdGlvbi9JU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgU2VjdGlvblN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL21peGluL1NlY3Rpb25TdGF0ZUhhbmRsZXJcIjtcbmltcG9ydCB0eXBlIFN1YlNlY3Rpb25CbG9jayBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL2NvbnRyb2xzL1N1YlNlY3Rpb25CbG9ja1wiO1xuaW1wb3J0IHR5cGUgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCB0eXBlIFRpdGxlIGZyb20gXCJzYXAvbS9UaXRsZVwiO1xuaW1wb3J0IHR5cGUgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgRHluYW1pY1NpZGVDb250ZW50IGZyb20gXCJzYXAvdWkvbGF5b3V0L0R5bmFtaWNTaWRlQ29udGVudFwiO1xuaW1wb3J0IHR5cGUgeyAkT2JqZWN0UGFnZVNlY3Rpb25TZXR0aW5ncyB9IGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlU2VjdGlvblwiO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCBPYmplY3RQYWdlU2VjdGlvbiBmcm9tIFwic2FwL3V4YXAvT2JqZWN0UGFnZVNlY3Rpb25cIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VTdWJTZWN0aW9uIGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlU3ViU2VjdGlvblwiO1xuaW1wb3J0IHR5cGUgU3ViU2VjdGlvbiBmcm9tIFwiLi9zZWN0aW9uL1N1YlNlY3Rpb25cIjtcblxudHlwZSBBZGp1c3RtZW50UHJvcHMgPSB7XG5cdHRhYmxlc0FkanVzdGVkPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgQWRqdXN0bWVudFJlc3VsdHMgPSB7XG5cdHN1YlNlY3Rpb246IE9iamVjdFBhZ2VTdWJTZWN0aW9uO1xufSAmIEFkanVzdG1lbnRQcm9wcztcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5TZWN0aW9uXCIsIHsgZGVzaWdudGltZTogXCJzYXAvdXhhcC9kZXNpZ250aW1lL09iamVjdFBhZ2VTZWN0aW9uLmRlc2lnbnRpbWVcIiB9KVxuQG1peGluKFNlY3Rpb25TdGF0ZUhhbmRsZXIpXG5jbGFzcyBTZWN0aW9uIGV4dGVuZHMgT2JqZWN0UGFnZVNlY3Rpb24ge1xuXHQvLyBUT0RPOiB0aGlzIHByb2JhYmx5IG1ha2VzIHNlbnNlIHRvIGJlIGFuIGV2ZW50LiBCdXQgd2UgY2FuIGFkZHJlc3MgdGhpcyBsYXRlci5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRvblNlY3Rpb25Mb2FkZWQhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0dXNlU2luZ2xlVGV4dEFyZWFGaWVsZEFzTm90ZXMhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBQYXRoIHRvIHRoZSBhcHBseSBzdGF0ZSBoYW5kbGVyIHRvIGJlIGNhbGxlZCBkdXJpbmcgc3RhdGUgaW50ZXJhY3Rpb25zLlxuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRhcHBseVN0YXRlSGFuZGxlcj86IHN0cmluZztcblxuXHQvKipcblx0ICogUGF0aCB0byB0aGUgcmV0cmlldmUgc3RhdGUgaGFuZGxlciB0byBiZSBjYWxsZWQgZHVyaW5nIHN0YXRlIGludGVyYWN0aW9ucy5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cmV0cmlldmVTdGF0ZUhhbmRsZXI/OiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogJE9iamVjdFBhZ2VTZWN0aW9uU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8U2VjdGlvbj4sIG90aGVycz86ICRPYmplY3RQYWdlU2VjdGlvblNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyB1bmtub3duIGFzIHN0cmluZywgb3RoZXJzKTtcblx0XHR0aGlzLnJlZ2lzdGVyRGVsZWdhdGUoKTtcblx0fVxuXG5cdF9zZWN0aW9uTG9hZE1ldGhvZE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRfc2VjdGlvbkxvYWRNb2R1bGVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSByZWdpc3RlckRlbGVnYXRlKCk6IHZvaWQge1xuXHRcdGNvbnN0IGV2ZW50RGVsZWdhdGVzID0ge1xuXHRcdFx0b25BZnRlclJlbmRlcmluZzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRsZXQgc3ViU2VjdGlvbnMgPSB0aGlzLmdldFN1YlNlY3Rpb25zKCk7XG5cdFx0XHRcdGlmIChzdWJTZWN0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRzdWJTZWN0aW9ucy5mb3JFYWNoKChzdWJTZWN0aW9uOiBTdWJTZWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHQvKiB3ZSBjaGVjayBpbmRpdmlkdWFsIHN1YnNlY3Rpb24gZm9yIGJsb2Nrcy4gSWYgbm90IGF2YWlsYWJsZSB3ZSB3YWl0IGZvciB0aGVtIHRvIGJlIGFkZGVkKG9uQmVmb3JlUmVuZGVyaW5nKSBiZWZvcmUgdHJpZ2dlcmluZyB0aXRsZSBtZXJnZSBsb2dpY3MgKi9cblx0XHRcdFx0XHRcdGlmIChzdWJTZWN0aW9uLmdldEJsb2NrcygpPy5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3ViU2VjdGlvbkV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0b25CZWZvcmVSZW5kZXJpbmc6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tBbmRBZGp1c3RTZWN0aW9uQ29udGVudCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3ViU2VjdGlvbi5yZW1vdmVFdmVudERlbGVnYXRlKHN1YlNlY3Rpb25FdmVudERlbGVnYXRlKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdHN1YlNlY3Rpb24uYWRkRXZlbnREZWxlZ2F0ZShzdWJTZWN0aW9uRXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrQW5kQWRqdXN0U2VjdGlvbkNvbnRlbnQoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLmNoZWNrQW5kQWRqdXN0U2VjdGlvbkNvbnRlbnQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHR0aGlzLmFkZEV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGZvciB0aGUgc2VjdGlvbiBjb250ZW50IGFuZCBhZGp1c3RzIHRoZSBzZWN0aW9uIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUgY29udGVudC5cblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0Y2hlY2tBbmRBZGp1c3RTZWN0aW9uQ29udGVudCgpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRpZiAodGhpcy51c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3Rlcykge1xuXHRcdFx0dGhpcy5jaGVja0FuZEFkanVzdFNlY3Rpb25Db250ZW50Rm9yVGV4dEFyZWEoKTtcblx0XHR9XG5cdFx0dGhpcy5jaGVja0FuZEFkanVzdEZvclNpbmdsZUNvbnRlbnQodmlldyk7XG5cdH1cblxuXHRzZXRPblNlY3Rpb25Mb2FkZWQob25TZWN0aW9uTG9hZGVkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBsb2FkU3BsaXQgPSBvblNlY3Rpb25Mb2FkZWQuc3BsaXQoXCIuXCIpO1xuXHRcdHRoaXMuX3NlY3Rpb25Mb2FkTWV0aG9kTmFtZSA9IGxvYWRTcGxpdD8ucG9wKCk7XG5cdFx0dGhpcy5fc2VjdGlvbkxvYWRNb2R1bGVOYW1lID0gbG9hZFNwbGl0Py5qb2luKFwiL1wiKTtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwib25TZWN0aW9uTG9hZGVkXCIsIG9uU2VjdGlvbkxvYWRlZCk7XG5cdH1cblxuXHQvLyBUT0RPOiBDaGVjayBpZiBvbkFmdGVyUmVuZGVyaW5nIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYXBwbHlTZXR0aW5ncy5cblx0YXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHRcdGNvbnN0IHRlbXBsYXRlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMpIGFzIFRlbXBsYXRlQ29tcG9uZW50O1xuXHRcdGNvbnN0IHBhZ2VDb250cm9sbGVyID0gdGVtcGxhdGVDb21wb25lbnQuZ2V0Um9vdENvbnRyb2xsZXIoKTtcblx0XHRpZiAocGFnZUNvbnRyb2xsZXIpIHtcblx0XHRcdEhvb2tTdXBwb3J0LmluaXRDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHBhZ2VDb250cm9sbGVyKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlIHN1YnNlY3Rpb24gYmFja2dyb3VuZCBjbGFzcyBiYXNlZCBvbiB0YWJsZSBhZGp1c3RtZW50cyBtYWRlLlxuXHQgKiBAcGFyYW0gYWRqdXN0bWVudFJlc3VsdHMgQXJyYXkgb2YgYWRqdXN0bWVudCByZXN1bHRzXG5cdCAqL1xuXHR1cGRhdGVOb25UYWJsZVN1YlNlY3Rpb25CYWNrZ3JvdW5kKGFkanVzdG1lbnRSZXN1bHRzOiBBZGp1c3RtZW50UmVzdWx0c1tdKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaGFzU3R5bGVDbGFzcyhcInNhcFVpVGFibGVPbk9iamVjdFBhZ2VBZGp1c3RtZW50c0ZvclNlY3Rpb25cIikpIHtcblx0XHRcdGFkanVzdG1lbnRSZXN1bHRzLmZvckVhY2goKHsgc3ViU2VjdGlvbiwgdGFibGVzQWRqdXN0ZWQgfSkgPT4ge1xuXHRcdFx0XHRpZiAodGFibGVzQWRqdXN0ZWQpIHtcblx0XHRcdFx0XHRzdWJTZWN0aW9uLnJlbW92ZVN0eWxlQ2xhc3MoXCJzYXBVaUFkanVzdGVkU2VjdGlvblN1YnNlY3Rpb25XaXRob3V0VGFibGVcIik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c3ViU2VjdGlvbi5hZGRTdHlsZUNsYXNzKFwic2FwVWlBZGp1c3RlZFNlY3Rpb25TdWJzZWN0aW9uV2l0aG91dFRhYmxlXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgbG9vcHMgdGhyb3VnaCBhbGwgdGhlIHZpc2libGUgc3Vic2VjdGlvbnMgYW5kIHRyaWdnZXJzIHRoZSB0ZXh0IGFyZWEgZmxvdyBpZiB0aGF0cyB0aGUgb25seSBzaW5nbGUgY29udHJvbCB3aXRoaW4gdGhlIHNlY3Rpb24uXG5cdCAqL1xuXHRjaGVja0FuZEFkanVzdFNlY3Rpb25Db250ZW50Rm9yVGV4dEFyZWEoKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlzaWJsZVN1YlNlY3Rpb25zID0gdGhpcy5nZXRWaXNpYmxlU3ViU2VjdGlvbnMoKTtcblx0XHRjb25zdCBhZGp1c3RtZW50UmVzdWx0cyA9IHZpc2libGVTdWJTZWN0aW9ucy5yZWR1Y2UoKHJlc3VsdHM6IEFkanVzdG1lbnRSZXN1bHRzW10sIHN1YlNlY3Rpb246IE9iamVjdFBhZ2VTdWJTZWN0aW9uKSA9PiB7XG5cdFx0XHRsZXQgdGFibGVzQWRqdXN0ZWQ7XG5cdFx0XHRjb25zdCBjb250ZW50ID0gdGhpcy5nZXRTaW5nbGVDb250ZW50KFtzdWJTZWN0aW9uXSk7XG5cdFx0XHRpZiAoY29udGVudCkge1xuXHRcdFx0XHR0YWJsZXNBZGp1c3RlZCA9IHRoaXMuYWRqdXN0Rm9yU2luZ2xlQ29udGVudChjb250ZW50KS50YWJsZXNBZGp1c3RlZDtcblx0XHRcdH1cblx0XHRcdHJlc3VsdHMucHVzaCh7IHN1YlNlY3Rpb24sIHRhYmxlc0FkanVzdGVkIH0pO1xuXHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0fSwgW10pO1xuXHRcdHRoaXMudXBkYXRlTm9uVGFibGVTdWJTZWN0aW9uQmFja2dyb3VuZChhZGp1c3RtZW50UmVzdWx0cyk7XG5cdH1cblxuXHRjaGVja0FuZEFkanVzdEZvclNpbmdsZUNvbnRlbnQodmlldzogRkVWaWV3KTogdm9pZCB8IFByb21pc2U8dW5rbm93bj4ge1xuXHRcdGlmICgodmlldz8uZ2V0Vmlld0RhdGEoKSBhcyBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5ncyk/LnNlY3Rpb25MYXlvdXQgPT09IFwiUGFnZVwiKSB7XG5cdFx0XHRjb25zdCBzaW5nbGVDb250ZW50ID0gdGhpcy5nZXRTaW5nbGVDb250ZW50KCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHNpbmdsZUNvbnRlbnQgJiZcblx0XHRcdFx0KHNpbmdsZUNvbnRlbnQuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5zZWN0aW9uLklTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIikgfHxcblx0XHRcdFx0XHR0aGlzLmNoZWNrSWZOb3Rlc1JldXNlQ29tcG9uZW50KHNpbmdsZUNvbnRlbnQpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IHsgdGFibGVzQWRqdXN0ZWQ6IHNpbmdsZUNvbnRlbnRUYWJsZUFkanVzdGVkIH0gPSB0aGlzLmFkanVzdEZvclNpbmdsZUNvbnRlbnQoc2luZ2xlQ29udGVudCk7XG5cdFx0XHRcdGNvbnN0IHN1YlNlY3Rpb25zID0gdGhpcy5nZXRWaXNpYmxlU3ViU2VjdGlvbnMoKTtcblx0XHRcdFx0dGhpcy51cGRhdGVOb25UYWJsZVN1YlNlY3Rpb25CYWNrZ3JvdW5kKFt7IHN1YlNlY3Rpb246IHN1YlNlY3Rpb25zWzBdLCB0YWJsZXNBZGp1c3RlZDogc2luZ2xlQ29udGVudFRhYmxlQWRqdXN0ZWQgfV0pO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9zZWN0aW9uTG9hZE1vZHVsZU5hbWUgJiYgdGhpcy5fc2VjdGlvbkxvYWRNZXRob2ROYW1lKSB7XG5cdFx0XHRcdHJldHVybiBGUE1IZWxwZXIubG9hZE1vZHVsZUFuZENhbGxNZXRob2QodGhpcy5fc2VjdGlvbkxvYWRNb2R1bGVOYW1lLCB0aGlzLl9zZWN0aW9uTG9hZE1ldGhvZE5hbWUsIHZpZXcsIHRoaXMpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmdldFN1YlNlY3Rpb25zKCkubGVuZ3RoID4gMSkge1xuXHRcdFx0XHQvLyBjYWxsIG1lcmdlIHRpdGxlIGxvZ2ljIGZvciBzdWJzZWN0aW9uc1xuXHRcdFx0XHR0aGlzLmNoZWNrQW5kQWRqdXN0VGl0bGVzKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRMb2cuZGVidWcoXCJTZWN0aW9uIGNhbm5vdCBiZSBhZGp1c3RlZCBmb3Igc2luZ2xlIGNvbnRlbnQgOiBJbnRlcmZhY2UgJ0lTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3InIGlzIG5vdCBpbXBsZW1lbnRlZFwiKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5jaGVja0FuZEFkanVzdFRpdGxlcygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKlxuXHQgKiBAcGFyYW0gc2luZ2xlQ29udGVudCBPYmplY3Qgb2YgdGhlIGNvbnRlbnQgcHJlc2VudCB3aXRoaW4gdGhlIHNlY3Rpb24uXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNvbnRlbnQgcHJlc2VudCBpcyBhIG5vdGVzIHJldXNlIGNvbXBvbmVudFxuXHQgKi9cblx0Y2hlY2tJZk5vdGVzUmV1c2VDb21wb25lbnQoc2luZ2xlQ29udGVudDogTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuXHRcdGlmIChzaW5nbGVDb250ZW50LmlzQShcInNhcC5tLlZCb3hcIikgJiYgc2luZ2xlQ29udGVudC5nZXRJZCgpLmluY2x1ZGVzKFwiTm90ZVNlY3Rpb25cIikpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiBjaGVja3MgZm9yIHRoZSB2aXNpYmxlIHN1YnNlY3Rpb25zIGFuZCBjaGVja3MgZm9yIHRoZSBjb2xsZWN0aW9uIGZhY2V0IGxhYmVsLCBJZiBwcmVzZW50IHRoZW4gd2UgbWVyZ2UgdGhlIHRpdGxlIGFuZCB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIER5bmFtaWNTaWRlQ29uZW50IGFzIHdlbGwuXG5cdCAqL1xuXHRjaGVja0FuZEFkanVzdFRpdGxlcygpOiB2b2lkIHtcblx0XHRjb25zdCB2aXNpYmxlU3ViU2VjdGlvbnMgPSB0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpO1xuXHRcdGlmICh2aXNpYmxlU3ViU2VjdGlvbnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCB7IHRhYmxlc0FkanVzdGVkOiBzaW5nbGVTdWJTZWN0aW9uVGFibGVBZGp1c3RlZCB9ID0gdGhpcy5hZGp1c3RTZWN0aW9uQ29udGVudFdpdGhUaXRsZSh2aXNpYmxlU3ViU2VjdGlvbnNbMF0pO1xuXHRcdFx0dGhpcy51cGRhdGVOb25UYWJsZVN1YlNlY3Rpb25CYWNrZ3JvdW5kKFt7IHN1YlNlY3Rpb246IHZpc2libGVTdWJTZWN0aW9uc1swXSwgdGFibGVzQWRqdXN0ZWQ6IHNpbmdsZVN1YlNlY3Rpb25UYWJsZUFkanVzdGVkIH1dKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYWRqdXN0bWVudFJlc3VsdHMgPSB2aXNpYmxlU3ViU2VjdGlvbnMucmVkdWNlKChyZXN1bHRzOiBBZGp1c3RtZW50UmVzdWx0c1tdLCBzdWJzZWN0aW9uOiBPYmplY3RQYWdlU3ViU2VjdGlvbikgPT4ge1xuXHRcdFx0XHRsZXQgdGFibGVzQWRqdXN0ZWQ7XG5cdFx0XHRcdGxldCBjb250ZW50O1xuXHRcdFx0XHRjb25zdCBibG9ja3MgPSBzdWJzZWN0aW9uLmdldEJsb2NrcygpO1xuXHRcdFx0XHQvLyBJbiBjYXNlIG9mIFRhYiBsYXlvdXQsIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIHNlY3Rpb24gaGFzIG9ubHkgb25lIHN1YnNlY3Rpb24gYW5kIHRoYXQgc3Vic2VjdGlvbiBoYXMgb25seSBvbmUgY29udHJvbFxuXHRcdFx0XHQvLyBJbiBjYXNlIG9mIGNvbGxlY3Rpb24gRmFjZXQsIHRoZSBmaXJzdCBibG9jayB3aWxsIGJlIFRpdGxlIGFuZCB0aGUgc2Vjb25kIGJsb2NrIHdpbGwgYmUgU3ViU2VjdGlvbkJsb2NrXG5cdFx0XHRcdGlmIChibG9ja3MubGVuZ3RoID09PSAyICYmIGJsb2Nrc1sxXT8uaXNBPFN1YlNlY3Rpb25CbG9jaz4oXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuY29udHJvbHMuU3ViU2VjdGlvbkJsb2NrXCIpKSB7XG5cdFx0XHRcdFx0dGFibGVzQWRqdXN0ZWQgPSB0aGlzLmFkanVzdFNlY3Rpb25Db250ZW50V2l0aFRpdGxlKHN1YnNlY3Rpb24pLnRhYmxlc0FkanVzdGVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEluIGNhc2Ugb2YgUmVmZXJlbmNlIEZhY2V0LCB0aGUgZmlyc3QgYmxvY2sgd2lsbCBiZSBTdWJTZWN0aW9uQmxvY2tcblx0XHRcdFx0ZWxzZSBpZiAoYmxvY2tzLmxlbmd0aCA9PT0gMSAmJiBibG9ja3NbMF0/LmlzQTxTdWJTZWN0aW9uQmxvY2s+KFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLmNvbnRyb2xzLlN1YlNlY3Rpb25CbG9ja1wiKSkge1xuXHRcdFx0XHRcdGNvbnRlbnQgPSBibG9ja3NbMF0uZ2V0QWdncmVnYXRpb24oXCJjb250ZW50XCIpIGFzIE1hbmFnZWRPYmplY3Q7XG5cdFx0XHRcdFx0aWYgKGNvbnRlbnQuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5zZWN0aW9uLklTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIikpIHtcblx0XHRcdFx0XHRcdHRhYmxlc0FkanVzdGVkID0gdGhpcy5hZGp1c3RGb3JTaW5nbGVDb250ZW50KGNvbnRlbnQsIHtcblx0XHRcdFx0XHRcdFx0c2VjdGlvbkZyb21SZWZlcmVuY2VGYWNldDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0U3ViU2VjdGlvbjogc3Vic2VjdGlvbixcblx0XHRcdFx0XHRcdFx0c2hvd1RpdGxlOiB0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpLmxlbmd0aCA+IDFcblx0XHRcdFx0XHRcdH0pLnRhYmxlc0FkanVzdGVkO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoKGNvbnRlbnQgYXMgRHluYW1pY1NpZGVDb250ZW50KT8uaXNBKFwic2FwLnVpLmxheW91dC5EeW5hbWljU2lkZUNvbnRlbnRcIikpIHtcblx0XHRcdFx0XHRcdGNvbnRlbnQgPVxuXHRcdFx0XHRcdFx0XHQoY29udGVudCBhcyBEeW5hbWljU2lkZUNvbnRlbnQpLmdldE1haW5Db250ZW50IGluc3RhbmNlb2YgRnVuY3Rpb24gJiZcblx0XHRcdFx0XHRcdFx0KGNvbnRlbnQgYXMgRHluYW1pY1NpZGVDb250ZW50KT8uZ2V0TWFpbkNvbnRlbnQoKTtcblx0XHRcdFx0XHRcdGlmIChjb250ZW50ICYmIGNvbnRlbnQubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQgPSBjb250ZW50WzBdO1xuXHRcdFx0XHRcdFx0XHR0YWJsZXNBZGp1c3RlZCA9IHRoaXMuYWRqdXN0Rm9yU2luZ2xlQ29udGVudChjb250ZW50LCB7XG5cdFx0XHRcdFx0XHRcdFx0c2VjdGlvbkZyb21SZWZlcmVuY2VGYWNldDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRTdWJTZWN0aW9uOiBzdWJzZWN0aW9uXG5cdFx0XHRcdFx0XHRcdH0pLnRhYmxlc0FkanVzdGVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXN1bHRzLnB1c2goeyBzdWJTZWN0aW9uOiBzdWJzZWN0aW9uLCB0YWJsZXNBZGp1c3RlZCB9KTtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHR9LCBbXSk7XG5cdFx0XHR0aGlzLnVwZGF0ZU5vblRhYmxlU3ViU2VjdGlvbkJhY2tncm91bmQoYWRqdXN0bWVudFJlc3VsdHMpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBmb3IgdGhlIGZvciB0aGUgY29sbGVjdGlvbiBmYWNldCBsYWJlbCxJZiBwcmVzZW50IHRoZW4gd2UgbWVyZ2UgdGhlIHRpdGxlLlxuXHQgKiBAcGFyYW0gc3Vic2VjdGlvbiBPYmplY3RQYWdlIFN1YlNlY3Rpb25cblx0ICovXG5cdGFkanVzdFNlY3Rpb25Db250ZW50V2l0aFRpdGxlKHN1YnNlY3Rpb246IE9iamVjdFBhZ2VTdWJTZWN0aW9uKTogQWRqdXN0bWVudFJlc3VsdHMge1xuXHRcdGxldCBhZGp1c3RtZW50UHJvcHM6IEFkanVzdG1lbnRQcm9wcyA9IHt9O1xuXHRcdGNvbnN0IGJsb2NrcyA9IHN1YnNlY3Rpb24uZ2V0QmxvY2tzKCk7XG5cdFx0bGV0IGNvbnRlbnQ7XG5cdFx0aWYgKGJsb2Nrcy5sZW5ndGggPT09IDIgJiYgYmxvY2tzWzFdLmlzQTxTdWJTZWN0aW9uQmxvY2s+KFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLmNvbnRyb2xzLlN1YlNlY3Rpb25CbG9ja1wiKSkge1xuXHRcdFx0Y29udGVudCA9IGJsb2Nrc1sxXS5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRcIikgYXMgTWFuYWdlZE9iamVjdDtcblx0XHRcdGlmIChjb250ZW50ICYmIGNvbnRlbnQuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5zZWN0aW9uLklTaW5nbGVTZWN0aW9uQ29udHJpYnV0b3JcIikgJiYgYmxvY2tzWzBdLmlzQTxUaXRsZT4oXCJzYXAubS5UaXRsZVwiKSkge1xuXHRcdFx0XHRhZGp1c3RtZW50UHJvcHMgPSB0aGlzLmFkanVzdEZvclNpbmdsZUNvbnRlbnQoY29udGVudCwge1xuXHRcdFx0XHRcdHNlY3Rpb25mcm9tQ29sbGVjdGlvbkZhY2V0OiB0cnVlLFxuXHRcdFx0XHRcdFRpdGxlOiBibG9ja3NbMF0sXG5cdFx0XHRcdFx0U3ViU2VjdGlvbjogc3Vic2VjdGlvbixcblx0XHRcdFx0XHRzaG93VGl0bGU6IHRoaXMuZ2V0VmlzaWJsZVN1YlNlY3Rpb25zKCkubGVuZ3RoID4gMVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAoY29udGVudCAmJiBjb250ZW50LmlzQTxEeW5hbWljU2lkZUNvbnRlbnQ+KFwic2FwLnVpLmxheW91dC5EeW5hbWljU2lkZUNvbnRlbnRcIikpIHtcblx0XHRcdFx0Y29udGVudCA9IGNvbnRlbnQuZ2V0TWFpbkNvbnRlbnQgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJiBjb250ZW50Py5nZXRNYWluQ29udGVudCgpO1xuXHRcdFx0XHRpZiAoY29udGVudCAmJiBjb250ZW50Lmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRcdGNvbnRlbnQgPSBjb250ZW50WzBdO1xuXHRcdFx0XHRcdGFkanVzdG1lbnRQcm9wcyA9IHRoaXMuYWRqdXN0Rm9yU2luZ2xlQ29udGVudChjb250ZW50LCB7XG5cdFx0XHRcdFx0XHRzZWN0aW9uZnJvbUNvbGxlY3Rpb25GYWNldDogdHJ1ZSxcblx0XHRcdFx0XHRcdFRpdGxlOiBibG9ja3NbMF0gYXMgVGl0bGUsXG5cdFx0XHRcdFx0XHRTdWJTZWN0aW9uOiBzdWJzZWN0aW9uXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHsgc3ViU2VjdGlvbjogc3Vic2VjdGlvbiwgdGFibGVzQWRqdXN0ZWQ6IGFkanVzdG1lbnRQcm9wcy50YWJsZXNBZGp1c3RlZCB9O1xuXHR9XG5cblx0Z2V0U2luZ2xlQ29udGVudCh2aXNpYmxlU3ViU2VjdGlvbnM/OiBPYmplY3RQYWdlU3ViU2VjdGlvbltdKTogTWFuYWdlZE9iamVjdCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgc3ViU2VjdGlvbnMgPSB2aXNpYmxlU3ViU2VjdGlvbnMgPz8gdGhpcy5nZXRWaXNpYmxlU3ViU2VjdGlvbnMoKTtcblx0XHRpZiAoc3ViU2VjdGlvbnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCBibG9ja3MgPSBzdWJTZWN0aW9uc1swXS5nZXRCbG9ja3MoKTtcblx0XHRcdGlmIChibG9ja3MubGVuZ3RoID09PSAxICYmIGJsb2Nrc1swXS5pc0E8U3ViU2VjdGlvbkJsb2NrPihcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb250cm9scy5TdWJTZWN0aW9uQmxvY2tcIikpIHtcblx0XHRcdFx0cmV0dXJuIGJsb2Nrc1swXS5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRcIikgYXMgTWFuYWdlZE9iamVjdDtcblx0XHRcdH1cblx0XHRcdC8vSWYgdGhlcmUgaXMgYW4gaW52aXNpYmxlIHRleHQgYmVmb3JlIGEgc3RhbmRhcmQgYnVpbGRpbmcgYmxvY2ssIHRoZW4gYWxzbyB0aGUgbWVyZ2UgdGl0bGUgbG9naWMgc2hvdWxkIGJlIGFwcGxpZWQgYXMgaXRzIHN0aWxsIGEgc2luZ2xlIGNvbnRlbnRcblx0XHRcdGVsc2UgaWYgKFxuXHRcdFx0XHRibG9ja3MubGVuZ3RoID09PSAyICYmXG5cdFx0XHRcdGJsb2Nrc1swXS5pc0EoXCJzYXAudWkuY29yZS5JbnZpc2libGVUZXh0XCIpICYmXG5cdFx0XHRcdGJsb2Nrc1sxXS5pc0E8U3ViU2VjdGlvbkJsb2NrPihcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb250cm9scy5TdWJTZWN0aW9uQmxvY2tcIilcblx0XHRcdClcblx0XHRcdFx0cmV0dXJuIGJsb2Nrc1sxXS5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRcIikgYXMgTWFuYWdlZE9iamVjdDtcblx0XHR9XG5cdH1cblxuXHRnZXRWaXNpYmxlU3ViU2VjdGlvbnMoKTogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSB7XG5cdFx0Y29uc3Qgc3ViU2VjdGlvbnMgPSB0aGlzLmdldFN1YlNlY3Rpb25zKCk7XG5cdFx0cmV0dXJuIHN1YlNlY3Rpb25zLnJlZHVjZSgodmlzaWJsZVN1YlNlY3Rpb25zOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdLCBzdWJTZWN0aW9uKSA9PiB7XG5cdFx0XHRpZiAoc3ViU2VjdGlvbi5nZXRWaXNpYmxlKCkpIHtcblx0XHRcdFx0dmlzaWJsZVN1YlNlY3Rpb25zLnB1c2goc3ViU2VjdGlvbik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdmlzaWJsZVN1YlNlY3Rpb25zO1xuXHRcdH0sIFtdIGFzIE9iamVjdFBhZ2VTdWJTZWN0aW9uW10pO1xuXHR9XG5cblx0Z2V0U2VjdGlvblRpdGxlKCk6IHN0cmluZyB7XG5cdFx0bGV0IHRpdGxlID0gdGhpcy5nZXRUaXRsZSgpO1xuXHRcdGlmICh0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0dGl0bGUgPSB0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpWzBdLmdldFRpdGxlKCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aXRsZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGp1c3QgdGhlIHNlY3Rpb24gYW5kIHN1YnNlY3Rpb24gYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBjb250ZW50LlxuXHQgKiBAcGFyYW0gc2luZ2xlQ29udGVudCBDb250ZW50XG5cdCAqIEBwYXJhbSBzZWN0aW9uRGV0YWlscyBEZXRhaWxzXG5cdCAqIEByZXR1cm5zIElzIHRoZSBzZWN0aW9uIGFkanVzdGVkLlxuXHQgKi9cblx0YWRqdXN0Rm9yU2luZ2xlQ29udGVudChcblx0XHRzaW5nbGVDb250ZW50OiBNYW5hZ2VkT2JqZWN0LFxuXHRcdHNlY3Rpb25EZXRhaWxzPzogUmVjb3JkPHN0cmluZywgT2JqZWN0UGFnZVN1YlNlY3Rpb24gfCBUaXRsZSB8IGJvb2xlYW4+XG5cdCk6IEFkanVzdG1lbnRQcm9wcyB7XG5cdFx0Ly8gc2FwVWlUYWJsZU9uT2JqZWN0UGFnZUFkanVzdG1lbnRzRm9yU2VjdGlvbiBjbGFzcyBhdCBsZXZlbCBtYWtlcyBiYWNrZ3JvdW5kIG9mIHN1YnNlY3Rpb24gdGl0bGVzIHRyYW5zcGFyZW50LlxuXHRcdC8vIFRoaXMgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBpcyBwcm9wYWdhdGVkIHRvIGNvbnRlbnRzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIHNob3cgb3BhcXVlIGJhY2tncm91bmRzIGJ5IGRlZmF1bHQuXG5cdFx0Ly8gV2UgbmVlZCB0byBhZGQgZXhjbHVzaW9uIGNsYXNzIFwic2FwVWlBZGp1c3RlZFNlY3Rpb25TdWJzZWN0aW9uV2l0aG91dFRhYmxlXCIgdG8gdGhlIHN1YnNlY3Rpb24gdGhhdCBkb2Vzbid0IG5lZWRcblx0XHRjb25zdCBjbGFzc2VzVG9BZGQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXHRcdGNvbnN0IHNlY3Rpb25Pbmx5Q29udGVudCA9IHNpbmdsZUNvbnRlbnQgYXMgdW5rbm93biBhcyBJU2luZ2xlU2VjdGlvbkNvbnRyaWJ1dG9yO1xuXHRcdC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGJlIGNhbGxlZCBmcm9tIHRoZSBleHRlbnNpb25BUEkgYWxvbmcgd2l0aCBzb21lIGNvbnRyb2xzIGJ5IHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXIsIHRoZSBiZWxvdyBjaGVjayBpcyBhZGRlZCB0byBjb3ZlciB0aGUgY2FzZXMgd2hlcmUgdGhlIGNvbnRyb2xzIHBhc3NlZCBsaWtlIHNhcC5tLlRpdGxlIGFyZSBub3QgaW1wbGVtZW50aW5nIHRoZSBpbnRlcmZhY2Vcblx0XHRjb25zdCBjb250ZW50Um9sZSA9IHNlY3Rpb25Pbmx5Q29udGVudC5nZXRTZWN0aW9uQ29udGVudFJvbGUgJiYgc2VjdGlvbk9ubHlDb250ZW50LmdldFNlY3Rpb25Db250ZW50Um9sZSgpO1xuXHRcdGlmIChjb250ZW50Um9sZSA9PT0gXCJwcm92aWRlclwiKSB7XG5cdFx0XHRjb25zdCBpbmZvRnJvbVByb3ZpZGVyID1cblx0XHRcdFx0c2VjdGlvbk9ubHlDb250ZW50LmdldERhdGFGcm9tUHJvdmlkZXIgJiYgc2VjdGlvbk9ubHlDb250ZW50LmdldERhdGFGcm9tUHJvdmlkZXIodGhpcy51c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3Rlcyk7XG5cdFx0XHRpZiAoaW5mb0Zyb21Qcm92aWRlciAmJiB0aGlzLmdldFRpdGxlKCkgPT09IGluZm9Gcm9tUHJvdmlkZXIudGl0bGUpIHtcblx0XHRcdFx0Ly9jb21tZW50aW5nIG91dCB0aGlzIHJlZHVuZGVudCB0aXRsZSBzZXR0aW5nIHRvIGF2b2lkIHJlLXJlbmRlcmluZyBpc3N1ZXNcblx0XHRcdFx0Ly8gdGhpcy5zZXRUaXRsZShpbmZvRnJvbVByb3ZpZGVyLnRpdGxlKTtcblx0XHRcdFx0dGhpcy5zZXRTaG93VGl0bGUodHJ1ZSk7XG5cdFx0XHRcdC8vIFRPRE86IENoZWNrIGlmIHRoaXMgaXMgcmVhbGx5IG5lZWRlZD9cblx0XHRcdFx0Y2xhc3Nlc1RvQWRkLmFkZChcInNhcFVpVGFibGVPbk9iamVjdFBhZ2VBZGp1c3RtZW50c0ZvclNlY3Rpb25cIik7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChjb250ZW50Um9sZSA9PT0gXCJjb25zdW1lclwiKSB7XG5cdFx0XHRsZXQgdGl0bGUgPSB0aGlzLmdldFNlY3Rpb25UaXRsZSgpO1xuXHRcdFx0aWYgKHNlY3Rpb25EZXRhaWxzPy5zZWN0aW9uZnJvbUNvbGxlY3Rpb25GYWNldCkge1xuXHRcdFx0XHR0aXRsZSA9IChzZWN0aW9uRGV0YWlscz8uVGl0bGUgYXMgVGl0bGUpPy5nZXRUZXh0KCk7XG5cdFx0XHRcdChzZWN0aW9uRGV0YWlscz8uVGl0bGUgYXMgVGl0bGUpPy5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdFx0KHNlY3Rpb25EZXRhaWxzPy5TdWJTZWN0aW9uIGFzIE9iamVjdFBhZ2VTdWJTZWN0aW9uKT8uc2V0U2hvd1RpdGxlKGZhbHNlKTtcblx0XHRcdH0gZWxzZSBpZiAoc2VjdGlvbkRldGFpbHM/LnNlY3Rpb25Gcm9tUmVmZXJlbmNlRmFjZXQpIHtcblx0XHRcdFx0dGl0bGUgPSAoc2VjdGlvbkRldGFpbHM/LlN1YlNlY3Rpb24gYXMgT2JqZWN0UGFnZVN1YlNlY3Rpb24pPy5nZXRUaXRsZSgpO1xuXHRcdFx0XHQoc2VjdGlvbkRldGFpbHM/LlN1YlNlY3Rpb24gYXMgT2JqZWN0UGFnZVN1YlNlY3Rpb24pPy5zZXRTaG93VGl0bGUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRpdGxlID09PSBcIlwiICYmIHNlY3Rpb25EZXRhaWxzPy5TdWJTZWN0aW9uKSB7XG5cdFx0XHRcdHRpdGxlID0gKHNlY3Rpb25EZXRhaWxzPy5TdWJTZWN0aW9uIGFzIE9iamVjdFBhZ2VTdWJTZWN0aW9uKS5nZXRUaXRsZSgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHNlY3Rpb25Pbmx5Q29udGVudC5zZW5kRGF0YVRvQ29uc3VtZXIpIHtcblx0XHRcdFx0Y29uc3Qgc3ViU2VjdGlvbnMgPSB0aGlzLmdldFN1YlNlY3Rpb25zKCk7XG5cdFx0XHRcdGNvbnN0IGhhc011bHRpcGxlU3Vic2VjdGlvbnMgPSAhIShzdWJTZWN0aW9ucz8ubGVuZ3RoID4gMSk7XG5cblx0XHRcdFx0c2VjdGlvbk9ubHlDb250ZW50LnNlbmREYXRhVG9Db25zdW1lcih7XG5cdFx0XHRcdFx0dGl0bGVMZXZlbDogdGhpcy5nZXRUaXRsZUxldmVsKCksXG5cdFx0XHRcdFx0dGl0bGU6IHRpdGxlLFxuXHRcdFx0XHRcdGhlYWRlclN0eWxlOiBoYXNNdWx0aXBsZVN1YnNlY3Rpb25zID8gXCJINVwiIDogXCJINFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLnNldFNob3dUaXRsZSghIXNlY3Rpb25EZXRhaWxzPy5zaG93VGl0bGUpO1xuXHRcdFx0XHRjbGFzc2VzVG9BZGQuYWRkKFwic2FwVWlUYWJsZU9uT2JqZWN0UGFnZUFkanVzdG1lbnRzRm9yU2VjdGlvblwiKTtcblxuXHRcdFx0XHQvLyBpZiB0aGUgc2VjdGlvbiBoYXMgb25seSBzdWIgc2VjdGlvbiwgdGhlbiB0aGUgc3ViIHNlY3Rpb24ncyB0aXRsZSBzaG91bGQgbm90IGJlIGRpc3BsYXllZFxuXHRcdFx0XHRpZiAoIWhhc011bHRpcGxlU3Vic2VjdGlvbnMpIHN1YlNlY3Rpb25zWzBdLnNldFNob3dUaXRsZShmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChzaW5nbGVDb250ZW50Py5pc0EoXCJzYXAubS5UaXRsZVwiKSkge1xuXHRcdFx0Y29uc3Qgc3ViU2VjdGlvbnMgPSB0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpIHx8IFtdO1xuXHRcdFx0Y29uc3QgaGFzTXVsdGlwbGVTdWJzZWN0aW9ucyA9IHN1YlNlY3Rpb25zLmxlbmd0aCA+IDE7XG5cblx0XHRcdC8vIEhhbmRsZSB0aXRsZSBzdHlsaW5nIGFuZCB2aXNpYmlsaXR5IGlmIHJldXNlIGNvbXBvbmVudCBpcyBub3QgZW5hYmxlZFxuXHRcdFx0aWYgKCFzZWN0aW9uRGV0YWlscz8ubXVsdGlwbGVTdWJTZWN0aW9uc1dpdGhSZXVzZUNvbXBvbmVudCkge1xuXHRcdFx0XHRjb25zdCB0aXRsZSA9IHNpbmdsZUNvbnRlbnQgYXMgVGl0bGU7XG5cdFx0XHRcdHRpdGxlLnNldFRleHQodGhpcy5nZXRUaXRsZSgpKTtcblx0XHRcdFx0dGl0bGUuc2V0VGl0bGVTdHlsZShoYXNNdWx0aXBsZVN1YnNlY3Rpb25zID8gXCJINVwiIDogXCJINFwiKTtcblx0XHRcdFx0dGl0bGUuc2V0TGV2ZWwodGhpcy5nZXRUaXRsZUxldmVsKCkpO1xuXHRcdFx0XHR0aGlzLnNldFNob3dUaXRsZShmYWxzZSk7XG5cdFx0XHRcdGNsYXNzZXNUb0FkZC5hZGQoXCJzYXBVaVRhYmxlT25PYmplY3RQYWdlQWRqdXN0bWVudHNGb3JTZWN0aW9uXCIpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gSGlkZSBzdWJzZWN0aW9uIHRpdGxlIGlmIHRoZXJlJ3Mgb25seSBvbmUgdmlzaWJsZSBzdWJzZWN0aW9uXG5cdFx0XHRpZiAoc3ViU2VjdGlvbnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdHN1YlNlY3Rpb25zWzBdLnNldFNob3dUaXRsZShmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh0aGlzLmNoZWNrSWZOb3Rlc1JldXNlQ29tcG9uZW50KHNpbmdsZUNvbnRlbnQpKSB7XG5cdFx0XHQvKipcblx0XHRcdCAqIE5vdGVzIFJldXNlIGNvbXBvbmVudCBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgOlxuXHRcdFx0ICogPFZCb3ggaWQ9XCJOb3RlU2VjdGlvblwiPlxuXHRcdFx0ICogPE1lc3NhZ2VTdHJpcCBpZD1cIm5vdGVzRGVidWdQcm9wZXJ0aWVzXCI+XG5cdFx0XHQgKiA8TGlzdCBpZD1cIk5vdGVzTGlzdFwiPlxuXHRcdFx0ICogPGhlYWRlclRvb2xiYXI+XG5cdFx0XHQgKiA8T3ZlcmZsb3dUb29sYmFyIGlkPVwibm90ZUhlYWRlck92ZXJmbG93VG9vbGJhclwiIHN0eWxlPVwiU3RhbmRhcmRcIj5cblx0XHRcdCAqICAgICAgIDxUaXRsZSBpZD1cIm5vdGVIZWFkZXJPdmVyZmxvd1Rvb2xiYXJUaXRsZVwiLz5cblx0XHRcdCAqXHRcdC4uLi4uLlxuXHRcdFx0ICpcdDwvT3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0ICpcdDwvaGVhZGVyVG9vbGJhcj5cblx0XHRcdCAqXHQuLi4uLi5cblx0XHRcdCAqXHQ8L0xpc3Q+XG5cdFx0XHQgKlx0PC9WQm94PlxuXHRcdFx0ICpcdC4uLi4uXG5cdFx0XHQgKlxuXHRcdFx0ICogV2UgYXJlIGFwcGx5aW5nIHRoZSB0aXRsZSBtZXJnZSBsb2dpYyBmb3IgdGhlIHRpdGxlIHdpdGhpbiB0aGUgb3ZlcmZsb3cgdG9vbGJhclxuXHRcdFx0ICogaW4gdGhlIGZvbGxvd2luZyBjb2RlXG5cdFx0XHQgKlxuXHRcdFx0ICovXG5cdFx0XHRjb25zdCB2Qm94SXRlbXMgPSAoc2luZ2xlQ29udGVudCBhcyBWQm94KS5nZXRJdGVtcygpO1xuXHRcdFx0dkJveEl0ZW1zLmZvckVhY2goKHZCb3hJdGVtKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGhlYWRlclRvb2xiYXIgPSB2Qm94SXRlbS5nZXRBZ2dyZWdhdGlvbihcImhlYWRlclRvb2xiYXJcIik7XG5cdFx0XHRcdGlmIChoZWFkZXJUb29sYmFyKSB7XG5cdFx0XHRcdFx0KGhlYWRlclRvb2xiYXIgYXMgT3ZlcmZsb3dUb29sYmFyKT8uZ2V0Q29udGVudCgpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcblx0XHRcdFx0XHRcdGlmIChjb250cm9sLmlzQShcInNhcC5tLlRpdGxlXCIpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG5vdGVzVGl0bGUgPSBjb250cm9sIGFzIFRpdGxlO1xuXHRcdFx0XHRcdFx0XHRub3Rlc1RpdGxlLnNldFRleHQodGhpcy5nZXRUaXRsZSgpKTtcblx0XHRcdFx0XHRcdFx0bm90ZXNUaXRsZS5zZXRUaXRsZVN0eWxlKFwiSDRcIik7XG5cdFx0XHRcdFx0XHRcdG5vdGVzVGl0bGUuc2V0TGV2ZWwodGhpcy5nZXRUaXRsZUxldmVsKCkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdC8vIFNpbmdsZSBjb250ZW50IHdpdGggc2luZ2xlIHN1YnNlY3Rpb24gbWVhbnMgc2VjdGlvbiB0aXRsZSgxKSwgc3Vic2VjdGlvbiB0aXRsZSgyKSBhbmQgTm90ZXMgUmV1c2UgY29tcG9uZW50IHRpdGxlKDMpIGFyZSBhdmFpbGFibGUuXG5cdFx0XHQvLyBXZSBzaGFsbCBzaG93IG9ubHkgMy4gV2UgaGlkZSAxIGFuZCAyLlxuXHRcdFx0Y29uc3Qgc3ViU2VjdGlvbnMgPSB0aGlzLmdldFZpc2libGVTdWJTZWN0aW9ucygpO1xuXHRcdFx0aWYgKHN1YlNlY3Rpb25zLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHRzdWJTZWN0aW9uc1swXS5zZXRTaG93VGl0bGUoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zZXRTaG93VGl0bGUoZmFsc2UpO1xuXHRcdFx0Y2xhc3Nlc1RvQWRkLmFkZChcInNhcFVpVGFibGVPbk9iamVjdFBhZ2VBZGp1c3RtZW50c0ZvclNlY3Rpb25cIik7XG5cdFx0fVxuXHRcdHRoaXMuYWRkU3R5bGVDbGFzcyhBcnJheS5mcm9tKGNsYXNzZXNUb0FkZCkuam9pbihcIiBcIikpO1xuXHRcdHJldHVybiB7IHRhYmxlc0FkanVzdGVkOiBjbGFzc2VzVG9BZGQuaGFzKFwic2FwVWlUYWJsZU9uT2JqZWN0UGFnZUFkanVzdG1lbnRzRm9yU2VjdGlvblwiKSB9O1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlY3Rpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvQkE7RUFBQSxJQWVNQSxPQUFPLElBQUFDLElBQUEsR0FGWkMsY0FBYyxDQUFDLGdDQUFnQyxFQUFFO0lBQUVD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
@@ -324,7 +324,8 @@ class Section extends ObjectPageSection {
324
324
  const infoFromProvider =
325
325
  sectionOnlyContent.getDataFromProvider && sectionOnlyContent.getDataFromProvider(this.useSingleTextAreaFieldAsNotes);
326
326
  if (infoFromProvider && this.getTitle() === infoFromProvider.title) {
327
- this.setTitle(infoFromProvider.title);
327
+ //commenting out this redundent title setting to avoid re-rendering issues
328
+ // this.setTitle(infoFromProvider.title);
328
329
  this.setShowTitle(true);
329
330
  // TODO: Check if this is really needed?
330
331
  classesToAdd.add("sapUiTableOnObjectPageAdjustmentsForSection");