@sapui5/sap.fe.templates 1.107.1 → 1.108.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/package.json +3 -2
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/ListComponent.js +5 -1
  4. package/src/sap/fe/templates/ListComponent.ts +4 -0
  5. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +43 -3
  6. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +38 -2
  7. package/src/sap/fe/templates/ListReport/ListReport.view.xml +11 -0
  8. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +76 -21
  9. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +58 -13
  10. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +30 -21
  11. package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +21 -10
  12. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +3 -6
  13. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +1 -5
  14. package/src/sap/fe/templates/ListReport/overrides/Share.js +9 -3
  15. package/src/sap/fe/templates/ListReport/overrides/Share.ts +7 -1
  16. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +15 -11
  17. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +27 -9
  18. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +3 -3
  19. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +2 -2
  20. package/src/sap/fe/templates/ListReport/view/fragments/Table.fragment.xml +0 -1
  21. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +32 -21
  22. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +247 -32
  23. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +171 -19
  24. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +48 -6
  25. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +59 -4
  26. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
  27. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -2
  28. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  29. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -2
  30. package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.js +33 -0
  31. package/src/sap/fe/templates/ObjectPage/flexibility/ScrollableHeaderContainer.flexibility.ts +23 -0
  32. package/src/sap/fe/templates/ObjectPage/manifest.json +8 -0
  33. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +9 -2
  34. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +7 -0
  35. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +7 -1
  36. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +5 -0
  37. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +8 -2
  38. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderContent.fragment.xml +38 -23
  39. package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +1 -0
  40. package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +1 -0
  41. package/src/sap/fe/templates/library.js +1 -1
  42. package/src/sap/fe/templates/messagebundle_lt.properties +1 -1
  43. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +0 -899
  44. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +0 -830
  45. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +0 -207
  46. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +0 -177
  47. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +0 -575
  48. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +0 -492
  49. package/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +0 -16
  50. package/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +0 -9
@@ -34,6 +34,7 @@ import ChartUtils from "sap/fe/macros/chart/ChartUtils";
34
34
  import CommonHelper from "sap/fe/macros/CommonHelper";
35
35
  import DelegateUtil from "sap/fe/macros/DelegateUtil";
36
36
  import FilterUtils from "sap/fe/macros/filter/FilterUtils";
37
+ import ShareAPI from "sap/fe/macros/share/ShareAPI";
37
38
  import TableHelper from "sap/fe/macros/table/TableHelper";
38
39
  import MultipleModeControl from "sap/fe/templates/ListReport/controls/MultipleModeControl";
39
40
  import ExtensionAPI from "sap/fe/templates/ListReport/ExtensionAPI";
@@ -196,7 +197,7 @@ class ListReportController extends PageController {
196
197
  ((this.getView().getModel("sap.fe.i18n") as ResourceModel).getResourceBundle() as Promise<ResourceBundle>)
197
198
  .then((response: any) => {
198
199
  this.oResourceBundle = response;
199
- const aControls = this._getControls();
200
+ const aTables = this._getControls() as Table[];
200
201
  const sEntitySet = (this.getView().getViewData() as any).entitySet;
201
202
  const sText = CommonUtils.getTranslatedText(
202
203
  "T_TABLE_AND_CHART_NO_DATA_TEXT",
@@ -204,8 +205,8 @@ class ListReportController extends PageController {
204
205
  undefined,
205
206
  sEntitySet
206
207
  );
207
- aControls.forEach(function (oControl: any) {
208
- oControl.setNoDataText(sText);
208
+ aTables.forEach(function (oTable: Table) {
209
+ oTable.setNoData(sText);
209
210
  });
210
211
  })
211
212
  .catch(function (oError: any) {
@@ -216,16 +217,9 @@ class ListReportController extends PageController {
216
217
  @privateExtension()
217
218
  @extensible(OverrideExecution.After)
218
219
  onPageReady(mParameters: any) {
219
- // Enabling mandatory filter fields message dialog and focusing on them
220
220
  if (mParameters.forceFocus) {
221
- const oFilterBar = this._getFilterBarControl();
222
-
223
- if (oFilterBar && !oFilterBar.getShowMessages()) {
224
- oFilterBar.setShowMessages(true);
225
- (oFilterBar as any).setFocusOnFirstErroneousField();
226
- }
221
+ this._setInitialFocus();
227
222
  }
228
-
229
223
  // Remove the handler on back navigation that displays Draft confirmation
230
224
  this.getAppComponent().getShellServices().setBackNavigation(undefined);
231
225
  }
@@ -322,6 +316,42 @@ class ListReportController extends PageController {
322
316
  });
323
317
  }
324
318
 
319
+ /**
320
+ * This method set the initial focus within the List Report according to the UX guide lines.
321
+ *
322
+ * @function
323
+ * @name sap.fe.templates.ListReport.ListReportController.controller#_setInitialFocus
324
+ */
325
+ _setInitialFocus() {
326
+ const dynamicPage = this._getDynamicListReportControl(),
327
+ isHeaderExpanded = dynamicPage.getHeaderExpanded(),
328
+ filterBar = this._getFilterBarControl() as any;
329
+ if (filterBar) {
330
+ if (isHeaderExpanded) {
331
+ //Enabling mandatory filter fields message dialog
332
+ if (!filterBar.getShowMessages()) {
333
+ filterBar.setShowMessages(true);
334
+ }
335
+ const firstEmptyMandatoryField = filterBar.getFilterItems().find(function (oFilterItem: any) {
336
+ return oFilterItem.getRequired() && oFilterItem.getConditions().length === 0;
337
+ });
338
+ //Focusing on the first empty mandatory filter field, or on the first filter field if the table data is loaded
339
+ if (firstEmptyMandatoryField) {
340
+ firstEmptyMandatoryField.focus();
341
+ } else if (this._isInitLoadEnabled()) {
342
+ filterBar.getFilterItems()[0].focus();
343
+ } else {
344
+ //Focusing on the Go button
345
+ this.getView().byId(`${this._getFilterBarControlId()}-btnSearch`).focus();
346
+ }
347
+ } else if (this._isInitLoadEnabled()) {
348
+ this._getTable()?.focusRow(0);
349
+ }
350
+ } else {
351
+ this._getTable()?.focusRow(0);
352
+ }
353
+ }
354
+
325
355
  _getPageTitleInformation() {
326
356
  const oManifestEntry = this.getAppComponent().getManifestEntry("sap.app");
327
357
  return {
@@ -336,6 +366,10 @@ class ListReportController extends PageController {
336
366
  return this.getView().byId(this._getFilterBarControlId()) as FilterBar;
337
367
  }
338
368
 
369
+ _getDynamicListReportControl() {
370
+ return this.getView().byId(this._getDynamicListReportControlId()) as DynamicPage;
371
+ }
372
+
339
373
  _getAdaptationFilterBarControl() {
340
374
  // If the adaptation filter bar is part of the DOM tree, the "Adapt Filter" dialog is open,
341
375
  // and we return the adaptation filter bar as an active control (visible for the user)
@@ -358,6 +392,10 @@ class ListReportController extends PageController {
358
392
  return pageComponent.getModel("_pageModel");
359
393
  }
360
394
 
395
+ _getDynamicListReportControlId(): string {
396
+ return this._getPageModel()?.getProperty("/dynamicListReportId") || "";
397
+ }
398
+
361
399
  _getFilterBarControlId(): string {
362
400
  return this._getPageModel()?.getProperty("/filterBarId") || "";
363
401
  }
@@ -396,7 +434,7 @@ class ListReportController extends PageController {
396
434
  if (oItem.getKey().indexOf(`fe::${sKey}`) > -1) {
397
435
  aControls.push(oControl);
398
436
  }
399
- } else if (oControl) {
437
+ } else if (oControl !== undefined && oControl !== null) {
400
438
  aControls.push(oControl);
401
439
  }
402
440
  });
@@ -608,6 +646,13 @@ class ListReportController extends PageController {
608
646
  }
609
647
 
610
648
  handlers = {
649
+ handleShareShortcut(this: ListReportController) {
650
+ const shareAPI: ShareAPI = this.getView().byId("fe::Share") as ShareAPI;
651
+ shareAPI.openMenu();
652
+ },
653
+ onFilterSearch(this: ListReportController) {
654
+ this._getFilterBarControl().triggerSearch();
655
+ },
611
656
  onFiltersChanged(this: ListReportController, oEvent: any) {
612
657
  const oFilterBar = this._getFilterBarControl();
613
658
  if (oFilterBar) {
@@ -680,7 +725,7 @@ class ListReportController extends PageController {
680
725
  }
681
726
 
682
727
  if (system.phone) {
683
- const oDynamicPage = this.getView().byId("fe::ListReport") as DynamicPage;
728
+ const oDynamicPage = this._getDynamicListReportControl();
684
729
  oDynamicPage.setHeaderExpanded(false);
685
730
  }
686
731
  },
@@ -82,14 +82,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
82
82
  var _proto = MultipleModeControl.prototype;
83
83
 
84
84
  _proto.onBeforeRendering = function onBeforeRendering() {
85
- var _this$_getFilterContr,
86
- _this2 = this;
85
+ var _this2 = this;
87
86
 
88
87
  this.getTabsModel(); // Generate the model which is mandatory for some bindings
89
88
 
90
- var oFilterBarAPI = (_this$_getFilterContr = this._getFilterControl()) === null || _this$_getFilterContr === void 0 ? void 0 : _this$_getFilterContr.getParent();
89
+ var oFilterControl = this._getFilterControl();
90
+
91
+ if (!oFilterControl) {
92
+ // In case there's no filterbar, we have to update the counts in the tabs immediately
93
+ this.setCountsOutDated(true);
94
+ }
91
95
 
92
- this._getAllInnerControls().forEach(function (oMacroAPI) {
96
+ var oFilterBarAPI = oFilterControl === null || oFilterControl === void 0 ? void 0 : oFilterControl.getParent();
97
+ this.getAllInnerControls().forEach(function (oMacroAPI) {
93
98
  var _oMacroAPI$suspendBin;
94
99
 
95
100
  if (_this2.showCounts) {
@@ -146,12 +151,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
146
151
  ;
147
152
 
148
153
  _proto.getSelectedInnerControl = function getSelectedInnerControl() {
149
- var _this3 = this;
154
+ var _this$content,
155
+ _this3 = this;
150
156
 
151
- var oSelectedTab = this.content.getItems().find(function (oItem) {
157
+ var oSelectedTab = (_this$content = this.content) === null || _this$content === void 0 ? void 0 : _this$content.getItems().find(function (oItem) {
152
158
  return oItem.getKey() === _this3.content.getSelectedKey();
153
159
  });
154
- return oSelectedTab ? this._getAllInnerControls().find(function (oMacroAPI) {
160
+ return oSelectedTab ? this.getAllInnerControls().find(function (oMacroAPI) {
155
161
  return _this3._getTabFromInnerControl(oMacroAPI) === oSelectedTab;
156
162
  }) : undefined;
157
163
  }
@@ -212,8 +218,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
212
218
 
213
219
  _proto.invalidateContent = function invalidateContent() {
214
220
  this.setCountsOutDated(true);
215
-
216
- this._getAllInnerControls().forEach(function (oMacroAPI) {
221
+ this.getAllInnerControls().forEach(function (oMacroAPI) {
217
222
  var _oMacroAPI$invalidate;
218
223
 
219
224
  (_oMacroAPI$invalidate = oMacroAPI.invalidateContent) === null || _oMacroAPI$invalidate === void 0 ? void 0 : _oMacroAPI$invalidate.call(oMacroAPI);
@@ -266,8 +271,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
266
271
 
267
272
  if (tabsModel && oFilterControl) {
268
273
  var results = {};
269
-
270
- this._getAllInnerControls().forEach(function (oMacroAPI) {
274
+ this.getAllInnerControls().forEach(function (oMacroAPI) {
271
275
  var oTab = _this4._getTabFromInnerControl(oMacroAPI);
272
276
 
273
277
  if (oTab) {
@@ -288,12 +292,18 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
288
292
  };
289
293
  }
290
294
  });
291
-
292
295
  tabsModel.setData(results);
293
296
  }
294
- };
297
+ }
298
+ /**
299
+ * Gets the inner controls.
300
+ *
301
+ * @param {boolean} bOnlyForVisibleTab Should display only the visible controls
302
+ * @returns {InnerControlType[]} An array of controls
303
+ */
304
+ ;
295
305
 
296
- _proto._getAllInnerControls = function _getAllInnerControls() {
306
+ _proto.getAllInnerControls = function getAllInnerControls() {
297
307
  var _this5 = this;
298
308
 
299
309
  var bOnlyForVisibleTab = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -343,11 +353,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
343
353
  };
344
354
 
345
355
  _proto._refreshTabsCount = function _refreshTabsCount() {
346
- var _this6 = this;
347
-
348
- var sSelectedKey = this.content.getSelectedKey();
356
+ var _this$content2,
357
+ _this6 = this;
349
358
 
350
- this._getAllInnerControls(true).forEach(function (oMacroAPI) {
359
+ var sSelectedKey = (_this$content2 = this.content) === null || _this$content2 === void 0 ? void 0 : _this$content2.getSelectedKey();
360
+ this.getAllInnerControls(true).forEach(function (oMacroAPI) {
351
361
  var oIconTabFilter = _this6._getTabFromInnerControl(oMacroAPI);
352
362
 
353
363
  if (oMacroAPI !== null && oMacroAPI !== void 0 && oMacroAPI.getCounts && (_this6.countsOutDated || sSelectedKey === (oIconTabFilter === null || oIconTabFilter === void 0 ? void 0 : oIconTabFilter.getKey()))) {
@@ -361,7 +371,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
361
371
  }
362
372
  }
363
373
  });
364
-
365
374
  this.setCountsOutDated(false);
366
375
  };
367
376
 
@@ -371,7 +380,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
371
380
  var bRequestIfNotInitialized = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
372
381
 
373
382
  if (this.content) {
374
- this._getAllInnerControls().forEach(function (oMacroAPI) {
383
+ this.getAllInnerControls().forEach(function (oMacroAPI) {
375
384
  var _oMacroAPI$sAction;
376
385
 
377
386
  var oIconTabFilter = _this7._getTabFromInnerControl(oMacroAPI);
@@ -456,4 +465,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/C
456
465
  })), _class2)) || _class);
457
466
  return MultipleModeControl;
458
467
  }, false);
459
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsImRlZmluZVVJNUNsYXNzIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImFzc29jaWF0aW9uIiwiZXZlbnQiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldFRhYnNNb2RlbCIsIm9GaWx0ZXJCYXJBUEkiLCJfZ2V0RmlsdGVyQ29udHJvbCIsImdldFBhcmVudCIsIl9nZXRBbGxJbm5lckNvbnRyb2xzIiwiZm9yRWFjaCIsIm9NYWNyb0FQSSIsInNob3dDb3VudHMiLCJhdHRhY2hFdmVudCIsIl9yZWZyZXNoVGFic0NvdW50IiwiYmluZCIsInN1c3BlbmRCaW5kaW5nIiwiX29uU2VhcmNoIiwiX29uRmlsdGVyQ2hhbmdlZCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJnZXRTZWxlY3RlZElubmVyQ29udHJvbCIsInJlc3VtZUJpbmRpbmciLCJnZXRQcm9wZXJ0eSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImNvbnRlbnQiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsIl9nZXRUYWJGcm9tSW5uZXJDb250cm9sIiwiaGFuZGxlVGFiQ2hhbmdlIiwib0V2ZW50Iiwib0ljb25UYWJCYXIiLCJnZXRTb3VyY2UiLCJvTXVsdGlDb250cm9sIiwibVBhcmFtZXRlcnMiLCJnZXRQYXJhbWV0ZXJzIiwiX3NldElubmVyQmluZGluZyIsInNQcmV2aW91c1NlbGVjdGVkS2V5IiwicHJldmlvdXNLZXkiLCJzU2VsZWN0ZWRLZXkiLCJzZWxlY3RlZEtleSIsIm9GaWx0ZXJCYXIiLCJfcmVmcmVzaEN1c3RvbVZpZXciLCJnZXRGaWx0ZXJDb25kaXRpb25zIiwiQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJIiwiYWRkIiwiY2hhbmdlcyIsImNoYW5nZVNwZWNpZmljRGF0YSIsImNoYW5nZVR5cGUiLCJwcmV2aW91c1NlbGVjdGVkS2V5Iiwic2VsZWN0b3JFbGVtZW50IiwiX2dldFZpZXdDb250cm9sbGVyIiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJmaXJlRXZlbnQiLCJpY29uVGFiQmFyIiwiaW52YWxpZGF0ZUNvbnRlbnQiLCJzZXRDb3VudHNPdXREYXRlZCIsImJWYWx1ZSIsInNldFByb3BlcnR5Iiwic2V0RnJlZXplQ29udGVudCIsIl91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHMiLCJvUmVzb3VyY2VCdW5kbGUiLCJ0YWJzTW9kZWwiLCJvRmlsdGVyQ29udHJvbCIsInJlc3VsdHMiLCJvVGFiIiwic1RhYklkIiwibUlnbm9yZWRGaWVsZHMiLCJyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcyIsIm5vdEFwcGxpY2FibGUiLCJmaWVsZHMiLCJ0aXRsZSIsIl9zZXRUYWJNZXNzYWdlU3RyaXAiLCJlbnRpdHlUeXBlUGF0aCIsImRhdGEiLCJpZ25vcmVkRmllbGRzIiwicmVzb3VyY2VCdW5kbGUiLCJnZXRUZXh0Iiwic2V0RGF0YSIsImJPbmx5Rm9yVmlzaWJsZVRhYiIsImlubmVyQ29udHJvbHMiLCJyZWR1Y2UiLCJhSW5uZXJDb250cm9scyIsInNJbm5lckNvbnRyb2wiLCJDb3JlIiwiYnlJZCIsInB1c2giLCJmaWx0ZXIiLCJvSW5uZXJDb250cm9sIiwiZ2V0VmlzaWJsZSIsImZpbHRlckNvbnRyb2wiLCJzU3VwcG9ydGVkQ2xhc3MiLCJJY29uVGFiRmlsdGVyIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiaXNBIiwib1ZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckNvbmRpdGlvbnMiLCJzUmVmcmVzaENhdXNlIiwib25WaWV3TmVlZHNSZWZyZXNoIiwiZmlsdGVyQ29uZGl0aW9ucyIsImN1cnJlbnRUYWJJZCIsInJlZnJlc2hDYXVzZSIsIm9JY29uVGFiRmlsdGVyIiwiZ2V0Q291bnRzIiwiY291bnRzT3V0RGF0ZWQiLCJzZXRDb3VudCIsInRoZW4iLCJpQ291bnQiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwiYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkIiwiYklzU2VsZWN0ZWRLZXkiLCJzQWN0aW9uIiwiUmVzdW1lIiwiU3VzcGVuZCIsInByb3BlcnRpZXMiLCJzVGV4dCIsImFJZ25vcmVkRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiYUlnbm9yZWRMYWJlbHMiLCJNZXNzYWdlU3RyaXAiLCJnZXRMYWJlbHMiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRMb2NhbGl6ZWRUZXh0IiwiZ2V0UGFyYW1ldGVyIiwiQ29udHJvbCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTXVsdGlwbGVNb2RlQ29udHJvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IERlbGVnYXRlVXRpbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBNYWNyb0FQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9NYWNyb0FQSVwiO1xuaW1wb3J0IEljb25UYWJCYXIgZnJvbSBcInNhcC9tL0ljb25UYWJCYXJcIjtcbmltcG9ydCBJY29uVGFiRmlsdGVyIGZyb20gXCJzYXAvbS9JY29uVGFiRmlsdGVyXCI7XG5pbXBvcnQgdHlwZSBDb3JlRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJIGZyb20gXCJzYXAvdWkvZmwvd3JpdGUvYXBpL0NvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSVwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuXG5leHBvcnQgdHlwZSBJbm5lckNvbnRyb2xUeXBlID0gTWFjcm9BUEkgJlxuXHRQYXJ0aWFsPHtcblx0XHRyZXN1bWVCaW5kaW5nOiBGdW5jdGlvbjtcblx0XHRzdXNwZW5kQmluZGluZzogRnVuY3Rpb247XG5cdFx0Z2V0Q291bnRzOiBGdW5jdGlvbjtcblx0XHRyZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkczogRnVuY3Rpb247XG5cdFx0aW52YWxpZGF0ZUNvbnRlbnQ6IEZ1bmN0aW9uO1xuXHR9PjtcblxudHlwZSBNZXNzYWdlU3RyaXBQcm9wZXJ0aWVzID0ge1xuXHRlbnRpdHlUeXBlUGF0aDogc3RyaW5nO1xuXHRpZ25vcmVkRmllbGRzOiBhbnlbXTtcblx0cmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlO1xuXHR0aXRsZTogc3RyaW5nO1xufTtcblxuZW51bSBCaW5kaW5nQWN0aW9uIHtcblx0U3VzcGVuZCA9IFwic3VzcGVuZEJpbmRpbmdcIixcblx0UmVzdW1lID0gXCJyZXN1bWVCaW5kaW5nXCJcbn1cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIilcbmNsYXNzIE11bHRpcGxlTW9kZUNvbnRyb2wgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0NvdW50cyE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0ZnJlZXplQ29udGVudCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Y291bnRzT3V0RGF0ZWQhOiBib29sZWFuO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uSWNvblRhYkJhclwiLCBtdWx0aXBsZTogZmFsc2UsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRjb250ZW50ITogSWNvblRhYkJhcjtcblxuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUgfSlcblx0aW5uZXJDb250cm9scyE6IHN0cmluZ1tdO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbHMuRmlsdGVyQmFyXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRmaWx0ZXJDb250cm9sITogc3RyaW5nO1xuXG5cdEBldmVudCgpXG5cdHNlbGVjdCE6IEZ1bmN0aW9uO1xuXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCkge1xuXHRcdHRoaXMuZ2V0VGFic01vZGVsKCk7IC8vIEdlbmVyYXRlIHRoZSBtb2RlbCB3aGljaCBpcyBtYW5kYXRvcnkgZm9yIHNvbWUgYmluZGluZ3NcblxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJBUEkgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCk/LmdldFBhcmVudCgpO1xuXHRcdHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdGlmICh0aGlzLnNob3dDb3VudHMpIHtcblx0XHRcdFx0b01hY3JvQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIsIHRoaXMuX3JlZnJlc2hUYWJzQ291bnQuYmluZCh0aGlzKSk7XG5cdFx0XHR9XG5cdFx0XHRvTWFjcm9BUEkuc3VzcGVuZEJpbmRpbmc/LigpO1xuXHRcdH0pO1xuXHRcdGlmIChvRmlsdGVyQmFyQVBJKSB7XG5cdFx0XHRvRmlsdGVyQmFyQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxTZWFyY2hcIiwgdGhpcy5fb25TZWFyY2guYmluZCh0aGlzKSk7XG5cdFx0XHRvRmlsdGVyQmFyQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkXCIsIHRoaXMuX29uRmlsdGVyQ2hhbmdlZC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cdH1cblxuXHRvbkFmdGVyUmVuZGVyaW5nKCkge1xuXHRcdHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8ucmVzdW1lQmluZGluZz8uKCF0aGlzLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSk7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IE11bHRpcGxlTW9kZUNvbnRyb2wpIHtcblx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBtb2RlbCBjb250YWluaW5nIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIEljb25UYWJGaWx0ZXJzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c2FwLnVpLm1vZGVsLk1vZGVsIHwgdW5kZWZpbmVkfSBUaGUgbW9kZWxcblx0ICovXG5cdGdldFRhYnNNb2RlbCgpOiBNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgc1RhYnNNb2RlbCA9IFwidGFic0ludGVybmFsXCI7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0aWYgKCFvQ29udGVudCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0bGV0IG9Nb2RlbCA9IG9Db250ZW50LmdldE1vZGVsKHNUYWJzTW9kZWwpO1xuXHRcdGlmICghb01vZGVsKSB7XG5cdFx0XHRvTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHt9KTtcblx0XHRcdG9Db250ZW50LnNldE1vZGVsKG9Nb2RlbCwgc1RhYnNNb2RlbCk7XG5cdFx0fVxuXHRcdHJldHVybiBvTW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgaW5uZXIgY29udHJvbCBvZiB0aGUgZGlzcGxheWVkIHRhYi5cblx0ICpcblx0ICogQHJldHVybnMge0lubmVyQ29udHJvbFR5cGUgfCB1bmRlZmluZWR9IFRoZSBjb250cm9sXG5cdCAqL1xuXHRnZXRTZWxlY3RlZElubmVyQ29udHJvbCgpOiBJbm5lckNvbnRyb2xUeXBlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvU2VsZWN0ZWRUYWIgPSB0aGlzLmNvbnRlbnQuZ2V0SXRlbXMoKS5maW5kKChvSXRlbSkgPT4gKG9JdGVtIGFzIEljb25UYWJGaWx0ZXIpLmdldEtleSgpID09PSB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKSk7XG5cdFx0cmV0dXJuIG9TZWxlY3RlZFRhYlxuXHRcdFx0PyB0aGlzLl9nZXRBbGxJbm5lckNvbnRyb2xzKCkuZmluZCgob01hY3JvQVBJKSA9PiB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSkgPT09IG9TZWxlY3RlZFRhYilcblx0XHRcdDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIGJpbmRpbmcgb2YgYWxsIGlubmVyIGNvbnRyb2xzIHdoZW4gdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgaXMgY2hhbmdlZC5cblx0ICpcblx0ICogQHBhcmFtIHtzYXAudWkuYmFzZS5FdmVudH0gb0V2ZW50IEV2ZW50IGZpcmVkIGJ5IHRoZSBJY29uVGFiQmFyXG5cdCAqL1xuXHRzdGF0aWMgaGFuZGxlVGFiQ2hhbmdlKG9FdmVudDogYW55KTogdm9pZCB7XG5cdFx0Y29uc3Qgb0ljb25UYWJCYXIgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgb011bHRpQ29udHJvbCA9IG9JY29uVGFiQmFyLmdldFBhcmVudCgpO1xuXG5cdFx0Y29uc3QgbVBhcmFtZXRlcnMgPSBvRXZlbnQuZ2V0UGFyYW1ldGVycygpO1xuXHRcdG9NdWx0aUNvbnRyb2wuX3NldElubmVyQmluZGluZyh0cnVlKTtcblx0XHRjb25zdCBzUHJldmlvdXNTZWxlY3RlZEtleSA9IG1QYXJhbWV0ZXJzPy5wcmV2aW91c0tleTtcblx0XHRjb25zdCBzU2VsZWN0ZWRLZXkgPSBtUGFyYW1ldGVycz8uc2VsZWN0ZWRLZXk7XG5cblx0XHRpZiAoc1NlbGVjdGVkS2V5ICYmIHNQcmV2aW91c1NlbGVjdGVkS2V5ICE9PSBzU2VsZWN0ZWRLZXkpIHtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvTXVsdGlDb250cm9sLl9nZXRGaWx0ZXJDb250cm9sKCk7XG5cdFx0XHRpZiAob0ZpbHRlckJhciAmJiAhb011bHRpQ29udHJvbC5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikpIHtcblx0XHRcdFx0aWYgKCFvTXVsdGlDb250cm9sLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdFx0XHQvL2N1c3RvbSB0YWJcblx0XHRcdFx0XHRvTXVsdGlDb250cm9sLl9yZWZyZXNoQ3VzdG9tVmlldyhvRmlsdGVyQmFyLmdldEZpbHRlckNvbmRpdGlvbnMoKSwgXCJ0YWJDaGFuZ2VkXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkuYWRkKHtcblx0XHRcdFx0Y2hhbmdlczogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNoYW5nZVNwZWNpZmljRGF0YToge1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VUeXBlOiBcInNlbGVjdEljb25UYWJCYXJGaWx0ZXJcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDoge1xuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkS2V5OiBzU2VsZWN0ZWRLZXksXG5cdFx0XHRcdFx0XHRcdFx0cHJldmlvdXNTZWxlY3RlZEtleTogc1ByZXZpb3VzU2VsZWN0ZWRLZXlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHNlbGVjdG9yRWxlbWVudDogb0ljb25UYWJCYXJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdG9NdWx0aUNvbnRyb2wuX2dldFZpZXdDb250cm9sbGVyKCk/LmdldEV4dGVuc2lvbkFQSSgpPy51cGRhdGVBcHBTdGF0ZSgpO1xuXG5cdFx0b011bHRpQ29udHJvbC5maXJlRXZlbnQoXCJzZWxlY3RcIiwge1xuXHRcdFx0aWNvblRhYkJhcjogb0ljb25UYWJCYXIsXG5cdFx0XHRzZWxlY3RlZEtleTogc1NlbGVjdGVkS2V5LFxuXHRcdFx0cHJldmlvdXNLZXk6IHNQcmV2aW91c1NlbGVjdGVkS2V5XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogSW52YWxpZGF0ZXMgdGhlIGNvbnRlbnQgb2YgYWxsIGlubmVyIGNvbnRyb2xzLlxuXHQgKi9cblx0aW52YWxpZGF0ZUNvbnRlbnQoKSB7XG5cdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR0aGlzLl9nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRvTWFjcm9BUEkuaW52YWxpZGF0ZUNvbnRlbnQ/LigpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGNvdW50cyB0byBvdXQgb2YgZGF0ZSBvciB1cCB0byBkYXRlXG5cdCAqIElmIHRoZSBjb3VudHMgYXJlIHNldCB0byBcIm91dCBvZiBkYXRlXCIgYW5kIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGRvZXNuJ3QgY29udGFpbiBhbiBpbm5lciBjb250cm9sIGFsbCBpbm5lciBjb250cm9scyBhcmUgcmVxdWVzdGVkIHRvIGdldCB0aGUgbmV3IGNvdW50cy5cblx0ICpcblx0ICogQHBhcmFtIHtib29sZWFufSBiVmFsdWUgRnJlZXplIG9yIG5vdCB0aGUgY29udHJvbFxuXHQgKi9cblx0c2V0Q291bnRzT3V0RGF0ZWQoYlZhbHVlID0gdHJ1ZSkge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJjb3VudHNPdXREYXRlZFwiLCBiVmFsdWUpO1xuXHRcdC8vIGlmIHRoZSBjdXJyZW50IHRhYiBpcyBub3QgY29uZmlndXJlZCB3aXRoIG5vIGlubmVyIENvbnRyb2xcblx0XHQvLyB0aGUgdGFiIGNvdW50cyBtdXN0IGJlIG1hbnVhbGx5IHJlZnJlc2hlZCBzaW5jZSBubyBNYWNybyBBUEkgd2lsbCBzZW50IGV2ZW50IGludGVybmFsRGF0YVJlcXVlc3RlZFxuXHRcdGlmIChiVmFsdWUgJiYgIXRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0dGhpcy5fcmVmcmVzaFRhYnNDb3VudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGcmVlemVzIHRoZSBjb250ZW50IDpcblx0ICogIC0gY29udGVudCBpcyBmcm96ZW46IHRoZSBiaW5kaW5nIG9mIHRoZSBpbm5lciBjb250cm9scyBhcmUgc3VzcGVuZGVkLlxuXHQgKiAgLSBjb250ZW50IGlzIHVuZnJvemVuOiB0aGUgYmluZGluZyBvZiBpbm5lciBjb250cm9sIHJlbGF0ZWQgdG8gdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgaXMgcmVzdW1lZC5cblx0ICpcblx0ICogQHBhcmFtIHtib29sZWFufSBiVmFsdWUgRnJlZXplIG9yIG5vdCB0aGUgY29udHJvbFxuXHQgKi9cblx0c2V0RnJlZXplQ29udGVudChiVmFsdWU6IGJvb2xlYW4pIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiLCBiVmFsdWUpO1xuXHRcdHRoaXMuX3NldElubmVyQmluZGluZygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGludGVybmFsIG1vZGVsIHdpdGggdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgb24gZWFjaCBJY29uVGFiRmlsdGVyIChjb250YWluaW5nIGlubmVyIGNvbnRyb2wpIGFjY29yZGluZyB0byB0aGUgZW50aXR5VHlwZSBvZiB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqIEBwYXJhbSBvUmVzb3VyY2VCdW5kbGVcblx0ICovXG5cdF91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHMob1Jlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSkge1xuXHRcdGNvbnN0IHRhYnNNb2RlbCA9IHRoaXMuZ2V0VGFic01vZGVsKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRyb2wgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCkgYXMgQ29udHJvbDtcblx0XHRpZiAodGFic01vZGVsICYmIG9GaWx0ZXJDb250cm9sKSB7XG5cdFx0XHRjb25zdCByZXN1bHRzOiBhbnkgPSB7fTtcblx0XHRcdHRoaXMuX2dldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdFx0Y29uc3Qgb1RhYiA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0aWYgKG9UYWIpIHtcblx0XHRcdFx0XHRjb25zdCBzVGFiSWQgPSBvVGFiLmdldEtleSgpO1xuXHRcdFx0XHRcdGNvbnN0IG1JZ25vcmVkRmllbGRzID0gb01hY3JvQVBJLnJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzPy4ob0ZpbHRlckNvbnRyb2wpIHx8IFtdO1xuXHRcdFx0XHRcdHJlc3VsdHNbc1RhYklkXSA9IHtcblx0XHRcdFx0XHRcdG5vdEFwcGxpY2FibGU6IHtcblx0XHRcdFx0XHRcdFx0ZmllbGRzOiBtSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0XHRcdFx0dGl0bGU6IHRoaXMuX3NldFRhYk1lc3NhZ2VTdHJpcCh7XG5cdFx0XHRcdFx0XHRcdFx0ZW50aXR5VHlwZVBhdGg6IG9GaWx0ZXJDb250cm9sLmRhdGEoXCJlbnRpdHlUeXBlXCIpLFxuXHRcdFx0XHRcdFx0XHRcdGlnbm9yZWRGaWVsZHM6IG1JZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdFx0XHRcdHJlc291cmNlQnVuZGxlOiBvUmVzb3VyY2VCdW5kbGUsXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG9UYWIuZ2V0VGV4dCgpXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHQodGFic01vZGVsIGFzIGFueSkuc2V0RGF0YShyZXN1bHRzKTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0QWxsSW5uZXJDb250cm9scyhiT25seUZvclZpc2libGVUYWIgPSBmYWxzZSk6IElubmVyQ29udHJvbFR5cGVbXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdHRoaXMuaW5uZXJDb250cm9scy5yZWR1Y2UoKGFJbm5lckNvbnRyb2xzOiBJbm5lckNvbnRyb2xUeXBlW10sIHNJbm5lckNvbnRyb2w6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRjb25zdCBvQ29udHJvbCA9IENvcmUuYnlJZChzSW5uZXJDb250cm9sKSBhcyBJbm5lckNvbnRyb2xUeXBlO1xuXHRcdFx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdFx0XHRhSW5uZXJDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYUlubmVyQ29udHJvbHMuZmlsdGVyKFxuXHRcdFx0XHRcdChvSW5uZXJDb250cm9sKSA9PiAhYk9ubHlGb3JWaXNpYmxlVGFiIHx8IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob0lubmVyQ29udHJvbCk/LmdldFZpc2libGUoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgW10pIHx8IFtdXG5cdFx0KTtcblx0fVxuXG5cdF9nZXRGaWx0ZXJDb250cm9sKCk6IEZpbHRlckJhciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIENvcmUuYnlJZCh0aGlzLmZpbHRlckNvbnRyb2wpIGFzIEZpbHRlckJhciB8IHVuZGVmaW5lZDtcblx0fVxuXG5cdF9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9Db250cm9sOiBDb250cm9sKTogSWNvblRhYkZpbHRlciB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgc1N1cHBvcnRlZENsYXNzID0gSWNvblRhYkZpbHRlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKTtcblx0XHRsZXQgb1RhYjogYW55ID0gb0NvbnRyb2w7XG5cdFx0aWYgKG9UYWIgJiYgIW9UYWIuaXNBKHNTdXBwb3J0ZWRDbGFzcykgJiYgb1RhYi5nZXRQYXJlbnQpIHtcblx0XHRcdG9UYWIgPSBvQ29udHJvbC5nZXRQYXJlbnQoKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9UYWIgJiYgb1RhYi5pc0Eoc1N1cHBvcnRlZENsYXNzKSA/IChvVGFiIGFzIEljb25UYWJGaWx0ZXIpIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0X2dldFZpZXdDb250cm9sbGVyKCkge1xuXHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRyZXR1cm4gb1ZpZXcgJiYgb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0X3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJDb25kaXRpb25zOiBhbnksIHNSZWZyZXNoQ2F1c2U6IHN0cmluZykge1xuXHRcdHRoaXMuX2dldFZpZXdDb250cm9sbGVyKCk/Lm9uVmlld05lZWRzUmVmcmVzaD8uKHtcblx0XHRcdGZpbHRlckNvbmRpdGlvbnM6IG9GaWx0ZXJDb25kaXRpb25zLFxuXHRcdFx0Y3VycmVudFRhYklkOiB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKSxcblx0XHRcdHJlZnJlc2hDYXVzZTogc1JlZnJlc2hDYXVzZVxuXHRcdH0pO1xuXHR9XG5cblx0X3JlZnJlc2hUYWJzQ291bnQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc1NlbGVjdGVkS2V5ID0gdGhpcy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0dGhpcy5fZ2V0QWxsSW5uZXJDb250cm9scyh0cnVlKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdGNvbnN0IG9JY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0aWYgKG9NYWNyb0FQST8uZ2V0Q291bnRzICYmICh0aGlzLmNvdW50c091dERhdGVkIHx8IHNTZWxlY3RlZEtleSA9PT0gb0ljb25UYWJGaWx0ZXI/LmdldEtleSgpKSkge1xuXHRcdFx0XHRpZiAob0ljb25UYWJGaWx0ZXIgJiYgb0ljb25UYWJGaWx0ZXIuc2V0Q291bnQpIHtcblx0XHRcdFx0XHRvSWNvblRhYkZpbHRlci5zZXRDb3VudChcIi4uLlwiKTtcblx0XHRcdFx0XHRvTWFjcm9BUElcblx0XHRcdFx0XHRcdC5nZXRDb3VudHMoKVxuXHRcdFx0XHRcdFx0LnRoZW4oKGlDb3VudDogc3RyaW5nKSA9PiBvSWNvblRhYkZpbHRlci5zZXRDb3VudChpQ291bnQgfHwgXCIwXCIpKVxuXHRcdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSByZXF1ZXN0aW5nIENvdW50cyBmb3IgQ29udHJvbFwiLCBvRXJyb3IpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKGZhbHNlKTtcblx0fVxuXG5cdF9zZXRJbm5lckJpbmRpbmcoYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkID0gZmFsc2UpIHtcblx0XHRpZiAodGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLl9nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9JY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0XHRjb25zdCBiSXNTZWxlY3RlZEtleSA9IG9JY29uVGFiRmlsdGVyPy5nZXRLZXkoKSA9PT0gdGhpcy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0XHRcdGNvbnN0IHNBY3Rpb24gPSBiSXNTZWxlY3RlZEtleSAmJiAhdGhpcy5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikgPyBCaW5kaW5nQWN0aW9uLlJlc3VtZSA6IEJpbmRpbmdBY3Rpb24uU3VzcGVuZDtcblx0XHRcdFx0b01hY3JvQVBJW3NBY3Rpb25dPy4oc0FjdGlvbiA9PT0gQmluZGluZ0FjdGlvbi5SZXN1bWUgPyBiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgJiYgYklzU2VsZWN0ZWRLZXkgOiB1bmRlZmluZWQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0X3NldFRhYk1lc3NhZ2VTdHJpcChwcm9wZXJ0aWVzOiBNZXNzYWdlU3RyaXBQcm9wZXJ0aWVzKSB7XG5cdFx0bGV0IHNUZXh0ID0gXCJcIjtcblx0XHRjb25zdCBhSWdub3JlZEZpZWxkcyA9IHByb3BlcnRpZXMuaWdub3JlZEZpZWxkcztcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmIChvRmlsdGVyQ29udHJvbCAmJiBBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzKSAmJiBhSWdub3JlZEZpZWxkcy5sZW5ndGggPiAwICYmIHByb3BlcnRpZXMudGl0bGUpIHtcblx0XHRcdGNvbnN0IGFJZ25vcmVkTGFiZWxzID0gTWVzc2FnZVN0cmlwLmdldExhYmVscyhcblx0XHRcdFx0YUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdHByb3BlcnRpZXMuZW50aXR5VHlwZVBhdGgsXG5cdFx0XHRcdG9GaWx0ZXJDb250cm9sLFxuXHRcdFx0XHRwcm9wZXJ0aWVzLnJlc291cmNlQnVuZGxlXG5cdFx0XHQpO1xuXHRcdFx0c1RleHQgPSBNZXNzYWdlU3RyaXAuZ2V0VGV4dChhSWdub3JlZExhYmVscywgb0ZpbHRlckNvbnRyb2wsIHByb3BlcnRpZXMudGl0bGUsIERlbGVnYXRlVXRpbC5nZXRMb2NhbGl6ZWRUZXh0KTtcblx0XHRcdHJldHVybiBzVGV4dDtcblx0XHR9XG5cdH1cblxuXHRfb25TZWFyY2gob0V2ZW50OiBDb3JlRXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKHRydWUpO1xuXHRcdHRoaXMuc2V0RnJlZXplQ29udGVudChmYWxzZSk7XG5cdFx0aWYgKHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0dGhpcy5fdXBkYXRlTXVsdGlUYWJOb3RBcHBsaWNhYmxlRmllbGRzKHRoaXMuX2dldFZpZXdDb250cm9sbGVyKCk/Lm9SZXNvdXJjZUJ1bmRsZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGN1c3RvbSB0YWJcblx0XHRcdHRoaXMuX3JlZnJlc2hDdXN0b21WaWV3KG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb25kaXRpb25zXCIpLCBcInNlYXJjaFwiKTtcblx0XHR9XG5cdH1cblxuXHRfb25GaWx0ZXJDaGFuZ2VkKG9FdmVudDogQ29yZUV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb25kaXRpb25zQmFzZWRcIikpIHtcblx0XHRcdHRoaXMuc2V0RnJlZXplQ29udGVudCh0cnVlKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTXVsdGlwbGVNb2RlQ29udHJvbDtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Ba0NLQSxhOzthQUFBQSxhO0lBQUFBLGE7SUFBQUEsYTtLQUFBQSxhLEtBQUFBLGE7O01BTUNDLG1CLFdBRExDLGNBQWMsQ0FBQywwREFBRCxDLFVBRWJDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUixDQUFELEMsVUFHUkQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFSO0lBQW1CQyxZQUFZLEVBQUU7RUFBakMsQ0FBRCxDLFVBR1JGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsU0FBUjtJQUFtQkMsWUFBWSxFQUFFO0VBQWpDLENBQUQsQyxVQUdSQyxXQUFXLENBQUM7SUFBRUYsSUFBSSxFQUFFLGtCQUFSO0lBQTRCRyxRQUFRLEVBQUUsS0FBdEM7SUFBNkNDLFNBQVMsRUFBRTtFQUF4RCxDQUFELEMsVUFHWEMsV0FBVyxDQUFDO0lBQUVMLElBQUksRUFBRSxxQkFBUjtJQUErQkcsUUFBUSxFQUFFO0VBQXpDLENBQUQsQyxVQUdYRSxXQUFXLENBQUM7SUFBRUwsSUFBSSxFQUFFLGdDQUFSO0lBQTBDRyxRQUFRLEVBQUU7RUFBcEQsQ0FBRCxDLFVBR1hHLEtBQUssRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQUdOQyxpQixHQUFBLDZCQUFvQjtNQUFBO01BQUE7O01BQ25CLEtBQUtDLFlBQUwsR0FEbUIsQ0FDRTs7TUFFckIsSUFBTUMsYUFBYSw0QkFBRyxLQUFLQyxpQkFBTCxFQUFILDBEQUFHLHNCQUEwQkMsU0FBMUIsRUFBdEI7O01BQ0EsS0FBS0Msb0JBQUwsR0FBNEJDLE9BQTVCLENBQW9DLFVBQUNDLFNBQUQsRUFBZTtRQUFBOztRQUNsRCxJQUFJLE1BQUksQ0FB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
468
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsImRlZmluZVVJNUNsYXNzIiwicHJvcGVydHkiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImlzRGVmYXVsdCIsImFzc29jaWF0aW9uIiwiZXZlbnQiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldFRhYnNNb2RlbCIsIm9GaWx0ZXJDb250cm9sIiwiX2dldEZpbHRlckNvbnRyb2wiLCJzZXRDb3VudHNPdXREYXRlZCIsIm9GaWx0ZXJCYXJBUEkiLCJnZXRQYXJlbnQiLCJnZXRBbGxJbm5lckNvbnRyb2xzIiwiZm9yRWFjaCIsIm9NYWNyb0FQSSIsInNob3dDb3VudHMiLCJhdHRhY2hFdmVudCIsIl9yZWZyZXNoVGFic0NvdW50IiwiYmluZCIsInN1c3BlbmRCaW5kaW5nIiwiX29uU2VhcmNoIiwiX29uRmlsdGVyQ2hhbmdlZCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJnZXRTZWxlY3RlZElubmVyQ29udHJvbCIsInJlc3VtZUJpbmRpbmciLCJnZXRQcm9wZXJ0eSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImNvbnRlbnQiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsIl9nZXRUYWJGcm9tSW5uZXJDb250cm9sIiwiaGFuZGxlVGFiQ2hhbmdlIiwib0V2ZW50Iiwib0ljb25UYWJCYXIiLCJnZXRTb3VyY2UiLCJvTXVsdGlDb250cm9sIiwibVBhcmFtZXRlcnMiLCJnZXRQYXJhbWV0ZXJzIiwiX3NldElubmVyQmluZGluZyIsInNQcmV2aW91c1NlbGVjdGVkS2V5IiwicHJldmlvdXNLZXkiLCJzU2VsZWN0ZWRLZXkiLCJzZWxlY3RlZEtleSIsIm9GaWx0ZXJCYXIiLCJfcmVmcmVzaEN1c3RvbVZpZXciLCJnZXRGaWx0ZXJDb25kaXRpb25zIiwiQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJIiwiYWRkIiwiY2hhbmdlcyIsImNoYW5nZVNwZWNpZmljRGF0YSIsImNoYW5nZVR5cGUiLCJwcmV2aW91c1NlbGVjdGVkS2V5Iiwic2VsZWN0b3JFbGVtZW50IiwiX2dldFZpZXdDb250cm9sbGVyIiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJmaXJlRXZlbnQiLCJpY29uVGFiQmFyIiwiaW52YWxpZGF0ZUNvbnRlbnQiLCJiVmFsdWUiLCJzZXRQcm9wZXJ0eSIsInNldEZyZWV6ZUNvbnRlbnQiLCJfdXBkYXRlTXVsdGlUYWJOb3RBcHBsaWNhYmxlRmllbGRzIiwib1Jlc291cmNlQnVuZGxlIiwidGFic01vZGVsIiwicmVzdWx0cyIsIm9UYWIiLCJzVGFiSWQiLCJtSWdub3JlZEZpZWxkcyIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwibm90QXBwbGljYWJsZSIsImZpZWxkcyIsInRpdGxlIiwiX3NldFRhYk1lc3NhZ2VTdHJpcCIsImVudGl0eVR5cGVQYXRoIiwiZGF0YSIsImlnbm9yZWRGaWVsZHMiLCJyZXNvdXJjZUJ1bmRsZSIsImdldFRleHQiLCJzZXREYXRhIiwiYk9ubHlGb3JWaXNpYmxlVGFiIiwiaW5uZXJDb250cm9scyIsInJlZHVjZSIsImFJbm5lckNvbnRyb2xzIiwic0lubmVyQ29udHJvbCIsIkNvcmUiLCJieUlkIiwicHVzaCIsImZpbHRlciIsIm9Jbm5lckNvbnRyb2wiLCJnZXRWaXNpYmxlIiwiZmlsdGVyQ29udHJvbCIsInNTdXBwb3J0ZWRDbGFzcyIsIkljb25UYWJGaWx0ZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJpc0EiLCJvVmlldyIsIkNvbW1vblV0aWxzIiwiZ2V0VGFyZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJvRmlsdGVyQ29uZGl0aW9ucyIsInNSZWZyZXNoQ2F1c2UiLCJvblZpZXdOZWVkc1JlZnJlc2giLCJmaWx0ZXJDb25kaXRpb25zIiwiY3VycmVudFRhYklkIiwicmVmcmVzaENhdXNlIiwib0ljb25UYWJGaWx0ZXIiLCJnZXRDb3VudHMiLCJjb3VudHNPdXREYXRlZCIsInNldENvdW50IiwidGhlbiIsImlDb3VudCIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQiLCJiSXNTZWxlY3RlZEtleSIsInNBY3Rpb24iLCJSZXN1bWUiLCJTdXNwZW5kIiwicHJvcGVydGllcyIsInNUZXh0IiwiYUlnbm9yZWRGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsIkRlbGVnYXRlVXRpbCIsImdldExvY2FsaXplZFRleHQiLCJnZXRQYXJhbWV0ZXIiLCJDb250cm9sIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNdWx0aXBsZU1vZGVDb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IEljb25UYWJGaWx0ZXIgZnJvbSBcInNhcC9tL0ljb25UYWJGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvcmVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCBDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkgZnJvbSBcInNhcC91aS9mbC93cml0ZS9hcGkvQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIElubmVyQ29udHJvbFR5cGUgPSBNYWNyb0FQSSAmXG5cdFBhcnRpYWw8e1xuXHRcdHJlc3VtZUJpbmRpbmc6IEZ1bmN0aW9uO1xuXHRcdHN1c3BlbmRCaW5kaW5nOiBGdW5jdGlvbjtcblx0XHRnZXRDb3VudHM6IEZ1bmN0aW9uO1xuXHRcdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzOiBGdW5jdGlvbjtcblx0XHRpbnZhbGlkYXRlQ29udGVudDogRnVuY3Rpb247XG5cdH0+O1xuXG50eXBlIE1lc3NhZ2VTdHJpcFByb3BlcnRpZXMgPSB7XG5cdGVudGl0eVR5cGVQYXRoOiBzdHJpbmc7XG5cdGlnbm9yZWRGaWVsZHM6IGFueVtdO1xuXHRyZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGU7XG5cdHRpdGxlOiBzdHJpbmc7XG59O1xuXG5lbnVtIEJpbmRpbmdBY3Rpb24ge1xuXHRTdXNwZW5kID0gXCJzdXNwZW5kQmluZGluZ1wiLFxuXHRSZXN1bWUgPSBcInJlc3VtZUJpbmRpbmdcIlxufVxuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuY29udHJvbHMuTXVsdGlwbGVNb2RlQ29udHJvbFwiKVxuY2xhc3MgTXVsdGlwbGVNb2RlQ29udHJvbCBleHRlbmRzIENvbnRyb2wge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRzaG93Q291bnRzITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmcmVlemVDb250ZW50ITogYm9vbGVhbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRjb3VudHNPdXREYXRlZCE6IGJvb2xlYW47XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAubS5JY29uVGFiQmFyXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQhOiBJY29uVGFiQmFyO1xuXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSB9KVxuXHRpbm5lckNvbnRyb2xzITogc3RyaW5nW107XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9scy5GaWx0ZXJCYXJcIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGZpbHRlckNvbnRyb2whOiBzdHJpbmc7XG5cblx0QGV2ZW50KClcblx0c2VsZWN0ITogRnVuY3Rpb247XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKSB7XG5cdFx0dGhpcy5nZXRUYWJzTW9kZWwoKTsgLy8gR2VuZXJhdGUgdGhlIG1vZGVsIHdoaWNoIGlzIG1hbmRhdG9yeSBmb3Igc29tZSBiaW5kaW5nc1xuXG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRyb2wgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCk7XG5cdFx0aWYgKCFvRmlsdGVyQ29udHJvbCkge1xuXHRcdFx0Ly8gSW4gY2FzZSB0aGVyZSdzIG5vIGZpbHRlcmJhciwgd2UgaGF2ZSB0byB1cGRhdGUgdGhlIGNvdW50cyBpbiB0aGUgdGFicyBpbW1lZGlhdGVseVxuXHRcdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhckFQSSA9IG9GaWx0ZXJDb250cm9sPy5nZXRQYXJlbnQoKTtcblx0XHR0aGlzLmdldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdGlmICh0aGlzLnNob3dDb3VudHMpIHtcblx0XHRcdFx0b01hY3JvQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxEYXRhUmVxdWVzdGVkXCIsIHRoaXMuX3JlZnJlc2hUYWJzQ291bnQuYmluZCh0aGlzKSk7XG5cdFx0XHR9XG5cdFx0XHRvTWFjcm9BUEkuc3VzcGVuZEJpbmRpbmc/LigpO1xuXHRcdH0pO1xuXHRcdGlmIChvRmlsdGVyQmFyQVBJKSB7XG5cdFx0XHRvRmlsdGVyQmFyQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxTZWFyY2hcIiwgdGhpcy5fb25TZWFyY2guYmluZCh0aGlzKSk7XG5cdFx0XHRvRmlsdGVyQmFyQVBJLmF0dGFjaEV2ZW50KFwiaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkXCIsIHRoaXMuX29uRmlsdGVyQ2hhbmdlZC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cdH1cblxuXHRvbkFmdGVyUmVuZGVyaW5nKCkge1xuXHRcdHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8ucmVzdW1lQmluZGluZz8uKCF0aGlzLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSk7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IE11bHRpcGxlTW9kZUNvbnRyb2wpIHtcblx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBtb2RlbCBjb250YWluaW5nIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIEljb25UYWJGaWx0ZXJzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7c2FwLnVpLm1vZGVsLk1vZGVsIHwgdW5kZWZpbmVkfSBUaGUgbW9kZWxcblx0ICovXG5cdGdldFRhYnNNb2RlbCgpOiBNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgc1RhYnNNb2RlbCA9IFwidGFic0ludGVybmFsXCI7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0aWYgKCFvQ29udGVudCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0bGV0IG9Nb2RlbCA9IG9Db250ZW50LmdldE1vZGVsKHNUYWJzTW9kZWwpO1xuXHRcdGlmICghb01vZGVsKSB7XG5cdFx0XHRvTW9kZWwgPSBuZXcgSlNPTk1vZGVsKHt9KTtcblx0XHRcdG9Db250ZW50LnNldE1vZGVsKG9Nb2RlbCwgc1RhYnNNb2RlbCk7XG5cdFx0fVxuXHRcdHJldHVybiBvTW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgaW5uZXIgY29udHJvbCBvZiB0aGUgZGlzcGxheWVkIHRhYi5cblx0ICpcblx0ICogQHJldHVybnMge0lubmVyQ29udHJvbFR5cGUgfCB1bmRlZmluZWR9IFRoZSBjb250cm9sXG5cdCAqL1xuXHRnZXRTZWxlY3RlZElubmVyQ29udHJvbCgpOiBJbm5lckNvbnRyb2xUeXBlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvU2VsZWN0ZWRUYWIgPSB0aGlzLmNvbnRlbnQ/LmdldEl0ZW1zKCkuZmluZCgob0l0ZW0pID0+IChvSXRlbSBhcyBJY29uVGFiRmlsdGVyKS5nZXRLZXkoKSA9PT0gdGhpcy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCkpO1xuXHRcdHJldHVybiBvU2VsZWN0ZWRUYWJcblx0XHRcdD8gdGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZmluZCgob01hY3JvQVBJKSA9PiB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSkgPT09IG9TZWxlY3RlZFRhYilcblx0XHRcdDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIGJpbmRpbmcgb2YgYWxsIGlubmVyIGNvbnRyb2xzIHdoZW4gdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgaXMgY2hhbmdlZC5cblx0ICpcblx0ICogQHBhcmFtIHtzYXAudWkuYmFzZS5FdmVudH0gb0V2ZW50IEV2ZW50IGZpcmVkIGJ5IHRoZSBJY29uVGFiQmFyXG5cdCAqL1xuXHRzdGF0aWMgaGFuZGxlVGFiQ2hhbmdlKG9FdmVudDogYW55KTogdm9pZCB7XG5cdFx0Y29uc3Qgb0ljb25UYWJCYXIgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgb011bHRpQ29udHJvbCA9IG9JY29uVGFiQmFyLmdldFBhcmVudCgpO1xuXG5cdFx0Y29uc3QgbVBhcmFtZXRlcnMgPSBvRXZlbnQuZ2V0UGFyYW1ldGVycygpO1xuXHRcdG9NdWx0aUNvbnRyb2wuX3NldElubmVyQmluZGluZyh0cnVlKTtcblx0XHRjb25zdCBzUHJldmlvdXNTZWxlY3RlZEtleSA9IG1QYXJhbWV0ZXJzPy5wcmV2aW91c0tleTtcblx0XHRjb25zdCBzU2VsZWN0ZWRLZXkgPSBtUGFyYW1ldGVycz8uc2VsZWN0ZWRLZXk7XG5cblx0XHRpZiAoc1NlbGVjdGVkS2V5ICYmIHNQcmV2aW91c1NlbGVjdGVkS2V5ICE9PSBzU2VsZWN0ZWRLZXkpIHtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvTXVsdGlDb250cm9sLl9nZXRGaWx0ZXJDb250cm9sKCk7XG5cdFx0XHRpZiAob0ZpbHRlckJhciAmJiAhb011bHRpQ29udHJvbC5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikpIHtcblx0XHRcdFx0aWYgKCFvTXVsdGlDb250cm9sLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdFx0XHQvL2N1c3RvbSB0YWJcblx0XHRcdFx0XHRvTXVsdGlDb250cm9sLl9yZWZyZXNoQ3VzdG9tVmlldyhvRmlsdGVyQmFyLmdldEZpbHRlckNvbmRpdGlvbnMoKSwgXCJ0YWJDaGFuZ2VkXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkuYWRkKHtcblx0XHRcdFx0Y2hhbmdlczogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNoYW5nZVNwZWNpZmljRGF0YToge1xuXHRcdFx0XHRcdFx0XHRjaGFuZ2VUeXBlOiBcInNlbGVjdEljb25UYWJCYXJGaWx0ZXJcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDoge1xuXHRcdFx0XHRcdFx0XHRcdHNlbGVjdGVkS2V5OiBzU2VsZWN0ZWRLZXksXG5cdFx0XHRcdFx0XHRcdFx0cHJldmlvdXNTZWxlY3RlZEtleTogc1ByZXZpb3VzU2VsZWN0ZWRLZXlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHNlbGVjdG9yRWxlbWVudDogb0ljb25UYWJCYXJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdG9NdWx0aUNvbnRyb2wuX2dldFZpZXdDb250cm9sbGVyKCk/LmdldEV4dGVuc2lvbkFQSSgpPy51cGRhdGVBcHBTdGF0ZSgpO1xuXG5cdFx0b011bHRpQ29udHJvbC5maXJlRXZlbnQoXCJzZWxlY3RcIiwge1xuXHRcdFx0aWNvblRhYkJhcjogb0ljb25UYWJCYXIsXG5cdFx0XHRzZWxlY3RlZEtleTogc1NlbGVjdGVkS2V5LFxuXHRcdFx0cHJldmlvdXNLZXk6IHNQcmV2aW91c1NlbGVjdGVkS2V5XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogSW52YWxpZGF0ZXMgdGhlIGNvbnRlbnQgb2YgYWxsIGlubmVyIGNvbnRyb2xzLlxuXHQgKi9cblx0aW52YWxpZGF0ZUNvbnRlbnQoKSB7XG5cdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR0aGlzLmdldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdG9NYWNyb0FQSS5pbnZhbGlkYXRlQ29udGVudD8uKCk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgY291bnRzIHRvIG91dCBvZiBkYXRlIG9yIHVwIHRvIGRhdGVcblx0ICogSWYgdGhlIGNvdW50cyBhcmUgc2V0IHRvIFwib3V0IG9mIGRhdGVcIiBhbmQgdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgZG9lc24ndCBjb250YWluIGFuIGlubmVyIGNvbnRyb2wgYWxsIGlubmVyIGNvbnRyb2xzIGFyZSByZXF1ZXN0ZWQgdG8gZ2V0IHRoZSBuZXcgY291bnRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJWYWx1ZSBGcmVlemUgb3Igbm90IHRoZSBjb250cm9sXG5cdCAqL1xuXHRzZXRDb3VudHNPdXREYXRlZChiVmFsdWUgPSB0cnVlKSB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImNvdW50c091dERhdGVkXCIsIGJWYWx1ZSk7XG5cdFx0Ly8gaWYgdGhlIGN1cnJlbnQgdGFiIGlzIG5vdCBjb25maWd1cmVkIHdpdGggbm8gaW5uZXIgQ29udHJvbFxuXHRcdC8vIHRoZSB0YWIgY291bnRzIG11c3QgYmUgbWFudWFsbHkgcmVmcmVzaGVkIHNpbmNlIG5vIE1hY3JvIEFQSSB3aWxsIHNlbnQgZXZlbnQgaW50ZXJuYWxEYXRhUmVxdWVzdGVkXG5cdFx0aWYgKGJWYWx1ZSAmJiAhdGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHR0aGlzLl9yZWZyZXNoVGFic0NvdW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZyZWV6ZXMgdGhlIGNvbnRlbnQgOlxuXHQgKiAgLSBjb250ZW50IGlzIGZyb3plbjogdGhlIGJpbmRpbmcgb2YgdGhlIGlubmVyIGNvbnRyb2xzIGFyZSBzdXNwZW5kZWQuXG5cdCAqICAtIGNvbnRlbnQgaXMgdW5mcm96ZW46IHRoZSBiaW5kaW5nIG9mIGlubmVyIGNvbnRyb2wgcmVsYXRlZCB0byB0aGUgc2VsZWN0ZWQgSWNvblRhYkZpbHRlciBpcyByZXN1bWVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJWYWx1ZSBGcmVlemUgb3Igbm90IHRoZSBjb250cm9sXG5cdCAqL1xuXHRzZXRGcmVlemVDb250ZW50KGJWYWx1ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIsIGJWYWx1ZSk7XG5cdFx0dGhpcy5fc2V0SW5uZXJCaW5kaW5nKCk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgaW50ZXJuYWwgbW9kZWwgd2l0aCB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSBvbiBlYWNoIEljb25UYWJGaWx0ZXIgKGNvbnRhaW5pbmcgaW5uZXIgY29udHJvbCkgYWNjb3JkaW5nIHRvIHRoZSBlbnRpdHlUeXBlIG9mIHRoZSBmaWx0ZXIgY29udHJvbC5cblx0ICpcblx0ICogQHBhcmFtIG9SZXNvdXJjZUJ1bmRsZVxuXHQgKi9cblx0X3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcyhvUmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlKSB7XG5cdFx0Y29uc3QgdGFic01vZGVsID0gdGhpcy5nZXRUYWJzTW9kZWwoKTtcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmICh0YWJzTW9kZWwgJiYgb0ZpbHRlckNvbnRyb2wpIHtcblx0XHRcdGNvbnN0IHJlc3VsdHM6IGFueSA9IHt9O1xuXHRcdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9UYWIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSk7XG5cdFx0XHRcdGlmIChvVGFiKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc1RhYklkID0gb1RhYi5nZXRLZXkoKTtcblx0XHRcdFx0XHRjb25zdCBtSWdub3JlZEZpZWxkcyA9IG9NYWNyb0FQSS5yZWZyZXNoTm90QXBwbGljYWJsZUZpZWxkcz8uKG9GaWx0ZXJDb250cm9sKSB8fCBbXTtcblx0XHRcdFx0XHRyZXN1bHRzW3NUYWJJZF0gPSB7XG5cdFx0XHRcdFx0XHRub3RBcHBsaWNhYmxlOiB7XG5cdFx0XHRcdFx0XHRcdGZpZWxkczogbUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiB0aGlzLl9zZXRUYWJNZXNzYWdlU3RyaXAoe1xuXHRcdFx0XHRcdFx0XHRcdGVudGl0eVR5cGVQYXRoOiBvRmlsdGVyQ29udHJvbC5kYXRhKFwiZW50aXR5VHlwZVwiKSxcblx0XHRcdFx0XHRcdFx0XHRpZ25vcmVkRmllbGRzOiBtSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0XHRcdFx0XHRyZXNvdXJjZUJ1bmRsZTogb1Jlc291cmNlQnVuZGxlLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBvVGFiLmdldFRleHQoKVxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0KHRhYnNNb2RlbCBhcyBhbnkpLnNldERhdGEocmVzdWx0cyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGlubmVyIGNvbnRyb2xzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJPbmx5Rm9yVmlzaWJsZVRhYiBTaG91bGQgZGlzcGxheSBvbmx5IHRoZSB2aXNpYmxlIGNvbnRyb2xzXG5cdCAqIEByZXR1cm5zIHtJbm5lckNvbnRyb2xUeXBlW119IEFuIGFycmF5IG9mIGNvbnRyb2xzXG5cdCAqL1xuXHRnZXRBbGxJbm5lckNvbnRyb2xzKGJPbmx5Rm9yVmlzaWJsZVRhYiA9IGZhbHNlKTogSW5uZXJDb250cm9sVHlwZVtdIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xzLnJlZHVjZSgoYUlubmVyQ29udHJvbHM6IElubmVyQ29udHJvbFR5cGVbXSwgc0lubmVyQ29udHJvbDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sID0gQ29yZS5ieUlkKHNJbm5lckNvbnRyb2wpIGFzIElubmVyQ29udHJvbFR5cGU7XG5cdFx0XHRcdGlmIChvQ29udHJvbCkge1xuXHRcdFx0XHRcdGFJbm5lckNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhSW5uZXJDb250cm9scy5maWx0ZXIoXG5cdFx0XHRcdFx0KG9Jbm5lckNvbnRyb2wpID0+ICFiT25seUZvclZpc2libGVUYWIgfHwgdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvSW5uZXJDb250cm9sKT8uZ2V0VmlzaWJsZSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9LCBbXSkgfHwgW11cblx0XHQpO1xuXHR9XG5cblx0X2dldEZpbHRlckNvbnRyb2woKTogRmlsdGVyQmFyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gQ29yZS5ieUlkKHRoaXMuZmlsdGVyQ29udHJvbCkgYXMgRmlsdGVyQmFyIHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0X2dldFRhYkZyb21Jbm5lckNvbnRyb2wob0NvbnRyb2w6IENvbnRyb2wpOiBJY29uVGFiRmlsdGVyIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzU3VwcG9ydGVkQ2xhc3MgPSBJY29uVGFiRmlsdGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpO1xuXHRcdGxldCBvVGFiOiBhbnkgPSBvQ29udHJvbDtcblx0XHRpZiAob1RhYiAmJiAhb1RhYi5pc0Eoc1N1cHBvcnRlZENsYXNzKSAmJiBvVGFiLmdldFBhcmVudCkge1xuXHRcdFx0b1RhYiA9IG9Db250cm9sLmdldFBhcmVudCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RhYiAmJiBvVGFiLmlzQShzU3VwcG9ydGVkQ2xhc3MpID8gKG9UYWIgYXMgSWNvblRhYkZpbHRlcikgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0Vmlld0NvbnRyb2xsZXIoKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdHJldHVybiBvVmlldyAmJiBvVmlldy5nZXRDb250cm9sbGVyKCk7XG5cdH1cblxuXHRfcmVmcmVzaEN1c3RvbVZpZXcob0ZpbHRlckNvbmRpdGlvbnM6IGFueSwgc1JlZnJlc2hDYXVzZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8ub25WaWV3TmVlZHNSZWZyZXNoPy4oe1xuXHRcdFx0ZmlsdGVyQ29uZGl0aW9uczogb0ZpbHRlckNvbmRpdGlvbnMsXG5cdFx0XHRjdXJyZW50VGFiSWQ6IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpLFxuXHRcdFx0cmVmcmVzaENhdXNlOiBzUmVmcmVzaENhdXNlXG5cdFx0fSk7XG5cdH1cblxuXHRfcmVmcmVzaFRhYnNDb3VudCgpOiB2b2lkIHtcblx0XHRjb25zdCBzU2VsZWN0ZWRLZXkgPSB0aGlzLmNvbnRlbnQ/LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKHRydWUpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0Y29uc3Qgb0ljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSk7XG5cdFx0XHRpZiAob01hY3JvQVBJPy5nZXRDb3VudHMgJiYgKHRoaXMuY291bnRzT3V0RGF0ZWQgfHwgc1NlbGVjdGVkS2V5ID09PSBvSWNvblRhYkZpbHRlcj8uZ2V0S2V5KCkpKSB7XG5cdFx0XHRcdGlmIChvSWNvblRhYkZpbHRlciAmJiBvSWNvblRhYkZpbHRlci5zZXRDb3VudCkge1xuXHRcdFx0XHRcdG9JY29uVGFiRmlsdGVyLnNldENvdW50KFwiLi4uXCIpO1xuXHRcdFx0XHRcdG9NYWNyb0FQSVxuXHRcdFx0XHRcdFx0LmdldENvdW50cygpXG5cdFx0XHRcdFx0XHQudGhlbigoaUNvdW50OiBzdHJpbmcpID0+IG9JY29uVGFiRmlsdGVyLnNldENvdW50KGlDb3VudCB8fCBcIjBcIikpXG5cdFx0XHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJlcXVlc3RpbmcgQ291bnRzIGZvciBDb250cm9sXCIsIG9FcnJvcik7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQoZmFsc2UpO1xuXHR9XG5cblx0X3NldElubmVyQmluZGluZyhiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgPSBmYWxzZSkge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvSWNvblRhYkZpbHRlciA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0Y29uc3QgYklzU2VsZWN0ZWRLZXkgPSBvSWNvblRhYkZpbHRlcj8uZ2V0S2V5KCkgPT09IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdFx0XHRjb25zdCBzQWN0aW9uID0gYklzU2VsZWN0ZWRLZXkgJiYgIXRoaXMuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpID8gQmluZGluZ0FjdGlvbi5SZXN1bWUgOiBCaW5kaW5nQWN0aW9uLlN1c3BlbmQ7XG5cdFx0XHRcdG9NYWNyb0FQSVtzQWN0aW9uXT8uKHNBY3Rpb24gPT09IEJpbmRpbmdBY3Rpb24uUmVzdW1lID8gYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkICYmIGJJc1NlbGVjdGVkS2V5IDogdW5kZWZpbmVkKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdF9zZXRUYWJNZXNzYWdlU3RyaXAocHJvcGVydGllczogTWVzc2FnZVN0cmlwUHJvcGVydGllcykge1xuXHRcdGxldCBzVGV4dCA9IFwiXCI7XG5cdFx0Y29uc3QgYUlnbm9yZWRGaWVsZHMgPSBwcm9wZXJ0aWVzLmlnbm9yZWRGaWVsZHM7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRyb2wgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCkgYXMgQ29udHJvbDtcblx0XHRpZiAob0ZpbHRlckNvbnRyb2wgJiYgQXJyYXkuaXNBcnJheShhSWdub3JlZEZpZWxkcykgJiYgYUlnbm9yZWRGaWVsZHMubGVuZ3RoID4gMCAmJiBwcm9wZXJ0aWVzLnRpdGxlKSB7XG5cdFx0XHRjb25zdCBhSWdub3JlZExhYmVscyA9IE1lc3NhZ2VTdHJpcC5nZXRMYWJlbHMoXG5cdFx0XHRcdGFJZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRwcm9wZXJ0aWVzLmVudGl0eVR5cGVQYXRoLFxuXHRcdFx0XHRvRmlsdGVyQ29udHJvbCxcblx0XHRcdFx0cHJvcGVydGllcy5yZXNvdXJjZUJ1bmRsZVxuXHRcdFx0KTtcblx0XHRcdHNUZXh0ID0gTWVzc2FnZVN0cmlwLmdldFRleHQoYUlnbm9yZWRMYWJlbHMsIG9GaWx0ZXJDb250cm9sLCBwcm9wZXJ0aWVzLnRpdGxlLCBEZWxlZ2F0ZVV0aWwuZ2V0TG9jYWxpemVkVGV4dCk7XG5cdFx0XHRyZXR1cm4gc1RleHQ7XG5cdFx0fVxuXHR9XG5cblx0X29uU2VhcmNoKG9FdmVudDogQ29yZUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR0aGlzLnNldEZyZWV6ZUNvbnRlbnQoZmFsc2UpO1xuXHRcdGlmICh0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdHRoaXMuX3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcyh0aGlzLl9nZXRWaWV3Q29udHJvbGxlcigpPy5vUmVzb3VyY2VCdW5kbGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBjdXN0b20gdGFiXG5cdFx0XHR0aGlzLl9yZWZyZXNoQ3VzdG9tVmlldyhvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc1wiKSwgXCJzZWFyY2hcIik7XG5cdFx0fVxuXHR9XG5cblx0X29uRmlsdGVyQ2hhbmdlZChvRXZlbnQ6IENvcmVFdmVudCk6IHZvaWQge1xuXHRcdGlmIChvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc0Jhc2VkXCIpKSB7XG5cdFx0XHR0aGlzLnNldEZyZWV6ZUNvbnRlbnQodHJ1ZSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpcGxlTW9kZUNvbnRyb2w7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQWtDS0EsYTs7YUFBQUEsYTtJQUFBQSxhO0lBQUFBLGE7S0FBQUEsYSxLQUFBQSxhOztNQU1DQyxtQixXQURMQyxjQUFjLENBQUMsMERBQUQsQyxVQUViQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVIsQ0FBRCxDLFVBR1JELFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsU0FBUjtJQUFtQkMsWUFBWSxFQUFFO0VBQWpDLENBQUQsQyxVQUdSRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVI7SUFBbUJDLFlBQVksRUFBRTtFQUFqQyxDQUFELEMsVUFHUkMsV0FBVyxDQUFDO0lBQUVGLElBQUksRUFBRSxrQkFBUjtJQUE0QkcsUUFBUSxFQUFFLEtBQXRDO0lBQTZDQyxTQUFTLEVBQUU7RUFB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
@@ -63,8 +63,13 @@ class MultipleModeControl extends Control {
63
63
  onBeforeRendering() {
64
64
  this.getTabsModel(); // Generate the model which is mandatory for some bindings
65
65
 
66
- const oFilterBarAPI = this._getFilterControl()?.getParent();
67
- this._getAllInnerControls().forEach((oMacroAPI) => {
66
+ const oFilterControl = this._getFilterControl();
67
+ if (!oFilterControl) {
68
+ // In case there's no filterbar, we have to update the counts in the tabs immediately
69
+ this.setCountsOutDated(true);
70
+ }
71
+ const oFilterBarAPI = oFilterControl?.getParent();
72
+ this.getAllInnerControls().forEach((oMacroAPI) => {
68
73
  if (this.showCounts) {
69
74
  oMacroAPI.attachEvent("internalDataRequested", this._refreshTabsCount.bind(this));
70
75
  }
@@ -109,9 +114,9 @@ class MultipleModeControl extends Control {
109
114
  * @returns {InnerControlType | undefined} The control
110
115
  */
111
116
  getSelectedInnerControl(): InnerControlType | undefined {
112
- const oSelectedTab = this.content.getItems().find((oItem) => (oItem as IconTabFilter).getKey() === this.content.getSelectedKey());
117
+ const oSelectedTab = this.content?.getItems().find((oItem) => (oItem as IconTabFilter).getKey() === this.content.getSelectedKey());
113
118
  return oSelectedTab
114
- ? this._getAllInnerControls().find((oMacroAPI) => this._getTabFromInnerControl(oMacroAPI) === oSelectedTab)
119
+ ? this.getAllInnerControls().find((oMacroAPI) => this._getTabFromInnerControl(oMacroAPI) === oSelectedTab)
115
120
  : undefined;
116
121
  }
117
122
 
@@ -167,7 +172,7 @@ class MultipleModeControl extends Control {
167
172
  */
168
173
  invalidateContent() {
169
174
  this.setCountsOutDated(true);
170
- this._getAllInnerControls().forEach((oMacroAPI) => {
175
+ this.getAllInnerControls().forEach((oMacroAPI) => {
171
176
  oMacroAPI.invalidateContent?.();
172
177
  });
173
178
  }
@@ -209,7 +214,7 @@ class MultipleModeControl extends Control {
209
214
  const oFilterControl = this._getFilterControl() as Control;
210
215
  if (tabsModel && oFilterControl) {
211
216
  const results: any = {};
212
- this._getAllInnerControls().forEach((oMacroAPI) => {
217
+ this.getAllInnerControls().forEach((oMacroAPI) => {
213
218
  const oTab = this._getTabFromInnerControl(oMacroAPI);
214
219
  if (oTab) {
215
220
  const sTabId = oTab.getKey();
@@ -231,7 +236,13 @@ class MultipleModeControl extends Control {
231
236
  }
232
237
  }
233
238
 
234
- _getAllInnerControls(bOnlyForVisibleTab = false): InnerControlType[] {
239
+ /**
240
+ * Gets the inner controls.
241
+ *
242
+ * @param {boolean} bOnlyForVisibleTab Should display only the visible controls
243
+ * @returns {InnerControlType[]} An array of controls
244
+ */
245
+ getAllInnerControls(bOnlyForVisibleTab = false): InnerControlType[] {
235
246
  return (
236
247
  this.innerControls.reduce((aInnerControls: InnerControlType[], sInnerControl: string) => {
237
248
  const oControl = Core.byId(sInnerControl) as InnerControlType;
@@ -272,8 +283,8 @@ class MultipleModeControl extends Control {
272
283
  }
273
284
 
274
285
  _refreshTabsCount(): void {
275
- const sSelectedKey = this.content.getSelectedKey();
276
- this._getAllInnerControls(true).forEach((oMacroAPI) => {
286
+ const sSelectedKey = this.content?.getSelectedKey();
287
+ this.getAllInnerControls(true).forEach((oMacroAPI) => {
277
288
  const oIconTabFilter = this._getTabFromInnerControl(oMacroAPI);
278
289
  if (oMacroAPI?.getCounts && (this.countsOutDated || sSelectedKey === oIconTabFilter?.getKey())) {
279
290
  if (oIconTabFilter && oIconTabFilter.setCount) {
@@ -292,7 +303,7 @@ class MultipleModeControl extends Control {
292
303
 
293
304
  _setInnerBinding(bRequestIfNotInitialized = false) {
294
305
  if (this.content) {
295
- this._getAllInnerControls().forEach((oMacroAPI) => {
306
+ this.getAllInnerControls().forEach((oMacroAPI) => {
296
307
  const oIconTabFilter = this._getTabFromInnerControl(oMacroAPI);
297
308
  const bIsSelectedKey = oIconTabFilter?.getKey() === this.content.getSelectedKey();
298
309
  const sAction = bIsSelectedKey && !this.getProperty("freezeContent") ? BindingAction.Resume : BindingAction.Suspend;
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/filter/FilterUtils"], function (CommonUtils, FilterUtils) {
5
+ sap.ui.define(["sap/fe/core/CommonUtils"], function (CommonUtils) {
6
6
  "use strict";
7
7
 
8
8
  var IntentBasedNavigationOverride = {
@@ -27,9 +27,6 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/filter/FilterUtils"], f
27
27
  }
28
28
 
29
29
  oFilterBarConditions = oController._intentBasedNavigation.prepareFiltersForExternalNavigation(oFilterBarConditions, sRootPath, aParameters);
30
- var oFilterInfo = FilterUtils.getFilterInfo(oFilterBar, {
31
- targetControl: oController._getTable()
32
- }).filters;
33
30
 
34
31
  var oMultipleModeControl = oController._getMultiModeControl();
35
32
 
@@ -51,7 +48,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/filter/FilterUtils"], f
51
48
  } // TODO: move this also into the intent based navigation controller extension
52
49
 
53
50
 
54
- CommonUtils.addExternalStateFiltersToSelectionVariant(oSelectionVariant, oFilterBarConditions, oTargetInfo, oFilterInfo);
51
+ CommonUtils.addExternalStateFiltersToSelectionVariant(oSelectionVariant, oFilterBarConditions, oTargetInfo, oFilterBar);
55
52
  delete oTargetInfo.propertiesWithoutConflict;
56
53
  }
57
54
  },
@@ -61,4 +58,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/filter/FilterUtils"], f
61
58
  };
62
59
  return IntentBasedNavigationOverride;
63
60
  }, false);
64
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiaXNFbXB0eSIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwic1Jvb3RQYXRoIiwiZnVsbENvbnRleHRQYXRoIiwib0ZpbHRlckJhckNvbmRpdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJiYXNlIiwiZmlsdGVyQmFyQ29uZGl0aW9ucyIsImFQYXJhbWV0ZXJzIiwiY29udGV4dFBhdGgiLCJvTWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJvUGFyYW1ldGVySW5mbyIsIkNvbW1vblV0aWxzIiwiZ2V0UGFyYW1ldGVySW5mbyIsIm9QYXJhbVByb3BlcnRpZXMiLCJwYXJhbWV0ZXJQcm9wZXJ0aWVzIiwia2V5cyIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwcmVwYXJlRmlsdGVyc0ZvckV4dGVybmFsTmF2aWdhdGlvbiIsIm9GaWx0ZXJJbmZvIiwiRmlsdGVyVXRpbHMiLCJnZXRGaWx0ZXJJbmZvIiwidGFyZ2V0Q29udHJvbCIsIl9nZXRUYWJsZSIsImZpbHRlcnMiLCJvTXVsdGlwbGVNb2RlQ29udHJvbCIsIl9nZXRNdWx0aU1vZGVDb250cm9sIiwib1RhYnNNb2RlbCIsImdldFRhYnNNb2RlbCIsImFJZ25vcmVkRmllbGRzRm9yVGFiIiwiZ2V0UHJvcGVydHkiLCJjb250ZW50IiwiZ2V0U2VsZWN0ZWRLZXkiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJmb3JFYWNoIiwic1Byb3BlcnR5IiwiZmlsdGVyQ29uZGl0aW9ucyIsImFkZEV4dGVybmFsU3RhdGVGaWx0ZXJzVG9TZWxlY3Rpb25WYXJpYW50IiwicHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsImdldEVudGl0eVNldCIsImdldEN1cnJlbnRFbnRpdHlTZXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkludGVudEJhc2VkTmF2aWdhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHR5cGUgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5cbmNvbnN0IEludGVudEJhc2VkTmF2aWdhdGlvbk92ZXJyaWRlID0ge1xuXHRhZGFwdE5hdmlnYXRpb25Db250ZXh0OiBmdW5jdGlvbiAodGhpczogSW50ZW50QmFzZWROYXZpZ2F0aW9uLCBvU2VsZWN0aW9uVmFyaWFudDogYW55LCBvVGFyZ2V0SW5mbzogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Ly8gQWRkaW5nIGZpbHRlciBiYXIgdmFsdWVzIHRvIHRoZSBuYXZpZ2F0aW9uIGRvZXMgbm90IG1ha2Ugc2Vuc2UgaWYgbm8gY29udGV4dCBoYXMgYmVlbiBzZWxlY3RlZC5cblx0XHQvLyBIZW5jZSBvbmx5IGNvbnNpZGVyIGZpbHRlciBiYXIgdmFsdWVzIHdoZW4gU2VsZWN0aW9uVmFyaWFudCBpcyBub3QgZW1wdHlcblx0XHRpZiAob0ZpbHRlckJhciAmJiAhb1NlbGVjdGlvblZhcmlhbnQuaXNFbXB0eSgpKSB7XG5cdFx0XHRjb25zdCBvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueSxcblx0XHRcdFx0c1Jvb3RQYXRoID0gb1ZpZXdEYXRhLmZ1bGxDb250ZXh0UGF0aDtcblx0XHRcdGxldCBvRmlsdGVyQmFyQ29uZGl0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sICh0aGlzLmJhc2UuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBhbnkpLmZpbHRlckJhckNvbmRpdGlvbnMpO1xuXHRcdFx0bGV0IGFQYXJhbWV0ZXJzID0gW107XG5cblx0XHRcdGlmIChvVmlld0RhdGEuY29udGV4dFBhdGgpIHtcblx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9WaWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdFx0b1BhcmFtZXRlckluZm8gPSBDb21tb25VdGlscy5nZXRQYXJhbWV0ZXJJbmZvKG9NZXRhTW9kZWwsIG9WaWV3RGF0YS5jb250ZXh0UGF0aCksXG5cdFx0XHRcdFx0b1BhcmFtUHJvcGVydGllcyA9IG9QYXJhbWV0ZXJJbmZvLnBhcmFtZXRlclByb3BlcnRpZXM7XG5cdFx0XHRcdGFQYXJhbWV0ZXJzID0gKG9QYXJhbVByb3BlcnRpZXMgJiYgT2JqZWN0LmtleXMob1BhcmFtUHJvcGVydGllcykpIHx8IFtdO1xuXHRcdFx0fVxuXG5cdFx0XHRvRmlsdGVyQmFyQ29uZGl0aW9ucyA9IG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ucHJlcGFyZUZpbHRlcnNGb3JFeHRlcm5hbE5hdmlnYXRpb24oXG5cdFx0XHRcdG9GaWx0ZXJCYXJDb25kaXRpb25zLFxuXHRcdFx0XHRzUm9vdFBhdGgsXG5cdFx0XHRcdGFQYXJhbWV0ZXJzXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckluZm8gPSBGaWx0ZXJVdGlscy5nZXRGaWx0ZXJJbmZvKG9GaWx0ZXJCYXIsIHtcblx0XHRcdFx0dGFyZ2V0Q29udHJvbDogb0NvbnRyb2xsZXIuX2dldFRhYmxlKClcblx0XHRcdH0pLmZpbHRlcnM7XG5cblx0XHRcdGNvbnN0IG9NdWx0aXBsZU1vZGVDb250cm9sID0gb0NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKTtcblx0XHRcdGlmIChvTXVsdGlwbGVNb2RlQ29udHJvbCkge1xuXHRcdFx0XHQvLyBEbyB3ZSBuZWVkIHRvIGV4Y2x1ZGUgRmllbGRzIChtdWx0aSB0YWJsZXMgbW9kZSB3aXRoIG11bHRpIGVudGl0eSBzZXRzKT9cblx0XHRcdFx0Y29uc3Qgb1RhYnNNb2RlbCA9IG9NdWx0aXBsZU1vZGVDb250cm9sLmdldFRhYnNNb2RlbCgpO1xuXHRcdFx0XHRpZiAob1RhYnNNb2RlbCkge1xuXHRcdFx0XHRcdGNvbnN0IGFJZ25vcmVkRmllbGRzRm9yVGFiID0gb1RhYnNNb2RlbC5nZXRQcm9wZXJ0eShcblx0XHRcdFx0XHRcdGAvJHtvTXVsdGlwbGVNb2RlQ29udHJvbC5jb250ZW50Py5nZXRTZWxlY3RlZEtleSgpfS9ub3RBcHBsaWNhYmxlL2ZpZWxkc2Bcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzRm9yVGFiKSAmJiBhSWdub3JlZEZpZWxkc0ZvclRhYi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRhSWdub3JlZEZpZWxkc0ZvclRhYi5mb3JFYWNoKGZ1bmN0aW9uIChzUHJvcGVydHk6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRkZWxldGUgb0ZpbHRlckJhckNvbmRpdGlvbnMuZmlsdGVyQ29uZGl0aW9uc1tzUHJvcGVydHldO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRPRE86IG1vdmUgdGhpcyBhbHNvIGludG8gdGhlIGludGVudCBiYXNlZCBuYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdFx0XHRDb21tb25VdGlscy5hZGRFeHRlcm5hbFN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudChvU2VsZWN0aW9uVmFyaWFudCwgb0ZpbHRlckJhckNvbmRpdGlvbnMsIG9UYXJnZXRJbmZvLCBvRmlsdGVySW5mbyk7XG5cdFx0XHRkZWxldGUgb1RhcmdldEluZm8ucHJvcGVydGllc1dpdGhvdXRDb25mbGljdDtcblx0XHR9XG5cdH0sXG5cdGdldEVudGl0eVNldDogZnVuY3Rpb24gKHRoaXM6IEludGVudEJhc2VkTmF2aWdhdGlvbikge1xuXHRcdHJldHVybiAodGhpcy5iYXNlIGFzIGFueSkuZ2V0Q3VycmVudEVudGl0eVNldCgpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQUtBLElBQU1BLDZCQUE2QixHQUFHO0lBQ3JDQyxzQkFBc0IsRUFBRSxVQUF1Q0MsaUJBQXZDLEVBQStEQyxXQUEvRCxFQUFpRjtNQUN4RyxJQUFNQyxLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO01BQUEsSUFDQ0MsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFEZjtNQUFBLElBRUNDLFVBQVUsR0FBR0YsV0FBVyxDQUFDRyxvQkFBWixFQUZkLENBRHdHLENBSXhHO01BQ0E7OztNQUNBLElBQUlELFVBQVUsSUFBSSxDQUFDTixpQkFBaUIsQ0FBQ1EsT0FBbEIsRUFBbkIsRUFBZ0Q7UUFDL0MsSUFBTUMsU0FBUyxHQUFHUCxLQUFLLENBQUNRLFdBQU4sRUFBbEI7UUFBQSxJQUNDQyxTQUFTLEdBQUdGLFNBQVMsQ0FBQ0csZUFEdkI7UUFFQSxJQUFJQyxvQkFBb0IsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFtQixLQUFLQyxJQUFMLENBQVViLE9BQVYsR0FBb0JFLGFBQXBCLEVBQUQsQ0FBNkNZLG1CQUEvRCxDQUEzQjtRQUNBLElBQUlDLFdBQVcsR0FBRyxFQUFsQjs7UUFFQSxJQUFJVCxTQUFTLENBQUNVLFdBQWQsRUFBMkI7VUFDMUIsSUFBTUMsVUFBVSxHQUFHbEIsS0FBSyxDQUFDbUIsUUFBTixHQUFpQkMsWUFBakIsRUFBbkI7VUFBQSxJQUNDQyxjQUFjLEdBQUdDLFdBQVcsQ0FBQ0MsZ0JBQVosQ0FBNkJMLFVBQTdCLEVBQXlDWCxTQUFTLENBQUNVLFdBQW5ELENBRGxCO1VBQUEsSUFFQ08sZ0JBQWdCLEdBQUdILGNBQWMsQ0FBQ0ksbUJBRm5DO1VBR0FULFdBQVcsR0FBSVEsZ0JBQWdCLElBQUlaLE1BQU0sQ0FBQ2MsSUFBUCxDQUFZRixnQkFBWixDQUFyQixJQUF1RCxFQUFyRTtRQUNBOztRQUVEYixvQkFBb0IsR0FBR1QsV0FBVyxDQUFDeUIsc0JBQVosQ0FBbUNDLG1DQUFuQyxDQUN0QmpCLG9CQURzQixFQUV0QkYsU0FGc0IsRUFHdEJPLFdBSHNCLENBQXZCO1FBS0EsSUFBTWEsV0FBVyxHQUFHQyxXQUFXLENBQUNDLGFBQVosQ0FBMEIzQixVQUExQixFQUFzQztVQUN6RDRCLGFBQWEsRUFBRTlCLFdBQVcsQ0FBQytCLFNBQVo7UUFEMEMsQ0FBdEMsRUFFakJDLE9BRkg7O1FBSUEsSUFBTUMsb0JBQW9CLEdBQUdqQyxXQUFXLENBQUNrQyxvQkFBWixFQUE3Qjs7UUFDQSxJQUFJRCxvQkFBSixFQUEwQjtVQUN6QjtVQUNBLElBQU1FLFVBQVUsR0FBR0Ysb0JBQW9CLENBQUNHLFlBQXJCLEVBQW5COztVQUNBLElBQUlELFVBQUosRUFBZ0I7WUFBQTs7WUFDZixJQUFNRSxvQkFBb0IsR0FBR0YsVUFBVSxDQUFDRyxXQUFYLHFDQUN4Qkwsb0JBQW9CLENBQUNNLE9BREcsMERBQ3hCLHNCQUE4QkMsY0FBOUIsRUFEd0IsMkJBQTdCOztZQUdBLElBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjTCxvQkFBZCxLQUF1Q0Esb0JBQW9CLENBQUNNLE1BQXJCLEdBQThCLENBQXpFLEVBQTRFO2NBQzNFTixvQkFBb0IsQ0FBQ08sT0FBckIsQ0FBNkIsVUFBVUMsU0FBVixFQUEwQjtnQkFDdEQsT0FBT3BDLG9CQUFvQixDQUFDcUMsZ0JBQXJCLENBQXNDRCxTQUF0QyxDQUFQO2NBQ0EsQ0FGRDtZQUdBO1VBQ0Q7UUFDRCxDQXBDOEMsQ0FzQy9DOzs7UUFDQXpCLFdBQVcsQ0FBQzJCLHlDQUFaLENBQXNEbkQsaUJBQXRELEVBQXlFYSxvQkFBekUsRUFBK0ZaLFdBQS9GLEVBQTRHOEIsV0FBNUc7UUFDQSxPQUFPOUIsV0FBVyxDQUFDbUQseUJBQW5CO01BQ0E7SUFDRCxDQWpEb0M7SUFrRHJDQyxZQUFZLEVBQUUsWUFBdUM7TUFDcEQsT0FBUSxLQUFLckMsSUFBTixDQUFtQnNDLG1CQUFuQixFQUFQO0lBQ0E7RUFwRG9DLENBQXRDO1NBdURleEQsNkIifQ==
61
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiaXNFbXB0eSIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwic1Jvb3RQYXRoIiwiZnVsbENvbnRleHRQYXRoIiwib0ZpbHRlckJhckNvbmRpdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJiYXNlIiwiZmlsdGVyQmFyQ29uZGl0aW9ucyIsImFQYXJhbWV0ZXJzIiwiY29udGV4dFBhdGgiLCJvTWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJvUGFyYW1ldGVySW5mbyIsIkNvbW1vblV0aWxzIiwiZ2V0UGFyYW1ldGVySW5mbyIsIm9QYXJhbVByb3BlcnRpZXMiLCJwYXJhbWV0ZXJQcm9wZXJ0aWVzIiwia2V5cyIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwcmVwYXJlRmlsdGVyc0ZvckV4dGVybmFsTmF2aWdhdGlvbiIsIm9NdWx0aXBsZU1vZGVDb250cm9sIiwiX2dldE11bHRpTW9kZUNvbnRyb2wiLCJvVGFic01vZGVsIiwiZ2V0VGFic01vZGVsIiwiYUlnbm9yZWRGaWVsZHNGb3JUYWIiLCJnZXRQcm9wZXJ0eSIsImNvbnRlbnQiLCJnZXRTZWxlY3RlZEtleSIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImZvckVhY2giLCJzUHJvcGVydHkiLCJmaWx0ZXJDb25kaXRpb25zIiwiYWRkRXh0ZXJuYWxTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQiLCJwcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0IiwiZ2V0RW50aXR5U2V0IiwiZ2V0Q3VycmVudEVudGl0eVNldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW50ZW50QmFzZWROYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSBMaXN0UmVwb3J0Q29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9MaXN0UmVwb3J0L0xpc3RSZXBvcnRDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcblxuY29uc3QgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgPSB7XG5cdGFkYXB0TmF2aWdhdGlvbkNvbnRleHQ6IGZ1bmN0aW9uICh0aGlzOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24sIG9TZWxlY3Rpb25WYXJpYW50OiBhbnksIG9UYXJnZXRJbmZvOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHQvLyBBZGRpbmcgZmlsdGVyIGJhciB2YWx1ZXMgdG8gdGhlIG5hdmlnYXRpb24gZG9lcyBub3QgbWFrZSBzZW5zZSBpZiBubyBjb250ZXh0IGhhcyBiZWVuIHNlbGVjdGVkLlxuXHRcdC8vIEhlbmNlIG9ubHkgY29uc2lkZXIgZmlsdGVyIGJhciB2YWx1ZXMgd2hlbiBTZWxlY3Rpb25WYXJpYW50IGlzIG5vdCBlbXB0eVxuXHRcdGlmIChvRmlsdGVyQmFyICYmICFvU2VsZWN0aW9uVmFyaWFudC5pc0VtcHR5KCkpIHtcblx0XHRcdGNvbnN0IG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCkgYXMgYW55LFxuXHRcdFx0XHRzUm9vdFBhdGggPSBvVmlld0RhdGEuZnVsbENvbnRleHRQYXRoO1xuXHRcdFx0bGV0IG9GaWx0ZXJCYXJDb25kaXRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgKHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIGFueSkuZmlsdGVyQmFyQ29uZGl0aW9ucyk7XG5cdFx0XHRsZXQgYVBhcmFtZXRlcnMgPSBbXTtcblxuXHRcdFx0aWYgKG9WaWV3RGF0YS5jb250ZXh0UGF0aCkge1xuXHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1ZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdFx0XHRvUGFyYW1ldGVySW5mbyA9IENvbW1vblV0aWxzLmdldFBhcmFtZXRlckluZm8ob01ldGFNb2RlbCwgb1ZpZXdEYXRhLmNvbnRleHRQYXRoKSxcblx0XHRcdFx0XHRvUGFyYW1Qcm9wZXJ0aWVzID0gb1BhcmFtZXRlckluZm8ucGFyYW1ldGVyUHJvcGVydGllcztcblx0XHRcdFx0YVBhcmFtZXRlcnMgPSAob1BhcmFtUHJvcGVydGllcyAmJiBPYmplY3Qua2V5cyhvUGFyYW1Qcm9wZXJ0aWVzKSkgfHwgW107XG5cdFx0XHR9XG5cblx0XHRcdG9GaWx0ZXJCYXJDb25kaXRpb25zID0gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5wcmVwYXJlRmlsdGVyc0ZvckV4dGVybmFsTmF2aWdhdGlvbihcblx0XHRcdFx0b0ZpbHRlckJhckNvbmRpdGlvbnMsXG5cdFx0XHRcdHNSb290UGF0aCxcblx0XHRcdFx0YVBhcmFtZXRlcnNcblx0XHRcdCk7XG5cblx0XHRcdGNvbnN0IG9NdWx0aXBsZU1vZGVDb250cm9sID0gb0NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKTtcblx0XHRcdGlmIChvTXVsdGlwbGVNb2RlQ29udHJvbCkge1xuXHRcdFx0XHQvLyBEbyB3ZSBuZWVkIHRvIGV4Y2x1ZGUgRmllbGRzIChtdWx0aSB0YWJsZXMgbW9kZSB3aXRoIG11bHRpIGVudGl0eSBzZXRzKT9cblx0XHRcdFx0Y29uc3Qgb1RhYnNNb2RlbCA9IG9NdWx0aXBsZU1vZGVDb250cm9sLmdldFRhYnNNb2RlbCgpO1xuXHRcdFx0XHRpZiAob1RhYnNNb2RlbCkge1xuXHRcdFx0XHRcdGNvbnN0IGFJZ25vcmVkRmllbGRzRm9yVGFiID0gb1RhYnNNb2RlbC5nZXRQcm9wZXJ0eShcblx0XHRcdFx0XHRcdGAvJHtvTXVsdGlwbGVNb2RlQ29udHJvbC5jb250ZW50Py5nZXRTZWxlY3RlZEtleSgpfS9ub3RBcHBsaWNhYmxlL2ZpZWxkc2Bcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzRm9yVGFiKSAmJiBhSWdub3JlZEZpZWxkc0ZvclRhYi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRhSWdub3JlZEZpZWxkc0ZvclRhYi5mb3JFYWNoKGZ1bmN0aW9uIChzUHJvcGVydHk6IGFueSkge1xuXHRcdFx0XHRcdFx0XHRkZWxldGUgb0ZpbHRlckJhckNvbmRpdGlvbnMuZmlsdGVyQ29uZGl0aW9uc1tzUHJvcGVydHldO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRPRE86IG1vdmUgdGhpcyBhbHNvIGludG8gdGhlIGludGVudCBiYXNlZCBuYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdFx0XHRDb21tb25VdGlscy5hZGRFeHRlcm5hbFN0YXRlRmlsdGVyc1RvU2VsZWN0aW9uVmFyaWFudChvU2VsZWN0aW9uVmFyaWFudCwgb0ZpbHRlckJhckNvbmRpdGlvbnMsIG9UYXJnZXRJbmZvLCBvRmlsdGVyQmFyKTtcblx0XHRcdGRlbGV0ZSBvVGFyZ2V0SW5mby5wcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0O1xuXHRcdH1cblx0fSxcblx0Z2V0RW50aXR5U2V0OiBmdW5jdGlvbiAodGhpczogSW50ZW50QmFzZWROYXZpZ2F0aW9uKSB7XG5cdFx0cmV0dXJuICh0aGlzLmJhc2UgYXMgYW55KS5nZXRDdXJyZW50RW50aXR5U2V0KCk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEludGVudEJhc2VkTmF2aWdhdGlvbk92ZXJyaWRlO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBSUEsSUFBTUEsNkJBQTZCLEdBQUc7SUFDckNDLHNCQUFzQixFQUFFLFVBQXVDQyxpQkFBdkMsRUFBK0RDLFdBQS9ELEVBQWlGO01BQ3hHLElBQU1DLEtBQUssR0FBRyxLQUFLQyxPQUFMLEVBQWQ7TUFBQSxJQUNDQyxXQUFXLEdBQUdGLEtBQUssQ0FBQ0csYUFBTixFQURmO01BQUEsSUFFQ0MsVUFBVSxHQUFHRixXQUFXLENBQUNHLG9CQUFaLEVBRmQsQ0FEd0csQ0FJeEc7TUFDQTs7O01BQ0EsSUFBSUQsVUFBVSxJQUFJLENBQUNOLGlCQUFpQixDQUFDUSxPQUFsQixFQUFuQixFQUFnRDtRQUMvQyxJQUFNQyxTQUFTLEdBQUdQLEtBQUssQ0FBQ1EsV0FBTixFQUFsQjtRQUFBLElBQ0NDLFNBQVMsR0FBR0YsU0FBUyxDQUFDRyxlQUR2QjtRQUVBLElBQUlDLG9CQUFvQixHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQW1CLEtBQUtDLElBQUwsQ0FBVWIsT0FBVixHQUFvQkUsYUFBcEIsRUFBRCxDQUE2Q1ksbUJBQS9ELENBQTNCO1FBQ0EsSUFBSUMsV0FBVyxHQUFHLEVBQWxCOztRQUVBLElBQUlULFNBQVMsQ0FBQ1UsV0FBZCxFQUEyQjtVQUMxQixJQUFNQyxVQUFVLEdBQUdsQixLQUFLLENBQUNtQixRQUFOLEdBQWlCQyxZQUFqQixFQUFuQjtVQUFBLElBQ0NDLGNBQWMsR0FBR0MsV0FBVyxDQUFDQyxnQkFBWixDQUE2QkwsVUFBN0IsRUFBeUNYLFNBQVMsQ0FBQ1UsV0FBbkQsQ0FEbEI7VUFBQSxJQUVDTyxnQkFBZ0IsR0FBR0gsY0FBYyxDQUFDSSxtQkFGbkM7VUFHQVQsV0FBVyxHQUFJUSxnQkFBZ0IsSUFBSVosTUFBTSxDQUFDYyxJQUFQLENBQVlGLGdCQUFaLENBQXJCLElBQXVELEVBQXJFO1FBQ0E7O1FBRURiLG9CQUFvQixHQUFHVCxXQUFXLENBQUN5QixzQkFBWixDQUFtQ0MsbUNBQW5DLENBQ3RCakIsb0JBRHNCLEVBRXRCRixTQUZzQixFQUd0Qk8sV0FIc0IsQ0FBdkI7O1FBTUEsSUFBTWEsb0JBQW9CLEdBQUczQixXQUFXLENBQUM0QixvQkFBWixFQUE3Qjs7UUFDQSxJQUFJRCxvQkFBSixFQUEwQjtVQUN6QjtVQUNBLElBQU1FLFVBQVUsR0FBR0Ysb0JBQW9CLENBQUNHLFlBQXJCLEVBQW5COztVQUNBLElBQUlELFVBQUosRUFBZ0I7WUFBQTs7WUFDZixJQUFNRSxvQkFBb0IsR0FBR0YsVUFBVSxDQUFDRyxXQUFYLHFDQUN4Qkwsb0JBQW9CLENBQUNNLE9BREcsMERBQ3hCLHNCQUE4QkMsY0FBOUIsRUFEd0IsMkJBQTdCOztZQUdBLElBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjTCxvQkFBZCxLQUF1Q0Esb0JBQW9CLENBQUNNLE1BQXJCLEdBQThCLENBQXpFLEVBQTRFO2NBQzNFTixvQkFBb0IsQ0FBQ08sT0FBckIsQ0FBNkIsVUFBVUMsU0FBVixFQUEwQjtnQkFDdEQsT0FBTzlCLG9CQUFvQixDQUFDK0IsZ0JBQXJCLENBQXNDRCxTQUF0QyxDQUFQO2NBQ0EsQ0FGRDtZQUdBO1VBQ0Q7UUFDRCxDQWpDOEMsQ0FtQy9DOzs7UUFDQW5CLFdBQVcsQ0FBQ3FCLHlDQUFaLENBQXNEN0MsaUJBQXRELEVBQXlFYSxvQkFBekUsRUFBK0ZaLFdBQS9GLEVBQTRHSyxVQUE1RztRQUNBLE9BQU9MLFdBQVcsQ0FBQzZDLHlCQUFuQjtNQUNBO0lBQ0QsQ0E5Q29DO0lBK0NyQ0MsWUFBWSxFQUFFLFlBQXVDO01BQ3BELE9BQVEsS0FBSy9CLElBQU4sQ0FBbUJnQyxtQkFBbkIsRUFBUDtJQUNBO0VBakRvQyxDQUF0QztTQW9EZWxELDZCIn0=
@@ -1,6 +1,5 @@
1
1
  import CommonUtils from "sap/fe/core/CommonUtils";
2
2
  import type IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentBasedNavigation";
3
- import FilterUtils from "sap/fe/macros/filter/FilterUtils";
4
3
  import type ListReportController from "sap/fe/templates/ListReport/ListReportController.controller";
5
4
 
6
5
  const IntentBasedNavigationOverride = {
@@ -28,9 +27,6 @@ const IntentBasedNavigationOverride = {
28
27
  sRootPath,
29
28
  aParameters
30
29
  );
31
- const oFilterInfo = FilterUtils.getFilterInfo(oFilterBar, {
32
- targetControl: oController._getTable()
33
- }).filters;
34
30
 
35
31
  const oMultipleModeControl = oController._getMultiModeControl();
36
32
  if (oMultipleModeControl) {
@@ -49,7 +45,7 @@ const IntentBasedNavigationOverride = {
49
45
  }
50
46
 
51
47
  // TODO: move this also into the intent based navigation controller extension
52
- CommonUtils.addExternalStateFiltersToSelectionVariant(oSelectionVariant, oFilterBarConditions, oTargetInfo, oFilterInfo);
48
+ CommonUtils.addExternalStateFiltersToSelectionVariant(oSelectionVariant, oFilterBarConditions, oTargetInfo, oFilterBar);
53
49
  delete oTargetInfo.propertiesWithoutConflict;
54
50
  }
55
51
  },