@sapui5/sap.fe.core 1.136.2 → 1.136.5

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 (86) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +7 -1
  4. package/src/sap/fe/core/AppComponent.ts +10 -0
  5. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +2 -1
  6. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +1 -0
  7. package/src/sap/fe/core/controllerextensions/EditFlow.js +41 -20
  8. package/src/sap/fe/core/controllerextensions/EditFlow.ts +60 -25
  9. package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -5
  10. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +19 -1
  11. package/src/sap/fe/core/controllerextensions/SideEffects.js +5 -4
  12. package/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -5
  13. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +4 -3
  14. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +10 -3
  15. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +9 -8
  16. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +11 -6
  17. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +9 -25
  18. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +20 -43
  19. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +2 -2
  20. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +1 -1
  21. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +7 -6
  22. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +9 -4
  23. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +4 -17
  24. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -19
  25. package/src/sap/fe/core/converters/controls/Common/Table.js +12 -2
  26. package/src/sap/fe/core/converters/controls/Common/Table.ts +18 -1
  27. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +3 -2
  28. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +2 -1
  29. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +19 -5
  30. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +28 -5
  31. package/src/sap/fe/core/fpm/manifest.json +1 -1
  32. package/src/sap/fe/core/helpers/DeleteHelper.js +4 -2
  33. package/src/sap/fe/core/helpers/DeleteHelper.ts +1 -1
  34. package/src/sap/fe/core/helpers/ModelHelper.js +9 -18
  35. package/src/sap/fe/core/helpers/ModelHelper.ts +12 -17
  36. package/src/sap/fe/core/library.js +1 -1
  37. package/src/sap/fe/core/messagebundle.properties +4 -0
  38. package/src/sap/fe/core/messagebundle_ar.properties +5 -3
  39. package/src/sap/fe/core/messagebundle_bg.properties +2 -0
  40. package/src/sap/fe/core/messagebundle_ca.properties +2 -0
  41. package/src/sap/fe/core/messagebundle_cnr.properties +2 -0
  42. package/src/sap/fe/core/messagebundle_cs.properties +2 -0
  43. package/src/sap/fe/core/messagebundle_cy.properties +2 -0
  44. package/src/sap/fe/core/messagebundle_da.properties +2 -0
  45. package/src/sap/fe/core/messagebundle_de.properties +2 -0
  46. package/src/sap/fe/core/messagebundle_el.properties +2 -0
  47. package/src/sap/fe/core/messagebundle_en.properties +2 -0
  48. package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
  49. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +2 -0
  50. package/src/sap/fe/core/messagebundle_es.properties +3 -1
  51. package/src/sap/fe/core/messagebundle_es_MX.properties +2 -0
  52. package/src/sap/fe/core/messagebundle_et.properties +2 -0
  53. package/src/sap/fe/core/messagebundle_fi.properties +2 -0
  54. package/src/sap/fe/core/messagebundle_fr.properties +4 -2
  55. package/src/sap/fe/core/messagebundle_fr_CA.properties +2 -0
  56. package/src/sap/fe/core/messagebundle_hi.properties +2 -0
  57. package/src/sap/fe/core/messagebundle_hr.properties +2 -0
  58. package/src/sap/fe/core/messagebundle_hu.properties +2 -0
  59. package/src/sap/fe/core/messagebundle_id.properties +4 -2
  60. package/src/sap/fe/core/messagebundle_it.properties +2 -0
  61. package/src/sap/fe/core/messagebundle_iw.properties +2 -0
  62. package/src/sap/fe/core/messagebundle_ja.properties +2 -0
  63. package/src/sap/fe/core/messagebundle_kk.properties +2 -0
  64. package/src/sap/fe/core/messagebundle_ko.properties +6 -4
  65. package/src/sap/fe/core/messagebundle_lt.properties +2 -0
  66. package/src/sap/fe/core/messagebundle_lv.properties +2 -0
  67. package/src/sap/fe/core/messagebundle_mk.properties +2 -0
  68. package/src/sap/fe/core/messagebundle_ms.properties +2 -0
  69. package/src/sap/fe/core/messagebundle_nl.properties +2 -0
  70. package/src/sap/fe/core/messagebundle_no.properties +2 -0
  71. package/src/sap/fe/core/messagebundle_pl.properties +2 -0
  72. package/src/sap/fe/core/messagebundle_pt.properties +2 -0
  73. package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -0
  74. package/src/sap/fe/core/messagebundle_ro.properties +2 -0
  75. package/src/sap/fe/core/messagebundle_ru.properties +2 -0
  76. package/src/sap/fe/core/messagebundle_sh.properties +2 -0
  77. package/src/sap/fe/core/messagebundle_sk.properties +2 -0
  78. package/src/sap/fe/core/messagebundle_sl.properties +2 -0
  79. package/src/sap/fe/core/messagebundle_sr.properties +2 -0
  80. package/src/sap/fe/core/messagebundle_sv.properties +2 -0
  81. package/src/sap/fe/core/messagebundle_th.properties +2 -0
  82. package/src/sap/fe/core/messagebundle_tr.properties +2 -0
  83. package/src/sap/fe/core/messagebundle_uk.properties +2 -0
  84. package/src/sap/fe/core/messagebundle_vi.properties +9 -7
  85. package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
  86. package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.136.2",
3
+ "version": "1.136.5",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.136.2</version>
9
+ <version>1.136.5</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -147,6 +147,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
147
147
  _this.isAdaptationEnabled = false;
148
148
  _this.isExiting = false;
149
149
  _this.pageConfigurationChanges = {};
150
+ _this.suspended = false;
150
151
  return _this;
151
152
  }
152
153
  _inheritsLoose(AppComponent, _UIComponent);
@@ -491,6 +492,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
491
492
 
492
493
  // Reset all values in versionActivationStatus to false
493
494
  AppStateHandler.resetVersionActivationStatus();
495
+ this.suspended = false;
494
496
  };
495
497
  _proto.suspend = function suspend() {
496
498
  // called by FLP when app sap-keep-alive is enabled and app is suspended
@@ -498,6 +500,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
498
500
  startedService.onSuspend?.();
499
501
  }
500
502
  this.getRootViewController().viewState.onSuspend();
503
+ this.suspended = true;
504
+ };
505
+ _proto.isSuspended = function isSuspended() {
506
+ return this.suspended;
501
507
  }
502
508
 
503
509
  /**
@@ -581,4 +587,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/AppState
581
587
  }), _class2)) || _class);
582
588
  return AppComponent;
583
589
  }, false);
584
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJWSUVXTkFNRV9DT01QQVRJQklMSVRZIiwiUk9VVEVSQ0xBU1MiLCJOQVZDT05UQUlORVIiLCJfbVJvdXRlciIsIlJvdXRlciIsIkFwcENvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0IiwiX3ZlcnNpb24iLCJzZXJ2aWNlcyIsInJlc291cmNlTW9kZWwiLCJmYWN0b3J5TmFtZSIsInN0YXJ0dXAiLCJzZXR0aW5ncyIsImJ1bmRsZXMiLCJtb2RlbE5hbWUiLCJyb3V0aW5nU2VydmljZSIsInNoZWxsU2VydmljZXMiLCJTaGVsbFVJU2VydmljZSIsIm5hdmlnYXRpb25TZXJ2aWNlIiwiZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJzaWRlRWZmZWN0c1NlcnZpY2UiLCJhc3luY0NvbXBvbmVudFNlcnZpY2UiLCJjb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UiLCJjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwidGVsZW1ldHJ5U2VydmljZSIsInZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIiwiQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSIsIkNvbnRleHRTaGFyaW5nU2VydmljZSIsImlubGluZUVkaXRTZXJ2aWNlIiwicm9vdFZpZXciLCJ2aWV3TmFtZSIsImlkIiwicm91dGluZyIsImNvbnRyb2xJZCIsInJvdXRlckNsYXNzIiwidmlld1R5cGUiLCJjb250cm9sQWdncmVnYXRpb24iLCJjb250YWluZXJPcHRpb25zIiwicHJvcGFnYXRlTW9kZWwiLCJkZXNpZ250aW1lIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0FwcENvbXBvbmVudCIsIl9VSUNvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsInN0YXJ0dXBNb2RlIiwiTm9ybWFsIiwiX3N0YXJ0ZWRTZXJ2aWNlcyIsImlzQWRhcHRhdGlvbkVuYWJsZWQiLCJpc0V4aXRpbmciLCJwYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIl9pc0ZjbEVuYWJsZWQiLCJvTWFuaWZlc3RVSTUiLCJnZXRNYW5pZmVzdEVudHJ5Iiwic2V0QWRhcHRhdGlvbk1vZGUiLCJpc0FkYXB0YXRpb25Nb2RlIiwiaW5pdGlhbGl6ZUZlYXR1cmVUb2dnbGVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbiIsInBhZ2VJZCIsInBhdGgiLCJ2YWx1ZSIsImNoYW5nZUNvbmZpZ3VyYXRpb24iLCJnZXRNYW5pZmVzdCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2V0Q2FwYWJpbGl0eSIsImNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzIiwiZ2V0Um91dGVyUHJveHkiLCJfb1JvdXRlclByb3h5IiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiX29BcHBTdGF0ZUhhbmRsZXIiLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJnZXRSb290Q29udGFpbmVyIiwiZ2V0Q29udGVudCIsImdldFN0YXJ0dXBNb2RlIiwic2V0U3RhcnR1cE1vZGVDcmVhdGUiLCJDcmVhdGUiLCJzZXRTdGFydHVwTW9kZUF1dG9DcmVhdGUiLCJBdXRvQ3JlYXRlIiwic2V0U3RhcnR1cE1vZGVEZWVwbGluayIsIkRlZXBsaW5rIiwiaW5pdCIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiaGFzIiwic2V0VGltZW91dCIsIkxpYnJhcnkiLCJsb2FkIiwibmFtZSIsIl9pbml0aWFsaXplZEtlZXBlciIsIlByb21pc2VLZWVwZXIiLCJpbml0aWFsaXplZCIsInByb21pc2UiLCJ1aU1vZGVsIiwiSlNPTk1vZGVsIiwiZWRpdE1vZGUiLCJFZGl0TW9kZSIsIkRpc3BsYXkiLCJpc0VkaXRhYmxlIiwiZHJhZnRTdGF0dXMiLCJEcmFmdFN0YXR1cyIsIkNsZWFyIiwiYnVzeSIsImJ1c3lMb2NhbCIsInBhZ2VzIiwib0ludGVybmFsTW9kZWwiLCJzZXREZWZhdWx0QmluZGluZ01vZGUiLCJNb2RlbEhlbHBlciIsImVuaGFuY2VVaUpTT05Nb2RlbCIsImVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbCIsInNldE1vZGVsIiwiYkluaXRpYWxpemVSb3V0aW5nIiwidW5kZWZpbmVkIiwiUm91dGVyUHJveHkiLCJBcHBTdGF0ZUhhbmRsZXIiLCJfb0RpYWdub3N0aWNzIiwiRGlhZ25vc3RpY3MiLCJvTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsImVuaGFuY2VPRGF0YU1vZGVsIiwic2V0UmV0cnlBZnRlckhhbmRsZXIiLCJodHRwNTAzUmV0cnlIYW5kbGVyIiwiYmluZCIsImVudGl0eUNvbnRhaW5lciIsImdldE1ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJhcHAiLCJkaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0IiwiY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbiIsImluc3RhbmNlTWFwIiwiZ2V0SWQiLCJlcnJvciIsIkhUVFA1MDNIYW5kbGVyIiwiaGFuZGxlNTAzRGVsYXkiLCJnZXRSZXNvdXJjZU1vZGVsIiwiTG9nIiwiaW5mbyIsImluY2x1ZGVzIiwiRXJyb3IiLCJvblNlcnZpY2VzU3RhcnRlZCIsImFsbFNlcnZpY2VzIiwiYWxsU2V0dGxlZCIsImluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzIiwibWFwIiwiZm5Qcm9jZXNzIiwiZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uIiwidGhlbiIsImF0dGFjaFJvdXRlTWF0Y2hlcnMiLCJnZXRSb3V0ZXIiLCJpbml0aWFsaXplIiwiZ2V0VmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UiLCJyZWdpc3RlclNoZWxsSG9vayIsImNhdGNoIiwib1Jlc291cmNlQnVuZGxlIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJkaXNwbGF5RXJyb3JQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiZ2V0Um91dGluZ1NlcnZpY2UiLCJpbml0aWFsaXplUm91dGluZyIsImF0dGFjaEFmdGVySW5pdCIsImVyciIsInRvU3RyaW5nIiwiZXhpdCIsImRlc3Ryb3kiLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImdldERpYWdub3N0aWNzIiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsIl9yb3V0aW5nIiwiZSIsIm9NYWluTW9kZWwiLCJvTW9kZWxzIiwib0hlYWRlcnMiLCJvUmVxdWVzdG9yIiwiT2JqZWN0IiwiYXNzaWduIiwibUhlYWRlcnMiLCJiZWZvcmVFeGl0IiwidW5yZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MiLCJnZXRTaGVsbFNlcnZpY2VzIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSIsImdldENvbnRleHRTaGFyaW5nU2VydmljZSIsImdldFRlbGVtZXRyeVNlcnZpY2UiLCJnZXRJbmxpbmVFZGl0U2VydmljZSIsImdldFN0YXJ0dXBQYXJhbWV0ZXJzIiwib0NvbXBvbmVudERhdGEiLCJnZXRDb21wb25lbnREYXRhIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJyZXN0b3JlIiwic3RhcnRlZFNlcnZpY2UiLCJvblJlc3RvcmUiLCJ2aWV3U3RhdGUiLCJyZXNldFZlcnNpb25BY3RpdmF0aW9uU3RhdHVzIiwic3VzcGVuZCIsIm9uU3VzcGVuZCIsIm5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIiLCJCdXN5TG9ja2VyIiwiaXNMb2NrZWQiLCJfbWFuYWdlRGVlcExpbmtTdGFydHVwIiwiZXhjZXB0aW9uIiwidW5sb2NrIiwiaXNDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VFbmFibGVkIiwicmVnaXN0ZXJJbnN0YW5jZURlcGVuZGVudFByb2Nlc3NGb3JTdGFydFVwIiwicHVzaCIsInJlZ2lzdGVyU3RpY2t5U2Vzc2lvbkNhbGxiYWNrcyIsImRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrIiwic2Vzc2lvblRpbWVvdXRDYWxsYmFjayIsImRpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayIsInN0aWNreURpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrIiwicmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIiLCJzdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrIiwiYXR0YWNoU2Vzc2lvblRpbWVvdXQiLCJzdGlja3lEaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2siLCJhdHRhY2hSb3V0ZU1hdGNoZWQiLCJkZXJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyIiwiZGV0YWNoU2Vzc2lvblRpbWVvdXQiLCJkZXRhY2hSb3V0ZU1hdGNoZWQiLCJVSUNvbXBvbmVudCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgRmxleGlibGVDb2x1bW5MYXlvdXQgZnJvbSBcInNhcC9mL0ZsZXhpYmxlQ29sdW1uTGF5b3V0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEFwcFN0YXRlSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwU3RhdGVIYW5kbGVyXCI7XG5pbXBvcnQgUm91dGVyUHJveHkgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3JvdXRpbmcvUm91dGVyUHJveHlcIjtcbmltcG9ydCBIVFRQNTAzSGFuZGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9IVFRQNTAzSGFuZGxlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUHJvbWlzZUtlZXBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Qcm9taXNlS2VlcGVyXCI7XG5pbXBvcnQgbGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHsgY2hhbmdlQ29uZmlndXJhdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9tYW5pZmVzdE1lcmdlci9DaGFuZ2VQYWdlQ29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHR5cGUgUm9vdFZpZXdCYXNlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvcm9vdFZpZXcvUm9vdFZpZXdCYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRTaGFyaW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db250ZXh0U2hhcmluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9FbnZpcm9ubWVudFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IElubGluZUVkaXRTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0lubGluZUVkaXRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9OYXZpZ2F0aW9uU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvUm91dGluZ1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IElTaGVsbFNlcnZpY2VzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NoZWxsU2VydmljZXNGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFNpZGVFZmZlY3RzU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9TaWRlRWZmZWN0c1NlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IFRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvVGVsZW1ldHJ5U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9jb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IERpYWdub3N0aWNzIGZyb20gXCJzYXAvZmUvY29yZS9zdXBwb3J0L0RpYWdub3N0aWNzXCI7XG5pbXBvcnQgdHlwZSBOYXZDb250YWluZXIgZnJvbSBcInNhcC9tL05hdkNvbnRhaW5lclwiO1xuaW1wb3J0IFJvdXRlciBmcm9tIFwic2FwL20vcm91dGluZy9Sb3V0ZXJcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RDb250ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL01hbmlmZXN0XCI7XG5pbXBvcnQgVUlDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL1VJQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IElBc3luY0NvbnRlbnRDcmVhdGlvbiB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgU2VydmljZSBmcm9tIFwic2FwL3VpL2NvcmUvc2VydmljZS9TZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0N1cnJlbmN5XCI7XG5pbXBvcnQgXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9Vbml0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQnVzeUxvY2tlclwiO1xuaW1wb3J0IHsgZGVsZXRlTW9kZWxDYWNoZURhdGEgfSBmcm9tIFwiLi9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCIuL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL1ZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlRmFjdG9yeVwiO1xuXG5jb25zdCBTdGFydHVwTW9kZSA9IGxpYnJhcnkuU3RhcnR1cE1vZGU7XG5jb25zdCBOQVZDT05GID0ge1xuXHRGQ0w6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUuY29yZS5yb290Vmlldy5GY2xcIixcblx0XHRWSUVXTkFNRV9DT01QQVRJQklMSVRZOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3LkZjbFwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5mLnJvdXRpbmcuUm91dGVyXCJcblx0fSxcblx0TkFWQ09OVEFJTkVSOiB7XG5cdFx0VklFV05BTUU6IFwic2FwLmZlLmNvcmUucm9vdFZpZXcuTmF2Q29udGFpbmVyXCIsXG5cdFx0VklFV05BTUVfQ09NUEFUSUJJTElUWTogXCJzYXAuZmUudGVtcGxhdGVzLlJvb3RDb250YWluZXIudmlldy5OYXZDb250YWluZXJcIixcblx0XHRST1VURVJDTEFTUzogXCJzYXAubS5yb3V0aW5nLlJvdXRlclwiXG5cdH1cbn07XG5cbmV4cG9ydCB0eXBlIENvbXBvbmVudERhdGEgPSB7XG5cdHN0YXJ0dXBQYXJhbWV0ZXJzPzogU3RhcnR1cFBhcmFtZXRlcnM7XG5cdC8vZmVFbnZpcm9ubWVudCBpcyBvYmplY3Qgd2hpY2ggaXMgcmVjZWl2ZWQgYXMgYSBwYXJ0IG9mIHRoZSBjb21wb25lbnQgZGF0YSBmb3IgTXkgSW5ib3ggYXBwbGljYXRpb25zLlxuXHRmZUVudmlyb25tZW50Pzoge1xuXHRcdC8vV2l0aGluIHRoaXMgb2JqZWN0IHRoZXkgcGFzcyBhIGZ1bmN0aW9uIGNhbGxlZCBnZXRJbnRlbnQoKSB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzZW1hbnRpY09iamVjdCBhbmQgYWN0aW9uIGFzIHNlcGFyYXRlIHByb3BlcnR5LXZhbHVlIGVudHJpZXMgdGhhdCBhcmUgdGhlbiB1c2VkIHRvIHVwZGF0ZSB0aGUgcmVsYXRlZCBhcHBzIGJ1dHRvbi5cblx0XHRnZXRJbnRlbnQ6IEZ1bmN0aW9uO1xuXHRcdC8vV2l0aGluIHRoaXMgb2JqZWN0IHRoZXkgcGFzcyBhIGZ1bmN0aW9uIGNhbGxlZCBnZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5KCkgdGhhdCByZXR1cm5zIGJvb2xlYW4gdmFsdWVzKHRydWUgb3IgZmFsc2UpIHdoaWNoIGRldGVybWluZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHNoYXJlIGJ1dHRvbi5cblx0XHRnZXRTaGFyZUNvbnRyb2xWaXNpYmlsaXR5OiBGdW5jdGlvbjtcblx0fTtcbn07XG4vLyBLZWVwIGEgcmVmZXJlbmNlIHNvIGFzIHRvIGtlZXAgdGhlIGltcG9ydCBkZXNwaXRlIGl0IG5vdCBiZWluZyBkaXJlY3RseSB1c2VkXG5jb25zdCBfbVJvdXRlciA9IFJvdXRlcjtcblxuZXhwb3J0IHR5cGUgU3RhcnR1cFBhcmFtZXRlcnMgPSB7XG5cdHByZWZlcnJlZE1vZGU/OiBzdHJpbmdbXTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duW10+O1xuLyoqXG4gKiBNYWluIGNsYXNzIGZvciBjb21wb25lbnRzIHVzZWQgZm9yIGFuIGFwcGxpY2F0aW9uIGluIFNBUCBGaW9yaSBlbGVtZW50cy5cbiAqXG4gKiBBcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHVzaW5nIHRoZSB0ZW1wbGF0ZXMgYW5kIGJ1aWxkaW5nIGJsb2NrcyBwcm92aWRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMgc2hvdWxkIGNyZWF0ZSB0aGVpciBhcHBzIGJ5IGV4dGVuZGluZyB0aGlzIGNvbXBvbmVudC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCB0aGUgbmVjZXNzYXJ5IHNlcnZpY2VzIHRoYXQgeW91IG5lZWQgZm9yIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIHRlbXBsYXRlcyB0byB3b3JrIHByb3Blcmx5IGFyZSBzdGFydGVkLlxuICpcbiAqIFdoZW4geW91IHVzZSBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQgYXMgdGhlIGJhc2UgY29tcG9uZW50LCB5b3UgYWxzbyBuZWVkIHRvIHVzZSBhIHJvb3RWaWV3LiBTQVAgRmlvcmkgZWxlbWVudHMgcHJvdmlkZXMgdHdvIG9wdGlvbnM6IDxici8+XG4gKiAtIHNhcC5mZS5jb3JlLnJvb3RWaWV3Lk5hdkNvbnRhaW5lciB3aGVuIHVzaW5nIHNhcC5tLnJvdXRpbmcuUm91dGVyIDxici8+XG4gKiAtIHNhcC5mZS5jb3JlLnJvb3RWaWV3LkZjbCB3aGVuIHVzaW5nIHNhcC5mLnJvdXRpbmcuUm91dGVyIChGQ0wgdXNlIGNhc2UpIDxici8+XG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkFwcENvbXBvbmVudFwiLCB7XG5cdGNvbmZpZzoge1xuXHRcdGZ1bGxXaWR0aDogdHJ1ZVxuXHR9LFxuXHRtYW5pZmVzdDoge1xuXHRcdF92ZXJzaW9uOiBcIjIuMC4wXCIsXG5cdFx0XCJzYXAudWk1XCI6IHtcblx0XHRcdHNlcnZpY2VzOiB7XG5cdFx0XHRcdHJlc291cmNlTW9kZWw6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5SZXNvdXJjZU1vZGVsU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiLFxuXHRcdFx0XHRcdHNldHRpbmdzOiB7XG5cdFx0XHRcdFx0XHRidW5kbGVzOiBbXCJzYXAuZmUuY29yZS5tZXNzYWdlYnVuZGxlXCJdLFxuXHRcdFx0XHRcdFx0bW9kZWxOYW1lOiBcInNhcC5mZS5pMThuXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHJvdXRpbmdTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuUm91dGluZ1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaGVsbFNlcnZpY2VzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2hlbGxTZXJ2aWNlc1wiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFNoZWxsVUlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLnVzaGVsbC51aTVzZXJ2aWNlLlNoZWxsVUlTZXJ2aWNlXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0bmF2aWdhdGlvblNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5OYXZpZ2F0aW9uU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVudmlyb25tZW50Q2FwYWJpbGl0aWVzOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuRW52aXJvbm1lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c2lkZUVmZmVjdHNTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuU2lkZUVmZmVjdHNTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0YXN5bmNDb21wb25lbnRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQXN5bmNDb21wb25lbnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Y29sbGFib3JhdGl2ZVRvb2xzU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0ZWxlbWV0cnlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuVGVsZW1ldHJ5U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdENvbnRleHRTaGFyaW5nU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLkNvbnRleHRTaGFyaW5nU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGlubGluZUVkaXRTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuSW5saW5lRWRpdFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0cm9vdFZpZXc6IHtcblx0XHRcdFx0dmlld05hbWU6IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FLFxuXHRcdFx0XHRpZDogXCJhcHBSb290Vmlld1wiXG5cdFx0XHR9LFxuXHRcdFx0cm91dGluZzoge1xuXHRcdFx0XHRjb25maWc6IHtcblx0XHRcdFx0XHRjb250cm9sSWQ6IFwiYXBwQ29udGVudFwiLFxuXHRcdFx0XHRcdHJvdXRlckNsYXNzOiBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTUyxcblx0XHRcdFx0XHR2aWV3VHlwZTogXCJYTUxcIixcblx0XHRcdFx0XHRjb250cm9sQWdncmVnYXRpb246IFwicGFnZXNcIixcblx0XHRcdFx0XHRjb250YWluZXJPcHRpb25zOiB7XG5cdFx0XHRcdFx0XHRwcm9wYWdhdGVNb2RlbDogdHJ1ZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZGVzaWdudGltZTogXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0FwcENvbXBvbmVudC5kZXNpZ250aW1lXCIsXG5cblx0bGlicmFyeTogXCJzYXAuZmUuY29yZVwiXG59KVxuY2xhc3MgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQgaW1wbGVtZW50cyBJQXN5bmNDb250ZW50Q3JlYXRpb24ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUFzeW5jQ29udGVudENyZWF0aW9uXCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUFzeW5jQ29udGVudENyZWF0aW9uID0gdHJ1ZTtcblxuXHRzdGF0aWMgaW5zdGFuY2VNYXA6IFJlY29yZDxzdHJpbmcsIEFwcENvbXBvbmVudD4gPSB7fTtcblxuXHRwcml2YXRlIF9vUm91dGVyUHJveHkhOiBSb3V0ZXJQcm94eTtcblxuXHRwcml2YXRlIF9vQXBwU3RhdGVIYW5kbGVyITogQXBwU3RhdGVIYW5kbGVyO1xuXG5cdHByaXZhdGUgYkluaXRpYWxpemVSb3V0aW5nPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9vRGlhZ25vc3RpY3MhOiBEaWFnbm9zdGljcztcblxuXHRwcml2YXRlIGVudGl0eUNvbnRhaW5lciE6IFByb21pc2U8dm9pZD47XG5cblx0cHJpdmF0ZSBzdGFydHVwTW9kZTogc3RyaW5nID0gU3RhcnR1cE1vZGUuTm9ybWFsO1xuXG5cdHByaXZhdGUgX3N0YXJ0ZWRTZXJ2aWNlczogU2VydmljZTx1bmtub3duPltdID0gW107XG5cblx0cHVibGljIGluaXRpYWxpemVkITogUHJvbWlzZTx2b2lkPjtcblxuXHRwcml2YXRlIF9pbml0aWFsaXplZEtlZXBlciE6IFByb21pc2VLZWVwZXI8dm9pZD47XG5cblx0cHJpdmF0ZSBpc0FkYXB0YXRpb25FbmFibGVkID0gZmFsc2U7XG5cblx0cHVibGljIGlzRXhpdGluZyA9IGZhbHNlO1xuXG5cdHB1YmxpYyBwYWdlQ29uZmlndXJhdGlvbkNoYW5nZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG5cdHByaXZhdGUgc3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIHN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2s/OiBGdW5jdGlvbjtcblxuXHRwcml2YXRlIHN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG5cdC8qKlxuXHQgKiBTaW5nbGV0b24gdG8gaG9sZCBwcm9jZXNzZXMgZnJvbSBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICovXG5cdHByaXZhdGUgc3RhdGljIGluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzOiAoKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSA9PiBQcm9taXNlPHZvaWQ+KVtdID0gW107XG5cblx0X2lzRmNsRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvTWFuaWZlc3RVSTUgPSB0aGlzLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpO1xuXHRcdHJldHVybiBvTWFuaWZlc3RVSTU/LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTO1xuXHR9XG5cblx0c2V0QWRhcHRhdGlvbk1vZGUoaXNBZGFwdGF0aW9uRW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuaXNBZGFwdGF0aW9uRW5hYmxlZCA9IGlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmlzQWRhcHRhdGlvbkVuYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgYSBob29rIHRvIGluaXRpYWxpemUgZmVhdHVyZSB0b2dnbGVzLlxuXHQgKlxuXHQgKiBUaGlzIGhvb2sgaXMgYmVpbmcgY2FsbGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgQXBwQ29tcG9uZW50IGF0IHRoZSB0aW1lIGZlYXR1cmUgdG9nZ2xlcyBjYW4gYmUgaW5pdGlhbGl6ZWQuXG5cdCAqIFRvIGNoYW5nZSBwYWdlIGNvbmZpZ3VyYXRpb24sIHVzZSB0aGUge0BsaW5rIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCNjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbn0gbWV0aG9kLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aXRob3V0IGFueSB2YWx1ZSB0byBhbGxvdyBhc3luY2hyb25vdXMgcHJvY2Vzc2VzXG5cdCAqL1xuXHRhc3luYyBpbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Ly8gdGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYXBwbGljYXRpb25zXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoYW5nZXMgdGhlIHBhZ2UgY29uZmlndXJhdGlvbiBvZiBTQVAgRmlvcmkgZWxlbWVudHMuXG5cdCAqXG5cdCAqIFRoaXMgbWV0aG9kIGVuYWJsZXMgeW91IHRvIGNoYW5nZSB0aGUgcGFnZSBjb25maWd1cmF0aW9uIG9mIFNBUCBGaW9yaSBlbGVtZW50cy5cblx0ICogQHBhcmFtIHBhZ2VJZCBUaGUgSUQgb2YgdGhlIHBhZ2UgZm9yIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGlzIHRvIGJlIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGluIHRoZSBwYWdlIHNldHRpbmdzIGZvciB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpcyB0byBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29uZmlndXJhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIHBsYWluIHZhbHVlIGxpa2UgYSBzdHJpbmcsIG9yIGEgQm9vbGVhbiwgb3IgYSBzdHJ1Y3R1cmVkIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0Y2hhbmdlUGFnZUNvbmZpZ3VyYXRpb24ocGFnZUlkOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblx0XHRjb25zdCBtYW5pZmVzdCA9IGNoYW5nZUNvbmZpZ3VyYXRpb24odGhpcy5nZXRNYW5pZmVzdCgpLCBwYWdlSWQsIHBhdGgsIHZhbHVlLCB0cnVlLCB0aGlzKSBhcyBNYW5pZmVzdENvbnRlbnQ7XG5cdFx0aWYgKFxuXHRcdFx0cGF0aCA9PT0gXCJhcHAvZGlzYWJsZUlucHV0QXNzaXN0YW5jZVwiICYmXG5cdFx0XHQobWFuaWZlc3Q/LltcInNhcC5mZVwiXSBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4pPy5bXCJhcHBcIl0/LltcImRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIl0gPT09IHZhbHVlXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuc2V0Q2FwYWJpbGl0eShcIkRpc2FibGVJbnB1dEFzc2lzdGFuY2VcIiwgdmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhbnMgYWxsIHJlZ2lzdGVyZWQgcGFnZSBjb25maWd1cmF0aW9uIGNoYW5nZXMuXG5cdCAqL1xuXHRjbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcygpOiB2b2lkIHtcblx0XHR0aGlzLnBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgUm91dGVyUHJveHkuXG5cdCAqIEByZXR1cm5zIEEgUmVmZXJlbmNlIHRvIHRoZSBSb3V0ZXJQcm94eVxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldFJvdXRlclByb3h5KCk6IFJvdXRlclByb3h5IHtcblx0XHRyZXR1cm4gdGhpcy5fb1JvdXRlclByb3h5O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyLlxuXHQgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgQXBwU3RhdGVIYW5kbGVyXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0QXBwU3RhdGVIYW5kbGVyKCk6IEFwcFN0YXRlSGFuZGxlciB7XG5cdFx0cmV0dXJuIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBuYXYvRkNMIENvbnRyb2xsZXIuXG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byB0aGUgRkNMIENvbnRyb2xsZXJcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Vmlld0NvbnRyb2xsZXIoKTogUm9vdFZpZXdCYXNlQ29udHJvbGxlciB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250cm9sbGVyKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2wuXG5cdCAqIEByZXR1cm5zICBBIHJlZmVyZW5jZSB0byBOYXZDb250YWluZXIgY29udHJvbCBvciB0aGUgRkNMIGNvbnRyb2xcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb290Q29udGFpbmVyKCk6IE5hdkNvbnRhaW5lciB8IEZsZXhpYmxlQ29sdW1uTGF5b3V0IHtcblx0XHRyZXR1cm4gdGhpcy5nZXRSb290Q29udHJvbCgpLmdldENvbnRlbnQoKVswXSBhcyBOYXZDb250YWluZXIgfCBGbGV4aWJsZUNvbHVtbkxheW91dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHN0YXJ0dXAgbW9kZSBvZiB0aGUgYXBwLlxuXHQgKiBAcmV0dXJucyBUaGUgc3RhcnR1cCBtb2RlXG5cdCAqL1xuXHRnZXRTdGFydHVwTW9kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnN0YXJ0dXBNb2RlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdDcmVhdGUnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVDcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkNyZWF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQXV0b0NyZWF0ZScuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZUF1dG9DcmVhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkF1dG9DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0RlZXBsaW5rJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlRGVlcGxpbmsoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHVwTW9kZSA9IFN0YXJ0dXBNb2RlLkRlZXBsaW5rO1xuXHR9XG5cblx0aW5pdCgpOiB2b2lkIHtcblx0XHRjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuXHRcdGlmIChwYXJhbXMuaGFzKFwic2FwLXVpLXh4LWZlLXN1cHBvcnRcIikpIHtcblx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRMaWJyYXJ5LmxvYWQoeyBuYW1lOiBcInNhcC5mZS50b29sc1wiIH0pO1xuXHRcdFx0fSwgMjAwMCk7XG5cdFx0fVxuXHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyID0gbmV3IFByb21pc2VLZWVwZXI8dm9pZD4oKTtcblx0XHR0aGlzLmluaXRpYWxpemVkID0gdGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIucHJvbWlzZTtcblx0XHRjb25zdCB1aU1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRlZGl0TW9kZTogbGlicmFyeS5FZGl0TW9kZS5EaXNwbGF5LFxuXHRcdFx0aXNFZGl0YWJsZTogZmFsc2UsXG5cdFx0XHRkcmFmdFN0YXR1czogbGlicmFyeS5EcmFmdFN0YXR1cy5DbGVhcixcblx0XHRcdGJ1c3k6IGZhbHNlLFxuXHRcdFx0YnVzeUxvY2FsOiB7fSxcblx0XHRcdHBhZ2VzOiB7fVxuXHRcdH0pO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHQvLyBzZXQgdGhlIGJpbmRpbmcgT25lV2F5IGZvciB1aU1vZGVsIHRvIHByZXZlbnQgY2hhbmdlcyBpZiBjb250cm9sbGVyIGV4dGVuc2lvbnMgbW9kaWZ5IGEgYm91bmQgcHJvcGVydHkgb2YgYSBjb250cm9sXG5cdFx0dWlNb2RlbC5zZXREZWZhdWx0QmluZGluZ01vZGUoXCJPbmVXYXlcIik7XG5cdFx0Ly8gZm9yIGludGVybmFsIG1vZGVsIGJpbmRpbmcgbmVlZHMgdG8gYmUgdHdvIHdheVxuXHRcdE1vZGVsSGVscGVyLmVuaGFuY2VVaUpTT05Nb2RlbCh1aU1vZGVsLCBsaWJyYXJ5KTtcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlSW50ZXJuYWxKU09OTW9kZWwob0ludGVybmFsTW9kZWwpO1xuXG5cdFx0dGhpcy5zZXRNb2RlbCh1aU1vZGVsLCBcInVpXCIpO1xuXHRcdHRoaXMuc2V0TW9kZWwob0ludGVybmFsTW9kZWwsIFwiaW50ZXJuYWxcIik7XG5cblx0XHR0aGlzLmJJbml0aWFsaXplUm91dGluZyA9IHRoaXMuYkluaXRpYWxpemVSb3V0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmJJbml0aWFsaXplUm91dGluZyA6IHRydWU7XG5cdFx0dGhpcy5fb1JvdXRlclByb3h5ID0gbmV3IFJvdXRlclByb3h5KCk7XG5cdFx0dGhpcy5fb0FwcFN0YXRlSGFuZGxlciA9IG5ldyBBcHBTdGF0ZUhhbmRsZXIodGhpcyk7XG5cdFx0dGhpcy5fb0RpYWdub3N0aWNzID0gbmV3IERpYWdub3N0aWNzKCk7XG5cblx0XHRjb25zdCBvTW9kZWwgPSB0aGlzLmdldE1vZGVsKCk7XG5cdFx0aWYgKG9Nb2RlbD8uaXNBPy48T0RhdGFNb2RlbD4oXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNb2RlbFwiKSkge1xuXHRcdFx0TW9kZWxIZWxwZXIuZW5oYW5jZU9EYXRhTW9kZWwob01vZGVsLCB0aGlzKTtcblx0XHRcdG9Nb2RlbC5zZXRSZXRyeUFmdGVySGFuZGxlcih0aGlzLmh0dHA1MDNSZXRyeUhhbmRsZXIuYmluZCh0aGlzKSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lciA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKS5yZXF1ZXN0T2JqZWN0KFwiLyRFbnRpdHlDb250YWluZXIvXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBub3QgYW4gT0RhdGEgdjQgc2VydmljZVxuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5hcHA/LmRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQpIHtcblx0XHRcdC8vIGRpc2FibGUgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgZ2xvYmFsbHkgaW4gY2FzZSBwcml2YXRlIG1hbmlmZXN0IGZsYWcgaXMgc2V0XG5cdFx0XHQvLyB0aGlzIGFsbG93cyBjdXN0b21lcnMgdG8gZGlzYWJsZSB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpbiBjYXNlIHdlIHJ1biBpbnRvIGlzc3VlcyB3aXRoIHRoZSBmaXJzdCBkZWxpdmVyeVxuXHRcdFx0Ly8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2l0aCB0aGUgbmV4dCBTLzQgcmVsZWFzZVxuXHRcdFx0TW9kZWxIZWxwZXIuZGlzYWJsZUNvbGxhYm9yYXRpb25EcmFmdCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNYW5pZmVzdCgpW1wic2FwLnVpNVwiXTtcblx0XHR0aGlzLmNoZWNrUm91dGluZ0NvbmZpZ3VyYXRpb24ob01hbmlmZXN0VUk1KTtcblxuXHRcdC8vIHRoZSBpbml0IGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIHJvdXRpbmcgYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBhYm92ZVxuXHRcdC8vIGl0IHdpbGwgY2FsbCB0aGUgY3JlYXRlQ29udGVudCBmdW5jdGlvbiB0byBpbnN0YW50aWF0ZSB0aGUgUm9vdFZpZXcgYW5kIGFkZCBpdCB0byB0aGUgVUlDb21wb25lbnQgYWdncmVnYXRpb25zXG5cblx0XHRzdXBlci5pbml0KCk7XG5cdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlTWFwW3RoaXMuZ2V0SWQoKV0gPSB0aGlzO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBodHRwNTAzUmV0cnlIYW5kbGVyKGVycm9yOiBFcnJvciAmIHsgcmV0cnlBZnRlcj86IERhdGUgfSk6IFByb21pc2U8dW5kZWZpbmVkPiB7XG5cdFx0cmV0dXJuIEhUVFA1MDNIYW5kbGVyLmhhbmRsZTUwM0RlbGF5KGVycm9yLCB0aGlzLmdldFJvb3RDb250cm9sKCksIGdldFJlc291cmNlTW9kZWwodGhpcykpO1xuXHR9XG5cblx0cHJpdmF0ZSBjaGVja1JvdXRpbmdDb25maWd1cmF0aW9uKG9NYW5pZmVzdFVJNTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXSk6IHZvaWQge1xuXHRcdGlmIChvTWFuaWZlc3RVSTU/LnJvb3RWaWV3Py52aWV3TmFtZSkge1xuXHRcdFx0Ly8gVGhlIGFwcGxpY2F0aW9uIHNwZWNpZmllZCBhbiBvd24gcm9vdCB2aWV3IGluIHRoZSBtYW5pZmVzdFxuXG5cdFx0XHQvLyBSb290IFZpZXcgd2FzIG1vdmVkIGZyb20gc2FwLmZlLnRlbXBsYXRlcyB0byBzYXAuZmUuY29yZSAtIGtlZXAgaXQgY29tcGF0aWJsZVxuXHRcdFx0aWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUVfQ09NUEFUSUJJTElUWSkge1xuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPSBOQVZDT05GLkZDTC5WSUVXTkFNRTtcblx0XHRcdH0gZWxzZSBpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRV9DT01QQVRJQklMSVRZKSB7XG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5GQ0wuVklFV05BTUUgJiZcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuRkNMLlJPVVRFUkNMQVNTXG5cdFx0XHQpIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtOQVZDT05GLkZDTC5WSUVXTkFNRX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5GQ0wuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUgJiZcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvdXRpbmc/LmNvbmZpZz8ucm91dGVyQ2xhc3MgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTXG5cdFx0XHQpIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH0gZWxzZSBpZiAob01hbmlmZXN0VUk1LnJvb3RWaWV3Py52aWV3TmFtZT8uaW5jbHVkZXMoXCJzYXAuZmUuY29yZS5yb290Vmlld1wiKSkge1xuXHRcdFx0XHR0aHJvdyBFcnJvcihcblx0XHRcdFx0XHRgXFxuV3JvbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvdXBsZSAocm9vdFZpZXcvcm91dGVyQ2xhc3MpIGluIG1hbmlmZXN0IGZpbGUuXFxuYCArXG5cdFx0XHRcdFx0XHRgQ3VycmVudCB2YWx1ZXMgYXJlIDooJHtvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWV9LyR7XG5cdFx0XHRcdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzIHx8IFwiPG1pc3Npbmcgcm91dGVyIGNsYXNzPlwiXG5cdFx0XHRcdFx0XHR9KVxcbmAgK1xuXHRcdFx0XHRcdFx0YEV4cGVjdGVkIHZhbHVlcyBhcmUgXFxuYCArXG5cdFx0XHRcdFx0XHRgXFx0IC0gKCR7TkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUV9LyR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9KVxcbmAgK1xuXHRcdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuRkNMLlZJRVdOQU1FfS8ke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfSlgXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRMb2cuaW5mbyhgUm9vdGNvbnRhaW5lcjogXCIke29NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZX1cIiAtIFJvdXRlcmNsYXNzOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuUk9VVEVSQ0xBU1N9XCJgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhc3luYyBvblNlcnZpY2VzU3RhcnRlZChhbGxTZXJ2aWNlczogU2VydmljZTx1bmtub3duPltdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dGhpcy5fc3RhcnRlZFNlcnZpY2VzID0gYWxsU2VydmljZXM7XG5cdFx0YXdhaXQgdGhpcy5pbml0aWFsaXplRmVhdHVyZVRvZ2dsZXMoKTtcblx0XHRhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG5cdFx0XHRBcHBDb21wb25lbnQuaW5zdGFuY2VEZXBlbmRlbnRQcm9jZXNzZXMubWFwKGFzeW5jIChmblByb2Nlc3MpID0+IHtcblx0XHRcdFx0cmV0dXJuIGZuUHJvY2Vzcy5jYWxsKG51bGwsIHRoaXMpO1xuXHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0Ly9yb3V0ZXIgbXVzdCBiZSBzdGFydGVkIG9uY2UgdGhlIHJvb3Rjb250YWluZXIgaXMgaW5pdGlhbGl6ZWRcblx0XHQvL3N0YXJ0aW5nIG9mIHRoZSByb3V0ZXJcblx0XHRjb25zdCBmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnRhaW5lclxuXHRcdFx0XHQudGhlbihhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuYXR0YWNoUm91dGVNYXRjaGVycykge1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS5hdHRhY2hSb3V0ZU1hdGNoZXJzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuZ2V0Um91dGVyKCkuaW5pdGlhbGl6ZSgpO1xuXHRcdFx0XHRcdHRoaXMuZ2V0Um91dGVyUHJveHkoKS5pbml0KHRoaXMsIHRoaXMuX2lzRmNsRW5hYmxlZCgpKTtcblxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmdldFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlKCkucmVnaXN0ZXJTaGVsbEhvb2soKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhO1xuXG5cdFx0XHRcdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS5kaXNwbGF5RXJyb3JQYWdlKFxuXHRcdFx0XHRcdFx0b1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0FQUF9DT01QT05FTlRfU0FQRkVfQVBQU1RBUlRfVEVDSE5JQ0FMX0lTU1VFU1wiKSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfRVJST1JcIiksXG5cdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cdFx0fTtcblxuXHRcdGlmICh0aGlzLmJJbml0aWFsaXplUm91dGluZykge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0Um91dGluZ1NlcnZpY2UoKVxuXHRcdFx0XHQuaW5pdGlhbGl6ZVJvdXRpbmcoKVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkpIHtcblx0XHRcdFx0XHRcdGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLmdldFJvb3RDb250cm9sKCkuYXR0YWNoQWZ0ZXJJbml0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdFx0ZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uKCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5faW5pdGlhbGl6ZWRLZWVwZXIucmVzb2x2ZSgpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnI6IEVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBjYW5ub3QgY2Fubm90IGluaXRpYWxpemUgcm91dGluZzogJHtlcnIudG9TdHJpbmcoKX1gKTtcblx0XHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnJlc29sdmUoKTtcblx0XHR9XG5cdH1cblxuXHRleGl0KCk6IHZvaWQge1xuXHRcdHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcyA9IFtdO1xuXHRcdHRoaXMuX29BcHBTdGF0ZUhhbmRsZXIuZGVzdHJveSgpO1xuXHRcdHRoaXMuX29Sb3V0ZXJQcm94eS5kZXN0cm95KCk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb0FwcFN0YXRlSGFuZGxlcjtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSB0aGlzLl9vUm91dGVyUHJveHk7XG5cdFx0ZGVsZXRlTW9kZWxDYWNoZURhdGEodGhpcy5nZXRNZXRhTW9kZWwoKSk7XG5cdFx0dGhpcy5nZXRNb2RlbChcInVpXCIpLmRlc3Ryb3koKTtcblx0XHR0aGlzLmNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzKCk7XG5cdH1cblxuXHRnZXRNZXRhTW9kZWwoKTogT0RhdGFNZXRhTW9kZWwge1xuXHRcdHJldHVybiB0aGlzLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdH1cblxuXHRnZXREaWFnbm9zdGljcygpOiBEaWFnbm9zdGljcyB7XG5cdFx0cmV0dXJuIHRoaXMuX29EaWFnbm9zdGljcztcblx0fVxuXG5cdGRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmlzRXhpdGluZyA9IHRydWU7XG5cblx0XHQvLyBMRUFLUywgd2l0aCB3b3JrYXJvdW5kIGZvciBzb21lIEZsZXggLyBNREMgaXNzdWVcblx0XHR0cnkge1xuXHRcdFx0ZGVsZXRlIEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldO1xuXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRkZWxldGUgKHdpbmRvdyBhcyB1bmtub3duKS5fcm91dGluZztcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRMb2cuaW5mbyhlIGFzIHN0cmluZyk7XG5cdFx0fVxuXG5cdFx0Ly9XT1JLQVJPVU5EIGZvciBzdGlja3kgZGlzY2FyZCByZXF1ZXN0IDogZHVlIHRvIGFzeW5jIGNhbGxiYWNrLCByZXF1ZXN0IHRyaWdnZXJlZCBieSB0aGUgZXhpdEFwcGxpY2F0aW9uIHdpbGwgYmUgc2VuZCBhZnRlciB0aGUgVUlDb21wb25lbnQucHJvdG90eXBlLmRlc3Ryb3lcblx0XHQvL3NvIHdlIG5lZWQgdG8gY29weSB0aGUgUmVxdWVzdG9yIGhlYWRlcnMgYXMgaXQgd2lsbCBiZSBkZXN0cm95XG5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNvbnN0IG9NYWluTW9kZWwgPSB0aGlzLm9Nb2RlbHNbdW5kZWZpbmVkXTtcblx0XHRsZXQgb0hlYWRlcnM7XG5cdFx0aWYgKG9NYWluTW9kZWw/Lm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9IZWFkZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgb01haW5Nb2RlbC5vUmVxdWVzdG9yLm1IZWFkZXJzKTtcblx0XHR9XG5cblx0XHQvLyBBcyB3ZSBuZWVkIHRvIGNsZWFudXAgdGhlIGFwcGxpY2F0aW9uIC8gaGFuZGxlIHRoZSBkaXJ0eSBvYmplY3Qgd2UgbmVlZCB0byBjYWxsIG91ciBjbGVhbnVwIGJlZm9yZSB0aGUgbW9kZWxzIGFyZSBkZXN0cm95ZWRcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCk/LmJlZm9yZUV4aXQ/LigpO1xuXHRcdHRoaXMudW5yZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MoKTtcblx0XHRzdXBlci5kZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdGlmIChvSGVhZGVycyAmJiBvTWFpbk1vZGVsLm9SZXF1ZXN0b3IpIHtcblx0XHRcdG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyA9IG9IZWFkZXJzO1xuXHRcdH1cblx0fVxuXG5cdGdldFJvdXRpbmdTZXJ2aWNlKCk6IFJvdXRpbmdTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgUm91dGluZ1NlcnZpY2U7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXRTaGVsbFNlcnZpY2VzKCk6IElTaGVsbFNlcnZpY2VzIHtcblx0XHRyZXR1cm4ge30gYXMgSVNoZWxsU2VydmljZXM7IC8vIG92ZXJyaWRlbiBhdCBydW50aW1lXG5cdH1cblxuXHRnZXROYXZpZ2F0aW9uU2VydmljZSgpOiBOYXZpZ2F0aW9uU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIE5hdmlnYXRpb25TZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk6IFNpZGVFZmZlY3RzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFNpZGVFZmZlY3RzU2VydmljZTtcblx0fVxuXG5cdGdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCk6IEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIEVudmlyb25tZW50Q2FwYWJpbGl0aWVzU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSgpOiBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2U7XG5cdH1cblxuXHRnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlKCk6IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpOiBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZTtcblx0fVxuXG5cdGdldENvbnRleHRTaGFyaW5nU2VydmljZSgpOiBDb250ZXh0U2hhcmluZ1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBDb250ZXh0U2hhcmluZ1NlcnZpY2U7XG5cdH1cblxuXHRnZXRUZWxlbWV0cnlTZXJ2aWNlKCk6IFRlbGVtZXRyeVNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBUZWxlbWV0cnlTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0VmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UoKTogVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBWYWx1ZUhlbHBIaXN0b3J5U2VydmljZTtcblx0fVxuXG5cdGdldElubGluZUVkaXRTZXJ2aWNlKCk6IElubGluZUVkaXRTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgSW5saW5lRWRpdFNlcnZpY2U7XG5cdH1cblxuXHRhc3luYyBnZXRTdGFydHVwUGFyYW1ldGVycygpOiBQcm9taXNlPFN0YXJ0dXBQYXJhbWV0ZXJzPiB7XG5cdFx0Y29uc3Qgb0NvbXBvbmVudERhdGEgPSB0aGlzLmdldENvbXBvbmVudERhdGEoKTtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKChvQ29tcG9uZW50RGF0YSAmJiBvQ29tcG9uZW50RGF0YS5zdGFydHVwUGFyYW1ldGVycykgfHwge30pO1xuXHR9XG5cblx0cmVzdG9yZSgpOiB2b2lkIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyByZXN0b3JlZFxuXHRcdGZvciAoY29uc3Qgc3RhcnRlZFNlcnZpY2Ugb2YgdGhpcy5fc3RhcnRlZFNlcnZpY2VzKSB7XG5cdFx0XHRzdGFydGVkU2VydmljZS5vblJlc3RvcmU/LigpO1xuXHRcdH1cblx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLnZpZXdTdGF0ZS5vblJlc3RvcmUoKTtcblxuXHRcdC8vIFJlc2V0IGFsbCB2YWx1ZXMgaW4gdmVyc2lvbkFjdGl2YXRpb25TdGF0dXMgdG8gZmFsc2Vcblx0XHRBcHBTdGF0ZUhhbmRsZXIucmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cygpO1xuXHR9XG5cblx0c3VzcGVuZCgpOiB2b2lkIHtcblx0XHQvLyBjYWxsZWQgYnkgRkxQIHdoZW4gYXBwIHNhcC1rZWVwLWFsaXZlIGlzIGVuYWJsZWQgYW5kIGFwcCBpcyBzdXNwZW5kZWRcblx0XHRmb3IgKGNvbnN0IHN0YXJ0ZWRTZXJ2aWNlIG9mIHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcykge1xuXHRcdFx0c3RhcnRlZFNlcnZpY2Uub25TdXNwZW5kPy4oKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS52aWV3U3RhdGUub25TdXNwZW5kKCk7XG5cdH1cblxuXHQvKipcblx0ICogbmF2aWdhdGVCYXNlZE9uU3RhcnR1cFBhcmFtZXRlciBmdW5jdGlvbiBpcyBhIHB1YmxpYyBhcGkgdGhhdCBhY3RzIGFzIGEgd3JhcHBlciB0byBfbWFuYWdlRGVlcExpbmtTdGFydHVwIGZ1bmN0aW9uLiBJdCBwYXNzZXMgdGhlIHN0YXJ0dXAgcGFyYW1ldGVycyBmdXJ0aGVyIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb25cblx0ICogQHBhcmFtIHN0YXJ0dXBQYXJhbWV0ZXJzIERlZmluZXMgdGhlIHN0YXJ0dXAgcGFyYW1ldGVycyB3aGljaCBpcyBmdXJ0aGVyIHBhc3NlZCB0byBfbWFuYWdlRGVlcExpbmtTdGFydHVwIGZ1bmN0aW9uLlxuXHQgKi9cblxuXHRhc3luYyBuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyKHN0YXJ0dXBQYXJhbWV0ZXJzOiBTdGFydHVwUGFyYW1ldGVycyB8IG51bGwgfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKCFCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKSkpIHtcblx0XHRcdFx0aWYgKCFzdGFydHVwUGFyYW1ldGVycykge1xuXHRcdFx0XHRcdHN0YXJ0dXBQYXJhbWV0ZXJzID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByb3V0aW5nU2VydmljZSA9IHRoaXMuZ2V0Um91dGluZ1NlcnZpY2UoKTtcblx0XHRcdFx0YXdhaXQgcm91dGluZ1NlcnZpY2UuX21hbmFnZURlZXBMaW5rU3RhcnR1cChzdGFydHVwUGFyYW1ldGVycyk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXhjZXB0aW9uOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZXhjZXB0aW9uIGFzIHN0cmluZyk7XG5cdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLmdldE1vZGVsKFwidWlcIikpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIGFsbG93IGRpc2FibGluZyB0aGUgQ29sbGFib3JhdGlvbiBNYW5hZ2VyIGludGVncmF0aW9uIGZvciB0aGUgT1ZQIHVzZSBjYXNlLlxuXHQgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb2xsYWJvcmF0aW9uIG1hbmFnZXIgc2VydmljZSBpcyBhY3RpdmUuXG5cdCAqL1xuXHRpc0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXIgcHJvY2Vzc2VzIHRoYXQgbmVlZCB0byBiZSBydW4gZm9yIGV2ZXJ5IGluc3RhbmNlIHByaW9yIHRvIHN0YXJ0dXAuXG5cdCAqIEBwYXJhbSBmblByb2Nlc3MgRnVuY3Rpb24gdGhhdCBob2xkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHJvY2Vzcy5cblx0ICpcblx0ICogVGhlIHJlZ2lzdGVyZWQgcHJvY2VzcyBjYW4gYmUgYW4gYXN5bmNocm9ub3VzIHByb2Nlc3MuXG5cdCAqIEl0IHNoYWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBBcHBDb21wb25lbnQgaW5zdGFuY2UgYXMgYSBwYXJhbWV0ZXIgYmVmb3JlIHN0YXJ0dXAuXG5cdCAqL1xuXHRzdGF0aWMgcmVnaXN0ZXJJbnN0YW5jZURlcGVuZGVudFByb2Nlc3NGb3JTdGFydFVwKGZuUHJvY2VzczogKGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG5cdFx0dGhpcy5pbnN0YW5jZURlcGVuZGVudFByb2Nlc3Nlcy5wdXNoKGZuUHJvY2Vzcyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIHRoZSBjYWxsYmFja3MgcmVsYXRlZCB0byBhIHN0aWNreSBlZGl0IHNlc3Npb24uXG5cdCAqIEBwYXJhbSBkaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFja1xuXHQgKiBAcGFyYW0gc2Vzc2lvblRpbWVvdXRDYWxsYmFja1xuXHQgKiBAcGFyYW0gZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrXG5cdCAqL1xuXHRyZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MoXG5cdFx0ZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s6IEZ1bmN0aW9uLFxuXHRcdHNlc3Npb25UaW1lb3V0Q2FsbGJhY2s6IEZ1bmN0aW9uLFxuXHRcdGRpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjazogRnVuY3Rpb25cblx0KTogdm9pZCB7XG5cdFx0dGhpcy5zdGlja3lEaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayA9IGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrO1xuXHRcdHRoaXMuZ2V0U2hlbGxTZXJ2aWNlcygpLnJlZ2lzdGVyRGlydHlTdGF0ZVByb3ZpZGVyKGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrKTtcblxuXHRcdHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayA9IHNlc3Npb25UaW1lb3V0Q2FsbGJhY2s7XG5cdFx0dGhpcy5nZXRNb2RlbCgpLmF0dGFjaFNlc3Npb25UaW1lb3V0KHNlc3Npb25UaW1lb3V0Q2FsbGJhY2spO1xuXG5cdFx0dGhpcy5zdGlja3lEaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2sgPSBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2s7XG5cdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpLmF0dGFjaFJvdXRlTWF0Y2hlZCh7fSwgZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVbnJlZ2lzdGVycyB0aGUgY2FsbGJhY2tzIHJlbGF0ZWQgdG8gYSBzdGlja3kgZWRpdCBzZXNzaW9uLlxuXHQgKi9cblx0dW5yZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuc3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2spIHtcblx0XHRcdHRoaXMuZ2V0U2hlbGxTZXJ2aWNlcygpLmRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIodGhpcy5zdGlja3lEaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjayk7XG5cdFx0XHR0aGlzLnN0aWNreURpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAodGhpcy5zdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrICYmIHRoaXMuZ2V0TW9kZWwoKSkge1xuXHRcdFx0dGhpcy5nZXRNb2RlbCgpLmRldGFjaFNlc3Npb25UaW1lb3V0KHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayk7XG5cdFx0XHR0aGlzLnN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2sgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjaykge1xuXHRcdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpLmRldGFjaFJvdXRlTWF0Y2hlZCh0aGlzLnN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayk7XG5cdFx0XHR0aGlzLnN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cbn1cblxuaW50ZXJmYWNlIEFwcENvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50IHtcblx0aXNBZGFwdGF0aW9uTW9kZSgpOiBib29sZWFuO1xuXHRnZXRNYW5pZmVzdCgpOiBNYW5pZmVzdENvbnRlbnQ7XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmFwcFwiKTogTWFuaWZlc3RDb250ZW50W1wic2FwLmFwcFwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWk1XCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWk1XCJdO1xuXHRfZ2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWk1XCIsIG1lcmdlZDogYm9vbGVhbik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl07XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLnVpXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAudWlcIl07XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmZlXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuZmVcIl0gfCB1bmRlZmluZWQ7XG5cdGdldE1hbmlmZXN0RW50cnkoZW50cnk6IFwic2FwLmZpb3JpXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuZmlvcmlcIl07XG5cdGdldENvbXBvbmVudERhdGEoKTogQ29tcG9uZW50RGF0YTtcblx0Z2V0Um9vdENvbnRyb2woKToge1xuXHRcdGdldENvbnRyb2xsZXIoKTogUm9vdFZpZXdCYXNlQ29udHJvbGxlcjtcblx0fSAmIFZpZXc7XG5cdGdldE1vZGVsKCk6IE9EYXRhTW9kZWw7XG5cdGdldE1vZGVsKG5hbWU6IFwidWlcIik6IEpTT05Nb2RlbDtcblx0Z2V0TW9kZWwobmFtZTogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcENvbXBvbmVudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMENBLE1BQU1BLFdBQVcsR0FBR0MsT0FBTyxDQUFDRCxXQUFXO0VBQ3ZDLE1BQU1FLE9BQU8sR0FBRztJQUNmQyxHQUFHLEVBQUU7TUFDSkMsUUFBUSxFQUFFLDBCQUEwQjtNQUNwQ0Msc0JBQXNCLEVBQUUseUNBQXlDO01BQ2pFQyxXQUFXLEVBQUU7SUFDZCxDQUFDO0lBQ0RDLFlBQVksRUFBRTtNQUNiSCxRQUFRLEVBQUUsbUNBQW1DO01BQzdDQyxzQkFBc0IsRUFBRSxrREFBa0Q7TUFDMUVDLFdBQVcsRUFBRTtJQUNkO0VB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
590
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGFydHVwTW9kZSIsImxpYnJhcnkiLCJOQVZDT05GIiwiRkNMIiwiVklFV05BTUUiLCJWSUVXTkFNRV9DT01QQVRJQklMSVRZIiwiUk9VVEVSQ0xBU1MiLCJOQVZDT05UQUlORVIiLCJfbVJvdXRlciIsIlJvdXRlciIsIkFwcENvbXBvbmVudCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsImNvbmZpZyIsImZ1bGxXaWR0aCIsIm1hbmlmZXN0IiwiX3ZlcnNpb24iLCJzZXJ2aWNlcyIsInJlc291cmNlTW9kZWwiLCJmYWN0b3J5TmFtZSIsInN0YXJ0dXAiLCJzZXR0aW5ncyIsImJ1bmRsZXMiLCJtb2RlbE5hbWUiLCJyb3V0aW5nU2VydmljZSIsInNoZWxsU2VydmljZXMiLCJTaGVsbFVJU2VydmljZSIsIm5hdmlnYXRpb25TZXJ2aWNlIiwiZW52aXJvbm1lbnRDYXBhYmlsaXRpZXMiLCJzaWRlRWZmZWN0c1NlcnZpY2UiLCJhc3luY0NvbXBvbmVudFNlcnZpY2UiLCJjb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UiLCJjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwidGVsZW1ldHJ5U2VydmljZSIsInZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIiwiQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSIsIkNvbnRleHRTaGFyaW5nU2VydmljZSIsImlubGluZUVkaXRTZXJ2aWNlIiwicm9vdFZpZXciLCJ2aWV3TmFtZSIsImlkIiwicm91dGluZyIsImNvbnRyb2xJZCIsInJvdXRlckNsYXNzIiwidmlld1R5cGUiLCJjb250cm9sQWdncmVnYXRpb24iLCJjb250YWluZXJPcHRpb25zIiwicHJvcGFnYXRlTW9kZWwiLCJkZXNpZ250aW1lIiwiX2RlYzIiLCJpbXBsZW1lbnRJbnRlcmZhY2UiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0FwcENvbXBvbmVudCIsIl9VSUNvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsInN0YXJ0dXBNb2RlIiwiTm9ybWFsIiwiX3N0YXJ0ZWRTZXJ2aWNlcyIsImlzQWRhcHRhdGlvbkVuYWJsZWQiLCJpc0V4aXRpbmciLCJwYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMiLCJzdXNwZW5kZWQiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIl9pc0ZjbEVuYWJsZWQiLCJvTWFuaWZlc3RVSTUiLCJnZXRNYW5pZmVzdEVudHJ5Iiwic2V0QWRhcHRhdGlvbk1vZGUiLCJpc0FkYXB0YXRpb25Nb2RlIiwiaW5pdGlhbGl6ZUZlYXR1cmVUb2dnbGVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGFuZ2VQYWdlQ29uZmlndXJhdGlvbiIsInBhZ2VJZCIsInBhdGgiLCJ2YWx1ZSIsImNoYW5nZUNvbmZpZ3VyYXRpb24iLCJnZXRNYW5pZmVzdCIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwic2V0Q2FwYWJpbGl0eSIsImNsZWFuUGFnZUNvbmZpZ3VyYXRpb25DaGFuZ2VzIiwiZ2V0Um91dGVyUHJveHkiLCJfb1JvdXRlclByb3h5IiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiX29BcHBTdGF0ZUhhbmRsZXIiLCJnZXRSb290Vmlld0NvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJnZXRSb290Q29udGFpbmVyIiwiZ2V0Q29udGVudCIsImdldFN0YXJ0dXBNb2RlIiwic2V0U3RhcnR1cE1vZGVDcmVhdGUiLCJDcmVhdGUiLCJzZXRTdGFydHVwTW9kZUF1dG9DcmVhdGUiLCJBdXRvQ3JlYXRlIiwic2V0U3RhcnR1cE1vZGVEZWVwbGluayIsIkRlZXBsaW5rIiwiaW5pdCIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiaGFzIiwic2V0VGltZW91dCIsIkxpYnJhcnkiLCJsb2FkIiwibmFtZSIsIl9pbml0aWFsaXplZEtlZXBlciIsIlByb21pc2VLZWVwZXIiLCJpbml0aWFsaXplZCIsInByb21pc2UiLCJ1aU1vZGVsIiwiSlNPTk1vZGVsIiwiZWRpdE1vZGUiLCJFZGl0TW9kZSIsIkRpc3BsYXkiLCJpc0VkaXRhYmxlIiwiZHJhZnRTdGF0dXMiLCJEcmFmdFN0YXR1cyIsIkNsZWFyIiwiYnVzeSIsImJ1c3lMb2NhbCIsInBhZ2VzIiwib0ludGVybmFsTW9kZWwiLCJzZXREZWZhdWx0QmluZGluZ01vZGUiLCJNb2RlbEhlbHBlciIsImVuaGFuY2VVaUpTT05Nb2RlbCIsImVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbCIsInNldE1vZGVsIiwiYkluaXRpYWxpemVSb3V0aW5nIiwidW5kZWZpbmVkIiwiUm91dGVyUHJveHkiLCJBcHBTdGF0ZUhhbmRsZXIiLCJfb0RpYWdub3N0aWNzIiwiRGlhZ25vc3RpY3MiLCJvTW9kZWwiLCJnZXRNb2RlbCIsImlzQSIsImVuaGFuY2VPRGF0YU1vZGVsIiwic2V0UmV0cnlBZnRlckhhbmRsZXIiLCJodHRwNTAzUmV0cnlIYW5kbGVyIiwiYmluZCIsImVudGl0eUNvbnRhaW5lciIsImdldE1ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJhcHAiLCJkaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0IiwiY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbiIsImluc3RhbmNlTWFwIiwiZ2V0SWQiLCJlcnJvciIsIkhUVFA1MDNIYW5kbGVyIiwiaGFuZGxlNTAzRGVsYXkiLCJnZXRSZXNvdXJjZU1vZGVsIiwiTG9nIiwiaW5mbyIsImluY2x1ZGVzIiwiRXJyb3IiLCJvblNlcnZpY2VzU3RhcnRlZCIsImFsbFNlcnZpY2VzIiwiYWxsU2V0dGxlZCIsImluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzIiwibWFwIiwiZm5Qcm9jZXNzIiwiZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uIiwidGhlbiIsImF0dGFjaFJvdXRlTWF0Y2hlcnMiLCJnZXRSb3V0ZXIiLCJpbml0aWFsaXplIiwiZ2V0VmFsdWVIZWxwSGlzdG9yeVNlcnZpY2UiLCJyZWdpc3RlclNoZWxsSG9vayIsImNhdGNoIiwib1Jlc291cmNlQnVuZGxlIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJkaXNwbGF5RXJyb3JQYWdlIiwiZ2V0VGV4dCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwiZ2V0Um91dGluZ1NlcnZpY2UiLCJpbml0aWFsaXplUm91dGluZyIsImF0dGFjaEFmdGVySW5pdCIsImVyciIsInRvU3RyaW5nIiwiZXhpdCIsImRlc3Ryb3kiLCJkZWxldGVNb2RlbENhY2hlRGF0YSIsImdldERpYWdub3N0aWNzIiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsIl9yb3V0aW5nIiwiZSIsIm9NYWluTW9kZWwiLCJvTW9kZWxzIiwib0hlYWRlcnMiLCJvUmVxdWVzdG9yIiwiT2JqZWN0IiwiYXNzaWduIiwibUhlYWRlcnMiLCJiZWZvcmVFeGl0IiwidW5yZWdpc3RlclN0aWNreVNlc3Npb25DYWxsYmFja3MiLCJnZXRTaGVsbFNlcnZpY2VzIiwiZ2V0TmF2aWdhdGlvblNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSIsImdldENvbnRleHRTaGFyaW5nU2VydmljZSIsImdldFRlbGVtZXRyeVNlcnZpY2UiLCJnZXRJbmxpbmVFZGl0U2VydmljZSIsImdldFN0YXJ0dXBQYXJhbWV0ZXJzIiwib0NvbXBvbmVudERhdGEiLCJnZXRDb21wb25lbnREYXRhIiwic3RhcnR1cFBhcmFtZXRlcnMiLCJyZXN0b3JlIiwic3RhcnRlZFNlcnZpY2UiLCJvblJlc3RvcmUiLCJ2aWV3U3RhdGUiLCJyZXNldFZlcnNpb25BY3RpdmF0aW9uU3RhdHVzIiwic3VzcGVuZCIsIm9uU3VzcGVuZCIsImlzU3VzcGVuZGVkIiwibmF2aWdhdGVCYXNlZE9uU3RhcnR1cFBhcmFtZXRlciIsIkJ1c3lMb2NrZXIiLCJpc0xvY2tlZCIsIl9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAiLCJleGNlcHRpb24iLCJ1bmxvY2siLCJpc0NvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZUVuYWJsZWQiLCJyZWdpc3Rlckluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc0ZvclN0YXJ0VXAiLCJwdXNoIiwicmVnaXN0ZXJTdGlja3lTZXNzaW9uQ2FsbGJhY2tzIiwiZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2siLCJzZXNzaW9uVGltZW91dENhbGxiYWNrIiwiZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrIiwic3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2siLCJyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlciIsInN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2siLCJhdHRhY2hTZXNzaW9uVGltZW91dCIsInN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayIsImF0dGFjaFJvdXRlTWF0Y2hlZCIsImRlcmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIiLCJkZXRhY2hTZXNzaW9uVGltZW91dCIsImRldGFjaFJvdXRlTWF0Y2hlZCIsIlVJQ29tcG9uZW50IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBcHBDb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBGbGV4aWJsZUNvbHVtbkxheW91dCBmcm9tIFwic2FwL2YvRmxleGlibGVDb2x1bW5MYXlvdXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQXBwU3RhdGVIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9BcHBTdGF0ZUhhbmRsZXJcIjtcbmltcG9ydCBSb3V0ZXJQcm94eSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvcm91dGluZy9Sb3V0ZXJQcm94eVwiO1xuaW1wb3J0IEhUVFA1MDNIYW5kbGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0hUVFA1MDNIYW5kbGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBQcm9taXNlS2VlcGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Byb21pc2VLZWVwZXJcIjtcbmltcG9ydCBsaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBjaGFuZ2VDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL21hbmlmZXN0TWVyZ2VyL0NoYW5nZVBhZ2VDb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgdHlwZSBSb290Vmlld0Jhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9yb290Vmlldy9Sb290Vmlld0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpb25NYW5hZ2VyU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IENvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dFNoYXJpbmdTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0NvbnRleHRTaGFyaW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRDYXBhYmlsaXRpZXNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL0Vudmlyb25tZW50U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSW5saW5lRWRpdFNlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvSW5saW5lRWRpdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL05hdmlnYXRpb25TZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9Sb3V0aW5nU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgSVNoZWxsU2VydmljZXMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2hlbGxTZXJ2aWNlc0ZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL2NvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2VGYWN0b3J5XCI7XG5pbXBvcnQgRGlhZ25vc3RpY3MgZnJvbSBcInNhcC9mZS9jb3JlL3N1cHBvcnQvRGlhZ25vc3RpY3NcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgUm91dGVyIGZyb20gXCJzYXAvbS9yb3V0aW5nL1JvdXRlclwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBNYW5pZmVzdENvbnRlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvTWFuaWZlc3RcIjtcbmltcG9ydCBVSUNvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvVUlDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSUFzeW5jQ29udGVudENyZWF0aW9uIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBTZXJ2aWNlIGZyb20gXCJzYXAvdWkvY29yZS9zZXJ2aWNlL1NlcnZpY2VcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvQ3VycmVuY3lcIjtcbmltcG9ydCBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL1VuaXRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgeyBkZWxldGVNb2RlbENhY2hlRGF0YSB9IGZyb20gXCIuL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcIi4vaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2VGYWN0b3J5XCI7XG5cbmNvbnN0IFN0YXJ0dXBNb2RlID0gbGlicmFyeS5TdGFydHVwTW9kZTtcbmNvbnN0IE5BVkNPTkYgPSB7XG5cdEZDTDoge1xuXHRcdFZJRVdOQU1FOiBcInNhcC5mZS5jb3JlLnJvb3RWaWV3LkZjbFwiLFxuXHRcdFZJRVdOQU1FX0NPTVBBVElCSUxJVFk6IFwic2FwLmZlLnRlbXBsYXRlcy5Sb290Q29udGFpbmVyLnZpZXcuRmNsXCIsXG5cdFx0Uk9VVEVSQ0xBU1M6IFwic2FwLmYucm91dGluZy5Sb3V0ZXJcIlxuXHR9LFxuXHROQVZDT05UQUlORVI6IHtcblx0XHRWSUVXTkFNRTogXCJzYXAuZmUuY29yZS5yb290Vmlldy5OYXZDb250YWluZXJcIixcblx0XHRWSUVXTkFNRV9DT01QQVRJQklMSVRZOiBcInNhcC5mZS50ZW1wbGF0ZXMuUm9vdENvbnRhaW5lci52aWV3Lk5hdkNvbnRhaW5lclwiLFxuXHRcdFJPVVRFUkNMQVNTOiBcInNhcC5tLnJvdXRpbmcuUm91dGVyXCJcblx0fVxufTtcblxuZXhwb3J0IHR5cGUgQ29tcG9uZW50RGF0YSA9IHtcblx0c3RhcnR1cFBhcmFtZXRlcnM/OiBTdGFydHVwUGFyYW1ldGVycztcblx0Ly9mZUVudmlyb25tZW50IGlzIG9iamVjdCB3aGljaCBpcyByZWNlaXZlZCBhcyBhIHBhcnQgb2YgdGhlIGNvbXBvbmVudCBkYXRhIGZvciBNeSBJbmJveCBhcHBsaWNhdGlvbnMuXG5cdGZlRW52aXJvbm1lbnQ/OiB7XG5cdFx0Ly9XaXRoaW4gdGhpcyBvYmplY3QgdGhleSBwYXNzIGEgZnVuY3Rpb24gY2FsbGVkIGdldEludGVudCgpIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHNlbWFudGljT2JqZWN0IGFuZCBhY3Rpb24gYXMgc2VwYXJhdGUgcHJvcGVydHktdmFsdWUgZW50cmllcyB0aGF0IGFyZSB0aGVuIHVzZWQgdG8gdXBkYXRlIHRoZSByZWxhdGVkIGFwcHMgYnV0dG9uLlxuXHRcdGdldEludGVudDogRnVuY3Rpb247XG5cdFx0Ly9XaXRoaW4gdGhpcyBvYmplY3QgdGhleSBwYXNzIGEgZnVuY3Rpb24gY2FsbGVkIGdldFNoYXJlQ29udHJvbFZpc2liaWxpdHkoKSB0aGF0IHJldHVybnMgYm9vbGVhbiB2YWx1ZXModHJ1ZSBvciBmYWxzZSkgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgc2hhcmUgYnV0dG9uLlxuXHRcdGdldFNoYXJlQ29udHJvbFZpc2liaWxpdHk6IEZ1bmN0aW9uO1xuXHR9O1xufTtcbi8vIEtlZXAgYSByZWZlcmVuY2Ugc28gYXMgdG8ga2VlcCB0aGUgaW1wb3J0IGRlc3BpdGUgaXQgbm90IGJlaW5nIGRpcmVjdGx5IHVzZWRcbmNvbnN0IF9tUm91dGVyID0gUm91dGVyO1xuXG5leHBvcnQgdHlwZSBTdGFydHVwUGFyYW1ldGVycyA9IHtcblx0cHJlZmVycmVkTW9kZT86IHN0cmluZ1tdO1xufSAmIFJlY29yZDxzdHJpbmcsIHVua25vd25bXT47XG4vKipcbiAqIE1haW4gY2xhc3MgZm9yIGNvbXBvbmVudHMgdXNlZCBmb3IgYW4gYXBwbGljYXRpb24gaW4gU0FQIEZpb3JpIGVsZW1lbnRzLlxuICpcbiAqIEFwcGxpY2F0aW9uIGRldmVsb3BlcnMgdXNpbmcgdGhlIHRlbXBsYXRlcyBhbmQgYnVpbGRpbmcgYmxvY2tzIHByb3ZpZGVkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cyBzaG91bGQgY3JlYXRlIHRoZWlyIGFwcHMgYnkgZXh0ZW5kaW5nIHRoaXMgY29tcG9uZW50LlxuICogVGhpcyBlbnN1cmVzIHRoYXQgYWxsIHRoZSBuZWNlc3Nhcnkgc2VydmljZXMgdGhhdCB5b3UgbmVlZCBmb3IgdGhlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgdGVtcGxhdGVzIHRvIHdvcmsgcHJvcGVybHkgYXJlIHN0YXJ0ZWQuXG4gKlxuICogV2hlbiB5b3UgdXNlIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudCBhcyB0aGUgYmFzZSBjb21wb25lbnQsIHlvdSBhbHNvIG5lZWQgdG8gdXNlIGEgcm9vdFZpZXcuIFNBUCBGaW9yaSBlbGVtZW50cyBwcm92aWRlcyB0d28gb3B0aW9uczogPGJyLz5cbiAqIC0gc2FwLmZlLmNvcmUucm9vdFZpZXcuTmF2Q29udGFpbmVyIHdoZW4gdXNpbmcgc2FwLm0ucm91dGluZy5Sb3V0ZXIgPGJyLz5cbiAqIC0gc2FwLmZlLmNvcmUucm9vdFZpZXcuRmNsIHdoZW4gdXNpbmcgc2FwLmYucm91dGluZy5Sb3V0ZXIgKEZDTCB1c2UgY2FzZSkgPGJyLz5cbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50XCIsIHtcblx0Y29uZmlnOiB7XG5cdFx0ZnVsbFdpZHRoOiB0cnVlXG5cdH0sXG5cdG1hbmlmZXN0OiB7XG5cdFx0X3ZlcnNpb246IFwiMi4wLjBcIixcblx0XHRcInNhcC51aTVcIjoge1xuXHRcdFx0c2VydmljZXM6IHtcblx0XHRcdFx0cmVzb3VyY2VNb2RlbDoge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLlJlc291cmNlTW9kZWxTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCIsXG5cdFx0XHRcdFx0c2V0dGluZ3M6IHtcblx0XHRcdFx0XHRcdGJ1bmRsZXM6IFtcInNhcC5mZS5jb3JlLm1lc3NhZ2VidW5kbGVcIl0sXG5cdFx0XHRcdFx0XHRtb2RlbE5hbWU6IFwic2FwLmZlLmkxOG5cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0cm91dGluZ1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Sb3V0aW5nU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNoZWxsU2VydmljZXM6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaGVsbFNlcnZpY2VzXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0U2hlbGxVSVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAudXNoZWxsLnVpNXNlcnZpY2UuU2hlbGxVSVNlcnZpY2VcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRuYXZpZ2F0aW9uU2VydmljZToge1xuXHRcdFx0XHRcdGZhY3RvcnlOYW1lOiBcInNhcC5mZS5jb3JlLnNlcnZpY2VzLk5hdmlnYXRpb25TZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW52aXJvbm1lbnRDYXBhYmlsaXRpZXM6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5FbnZpcm9ubWVudFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzaWRlRWZmZWN0c1NlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5TaWRlRWZmZWN0c1NlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhc3luY0NvbXBvbmVudFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Bc3luY0NvbXBvbmVudFNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2VcIixcblx0XHRcdFx0XHRzdGFydHVwOiBcIndhaXRGb3JcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRjb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRlbGVtZXRyeVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5UZWxlbWV0cnlTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0dmFsdWVIZWxwSGlzdG9yeVNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5WYWx1ZUhlbHBIaXN0b3J5U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Db2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0Q29udGV4dFNoYXJpbmdTZXJ2aWNlOiB7XG5cdFx0XHRcdFx0ZmFjdG9yeU5hbWU6IFwic2FwLmZlLmNvcmUuc2VydmljZXMuQ29udGV4dFNoYXJpbmdTZXJ2aWNlXCIsXG5cdFx0XHRcdFx0c3RhcnR1cDogXCJ3YWl0Rm9yXCJcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5saW5lRWRpdFNlcnZpY2U6IHtcblx0XHRcdFx0XHRmYWN0b3J5TmFtZTogXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5JbmxpbmVFZGl0U2VydmljZVwiLFxuXHRcdFx0XHRcdHN0YXJ0dXA6IFwid2FpdEZvclwiXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyb290Vmlldzoge1xuXHRcdFx0XHR2aWV3TmFtZTogTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUUsXG5cdFx0XHRcdGlkOiBcImFwcFJvb3RWaWV3XCJcblx0XHRcdH0sXG5cdFx0XHRyb3V0aW5nOiB7XG5cdFx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRcdGNvbnRyb2xJZDogXCJhcHBDb250ZW50XCIsXG5cdFx0XHRcdFx0cm91dGVyQ2xhc3M6IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTLFxuXHRcdFx0XHRcdHZpZXdUeXBlOiBcIlhNTFwiLFxuXHRcdFx0XHRcdGNvbnRyb2xBZ2dyZWdhdGlvbjogXCJwYWdlc1wiLFxuXHRcdFx0XHRcdGNvbnRhaW5lck9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdHByb3BhZ2F0ZU1vZGVsOiB0cnVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRkZXNpZ250aW1lOiBcInNhcC9mZS9jb3JlL2Rlc2lnbnRpbWUvQXBwQ29tcG9uZW50LmRlc2lnbnRpbWVcIixcblxuXHRsaWJyYXJ5OiBcInNhcC5mZS5jb3JlXCJcbn0pXG5jbGFzcyBBcHBDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudCBpbXBsZW1lbnRzIElBc3luY0NvbnRlbnRDcmVhdGlvbiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JQXN5bmNDb250ZW50Q3JlYXRpb25cIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JQXN5bmNDb250ZW50Q3JlYXRpb24gPSB0cnVlO1xuXG5cdHN0YXRpYyBpbnN0YW5jZU1hcDogUmVjb3JkPHN0cmluZywgQXBwQ29tcG9uZW50PiA9IHt9O1xuXG5cdHByaXZhdGUgX29Sb3V0ZXJQcm94eSE6IFJvdXRlclByb3h5O1xuXG5cdHByaXZhdGUgX29BcHBTdGF0ZUhhbmRsZXIhOiBBcHBTdGF0ZUhhbmRsZXI7XG5cblx0cHJpdmF0ZSBiSW5pdGlhbGl6ZVJvdXRpbmc/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgX29EaWFnbm9zdGljcyE6IERpYWdub3N0aWNzO1xuXG5cdHByaXZhdGUgZW50aXR5Q29udGFpbmVyITogUHJvbWlzZTx2b2lkPjtcblxuXHRwcml2YXRlIHN0YXJ0dXBNb2RlOiBzdHJpbmcgPSBTdGFydHVwTW9kZS5Ob3JtYWw7XG5cblx0cHJpdmF0ZSBfc3RhcnRlZFNlcnZpY2VzOiBTZXJ2aWNlPHVua25vd24+W10gPSBbXTtcblxuXHRwdWJsaWMgaW5pdGlhbGl6ZWQhOiBQcm9taXNlPHZvaWQ+O1xuXG5cdHByaXZhdGUgX2luaXRpYWxpemVkS2VlcGVyITogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRwcml2YXRlIGlzQWRhcHRhdGlvbkVuYWJsZWQgPSBmYWxzZTtcblxuXHRwdWJsaWMgaXNFeGl0aW5nID0gZmFsc2U7XG5cblx0cHVibGljIHBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cblx0cHJpdmF0ZSBzdGlja3lEaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG5cdHByaXZhdGUgc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjaz86IEZ1bmN0aW9uO1xuXG5cdHByaXZhdGUgc3RpY2t5RGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrPzogRnVuY3Rpb247XG5cblx0cHJpdmF0ZSBzdXNwZW5kZWQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogU2luZ2xldG9uIHRvIGhvbGQgcHJvY2Vzc2VzIGZyb20gbGlicmFyaWVzIHRoYXQgbmVlZCB0byBiZSBydW4gZm9yIGV2ZXJ5IGluc3RhbmNlIHByaW9yIHRvIHN0YXJ0dXAuXG5cdCAqL1xuXHRwcml2YXRlIHN0YXRpYyBpbnN0YW5jZURlcGVuZGVudFByb2Nlc3NlczogKChhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCkgPT4gUHJvbWlzZTx2b2lkPilbXSA9IFtdO1xuXG5cdF9pc0ZjbEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0VUk1ID0gdGhpcy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLnVpNVwiKTtcblx0XHRyZXR1cm4gb01hbmlmZXN0VUk1Py5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLkZDTC5ST1VURVJDTEFTUztcblx0fVxuXG5cdHNldEFkYXB0YXRpb25Nb2RlKGlzQWRhcHRhdGlvbkVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLmlzQWRhcHRhdGlvbkVuYWJsZWQgPSBpc0FkYXB0YXRpb25FbmFibGVkO1xuXHR9XG5cblx0aXNBZGFwdGF0aW9uTW9kZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pc0FkYXB0YXRpb25FbmFibGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFByb3ZpZGVzIGEgaG9vayB0byBpbml0aWFsaXplIGZlYXR1cmUgdG9nZ2xlcy5cblx0ICpcblx0ICogVGhpcyBob29rIGlzIGJlaW5nIGNhbGxlZCBieSB0aGUgU0FQIEZpb3JpIGVsZW1lbnRzIEFwcENvbXBvbmVudCBhdCB0aGUgdGltZSBmZWF0dXJlIHRvZ2dsZXMgY2FuIGJlIGluaXRpYWxpemVkLlxuXHQgKiBUbyBjaGFuZ2UgcGFnZSBjb25maWd1cmF0aW9uLCB1c2UgdGhlIHtAbGluayBzYXAuZmUuY29yZS5BcHBDb21wb25lbnQjY2hhbmdlUGFnZUNvbmZpZ3VyYXRpb259IG1ldGhvZC5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBBIHByb21pc2Ugd2l0aG91dCBhbnkgdmFsdWUgdG8gYWxsb3cgYXN5bmNocm9ub3VzIHByb2Nlc3Nlc1xuXHQgKi9cblx0YXN5bmMgaW5pdGlhbGl6ZUZlYXR1cmVUb2dnbGVzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vIHRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGFwcGxpY2F0aW9uc1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGFuZ2VzIHRoZSBwYWdlIGNvbmZpZ3VyYXRpb24gb2YgU0FQIEZpb3JpIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBUaGlzIG1ldGhvZCBlbmFibGVzIHlvdSB0byBjaGFuZ2UgdGhlIHBhZ2UgY29uZmlndXJhdGlvbiBvZiBTQVAgRmlvcmkgZWxlbWVudHMuXG5cdCAqIEBwYXJhbSBwYWdlSWQgVGhlIElEIG9mIHRoZSBwYWdlIGZvciB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpcyB0byBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBpbiB0aGUgcGFnZSBzZXR0aW5ncyBmb3Igd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXMgdG8gYmUgY2hhbmdlZC5cblx0ICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24uIFRoaXMgY291bGQgYmUgYSBwbGFpbiB2YWx1ZSBsaWtlIGEgc3RyaW5nLCBvciBhIEJvb2xlYW4sIG9yIGEgc3RydWN0dXJlZCBvYmplY3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGNoYW5nZVBhZ2VDb25maWd1cmF0aW9uKHBhZ2VJZDogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG5cdFx0Y29uc3QgbWFuaWZlc3QgPSBjaGFuZ2VDb25maWd1cmF0aW9uKHRoaXMuZ2V0TWFuaWZlc3QoKSwgcGFnZUlkLCBwYXRoLCB2YWx1ZSwgdHJ1ZSwgdGhpcykgYXMgTWFuaWZlc3RDb250ZW50O1xuXHRcdGlmIChcblx0XHRcdHBhdGggPT09IFwiYXBwL2Rpc2FibGVJbnB1dEFzc2lzdGFuY2VcIiAmJlxuXHRcdFx0KG1hbmlmZXN0Py5bXCJzYXAuZmVcIl0gYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KT8uW1wiYXBwXCJdPy5bXCJkaXNhYmxlSW5wdXRBc3Npc3RhbmNlXCJdID09PSB2YWx1ZVxuXHRcdCkge1xuXHRcdFx0dGhpcy5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLnNldENhcGFiaWxpdHkoXCJEaXNhYmxlSW5wdXRBc3Npc3RhbmNlXCIsIHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYW5zIGFsbCByZWdpc3RlcmVkIHBhZ2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzLlxuXHQgKi9cblx0Y2xlYW5QYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMoKTogdm9pZCB7XG5cdFx0dGhpcy5wYWdlQ29uZmlndXJhdGlvbkNoYW5nZXMgPSB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlclByb3h5LlxuXHQgKiBAcmV0dXJucyBBIFJlZmVyZW5jZSB0byB0aGUgUm91dGVyUHJveHlcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRnZXRSb3V0ZXJQcm94eSgpOiBSb3V0ZXJQcm94eSB7XG5cdFx0cmV0dXJuIHRoaXMuX29Sb3V0ZXJQcm94eTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlci5cblx0ICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIEFwcFN0YXRlSGFuZGxlclxuXHQgKiBAZmluYWxcblx0ICovXG5cdGdldEFwcFN0YXRlSGFuZGxlcigpOiBBcHBTdGF0ZUhhbmRsZXIge1xuXHRcdHJldHVybiB0aGlzLl9vQXBwU3RhdGVIYW5kbGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgbmF2L0ZDTCBDb250cm9sbGVyLlxuXHQgKiBAcmV0dXJucyAgQSByZWZlcmVuY2UgdG8gdGhlIEZDTCBDb250cm9sbGVyXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um9vdFZpZXdDb250cm9sbGVyKCk6IFJvb3RWaWV3QmFzZUNvbnRyb2xsZXIge1xuXHRcdHJldHVybiB0aGlzLmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgTmF2Q29udGFpbmVyIGNvbnRyb2wgb3IgdGhlIEZDTCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyAgQSByZWZlcmVuY2UgdG8gTmF2Q29udGFpbmVyIGNvbnRyb2wgb3IgdGhlIEZDTCBjb250cm9sXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0Z2V0Um9vdENvbnRhaW5lcigpOiBOYXZDb250YWluZXIgfCBGbGV4aWJsZUNvbHVtbkxheW91dCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Um9vdENvbnRyb2woKS5nZXRDb250ZW50KClbMF0gYXMgTmF2Q29udGFpbmVyIHwgRmxleGlibGVDb2x1bW5MYXlvdXQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzdGFydHVwIG1vZGUgb2YgdGhlIGFwcC5cblx0ICogQHJldHVybnMgVGhlIHN0YXJ0dXAgbW9kZVxuXHQgKi9cblx0Z2V0U3RhcnR1cE1vZGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zdGFydHVwTW9kZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHN0YXJ0dXAgbW9kZSBmb3IgdGhlIGFwcCB0byAnQ3JlYXRlJy5cblx0ICpcblx0ICovXG5cdHNldFN0YXJ0dXBNb2RlQ3JlYXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5DcmVhdGU7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRoZSBzdGFydHVwIG1vZGUgZm9yIHRoZSBhcHAgdG8gJ0F1dG9DcmVhdGUnLlxuXHQgKlxuXHQgKi9cblx0c2V0U3RhcnR1cE1vZGVBdXRvQ3JlYXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5BdXRvQ3JlYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCB0aGUgc3RhcnR1cCBtb2RlIGZvciB0aGUgYXBwIHRvICdEZWVwbGluaycuXG5cdCAqXG5cdCAqL1xuXHRzZXRTdGFydHVwTW9kZURlZXBsaW5rKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhcnR1cE1vZGUgPSBTdGFydHVwTW9kZS5EZWVwbGluaztcblx0fVxuXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0Y29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcblx0XHRpZiAocGFyYW1zLmhhcyhcInNhcC11aS14eC1mZS1zdXBwb3J0XCIpKSB7XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0TGlicmFyeS5sb2FkKHsgbmFtZTogXCJzYXAuZmUudG9vbHNcIiB9KTtcblx0XHRcdH0sIDIwMDApO1xuXHRcdH1cblx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlciA9IG5ldyBQcm9taXNlS2VlcGVyPHZvaWQ+KCk7XG5cdFx0dGhpcy5pbml0aWFsaXplZCA9IHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnByb21pc2U7XG5cdFx0Y29uc3QgdWlNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0ZWRpdE1vZGU6IGxpYnJhcnkuRWRpdE1vZGUuRGlzcGxheSxcblx0XHRcdGlzRWRpdGFibGU6IGZhbHNlLFxuXHRcdFx0ZHJhZnRTdGF0dXM6IGxpYnJhcnkuRHJhZnRTdGF0dXMuQ2xlYXIsXG5cdFx0XHRidXN5OiBmYWxzZSxcblx0XHRcdGJ1c3lMb2NhbDoge30sXG5cdFx0XHRwYWdlczoge31cblx0XHR9KTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbCA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0cGFnZXM6IHt9XG5cdFx0fSk7XG5cdFx0Ly8gc2V0IHRoZSBiaW5kaW5nIE9uZVdheSBmb3IgdWlNb2RlbCB0byBwcmV2ZW50IGNoYW5nZXMgaWYgY29udHJvbGxlciBleHRlbnNpb25zIG1vZGlmeSBhIGJvdW5kIHByb3BlcnR5IG9mIGEgY29udHJvbFxuXHRcdHVpTW9kZWwuc2V0RGVmYXVsdEJpbmRpbmdNb2RlKFwiT25lV2F5XCIpO1xuXHRcdC8vIGZvciBpbnRlcm5hbCBtb2RlbCBiaW5kaW5nIG5lZWRzIHRvIGJlIHR3byB3YXlcblx0XHRNb2RlbEhlbHBlci5lbmhhbmNlVWlKU09OTW9kZWwodWlNb2RlbCwgbGlicmFyeSk7XG5cdFx0TW9kZWxIZWxwZXIuZW5oYW5jZUludGVybmFsSlNPTk1vZGVsKG9JbnRlcm5hbE1vZGVsKTtcblxuXHRcdHRoaXMuc2V0TW9kZWwodWlNb2RlbCwgXCJ1aVwiKTtcblx0XHR0aGlzLnNldE1vZGVsKG9JbnRlcm5hbE1vZGVsLCBcImludGVybmFsXCIpO1xuXG5cdFx0dGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgPSB0aGlzLmJJbml0aWFsaXplUm91dGluZyAhPT0gdW5kZWZpbmVkID8gdGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcgOiB0cnVlO1xuXHRcdHRoaXMuX29Sb3V0ZXJQcm94eSA9IG5ldyBSb3V0ZXJQcm94eSgpO1xuXHRcdHRoaXMuX29BcHBTdGF0ZUhhbmRsZXIgPSBuZXcgQXBwU3RhdGVIYW5kbGVyKHRoaXMpO1xuXHRcdHRoaXMuX29EaWFnbm9zdGljcyA9IG5ldyBEaWFnbm9zdGljcygpO1xuXG5cdFx0Y29uc3Qgb01vZGVsID0gdGhpcy5nZXRNb2RlbCgpO1xuXHRcdGlmIChvTW9kZWw/LmlzQT8uPE9EYXRhTW9kZWw+KFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTW9kZWxcIikpIHtcblx0XHRcdE1vZGVsSGVscGVyLmVuaGFuY2VPRGF0YU1vZGVsKG9Nb2RlbCwgdGhpcyk7XG5cdFx0XHRvTW9kZWwuc2V0UmV0cnlBZnRlckhhbmRsZXIodGhpcy5odHRwNTAzUmV0cnlIYW5kbGVyLmJpbmQodGhpcykpO1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXIgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkucmVxdWVzdE9iamVjdChcIi8kRW50aXR5Q29udGFpbmVyL1wiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbm90IGFuIE9EYXRhIHY0IHNlcnZpY2Vcblx0XHRcdHRoaXMuZW50aXR5Q29udGFpbmVyID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKT8uYXBwPy5kaXNhYmxlQ29sbGFib3JhdGlvbkRyYWZ0KSB7XG5cdFx0XHQvLyBkaXNhYmxlIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGdsb2JhbGx5IGluIGNhc2UgcHJpdmF0ZSBtYW5pZmVzdCBmbGFnIGlzIHNldFxuXHRcdFx0Ly8gdGhpcyBhbGxvd3MgY3VzdG9tZXJzIHRvIGRpc2FibGUgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgaW4gY2FzZSB3ZSBydW4gaW50byBpc3N1ZXMgd2l0aCB0aGUgZmlyc3QgZGVsaXZlcnlcblx0XHRcdC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdpdGggdGhlIG5leHQgUy80IHJlbGVhc2Vcblx0XHRcdE1vZGVsSGVscGVyLmRpc2FibGVDb2xsYWJvcmF0aW9uRHJhZnQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9NYW5pZmVzdFVJNSA9IHRoaXMuZ2V0TWFuaWZlc3QoKVtcInNhcC51aTVcIl07XG5cdFx0dGhpcy5jaGVja1JvdXRpbmdDb25maWd1cmF0aW9uKG9NYW5pZmVzdFVJNSk7XG5cblx0XHQvLyB0aGUgaW5pdCBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSByb3V0aW5nIGFjY29yZGluZyB0byB0aGUgc2V0dGluZ3MgYWJvdmVcblx0XHQvLyBpdCB3aWxsIGNhbGwgdGhlIGNyZWF0ZUNvbnRlbnQgZnVuY3Rpb24gdG8gaW5zdGFudGlhdGUgdGhlIFJvb3RWaWV3IGFuZCBhZGQgaXQgdG8gdGhlIFVJQ29tcG9uZW50IGFnZ3JlZ2F0aW9uc1xuXG5cdFx0c3VwZXIuaW5pdCgpO1xuXHRcdEFwcENvbXBvbmVudC5pbnN0YW5jZU1hcFt0aGlzLmdldElkKCldID0gdGhpcztcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgaHR0cDUwM1JldHJ5SGFuZGxlcihlcnJvcjogRXJyb3IgJiB7IHJldHJ5QWZ0ZXI/OiBEYXRlIH0pOiBQcm9taXNlPHVuZGVmaW5lZD4ge1xuXHRcdHJldHVybiBIVFRQNTAzSGFuZGxlci5oYW5kbGU1MDNEZWxheShlcnJvciwgdGhpcy5nZXRSb290Q29udHJvbCgpLCBnZXRSZXNvdXJjZU1vZGVsKHRoaXMpKTtcblx0fVxuXG5cdHByaXZhdGUgY2hlY2tSb3V0aW5nQ29uZmlndXJhdGlvbihvTWFuaWZlc3RVSTU6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl0pOiB2b2lkIHtcblx0XHRpZiAob01hbmlmZXN0VUk1Py5yb290Vmlldz8udmlld05hbWUpIHtcblx0XHRcdC8vIFRoZSBhcHBsaWNhdGlvbiBzcGVjaWZpZWQgYW4gb3duIHJvb3QgdmlldyBpbiB0aGUgbWFuaWZlc3RcblxuXHRcdFx0Ly8gUm9vdCBWaWV3IHdhcyBtb3ZlZCBmcm9tIHNhcC5mZS50ZW1wbGF0ZXMgdG8gc2FwLmZlLmNvcmUgLSBrZWVwIGl0IGNvbXBhdGlibGVcblx0XHRcdGlmIChvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FX0NPTVBBVElCSUxJVFkpIHtcblx0XHRcdFx0b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lID0gTkFWQ09ORi5GQ0wuVklFV05BTUU7XG5cdFx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldy52aWV3TmFtZSA9PT0gTkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUVfQ09NUEFUSUJJTElUWSkge1xuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPSBOQVZDT05GLk5BVkNPTlRBSU5FUi5WSUVXTkFNRTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuRkNMLlZJRVdOQU1FICYmXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLkZDTC5ST1VURVJDTEFTU1xuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5GQ0wuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuRkNMLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWUgPT09IE5BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FICYmXG5cdFx0XHRcdG9NYW5pZmVzdFVJNS5yb3V0aW5nPy5jb25maWc/LnJvdXRlckNsYXNzID09PSBOQVZDT05GLk5BVkNPTlRBSU5FUi5ST1VURVJDTEFTU1xuXHRcdFx0KSB7XG5cdFx0XHRcdExvZy5pbmZvKGBSb290Y29udGFpbmVyOiBcIiR7TkFWQ09ORi5OQVZDT05UQUlORVIuVklFV05BTUV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9IGVsc2UgaWYgKG9NYW5pZmVzdFVJNS5yb290Vmlldz8udmlld05hbWU/LmluY2x1ZGVzKFwic2FwLmZlLmNvcmUucm9vdFZpZXdcIikpIHtcblx0XHRcdFx0dGhyb3cgRXJyb3IoXG5cdFx0XHRcdFx0YFxcbldyb25nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb3VwbGUgKHJvb3RWaWV3L3JvdXRlckNsYXNzKSBpbiBtYW5pZmVzdCBmaWxlLlxcbmAgK1xuXHRcdFx0XHRcdFx0YEN1cnJlbnQgdmFsdWVzIGFyZSA6KCR7b01hbmlmZXN0VUk1LnJvb3RWaWV3LnZpZXdOYW1lfS8ke1xuXHRcdFx0XHRcdFx0XHRvTWFuaWZlc3RVSTUucm91dGluZz8uY29uZmlnPy5yb3V0ZXJDbGFzcyB8fCBcIjxtaXNzaW5nIHJvdXRlciBjbGFzcz5cIlxuXHRcdFx0XHRcdFx0fSlcXG5gICtcblx0XHRcdFx0XHRcdGBFeHBlY3RlZCB2YWx1ZXMgYXJlIFxcbmAgK1xuXHRcdFx0XHRcdFx0YFxcdCAtICgke05BVkNPTkYuTkFWQ09OVEFJTkVSLlZJRVdOQU1FfS8ke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfSlcXG5gICtcblx0XHRcdFx0XHRcdGBcXHQgLSAoJHtOQVZDT05GLkZDTC5WSUVXTkFNRX0vJHtOQVZDT05GLkZDTC5ST1VURVJDTEFTU30pYFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TG9nLmluZm8oYFJvb3Rjb250YWluZXI6IFwiJHtvTWFuaWZlc3RVSTUucm9vdFZpZXcudmlld05hbWV9XCIgLSBSb3V0ZXJjbGFzczogXCIke05BVkNPTkYuTkFWQ09OVEFJTkVSLlJPVVRFUkNMQVNTfVwiYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgb25TZXJ2aWNlc1N0YXJ0ZWQoYWxsU2VydmljZXM6IFNlcnZpY2U8dW5rbm93bj5bXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcyA9IGFsbFNlcnZpY2VzO1xuXHRcdGF3YWl0IHRoaXMuaW5pdGlhbGl6ZUZlYXR1cmVUb2dnbGVzKCk7XG5cdFx0YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuXHRcdFx0QXBwQ29tcG9uZW50Lmluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzLm1hcChhc3luYyAoZm5Qcm9jZXNzKSA9PiB7XG5cdFx0XHRcdHJldHVybiBmblByb2Nlc3MuY2FsbChudWxsLCB0aGlzKTtcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdC8vcm91dGVyIG11c3QgYmUgc3RhcnRlZCBvbmNlIHRoZSByb290Y29udGFpbmVyIGlzIGluaXRpYWxpemVkXG5cdFx0Ly9zdGFydGluZyBvZiB0aGUgcm91dGVyXG5cdFx0Y29uc3QgZmluYWxpemVkUm91dGluZ0luaXRpYWxpemF0aW9uID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5lbnRpdHlDb250YWluZXJcblx0XHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLmF0dGFjaFJvdXRlTWF0Y2hlcnMpIHtcblx0XHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuYXR0YWNoUm91dGVNYXRjaGVycygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlcigpLmluaXRpYWxpemUoKTtcblx0XHRcdFx0XHR0aGlzLmdldFJvdXRlclByb3h5KCkuaW5pdCh0aGlzLCB0aGlzLl9pc0ZjbEVuYWJsZWQoKSk7XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRWYWx1ZUhlbHBIaXN0b3J5U2VydmljZSgpLnJlZ2lzdGVyU2hlbGxIb29rKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblxuXHRcdFx0XHRcdHRoaXMuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkuZGlzcGxheUVycm9yUGFnZShcblx0XHRcdFx0XHRcdG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19BUFBfQ09NUE9ORU5UX1NBUEZFX0FQUFNUQVJUX1RFQ0hOSUNBTF9JU1NVRVNcIiksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0VSUk9SXCIpLFxuXHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pO1xuXHRcdH07XG5cblx0XHRpZiAodGhpcy5iSW5pdGlhbGl6ZVJvdXRpbmcpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKClcblx0XHRcdFx0LmluaXRpYWxpemVSb3V0aW5nKClcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpKSB7XG5cdFx0XHRcdFx0XHRmaW5hbGl6ZWRSb3V0aW5nSW5pdGlhbGl6YXRpb24oKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRSb290Q29udHJvbCgpLmF0dGFjaEFmdGVySW5pdChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdGZpbmFsaXplZFJvdXRpbmdJbml0aWFsaXphdGlvbigpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuX2luaXRpYWxpemVkS2VlcGVyLnJlc29sdmUoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyOiBFcnJvcikge1xuXHRcdFx0XHRcdExvZy5lcnJvcihgY2Fubm90IGNhbm5vdCBpbml0aWFsaXplIHJvdXRpbmc6ICR7ZXJyLnRvU3RyaW5nKCl9YCk7XG5cdFx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9pbml0aWFsaXplZEtlZXBlci5yZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0ZXhpdCgpOiB2b2lkIHtcblx0XHR0aGlzLl9zdGFydGVkU2VydmljZXMgPSBbXTtcblx0XHR0aGlzLl9vQXBwU3RhdGVIYW5kbGVyLmRlc3Ryb3koKTtcblx0XHR0aGlzLl9vUm91dGVyUHJveHkuZGVzdHJveSgpO1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIHRoaXMuX29BcHBTdGF0ZUhhbmRsZXI7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRkZWxldGUgdGhpcy5fb1JvdXRlclByb3h5O1xuXHRcdGRlbGV0ZU1vZGVsQ2FjaGVEYXRhKHRoaXMuZ2V0TWV0YU1vZGVsKCkpO1xuXHRcdHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKS5kZXN0cm95KCk7XG5cdFx0dGhpcy5jbGVhblBhZ2VDb25maWd1cmF0aW9uQ2hhbmdlcygpO1xuXHR9XG5cblx0Z2V0TWV0YU1vZGVsKCk6IE9EYXRhTWV0YU1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHR9XG5cblx0Z2V0RGlhZ25vc3RpY3MoKTogRGlhZ25vc3RpY3Mge1xuXHRcdHJldHVybiB0aGlzLl9vRGlhZ25vc3RpY3M7XG5cdH1cblxuXHRkZXN0cm95KGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5pc0V4aXRpbmcgPSB0cnVlO1xuXG5cdFx0Ly8gTEVBS1MsIHdpdGggd29ya2Fyb3VuZCBmb3Igc29tZSBGbGV4IC8gTURDIGlzc3VlXG5cdFx0dHJ5IHtcblx0XHRcdGRlbGV0ZSBBcHBDb21wb25lbnQuaW5zdGFuY2VNYXBbdGhpcy5nZXRJZCgpXTtcblxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0ZGVsZXRlICh3aW5kb3cgYXMgdW5rbm93bikuX3JvdXRpbmc7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmluZm8oZSBhcyBzdHJpbmcpO1xuXHRcdH1cblxuXHRcdC8vV09SS0FST1VORCBmb3Igc3RpY2t5IGRpc2NhcmQgcmVxdWVzdCA6IGR1ZSB0byBhc3luYyBjYWxsYmFjaywgcmVxdWVzdCB0cmlnZ2VyZWQgYnkgdGhlIGV4aXRBcHBsaWNhdGlvbiB3aWxsIGJlIHNlbmQgYWZ0ZXIgdGhlIFVJQ29tcG9uZW50LnByb3RvdHlwZS5kZXN0cm95XG5cdFx0Ly9zbyB3ZSBuZWVkIHRvIGNvcHkgdGhlIFJlcXVlc3RvciBoZWFkZXJzIGFzIGl0IHdpbGwgYmUgZGVzdHJveVxuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCBvTWFpbk1vZGVsID0gdGhpcy5vTW9kZWxzW3VuZGVmaW5lZF07XG5cdFx0bGV0IG9IZWFkZXJzO1xuXHRcdGlmIChvTWFpbk1vZGVsPy5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvSGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe30sIG9NYWluTW9kZWwub1JlcXVlc3Rvci5tSGVhZGVycyk7XG5cdFx0fVxuXG5cdFx0Ly8gQXMgd2UgbmVlZCB0byBjbGVhbnVwIHRoZSBhcHBsaWNhdGlvbiAvIGhhbmRsZSB0aGUgZGlydHkgb2JqZWN0IHdlIG5lZWQgdG8gY2FsbCBvdXIgY2xlYW51cCBiZWZvcmUgdGhlIG1vZGVscyBhcmUgZGVzdHJveWVkXG5cdFx0dGhpcy5nZXRSb3V0aW5nU2VydmljZSgpPy5iZWZvcmVFeGl0Py4oKTtcblx0XHR0aGlzLnVucmVnaXN0ZXJTdGlja3lTZXNzaW9uQ2FsbGJhY2tzKCk7XG5cdFx0c3VwZXIuZGVzdHJveShiU3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0XHRpZiAob0hlYWRlcnMgJiYgb01haW5Nb2RlbC5vUmVxdWVzdG9yKSB7XG5cdFx0XHRvTWFpbk1vZGVsLm9SZXF1ZXN0b3IubUhlYWRlcnMgPSBvSGVhZGVycztcblx0XHR9XG5cdH1cblxuXHRnZXRSb3V0aW5nU2VydmljZSgpOiBSb3V0aW5nU2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIFJvdXRpbmdTZXJ2aWNlOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0U2hlbGxTZXJ2aWNlcygpOiBJU2hlbGxTZXJ2aWNlcyB7XG5cdFx0cmV0dXJuIHt9IGFzIElTaGVsbFNlcnZpY2VzOyAvLyBvdmVycmlkZW4gYXQgcnVudGltZVxuXHR9XG5cblx0Z2V0TmF2aWdhdGlvblNlcnZpY2UoKTogTmF2aWdhdGlvblNlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBOYXZpZ2F0aW9uU2VydmljZTsgLy8gb3ZlcnJpZGVuIGF0IHJ1bnRpbWVcblx0fVxuXG5cdGdldFNpZGVFZmZlY3RzU2VydmljZSgpOiBTaWRlRWZmZWN0c1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBTaWRlRWZmZWN0c1NlcnZpY2U7XG5cdH1cblxuXHRnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpOiBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2Uge1xuXHRcdHJldHVybiB7fSBhcyBFbnZpcm9ubWVudENhcGFiaWxpdGllc1NlcnZpY2U7XG5cdH1cblxuXHRnZXRDb2xsYWJvcmF0aW9uTWFuYWdlclNlcnZpY2UoKTogQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSgpOiBDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29sbGFib3JhdGl2ZVRvb2xzU2VydmljZTtcblx0fVxuXG5cdGdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKTogQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U7XG5cdH1cblxuXHRnZXRDb250ZXh0U2hhcmluZ1NlcnZpY2UoKTogQ29udGV4dFNoYXJpbmdTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgQ29udGV4dFNoYXJpbmdTZXJ2aWNlO1xuXHR9XG5cblx0Z2V0VGVsZW1ldHJ5U2VydmljZSgpOiBUZWxlbWV0cnlTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgVGVsZW1ldHJ5U2VydmljZTtcblx0fVxuXG5cdGdldFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlKCk6IFZhbHVlSGVscEhpc3RvcnlTZXJ2aWNlIHtcblx0XHRyZXR1cm4ge30gYXMgVmFsdWVIZWxwSGlzdG9yeVNlcnZpY2U7XG5cdH1cblxuXHRnZXRJbmxpbmVFZGl0U2VydmljZSgpOiBJbmxpbmVFZGl0U2VydmljZSB7XG5cdFx0cmV0dXJuIHt9IGFzIElubGluZUVkaXRTZXJ2aWNlO1xuXHR9XG5cblx0YXN5bmMgZ2V0U3RhcnR1cFBhcmFtZXRlcnMoKTogUHJvbWlzZTxTdGFydHVwUGFyYW1ldGVycz4ge1xuXHRcdGNvbnN0IG9Db21wb25lbnREYXRhID0gdGhpcy5nZXRDb21wb25lbnREYXRhKCk7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgob0NvbXBvbmVudERhdGEgJiYgb0NvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9KTtcblx0fVxuXG5cdHJlc3RvcmUoKTogdm9pZCB7XG5cdFx0Ly8gY2FsbGVkIGJ5IEZMUCB3aGVuIGFwcCBzYXAta2VlcC1hbGl2ZSBpcyBlbmFibGVkIGFuZCBhcHAgaXMgcmVzdG9yZWRcblx0XHRmb3IgKGNvbnN0IHN0YXJ0ZWRTZXJ2aWNlIG9mIHRoaXMuX3N0YXJ0ZWRTZXJ2aWNlcykge1xuXHRcdFx0c3RhcnRlZFNlcnZpY2Uub25SZXN0b3JlPy4oKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRSb290Vmlld0NvbnRyb2xsZXIoKS52aWV3U3RhdGUub25SZXN0b3JlKCk7XG5cblx0XHQvLyBSZXNldCBhbGwgdmFsdWVzIGluIHZlcnNpb25BY3RpdmF0aW9uU3RhdHVzIHRvIGZhbHNlXG5cdFx0QXBwU3RhdGVIYW5kbGVyLnJlc2V0VmVyc2lvbkFjdGl2YXRpb25TdGF0dXMoKTtcblxuXHRcdHRoaXMuc3VzcGVuZGVkID0gZmFsc2U7XG5cdH1cblxuXHRzdXNwZW5kKCk6IHZvaWQge1xuXHRcdC8vIGNhbGxlZCBieSBGTFAgd2hlbiBhcHAgc2FwLWtlZXAtYWxpdmUgaXMgZW5hYmxlZCBhbmQgYXBwIGlzIHN1c3BlbmRlZFxuXHRcdGZvciAoY29uc3Qgc3RhcnRlZFNlcnZpY2Ugb2YgdGhpcy5fc3RhcnRlZFNlcnZpY2VzKSB7XG5cdFx0XHRzdGFydGVkU2VydmljZS5vblN1c3BlbmQ/LigpO1xuXHRcdH1cblx0XHR0aGlzLmdldFJvb3RWaWV3Q29udHJvbGxlcigpLnZpZXdTdGF0ZS5vblN1c3BlbmQoKTtcblxuXHRcdHRoaXMuc3VzcGVuZGVkID0gdHJ1ZTtcblx0fVxuXG5cdGlzU3VzcGVuZGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN1c3BlbmRlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBuYXZpZ2F0ZUJhc2VkT25TdGFydHVwUGFyYW1ldGVyIGZ1bmN0aW9uIGlzIGEgcHVibGljIGFwaSB0aGF0IGFjdHMgYXMgYSB3cmFwcGVyIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb24uIEl0IHBhc3NlcyB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzIGZ1cnRoZXIgdG8gX21hbmFnZURlZXBMaW5rU3RhcnR1cCBmdW5jdGlvblxuXHQgKiBAcGFyYW0gc3RhcnR1cFBhcmFtZXRlcnMgRGVmaW5lcyB0aGUgc3RhcnR1cCBwYXJhbWV0ZXJzIHdoaWNoIGlzIGZ1cnRoZXIgcGFzc2VkIHRvIF9tYW5hZ2VEZWVwTGlua1N0YXJ0dXAgZnVuY3Rpb24uXG5cdCAqL1xuXG5cdGFzeW5jIG5hdmlnYXRlQmFzZWRPblN0YXJ0dXBQYXJhbWV0ZXIoc3RhcnR1cFBhcmFtZXRlcnM6IFN0YXJ0dXBQYXJhbWV0ZXJzIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIUJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcy5nZXRNb2RlbChcInVpXCIpKSkge1xuXHRcdFx0XHRpZiAoIXN0YXJ0dXBQYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0c3RhcnR1cFBhcmFtZXRlcnMgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHJvdXRpbmdTZXJ2aWNlID0gdGhpcy5nZXRSb3V0aW5nU2VydmljZSgpO1xuXHRcdFx0XHRhd2FpdCByb3V0aW5nU2VydmljZS5fbWFuYWdlRGVlcExpbmtTdGFydHVwKHN0YXJ0dXBQYXJhbWV0ZXJzKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChleGNlcHRpb246IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihleGNlcHRpb24gYXMgc3RyaW5nKTtcblx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMuZ2V0TW9kZWwoXCJ1aVwiKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVzZWQgdG8gYWxsb3cgZGlzYWJsaW5nIHRoZSBDb2xsYWJvcmF0aW9uIE1hbmFnZXIgaW50ZWdyYXRpb24gZm9yIHRoZSBPVlAgdXNlIGNhc2UuXG5cdCAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbGxhYm9yYXRpb24gbWFuYWdlciBzZXJ2aWNlIGlzIGFjdGl2ZS5cblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbk1hbmFnZXJTZXJ2aWNlRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBwcm9jZXNzZXMgdGhhdCBuZWVkIHRvIGJlIHJ1biBmb3IgZXZlcnkgaW5zdGFuY2UgcHJpb3IgdG8gc3RhcnR1cC5cblx0ICogQHBhcmFtIGZuUHJvY2VzcyBGdW5jdGlvbiB0aGF0IGhvbGQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwcm9jZXNzLlxuXHQgKlxuXHQgKiBUaGUgcmVnaXN0ZXJlZCBwcm9jZXNzIGNhbiBiZSBhbiBhc3luY2hyb25vdXMgcHJvY2Vzcy5cblx0ICogSXQgc2hhbGwgYmUgY2FsbGVkIHdpdGggdGhlIEFwcENvbXBvbmVudCBpbnN0YW5jZSBhcyBhIHBhcmFtZXRlciBiZWZvcmUgc3RhcnR1cC5cblx0ICovXG5cdHN0YXRpYyByZWdpc3Rlckluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc0ZvclN0YXJ0VXAoZm5Qcm9jZXNzOiAoYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpID0+IFByb21pc2U8dm9pZD4pOiB2b2lkIHtcblx0XHR0aGlzLmluc3RhbmNlRGVwZW5kZW50UHJvY2Vzc2VzLnB1c2goZm5Qcm9jZXNzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgdGhlIGNhbGxiYWNrcyByZWxhdGVkIHRvIGEgc3RpY2t5IGVkaXQgc2Vzc2lvbi5cblx0ICogQHBhcmFtIGRpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrXG5cdCAqIEBwYXJhbSBzZXNzaW9uVGltZW91dENhbGxiYWNrXG5cdCAqIEBwYXJhbSBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2tcblx0ICovXG5cdHJlZ2lzdGVyU3RpY2t5U2Vzc2lvbkNhbGxiYWNrcyhcblx0XHRkaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjazogRnVuY3Rpb24sXG5cdFx0c2Vzc2lvblRpbWVvdXRDYWxsYmFjazogRnVuY3Rpb24sXG5cdFx0ZGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrOiBGdW5jdGlvblxuXHQpOiB2b2lkIHtcblx0XHR0aGlzLnN0aWNreURpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrID0gZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2s7XG5cdFx0dGhpcy5nZXRTaGVsbFNlcnZpY2VzKCkucmVnaXN0ZXJEaXJ0eVN0YXRlUHJvdmlkZXIoZGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2spO1xuXG5cdFx0dGhpcy5zdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrID0gc2Vzc2lvblRpbWVvdXRDYWxsYmFjaztcblx0XHR0aGlzLmdldE1vZGVsKCkuYXR0YWNoU2Vzc2lvblRpbWVvdXQoc2Vzc2lvblRpbWVvdXRDYWxsYmFjayk7XG5cblx0XHR0aGlzLnN0aWNreURpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjayA9IGRpc2NhcmRBZnRlck5hdmlnYXRpb25DYWxsYmFjaztcblx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuYXR0YWNoUm91dGVNYXRjaGVkKHt9LCBkaXNjYXJkQWZ0ZXJOYXZpZ2F0aW9uQ2FsbGJhY2spO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVucmVnaXN0ZXJzIHRoZSBjYWxsYmFja3MgcmVsYXRlZCB0byBhIHN0aWNreSBlZGl0IHNlc3Npb24uXG5cdCAqL1xuXHR1bnJlZ2lzdGVyU3RpY2t5U2Vzc2lvbkNhbGxiYWNrcygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5zdGlja3lEaXJ0eVN0YXRlUHJvdmlkZXJDYWxsYmFjaykge1xuXHRcdFx0dGhpcy5nZXRTaGVsbFNlcnZpY2VzKCkuZGVyZWdpc3RlckRpcnR5U3RhdGVQcm92aWRlcih0aGlzLnN0aWNreURpcnR5U3RhdGVQcm92aWRlckNhbGxiYWNrKTtcblx0XHRcdHRoaXMuc3RpY2t5RGlydHlTdGF0ZVByb3ZpZGVyQ2FsbGJhY2sgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnN0aWNreVNlc3Npb25UaW1lb3V0Q2FsbGJhY2sgJiYgdGhpcy5nZXRNb2RlbCgpKSB7XG5cdFx0XHR0aGlzLmdldE1vZGVsKCkuZGV0YWNoU2Vzc2lvblRpbWVvdXQodGhpcy5zdGlja3lTZXNzaW9uVGltZW91dENhbGxiYWNrKTtcblx0XHRcdHRoaXMuc3RpY2t5U2Vzc2lvblRpbWVvdXRDYWxsYmFjayA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuc3RpY2t5RGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrKSB7XG5cdFx0XHR0aGlzLmdldFJvdXRpbmdTZXJ2aWNlKCkuZGV0YWNoUm91dGVNYXRjaGVkKHRoaXMuc3RpY2t5RGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrKTtcblx0XHRcdHRoaXMuc3RpY2t5RGlzY2FyZEFmdGVyTmF2aWdhdGlvbkNhbGxiYWNrID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxufVxuXG5pbnRlcmZhY2UgQXBwQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQge1xuXHRpc0FkYXB0YXRpb25Nb2RlKCk6IGJvb2xlYW47XG5cdGdldE1hbmlmZXN0KCk6IE1hbmlmZXN0Q29udGVudDtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuYXBwXCIpOiBNYW5pZmVzdENvbnRlbnRbXCJzYXAuYXBwXCJdO1xuXHRnZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aTVcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aTVcIl07XG5cdF9nZXRNYW5pZmVzdEVudHJ5KGVudHJ5OiBcInNhcC51aTVcIiwgbWVyZ2VkOiBib29sZWFuKTogTWFuaWZlc3RDb250ZW50W1wic2FwLnVpNVwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAudWlcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC51aVwiXTtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuZmVcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5mZVwiXSB8IHVuZGVmaW5lZDtcblx0Z2V0TWFuaWZlc3RFbnRyeShlbnRyeTogXCJzYXAuZmlvcmlcIik6IE1hbmlmZXN0Q29udGVudFtcInNhcC5maW9yaVwiXTtcblx0Z2V0Q29tcG9uZW50RGF0YSgpOiBDb21wb25lbnREYXRhO1xuXHRnZXRSb290Q29udHJvbCgpOiB7XG5cdFx0Z2V0Q29udHJvbGxlcigpOiBSb290Vmlld0Jhc2VDb250cm9sbGVyO1xuXHR9ICYgVmlldztcblx0Z2V0TW9kZWwoKTogT0RhdGFNb2RlbDtcblx0Z2V0TW9kZWwobmFtZTogXCJ1aVwiKTogSlNPTk1vZGVsO1xuXHRnZXRNb2RlbChuYW1lOiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXBwQ29tcG9uZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwQ0EsTUFBTUEsV0FBVyxHQUFHQyxPQUFPLENBQUNELFdBQVc7RUFDdkMsTUFBTUUsT0FBTyxHQUFH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
@@ -211,6 +211,8 @@ class AppComponent extends UIComponent implements IAsyncContentCreation {
211
211
 
212
212
  private stickyDiscardAfterNavigationCallback?: Function;
213
213
 
214
+ private suspended = false;
215
+
214
216
  /**
215
217
  * Singleton to hold processes from libraries that need to be run for every instance prior to startup.
216
218
  */
@@ -614,6 +616,8 @@ class AppComponent extends UIComponent implements IAsyncContentCreation {
614
616
 
615
617
  // Reset all values in versionActivationStatus to false
616
618
  AppStateHandler.resetVersionActivationStatus();
619
+
620
+ this.suspended = false;
617
621
  }
618
622
 
619
623
  suspend(): void {
@@ -622,6 +626,12 @@ class AppComponent extends UIComponent implements IAsyncContentCreation {
622
626
  startedService.onSuspend?.();
623
627
  }
624
628
  this.getRootViewController().viewState.onSuspend();
629
+
630
+ this.suspended = true;
631
+ }
632
+
633
+ isSuspended(): boolean {
634
+ return this.suspended;
625
635
  }
626
636
 
627
637
  /**
@@ -288,6 +288,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/ui/core/Element"
288
288
  const me = CollaborationUtils.getMe(this.base.getAppComponent());
289
289
  const hasMe = usersInvited?.some(singleUser => singleUser.UserID === me.id) ?? false;
290
290
  uiModel.setProperty("/hasCollaborationAuthorization", hasMe);
291
+ uiModel.setProperty("/showCollaborationStrip", !hasMe);
291
292
  if (hasMe) {
292
293
  this.connect(draftRootContext).catch(error => {
293
294
  Log.error("Error when connecting to the collaboration draft " + error);
@@ -338,4 +339,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/ui/core/Element"
338
339
  _exports = CollaborationDraft;
339
340
  return _exports;
340
341
  }, false);
341
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfQmFzZUNvbnRyb2xsZXJFeHRlbnMiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIiwiY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSIsImJhc2UiLCJnZXRBcHBDb21wb25lbnQiLCJoYW5kbGVDb250ZW50Rm9jdXNJbiIsInNvdXJjZSIsImZvY3VzRXZlbnQiLCJpc0EiLCJnZXRQYXJlbnQiLCJ0YXJnZXRPdXRzaWRlT2ZDb250cm9sRG9tUmVmIiwiZ2V0RG9tUmVmIiwiY29udGFpbnMiLCJyZWxhdGVkVGFyZ2V0IiwibGFzdEZvY3VzSWQiLCJnZXRMYXN0Rm9jdXNJZCIsImdldElkIiwiZ2V0TGFzdEZvY3VzRmllbGRHcm91cHMiLCJnZXRGaWVsZEdyb3VwSWRzIiwiam9pbiIsImxhc3RGb2N1c2VkIiwiRWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwic2VuZEZvY3VzT3V0TWVzc2FnZSIsInNldExhc3RGb2N1c0luZm9ybWF0aW9uIiwic2VuZEZvY3VzSW5NZXNzYWdlIiwiaGFuZGxlQ29udGVudEZvY3VzT3V0IiwiZmllbGRHcm91cEV2ZW50IiwiY29udHJvbCIsImdldFNvdXJjZSIsImZpZWxkR3JvdXBJZHMiLCJnZXRQYXJhbWV0ZXIiLCJzb21lIiwiZ3JvdXBJZCIsInN0YXJ0c1dpdGgiLCJDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCIsInNvdXJjZUNvbnRyb2wiLCJjdXJyZW50Rm9jdXNlZENvbnRyb2wiLCJnZXRBY3RpdmVFbGVtZW50IiwidW5kZWZpbmVkIiwibGFzdEZvY3VzRmllbGRHcm91cHMiLCJmb2N1c2VkRmllbGQiLCJmaWVsZHBBUEkiLCJjb2xsYWJvcmF0aW9uUGF0aCIsImdldENvbGxhYm9yYXRpb25QYXRoIiwic2VuZCIsImFjdGlvbiIsIkFjdGl2aXR5IiwiTG9jayIsImNvbnRlbnQiLCJVbmxvY2siLCJmaWVsZCIsImJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgiLCJmaWVsZFdyYXBwZXIiLCJGaWVsZEVkaXRNb2RlIiwiRWRpdGFibGUiLCJFZGl0YWJsZURpc3BsYXkiLCJFZGl0YWJsZVJlYWRPbmx5IiwiaW5jbHVkZXMiLCJnZXRQcm9wZXJ0eSIsImdldFBhdGgiLCJrZXlwYXRoIiwiZ2V0QmluZGluZ0luZm8iLCJ0ZW1wbGF0ZSIsImdldEJpbmRpbmdQYXRoIiwicGF0aCIsIm1lc3NhZ2UiLCJnZXRWaWV3IiwiaXNDb25uZWN0ZWQiLCJjb25uZWN0IiwiZHJhZnRSb290Q29udGV4dCIsImRpc2Nvbm5lY3QiLCJ1aU1vZGVsIiwiZ2V0TW9kZWwiLCJjbGVhbkRyYWZ0Um9vdCIsInNldFByb3BlcnR5IiwiaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCIsInJldGFpbkFzeW5jTWVzc2FnZXMiLCJhY3Rpdml0eVBhdGhzIiwicmVsZWFzZUFzeW5jTWVzc2FnZXMiLCJ1cGRhdGVMb2Nrc0ZvckNvbnRleHRQYXRoIiwib2xkQ29udGV4dFBhdGgiLCJuZXdDb250ZXh0UGF0aCIsImdldEN1cnJlbnREcmFmdFJvb3RQYXRoIiwiaW50ZXJuYWxNb2RlbCIsImdldERyYWZ0VXNlckxpc3RQcm9taXNlIiwiaXNJbml0aWFsU2hhcmUiLCJzZXRJbml0aWFsU2hhcmUiLCJpc0luaXRpYWwiLCJzZXREcmFmdFJvb3QiLCJ1c2VyTGlzdFByb21pc2UiLCJnZXRPYmplY3QiLCJyZXF1ZXN0T2JqZWN0IiwicmVxdWVzdFNpZGVFZmZlY3RzIiwidGhlbiIsImFjdGl2YXRlQ29sbGFib3JhdGlvbiIsInBhZ2VDb250ZXh0IiwiaXNBY3RpdmVFbnRpdHkiLCJDb21tb25VdGlscyIsImZpbmRPckNyZWF0ZVJvb3RDb250ZXh0IiwiJCRncm91cElkIiwiZ2V0R3JvdXBJZCIsIiRzZWxlY3QiLCJyb290Q29udGV4dCIsIkxvZyIsImVycm9yIiwiY3VycmVudERyYWZ0Um9vdFBhdGgiLCJ1c2Vyc0ludml0ZWQiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiaGFzTWUiLCJzaW5nbGVVc2VyIiwiVXNlcklEIiwiaWQiLCJjYXRjaCIsImVyciIsImV4ZWN1dGVTaGFyZUFjdGlvbiIsInNoYXJlUHJvbWlzZSIsInNoYXJlT2JqZWN0IiwiYWRkU2VsZiIsIkJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb2xsYWJvcmF0aXZlRHJhZnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEZpZWxkIGZyb20gXCJzYXAvZmUvbWFjcm9zL0ZpZWxkXCI7XG5pbXBvcnQgdHlwZSBGaWVsZFdyYXBwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmllbGRXcmFwcGVyXCI7XG5pbXBvcnQgdHlwZSBUb2tlbml6ZXIgZnJvbSBcInNhcC9tL1Rva2VuaXplclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSBNdWx0aVZhbHVlRmllbGQgZnJvbSBcInNhcC91aS9tZGMvTXVsdGlWYWx1ZUZpZWxkXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcIi4uL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwiLi4vUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9jb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgRmllbGRFZGl0TW9kZSB9IGZyb20gXCIuLi90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCIuL0Jhc2VDb250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgeyBBY3Rpdml0eSwgQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXgsIENvbGxhYm9yYXRpb25VdGlscywgYWRkU2VsZiwgc2hhcmVPYmplY3QgfSBmcm9tIFwiLi9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcblxudHlwZSBEcmFmdEFkbWluVXNlciA9IHtcblx0RHJhZnRFbnRpdHlUeXBlOiBzdHJpbmc7XG5cdERyYWZ0VVVJRDogc3RyaW5nO1xuXHRVc2VySUQ6IHN0cmluZztcbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQmFzZUNvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcml2YXRlIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRwcml2YXRlIGxhc3RGb2N1c0lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSBsYXN0Rm9jdXNGaWVsZEdyb3Vwczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSE6IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U7XG5cblx0cHJpdmF0ZSBnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCk6IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2Uge1xuXHRcdHRoaXMuY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSA9IHRoaXMuY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSA/PyB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpO1xuXHRcdHJldHVybiB0aGlzLmNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGJhY2sgd2hlbiB0aGUgZm9jdXMgaXMgc2V0IGluIHRoZSBGaWVsZCBvciBvbmUgb2YgaXRzIGNoaWxkcmVuLlxuXHQgKiBAcGFyYW0gc291cmNlXG5cdCAqIEBwYXJhbSBmb2N1c0V2ZW50XG5cdCAqL1xuXHRwdWJsaWMgaGFuZGxlQ29udGVudEZvY3VzSW4oc291cmNlOiBGaWVsZCB8IE11bHRpVmFsdWVGaWVsZCwgZm9jdXNFdmVudD86IEZvY3VzRXZlbnQpOiB2b2lkIHtcblx0XHQvLyBXZSBzZW5kIHRoZSBldmVudCBvbmx5IGlmIHRoZSBmb2N1cyB3YXMgcHJldmlvdXNseSBvdXQgb2YgdGhlIEZpZWxkXG5cdFx0aWYgKHNvdXJjZS5pc0E8VG9rZW5pemVyPihcInNhcC5tLlRva2VuaXplclwiKSkge1xuXHRcdFx0c291cmNlID0gc291cmNlLmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0fVxuXHRcdGxldCB0YXJnZXRPdXRzaWRlT2ZDb250cm9sRG9tUmVmID0gZmFsc2U7XG5cdFx0aWYgKGZvY3VzRXZlbnQpIHtcblx0XHRcdHRhcmdldE91dHNpZGVPZkNvbnRyb2xEb21SZWYgPSAhc291cmNlLmdldERvbVJlZigpPy5jb250YWlucyhmb2N1c0V2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSk7XG5cdFx0fVxuXHRcdGlmIChzb3VyY2UuaXNBPE11bHRpVmFsdWVGaWVsZD4oXCJzYXAudWkubWRjLk11bHRpVmFsdWVGaWVsZFwiKSB8fCB0YXJnZXRPdXRzaWRlT2ZDb250cm9sRG9tUmVmKSB7XG5cdFx0XHQvLyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgbmV3bHkgZm9jdXNlZCBGaWVsZCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgb25lLCBidXQgdGhleSBzaGFyZSB0aGUgc2FtZSBmaWVsZEdyb3VwSURzXG5cdFx0XHQvLyAoZS5nLiBmaWVsZHMgaW4gZGlmZmVyZW50IHJvd3MgaW4gdGhlIHNhbWUgY29sdW1uIG9mIGEgdGFibGUpXG5cdFx0XHQvLyBJbiBzdWNoIGNhc2UsIHRoZSBmb2N1c091dCBoYW5kbGVyIHdhcyBub3QgY2FsbGVkIChiZWNhdXNlIHdlIHN0YXkgaW4gdGhlIHNhbWUgZmllbGRHcm91cElEKSwgc28gd2UgbmVlZCB0byBzZW5kIGEgZm9jdXNPdXQgZXZlbnQgbWFudWFsbHlcblx0XHRcdGNvbnN0IGxhc3RGb2N1c0lkID0gdGhpcy5nZXRMYXN0Rm9jdXNJZCgpO1xuXHRcdFx0aWYgKGxhc3RGb2N1c0lkICYmIGxhc3RGb2N1c0lkICE9PSBzb3VyY2UuZ2V0SWQoKSAmJiB0aGlzLmdldExhc3RGb2N1c0ZpZWxkR3JvdXBzKCkgPT09IHNvdXJjZS5nZXRGaWVsZEdyb3VwSWRzKCkuam9pbihcIixcIikpIHtcblx0XHRcdFx0Y29uc3QgbGFzdEZvY3VzZWQgPSBFbGVtZW50LmdldEVsZW1lbnRCeUlkKGxhc3RGb2N1c0lkKSBhcyBGaWVsZDtcblx0XHRcdFx0dGhpcz8uc2VuZEZvY3VzT3V0TWVzc2FnZShsYXN0Rm9jdXNlZCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuc2V0TGFzdEZvY3VzSW5mb3JtYXRpb24oc291cmNlKTtcblxuXHRcdFx0dGhpcy5zZW5kRm9jdXNJbk1lc3NhZ2Uoc291cmNlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGJhY2sgd2hlbiB0aGUgZm9jdXMgaXMgcmVtb3ZlZCBmcm9tIHRoZSBGaWVsZCBvciBvbmUgb2YgaXRzIGNoaWxkcmVuLlxuXHQgKiBAcGFyYW0gZmllbGRHcm91cEV2ZW50XG5cdCAqL1xuXHRwdWJsaWMgaGFuZGxlQ29udGVudEZvY3VzT3V0KGZpZWxkR3JvdXBFdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCk6IHZvaWQge1xuXHRcdGxldCBjb250cm9sOiBNYW5hZ2VkT2JqZWN0IHwgbnVsbCA9IGZpZWxkR3JvdXBFdmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoY29udHJvbC5pc0E8VG9rZW5pemVyPihcInNhcC5tLlRva2VuaXplclwiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHR9XG5cdFx0aWYgKCFjb250cm9sLmlzQTxNdWx0aVZhbHVlRmllbGQ+KFwic2FwLnVpLm1kYy5NdWx0aVZhbHVlRmllbGRcIikpIHtcblx0XHRcdHdoaWxlIChjb250cm9sICYmICFjb250cm9sPy5pc0E8RmllbGQ+KFwic2FwLmZlLm1hY3Jvcy5GaWVsZFwiKSkge1xuXHRcdFx0XHRjb250cm9sID0gY29udHJvbD8uZ2V0UGFyZW50KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWNvbnRyb2wpIHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBmaWVsZEdyb3VwSWRzID0gZmllbGRHcm91cEV2ZW50LmdldFBhcmFtZXRlcihcImZpZWxkR3JvdXBJZHNcIikgYXMgc3RyaW5nW107XG5cblx0XHQvLyBXZSBzZW5kIHRoZSBldmVudCBvbmx5IGlmIHRoZSB2YWxpZGF0ZWQgZmllbGRDcm91cCBjb3JyZXNwb25kcyB0byBhIGNvbGxhYm9yYXRpb24gZ3JvdXBcblx0XHRpZiAoXG5cdFx0XHRmaWVsZEdyb3VwSWRzLnNvbWUoKGdyb3VwSWQpID0+IHtcblx0XHRcdFx0cmV0dXJuIGdyb3VwSWQuc3RhcnRzV2l0aChDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCk7XG5cdFx0XHR9KVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgc291cmNlQ29udHJvbDogQ29udHJvbCA9IGZpZWxkR3JvdXBFdmVudC5nZXRTb3VyY2UoKTtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHRoZSBjb250cm9sIHRoYXQgc2VudCB0aGUgZXZlbnQgc3RpbGwgaGFzIHRoZSBmb2N1cyAob3Igb25lIG9mIGl0cyBjaGlsZHJlbikuXG5cdFx0XHQvLyBUaGlzIGNvdWxkIGhhcHBlbiBlLmcuIGlmIHRoZSB1c2VyIHByZXNzZWQgPEVudGVyPiB0byB2YWxpZGF0ZSB0aGUgaW5wdXQuXG5cdFx0XHRsZXQgY3VycmVudEZvY3VzZWRDb250cm9sOiBNYW5hZ2VkT2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZCA9IEVsZW1lbnQuZ2V0QWN0aXZlRWxlbWVudCgpO1xuXHRcdFx0d2hpbGUgKGN1cnJlbnRGb2N1c2VkQ29udHJvbCAmJiBjdXJyZW50Rm9jdXNlZENvbnRyb2wgIT09IHNvdXJjZUNvbnRyb2wpIHtcblx0XHRcdFx0Y3VycmVudEZvY3VzZWRDb250cm9sID0gY3VycmVudEZvY3VzZWRDb250cm9sLmdldFBhcmVudCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN1cnJlbnRGb2N1c2VkQ29udHJvbCAhPT0gc291cmNlQ29udHJvbCkge1xuXHRcdFx0XHQvLyBUaGUgY29udHJvbCB0aGF0IHNlbnQgdGhlIGV2ZW50IGlzbid0IGZvY3VzZWQgYW55bW9yZVxuXHRcdFx0XHR0aGlzLnNlbmRGb2N1c091dE1lc3NhZ2UoY29udHJvbCk7XG5cdFx0XHRcdGlmICh0aGlzLmdldExhc3RGb2N1c0lkKCkgPT09IGNvbnRyb2wuZ2V0SWQoKSkge1xuXHRcdFx0XHRcdHRoaXMuc2V0TGFzdEZvY3VzSW5mb3JtYXRpb24odW5kZWZpbmVkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpZCBvZiB0aGUgbGFzdCBmb2N1c2VkIEZpZWxkIChpZiBhbnkpLlxuXHQgKiBAcmV0dXJucyBJRFxuXHQgKi9cblx0cHJpdmF0ZSBnZXRMYXN0Rm9jdXNJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmxhc3RGb2N1c0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpZWxkZ3JvdXBzIG9mIHRoZSBsYXN0IGZvY3VzZWQgRmllbGQgKGlmIGFueSkuXG5cdCAqIEByZXR1cm5zIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZpZWxkZ3JvdXBzIHNlcGFyYXRlZCBieSAnLCdcblx0ICovXG5cdHByaXZhdGUgZ2V0TGFzdEZvY3VzRmllbGRHcm91cHMoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5sYXN0Rm9jdXNGaWVsZEdyb3Vwcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxhc3QgZm9jdXNlZCBGaWVsZCAoaWQgYW5kIGZpZWxkZ3JvdXBzKS5cblx0ICogQHBhcmFtIGZvY3VzZWRGaWVsZFxuXHQgKi9cblx0cHJpdmF0ZSBzZXRMYXN0Rm9jdXNJbmZvcm1hdGlvbihmb2N1c2VkRmllbGQ6IEZpZWxkIHwgTXVsdGlWYWx1ZUZpZWxkIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0dGhpcy5sYXN0Rm9jdXNJZCA9IGZvY3VzZWRGaWVsZD8uZ2V0SWQoKTtcblx0XHR0aGlzLmxhc3RGb2N1c0ZpZWxkR3JvdXBzID0gZm9jdXNlZEZpZWxkPy5nZXRGaWVsZEdyb3VwSWRzKCkuam9pbihcIixcIik7XG5cdH1cblxuXHQvKipcblx0ICogSWYgY29sbGFib3JhdGlvbiBpcyBlbmFibGVkLCBzZW5kIGEgTG9jayBjb2xsYWJvcmF0aW9uIG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSBmaWVsZHBBUElcblx0ICovXG5cdHByaXZhdGUgc2VuZEZvY3VzSW5NZXNzYWdlKGZpZWxkcEFQSTogRmllbGQgfCBNdWx0aVZhbHVlRmllbGQpOiB2b2lkIHtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uUGF0aCA9IHRoaXMuZ2V0Q29sbGFib3JhdGlvblBhdGgoZmllbGRwQVBJKTtcblxuXHRcdGlmIChjb2xsYWJvcmF0aW9uUGF0aCkge1xuXHRcdFx0dGhpcy5zZW5kKHsgYWN0aW9uOiBBY3Rpdml0eS5Mb2NrLCBjb250ZW50OiBjb2xsYWJvcmF0aW9uUGF0aCB9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSWYgY29sbGFib3JhdGlvbiBpcyBlbmFibGVkLCBzZW5kIGFuIFVubG9jayBjb2xsYWJvcmF0aW9uIG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSBmaWVsZHBBUElcblx0ICovXG5cdHByaXZhdGUgc2VuZEZvY3VzT3V0TWVzc2FnZShmaWVsZHBBUEk6IEZpZWxkIHwgTXVsdGlWYWx1ZUZpZWxkIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0aWYgKCFmaWVsZHBBUEkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvblBhdGggPSB0aGlzLmdldENvbGxhYm9yYXRpb25QYXRoKGZpZWxkcEFQSSk7XG5cdFx0aWYgKGNvbGxhYm9yYXRpb25QYXRoKSB7XG5cdFx0XHR0aGlzLnNlbmQoeyBhY3Rpb246IEFjdGl2aXR5LlVubG9jaywgY29udGVudDogY29sbGFib3JhdGlvblBhdGggfSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhdGggdXNlZCB0byBzZW5kIGNvbGxhYm9yYXRpb24gbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSBmaWVsZFxuXHQgKiBAcmV0dXJucyBUaGUgcGF0aCAob3IgdW5kZWZpbmVkIGlzIG5vIHZhbGlkIHBhdGggY291bGQgYmUgZm91bmQpXG5cdCAqL1xuXHRwcml2YXRlIGdldENvbGxhYm9yYXRpb25QYXRoKGZpZWxkOiBGaWVsZCB8IE11bHRpVmFsdWVGaWVsZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gTm90ZTogd2Ugc2VuZCBtZXNzYWdlcyBldmVuIGlmIHRoZSBjb250ZXh0IGlzIGluYWN0aXZlIChlbXB0eSBjcmVhdGlvbiByb3dzKSxcblx0XHQvLyBvdGhlcndpc2Ugd2UgY2FuJ3QgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIGxvY2tzIHdoZW4gdGhlIGNvbnRleHQgaXMgYWN0aXZhdGVkLlxuXHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gZmllbGQ/LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIWJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChmaWVsZC5pc0E8RmllbGQ+KFwic2FwLmZlLm1hY3Jvcy5GaWVsZFwiKSkge1xuXHRcdFx0aWYgKCFmaWVsZC5nZXRNYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgoKSkge1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmaWVsZFdyYXBwZXIgPSBmaWVsZC5jb250ZW50IGFzIEZpZWxkV3JhcHBlciB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChcblx0XHRcdFx0IVtGaWVsZEVkaXRNb2RlLkVkaXRhYmxlLCBGaWVsZEVkaXRNb2RlLkVkaXRhYmxlRGlzcGxheSwgRmllbGRFZGl0TW9kZS5FZGl0YWJsZVJlYWRPbmx5XS5pbmNsdWRlcyhcblx0XHRcdFx0XHRmaWVsZFdyYXBwZXI/LmdldFByb3BlcnR5KFwiZWRpdE1vZGVcIilcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIFRoZSBmaWVsZCBpcyBub3QgaW4gZWRpdCBtb2RlIC0tPiBubyBjb2xsYWJvcmF0aW9uIG1lc3NhZ2VzXG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBgJHtiaW5kaW5nQ29udGV4dC5nZXRQYXRoKCl9LyR7ZmllbGQuZ2V0TWFpblByb3BlcnR5UmVsYXRpdmVQYXRoKCl9YDtcblx0XHR9IGVsc2UgaWYgKGZpZWxkLmlzQTxNdWx0aVZhbHVlRmllbGQ+KFwic2FwLnVpLm1kYy5NdWx0aVZhbHVlRmllbGRcIikpIHtcblx0XHRcdGNvbnN0IGtleXBhdGggPSBmaWVsZC5nZXRCaW5kaW5nSW5mbyhcIml0ZW1zXCIpLnRlbXBsYXRlLmdldEJpbmRpbmdQYXRoKFwia2V5XCIpO1xuXHRcdFx0cmV0dXJuIGAke2JpbmRpbmdDb250ZXh0LmdldFBhdGgoKX0vJHtmaWVsZC5nZXRCaW5kaW5nSW5mbyhcIml0ZW1zXCIpLnBhdGh9LyR7a2V5cGF0aH1gO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZW5kKG1lc3NhZ2U6IHtcblx0XHRhY3Rpb246IEFjdGl2aXR5O1xuXHRcdGNvbnRlbnQ6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXHRcdHRyaWdnZXJlZEFjdGlvbk5hbWU/OiBzdHJpbmc7XG5cdFx0cmVmcmVzaExpc3RCaW5kaW5nPzogYm9vbGVhbjtcblx0XHRhY3Rpb25SZXF1ZXN0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW107XG5cdH0pOiB2b2lkIHtcblx0XHR0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5zZW5kKHRoaXMuZ2V0VmlldygpLCBtZXNzYWdlKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCkuaXNDb25uZWN0ZWQodGhpcy5nZXRWaWV3KCkpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGNvbm5lY3QoZHJhZnRSb290Q29udGV4dDogQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5jb25uZWN0KGRyYWZ0Um9vdENvbnRleHQsIHRoaXMuZ2V0VmlldygpIGFzIEZFVmlldyk7XG5cdH1cblxuXHRwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcblx0XHRjb25zdCB1aU1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJ1aVwiKSBhcyBKU09OTW9kZWw7XG5cdFx0dGhpcy5jbGVhbkRyYWZ0Um9vdCgpO1xuXHRcdHVpTW9kZWwuc2V0UHJvcGVydHkoXCIvaGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb25cIiwgdW5kZWZpbmVkKTtcblxuXHRcdGlmICh0aGlzLmlzQ29ubmVjdGVkKCkpIHtcblx0XHRcdHRoaXMuZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpLmRpc2Nvbm5lY3QodGhpcy5nZXRWaWV3KCkgYXMgRkVWaWV3KTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCkuaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCh0aGlzLmdldFZpZXcoKSk7XG5cdH1cblxuXHRwdWJsaWMgcmV0YWluQXN5bmNNZXNzYWdlcyhhY3Rpdml0eVBhdGhzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHJldHVybiB0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5yZXRhaW5Bc3luY01lc3NhZ2VzKHRoaXMuZ2V0VmlldygpLCBhY3Rpdml0eVBhdGhzKTtcblx0fVxuXG5cdHB1YmxpYyByZWxlYXNlQXN5bmNNZXNzYWdlcyhhY3Rpdml0eVBhdGhzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHJldHVybiB0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5yZWxlYXNlQXN5bmNNZXNzYWdlcyh0aGlzLmdldFZpZXcoKSwgYWN0aXZpdHlQYXRocyk7XG5cdH1cblxuXHRwdWJsaWMgdXBkYXRlTG9ja3NGb3JDb250ZXh0UGF0aChvbGRDb250ZXh0UGF0aDogc3RyaW5nLCBuZXdDb250ZXh0UGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpLnVwZGF0ZUxvY2tzRm9yQ29udGV4dFBhdGgodGhpcy5nZXRWaWV3KCksIG9sZENvbnRleHRQYXRoLCBuZXdDb250ZXh0UGF0aCk7XG5cdH1cblxuXHRwcml2YXRlIGdldEN1cnJlbnREcmFmdFJvb3RQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cdFx0cmV0dXJuIGludGVybmFsTW9kZWw/LmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpdmVEcmFmdFJvb3RQYXRoXCIpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXREcmFmdFVzZXJMaXN0UHJvbWlzZSgpOiBQcm9taXNlPERyYWZ0QWRtaW5Vc2VyW10+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRyZXR1cm4gaW50ZXJuYWxNb2RlbD8uZ2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGl2ZURyYWZ0VXNlckxpc3RQcm9taXNlXCIpO1xuXHR9XG5cblx0cHJpdmF0ZSBpc0luaXRpYWxTaGFyZSgpOiBib29sZWFuIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRyZXR1cm4gaW50ZXJuYWxNb2RlbD8uZ2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGl2ZURyYWZ0U2hhcmVJbml0aWFsXCIpID09PSB0cnVlO1xuXHR9XG5cblx0c2V0SW5pdGlhbFNoYXJlKGlzSW5pdGlhbDogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRpbnRlcm5hbE1vZGVsPy5zZXRQcm9wZXJ0eShcIi9jb2xsYWJvcmF0aXZlRHJhZnRTaGFyZUluaXRpYWxcIiwgaXNJbml0aWFsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBkcmFmdCByb290IGNvbnRleHQgZm9yIHRoZSBjb2xsYWJvcmF0aW9uLlxuXHQgKiBJdHMgcGF0aCBpcyBzdG9yZWQgaW4gdGhlIGludGVybmFsIG1vZGVsLCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGxhdGVyIHRvIGNoZWNrIGlmIHRoZSBjb2xsYWJvcmF0aW9uIGlzIGFjdGl2ZS5cblx0ICogSXQgYWxzbyByZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgdXNlcnMgaW52aXRlZCBpbiB0aGUgZHJhZnQgYW5kIHN0b3JlcyBpdCBpbiB0aGUgaW50ZXJuYWwgbW9kZWwuXG5cdCAqIEBwYXJhbSBkcmFmdFJvb3RDb250ZXh0IFRoZSBjb250ZXh0IGZvciB0aGUgZHJhZnQgcm9vdFxuXHQgKiBAcGFyYW0gZ3JvdXBJZCBUaGUgZ3JvdXBJZCB0byByZXF1ZXN0IHRoZSBsaXN0IG9mIHVzZXJzIGludml0ZWQgaW4gdGhlIGRyYWZ0XG5cdCAqL1xuXHRwcml2YXRlIHNldERyYWZ0Um9vdChkcmFmdFJvb3RDb250ZXh0OiBDb250ZXh0LCBncm91cElkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0bGV0IHVzZXJMaXN0UHJvbWlzZTogUHJvbWlzZTxEcmFmdEFkbWluVXNlcltdPjtcblx0XHRpZiAoZHJhZnRSb290Q29udGV4dC5nZXRPYmplY3QoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdEFkbWluaXN0cmF0aXZlVXNlclwiKSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR1c2VyTGlzdFByb21pc2UgPSBkcmFmdFJvb3RDb250ZXh0LnJlcXVlc3RPYmplY3QoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdEFkbWluaXN0cmF0aXZlVXNlclwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dXNlckxpc3RQcm9taXNlID0gZHJhZnRSb290Q29udGV4dFxuXHRcdFx0XHQucmVxdWVzdFNpZGVFZmZlY3RzKFtcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0QWRtaW5pc3RyYXRpdmVVc2VyXCJdLCBncm91cElkKVxuXHRcdFx0XHQudGhlbihhc3luYyAoKSA9PiBkcmFmdFJvb3RDb250ZXh0LnJlcXVlc3RPYmplY3QoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdEFkbWluaXN0cmF0aXZlVXNlclwiKSk7XG5cdFx0fVxuXG5cdFx0aW50ZXJuYWxNb2RlbD8uc2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGl2ZURyYWZ0VXNlckxpc3RQcm9taXNlXCIsIHVzZXJMaXN0UHJvbWlzZSk7XG5cdFx0aW50ZXJuYWxNb2RlbD8uc2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGl2ZURyYWZ0Um9vdFBhdGhcIiwgZHJhZnRSb290Q29udGV4dC5nZXRQYXRoKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFucyB0aGUgZHJhZnQgcm9vdCBjb250ZXh0IGFuZCB0aGUgbGlzdCBvZiB1c2VycyBpbnZpdGVkIGluIHRoZSBkcmFmdC5cblx0ICogVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgY29sbGFib3JhdGlvbiBpcyBkZWFjdGl2YXRlZCBvciB3aGVuIHRoZSBkcmFmdCByb290IGNvbnRleHQgY2hhbmdlcy5cblx0ICovXG5cdHByaXZhdGUgY2xlYW5EcmFmdFJvb3QoKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdGludGVybmFsTW9kZWw/LnNldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpdmVEcmFmdFVzZXJMaXN0UHJvbWlzZVwiLCB1bmRlZmluZWQpO1xuXHRcdGludGVybmFsTW9kZWw/LnNldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpdmVEcmFmdFJvb3RQYXRoXCIsIHVuZGVmaW5lZCk7XG5cdH1cblxuXHQvKipcblx0ICogQWN0aXZhdGVzIHRoZSBjb2xsYWJvcmF0aW9uIGZvciB0aGUgZ2l2ZW4gcGFnZSBjb250ZXh0LlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyBhdXRob3JpemVkIHRvIGNvbGxhYm9yYXRlIG9uIHRoZSBkcmFmdCwgYW5kIHNldHMgdGhlIGZsYWcgaW4gdGhlIFVJIG1vZGVsIGFjY29yZGluZ2x5LlxuXHQgKiBAcGFyYW0gcGFnZUNvbnRleHQgVGhlIHBhZ2UgY29udGV4dCAobm90IG5lY2Vzc2FyaWx5IGEgZHJhZnQgcm9vdClcblx0ICogQHBhcmFtIGlzQWN0aXZlRW50aXR5IElzIHRoZSBjb250ZXh0IHRoZSBhY3RpdmUgb25lIChub3QgYSBkcmFmdCk/XG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHVzZXIgaXMgYXV0aG9yaXplZCB0byBjb2xsYWJvcmF0ZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0YXN5bmMgYWN0aXZhdGVDb2xsYWJvcmF0aW9uKHBhZ2VDb250ZXh0OiBDb250ZXh0LCBpc0FjdGl2ZUVudGl0eTogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB1aU1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJ1aVwiKSBhcyBKU09OTW9kZWw7XG5cdFx0XHRpZiAoaXNBY3RpdmVFbnRpdHkpIHtcblx0XHRcdFx0Ly8gV2UncmUgbm90IGluIGEgZHJhZnQgLT4gZGlzY29ubmVjdCBpZiB3ZSB3ZXJlIGNvbm5lY3RlZCBiZWZvcmVcblx0XHRcdFx0dWlNb2RlbC5zZXRQcm9wZXJ0eShcIi9oYXNDb2xsYWJvcmF0aW9uQXV0aG9yaXphdGlvblwiLCB1bmRlZmluZWQpO1xuXHRcdFx0XHR0aGlzLmRpc2Nvbm5lY3QoKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkcmFmdFJvb3RDb250ZXh0ID0gQ29tbW9uVXRpbHMuZmluZE9yQ3JlYXRlUm9vdENvbnRleHQoXG5cdFx0XHRcdHBhZ2VDb250ZXh0LFxuXHRcdFx0XHRcIkRyYWZ0XCIsXG5cdFx0XHRcdHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0XHR0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCksXG5cdFx0XHRcdHsgJCRncm91cElkOiBwYWdlQ29udGV4dC5nZXRHcm91cElkKCksICRzZWxlY3Q6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJcIiB9XG5cdFx0XHQpLnJvb3RDb250ZXh0O1xuXHRcdFx0aWYgKCFkcmFmdFJvb3RDb250ZXh0KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkbid0IGZpbmQgZHJhZnQgcm9vdCBjb250ZXh0IGZvciBlbmFibGluZyBjb2xsYWJvcmF0aW9uXCIpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGN1cnJlbnREcmFmdFJvb3RQYXRoID0gdGhpcy5nZXRDdXJyZW50RHJhZnRSb290UGF0aCgpO1xuXHRcdFx0aWYgKGN1cnJlbnREcmFmdFJvb3RQYXRoICE9PSBkcmFmdFJvb3RDb250ZXh0LmdldFBhdGgoKSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFx0YFVuZXhwZWN0ZWQgcGF0aCBmb3IgY2hlY2tpbmcgY29sbGFib3JhdGlvbiBhdXRob3JpemF0aW9uczogJHtkcmFmdFJvb3RDb250ZXh0LmdldFBhdGgoKX0gKGV4cGVjdGluZyAke2N1cnJlbnREcmFmdFJvb3RQYXRofSlgXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHVzZXJzSW52aXRlZCA9IGF3YWl0IHRoaXMuZ2V0RHJhZnRVc2VyTGlzdFByb21pc2UoKTtcblx0XHRcdGlmICh1aU1vZGVsLmdldFByb3BlcnR5KFwiL2hhc0NvbGxhYm9yYXRpb25BdXRob3JpemF0aW9uXCIpICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuIHVpTW9kZWwuZ2V0UHJvcGVydHkoXCIvaGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb25cIik7IC8vIEFscmVhZHkgY2hlY2tlZCwgYWxsIGdvb2Rcblx0XHRcdH1cblx0XHRcdGNvbnN0IG1lID0gQ29sbGFib3JhdGlvblV0aWxzLmdldE1lKHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKSk7XG5cdFx0XHRjb25zdCBoYXNNZSA9IHVzZXJzSW52aXRlZD8uc29tZSgoc2luZ2xlVXNlcikgPT4gc2luZ2xlVXNlci5Vc2VySUQgPT09IG1lLmlkKSA/PyBmYWxzZTtcblx0XHRcdHVpTW9kZWwuc2V0UHJvcGVydHkoXCIvaGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb25cIiwgaGFzTWUpO1xuXG5cdFx0XHRpZiAoaGFzTWUpIHtcblx0XHRcdFx0dGhpcy5jb25uZWN0KGRyYWZ0Um9vdENvbnRleHQpLmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoZW4gY29ubmVjdGluZyB0byB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBcIiArIGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuaXNDb25uZWN0ZWQoKSkge1xuXHRcdFx0XHQvLyBEaXNjb25uZWN0IHRoZSB3ZWJzb2NrZXQgYnV0IGtlZXAgdGhlIHByb3BlcnRpZXMgaW4gdGhlIGludGVybmFsIG1vZGVsIChzbyBkb24ndCBjYWxsIHRoaXMuZGlzY29ubmVjdClcblx0XHRcdFx0dGhpcy5nZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCkuZGlzY29ubmVjdCh0aGlzLmdldFZpZXcoKSBhcyBGRVZpZXcpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGhhc01lO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgYWN0aXZhdGluZyB0aGUgY29sbGFib3JhdGl2ZSBkcmFmdCBcIiArIGVycik7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgdGhlIGN1cnJlbnQgdXNlciBpbiB0aGUgZHJhZnQgcm9vdCBjb250ZXh0LlxuXHQgKiBAcGFyYW0gcGFnZUNvbnRleHQgVGhlIHBhZ2UgY29udGV4dCAobm90IG5lY2Vzc2FyaWx5IGEgZHJhZnQgcm9vdClcblx0ICovXG5cdGFzeW5jIGV4ZWN1dGVTaGFyZUFjdGlvbihwYWdlQ29udGV4dDogQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBkcmFmdFJvb3RDb250ZXh0ID0gQ29tbW9uVXRpbHMuZmluZE9yQ3JlYXRlUm9vdENvbnRleHQoXG5cdFx0XHRcdHBhZ2VDb250ZXh0LFxuXHRcdFx0XHRcIkRyYWZ0XCIsXG5cdFx0XHRcdHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0XHR0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCksXG5cdFx0XHRcdHsgJCRncm91cElkOiBwYWdlQ29udGV4dC5nZXRHcm91cElkKCksICRzZWxlY3Q6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJcIiB9XG5cdFx0XHQpLnJvb3RDb250ZXh0O1xuXHRcdFx0aWYgKCFkcmFmdFJvb3RDb250ZXh0KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkbid0IGZpbmQgZHJhZnQgcm9vdCBjb250ZXh0IGZvciBlbmFibGluZyBjb2xsYWJvcmF0aW9uXCIpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGN1cnJlbnREcmFmdFJvb3RQYXRoID0gdGhpcy5nZXRDdXJyZW50RHJhZnRSb290UGF0aCgpO1xuXHRcdFx0aWYgKGN1cnJlbnREcmFmdFJvb3RQYXRoICE9PSB1bmRlZmluZWQgJiYgY3VycmVudERyYWZ0Um9vdFBhdGggIT09IGRyYWZ0Um9vdENvbnRleHQuZ2V0UGF0aCgpKSB7XG5cdFx0XHRcdC8vIENvbGxhYm9yYXRpb24gd2FzIGVuYWJsZWQgb24gYW5vdGhlciBkcmFmdCAtLT4gZGlzY29ubmVjdCBmaXJzdFxuXHRcdFx0XHR0aGlzLmRpc2Nvbm5lY3QoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGN1cnJlbnREcmFmdFJvb3RQYXRoID09PSBkcmFmdFJvb3RDb250ZXh0LmdldFBhdGgoKSkge1xuXHRcdFx0XHRyZXR1cm47IC8vIHNoYXJlIHdhcyBhbHJlYWR5IGNhbGxlZCBiZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gY2FsbCB0aGUgU2hhcmUgYWN0aW9uIGFnYWluXG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHNoYXJlUHJvbWlzZSA9IHRoaXMuaXNJbml0aWFsU2hhcmUoKVxuXHRcdFx0XHQ/IHNoYXJlT2JqZWN0KGRyYWZ0Um9vdENvbnRleHQsIHVuZGVmaW5lZCwgZHJhZnRSb290Q29udGV4dC5nZXRHcm91cElkKCkpXG5cdFx0XHRcdDogYWRkU2VsZihkcmFmdFJvb3RDb250ZXh0KTtcblx0XHRcdHRoaXMuc2V0SW5pdGlhbFNoYXJlKGZhbHNlKTsgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2hhcmUgZmxhZywgc28gdGhhdCB3ZSBkb24ndCBjYWxsIHRoZSBpbml0aWFsIFNoYXJlIGFjdGlvbiBhZ2FpblxuXHRcdFx0dGhpcy5zZXREcmFmdFJvb3QoZHJhZnRSb290Q29udGV4dCwgZHJhZnRSb290Q29udGV4dC5nZXRHcm91cElkKCkpO1xuXHRcdFx0YXdhaXQgc2hhcmVQcm9taXNlO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgYWRkaW5nIGN1cnJlbnQgdXNlciBpbiB0aGUgY29sbGFib3JhdGl2ZSBkcmFmdCBcIiArIGVycik7XG5cdFx0fVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQTJCcUJBLGtCQUFrQixJQUFBQyxJQUFBLEdBRHRDQyxjQUFjLENBQUMscURBQXFELENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLDBCQUFBQyxxQkFBQTtJQUFBLFNBQUFKLG1CQUFBO01BQUEsT0FBQUkscUJBQUEsQ0FBQUMsS0FBQSxPQUFBQyxTQUFBO0lBQUE7SUFBQUMsUUFBQSxHQUFBUCxrQkFBQTtJQUFBUSxjQUFBLENBQUFSLGtCQUFBLEVBQUFJLHFCQUFBO0lBQUEsSUFBQUssTUFBQSxHQUFBVCxrQkFBQSxDQUFBVSxTQUFBO0lBQUFELE1BQUEsQ0FVN0RFLDRCQUE0QixHQUFwQyxTQUFRQSw0QkFBNEJBLENBQUEsRUFBOEI7TUFDakUsSUFBSSxDQUFDQyx5QkFBeUIsR0FBRyxJQUFJLENBQUNBLHlCQUF5QixJQUFJLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDSCw0QkFBNEIsQ0FBQyxDQUFDO01BQzdILE9BQU8sSUFBSSxDQUFDQyx5QkFBeUI7SUFDdEM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFILE1BQUEsQ0FLT00sb0JBQW9CLEdBQTNCLFNBQU9BLG9CQUFvQkEsQ0FBQ0MsTUFBK0IsRUFBRUMsVUFBdUIsRUFBUTtNQUMzRjtNQUNBLElBQUlELE1BQU0sQ0FBQ0UsR0FBRyxDQUFZLGlCQUFpQixDQUFDLEVBQUU7UUFDN0NGLE1BQU0sR0FBR0EsTUFBTSxDQUFDRyxTQUFTLENBQUMsQ0FBQyxFQUFFQSxTQUFTLENBQUMsQ0FBb0I7TUFDNUQ7TUFDQSxJQUFJQyw0QkFBNEIsR0FBRyxLQUFLO01BQ3hDLElBQUlILFVBQVUsRUFBRTtRQUNmRyw0QkFBNEIsR0FBRyxDQUFDSixNQUFNLENBQUNLLFNBQVMsQ0FBQyxDQUFD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
342
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfQmFzZUNvbnRyb2xsZXJFeHRlbnMiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlIiwiY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSIsImJhc2UiLCJnZXRBcHBDb21wb25lbnQiLCJoYW5kbGVDb250ZW50Rm9jdXNJbiIsInNvdXJjZSIsImZvY3VzRXZlbnQiLCJpc0EiLCJnZXRQYXJlbnQiLCJ0YXJnZXRPdXRzaWRlT2ZDb250cm9sRG9tUmVmIiwiZ2V0RG9tUmVmIiwiY29udGFpbnMiLCJyZWxhdGVkVGFyZ2V0IiwibGFzdEZvY3VzSWQiLCJnZXRMYXN0Rm9jdXNJZCIsImdldElkIiwiZ2V0TGFzdEZvY3VzRmllbGRHcm91cHMiLCJnZXRGaWVsZEdyb3VwSWRzIiwiam9pbiIsImxhc3RGb2N1c2VkIiwiRWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwic2VuZEZvY3VzT3V0TWVzc2FnZSIsInNldExhc3RGb2N1c0luZm9ybWF0aW9uIiwic2VuZEZvY3VzSW5NZXNzYWdlIiwiaGFuZGxlQ29udGVudEZvY3VzT3V0IiwiZmllbGRHcm91cEV2ZW50IiwiY29udHJvbCIsImdldFNvdXJjZSIsImZpZWxkR3JvdXBJZHMiLCJnZXRQYXJhbWV0ZXIiLCJzb21lIiwiZ3JvdXBJZCIsInN0YXJ0c1dpdGgiLCJDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCIsInNvdXJjZUNvbnRyb2wiLCJjdXJyZW50Rm9jdXNlZENvbnRyb2wiLCJnZXRBY3RpdmVFbGVtZW50IiwidW5kZWZpbmVkIiwibGFzdEZvY3VzRmllbGRHcm91cHMiLCJmb2N1c2VkRmllbGQiLCJmaWVsZHBBUEkiLCJjb2xsYWJvcmF0aW9uUGF0aCIsImdldENvbGxhYm9yYXRpb25QYXRoIiwic2VuZCIsImFjdGlvbiIsIkFjdGl2aXR5IiwiTG9jayIsImNvbnRlbnQiLCJVbmxvY2siLCJmaWVsZCIsImJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgiLCJmaWVsZFdyYXBwZXIiLCJGaWVsZEVkaXRNb2RlIiwiRWRpdGFibGUiLCJFZGl0YWJsZURpc3BsYXkiLCJFZGl0YWJsZVJlYWRPbmx5IiwiaW5jbHVkZXMiLCJnZXRQcm9wZXJ0eSIsImdldFBhdGgiLCJrZXlwYXRoIiwiZ2V0QmluZGluZ0luZm8iLCJ0ZW1wbGF0ZSIsImdldEJpbmRpbmdQYXRoIiwicGF0aCIsIm1lc3NhZ2UiLCJnZXRWaWV3IiwiaXNDb25uZWN0ZWQiLCJjb25uZWN0IiwiZHJhZnRSb290Q29udGV4dCIsImRpc2Nvbm5lY3QiLCJ1aU1vZGVsIiwiZ2V0TW9kZWwiLCJjbGVhbkRyYWZ0Um9vdCIsInNldFByb3BlcnR5IiwiaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCIsInJldGFpbkFzeW5jTWVzc2FnZXMiLCJhY3Rpdml0eVBhdGhzIiwicmVsZWFzZUFzeW5jTWVzc2FnZXMiLCJ1cGRhdGVMb2Nrc0ZvckNvbnRleHRQYXRoIiwib2xkQ29udGV4dFBhdGgiLCJuZXdDb250ZXh0UGF0aCIsImdldEN1cnJlbnREcmFmdFJvb3RQYXRoIiwiaW50ZXJuYWxNb2RlbCIsImdldERyYWZ0VXNlckxpc3RQcm9taXNlIiwiaXNJbml0aWFsU2hhcmUiLCJzZXRJbml0aWFsU2hhcmUiLCJpc0luaXRpYWwiLCJzZXREcmFmdFJvb3QiLCJ1c2VyTGlzdFByb21pc2UiLCJnZXRPYmplY3QiLCJyZXF1ZXN0T2JqZWN0IiwicmVxdWVzdFNpZGVFZmZlY3RzIiwidGhlbiIsImFjdGl2YXRlQ29sbGFib3JhdGlvbiIsInBhZ2VDb250ZXh0IiwiaXNBY3RpdmVFbnRpdHkiLCJDb21tb25VdGlscyIsImZpbmRPckNyZWF0ZVJvb3RDb250ZXh0IiwiJCRncm91cElkIiwiZ2V0R3JvdXBJZCIsIiRzZWxlY3QiLCJyb290Q29udGV4dCIsIkxvZyIsImVycm9yIiwiY3VycmVudERyYWZ0Um9vdFBhdGgiLCJ1c2Vyc0ludml0ZWQiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiaGFzTWUiLCJzaW5nbGVVc2VyIiwiVXNlcklEIiwiaWQiLCJjYXRjaCIsImVyciIsImV4ZWN1dGVTaGFyZUFjdGlvbiIsInNoYXJlUHJvbWlzZSIsInNoYXJlT2JqZWN0IiwiYWRkU2VsZiIsIkJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb2xsYWJvcmF0aXZlRHJhZnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEZpZWxkIGZyb20gXCJzYXAvZmUvbWFjcm9zL0ZpZWxkXCI7XG5pbXBvcnQgdHlwZSBGaWVsZFdyYXBwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmllbGRXcmFwcGVyXCI7XG5pbXBvcnQgdHlwZSBUb2tlbml6ZXIgZnJvbSBcInNhcC9tL1Rva2VuaXplclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sJFZhbGlkYXRlRmllbGRHcm91cEV2ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSBNdWx0aVZhbHVlRmllbGQgZnJvbSBcInNhcC91aS9tZGMvTXVsdGlWYWx1ZUZpZWxkXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcIi4uL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwiLi4vUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9jb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgRmllbGRFZGl0TW9kZSB9IGZyb20gXCIuLi90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCIuL0Jhc2VDb250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgeyBBY3Rpdml0eSwgQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXgsIENvbGxhYm9yYXRpb25VdGlscywgYWRkU2VsZiwgc2hhcmVPYmplY3QgfSBmcm9tIFwiLi9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcblxudHlwZSBEcmFmdEFkbWluVXNlciA9IHtcblx0RHJhZnRFbnRpdHlUeXBlOiBzdHJpbmc7XG5cdERyYWZ0VVVJRDogc3RyaW5nO1xuXHRVc2VySUQ6IHN0cmluZztcbn07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQmFzZUNvbnRyb2xsZXJFeHRlbnNpb24ge1xuXHRwcml2YXRlIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRwcml2YXRlIGxhc3RGb2N1c0lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSBsYXN0Rm9jdXNGaWVsZEdyb3Vwczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSE6IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U7XG5cblx0cHJpdmF0ZSBnZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCk6IENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2Uge1xuXHRcdHRoaXMuY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSA9IHRoaXMuY29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSA/PyB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpO1xuXHRcdHJldHVybiB0aGlzLmNvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2U7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGJhY2sgd2hlbiB0aGUgZm9jdXMgaXMgc2V0IGluIHRoZSBGaWVsZCBvciBvbmUgb2YgaXRzIGNoaWxkcmVuLlxuXHQgKiBAcGFyYW0gc291cmNlXG5cdCAqIEBwYXJhbSBmb2N1c0V2ZW50XG5cdCAqL1xuXHRwdWJsaWMgaGFuZGxlQ29udGVudEZvY3VzSW4oc291cmNlOiBGaWVsZCB8IE11bHRpVmFsdWVGaWVsZCwgZm9jdXNFdmVudD86IEZvY3VzRXZlbnQpOiB2b2lkIHtcblx0XHQvLyBXZSBzZW5kIHRoZSBldmVudCBvbmx5IGlmIHRoZSBmb2N1cyB3YXMgcHJldmlvdXNseSBvdXQgb2YgdGhlIEZpZWxkXG5cdFx0aWYgKHNvdXJjZS5pc0E8VG9rZW5pemVyPihcInNhcC5tLlRva2VuaXplclwiKSkge1xuXHRcdFx0c291cmNlID0gc291cmNlLmdldFBhcmVudCgpPy5nZXRQYXJlbnQoKSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0fVxuXHRcdGxldCB0YXJnZXRPdXRzaWRlT2ZDb250cm9sRG9tUmVmID0gZmFsc2U7XG5cdFx0aWYgKGZvY3VzRXZlbnQpIHtcblx0XHRcdHRhcmdldE91dHNpZGVPZkNvbnRyb2xEb21SZWYgPSAhc291cmNlLmdldERvbVJlZigpPy5jb250YWlucyhmb2N1c0V2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSk7XG5cdFx0fVxuXHRcdGlmIChzb3VyY2UuaXNBPE11bHRpVmFsdWVGaWVsZD4oXCJzYXAudWkubWRjLk11bHRpVmFsdWVGaWVsZFwiKSB8fCB0YXJnZXRPdXRzaWRlT2ZDb250cm9sRG9tUmVmKSB7XG5cdFx0XHQvLyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgbmV3bHkgZm9jdXNlZCBGaWVsZCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgb25lLCBidXQgdGhleSBzaGFyZSB0aGUgc2FtZSBmaWVsZEdyb3VwSURzXG5cdFx0XHQvLyAoZS5nLiBmaWVsZHMgaW4gZGlmZmVyZW50IHJvd3MgaW4gdGhlIHNhbWUgY29sdW1uIG9mIGEgdGFibGUpXG5cdFx0XHQvLyBJbiBzdWNoIGNhc2UsIHRoZSBmb2N1c091dCBoYW5kbGVyIHdhcyBub3QgY2FsbGVkIChiZWNhdXNlIHdlIHN0YXkgaW4gdGhlIHNhbWUgZmllbGRHcm91cElEKSwgc28gd2UgbmVlZCB0byBzZW5kIGEgZm9jdXNPdXQgZXZlbnQgbWFudWFsbHlcblx0XHRcdGNvbnN0IGxhc3RGb2N1c0lkID0gdGhpcy5nZXRMYXN0Rm9jdXNJZCgpO1xuXHRcdFx0aWYgKGxhc3RGb2N1c0lkICYmIGxhc3RGb2N1c0lkICE9PSBzb3VyY2UuZ2V0SWQoKSAmJiB0aGlzLmdldExhc3RGb2N1c0ZpZWxkR3JvdXBzKCkgPT09IHNvdXJjZS5nZXRGaWVsZEdyb3VwSWRzKCkuam9pbihcIixcIikpIHtcblx0XHRcdFx0Y29uc3QgbGFzdEZvY3VzZWQgPSBFbGVtZW50LmdldEVsZW1lbnRCeUlkKGxhc3RGb2N1c0lkKSBhcyBGaWVsZDtcblx0XHRcdFx0dGhpcz8uc2VuZEZvY3VzT3V0TWVzc2FnZShsYXN0Rm9jdXNlZCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuc2V0TGFzdEZvY3VzSW5mb3JtYXRpb24oc291cmNlKTtcblxuXHRcdFx0dGhpcy5zZW5kRm9jdXNJbk1lc3NhZ2Uoc291cmNlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGJhY2sgd2hlbiB0aGUgZm9jdXMgaXMgcmVtb3ZlZCBmcm9tIHRoZSBGaWVsZCBvciBvbmUgb2YgaXRzIGNoaWxkcmVuLlxuXHQgKiBAcGFyYW0gZmllbGRHcm91cEV2ZW50XG5cdCAqL1xuXHRwdWJsaWMgaGFuZGxlQ29udGVudEZvY3VzT3V0KGZpZWxkR3JvdXBFdmVudDogQ29udHJvbCRWYWxpZGF0ZUZpZWxkR3JvdXBFdmVudCk6IHZvaWQge1xuXHRcdGxldCBjb250cm9sOiBNYW5hZ2VkT2JqZWN0IHwgbnVsbCA9IGZpZWxkR3JvdXBFdmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoY29udHJvbC5pc0E8VG9rZW5pemVyPihcInNhcC5tLlRva2VuaXplclwiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHR9XG5cdFx0aWYgKCFjb250cm9sLmlzQTxNdWx0aVZhbHVlRmllbGQ+KFwic2FwLnVpLm1kYy5NdWx0aVZhbHVlRmllbGRcIikpIHtcblx0XHRcdHdoaWxlIChjb250cm9sICYmICFjb250cm9sPy5pc0E8RmllbGQ+KFwic2FwLmZlLm1hY3Jvcy5GaWVsZFwiKSkge1xuXHRcdFx0XHRjb250cm9sID0gY29udHJvbD8uZ2V0UGFyZW50KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWNvbnRyb2wpIHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBmaWVsZEdyb3VwSWRzID0gZmllbGRHcm91cEV2ZW50LmdldFBhcmFtZXRlcihcImZpZWxkR3JvdXBJZHNcIikgYXMgc3RyaW5nW107XG5cblx0XHQvLyBXZSBzZW5kIHRoZSBldmVudCBvbmx5IGlmIHRoZSB2YWxpZGF0ZWQgZmllbGRDcm91cCBjb3JyZXNwb25kcyB0byBhIGNvbGxhYm9yYXRpb24gZ3JvdXBcblx0XHRpZiAoXG5cdFx0XHRmaWVsZEdyb3VwSWRzLnNvbWUoKGdyb3VwSWQpID0+IHtcblx0XHRcdFx0cmV0dXJuIGdyb3VwSWQuc3RhcnRzV2l0aChDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCk7XG5cdFx0XHR9KVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgc291cmNlQ29udHJvbDogQ29udHJvbCA9IGZpZWxkR3JvdXBFdmVudC5nZXRTb3VyY2UoKTtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHRoZSBjb250cm9sIHRoYXQgc2VudCB0aGUgZXZlbnQgc3RpbGwgaGFzIHRoZSBmb2N1cyAob3Igb25lIG9mIGl0cyBjaGlsZHJlbikuXG5cdFx0XHQvLyBUaGlzIGNvdWxkIGhhcHBlbiBlLmcuIGlmIHRoZSB1c2VyIHByZXNzZWQgPEVudGVyPiB0byB2YWxpZGF0ZSB0aGUgaW5wdXQuXG5cdFx0XHRsZXQgY3VycmVudEZvY3VzZWRDb250cm9sOiBNYW5hZ2VkT2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZCA9IEVsZW1lbnQuZ2V0QWN0aXZlRWxlbWVudCgpO1xuXHRcdFx0d2hpbGUgKGN1cnJlbnRGb2N1c2VkQ29udHJvbCAmJiBjdXJyZW50Rm9jdXNlZENvbnRyb2wgIT09IHNvdXJjZUNvbnRyb2wpIHtcblx0XHRcdFx0Y3VycmVudEZvY3VzZWRDb250cm9sID0gY3VycmVudEZvY3VzZWRDb250cm9sLmdldFBhcmVudCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGN1cnJlbnRGb2N1c2VkQ29udHJvbCAhPT0gc291cmNlQ29udHJvbCkge1xuXHRcdFx0XHQvLyBUaGUgY29udHJvbCB0aGF0IHNlbnQgdGhlIGV2ZW50IGlzbid0IGZvY3VzZWQgYW55bW9yZVxuXHRcdFx0XHR0aGlzLnNlbmRGb2N1c091dE1lc3NhZ2UoY29udHJvbCk7XG5cdFx0XHRcdGlmICh0aGlzLmdldExhc3RGb2N1c0lkKCkgPT09IGNvbnRyb2wuZ2V0SWQoKSkge1xuXHRcdFx0XHRcdHRoaXMuc2V0TGFzdEZvY3VzSW5mb3JtYXRpb24odW5kZWZpbmVkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpZCBvZiB0aGUgbGFzdCBmb2N1c2VkIEZpZWxkIChpZiBhbnkpLlxuXHQgKiBAcmV0dXJucyBJRFxuXHQgKi9cblx0cHJpdmF0ZSBnZXRMYXN0Rm9jdXNJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmxhc3RGb2N1c0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGZpZWxkZ3JvdXBzIG9mIHRoZSBsYXN0IGZvY3VzZWQgRmllbGQgKGlmIGFueSkuXG5cdCAqIEByZXR1cm5zIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZpZWxkZ3JvdXBzIHNlcGFyYXRlZCBieSAnLCdcblx0ICovXG5cdHByaXZhdGUgZ2V0TGFzdEZvY3VzRmllbGRHcm91cHMoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5sYXN0Rm9jdXNGaWVsZEdyb3Vwcztcblx0fVxuXG5cdC8qKlxuXHQgKiBTdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxhc3QgZm9jdXNlZCBGaWVsZCAoaWQgYW5kIGZpZWxkZ3JvdXBzKS5cblx0ICogQHBhcmFtIGZvY3VzZWRGaWVsZFxuXHQgKi9cblx0cHJpdmF0ZSBzZXRMYXN0Rm9jdXNJbmZvcm1hdGlvbihmb2N1c2VkRmllbGQ6IEZpZWxkIHwgTXVsdGlWYWx1ZUZpZWxkIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0dGhpcy5sYXN0Rm9jdXNJZCA9IGZvY3VzZWRGaWVsZD8uZ2V0SWQoKTtcblx0XHR0aGlzLmxhc3RGb2N1c0ZpZWxkR3JvdXBzID0gZm9jdXNlZEZpZWxkPy5nZXRGaWVsZEdyb3VwSWRzKCkuam9pbihcIixcIik7XG5cdH1cblxuXHQvKipcblx0ICogSWYgY29sbGFib3JhdGlvbiBpcyBlbmFibGVkLCBzZW5kIGEgTG9jayBjb2xsYWJvcmF0aW9uIG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSBmaWVsZHBBUElcblx0ICovXG5cdHByaXZhdGUgc2VuZEZvY3VzSW5NZXNzYWdlKGZpZWxkcEFQSTogRmllbGQgfCBNdWx0aVZhbHVlRmllbGQpOiB2b2lkIHtcblx0XHRjb25zdCBjb2xsYWJvcmF0aW9uUGF0aCA9IHRoaXMuZ2V0Q29sbGFib3JhdGlvblBhdGgoZmllbGRwQVBJKTtcblxuXHRcdGlmIChjb2xsYWJvcmF0aW9uUGF0aCkge1xuXHRcdFx0dGhpcy5zZW5kKHsgYWN0aW9uOiBBY3Rpdml0eS5Mb2NrLCBjb250ZW50OiBjb2xsYWJvcmF0aW9uUGF0aCB9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSWYgY29sbGFib3JhdGlvbiBpcyBlbmFibGVkLCBzZW5kIGFuIFVubG9jayBjb2xsYWJvcmF0aW9uIG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSBmaWVsZHBBUElcblx0ICovXG5cdHByaXZhdGUgc2VuZEZvY3VzT3V0TWVzc2FnZShmaWVsZHBBUEk6IEZpZWxkIHwgTXVsdGlWYWx1ZUZpZWxkIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0aWYgKCFmaWVsZHBBUEkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgY29sbGFib3JhdGlvblBhdGggPSB0aGlzLmdldENvbGxhYm9yYXRpb25QYXRoKGZpZWxkcEFQSSk7XG5cdFx0aWYgKGNvbGxhYm9yYXRpb25QYXRoKSB7XG5cdFx0XHR0aGlzLnNlbmQoeyBhY3Rpb246IEFjdGl2aXR5LlVubG9jaywgY29udGVudDogY29sbGFib3JhdGlvblBhdGggfSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhdGggdXNlZCB0byBzZW5kIGNvbGxhYm9yYXRpb24gbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSBmaWVsZFxuXHQgKiBAcmV0dXJucyBUaGUgcGF0aCAob3IgdW5kZWZpbmVkIGlzIG5vIHZhbGlkIHBhdGggY291bGQgYmUgZm91bmQpXG5cdCAqL1xuXHRwcml2YXRlIGdldENvbGxhYm9yYXRpb25QYXRoKGZpZWxkOiBGaWVsZCB8IE11bHRpVmFsdWVGaWVsZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gTm90ZTogd2Ugc2VuZCBtZXNzYWdlcyBldmVuIGlmIHRoZSBjb250ZXh0IGlzIGluYWN0aXZlIChlbXB0eSBjcmVhdGlvbiByb3dzKSxcblx0XHQvLyBvdGhlcndpc2Ugd2UgY2FuJ3QgdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIGxvY2tzIHdoZW4gdGhlIGNvbnRleHQgaXMgYWN0aXZhdGVkLlxuXHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gZmllbGQ/LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIWJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChmaWVsZC5pc0E8RmllbGQ+KFwic2FwLmZlLm1hY3Jvcy5GaWVsZFwiKSkge1xuXHRcdFx0aWYgKCFmaWVsZC5nZXRNYWluUHJvcGVydHlSZWxhdGl2ZVBhdGgoKSkge1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmaWVsZFdyYXBwZXIgPSBmaWVsZC5jb250ZW50IGFzIEZpZWxkV3JhcHBlciB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChcblx0XHRcdFx0IVtGaWVsZEVkaXRNb2RlLkVkaXRhYmxlLCBGaWVsZEVkaXRNb2RlLkVkaXRhYmxlRGlzcGxheSwgRmllbGRFZGl0TW9kZS5FZGl0YWJsZVJlYWRPbmx5XS5pbmNsdWRlcyhcblx0XHRcdFx0XHRmaWVsZFdyYXBwZXI/LmdldFByb3BlcnR5KFwiZWRpdE1vZGVcIilcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIFRoZSBmaWVsZCBpcyBub3QgaW4gZWRpdCBtb2RlIC0tPiBubyBjb2xsYWJvcmF0aW9uIG1lc3NhZ2VzXG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBgJHtiaW5kaW5nQ29udGV4dC5nZXRQYXRoKCl9LyR7ZmllbGQuZ2V0TWFpblByb3BlcnR5UmVsYXRpdmVQYXRoKCl9YDtcblx0XHR9IGVsc2UgaWYgKGZpZWxkLmlzQTxNdWx0aVZhbHVlRmllbGQ+KFwic2FwLnVpLm1kYy5NdWx0aVZhbHVlRmllbGRcIikpIHtcblx0XHRcdGNvbnN0IGtleXBhdGggPSBmaWVsZC5nZXRCaW5kaW5nSW5mbyhcIml0ZW1zXCIpLnRlbXBsYXRlLmdldEJpbmRpbmdQYXRoKFwia2V5XCIpO1xuXHRcdFx0cmV0dXJuIGAke2JpbmRpbmdDb250ZXh0LmdldFBhdGgoKX0vJHtmaWVsZC5nZXRCaW5kaW5nSW5mbyhcIml0ZW1zXCIpLnBhdGh9LyR7a2V5cGF0aH1gO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZW5kKG1lc3NhZ2U6IHtcblx0XHRhY3Rpb246IEFjdGl2aXR5O1xuXHRcdGNvbnRlbnQ6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXHRcdHRyaWdnZXJlZEFjdGlvbk5hbWU/OiBzdHJpbmc7XG5cdFx0cmVmcmVzaExpc3RCaW5kaW5nPzogYm9vbGVhbjtcblx0XHRhY3Rpb25SZXF1ZXN0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW107XG5cdH0pOiB2b2lkIHtcblx0XHR0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5zZW5kKHRoaXMuZ2V0VmlldygpLCBtZXNzYWdlKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCkuaXNDb25uZWN0ZWQodGhpcy5nZXRWaWV3KCkpO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIGNvbm5lY3QoZHJhZnRSb290Q29udGV4dDogQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5jb25uZWN0KGRyYWZ0Um9vdENvbnRleHQsIHRoaXMuZ2V0VmlldygpIGFzIEZFVmlldyk7XG5cdH1cblxuXHRwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcblx0XHRjb25zdCB1aU1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJ1aVwiKSBhcyBKU09OTW9kZWw7XG5cdFx0dGhpcy5jbGVhbkRyYWZ0Um9vdCgpO1xuXHRcdHVpTW9kZWwuc2V0UHJvcGVydHkoXCIvaGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb25cIiwgdW5kZWZpbmVkKTtcblxuXHRcdGlmICh0aGlzLmlzQ29ubmVjdGVkKCkpIHtcblx0XHRcdHRoaXMuZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpLmRpc2Nvbm5lY3QodGhpcy5nZXRWaWV3KCkgYXMgRkVWaWV3KTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDb2xsYWJvcmF0aXZlRHJhZnRTZXJ2aWNlKCkuaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCh0aGlzLmdldFZpZXcoKSk7XG5cdH1cblxuXHRwdWJsaWMgcmV0YWluQXN5bmNNZXNzYWdlcyhhY3Rpdml0eVBhdGhzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHJldHVybiB0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5yZXRhaW5Bc3luY01lc3NhZ2VzKHRoaXMuZ2V0VmlldygpLCBhY3Rpdml0eVBhdGhzKTtcblx0fVxuXG5cdHB1YmxpYyByZWxlYXNlQXN5bmNNZXNzYWdlcyhhY3Rpdml0eVBhdGhzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHJldHVybiB0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5yZWxlYXNlQXN5bmNNZXNzYWdlcyh0aGlzLmdldFZpZXcoKSwgYWN0aXZpdHlQYXRocyk7XG5cdH1cblxuXHRwdWJsaWMgdXBkYXRlTG9ja3NGb3JDb250ZXh0UGF0aChvbGRDb250ZXh0UGF0aDogc3RyaW5nLCBuZXdDb250ZXh0UGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Q29sbGFib3JhdGl2ZURyYWZ0U2VydmljZSgpLnVwZGF0ZUxvY2tzRm9yQ29udGV4dFBhdGgodGhpcy5nZXRWaWV3KCksIG9sZENvbnRleHRQYXRoLCBuZXdDb250ZXh0UGF0aCk7XG5cdH1cblxuXHRwcml2YXRlIGdldEN1cnJlbnREcmFmdFJvb3RQYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIik7XG5cdFx0cmV0dXJuIGludGVybmFsTW9kZWw/LmdldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpdmVEcmFmdFJvb3RQYXRoXCIpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXREcmFmdFVzZXJMaXN0UHJvbWlzZSgpOiBQcm9taXNlPERyYWZ0QWRtaW5Vc2VyW10+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRyZXR1cm4gaW50ZXJuYWxNb2RlbD8uZ2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGl2ZURyYWZ0VXNlckxpc3RQcm9taXNlXCIpO1xuXHR9XG5cblx0cHJpdmF0ZSBpc0luaXRpYWxTaGFyZSgpOiBib29sZWFuIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRyZXR1cm4gaW50ZXJuYWxNb2RlbD8uZ2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGl2ZURyYWZ0U2hhcmVJbml0aWFsXCIpID09PSB0cnVlO1xuXHR9XG5cblx0c2V0SW5pdGlhbFNoYXJlKGlzSW5pdGlhbDogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRpbnRlcm5hbE1vZGVsPy5zZXRQcm9wZXJ0eShcIi9jb2xsYWJvcmF0aXZlRHJhZnRTaGFyZUluaXRpYWxcIiwgaXNJbml0aWFsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBkcmFmdCByb290IGNvbnRleHQgZm9yIHRoZSBjb2xsYWJvcmF0aW9uLlxuXHQgKiBJdHMgcGF0aCBpcyBzdG9yZWQgaW4gdGhlIGludGVybmFsIG1vZGVsLCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGxhdGVyIHRvIGNoZWNrIGlmIHRoZSBjb2xsYWJvcmF0aW9uIGlzIGFjdGl2ZS5cblx0ICogSXQgYWxzbyByZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgdXNlcnMgaW52aXRlZCBpbiB0aGUgZHJhZnQgYW5kIHN0b3JlcyBpdCBpbiB0aGUgaW50ZXJuYWwgbW9kZWwuXG5cdCAqIEBwYXJhbSBkcmFmdFJvb3RDb250ZXh0IFRoZSBjb250ZXh0IGZvciB0aGUgZHJhZnQgcm9vdFxuXHQgKiBAcGFyYW0gZ3JvdXBJZCBUaGUgZ3JvdXBJZCB0byByZXF1ZXN0IHRoZSBsaXN0IG9mIHVzZXJzIGludml0ZWQgaW4gdGhlIGRyYWZ0XG5cdCAqL1xuXHRwcml2YXRlIHNldERyYWZ0Um9vdChkcmFmdFJvb3RDb250ZXh0OiBDb250ZXh0LCBncm91cElkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0bGV0IHVzZXJMaXN0UHJvbWlzZTogUHJvbWlzZTxEcmFmdEFkbWluVXNlcltdPjtcblx0XHRpZiAoZHJhZnRSb290Q29udGV4dC5nZXRPYmplY3QoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdEFkbWluaXN0cmF0aXZlVXNlclwiKSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR1c2VyTGlzdFByb21pc2UgPSBkcmFmdFJvb3RDb250ZXh0LnJlcXVlc3RPYmplY3QoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdEFkbWluaXN0cmF0aXZlVXNlclwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dXNlckxpc3RQcm9taXNlID0gZHJhZnRSb290Q29udGV4dFxuXHRcdFx0XHQucmVxdWVzdFNpZGVFZmZlY3RzKFtcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0QWRtaW5pc3RyYXRpdmVVc2VyXCJdLCBncm91cElkKVxuXHRcdFx0XHQudGhlbihhc3luYyAoKSA9PiBkcmFmdFJvb3RDb250ZXh0LnJlcXVlc3RPYmplY3QoXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdEFkbWluaXN0cmF0aXZlVXNlclwiKSk7XG5cdFx0fVxuXG5cdFx0aW50ZXJuYWxNb2RlbD8uc2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGl2ZURyYWZ0VXNlckxpc3RQcm9taXNlXCIsIHVzZXJMaXN0UHJvbWlzZSk7XG5cdFx0aW50ZXJuYWxNb2RlbD8uc2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGl2ZURyYWZ0Um9vdFBhdGhcIiwgZHJhZnRSb290Q29udGV4dC5nZXRQYXRoKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFucyB0aGUgZHJhZnQgcm9vdCBjb250ZXh0IGFuZCB0aGUgbGlzdCBvZiB1c2VycyBpbnZpdGVkIGluIHRoZSBkcmFmdC5cblx0ICogVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgY29sbGFib3JhdGlvbiBpcyBkZWFjdGl2YXRlZCBvciB3aGVuIHRoZSBkcmFmdCByb290IGNvbnRleHQgY2hhbmdlcy5cblx0ICovXG5cdHByaXZhdGUgY2xlYW5EcmFmdFJvb3QoKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdGludGVybmFsTW9kZWw/LnNldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpdmVEcmFmdFVzZXJMaXN0UHJvbWlzZVwiLCB1bmRlZmluZWQpO1xuXHRcdGludGVybmFsTW9kZWw/LnNldFByb3BlcnR5KFwiL2NvbGxhYm9yYXRpdmVEcmFmdFJvb3RQYXRoXCIsIHVuZGVmaW5lZCk7XG5cdH1cblxuXHQvKipcblx0ICogQWN0aXZhdGVzIHRoZSBjb2xsYWJvcmF0aW9uIGZvciB0aGUgZ2l2ZW4gcGFnZSBjb250ZXh0LlxuXHQgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyBhdXRob3JpemVkIHRvIGNvbGxhYm9yYXRlIG9uIHRoZSBkcmFmdCwgYW5kIHNldHMgdGhlIGZsYWcgaW4gdGhlIFVJIG1vZGVsIGFjY29yZGluZ2x5LlxuXHQgKiBAcGFyYW0gcGFnZUNvbnRleHQgVGhlIHBhZ2UgY29udGV4dCAobm90IG5lY2Vzc2FyaWx5IGEgZHJhZnQgcm9vdClcblx0ICogQHBhcmFtIGlzQWN0aXZlRW50aXR5IElzIHRoZSBjb250ZXh0IHRoZSBhY3RpdmUgb25lIChub3QgYSBkcmFmdCk/XG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHVzZXIgaXMgYXV0aG9yaXplZCB0byBjb2xsYWJvcmF0ZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0YXN5bmMgYWN0aXZhdGVDb2xsYWJvcmF0aW9uKHBhZ2VDb250ZXh0OiBDb250ZXh0LCBpc0FjdGl2ZUVudGl0eTogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCB1aU1vZGVsID0gdGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJ1aVwiKSBhcyBKU09OTW9kZWw7XG5cdFx0XHRpZiAoaXNBY3RpdmVFbnRpdHkpIHtcblx0XHRcdFx0Ly8gV2UncmUgbm90IGluIGEgZHJhZnQgLT4gZGlzY29ubmVjdCBpZiB3ZSB3ZXJlIGNvbm5lY3RlZCBiZWZvcmVcblx0XHRcdFx0dWlNb2RlbC5zZXRQcm9wZXJ0eShcIi9oYXNDb2xsYWJvcmF0aW9uQXV0aG9yaXphdGlvblwiLCB1bmRlZmluZWQpO1xuXHRcdFx0XHR0aGlzLmRpc2Nvbm5lY3QoKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkcmFmdFJvb3RDb250ZXh0ID0gQ29tbW9uVXRpbHMuZmluZE9yQ3JlYXRlUm9vdENvbnRleHQoXG5cdFx0XHRcdHBhZ2VDb250ZXh0LFxuXHRcdFx0XHRcIkRyYWZ0XCIsXG5cdFx0XHRcdHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0XHR0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCksXG5cdFx0XHRcdHsgJCRncm91cElkOiBwYWdlQ29udGV4dC5nZXRHcm91cElkKCksICRzZWxlY3Q6IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJcIiB9XG5cdFx0XHQpLnJvb3RDb250ZXh0O1xuXHRcdFx0aWYgKCFkcmFmdFJvb3RDb250ZXh0KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkbid0IGZpbmQgZHJhZnQgcm9vdCBjb250ZXh0IGZvciBlbmFibGluZyBjb2xsYWJvcmF0aW9uXCIpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGN1cnJlbnREcmFmdFJvb3RQYXRoID0gdGhpcy5nZXRDdXJyZW50RHJhZnRSb290UGF0aCgpO1xuXHRcdFx0aWYgKGN1cnJlbnREcmFmdFJvb3RQYXRoICE9PSBkcmFmdFJvb3RDb250ZXh0LmdldFBhdGgoKSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFx0YFVuZXhwZWN0ZWQgcGF0aCBmb3IgY2hlY2tpbmcgY29sbGFib3JhdGlvbiBhdXRob3JpemF0aW9uczogJHtkcmFmdFJvb3RDb250ZXh0LmdldFBhdGgoKX0gKGV4cGVjdGluZyAke2N1cnJlbnREcmFmdFJvb3RQYXRofSlgXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHVzZXJzSW52aXRlZCA9IGF3YWl0IHRoaXMuZ2V0RHJhZnRVc2VyTGlzdFByb21pc2UoKTtcblx0XHRcdGlmICh1aU1vZGVsLmdldFByb3BlcnR5KFwiL2hhc0NvbGxhYm9yYXRpb25BdXRob3JpemF0aW9uXCIpICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0cmV0dXJuIHVpTW9kZWwuZ2V0UHJvcGVydHkoXCIvaGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb25cIik7IC8vIEFscmVhZHkgY2hlY2tlZCwgYWxsIGdvb2Rcblx0XHRcdH1cblx0XHRcdGNvbnN0IG1lID0gQ29sbGFib3JhdGlvblV0aWxzLmdldE1lKHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKSk7XG5cdFx0XHRjb25zdCBoYXNNZSA9IHVzZXJzSW52aXRlZD8uc29tZSgoc2luZ2xlVXNlcikgPT4gc2luZ2xlVXNlci5Vc2VySUQgPT09IG1lLmlkKSA/PyBmYWxzZTtcblx0XHRcdHVpTW9kZWwuc2V0UHJvcGVydHkoXCIvaGFzQ29sbGFib3JhdGlvbkF1dGhvcml6YXRpb25cIiwgaGFzTWUpO1xuXHRcdFx0dWlNb2RlbC5zZXRQcm9wZXJ0eShcIi9zaG93Q29sbGFib3JhdGlvblN0cmlwXCIsICFoYXNNZSk7XG5cblx0XHRcdGlmIChoYXNNZSkge1xuXHRcdFx0XHR0aGlzLmNvbm5lY3QoZHJhZnRSb290Q29udGV4dCkuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IFwiICsgZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5pc0Nvbm5lY3RlZCgpKSB7XG5cdFx0XHRcdC8vIERpc2Nvbm5lY3QgdGhlIHdlYnNvY2tldCBidXQga2VlcCB0aGUgcHJvcGVydGllcyBpbiB0aGUgaW50ZXJuYWwgbW9kZWwgKHNvIGRvbid0IGNhbGwgdGhpcy5kaXNjb25uZWN0KVxuXHRcdFx0XHR0aGlzLmdldENvbGxhYm9yYXRpdmVEcmFmdFNlcnZpY2UoKS5kaXNjb25uZWN0KHRoaXMuZ2V0VmlldygpIGFzIEZFVmlldyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gaGFzTWU7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBhY3RpdmF0aW5nIHRoZSBjb2xsYWJvcmF0aXZlIGRyYWZ0IFwiICsgZXJyKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyB0aGUgY3VycmVudCB1c2VyIGluIHRoZSBkcmFmdCByb290IGNvbnRleHQuXG5cdCAqIEBwYXJhbSBwYWdlQ29udGV4dCBUaGUgcGFnZSBjb250ZXh0IChub3QgbmVjZXNzYXJpbHkgYSBkcmFmdCByb290KVxuXHQgKi9cblx0YXN5bmMgZXhlY3V0ZVNoYXJlQWN0aW9uKHBhZ2VDb250ZXh0OiBDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGRyYWZ0Um9vdENvbnRleHQgPSBDb21tb25VdGlscy5maW5kT3JDcmVhdGVSb290Q29udGV4dChcblx0XHRcdFx0cGFnZUNvbnRleHQsXG5cdFx0XHRcdFwiRHJhZnRcIixcblx0XHRcdFx0dGhpcy5nZXRWaWV3KCksXG5cdFx0XHRcdHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKSxcblx0XHRcdFx0eyAkJGdyb3VwSWQ6IHBhZ2VDb250ZXh0LmdldEdyb3VwSWQoKSwgJHNlbGVjdDogXCJEcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdEFkbWluaXN0cmF0aXZlVXNlclwiIH1cblx0XHRcdCkucm9vdENvbnRleHQ7XG5cdFx0XHRpZiAoIWRyYWZ0Um9vdENvbnRleHQpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGRuJ3QgZmluZCBkcmFmdCByb290IGNvbnRleHQgZm9yIGVuYWJsaW5nIGNvbGxhYm9yYXRpb25cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgY3VycmVudERyYWZ0Um9vdFBhdGggPSB0aGlzLmdldEN1cnJlbnREcmFmdFJvb3RQYXRoKCk7XG5cdFx0XHRpZiAoY3VycmVudERyYWZ0Um9vdFBhdGggIT09IHVuZGVmaW5lZCAmJiBjdXJyZW50RHJhZnRSb290UGF0aCAhPT0gZHJhZnRSb290Q29udGV4dC5nZXRQYXRoKCkpIHtcblx0XHRcdFx0Ly8gQ29sbGFib3JhdGlvbiB3YXMgZW5hYmxlZCBvbiBhbm90aGVyIGRyYWZ0IC0tPiBkaXNjb25uZWN0IGZpcnN0XG5cdFx0XHRcdHRoaXMuZGlzY29ubmVjdCgpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY3VycmVudERyYWZ0Um9vdFBhdGggPT09IGRyYWZ0Um9vdENvbnRleHQuZ2V0UGF0aCgpKSB7XG5cdFx0XHRcdHJldHVybjsgLy8gc2hhcmUgd2FzIGFscmVhZHkgY2FsbGVkIGJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIHRoZSBTaGFyZSBhY3Rpb24gYWdhaW5cblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgc2hhcmVQcm9taXNlID0gdGhpcy5pc0luaXRpYWxTaGFyZSgpXG5cdFx0XHRcdD8gc2hhcmVPYmplY3QoZHJhZnRSb290Q29udGV4dCwgdW5kZWZpbmVkLCBkcmFmdFJvb3RDb250ZXh0LmdldEdyb3VwSWQoKSlcblx0XHRcdFx0OiBhZGRTZWxmKGRyYWZ0Um9vdENvbnRleHQpO1xuXHRcdFx0dGhpcy5zZXRJbml0aWFsU2hhcmUoZmFsc2UpOyAvLyBSZXNldCB0aGUgaW5pdGlhbCBzaGFyZSBmbGFnLCBzbyB0aGF0IHdlIGRvbid0IGNhbGwgdGhlIGluaXRpYWwgU2hhcmUgYWN0aW9uIGFnYWluXG5cdFx0XHR0aGlzLnNldERyYWZ0Um9vdChkcmFmdFJvb3RDb250ZXh0LCBkcmFmdFJvb3RDb250ZXh0LmdldEdyb3VwSWQoKSk7XG5cdFx0XHRhd2FpdCBzaGFyZVByb21pc2U7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBhZGRpbmcgY3VycmVudCB1c2VyIGluIHRoZSBjb2xsYWJvcmF0aXZlIGRyYWZ0IFwiICsgZXJyKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMkJxQkEsa0JBQWtCLElBQUFDLElBQUEsR0FEdENDLGNBQWMsQ0FBQyxxREFBcUQsQ0FBQyxFQUFBRCxJQUFBLENBQUFFLE1BQUEsMEJBQUFDLHFCQUFBO0lBQUEsU0FBQUosbUJBQUE7TUFBQSxPQUFBSSxxQkFBQSxDQUFBQyxLQUFBLE9BQUFDLFNBQUE7SUFBQTtJQUFBQyxRQUFBLEdBQUFQLGtCQUFBO0lBQUFRLGNBQUEsQ0FBQVIsa0JBQUEsRUFBQUkscUJBQUE7SUFBQSxJQUFBSyxNQUFBLEdBQUFULGtCQUFBLENBQUFVLFNBQUE7SUFBQUQsTUFBQSxDQVU3REUsNEJBQTRCLEdBQXBDLFNBQVFBLDRCQUE0QkEsQ0FBQSxFQUE4QjtNQUNqRSxJQUFJLENBQUNDLHlCQUF5QixHQUFHLElBQUksQ0FBQ0EseUJBQXlCLElBQUksSUFBSSxDQUFDQyxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNILDRCQUE0QixDQUFDLENBQUM7TUFDN0gsT0FBTyxJQUFJLENBQUNDLHlCQUF5QjtJQUN0Qzs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQUgsTUFBQSxDQUtPTSxvQkFBb0IsR0FBM0IsU0FBT0Esb0JBQW9CQSxDQUFDQyxNQUErQixFQUFFQyxVQUF1QixFQUFRO01BQzNGO01BQ0EsSUFBSUQsTUFBTSxDQUFDRSxHQUFHLENBQVksaUJBQWlCLENBQUMsRUFBRTtRQUM3Q0YsTUFBTSxHQUFHQSxNQUFNLENBQUNHLFNBQVMsQ0FBQyxDQUFDLEVBQUVBLFNBQVMsQ0FBQyxDQUFvQjtNQUM1RDtNQUNBLElBQUlDLDRCQUE0QixHQUFHLEtBQUs7TUFDeEMs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
@@ -335,6 +335,7 @@ export default class CollaborationDraft extends BaseControllerExtension {
335
335
  const me = CollaborationUtils.getMe(this.base.getAppComponent());
336
336
  const hasMe = usersInvited?.some((singleUser) => singleUser.UserID === me.id) ?? false;
337
337
  uiModel.setProperty("/hasCollaborationAuthorization", hasMe);
338
+ uiModel.setProperty("/showCollaborationStrip", !hasMe);
338
339
 
339
340
  if (hasMe) {
340
341
  this.connect(draftRootContext).catch((error) => {