@colijnit/transaction 257.1.46 → 257.1.48

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.
@@ -52,23 +52,21 @@ export class AddProductComponent {
52
52
  ngOnDestroy() {
53
53
  this._subs.forEach(s => s.unsubscribe());
54
54
  }
55
+ /**
56
+ * First check if there's a single article found
57
+ * This is a two check step:
58
+ * Check if there is an exact match on barcode, ean or articlenumber
59
+ * If not: check with search like
60
+ * Else open catalogus
61
+ * @param text
62
+ */
55
63
  handleSearch(text) {
56
64
  return __awaiter(this, void 0, void 0, function* () {
57
- console.log('searching: ' + text);
58
65
  this.searchText = text;
59
66
  this._prepareCatalogRequest();
60
- this.searchText = "";
61
- this._changeDetector.detectChanges();
62
- // first check if there's a single article found
63
- // This is a two check step:
64
- // Check if there is an exact match on barcode, ean or articlenumber
65
- // if not: check with search like
66
- // else open catalogus
67
67
  if (!this.pendingAddArticleAction) {
68
- console.log('no Pending Action ' + text);
69
68
  const fullMatchSearch = yield this.transactionService.getArticleListWithBarcodeArticleNrEanCode(text);
70
69
  if (fullMatchSearch && fullMatchSearch.length === 1) {
71
- console.log('Match' + text);
72
70
  const article = yield this.transactionService.getArticleExtended(fullMatchSearch[0].articleNr);
73
71
  if (article.goodType === "B") {
74
72
  this.showCatalogDialog();
@@ -79,10 +77,8 @@ export class AddProductComponent {
79
77
  }
80
78
  }
81
79
  else {
82
- console.log('No Match' + text);
83
80
  const foundArticles = yield this.transactionService.getArticles(this.catalogParameters);
84
81
  if (foundArticles && foundArticles.length === 1) {
85
- console.log('Found Article ' + text);
86
82
  const article = yield this.transactionService.getArticleExtended(foundArticles[0].articleNumber);
87
83
  if (article.goodType === "B") {
88
84
  this.showCatalogDialog();
@@ -93,11 +89,11 @@ export class AddProductComponent {
93
89
  }
94
90
  }
95
91
  else {
96
- console.log('No Found Article ' + text);
97
92
  this.showCatalogDialog();
98
93
  }
99
94
  }
100
95
  }
96
+ this.searchText = "";
101
97
  });
102
98
  }
103
99
  handleAddArticle(article) {
@@ -149,7 +145,6 @@ export class AddProductComponent {
149
145
  _tryAddArticle(articleNr, quantity) {
150
146
  return __awaiter(this, void 0, void 0, function* () {
151
147
  const success = yield this.transactionService.addArticle(articleNr, quantity, 0, 0, true, true);
152
- console.log(success);
153
148
  if (success) {
154
149
  this.searchText = "";
155
150
  }
@@ -303,4 +298,4 @@ AddProductComponent.propDecorators = {
303
298
  showClass: [{ type: HostBinding, args: ['class.co-add-product',] }],
304
299
  return: [{ type: HostBinding, args: ['class.return',] }]
305
300
  };
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvYWRkLXByb2R1Y3QvYWRkLXByb2R1Y3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDbkMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUVyRyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQThDaEYsTUFBTSxPQUFPLG1CQUFtQjtJQWtENUIsWUFDVyxXQUE2QixFQUM3QixrQkFBc0MsRUFDdEMsdUJBQWdELEVBQy9DLGVBQWtDO1FBSG5DLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDL0Msb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBckQ5QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFHM0MsZUFBVSxHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQVd4RixXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLG1CQUFjLEdBQVE7WUFDekIsYUFBYSxFQUFFLElBQUk7WUFDbkIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsdUJBQXVCLEVBQUUsS0FBSztZQUM5QixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLFVBQVUsRUFBRSxLQUFLO1NBQ3BCLENBQUM7UUFDSyxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFJNUIsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBRTFDLGlCQUFZLEdBQWEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RSxnQkFBVyxHQUFhLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU5RSw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFXeEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsVUFBSyxHQUFtQixFQUFFLENBQUM7SUFRbkMsQ0FBQztJQTNDTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQXVCRCxJQUFXLFdBQVcsQ0FBQyxLQUFjO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQWFELFFBQVE7UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDWCxJQUFJLENBQUMsdUJBQXVCLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEUsSUFBSSxJQUFJLEVBQUU7Z0JBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQzthQUN4QztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUE7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVZLFlBQVksQ0FBQyxJQUFZOztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JDLGdEQUFnRDtZQUNoRCw0QkFBNEI7WUFDNUIsb0VBQW9FO1lBQ3BFLGlDQUFpQztZQUNqQyxzQkFBc0I7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtnQkFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDekMsTUFBTSxlQUFlLEdBQVUsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMseUNBQXlDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdHLElBQUksZUFBZSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxPQUFPLEdBQW9CLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDaEgsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLEdBQUcsRUFBRTt3QkFDMUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7cUJBQzVCO3lCQUFNO3dCQUNILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7d0JBQ3BDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUN4QztpQkFDSjtxQkFBTTtvQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQztvQkFDL0IsTUFBTSxhQUFhLEdBQW1CLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDeEcsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7d0JBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7d0JBQ3JDLE1BQU0sT0FBTyxHQUFvQixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQ2xILElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7NEJBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO3lCQUM1Qjs2QkFBTTs0QkFDSCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDOzRCQUNwQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDeEM7cUJBQ0o7eUJBQU07d0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7cUJBQzVCO2lCQUNKO2FBQ0o7UUFDTCxDQUFDO0tBQUE7SUFFWSxnQkFBZ0IsQ0FBQyxPQUF3Qjs7WUFDbEQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7Z0JBQ2pDLE1BQU0sT0FBTyxHQUFZLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFFOUcsSUFBSSxPQUFPLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7aUJBQ3ZCO3FCQUFNO29CQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDdEM7Z0JBQ0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQzthQUN4QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDakIsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsV0FBVyxFQUFFLENBQUM7b0JBQ2QsV0FBVyxFQUFFLENBQUM7b0JBQ2QsV0FBVyxFQUFFLElBQUk7aUJBQ3BCLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO2FBQ3hDO1FBQ0wsQ0FBQztLQUFBO0lBRVkscUJBQXFCLENBQUMsSUFBNkQ7O1lBQzVGLHdDQUF3QztZQUN4QyxnQ0FBZ0M7WUFDaEMsSUFBSTtZQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO2dCQUNqQyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDSCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxZQUFZLGVBQWUsRUFBRTtvQkFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7d0JBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzt3QkFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO3dCQUMvQyxXQUFXLEVBQUUsQ0FBQzt3QkFDZCxXQUFXLEVBQUUsQ0FBQzt3QkFDZCxXQUFXLEVBQUUsSUFBSTtxQkFDcEIsQ0FBQyxDQUFDO2lCQUNOO2FBQ0o7UUFDTCxDQUFDO0tBQUE7SUFFYSxjQUFjLENBQUMsU0FBaUIsRUFBRSxRQUFnQjs7WUFDNUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNwQixJQUFJLE9BQU8sRUFBRTtnQkFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQTthQUN2QjtpQkFBTTtnQkFDSCx1QkFBdUI7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7YUFDaEQ7UUFDTCxDQUFDO0tBQUE7SUFFYSx1QkFBdUIsQ0FBQyxJQUE2RDs7WUFDL0YsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDdEIsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO29CQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFpQixDQUFDLENBQUM7b0JBQ25ELElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRyw4QkFBOEI7d0JBQ3BFLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ3ZHO3lCQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxlQUFlO3dCQUN4RCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO3FCQUMzRTtpQkFDSjtxQkFBTSxFQUFFLHdCQUF3QjtvQkFDN0IsSUFBSSxTQUFpQixDQUFDO29CQUV0QixJQUFJLElBQUksQ0FBQyxPQUFPLFlBQVksZUFBZSxFQUFFO3dCQUN6QyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7cUJBQzFDO3lCQUFNO3dCQUNILFNBQVMsR0FBSSxJQUFJLENBQUMsT0FBZSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDekg7b0JBQ0QsSUFBSSxTQUFTLEVBQUU7d0JBQ1gsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFFLENBQUE7cUJBQ3ZEO2lCQUNKO2FBQ0o7UUFDTCxDQUFDO0tBQUE7SUFFTSxpQkFBaUIsQ0FBQyxhQUFhO1FBQ2xDLElBQUksUUFBUSxHQUFXLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksYUFBYSxHQUFHLENBQUMsRUFBRTtZQUNsQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDakI7YUFBTTtZQUNILFFBQVEsR0FBRyxhQUFhLENBQUM7U0FDNUI7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRVkseUJBQXlCLENBQUMsT0FBd0I7O1lBQzNELE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUM7S0FBQTtJQUVNLGlCQUFpQjtRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFFTSx5QkFBeUI7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEtBQWlCO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRTtZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFWSxvQkFBb0IsQ0FBQyxvQkFJakM7O1lBQ0csSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxPQUFPLEdBQXFDLElBQUksZ0NBQWdDLEVBQUUsQ0FBQztZQUN2RixPQUFPLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztZQUNqRCxPQUFPLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztZQUN0RCxPQUFPLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztZQUN0RCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0UsQ0FBQztLQUFBO0lBRVksNEJBQTRCLENBQUMsSUFJekM7O1lBQ0csSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxPQUFPLEdBQXFDLElBQUksZ0NBQWdDLEVBQUUsQ0FBQztZQUN2RixPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDakMsT0FBTyxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxXQUFXLENBQUM7WUFDdkQsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRSxDQUFDO0tBQUE7SUFFTyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsa0JBQWtCO1FBQy9ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNsRCxDQUFDOzs7WUE3U0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBOEJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7WUF0RE8sZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQVFsQix1QkFBdUI7WUFyQjNCLGlCQUFpQjs7O3lDQXNFaEIsS0FBSzt5QkFHTCxNQUFNOzhCQUdOLFNBQVMsU0FBQyxhQUFhO3dCQUd2QixXQUFXLFNBQUMsc0JBQXNCO3FCQUtsQyxXQUFXLFNBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FydGljbGVFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpZ2h0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpZ2h0LmJvJztcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7XHJcbiAgICBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdFxyXG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLWFkZC1hcnRpY2xlLXJlcXVlc3QnO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1R5cGVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9leHRlcm5hbC1jYXRhbG9nLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge0lucHV0U2Nhbm5lckNvbXBvbmVudH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZEFydGljbGVJbnRlcmZhY2Uge1xyXG4gICAgYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkO1xyXG4gICAgcXVhbnRpdHk6IG51bWJlcjtcclxuICAgIGFib3ZlTGluZU5yOiBudW1iZXI7XHJcbiAgICBiZWxvd0xpbmVOcjogbnVtYmVyO1xyXG4gICAgbGFzdEFydGljbGU6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjby1hZGQtcHJvZHVjdCcsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjby1pbnB1dC1zY2FubmVyXHJcbiAgICAgICAgICAgICNpbnB1dFNlYXJjaFxyXG4gICAgICAgICAgICBbY3VzdG9tQ3NzQ2xhc3NdPVwiJ25vLWZvY3VzLWxpbmUnXCJcclxuICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VBUkNIX0FERF9BUlRJQ0xFJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2NlbnRlckxhYmVsXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbdXNlTGVmdEljb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtsZWZ0SWNvbkRhdGFdPVwicmV0dXJuID8gY2FydE1pbkljb24gOiBjYXJ0UGx1c0ljb25cIlxyXG4gICAgICAgICAgICBbdXNlUmlnaHRJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAobGVmdEljb25DbGljayk9XCJoYW5kbGVDYXJ0SWNvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAocmlnaHRJY29uQ2xpY2spPVwiaGFuZGxlU2VhcmNoSWNvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAoYmFyQ29kZVNjYW5uZWQpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAoc2VhcmNoKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICA+PC9jby1pbnB1dC1zY2FubmVyPlxyXG4gICAgICAgIDxjby1kaWFsb2ctY2F0YWxvZyAqbmdJZj1cInNob3dDYXRhbG9nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY2F0YWxvZ09wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyYW1ldGVyc109XCJjYXRhbG9nUGFyYW1ldGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseV09XCJoYW5kbGVBZGRBcnRpY2xlSW50ZXJuYWxseVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93TmF2aWdhdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmV0dXJuXT1cInJldHVyblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93UmVsYXRlZFByb2R1Y3RzUG9wdXBdPVwic2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uXT1cInRyYW5zYWN0aW9uU2VydmljZS5jdXJyZW50VHJhbnNhY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJoYW5kbGVDbG9zZUNhdGFsb2d1ZUNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJ0aWNsZUNsaWNrZWQpPVwiaGFuZGxlQ2F0YWxvZ0FydGljbGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZEFydGljbGVDbGlja2VkKT1cImhhbmRsZUFkZEFydGljbGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoaUZyYW1lRmVlZGJhY2spPVwiaGFuZGxlSUZyYW1lRmVlZGJhY2soJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvY28tZGlhbG9nLWNhdGFsb2c+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkUHJvZHVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhZGRBcnRpY2xlOiBFdmVudEVtaXR0ZXI8QWRkQXJ0aWNsZUludGVyZmFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFkZEFydGljbGVJbnRlcmZhY2U+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRTZWFyY2gnKVxyXG4gICAgcHVibGljIGlucHV0U2VhcmNoVGV4dDogSW5wdXRTY2FubmVyQ29tcG9uZW50O1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tYWRkLXByb2R1Y3QnKVxyXG4gICAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJldHVybicpXHJcbiAgICBwdWJsaWMgcmV0dXJuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIGNhdGFsb2dPcHRpb25zOiBhbnkgPSB7XHJcbiAgICAgICAgc2VhcmNoT25TdGFydDogdHJ1ZSxcclxuICAgICAgICBzaG93QWRkVG9DYXJ0OiBmYWxzZSxcclxuICAgICAgICBzaG93TG9va0F0QXJ0aWNsZUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd0FkZEFydGljbGVCdXR0b246IHRydWUsXHJcbiAgICAgICAgb25seVRocmVlRDogZmFsc2VcclxuICAgIH07XHJcbiAgICBwdWJsaWMgY2F0YWxvZ1BhcmFtZXRlcnM6IGFueSA9IHt9O1xyXG5cclxuICAgIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIHNob3dSZWxhdGVkUHJvZHVjdHNQb3B1cDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBjYXJ0UGx1c0ljb246IFNhZmVIdG1sID0gdGhpcy5pY29uU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuQ2FydFBsdXNSZWd1bGFyKTtcclxuICAgIHB1YmxpYyBjYXJ0TWluSWNvbjogU2FmZUh0bWwgPSB0aGlzLmljb25TZXJ2aWNlLmdldEljb24odGhpcy5pY29ucy5DYXJ0TWludXNSZWd1bGFyKTtcclxuXHJcbiAgICBwdWJsaWMgcGVuZGluZ0FkZEFydGljbGVBY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgc2V0IHNob3dDYXRhbG9nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2hvd0NhdGFsb2cgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNob3dSZWxhdGVkUHJvZHVjdHNQb3B1cCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgc2hvd0NhdGFsb2coKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dDYXRhbG9nO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3Nob3dDYXRhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBpY29uU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgdHJhbnNhY3Rpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5hZnRlckFkZFRyYW5zYWN0aW9uTGluZS5zdWJzY3JpYmUoKGJvb2wpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChib29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UmVsYXRlZFByb2R1Y3RzUG9wdXAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVTZWFyY2godGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3NlYXJjaGluZzogJyArIHRleHQpXHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIGEgc2luZ2xlIGFydGljbGUgZm91bmRcclxuICAgICAgICAvLyBUaGlzIGlzIGEgdHdvIGNoZWNrIHN0ZXA6XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYW4gZXhhY3QgbWF0Y2ggb24gYmFyY29kZSwgZWFuIG9yIGFydGljbGVudW1iZXJcclxuICAgICAgICAvLyBpZiBub3Q6IGNoZWNrIHdpdGggc2VhcmNoIGxpa2VcclxuICAgICAgICAvLyBlbHNlIG9wZW4gY2F0YWxvZ3VzXHJcbiAgICAgICAgaWYgKCF0aGlzLnBlbmRpbmdBZGRBcnRpY2xlQWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdubyBQZW5kaW5nIEFjdGlvbiAnICsgdGV4dCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxNYXRjaFNlYXJjaDogYW55W10gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlTGlzdFdpdGhCYXJjb2RlQXJ0aWNsZU5yRWFuQ29kZSh0ZXh0KTtcclxuICAgICAgICAgICAgaWYgKGZ1bGxNYXRjaFNlYXJjaCAmJiBmdWxsTWF0Y2hTZWFyY2gubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTWF0Y2gnICsgdGV4dCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlRXh0ZW5kZWQoZnVsbE1hdGNoU2VhcmNoWzBdLmFydGljbGVOcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJ0aWNsZS5nb29kVHlwZSA9PT0gXCJCXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dDYXRhbG9nRGlhbG9nKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0FkZEFydGljbGVBY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBNYXRjaCcgKyB0ZXh0KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kQXJ0aWNsZXM6IEFydGljbGVMaWdodFtdID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZXModGhpcy5jYXRhbG9nUGFyYW1ldGVycyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRBcnRpY2xlcyAmJiBmb3VuZEFydGljbGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGb3VuZCBBcnRpY2xlICcgKyB0ZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlRXh0ZW5kZWQoZm91bmRBcnRpY2xlc1swXS5hcnRpY2xlTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJ0aWNsZS5nb29kVHlwZSA9PT0gXCJCXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0FkZEFydGljbGVBY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUFkZEFydGljbGUoYXJ0aWNsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTm8gRm91bmQgQXJ0aWNsZSAnICsgdGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRBcnRpY2xlKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGUuYXJ0aWNsZU51bWJlciwgdGhpcy5yZXR1cm4gPyAtMSA6IDEpXHJcblxyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gXCJcIlxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uucm9sbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdBZGRBcnRpY2xlQWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRBcnRpY2xlLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgYXJ0aWNsZTogYXJ0aWNsZSxcclxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiB0aGlzLnJldHVybiA/IC0xIDogMSxcclxuICAgICAgICAgICAgICAgIGFib3ZlTGluZU5yOiAwLFxyXG4gICAgICAgICAgICAgICAgYmVsb3dMaW5lTnI6IDAsXHJcbiAgICAgICAgICAgICAgICBsYXN0QXJ0aWNsZTogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nQWRkQXJ0aWNsZUFjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFydGljbGVUeXBlT25BZGQoZGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5hcnRpY2xlIGluc3RhbmNlb2YgQXJ0aWNsZUV4dGVuZGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFydGljbGUubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZTogZGF0YS5hcnRpY2xlLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiB0aGlzLmdldEFjdHVhbFF1YW50aXR5KGRhdGEucXVhbnRpdHkpLFxyXG4gICAgICAgICAgICAgICAgICAgIGFib3ZlTGluZU5yOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGJlbG93TGluZU5yOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RBcnRpY2xlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF90cnlBZGRBcnRpY2xlKGFydGljbGVOcjogc3RyaW5nLCBxdWFudGl0eTogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEFydGljbGUoYXJ0aWNsZU5yLCBxdWFudGl0eSwgMCwgMCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coc3VjY2VzcylcclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBcIlwiXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8ga2VlcCB0aGUgc2VhcmNoIHRleHRcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5pbnB1dFNlYXJjaFRleHQubW9kZWw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZUFydGljbGVUeXBlT25BZGQoZGF0YTogeyBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQ7IHF1YW50aXR5OiBudW1iZXIgfSkge1xyXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEuYXJ0aWNsZSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuYXJ0aWNsZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFydGljbGUgPSBKU09OLnBhcnNlKGRhdGEuYXJ0aWNsZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFydGljbGUuc2VsZWN0b3JEYXRhLmNvbXBvc2l0aW9ucykgeyAgLy8gY29uZmlndXJlZCAoZnJvemVuKSBhcnRpY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fdHJ5QWRkQXJ0aWNsZShhcnRpY2xlLnNlbGVjdG9yRGF0YS5jb21wb3NpdGlvbnNbMF0uY29tcG9zaXRpb25BcnRpY2xlTm8sIGRhdGEucXVhbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcnRpY2xlLnNlbGVjdG9yRGF0YS5hcnRpY2xlTnIpIHsgLy8gZmxhdCBhcnRpY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fdHJ5QWRkQXJ0aWNsZShhcnRpY2xlLnNlbGVjdG9yRGF0YS5hcnRpY2xlTnIsIGRhdGEucXVhbnRpdHkpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIGZsYXQgKHNpbXBsZSkgYXJ0aWNsZVxyXG4gICAgICAgICAgICAgICAgbGV0IGFydGljbGVOcjogc3RyaW5nO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmFydGljbGUgaW5zdGFuY2VvZiBBcnRpY2xlRXh0ZW5kZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlTnIgPSBkYXRhLmFydGljbGUuYXJ0aWNsZU51bWJlcjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZU5yID0gKGRhdGEuYXJ0aWNsZSBhcyBhbnkpLmhhc093blByb3BlcnR5KCdhcnRpY2xlTnInKSA/IGRhdGEuYXJ0aWNsZVsnYXJ0aWNsZU5yJ10gOiBkYXRhLmFydGljbGVbJ2FydGljbGVObyddO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFydGljbGVOcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3RyeUFkZEFydGljbGUoYXJ0aWNsZU5yLCBkYXRhLnF1YW50aXR5LClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWN0dWFsUXVhbnRpdHkocXVhbnRpdHlJbnB1dCk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IHF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgICAgIGlmICh0aGlzLnJldHVybiAmJiBxdWFudGl0eUlucHV0ID4gMCkge1xyXG4gICAgICAgICAgICBxdWFudGl0eSA9IC0xO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHF1YW50aXR5ID0gcXVhbnRpdHlJbnB1dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHF1YW50aXR5O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVDYXRhbG9nQXJ0aWNsZUNsaWNrKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNob3dDYXRhbG9nRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd0NhdGFsb2cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGVuZGluZ0FkZEFydGljbGVBY3Rpb24gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2VDYXRhbG9ndWVDbGljaygpIHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2FydEljb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmV0dXJuID0gIXRoaXMucmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVTZWFyY2hJY29uQ2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRTZWFyY2hUZXh0Lm1vZGVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRoaXMuaW5wdXRTZWFyY2hUZXh0Lm1vZGVsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTtcclxuICAgICAgICAvLyB0aGlzLnNlYXJjaFRleHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVJRnJhbWVGZWVkYmFjayhpRnJhbWVGZWVkYmFja09iamVjdDoge1xyXG4gICAgICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgICAgICBjYXRhbG9nOiBudW1iZXIsXHJcbiAgICAgICAgc291cmNlVHlwZTogc3RyaW5nXHJcbiAgICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIGxldCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCgpO1xyXG4gICAgICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuY2F0YWxvZztcclxuICAgICAgICByZXF1ZXN0LmNhdGFsb2dUeXBlID0gaUZyYW1lRmVlZGJhY2tPYmplY3Quc291cmNlVHlwZTtcclxuICAgICAgICByZXF1ZXN0LmFydGljbGVKc29uID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuanNvblN0cmluZztcclxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlKHJlcXVlc3QsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKGRhdGE6IHtcclxuICAgICAgICBxdWFudGl0eTogbnVtYmVyLFxyXG4gICAgICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgICAgICBjYXRhbG9nOiBudW1iZXJcclxuICAgIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0ID0gbmV3IEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0KCk7XHJcbiAgICAgICAgcmVxdWVzdC5jYXRhbG9nSWQgPSBkYXRhLmNhdGFsb2c7XHJcbiAgICAgICAgcmVxdWVzdC5jYXRhbG9nVHlwZSA9IEV4dGVybmFsQ2F0YWxvZ1R5cGVzLkNhdGFsb2dGYXJtO1xyXG4gICAgICAgIHJlcXVlc3QuYXJ0aWNsZUpzb24gPSBkYXRhLmpzb25TdHJpbmc7XHJcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZShyZXF1ZXN0LCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5nZW5lcmFsID0gdGhpcy5zZWFyY2hUZXh0O1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd1JlZ3VsYXJBcnRpY2xlcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93Q29uZmlndXJlZEFydGljbGVzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93Q29uZmlndXJhYmxlQXJ0aWNsZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbXBvc2l0aW9uQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDdXN0b21pemVkQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dJbmFjdGl2ZUFydGljbGVzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5wdWJsaWNhdGlvbkNvZGUgPSA3MTsgLy8gdG9kbzogZml4IHRoaXM/XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5pc1JldHVybiA9IHRoaXMucmV0dXJuO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvYWRkLXByb2R1Y3QvYWRkLXByb2R1Y3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDbkMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUVyRyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQThDaEYsTUFBTSxPQUFPLG1CQUFtQjtJQWtENUIsWUFDVyxXQUE2QixFQUM3QixrQkFBc0MsRUFDdEMsdUJBQWdELEVBQy9DLGVBQWtDO1FBSG5DLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDL0Msb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBckQ5QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFHM0MsZUFBVSxHQUFzQyxJQUFJ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QUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUMsQ0FBQyxrQkFBa0I7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xELENBQUM7OztZQXpTSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E4QlQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDeEM7OztZQXRETyxnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBUWxCLHVCQUF1QjtZQXJCM0IsaUJBQWlCOzs7eUNBc0VoQixLQUFLO3lCQUdMLE1BQU07OEJBR04sU0FBUyxTQUFDLGFBQWE7d0JBR3ZCLFdBQVcsU0FBQyxzQkFBc0I7cUJBS2xDLFdBQVcsU0FBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtBcnRpY2xlTGlnaHR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtbGlnaHQuYm8nO1xyXG5pbXBvcnQge1NhZmVIdG1sfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtcclxuICAgIEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0XHJcbn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2V4dGVybmFsLWNhdGFsb2ctYWRkLWFydGljbGUtcmVxdWVzdCc7XHJcbmltcG9ydCB7RXh0ZXJuYWxDYXRhbG9nVHlwZXN9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2V4dGVybmFsLWNhdGFsb2ctdHlwZXMuZW51bSc7XHJcbmltcG9ydCB7SW5wdXRTY2FubmVyQ29tcG9uZW50fSBmcm9tICdAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWRkQXJ0aWNsZUludGVyZmFjZSB7XHJcbiAgICBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQ7XHJcbiAgICBxdWFudGl0eTogbnVtYmVyO1xyXG4gICAgYWJvdmVMaW5lTnI6IG51bWJlcjtcclxuICAgIGJlbG93TGluZU5yOiBudW1iZXI7XHJcbiAgICBsYXN0QXJ0aWNsZTogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvLWFkZC1wcm9kdWN0JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGNvLWlucHV0LXNjYW5uZXJcclxuICAgICAgICAgICAgI2lucHV0U2VhcmNoXHJcbiAgICAgICAgICAgIFtjdXN0b21Dc3NDbGFzc109XCInbm8tZm9jdXMtbGluZSdcIlxyXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hUZXh0XCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUFSQ0hfQUREX0FSVElDTEUnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbY2VudGVyTGFiZWxdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFt1c2VMZWZ0SWNvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2xlZnRJY29uRGF0YV09XCJyZXR1cm4gPyBjYXJ0TWluSWNvbiA6IGNhcnRQbHVzSWNvblwiXHJcbiAgICAgICAgICAgIFt1c2VSaWdodEljb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIChsZWZ0SWNvbkNsaWNrKT1cImhhbmRsZUNhcnRJY29uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChyaWdodEljb25DbGljayk9XCJoYW5kbGVTZWFyY2hJY29uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgIChiYXJDb2RlU2Nhbm5lZCk9XCJoYW5kbGVTZWFyY2goJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChzZWFyY2gpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgID48L2NvLWlucHV0LXNjYW5uZXI+XHJcbiAgICAgICAgPGNvLWRpYWxvZy1jYXRhbG9nICpuZ0lmPVwic2hvd0NhdGFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjYXRhbG9nT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJhbWV0ZXJzXT1cImNhdGFsb2dQYXJhbWV0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5XT1cImhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSZXR1cm5dPVwicmV0dXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dSZWxhdGVkUHJvZHVjdHNQb3B1cF09XCJzaG93UmVsYXRlZFByb2R1Y3RzUG9wdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25dPVwidHJhbnNhY3Rpb25TZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cImhhbmRsZUNsb3NlQ2F0YWxvZ3VlQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVDYXRhbG9nQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkQXJ0aWNsZUNsaWNrZWQpPVwiaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkQ2F0RmFybUFydGljbGVDbGlja2VkKT1cImhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpRnJhbWVGZWVkYmFjayk9XCJoYW5kbGVJRnJhbWVGZWVkYmFjaygkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9jby1kaWFsb2ctY2F0YWxvZz5cclxuICAgIGAsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRQcm9kdWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFkZEFydGljbGU6IEV2ZW50RW1pdHRlcjxBZGRBcnRpY2xlSW50ZXJmYWNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkQXJ0aWNsZUludGVyZmFjZT4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dFNlYXJjaCcpXHJcbiAgICBwdWJsaWMgaW5wdXRTZWFyY2hUZXh0OiBJbnB1dFNjYW5uZXJDb21wb25lbnQ7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1hZGQtcHJvZHVjdCcpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucmV0dXJuJylcclxuICAgIHB1YmxpYyByZXR1cm46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgY2F0YWxvZ09wdGlvbnM6IGFueSA9IHtcclxuICAgICAgICBzZWFyY2hPblN0YXJ0OiB0cnVlLFxyXG4gICAgICAgIHNob3dBZGRUb0NhcnQ6IGZhbHNlLFxyXG4gICAgICAgIHNob3dMb29rQXRBcnRpY2xlQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICBzaG93QWRkQXJ0aWNsZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICBvbmx5VGhyZWVEOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHB1YmxpYyBjYXRhbG9nUGFyYW1ldGVyczogYW55ID0ge307XHJcblxyXG4gICAgcHVibGljIHNlYXJjaFRleHQ6IHN0cmluZztcclxuXHJcbiAgICBwdWJsaWMgc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIGNhcnRQbHVzSWNvbjogU2FmZUh0bWwgPSB0aGlzLmljb25TZXJ2aWNlLmdldEljb24odGhpcy5pY29ucy5DYXJ0UGx1c1JlZ3VsYXIpO1xyXG4gICAgcHVibGljIGNhcnRNaW5JY29uOiBTYWZlSHRtbCA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0SWNvbih0aGlzLmljb25zLkNhcnRNaW51c1JlZ3VsYXIpO1xyXG5cclxuICAgIHB1YmxpYyBwZW5kaW5nQWRkQXJ0aWNsZUFjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBzZXQgc2hvd0NhdGFsb2codmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zaG93Q2F0YWxvZyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzaG93Q2F0YWxvZygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NhdGFsb2c7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2hvd0NhdGFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmFmdGVyQWRkVHJhbnNhY3Rpb25MaW5lLnN1YnNjcmliZSgoYm9vbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dSZWxhdGVkUHJvZHVjdHNQb3B1cCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICBGaXJzdCBjaGVjayBpZiB0aGVyZSdzIGEgc2luZ2xlIGFydGljbGUgZm91bmRcclxuICAgKiAgVGhpcyBpcyBhIHR3byBjaGVjayBzdGVwOlxyXG4gICAqICBDaGVjayBpZiB0aGVyZSBpcyBhbiBleGFjdCBtYXRjaCBvbiBiYXJjb2RlLCBlYW4gb3IgYXJ0aWNsZW51bWJlclxyXG4gICAqICBJZiBub3Q6IGNoZWNrIHdpdGggc2VhcmNoIGxpa2VcclxuICAgKiAgRWxzZSBvcGVuIGNhdGFsb2d1c1xyXG4gICAqIEBwYXJhbSB0ZXh0XHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVNlYXJjaCh0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMucGVuZGluZ0FkZEFydGljbGVBY3Rpb24pIHtcclxuICAgICAgICAgICAgY29uc3QgZnVsbE1hdGNoU2VhcmNoOiBhbnlbXSA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVMaXN0V2l0aEJhcmNvZGVBcnRpY2xlTnJFYW5Db2RlKHRleHQpO1xyXG4gICAgICAgICAgICBpZiAoZnVsbE1hdGNoU2VhcmNoICYmIGZ1bGxNYXRjaFNlYXJjaC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFydGljbGU6IEFydGljbGVFeHRlbmRlZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChmdWxsTWF0Y2hTZWFyY2hbMF0uYXJ0aWNsZU5yKTtcclxuICAgICAgICAgICAgICAgIGlmIChhcnRpY2xlLmdvb2RUeXBlID09PSBcIkJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NhdGFsb2dEaWFsb2coKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQWRkQXJ0aWNsZUFjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVBZGRBcnRpY2xlKGFydGljbGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmRBcnRpY2xlczogQXJ0aWNsZUxpZ2h0W10gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlcyh0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzKTtcclxuICAgICAgICAgICAgICAgIGlmIChmb3VuZEFydGljbGVzICYmIGZvdW5kQXJ0aWNsZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUV4dGVuZGVkKGZvdW5kQXJ0aWNsZXNbMF0uYXJ0aWNsZU51bWJlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFydGljbGUuZ29vZFR5cGUgPT09IFwiQlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NhdGFsb2dEaWFsb2coKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdBZGRBcnRpY2xlQWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVBZGRBcnRpY2xlKGFydGljbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZUFkZEFydGljbGUoYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEFydGljbGUoYXJ0aWNsZS5hcnRpY2xlTnVtYmVyLCB0aGlzLnJldHVybiA/IC0xIDogMSlcclxuXHJcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBcIlwiXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5yb2xsYmFjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0FkZEFydGljbGVBY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFkZEFydGljbGUubmV4dCh7XHJcbiAgICAgICAgICAgICAgICBhcnRpY2xlOiBhcnRpY2xlLFxyXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IHRoaXMucmV0dXJuID8gLTEgOiAxLFxyXG4gICAgICAgICAgICAgICAgYWJvdmVMaW5lTnI6IDAsXHJcbiAgICAgICAgICAgICAgICBiZWxvd0xpbmVOcjogMCxcclxuICAgICAgICAgICAgICAgIGxhc3RBcnRpY2xlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdBZGRBcnRpY2xlQWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRBcnRpY2xlQ2xpY2soZGF0YTogeyBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQsIHF1YW50aXR5OiBudW1iZXIgfSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5zaG93UmVsYXRlZFByb2R1Y3RzUG9wdXApIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHkpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5faGFuZGxlQXJ0aWNsZVR5cGVPbkFkZChkYXRhKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmFydGljbGUgaW5zdGFuY2VvZiBBcnRpY2xlRXh0ZW5kZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQXJ0aWNsZS5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlOiBkYXRhLmFydGljbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHRoaXMuZ2V0QWN0dWFsUXVhbnRpdHkoZGF0YS5xdWFudGl0eSksXHJcbiAgICAgICAgICAgICAgICAgICAgYWJvdmVMaW5lTnI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgYmVsb3dMaW5lTnI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX3RyeUFkZEFydGljbGUoYXJ0aWNsZU5yOiBzdHJpbmcsIHF1YW50aXR5OiBudW1iZXIpIHtcclxuICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkQXJ0aWNsZShhcnRpY2xlTnIsIHF1YW50aXR5LCAwLCAwLCB0cnVlLCB0cnVlKTtcclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBcIlwiXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8ga2VlcCB0aGUgc2VhcmNoIHRleHRcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5pbnB1dFNlYXJjaFRleHQubW9kZWw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZUFydGljbGVUeXBlT25BZGQoZGF0YTogeyBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQ7IHF1YW50aXR5OiBudW1iZXIgfSkge1xyXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEuYXJ0aWNsZSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuYXJ0aWNsZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFydGljbGUgPSBKU09OLnBhcnNlKGRhdGEuYXJ0aWNsZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFydGljbGUuc2VsZWN0b3JEYXRhLmNvbXBvc2l0aW9ucykgeyAgLy8gY29uZmlndXJlZCAoZnJvemVuKSBhcnRpY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fdHJ5QWRkQXJ0aWNsZShhcnRpY2xlLnNlbGVjdG9yRGF0YS5jb21wb3NpdGlvbnNbMF0uY29tcG9zaXRpb25BcnRpY2xlTm8sIGRhdGEucXVhbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcnRpY2xlLnNlbGVjdG9yRGF0YS5hcnRpY2xlTnIpIHsgLy8gZmxhdCBhcnRpY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fdHJ5QWRkQXJ0aWNsZShhcnRpY2xlLnNlbGVjdG9yRGF0YS5hcnRpY2xlTnIsIGRhdGEucXVhbnRpdHkpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIGZsYXQgKHNpbXBsZSkgYXJ0aWNsZVxyXG4gICAgICAgICAgICAgICAgbGV0IGFydGljbGVOcjogc3RyaW5nO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmFydGljbGUgaW5zdGFuY2VvZiBBcnRpY2xlRXh0ZW5kZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlTnIgPSBkYXRhLmFydGljbGUuYXJ0aWNsZU51bWJlcjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZU5yID0gKGRhdGEuYXJ0aWNsZSBhcyBhbnkpLmhhc093blByb3BlcnR5KCdhcnRpY2xlTnInKSA/IGRhdGEuYXJ0aWNsZVsnYXJ0aWNsZU5yJ10gOiBkYXRhLmFydGljbGVbJ2FydGljbGVObyddO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFydGljbGVOcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3RyeUFkZEFydGljbGUoYXJ0aWNsZU5yLCBkYXRhLnF1YW50aXR5LClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWN0dWFsUXVhbnRpdHkocXVhbnRpdHlJbnB1dCk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IHF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgICAgIGlmICh0aGlzLnJldHVybiAmJiBxdWFudGl0eUlucHV0ID4gMCkge1xyXG4gICAgICAgICAgICBxdWFudGl0eSA9IC0xO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHF1YW50aXR5ID0gcXVhbnRpdHlJbnB1dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHF1YW50aXR5O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVDYXRhbG9nQXJ0aWNsZUNsaWNrKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNob3dDYXRhbG9nRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd0NhdGFsb2cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGVuZGluZ0FkZEFydGljbGVBY3Rpb24gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2VDYXRhbG9ndWVDbGljaygpIHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2FydEljb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmV0dXJuID0gIXRoaXMucmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVTZWFyY2hJY29uQ2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRTZWFyY2hUZXh0Lm1vZGVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRoaXMuaW5wdXRTZWFyY2hUZXh0Lm1vZGVsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTtcclxuICAgICAgICAvLyB0aGlzLnNlYXJjaFRleHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVJRnJhbWVGZWVkYmFjayhpRnJhbWVGZWVkYmFja09iamVjdDoge1xyXG4gICAgICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgICAgICBjYXRhbG9nOiBudW1iZXIsXHJcbiAgICAgICAgc291cmNlVHlwZTogc3RyaW5nXHJcbiAgICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIGxldCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCgpO1xyXG4gICAgICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuY2F0YWxvZztcclxuICAgICAgICByZXF1ZXN0LmNhdGFsb2dUeXBlID0gaUZyYW1lRmVlZGJhY2tPYmplY3Quc291cmNlVHlwZTtcclxuICAgICAgICByZXF1ZXN0LmFydGljbGVKc29uID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuanNvblN0cmluZztcclxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlKHJlcXVlc3QsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKGRhdGE6IHtcclxuICAgICAgICBxdWFudGl0eTogbnVtYmVyLFxyXG4gICAgICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgICAgICBjYXRhbG9nOiBudW1iZXJcclxuICAgIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0ID0gbmV3IEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0KCk7XHJcbiAgICAgICAgcmVxdWVzdC5jYXRhbG9nSWQgPSBkYXRhLmNhdGFsb2c7XHJcbiAgICAgICAgcmVxdWVzdC5jYXRhbG9nVHlwZSA9IEV4dGVybmFsQ2F0YWxvZ1R5cGVzLkNhdGFsb2dGYXJtO1xyXG4gICAgICAgIHJlcXVlc3QuYXJ0aWNsZUpzb24gPSBkYXRhLmpzb25TdHJpbmc7XHJcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZShyZXF1ZXN0LCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5nZW5lcmFsID0gdGhpcy5zZWFyY2hUZXh0O1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd1JlZ3VsYXJBcnRpY2xlcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93Q29uZmlndXJlZEFydGljbGVzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93Q29uZmlndXJhYmxlQXJ0aWNsZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbXBvc2l0aW9uQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDdXN0b21pemVkQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dJbmFjdGl2ZUFydGljbGVzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5wdWJsaWNhdGlvbkNvZGUgPSA3MTsgLy8gdG9kbzogZml4IHRoaXM/XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5pc1JldHVybiA9IHRoaXMucmV0dXJuO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -24,6 +24,7 @@ import { TransactionBaseService } from '../../service/transaction-base.service';
24
24
  import { TransactionHeaderService } from '../core/base/service/transaction-header.service';
25
25
  import { LineSelectionService } from '../../service/line-selection.service';
26
26
  import { TransactionLineCopyRequest } from '@colijnit/transactionapi/build/model/transaction-line-copy-request.bo';
27
+ import { TransactionSalesReservationService } from "../transaction-reservation/service/transaction-sales-reservation.service";
27
28
  export class TransactionInternalComponent {
28
29
  constructor(iconCacheService, service, transactionEventService, _transactionConnectorService, _transactionEventService, _screenConfigurationService, _dialogService, _purchaseConfirmationService, _deliveryPlanningService, _transactionBaseService, _changeDetector, _transactionHeaderService, _lineSelection //Do not remove this. While it is not directly used it has its own important subscriptions.
29
30
  ) {
@@ -589,7 +590,8 @@ TransactionInternalComponent.decorators = [
589
590
  </ng-container>
590
591
  `,
591
592
  providers: [
592
- TransactionHeaderService
593
+ TransactionHeaderService,
594
+ TransactionSalesReservationService
593
595
  ],
594
596
  encapsulation: ViewEncapsulation.None
595
597
  },] }
@@ -625,4 +627,4 @@ TransactionInternalComponent.propDecorators = {
625
627
  showClass: [{ type: HostBinding, args: ['class.co-transaction-internal',] }],
626
628
  onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]
627
629
  };
628
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24taW50ZXJuYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taW50ZXJuYWwvdHJhbnNhY3Rpb24taW50ZXJuYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFhLFlBQVksRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsTCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHNFQUFzRSxDQUFDO0FBRXZILE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQzdHLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBR2xGLE9BQU8sRUFBQyxl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SUFBSTthQUN0Qzs7O1lBcE1PLGdCQUFnQjtZQUNoQixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBUXZCLDJCQUEyQjtZQVIzQix1QkFBdUI7WUFDdkIscUNBQXFDO1lBQ3JDLHdCQUF3QjtZQU94QiwyQkFBMkI7WUFLM0IsdUJBQXVCO1lBR3ZCLHNCQUFzQjtZQS9CdEIsaUJBQWlCO1lBZ0NqQix3QkFBd0I7WUFDeEIsb0JBQW9COzs7a0NBeUx6QixZQUFZLFNBQUMsaUNBQWlDO3FDQUc5QyxLQUFLOzJCQWNMLEtBQUs7MEJBR0wsS0FBSzt5QkFXTCxLQUFLO2tDQUdMLEtBQUs7a0NBR0wsS0FBSzs2QkFHTCxLQUFLO2dDQUdMLEtBQUs7K0JBT0wsTUFBTTs4QkFHTixXQUFXLFNBQUMseUJBQXlCLGNBQ3JDLEtBQUs7NEJBR0wsV0FBVyxTQUFDLHVCQUF1QixjQUNuQyxLQUFLO3dCQUdMLFdBQVcsU0FBQywrQkFBK0I7dUJBSzNDLFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSBmcm9tICcuLi8uLi9lbnVtL3RyYW5zYWN0aW9uLXR5cGUtY2F0ZWdvcnkuZW51bSc7XG5pbXBvcnQge0NvbnRlbnRWaWV3TW9kZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcbmltcG9ydCB7VHJhbnNhY3Rpb25DZmdOYW1lfSBmcm9tICcuLi8uLi9lbnVtL3RyYW5zYWN0aW9uLWNmZy1uYW1lLmVudW0nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVTaWRlUGFuZWxDb21wb25lbnR9IGZyb20gJy4uL3RyYW5zYWN0aW9uLWxpbmUtc2lkZS1wYW5lbC90cmFuc2FjdGlvbi1saW5lLXNpZGUtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tICcuLi8uLi9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZSc7XG5pbXBvcnQge0N1c3RvbWVyRnVsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XG5pbXBvcnQge1N0YXR1c0JhckNmZ05hbWVzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2Uvc3RhdHVzLWJhci1jZmctbmFtZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNjcmVlbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkJhckJ1dHRvbn0gZnJvbSAnLi4vLi4vbW9kZWwvdHJhbnNhY3Rpb24tYmFyLWJ1dHRvbic7XG5pbXBvcnQge1RyYW5zYWN0aW9uQWRkVGV4dExpbmVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLXRleHQtbGluZS1yZXF1ZXN0LmJvJztcbmltcG9ydCB7T3JkZXJMaW5lU2V0RFRPfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZS1zZXQtZHRvJztcbmltcG9ydCB7T3JkZXJMaW5lU2V0SW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmUtc2V0LWluZm8uYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkFkZE9yZGVyTGluZVNldFRleHRMaW5lUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFkZC1vcmRlci1saW5lLXNldC10ZXh0LWxpbmUtcmVxdWVzdCc7XG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQge1B1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wdXJjaGFzZS1jb25maXJtYXRpb24uc2VydmljZSc7XG5pbXBvcnQge2lzTmlsbH0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdXRpbHMvZnVuY3Rpb24vaXMtbmlsbC5mdW5jdGlvbic7XG5pbXBvcnQge1Bvc09yZGVyRGF0YX0gZnJvbSAnLi4vLi4vbW9kZWwvcG9zLW9yZGVyLWRhdGEnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uTWFyZ2luSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLW1hcmdpbi1pbmZvLmJvJztcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1NlcnZpY2V9IGZyb20gJy4uL2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZSc7XG5pbXBvcnQge1BsYW5PcmRlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm8nO1xuaW1wb3J0IHtQbGFubmluZ30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25CYXNlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkhlYWRlclNlcnZpY2V9IGZyb20gJy4uL2NvcmUvYmFzZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLWhlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7TGluZVNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvbGluZS1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUNvcHlSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1jb3B5LXJlcXVlc3QuYm8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjby10cmFuc2FjdGlvbi1pbnRlcm5hbCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVkICYmIGN1c3RvbWVyUG9ydGFsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmVzLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgKm5nSWY9XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kICE9PSAnUydcIj5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlci1jdXN0b21lci1wb3J0YWwgW3Nob3dQcmVmZXJyZWRQbGFubmluZ109XCJzaG93UHJlZmVycmVkUGxhbm5pbmdcIiBbdHJhbnNhY3Rpb25dPVwidHJhbnNhY3Rpb25cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlci1jdXN0b21lci1wb3J0YWw+XG4gICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1saW5lc1xuICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVDYXRlZ29yeV09XCJhY3RpdmVDYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgKHNhdmVUcmFuc2FjdGlvbkxpbmUpPVwic2F2ZVRyYW5zYWN0aW9uTGluZVRleHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbWVyUG9ydGFsXT1cImN1c3RvbWVyUG9ydGFsXCI+XG4gICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tbGluZXM+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmVzLXdyYXBwZXJcIiAqbmdJZj1cInRyYW5zYWN0aW9uICYmIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mbyAmJiB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kID09PSAnUydcIj5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLXNlcnZpY2Utb3ZlcnZpZXdcbiAgICAgICAgICAgICAgICAgICAgICBbcG9zT3JkZXJEYXRhXT1cInBvc09yZGVyRGF0YVwiPlxuICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLXNlcnZpY2Utb3ZlcnZpZXc+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlZCAgJiYgIWN1c3RvbWVyUG9ydGFsXCI+XG4gICAgICAgICAgPGNvLWNsaWNrLWJsb2NrPjwvY28tY2xpY2stYmxvY2s+XG4gICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWhlYWRlciAqbmdJZj1cInNob3dIZWFkZXJcIiBbdHJhbnNhY3Rpb25dPVwidHJhbnNhY3Rpb25cIj48L2NvLXRyYW5zYWN0aW9uLWhlYWRlcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1xdWljay1hY2Nlc3MgKm5nSWY9XCJzaG93UXVpY2tBY2Nlc3NcIiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmVzLWhlYWRlci1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25LaW5kXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVDYXRlZ29yeV09XCJhY3RpdmVDYXRlZ29yeVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1xdWljay1hY2Nlc3M+XG4gICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1idXR0b24tYmFyICpuZ0lmPVwic2hvd0J1dHRvbkJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtaGVhZGVyLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRDYXRlZ29yeV09XCJhY3RpdmVDYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cImhhbmRsZUJ1dHRvbkJhckJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWJ1dHRvbi1iYXI+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmVzLWhlYWRlci1pdGVtIHJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8Y28tYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJhbnNhY3Rpb24tc2FsZXMtYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbGF0aW9uSWRdPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhhbmRsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImNmZ05hbWVzLkhlYWRlckhhbmRsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICA8L2NvLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDxjby1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmFuc2FjdGlvbi1zYWxlcy1hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsYXRpb25JZF09XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uYnJhbmNoPy5yZWxhdGlvbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuSGVhZGVyQnJhbmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudD5cbiAgICAgICAgICAgICAgICAgIDwvY28tYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPGNvLXZpZXctbW9kZS1idXR0b25zICpuZ0lmPVwiIXNob3VsZFNob3dUaWxlcygpICYmIHNob3dWaWV3TW9kZUJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Vmlld01vZGVzXT1cIlt2aWV3TW9kZXMuTGlzdCwgdmlld01vZGVzLlRpbGVzXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXdNb2RlQ2hhbmdlKT1cImhhbmRsZVZpZXdNb2RlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDwvY28tdmlldy1tb2RlLWJ1dHRvbnM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmVzLWNvbnRlbnQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8IS0tPGNvLXRyYW5zYWN0aW9uLWRvY3VtZW50LWJ1dHRvbi1iYXIgW3RyYW5zYWN0aW9uXT1cInRyYW5zYWN0aW9uXCI+PC9jby10cmFuc2FjdGlvbi1kb2N1bWVudC1idXR0b24tYmFyPi0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yeS5TZXJ2aWNlT3JkZXJTZXJ2aWNlICYmIHRyYW5zYWN0aW9uICYmIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mbyAmJiB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kID09PSAnUydcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tc2VydmljZS1vdmVydmlldyBbcG9zT3JkZXJEYXRhXT1cInBvc09yZGVyRGF0YVwiPjwvY28tdHJhbnNhY3Rpb24tc2VydmljZS1vdmVydmlldz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLXRpbGVzLXdyYXBwZXJcIiAqbmdJZj1cImFjdGl2ZVZpZXdNb2RlID09PSB2aWV3TW9kZXMuVGlsZXMgfHwgc2hvdWxkU2hvd1RpbGVzKCkgfHwgdHJhbnNhY3Rpb25QbGFubmluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1jYXJkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUNhdGVnb3J5XT1cImFjdGl2ZUNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wbGFubmluZy1jYXJkc109XCJ0cmFuc2FjdGlvblBsYW5uaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1jYXJkcz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmVzLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihhY3RpdmVWaWV3TW9kZSA9PT0gdmlld01vZGVzLkxpc3QgJiYgIXNob3VsZFNob3dUaWxlcygpKSAmJiBhY3RpdmVDYXRlZ29yeSAhPT0gY2F0ZWdvcnkuU2VydmljZU9yZGVyU2VydmljZSAmJiAhdHJhbnNhY3Rpb25QbGFubmluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1saW5lc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUNhdGVnb3J5XT1cImFjdGl2ZUNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlVHJhbnNhY3Rpb25MaW5lKT1cInNhdmVUcmFuc2FjdGlvbkxpbmVUZXh0KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWxpbmVzPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tZm9vdGVyLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tZm9vdGVyLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWFkZC1wcm9kdWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVDYXRlZ29yeSA9PT0gY2F0ZWdvcmllcy5TYWxlc09yZGVyQ2FzaFJlZ2lzdGVyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlNhbGVzT3JkZXJPdmVydmlldyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVDYXRlZ29yeSA9PT0gY2F0ZWdvcmllcy5QdXJjaGFzZU9yZGVyT3ZlcnZpZXcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPT09IGNhdGVnb3JpZXMuU2FsZXNPcmRlclF1b3RhdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVDYXRlZ29yeSA9PT0gY2F0ZWdvcmllcy5TZXJ2aWNlT3JkZXJPdmVydmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWFkZC1wcm9kdWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tYnV0dG9uICpuZ0lmPVwiYWN0aXZlQ2F0ZWdvcnkgPT09IGNhdGVnb3JpZXMuU2FsZXNPcmRlckNhc2hSZWdpc3RlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlNhbGVzT3JkZXJPdmVydmlldyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlB1cmNoYXNlT3JkZXJPdmVydmlldyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlNhbGVzT3JkZXJRdW90YXRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVDYXRlZ29yeSA9PT0gY2F0ZWdvcmllcy5TZXJ2aWNlT3JkZXJPdmVydmlld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20td2lkdGggdGV4dC1ydWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlRleHRTb2xpZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVUcmFuc2FjdGlvblRleHQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1mb290ZXItY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1tYXJnaW4gKm5nSWY9XCJhY3RpdmVDYXRlZ29yeSA9PT0gY2F0ZWdvcmllcy5TYWxlc09yZGVyTWFyZ2luSW5mb1wiPjwvY28tdHJhbnNhY3Rpb24tbWFyZ2luPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi10b3RhbHMgKm5nSWY9XCIoYWN0aXZlQ2F0ZWdvcnkgIT09IGNhdGVnb3J5LlNlcnZpY2VPcmRlclNlcnZpY2UgJiYgYWN0aXZlQ2F0ZWdvcnkgIT09IGNhdGVnb3J5LlNhbGVzT3JkZXJQdXJjaGFzZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEaXNjb3VudF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi10b3RhbHM+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWxpbmVzLXNpZGUtcGFuZWwgKm5nSWY9XCJ0cmFuc2FjdGlvbiAmJiAodHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZCA9PT0gdHJhbnNhY3Rpb25LaW5kLkNhc2hEZXNrICYmICFmdWxseUludm9pY2VkKCkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc09yZGVyRGF0YV09XCJwb3NPcmRlckRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25dPVwidHJhbnNhY3Rpb25cIj5cbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1saW5lcy1zaWRlLXBhbmVsPlxuXG4gICAgICAgICAgICAgIDwhLS0gICAgICAgIDxjby10cmFuc2FjdGlvbi1saW5lLXNpZGUtcGFuZWwgKm5nSWY9XCJzaG93U2lkZVBhbmVsXCItLT5cbiAgICAgICAgICAgICAgPCEtLSAgICAgICAgICBbdHJhbnNhY3Rpb25dPVwidHJhbnNhY3Rpb25cIi0tPlxuICAgICAgICAgICAgICA8IS0tICAgICAgICAgIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCItLT5cbiAgICAgICAgICAgICAgPCEtLSAgICAgICAgICBbdHJhbnNhY3Rpb25MaW5lXT1cInNpZGVQYW5lbFRyYW5zYWN0aW9uTGluZVwiLS0+XG4gICAgICAgICAgICAgIDwhLS0gICAgICAgICAgW2FjdGl2ZUNhdGVnb3J5XT1cImFjdGl2ZUNhdGVnb3J5XCItLT5cbiAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAoY2FuY2VsQ2xpY2spPVwic2hvd1NpZGVQYW5lbCA9IGZhbHNlXCI+LS0+XG4gICAgICAgICAgICAgIDwhLS0gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tbGluZS1zaWRlLXBhbmVsPi0tPlxuXG5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLXNhbGVzLXJlc2VydmF0aW9uLXBvcHVwICpuZ0lmPVwic2hvd1Jlc2VydmF0aW9uUG9wdXBcIiBbdHJhbnNhY3Rpb25JZF09XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWRcIj48L2NvLXRyYW5zYWN0aW9uLXNhbGVzLXJlc2VydmF0aW9uLXBvcHVwPlxuICAgICAgICAgICAgICA8IS0tUG9wdXAgdm9vciB3aWp6aWdlbiB2b2xnb3JkZSB2YW4gdGVrc3RyZWdlbHMtLT5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWFydGljbGUtdGV4dC1vdmVydmlldyAqbmdJZj1cInNob3dBcnRpY2xlVGV4dE92ZXJ2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25JbmZvXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uTGluZV09XCJ0cmFuc2FjdGlvbkxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cImNsb3NlQXJ0aWNsZVRleHRPdmVydmlldygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FuY2VsQ2xpY2spPVwiY2xvc2VBcnRpY2xlVGV4dE92ZXJ2aWV3KClcIj5cbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQtb3ZlcnZpZXc+XG5cbiAgICAgICAgICAgICAgPCEtLVBvcHVwIHZvb3IgYWFubWFrZW4gZW4gdXBkYXRlbiB0cmFuc2FjdGlldGVrc3RyZWdlbHMtLT5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWFydGljbGUtdGV4dCAqbmdJZj1cInNob3dUcmFuc2FjdGlvblRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwiJ09SREVSX1RFWFRfTElORScgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uVXVpZF09XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRUZXh0XT1cInRleHRUb0VkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlckxpbmVTZXREVE9dPVwic2VsZWN0ZWRPcmRlckxpbmVTZXREVE9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbkxpbmVdPVwidHJhbnNhY3Rpb25MaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZUNsaWNrKT1cInNhdmVUcmFuc2FjdGlvbkxpbmVUZXh0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cImNsb3NlVHJhbnNhY3Rpb25UZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxDbGljayk9XCJjbG9zZVRyYW5zYWN0aW9uVGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZU9yZGVyTGluZVNldENsaWNrKT1cInNhdmVPcmRlckxpbmVTZXQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWFydGljbGUtdGV4dD5cblxuICAgICAgICAgICAgICA8IS0tUG9wdXAgdm9vciBhYW5tYWtlbiBlbiB1cGRhdGVuIGFydGlrZWx0ZWtzdHJlZ2Vscy0tPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0ICpuZ0lmPVwic2hvd0FydGljbGVUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyXT1cIidQUk9EVUNUX0RFU0NSSVBUSU9OX0FORF9URVhUUycgfCBsb2NhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uVXVpZF09XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dBcnRpY2xlSW1hZ2VEZXNjcmlwdGlvbl09XCJ0cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ltYWdlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZUxpbmVOcl09XCJ0cmFuc2FjdGlvbkxpbmUubGluZU5yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZVJlZl09XCJ0cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZU51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uTGluZV09XCJ0cmFuc2FjdGlvbkxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0VGV4dF09XCJ0ZXh0VG9FZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZUNsaWNrKT1cInNhdmVBcnRpY2xlTGluZVRleHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiY2xvc2VBcnRpY2xlVGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FuY2VsQ2xpY2spPVwiY2xvc2VBcnRpY2xlVGV4dCgpXCI+XG4gICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0PlxuXG4gICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1jb3B5LW9yZGVyICpuZ0lmPVwic2hvd0NvcHlPcmRlckRpYWxvZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZURpYWxvZyk9XCJzaG93Q29weU9yZGVyRGlhbG9nID0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1jb3B5LW9yZGVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gUG9wIHVwIHZvb3Igdm9vcnJhYWQtLT5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWFydGljbGUtc3RvY2stZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QXJ0aWNsZVN0b2NrUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcnRpY2xlXT1cInN0b2NrR29vZElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJjbG9zZUFydGljbGVTdG9ja1BvcHVwKClcIj5cbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1hcnRpY2xlLXN0b2NrLWRpYWxvZz5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gIGAsXG4gIHByb3ZpZGVyczogW1xuICAgIFRyYW5zYWN0aW9uSGVhZGVyU2VydmljZVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uSW50ZXJuYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSBjYXRlZ29yaWVzOiB0eXBlb2YgVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkgPSBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeTtcbiAgcHVibGljIHJlYWRvbmx5IHZpZXdNb2RlczogdHlwZW9mIENvbnRlbnRWaWV3TW9kZSA9IENvbnRlbnRWaWV3TW9kZTtcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XG4gIHB1YmxpYyByZWFkb25seSBjZmdOYW1lczogdHlwZW9mIFRyYW5zYWN0aW9uQ2ZnTmFtZSA9IFRyYW5zYWN0aW9uQ2ZnTmFtZTtcbiAgcHVibGljIHJlYWRvbmx5IHRyYW5zYWN0aW9uS2luZDogdHlwZW9mIFRyYW5zYWN0aW9uS2luZCA9IFRyYW5zYWN0aW9uS2luZDtcbiAgcHVibGljIHJlYWRvbmx5IGNhdGVnb3J5OiB0eXBlb2YgVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkgPSBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeTtcbiAgcHVibGljIHNjcmVlbldpZHRoOiBudW1iZXI7XG5cbiAgQFZpZXdDaGlsZHJlbihUcmFuc2FjdGlvbkxpbmVTaWRlUGFuZWxDb21wb25lbnQpXG4gIHB1YmxpYyBzaWRlUGFuZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VHJhbnNhY3Rpb25MaW5lU2lkZVBhbmVsQ29tcG9uZW50PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbmZpcm1hdGlvbkFuYWx5c2lzSWQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2NvbmZpcm1hdGlvbkFuYWx5c2lzSWQgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VydmljZS5hY3RpdmVSdWJyaWMgPSBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5QdXJjaGFzZU9yZGVyT3JkZXJDb25maXJtYXRpb247XG4gICAgICB0aGlzLmFjdGl2ZUNhdGVnb3J5ID0gVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9uO1xuICAgIH1cbiAgICB0aGlzLl9wdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybWF0aW9uQW5hbHlzaXNJZCA9IHRoaXMuX2NvbmZpcm1hdGlvbkFuYWx5c2lzSWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpcm1hdGlvbkFuYWx5c2lzSWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlybWF0aW9uQW5hbHlzaXNJZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb3NPcmRlckRhdGE6IFBvc09yZGVyRGF0YTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRyYW5zYWN0aW9uKHZhbHVlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dWaWV3TW9kZUJ1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmFuc2FjdGlvblBsYW5uaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGN1c3RvbWVyUG9ydGFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlc2V0QWN0aXZlUnVicmljOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQE91dHB1dCgpXG4gIC8vIHB1YmxpYyByZWxhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlbGF0aW9uQW55VHlwZT4oKTtcblxuICAvL1RoaXMgb3V0cHV0IGV4aXN0cyBmb3IgYnVuZGxlIHB1cnBvc2VzLlxuICBAT3V0cHV0KClcbiAgcHVibGljIHNlcnZpY2VSZXF1ZXN0ZWQ6IEV2ZW50RW1pdHRlcjx7IHRyYW5zYWN0aW9uTnI6IG51bWJlciwgdHJhbnNhY3Rpb25JZDogbnVtYmVyLCBsaW5lTnI6IG51bWJlciB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0cmFuc2FjdGlvbk5yOiBudW1iZXIsIHRyYW5zYWN0aW9uSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIgfT4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNob3ctcXVpY2stYWNjZXNzJylcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dRdWlja0FjY2VzczogYm9vbGVhbiA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zaG93LWJ1dHRvbi1iYXInKVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0J1dHRvbkJhcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby10cmFuc2FjdGlvbi1pbnRlcm5hbCcpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2NyZWVuV2lkdGggPSBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmVWaWV3TW9kZTogQ29udGVudFZpZXdNb2RlID0gQ29udGVudFZpZXdNb2RlLkxpc3Q7XG4gIHB1YmxpYyBhY3RpdmVDYXRlZ29yeTogVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnk7XG4gIHB1YmxpYyBzaWRlUGFuZWxUcmFuc2FjdGlvbkxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XG4gIHB1YmxpYyB0cmFuc2FjdGlvbkxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XG4gIHB1YmxpYyBzZWxlY3RlZE9yZGVyTGluZVNldERUTzogT3JkZXJMaW5lU2V0RFRPO1xuICBwdWJsaWMgc2hvd1NpZGVQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2hvdWxkU2hvd1NpZGVQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd0FydGljbGVUZXh0T3ZlcnZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dSZXNlcnZhdGlvblBvcHVwOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93VHJhbnNhY3Rpb25UZXh0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93QXJ0aWNsZVRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dDb3B5T3JkZXJEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dBcnRpY2xlU3RvY2tQb3B1cDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd1ByZWZlcnJlZFBsYW5uaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzdG9ja0dvb2RJZDogbnVtYmVyO1xuXG4gIHB1YmxpYyBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHRleHRUb0VkaXQ6IHN0cmluZztcbiAgcHVibGljIHJlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUgPSBuZXcgQ3VzdG9tZXJGdWxsT2JqZWN0KCk7XG4gIHB1YmxpYyBoaXN0b3JpY1RyYW5zYWN0aW9uTGluZXM6IFRyYW5zYWN0aW9uTGluZUluZm9bXSB8IG51bGw7XG4gIHB1YmxpYyB0cmFuc2FjdGlvbk1hcmdpbkluZm86IFRyYW5zYWN0aW9uTWFyZ2luSW5mbyA9IG5ldyBUcmFuc2FjdGlvbk1hcmdpbkluZm8oKTtcblxuICBwdWJsaWMgbGluZURyYWdnZWRPdmVyOiBudW1iZXI7XG5cbiAgcHVibGljIHN0YXR1c0JhckNvbmZpZ05hbWVzOiBTdGF0dXNCYXJDZmdOYW1lcyA9IHtcbiAgICBzdGF0dXNCYXJCVDogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJCVCxcbiAgICBzdGF0dXNCYXJURzogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJURyxcbiAgICBzdGF0dXNCYXJQQTogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJQQSxcbiAgICBzdGF0dXNCYXJQVjogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJQVixcbiAgICBzdGF0dXNCYXJUUDogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJUUCxcbiAgICBzdGF0dXNCYXJHVDogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJHVCxcbiAgICBzdGF0dXNCYXJHUDogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJHUCxcbiAgICBzdGF0dXNCYXJHTDogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJHTCxcbiAgICBzdGF0dXNCYXJHRjogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJHRixcbiAgICBzdGF0dXNCYXJJQjogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJJQixcbiAgICBzdGF0dXNCYXJOVDogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJOVCxcbiAgICBzdGF0dXNCYXJCTjogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJCTixcbiAgICBzdGF0dXNCYXJCRzogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJCRyxcbiAgICBzdGF0dXNCYXJGQzogdGhpcy5jZmdOYW1lcy5TdGF0dXNCYXJGQ1xuICB9O1xuXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSA9IG5ldyBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSgpO1xuICBwcml2YXRlIF9jb25maXJtYXRpb25BbmFseXNpc0lkOiBudW1iZXI7XG4gIHByaXZhdGUgX2VkaXRBcnRpY2xlVGV4dFJlZkxpbmVOcjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlOiBUcmFuc2FjdGlvbkV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2U6IFRyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZSxcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfc2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogVHJhbnNhY3Rpb25EaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3B1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZTogUHVyY2hhc2VDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlOiBEZWxpdmVyeVBsYW5uaW5nU2VydmljZSxcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkJhc2VTZXJ2aWNlOiBUcmFuc2FjdGlvbkJhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF90cmFuc2FjdGlvbkhlYWRlclNlcnZpY2U6IFRyYW5zYWN0aW9uSGVhZGVyU2VydmljZSxcbiAgICBwcml2YXRlIF9saW5lU2VsZWN0aW9uOiBMaW5lU2VsZWN0aW9uU2VydmljZSAvL0RvIG5vdCByZW1vdmUgdGhpcy4gV2hpbGUgaXQgaXMgbm90IGRpcmVjdGx5IHVzZWQgaXQgaGFzIGl0cyBvd24gaW1wb3J0YW50IHN1YnNjcmlwdGlvbnMuXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLl9zdWJzLnB1c2goXG4gICAgICB0aGlzLnNlcnZpY2UudHJhbnNhY3Rpb25VcGRhdGVkLnN1YnNjcmliZSgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICh0cmFuc2FjdGlvbikge1xuICAgICAgICAgIHRoaXMuc2hvdWxkU2hvd1NpZGVQYW5lbCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UudHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcblxuICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIHRoaXMudXBkYXRlVHJhbnNhY3Rpb25MaW5lKCk7XG4gICAgICAgICAgLy8gaWYgKHRyYW5zYWN0aW9uPy50cmFuc2FjdGlvbkluZm8/LnV1aWQpIHtcbiAgICAgICAgICAvLyAgIHRoaXMuZ2V0VHJhbnNhY3Rpb25NYXJnaW5JbmZvKHRyYW5zYWN0aW9uPy50cmFuc2FjdGlvbkluZm8/LnV1aWQpO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBpZiAodHJhbnNhY3Rpb24/LnRyYW5zYWN0aW9uSW5mby5pZCAmJiB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kID09PSBUcmFuc2FjdGlvbktpbmQuU2FsZXNPcmRlcikge1xuICAgICAgICAgICAgdGhpcy5nZXRQbGFuT3JkZXJGb3JUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICAgICAgICB0aGlzLmNoZWNrUHJlZmVycmVkUGxhbm5pbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGhpcy5zZXJ2aWNlLnJlbGF0aW9uVXBkYXRlZC5zdWJzY3JpYmUoKHJlbGF0aW9uOiBSZWxhdGlvbkFueVR5cGUpID0+IHtcbiAgICAgICAgaWYgKHJlbGF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5yZWxhdGlvbiA9IHJlbGF0aW9uO1xuICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSGVhZGVyU2VydmljZS5yZWxhdGlvbiA9IHJlbGF0aW9uO1xuICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0aGlzLnNlcnZpY2UudHJhbnNhY3Rpb25LaW5kU2V0LnN1YnNjcmliZSgoc2V0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChzZXQpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNhdGVnb3J5ID0gdGhpcy5jb25maXJtYXRpb25BbmFseXNpc0lkID8gVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9uIDogdGhpcy5zZXJ2aWNlLmFjdGl2ZVJ1YnJpYztcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UuY29ubmVjdGlvbkluaXRpYWxpemVkLnN1YnNjcmliZSgoaW5pdGlhbGl6ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uSGVhZGVyU2VydmljZS5yZXNlcnZhdGlvblBvcHVwVG9nZ2xlLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5zaG93UmVzZXJ2YXRpb25Qb3B1cCA9ICF0aGlzLnNob3dSZXNlcnZhdGlvblBvcHVwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2hvd1Jlc2VydmF0aW9uUG9wdXAgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmFjdGl2ZVJ1YnJpY0NoYW5nZS5zdWJzY3JpYmUoKHJ1YnJpYzp7IGNhdGVnb3J5OlRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LCBzaWRlcGFuZWw6IGJvb2xlYW59KSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcnkgPSBydWJyaWMuY2F0ZWdvcnk7XG4gICAgICAgIGlmKCBydWJyaWMuY2F0ZWdvcnkgPT09IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJQbGFubmluZykge1xuICAgICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZS5nZXRQbGFuT3JkZXIodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpLnRoZW4oIChwbGFuT3JkZXI6IFBsYW5PcmRlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmN1cnJlbnRQbGFuT3JkZXIgPSBwbGFuT3JkZXI7XG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLm5ld1BsYW5PcmRlckV2ZW50Lm5leHQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCEhcnVicmljLnNpZGVwYW5lbCkge1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uub3BlblNpZGVQYW5lbC5uZXh0KHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgLy8gdGhpcy5fcHVyY2hhc2VDb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm1hdGlvbk5lZWRlZC5zdWJzY3JpYmUoKG5lZWRlZDogYm9vbGVhbikgPT4ge1xuICAgICAgLy8gICBpZiAobmVlZGVkKSB7XG4gICAgICAvLyAgICAgdGhpcy5zaG91bGRTaG93U2lkZVBhbmVsID0gdHJ1ZTtcbiAgICAgIC8vICAgICB0aGlzLmhhbmRsZVNob3dTaWRlUGFuZWwodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzWzBdLCB0cnVlKTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSksXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnRyYW5zYWN0aW9uTGluZURyYWdnZWRPdmVyLnN1YnNjcmliZSgobGluZU5yKSA9PiB7XG4gICAgICAgIHRoaXMubGluZURyYWdnZWRPdmVyID0gbGluZU5yO1xuICAgICAgfSksXG4gICAgICAvLyB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5vcGVuU2lkZVBhbmVsLnN1YnNjcmliZSgobGluZSkgPT4gdGhpcy5oYW5kbGVTaG93U2lkZVBhbmVsKGxpbmUpKSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLm9wZW5BcnRpY2xlVGV4dE92ZXJ2aWV3LnN1YnNjcmliZSgobGluZSkgPT4gdGhpcy5oYW5kbGVTaG93QXJ0aWNsZVRleHRPdmVydmlldyhsaW5lKSksXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5hZGRUcmFuc2FjdGlvblRleHQuc3Vic2NyaWJlKChsaW5lKSA9PiB0aGlzLmhhbmRsZVNob3dUcmFuc2FjdGlvblRleHQobGluZSkpLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuYWRkQXJ0aWNsZVRleHQuc3Vic2NyaWJlKChsaW5lKSA9PiB0aGlzLmhhbmRsZVNob3dBcnRpY2xlVGV4dChsaW5lKSksXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5lZGl0VHJhbnNhY3Rpb25UZXh0LnN1YnNjcmliZSgobGluZSkgPT4gdGhpcy5oYW5kbGVFZGl0VHJhbnNhY3Rpb25UZXh0KGxpbmUpKSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmVkaXRBcnRpY2xlVGV4dC5zdWJzY3JpYmUoKGxpbmUpID0+IHRoaXMuaGFuZGxlRWRpdEFydGljbGVUZXh0KGxpbmUpKSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmNyZWF0ZVNlcnZpY2VCdXR0b25DbGlja2VkLnN1YnNjcmliZSgobGluZU5yKSA9PiB0aGlzLmhhbmRsZUNyZWF0ZVNlcnZpY2VSZXF1ZXN0KGxpbmVOcikpLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uudmlld1N0b2NrQnV0dG9uQ2xpY2suc3Vic2NyaWJlKChnb29kSWQpID0+IHRoaXMuaGFuZGxlVmlld1N0b2NrKGdvb2RJZCkpLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuY29weUxpbmVCdXR0b25DbGljay5zdWJzY3JpYmUoKGxpbmUpID0+IHRoaXMuaGFuZGxlQ29weVRyYW5zYWN0aW9uTGluZShsaW5lKSksXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zaG93RXJyb3Iuc3Vic2NyaWJlKChlKSA9PlxuICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlLnNob3dFcnJvcihlLm1lc3NhZ2UsIGUubG9jYWxpemUsIGUuZGV0YWlscykpLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuY29weU9yZGVyLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3dDb3B5T3JkZXJEaWFsb2cgPSB0cnVlKVxuICAgICk7XG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuXG4gICAgaWYgKHRoaXMucmVzZXRBY3RpdmVSdWJyaWMpIHtcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uQmFzZVNlcnZpY2Uuc2V0RGVmYXVsdEFjdGl2ZVJ1YnJpY0Zyb21UcmFuc2FjdGlvbktpbmQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBoYW5kbGVSZWxhdGlvbkNoYW5nZShyZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlKTogdm9pZCB7XG4gIC8vICAgdGhpcy5zZXJ2aWNlLnJlbGF0aW9uID0gcmVsYXRpb247XG4gIC8vIH1cblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQnV0dG9uQmFyQnV0dG9uQ2xpY2tlZChidXR0b246IFRyYW5zYWN0aW9uQmFyQnV0dG9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5hY3RpdmVDYXRlZ29yeSA9IGJ1dHRvbi5jYXRlZ29yeTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGVja1ByZWZlcnJlZFBsYW5uaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uICYmIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkKSB7XG4gICAgICB0aGlzLnNob3dQcmVmZXJyZWRQbGFubmluZyA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZS5nZXRQQVN0YXR1c0Zyb21UcmFuc2FjdGlvbih0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVNob3dTaWRlUGFuZWwobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChsaW5lIHx8IGZvcmNlKSB7XG4gICAgICB0aGlzLnNpZGVQYW5lbFRyYW5zYWN0aW9uTGluZSA9IGxpbmU7XG4gICAgICB0aGlzLnNob3dTaWRlUGFuZWwgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVUcmFuc2FjdGlvblRleHQoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5hZGRUcmFuc2FjdGlvblRleHQubmV4dCh0aGlzLnRyYW5zYWN0aW9uTGluZSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2hvd0FydGljbGVUZXh0T3ZlcnZpZXcobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IHZvaWQge1xuICAgIGlmIChsaW5lKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZSA9IGxpbmU7XG4gICAgICB0aGlzLnNob3dBcnRpY2xlVGV4dE92ZXJ2aWV3ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2hvd1RyYW5zYWN0aW9uVGV4dChsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbkxpbmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50ZXh0VG9FZGl0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRPcmRlckxpbmVTZXREVE8gPSBuZXcgT3JkZXJMaW5lU2V0RFRPKCk7XG4gICAgdGhpcy5zaG93VHJhbnNhY3Rpb25UZXh0RGlhbG9nKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2hvd0FydGljbGVUZXh0KGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pOiB2b2lkIHtcbiAgICBpZiAobGluZSkge1xuICAgICAgdGhpcy50ZXh0VG9FZGl0ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy50cmFuc2FjdGlvbkxpbmUgPSBsaW5lO1xuICAgICAgdGhpcy5zaG93QXJ0aWNsZVRleHREaWFsb2coKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZVRyYW5zYWN0aW9uTGluZVRleHQoZGF0YTogeyByZXF1ZXN0OiBUcmFuc2FjdGlvbkFkZFRleHRMaW5lUmVxdWVzdCwgbmV3OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWRhdGEubmV3KSB7IC8vdXBkYXRlXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UudXBkYXRlVGV4dExpbmUoZGF0YS5yZXF1ZXN0LnRyYW5zYWN0aW9uVXVpZCwgdGhpcy50cmFuc2FjdGlvbkxpbmUudXVpZCwgZGF0YS5yZXF1ZXN0LnNob3dPbkRvY3VtZW50cywgZGF0YS5yZXF1ZXN0LnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkVGV4dExpbmUoXG4gICAgICAgIGRhdGEucmVxdWVzdC5zaG93T25Eb2N1bWVudHMsXG4gICAgICAgIGRhdGEucmVxdWVzdC50ZXh0LFxuICAgICAgICAwLFxuICAgICAgICBkYXRhLnJlcXVlc3QuYXJ0aWNsZUJvdW5kLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICAwKTtcbiAgICB9XG5cbiAgICB0aGlzLl9oaWRlVHJhbnNhY3Rpb25UZXh0RGlhbG9nKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZU9yZGVyTGluZVNldChkYXRhOiB7IHJlcXVlc3Q6IE9yZGVyTGluZVNldERUTywgbmV3OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWRhdGEubmV3KSB7XG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UudXBkYXRlT3JkZXJMaW5lU2V0KGRhdGEucmVxdWVzdCk7XG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UudXBkYXRlVGV4dExpbmUoZGF0YS5yZXF1ZXN0LnRyYW5zYWN0aW9uVXVpZCwgdGhpcy50cmFuc2FjdGlvbkxpbmUudXVpZCwgZGF0YS5yZXF1ZXN0LnNob3dPbkRvY3VtZW50cywgZGF0YS5yZXF1ZXN0LnRpdGxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3UmVxdWVzdDogVHJhbnNhY3Rpb25BZGRPcmRlckxpbmVTZXRUZXh0TGluZVJlcXVlc3QgPSBuZXcgVHJhbnNhY3Rpb25BZGRPcmRlckxpbmVTZXRUZXh0TGluZVJlcXVlc3QoKTtcbiAgICAgIG5ld1JlcXVlc3Qub3JkZXJMaW5lU2V0VGV4dCA9IGRhdGEucmVxdWVzdC50ZXh0O1xuICAgICAgbmV3UmVxdWVzdC5hbW91bnQgPSBkYXRhLnJlcXVlc3QuYW1vdW50O1xuICAgICAgbmV3UmVxdWVzdC5jYXRlZ29yeUlkID0gZGF0YS5yZXF1ZXN0LmNhdGVnb3J5SWQ7XG4gICAgICBuZXdSZXF1ZXN0LmNvbG9yID0gZGF0YS5yZXF1ZXN0LmNvbG9yO1xuICAgICAgbmV3UmVxdWVzdC50cmFuc2FjdGlvblV1aWQgPSBkYXRhLnJlcXVlc3QudHJhbnNhY3Rpb25VdWlkO1xuICAgICAgbmV3UmVxdWVzdC5zaG93T25Eb2N1bWVudHMgPSBkYXRhLnJlcXVlc3Quc2hvd09uRG9jdW1lbnRzO1xuICAgICAgbmV3UmVxdWVzdC50ZXh0ID0gZGF0YS5yZXF1ZXN0LnRpdGxlO1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmFkZE9yZGVyTGluZVNldChuZXdSZXF1ZXN0KTtcbiAgICB9XG4gICAgdGhpcy5faGlkZVRyYW5zYWN0aW9uVGV4dERpYWxvZygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNhdmVBcnRpY2xlTGluZVRleHQoZGF0YTogeyByZXF1ZXN0OiBUcmFuc2FjdGlvbkFkZFRleHRMaW5lUmVxdWVzdCwgbmV3OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWRhdGEubmV3KSB7IC8vdXBkYXRlXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UudXBkYXRlVGV4dExpbmUoZGF0YS5yZXF1ZXN0LnRyYW5zYWN0aW9uVXVpZCwgdGhpcy50cmFuc2FjdGlvbkxpbmUudXVpZCwgZGF0YS5yZXF1ZXN0LnNob3dPbkRvY3VtZW50cywgZGF0YS5yZXF1ZXN0LnRleHQpO1xuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5hcnRpY2xlTGluZVRleHRBZGRlZE9yQ2hhbmdlZC5uZXh0KHRoaXMuX2VkaXRBcnRpY2xlVGV4dFJlZkxpbmVOcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUZXh0TGluZShcbiAgICAgICAgZGF0YS5yZXF1ZXN0LnNob3dPbkRvY3VtZW50cyxcbiAgICAgICAgZGF0YS5yZXF1ZXN0LnRleHQsXG4gICAgICAgIDAsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGRhdGEucmVxdWVzdC5yZWZBcnRpY2xlTGluZU5yXG4gICAgICApO1xuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5hcnRpY2xlTGluZVRleHRBZGRlZE9yQ2hhbmdlZC5uZXh0KHRoaXMudHJhbnNhY3Rpb25MaW5lLmxpbmVOcik7XG4gICAgfVxuICAgIHRoaXMuX2hpZGVBcnRpY2xlVGV4dERpYWxvZygpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUVkaXRUcmFuc2FjdGlvblRleHQobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lID0gbGluZTtcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJMaW5lU2V0RFRPID0gdGhpcy5fZ2V0T3JkZXJMaW5lU2V0SWZFeGlzdHMobGluZSk7XG4gICAgaWYgKGlzTmlsbCh0aGlzLnNlbGVjdGVkT3JkZXJMaW5lU2V0RFRPKSkge1xuICAgICAgdGhpcy50ZXh0VG9FZGl0ID0gbGluZS50ZXh0O1xuICAgIH1cbiAgICBpZiAobGluZS5pc1RleHQpIHtcbiAgICAgIHRoaXMuc2hvd1RyYW5zYWN0aW9uVGV4dERpYWxvZygpO1xuICAgIH1cbiAgICAvLyBpZiAobGluZS5hcnRpY2xlQm91bmRDb25jYXRlbmF0ZWRUZXh0ICYmIGxpbmUuYXJ0aWNsZUJvdW5kQ29uY2F0ZW5hdGVkVGV4dC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLnNob3dBcnRpY2xlVGV4dE92ZXJ2aWV3RGlhbG9nKCk7XG4gICAgLy8gfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUVkaXRBcnRpY2xlVGV4dChsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0VG9FZGl0ID0gbGluZS50ZXh0O1xuICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lID0gbGluZTtcbiAgICB0aGlzLl9lZGl0QXJ0aWNsZVRleHRSZWZMaW5lTnIgPSBsaW5lLnJlZkxpbmVOcjtcbiAgICB0aGlzLl9oaWRlQXJ0aWNsZVRleHRPdmVydmlld0RpYWxvZygpO1xuICAgIHRoaXMuc2hvd0FydGljbGVUZXh0RGlhbG9nKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ29weVRyYW5zYWN0aW9uTGluZShsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogdm9pZCB7XG4gICAgY29uc3QgY29weVJlcXVlc3Q6VHJhbnNhY3Rpb25MaW5lQ29weVJlcXVlc3QgPSBuZXcgVHJhbnNhY3Rpb25MaW5lQ29weVJlcXVlc3Q7XG4gICAgY29weVJlcXVlc3QubGluZVV1aWQgPSBsaW5lLnV1aWQ7XG4gICAgY29weVJlcXVlc3QudHJhbnNhY3Rpb25VdWlkID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udXVpZDtcbiAgICB0aGlzLnNlcnZpY2UuY29weVRyYW5zYWN0aW9uTGluZShjb3B5UmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ3JlYXRlU2VydmljZVJlcXVlc3QobGluZU5yOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAobGluZU5yICYmIHRoaXMudHJhbnNhY3Rpb24pIHsvKlxuICAgICAgbGV0IHJlcXVlc3Q6Q3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZVRyYW5zYWN0aW9uTGluZVJlcXVlc3QgPSBuZXcgQ3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZVRyYW5zYWN0aW9uTGluZVJlcXVlc3QoKTtcbiAgICAgIHJlcXVlc3Quc291cmNlTGluZU5yID0gbGluZS5saW5lTnI7XG4gICAgICByZXF1ZXN0LnNvdXJjZVRyYW5zSWQgPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZDtcbiAgICAgIHJlcXVlc3QuY3VzdG9tZXJSZWxhdGlvbklkID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24ucmVsYXRpb25JZDtcbiAgICAgIHJlcXVlc3QuYnJhbmNoTnIgPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5icmFuY2gucmVsYXRpb25OcjsqL1xuXG4gICAgICAvKnRoaXMuX3RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZS5jcmVhdGVTZXJ2aWNlT3JkZXJXaXRoU291cmNlVHJhbnNhY3Rpb25MaW5lKHJlcXVlc3QpLnRoZW4oKHJlc3VsdDogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYocmVzdWx0KSB7Ki9cbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnJlcXVlc3RDcmVhdGVTZXJ2aWNlT3JkZXJGcm9tVHJhbnNhY3Rpb25MaW5lLm5leHQoe3RyYW5zYWN0aW9uOiB0aGlzLnRyYW5zYWN0aW9uLCBsaW5lTnI6IGxpbmVOcn0pO1xuICAgICAgLy9hZGRlZCBmb3IgYnVuZGxlIHB1cnBvc2VzIHNvIHdlIGNhbiBwYXNzIHRoZSB2YWx1ZSBhbG9uZyB3aXRob3V0IHRoZSBldmVudCBzZXJ2aWNlLiBVc2UgdGhlIGV2ZW50IHNlcnZpY2UgaW4gYWxsIG90aGVyIGNhc2VzLlxuICAgICAgdGhpcy5zZXJ2aWNlUmVxdWVzdGVkLmVtaXQoe3RyYW5zYWN0aW9uTnI6IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uTnIsIHRyYW5zYWN0aW9uSWQ6IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkLCBsaW5lTnI6IGxpbmVOcn0pO1xuICAgICAgLyogICB9XG4gICAgICAgfSk7Ki9cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlVmlld1N0b2NrKGdvb2RJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zdG9ja0dvb2RJZCA9IGdvb2RJZDtcbiAgICB0aGlzLnNob3dBcnRpY2xlU3RvY2tQb3B1cCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VBcnRpY2xlU3RvY2tQb3B1cCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBcnRpY2xlU3RvY2tQb3B1cCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNsb3NlQXJ0aWNsZVRleHQoKTogdm9pZCB7XG4gICAgdGhpcy5faGlkZUFydGljbGVUZXh0RGlhbG9nKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VUcmFuc2FjdGlvblRleHQoKTogdm9pZCB7XG4gICAgdGhpcy5faGlkZVRyYW5zYWN0aW9uVGV4dERpYWxvZygpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlQXJ0aWNsZVRleHRPdmVydmlldygpOiB2b2lkIHtcbiAgICB0aGlzLl9oaWRlQXJ0aWNsZVRleHRPdmVydmlld0RpYWxvZygpO1xuICB9XG5cbiAgcHVibGljIHNob3dUcmFuc2FjdGlvblRleHREaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VHJhbnNhY3Rpb25UZXh0ID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93QXJ0aWNsZVRleHREaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93QXJ0aWNsZVRleHQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNob3dBcnRpY2xlVGV4dE92ZXJ2aWV3RGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0FydGljbGVUZXh0T3ZlcnZpZXcgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNob3VsZFNob3dUaWxlcygpOiBib29sZWFuIHtcbiAgICAvLyBBZGp1c3QgdGhlIHdpZHRoIGNvbmRpdGlvbiBhcyBuZWVkZWRcbiAgICByZXR1cm4gdGhpcy5zY3JlZW5XaWR0aCA8IDEyODA7IC8vIFNob3cgdGhlIGRpdiBpZiBzY3JlZW4gd2lkdGggaXMgc21hbGxlciB0aGFuIDEyODBweFxuICB9XG5cbiAgcHVibGljIGZ1bGx5SW52b2ljZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnRyYW5zYWN0aW9uICYmXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mbyAmJlxuICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cyAmJlxuICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5oYXNPd25Qcm9wZXJ0eSgnaXNGdWxseUludm9pY2VkJykgJiZcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMuaXNGdWxseUludm9pY2VkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE9yZGVyTGluZVNldElmRXhpc3RzKGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pOiBPcmRlckxpbmVTZXREVE8ge1xuICAgIGlmICghbGluZS5vcmRlckxpbmVTZXRDb2RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGluZVNldDogT3JkZXJMaW5lU2V0SW5mbyA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLm9yZGVyTGluZVNldHMuZmluZChzZXQgPT4gc2V0Lm9yZGVyTGluZVNldENvZGUgPT09IGxpbmUub3JkZXJMaW5lU2V0Q29kZSk7XG4gICAgICBpZiAoIWxpbmVTZXQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgRFRPOiBPcmRlckxpbmVTZXREVE8gPSBuZXcgT3JkZXJMaW5lU2V0RFRPKCk7XG4gICAgICAgIERUTy5vcmRlckxpbmVTZXRDb2RlID0gbGluZVNldC5vcmRlckxpbmVTZXRDb2RlO1xuICAgICAgICBEVE8ub3JkZXJMaW5lU2V0SWQgPSBsaW5lU2V0Lm9yZGVyTGluZVNldElkO1xuICAgICAgICBEVE8udGV4dCA9IGxpbmVTZXQudGV4dDtcbiAgICAgICAgRFRPLmFtb3VudCA9IGxpbmVTZXQuYW1vdW50O1xuICAgICAgICBEVE8udGl0bGUgPSBsaW5lU2V0LnRpdGxlO1xuICAgICAgICBEVE8uY29sb3IgPSBsaW5lU2V0LmNvbG9yO1xuICAgICAgICBEVE8uY2F0ZWdvcnlJZCA9IGxpbmVTZXQuY2F0ZWdvcnlJZDtcbiAgICAgICAgcmV0dXJuIERUTztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oaWRlQXJ0aWNsZVRleHREaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93QXJ0aWNsZVRleHQgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2hpZGVUcmFuc2FjdGlvblRleHREaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VHJhbnNhY3Rpb25UZXh0ID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9oaWRlQXJ0aWNsZVRleHRPdmVydmlld0RpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBcnRpY2xlVGV4dE92ZXJ2aWV3ID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRyYW5zYWN0aW9uTGluZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbkxpbmUpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzXG4gICAgICAgIC5maW5kKChsaW5lKSA9PiBsaW5lLmxpbmVOciA9PT0gdGhpcy50cmFuc2FjdGlvbkxpbmUubGluZU5yKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2lkZVBhbmVsVHJhbnNhY3Rpb25MaW5lKSB7XG4gICAgICB0aGlzLnNpZGVQYW5lbFRyYW5zYWN0aW9uTGluZSA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lc1xuICAgICAgICAuZmluZCgobGluZSkgPT4gbGluZS5saW5lTnIgPT09IHRoaXMuc2lkZVBhbmVsVHJhbnNhY3Rpb25MaW5lLmxpbmVOcik7XG4gICAgfVxuICAgIC8vIGlmICh0aGlzLnNob3VsZFNob3dTaWRlUGFuZWwgJiYgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzICYmIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLmhhbmRsZVNob3dTaWRlUGFuZWwodGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkxpbmVzWzBdKTtcbiAgICAvLyB9XG4gIH1cblxuICAvLyBwcml2YXRlIF9wcmVwYXJlSGVhZGVyKCk6IHZvaWQge1xuICAvLyAgICAgaWYgKHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5jZmdOYW1lcy5SZWxhdGlvbkluZm9IZWFkZXIpLmltbWVkaWF0ZWx5SGlkZGVuKCkgJiZcbiAgLy8gICAgICAgICB0aGlzLl9zY3JlZW5Db25maWd1cmF0aW9uU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuY2ZnTmFtZXMuT3JkZXJJbmZvSGVhZGVyKS5pbW1lZGlhdGVseUhpZGRlbigpICYmXG4gIC8vICAgICAgICAgdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLlBheW1lbnRJbmZvSGVhZGVyKS5pbW1lZGlhdGVseUhpZGRlbigpICYmXG4gIC8vICAgICAgICAgdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLkRlbGl2ZXJ5SW5mb0hlYWRlcikuaW1tZWRpYXRlbHlIaWRkZW4oKSkge1xuICAvLyAgICAgICAgIC8vIG5vdGhpbmcgdG8gc2VlIGhlcmVcbiAgLy8gICAgICAgICB0aGlzLnNob3dIZWFkZXIgPSBmYWxzZTtcbiAgLy8gICAgIH1cbiAgLy8gfVxuXG4gIHB1YmxpYyBoYW5kbGVWaWV3TW9kZUNoYW5nZShtb2RlOiBDb250ZW50Vmlld01vZGUpIHtcbiAgICB0aGlzLmFjdGl2ZVZpZXdNb2RlID0gbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFuT3JkZXJGb3JUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpIHtcbiAgICBpZiAoIXRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRQbGFubmluZz8ucGxhbm5pbmdJZCkge1xuICAgICAgY29uc3QgcGxhbm5pbmdTb3VyY2VzOiBQbGFubmluZ1tdID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlLmdldFBsYW5uaW5nU291cmNlcygpO1xuICAgICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuY3VycmVudFBsYW5uaW5nID0gcGxhbm5pbmdTb3VyY2VzWzBdID8gcGxhbm5pbmdTb3VyY2VzWzBdIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgcGxhbk9yZGVyOiBQbGFuT3JkZXIgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UuZ2V0UGxhbk9yZGVyKHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCk7XG5cbiAgICBpZiAocGxhbk9yZGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5nZXRTZXF1ZW5jZU9yZGVyVmFsdWUocGxhbk9yZGVyKTtcbiAgICAgIGF3YWl0IHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmdldE9yZGVyTGluZXNQbGFubmVkKHBsYW5PcmRlcik7XG4gICAgICB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5saW5lc1BsYW5PcmRlciA9IHBsYW5PcmRlcjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
630
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24taW50ZXJuYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24taW50ZXJuYWwvdHJhbnNhY3Rpb24taW50ZXJuYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFhLFlBQVksRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsTCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHNFQUFzRSxDQUFDO0FBRXZILE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQzdHLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBR2xGLE9BQU8sRUFBQyxl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QUNULHdCQUF3QjtvQkFDeEIsa0NBQWtDO2lCQUNuQztnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBeE1PLGdCQUFnQjtZQUNoQixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBUXZCLDJCQUEyQjtZQVIzQix1QkFBdUI7WUFDdkIscUNBQXFDO1lBQ3JDLHdCQUF3QjtZQU94QiwyQkFBMkI7WUFLM0IsdUJBQXVCO1lBR3ZCLHNCQUFzQjtZQS9CdEIsaUJBQWlCO1lBZ0NqQix3QkFBd0I7WUFDeEIsb0JBQW9COzs7a0NBNkx6QixZQUFZLFNBQUMsaUNBQWlDO3FDQUc5QyxLQUFLOzJCQWNMLEtBQUs7MEJBR0wsS0FBSzt5QkFXTCxLQUFLO2tDQUdMLEtBQUs7a0NBR0wsS0FBSzs2QkFHTCxLQUFLO2dDQUdMLEtBQUs7K0JBT0wsTUFBTTs4QkFHTixXQUFXLFNBQUMseUJBQXlCLGNBQ3JDLEtBQUs7NEJBR0wsV0FBVyxTQUFDLHVCQUF1QixjQUNuQyxLQUFLO3dCQUdMLFdBQVcsU0FBQywrQkFBK0I7dUJBSzNDLFlBQVksU0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uVHlwZUNhdGVnb3J5fSBmcm9tICcuLi8uLi9lbnVtL3RyYW5zYWN0aW9uLXR5cGUtY2F0ZWdvcnkuZW51bSc7XG5pbXBvcnQge0NvbnRlbnRWaWV3TW9kZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XG5pbXBvcnQge0ljb259IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcbmltcG9ydCB7VHJhbnNhY3Rpb25DZmdOYW1lfSBmcm9tICcuLi8uLi9lbnVtL3RyYW5zYWN0aW9uLWNmZy1uYW1lLmVudW0nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVTaWRlUGFuZWxDb21wb25lbnR9IGZyb20gJy4uL3RyYW5zYWN0aW9uLWxpbmUtc2lkZS1wYW5lbC90cmFuc2FjdGlvbi1saW5lLXNpZGUtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7UmVsYXRpb25BbnlUeXBlfSBmcm9tICcuLi8uLi9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZSc7XG5pbXBvcnQge0N1c3RvbWVyRnVsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWZ1bGwtb2JqZWN0LmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ibyc7XG5pbXBvcnQge1N0YXR1c0JhckNmZ05hbWVzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2Uvc3RhdHVzLWJhci1jZmctbmFtZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNjcmVlbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkJhckJ1dHRvbn0gZnJvbSAnLi4vLi4vbW9kZWwvdHJhbnNhY3Rpb24tYmFyLWJ1dHRvbic7XG5pbXBvcnQge1RyYW5zYWN0aW9uQWRkVGV4dExpbmVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tYWRkLXRleHQtbGluZS1yZXF1ZXN0LmJvJztcbmltcG9ydCB7T3JkZXJMaW5lU2V0RFRPfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb3JkZXItbGluZS1zZXQtZHRvJztcbmltcG9ydCB7T3JkZXJMaW5lU2V0SW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29yZGVyLWxpbmUtc2V0LWluZm8uYm8nO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkFkZE9yZGVyTGluZVNldFRleHRMaW5lUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWFkZC1vcmRlci1saW5lLXNldC10ZXh0LWxpbmUtcmVxdWVzdCc7XG5pbXBvcnQge1RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQge1B1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9wdXJjaGFzZS1jb25maXJtYXRpb24uc2VydmljZSc7XG5pbXBvcnQge2lzTmlsbH0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvdXRpbHMvZnVuY3Rpb24vaXMtbmlsbC5mdW5jdGlvbic7XG5pbXBvcnQge1Bvc09yZGVyRGF0YX0gZnJvbSAnLi4vLi4vbW9kZWwvcG9zLW9yZGVyLWRhdGEnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWtpbmQuZW51bSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uTWFyZ2luSW5mb30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLW1hcmdpbi1pbmZvLmJvJztcbmltcG9ydCB7RGVsaXZlcnlQbGFubmluZ1NlcnZpY2V9IGZyb20gJy4uL2RlbGl2ZXJ5LXBsYW5uaW5nL3NlcnZpY2UvZGVsaXZlcnktcGxhbm5pbmcuc2VydmljZSc7XG5pbXBvcnQge1BsYW5PcmRlcn0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW4tb3JkZXIuYm8nO1xuaW1wb3J0IHtQbGFubmluZ30gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BsYW5uaW5nLmJvJztcbmltcG9ydCB7VHJhbnNhY3Rpb25CYXNlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkhlYWRlclNlcnZpY2V9IGZyb20gJy4uL2NvcmUvYmFzZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLWhlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7TGluZVNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvbGluZS1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUNvcHlSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1jb3B5LXJlcXVlc3QuYm8nO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25TYWxlc1Jlc2VydmF0aW9uU2VydmljZVxufSBmcm9tIFwiLi4vdHJhbnNhY3Rpb24tcmVzZXJ2YXRpb24vc2VydmljZS90cmFuc2FjdGlvbi1zYWxlcy1yZXNlcnZhdGlvbi5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvLXRyYW5zYWN0aW9uLWludGVybmFsJyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkZWQgJiYgY3VzdG9tZXJQb3J0YWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtd3JhcHBlclwiXG4gICAgICAgICAgICAgICAqbmdJZj1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgIT09ICdTJ1wiPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyLWN1c3RvbWVyLXBvcnRhbCBbc2hvd1ByZWZlcnJlZFBsYW5uaW5nXT1cInNob3dQcmVmZXJyZWRQbGFubmluZ1wiIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblwiPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyLWN1c3RvbWVyLXBvcnRhbD5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWxpbmVzXG4gICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUNhdGVnb3J5XT1cImFjdGl2ZUNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoc2F2ZVRyYW5zYWN0aW9uTGluZSk9XCJzYXZlVHJhbnNhY3Rpb25MaW5lVGV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tZXJQb3J0YWxdPVwiY3VzdG9tZXJQb3J0YWxcIj5cbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1saW5lcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtd3JhcHBlclwiICpuZ0lmPVwidHJhbnNhY3Rpb24gJiYgdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvICYmIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgPT09ICdTJ1wiPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tc2VydmljZS1vdmVydmlld1xuICAgICAgICAgICAgICAgICAgICAgIFtwb3NPcmRlckRhdGFdPVwicG9zT3JkZXJEYXRhXCI+XG4gICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tc2VydmljZS1vdmVydmlldz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVkICAmJiAhY3VzdG9tZXJQb3J0YWxcIj5cbiAgICAgICAgICA8Y28tY2xpY2stYmxvY2s+PC9jby1jbGljay1ibG9jaz5cbiAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24taGVhZGVyICpuZ0lmPVwic2hvd0hlYWRlclwiIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblwiPjwvY28tdHJhbnNhY3Rpb24taGVhZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lcy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLXF1aWNrLWFjY2VzcyAqbmdJZj1cInNob3dRdWlja0FjY2Vzc1wiIGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtaGVhZGVyLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbktpbmRdPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUNhdGVnb3J5XT1cImFjdGl2ZUNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcz5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWJ1dHRvbi1iYXIgKm5nSWY9XCJzaG93QnV0dG9uQmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lcy1oZWFkZXItaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZENhdGVnb3J5XT1cImFjdGl2ZUNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQmFyQnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tYnV0dG9uLWJhcj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtaGVhZGVyLWl0ZW0gcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIDxjby1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmFuc2FjdGlvbi1zYWxlcy1hdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsYXRpb25JZF09XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaGFuZGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiY2ZnTmFtZXMuSGVhZGVySGFuZGxlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudD5cbiAgICAgICAgICAgICAgICAgIDwvY28tYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPGNvLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyYW5zYWN0aW9uLXNhbGVzLWF2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxhdGlvbklkXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5icmFuY2g/LnJlbGF0aW9uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJjZmdOYW1lcy5IZWFkZXJCcmFuY2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5Db25maWdOYXRpdmVFbGVtZW50PlxuICAgICAgICAgICAgICAgICAgPC9jby1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICA8Y28tdmlldy1tb2RlLWJ1dHRvbnMgKm5nSWY9XCIhc2hvdWxkU2hvd1RpbGVzKCkgJiYgc2hvd1ZpZXdNb2RlQnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dWaWV3TW9kZXNdPVwiW3ZpZXdNb2Rlcy5MaXN0LCB2aWV3TW9kZXMuVGlsZXNdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmlld01vZGVDaGFuZ2UpPVwiaGFuZGxlVmlld01vZGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPC9jby12aWV3LW1vZGUtYnV0dG9ucz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtY29udGVudC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDwhLS08Y28tdHJhbnNhY3Rpb24tZG9jdW1lbnQtYnV0dG9uLWJhciBbdHJhbnNhY3Rpb25dPVwidHJhbnNhY3Rpb25cIj48L2NvLXRyYW5zYWN0aW9uLWRvY3VtZW50LWJ1dHRvbi1iYXI+LS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lcy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlQ2F0ZWdvcnkgPT09IGNhdGVnb3J5LlNlcnZpY2VPcmRlclNlcnZpY2UgJiYgdHJhbnNhY3Rpb24gJiYgdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvICYmIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbktpbmQgPT09ICdTJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1zZXJ2aWNlLW92ZXJ2aWV3IFtwb3NPcmRlckRhdGFdPVwicG9zT3JkZXJEYXRhXCI+PC9jby10cmFuc2FjdGlvbi1zZXJ2aWNlLW92ZXJ2aWV3PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tdGlsZXMtd3JhcHBlclwiICpuZ0lmPVwiYWN0aXZlVmlld01vZGUgPT09IHZpZXdNb2Rlcy5UaWxlcyB8fCBzaG91bGRTaG93VGlsZXMoKSB8fCB0cmFuc2FjdGlvblBsYW5uaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWNhcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlQ2F0ZWdvcnldPVwiYWN0aXZlQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBsYW5uaW5nLWNhcmRzXT1cInRyYW5zYWN0aW9uUGxhbm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWNhcmRzPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZXMtd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGFjdGl2ZVZpZXdNb2RlID09PSB2aWV3TW9kZXMuTGlzdCAmJiAhc2hvdWxkU2hvd1RpbGVzKCkpICYmIGFjdGl2ZUNhdGVnb3J5ICE9PSBjYXRlZ29yeS5TZXJ2aWNlT3JkZXJTZXJ2aWNlICYmICF0cmFuc2FjdGlvblBsYW5uaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWxpbmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlQ2F0ZWdvcnldPVwiYWN0aXZlQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhdmVUcmFuc2FjdGlvbkxpbmUpPVwic2F2ZVRyYW5zYWN0aW9uTGluZVRleHQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tbGluZXM+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1mb290ZXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1mb290ZXItbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tYWRkLXByb2R1Y3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlNhbGVzT3JkZXJDYXNoUmVnaXN0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPT09IGNhdGVnb3JpZXMuU2FsZXNPcmRlck92ZXJ2aWV3IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlB1cmNoYXNlT3JkZXJPdmVydmlldyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVDYXRlZ29yeSA9PT0gY2F0ZWdvcmllcy5TYWxlc09yZGVyUXVvdGF0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlNlcnZpY2VPcmRlck92ZXJ2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28tYWRkLXByb2R1Y3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1idXR0b24gKm5nSWY9XCJhY3RpdmVDYXRlZ29yeSA9PT0gY2F0ZWdvcmllcy5TYWxlc09yZGVyQ2FzaFJlZ2lzdGVyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPT09IGNhdGVnb3JpZXMuU2FsZXNPcmRlck92ZXJ2aWV3IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPT09IGNhdGVnb3JpZXMuUHVyY2hhc2VPcmRlck92ZXJ2aWV3IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPT09IGNhdGVnb3JpZXMuU2FsZXNPcmRlclF1b3RhdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlNlcnZpY2VPcmRlck92ZXJ2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS13aWR0aCB0ZXh0LXJ1bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVGV4dFNvbGlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVRyYW5zYWN0aW9uVGV4dCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWZvb3Rlci1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLW1hcmdpbiAqbmdJZj1cImFjdGl2ZUNhdGVnb3J5ID09PSBjYXRlZ29yaWVzLlNhbGVzT3JkZXJNYXJnaW5JbmZvXCI+PC9jby10cmFuc2FjdGlvbi1tYXJnaW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLXRvdGFscyAqbmdJZj1cIihhY3RpdmVDYXRlZ29yeSAhPT0gY2F0ZWdvcnkuU2VydmljZU9yZGVyU2VydmljZSAmJiBhY3RpdmVDYXRlZ29yeSAhPT0gY2F0ZWdvcnkuU2FsZXNPcmRlclB1cmNoYXNlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0Rpc2NvdW50XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLXRvdGFscz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tbGluZXMtc2lkZS1wYW5lbCAqbmdJZj1cInRyYW5zYWN0aW9uICYmICh0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25LaW5kID09PSB0cmFuc2FjdGlvbktpbmQuQ2FzaERlc2sgJiYgIWZ1bGx5SW52b2ljZWQoKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zT3JkZXJEYXRhXT1cInBvc09yZGVyRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblwiPlxuICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWxpbmVzLXNpZGUtcGFuZWw+XG5cbiAgICAgICAgICAgICAgPCEtLSAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWxpbmUtc2lkZS1wYW5lbCAqbmdJZj1cInNob3dTaWRlUGFuZWxcIi0tPlxuICAgICAgICAgICAgICA8IS0tICAgICAgICAgIFt0cmFuc2FjdGlvbl09XCJ0cmFuc2FjdGlvblwiLS0+XG4gICAgICAgICAgICAgIDwhLS0gICAgICAgICAgW3RyYW5zYWN0aW9uSW5mb109XCJ0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm9cIi0tPlxuICAgICAgICAgICAgICA8IS0tICAgICAgICAgIFt0cmFuc2FjdGlvbkxpbmVdPVwic2lkZVBhbmVsVHJhbnNhY3Rpb25MaW5lXCItLT5cbiAgICAgICAgICAgICAgPCEtLSAgICAgICAgICBbYWN0aXZlQ2F0ZWdvcnldPVwiYWN0aXZlQ2F0ZWdvcnlcIi0tPlxuICAgICAgICAgICAgICA8IS0tICAgICAgICAgIChjYW5jZWxDbGljayk9XCJzaG93U2lkZVBhbmVsID0gZmFsc2VcIj4tLT5cbiAgICAgICAgICAgICAgPCEtLSAgICAgICAgPC9jby10cmFuc2FjdGlvbi1saW5lLXNpZGUtcGFuZWw+LS0+XG5cblxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tc2FsZXMtcmVzZXJ2YXRpb24tcG9wdXAgKm5nSWY9XCJzaG93UmVzZXJ2YXRpb25Qb3B1cFwiIFt0cmFuc2FjdGlvbklkXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZFwiPjwvY28tdHJhbnNhY3Rpb24tc2FsZXMtcmVzZXJ2YXRpb24tcG9wdXA+XG4gICAgICAgICAgICAgIDwhLS1Qb3B1cCB2b29yIHdpanppZ2VuIHZvbGdvcmRlIHZhbiB0ZWtzdHJlZ2Vscy0tPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0LW92ZXJ2aWV3ICpuZ0lmPVwic2hvd0FydGljbGVUZXh0T3ZlcnZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0cmFuc2FjdGlvbkluZm9dPVwidHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25MaW5lXT1cInRyYW5zYWN0aW9uTGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiY2xvc2VBcnRpY2xlVGV4dE92ZXJ2aWV3KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxDbGljayk9XCJjbG9zZUFydGljbGVUZXh0T3ZlcnZpZXcoKVwiPlxuICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWFydGljbGUtdGV4dC1vdmVydmlldz5cblxuICAgICAgICAgICAgICA8IS0tUG9wdXAgdm9vciBhYW5tYWtlbiBlbiB1cGRhdGVuIHRyYW5zYWN0aWV0ZWtzdHJlZ2Vscy0tPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0ICpuZ0lmPVwic2hvd1RyYW5zYWN0aW9uVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlYWRlcl09XCInT1JERVJfVEVYVF9MSU5FJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25VdWlkXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby51dWlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdFRleHRdPVwidGV4dFRvRWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZGVyTGluZVNldERUT109XCJzZWxlY3RlZE9yZGVyTGluZVNldERUT1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zYWN0aW9uTGluZV09XCJ0cmFuc2FjdGlvbkxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlQ2xpY2spPVwic2F2ZVRyYW5zYWN0aW9uTGluZVRleHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwiY2xvc2VUcmFuc2FjdGlvblRleHQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbmNlbENsaWNrKT1cImNsb3NlVHJhbnNhY3Rpb25UZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlT3JkZXJMaW5lU2V0Q2xpY2spPVwic2F2ZU9yZGVyTGluZVNldCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvY28tdHJhbnNhY3Rpb24tYXJ0aWNsZS10ZXh0PlxuXG4gICAgICAgICAgICAgIDwhLS1Qb3B1cCB2b29yIGFhbm1ha2VuIGVuIHVwZGF0ZW4gYXJ0aWtlbHRla3N0cmVnZWxzLS0+XG4gICAgICAgICAgICAgIDxjby10cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQgKm5nSWY9XCJzaG93QXJ0aWNsZVRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJdPVwiJ1BST0RVQ1RfREVTQ1JJUFRJT05fQU5EX1RFWFRTJyB8IGxvY2FsaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25VdWlkXT1cInRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby51dWlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0FydGljbGVJbWFnZURlc2NyaXB0aW9uXT1cInRyYW5zYWN0aW9uTGluZS5hcnRpY2xlQm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SW1hZ2VdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnRpY2xlTGluZU5yXT1cInRyYW5zYWN0aW9uTGluZS5saW5lTnJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnRpY2xlUmVmXT1cInRyYW5zYWN0aW9uTGluZS5hcnRpY2xlTnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25MaW5lXT1cInRyYW5zYWN0aW9uTGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRUZXh0XT1cInRleHRUb0VkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlQ2xpY2spPVwic2F2ZUFydGljbGVMaW5lVGV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJjbG9zZUFydGljbGVUZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxDbGljayk9XCJjbG9zZUFydGljbGVUZXh0KClcIj5cbiAgICAgICAgICAgICAgPC9jby10cmFuc2FjdGlvbi1hcnRpY2xlLXRleHQ+XG5cbiAgICAgICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWNvcHktb3JkZXIgKm5nSWY9XCJzaG93Q29weU9yZGVyRGlhbG9nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlRGlhbG9nKT1cInNob3dDb3B5T3JkZXJEaWFsb2cgPSBmYWxzZVwiPlxuICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWNvcHktb3JkZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBQb3AgdXAgdm9vciB2b29ycmFhZC0tPlxuICAgICAgICAgICAgICA8Y28tdHJhbnNhY3Rpb24tYXJ0aWNsZS1zdG9jay1kaWFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dBcnRpY2xlU3RvY2tQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FydGljbGVdPVwic3RvY2tHb29kSWRcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cImNsb3NlQXJ0aWNsZVN0b2NrUG9wdXAoKVwiPlxuICAgICAgICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWFydGljbGUtc3RvY2stZGlhbG9nPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlLFxuICAgIFRyYW5zYWN0aW9uU2FsZXNSZXNlcnZhdGlvblNlcnZpY2VcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkludGVybmFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgcmVhZG9ubHkgY2F0ZWdvcmllczogdHlwZW9mIFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5ID0gVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnk7XG4gIHB1YmxpYyByZWFkb25seSB2aWV3TW9kZXM6IHR5cGVvZiBDb250ZW50Vmlld01vZGUgPSBDb250ZW50Vmlld01vZGU7XG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xuICBwdWJsaWMgcmVhZG9ubHkgY2ZnTmFtZXM6IHR5cGVvZiBUcmFuc2FjdGlvbkNmZ05hbWUgPSBUcmFuc2FjdGlvbkNmZ05hbWU7XG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2FjdGlvbktpbmQ6IHR5cGVvZiBUcmFuc2FjdGlvbktpbmQgPSBUcmFuc2FjdGlvbktpbmQ7XG4gIHB1YmxpYyByZWFkb25seSBjYXRlZ29yeTogdHlwZW9mIFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5ID0gVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnk7XG4gIHB1YmxpYyBzY3JlZW5XaWR0aDogbnVtYmVyO1xuXG4gIEBWaWV3Q2hpbGRyZW4oVHJhbnNhY3Rpb25MaW5lU2lkZVBhbmVsQ29tcG9uZW50KVxuICBwdWJsaWMgc2lkZVBhbmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRyYW5zYWN0aW9uTGluZVNpZGVQYW5lbENvbXBvbmVudD47XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjb25maXJtYXRpb25BbmFseXNpc0lkKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9jb25maXJtYXRpb25BbmFseXNpc0lkID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuYWN0aXZlUnVicmljID0gVHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuUHVyY2hhc2VPcmRlck9yZGVyQ29uZmlybWF0aW9uO1xuICAgICAgdGhpcy5hY3RpdmVDYXRlZ29yeSA9IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJPcmRlckNvbmZpcm1hdGlvbjtcbiAgICB9XG4gICAgdGhpcy5fcHVyY2hhc2VDb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm1hdGlvbkFuYWx5c2lzSWQgPSB0aGlzLl9jb25maXJtYXRpb25BbmFseXNpc0lkO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25maXJtYXRpb25BbmFseXNpc0lkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpcm1hdGlvbkFuYWx5c2lzSWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9zT3JkZXJEYXRhOiBQb3NPcmRlckRhdGE7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0cmFuc2FjdGlvbih2YWx1ZTogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93Vmlld01vZGVCdXR0b25zOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJhbnNhY3Rpb25QbGFubmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21lclBvcnRhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZXNldEFjdGl2ZVJ1YnJpYzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEBPdXRwdXQoKVxuICAvLyBwdWJsaWMgcmVsYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkFueVR5cGU+KCk7XG5cbiAgLy9UaGlzIG91dHB1dCBleGlzdHMgZm9yIGJ1bmRsZSBwdXJwb3Nlcy5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZXJ2aWNlUmVxdWVzdGVkOiBFdmVudEVtaXR0ZXI8eyB0cmFuc2FjdGlvbk5yOiBudW1iZXIsIHRyYW5zYWN0aW9uSWQ6IG51bWJlciwgbGluZU5yOiBudW1iZXIgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgdHJhbnNhY3Rpb25OcjogbnVtYmVyLCB0cmFuc2FjdGlvbklkOiBudW1iZXIsIGxpbmVOcjogbnVtYmVyIH0+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zaG93LXF1aWNrLWFjY2VzcycpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93UXVpY2tBY2Nlc3M6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2hvdy1idXR0b24tYmFyJylcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dCdXR0b25CYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tdHJhbnNhY3Rpb24taW50ZXJuYWwnKVxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNjcmVlbldpZHRoID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZlVmlld01vZGU6IENvbnRlbnRWaWV3TW9kZSA9IENvbnRlbnRWaWV3TW9kZS5MaXN0O1xuICBwdWJsaWMgYWN0aXZlQ2F0ZWdvcnk6IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5O1xuICBwdWJsaWMgc2lkZVBhbmVsVHJhbnNhY3Rpb25MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25MaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvO1xuICBwdWJsaWMgc2VsZWN0ZWRPcmRlckxpbmVTZXREVE86IE9yZGVyTGluZVNldERUTztcbiAgcHVibGljIHNob3dTaWRlUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3VsZFNob3dTaWRlUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dBcnRpY2xlVGV4dE92ZXJ2aWV3OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93UmVzZXJ2YXRpb25Qb3B1cDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd1RyYW5zYWN0aW9uVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd0FydGljbGVUZXh0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Q29weU9yZGVyRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93QXJ0aWNsZVN0b2NrUG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dQcmVmZXJyZWRQbGFubmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc3RvY2tHb29kSWQ6IG51bWJlcjtcblxuICBwdWJsaWMgbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyB0ZXh0VG9FZGl0OiBzdHJpbmc7XG4gIHB1YmxpYyByZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlID0gbmV3IEN1c3RvbWVyRnVsbE9iamVjdCgpO1xuICBwdWJsaWMgaGlzdG9yaWNUcmFuc2FjdGlvbkxpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10gfCBudWxsO1xuICBwdWJsaWMgdHJhbnNhY3Rpb25NYXJnaW5JbmZvOiBUcmFuc2FjdGlvbk1hcmdpbkluZm8gPSBuZXcgVHJhbnNhY3Rpb25NYXJnaW5JbmZvKCk7XG5cbiAgcHVibGljIGxpbmVEcmFnZ2VkT3ZlcjogbnVtYmVyO1xuXG4gIHB1YmxpYyBzdGF0dXNCYXJDb25maWdOYW1lczogU3RhdHVzQmFyQ2ZnTmFtZXMgPSB7XG4gICAgc3RhdHVzQmFyQlQ6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyQlQsXG4gICAgc3RhdHVzQmFyVEc6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyVEcsXG4gICAgc3RhdHVzQmFyUEE6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyUEEsXG4gICAgc3RhdHVzQmFyUFY6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyUFYsXG4gICAgc3RhdHVzQmFyVFA6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyVFAsXG4gICAgc3RhdHVzQmFyR1Q6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyR1QsXG4gICAgc3RhdHVzQmFyR1A6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyR1AsXG4gICAgc3RhdHVzQmFyR0w6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyR0wsXG4gICAgc3RhdHVzQmFyR0Y6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyR0YsXG4gICAgc3RhdHVzQmFySUI6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFySUIsXG4gICAgc3RhdHVzQmFyTlQ6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyTlQsXG4gICAgc3RhdHVzQmFyQk46IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyQk4sXG4gICAgc3RhdHVzQmFyQkc6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyQkcsXG4gICAgc3RhdHVzQmFyRkM6IHRoaXMuY2ZnTmFtZXMuU3RhdHVzQmFyRkNcbiAgfTtcblxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UgPSBuZXcgVHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UoKTtcbiAgcHJpdmF0ZSBfY29uZmlybWF0aW9uQW5hbHlzaXNJZDogbnVtYmVyO1xuICBwcml2YXRlIF9lZGl0QXJ0aWNsZVRleHRSZWZMaW5lTnI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZSxcbiAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlOiBUcmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IFRyYW5zYWN0aW9uRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIF9wdXJjaGFzZUNvbmZpcm1hdGlvblNlcnZpY2U6IFB1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIF9kZWxpdmVyeVBsYW5uaW5nU2VydmljZTogRGVsaXZlcnlQbGFubmluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25CYXNlU2VydmljZTogVHJhbnNhY3Rpb25CYXNlU2VydmljZSxcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfdHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlOiBUcmFuc2FjdGlvbkhlYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfbGluZVNlbGVjdGlvbjogTGluZVNlbGVjdGlvblNlcnZpY2UgLy9EbyBub3QgcmVtb3ZlIHRoaXMuIFdoaWxlIGl0IGlzIG5vdCBkaXJlY3RseSB1c2VkIGl0IGhhcyBpdHMgb3duIGltcG9ydGFudCBzdWJzY3JpcHRpb25zLlxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgdGhpcy5zZXJ2aWNlLnRyYW5zYWN0aW9uVXBkYXRlZC5zdWJzY3JpYmUoKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAodHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNob3VsZFNob3dTaWRlUGFuZWwgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gICAgICAgICAgdGhpcy5fdHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlLnRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG5cbiAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRyYW5zYWN0aW9uTGluZSgpO1xuICAgICAgICAgIC8vIGlmICh0cmFuc2FjdGlvbj8udHJhbnNhY3Rpb25JbmZvPy51dWlkKSB7XG4gICAgICAgICAgLy8gICB0aGlzLmdldFRyYW5zYWN0aW9uTWFyZ2luSW5mbyh0cmFuc2FjdGlvbj8udHJhbnNhY3Rpb25JbmZvPy51dWlkKTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgaWYgKHRyYW5zYWN0aW9uPy50cmFuc2FjdGlvbkluZm8uaWQgJiYgdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uS2luZCA9PT0gVHJhbnNhY3Rpb25LaW5kLlNhbGVzT3JkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UGxhbk9yZGVyRm9yVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgICAgICAgICAgdGhpcy5jaGVja1ByZWZlcnJlZFBsYW5uaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRoaXMuc2VydmljZS5yZWxhdGlvblVwZGF0ZWQuc3Vic2NyaWJlKChyZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlKSA9PiB7XG4gICAgICAgIGlmIChyZWxhdGlvbikge1xuICAgICAgICAgIHRoaXMucmVsYXRpb24gPSByZWxhdGlvbjtcbiAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UucmVsYXRpb24gPSByZWxhdGlvbjtcbiAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGhpcy5zZXJ2aWNlLnRyYW5zYWN0aW9uS2luZFNldC5zdWJzY3JpYmUoKHNldDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoc2V0KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVDYXRlZ29yeSA9IHRoaXMuY29uZmlybWF0aW9uQW5hbHlzaXNJZCA/IFRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlB1cmNoYXNlT3JkZXJPcmRlckNvbmZpcm1hdGlvbiA6IHRoaXMuc2VydmljZS5hY3RpdmVSdWJyaWM7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlLmNvbm5lY3Rpb25Jbml0aWFsaXplZC5zdWJzY3JpYmUoKGluaXRpYWxpemVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UucmVzZXJ2YXRpb25Qb3B1cFRvZ2dsZS5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2hvd1Jlc2VydmF0aW9uUG9wdXAgPSAhdGhpcy5zaG93UmVzZXJ2YXRpb25Qb3B1cDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNob3dSZXNlcnZhdGlvblBvcHVwID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5hY3RpdmVSdWJyaWNDaGFuZ2Uuc3Vic2NyaWJlKChydWJyaWM6eyBjYXRlZ29yeTpUcmFuc2FjdGlvblR5cGVDYXRlZ29yeSwgc2lkZXBhbmVsOiBib29sZWFufSkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZUNhdGVnb3J5ID0gcnVicmljLmNhdGVnb3J5O1xuICAgICAgICBpZiggcnVicmljLmNhdGVnb3J5ID09PSBUcmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyUGxhbm5pbmcpIHtcbiAgICAgICAgICB0aGlzLl90cmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UuZ2V0UGxhbk9yZGVyKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmlkKS50aGVuKCAocGxhbk9yZGVyOiBQbGFuT3JkZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5jdXJyZW50UGxhbk9yZGVyID0gcGxhbk9yZGVyO1xuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5uZXdQbGFuT3JkZXJFdmVudC5uZXh0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZighIXJ1YnJpYy5zaWRlcGFuZWwpIHtcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLm9wZW5TaWRlUGFuZWwubmV4dCh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIC8vIHRoaXMuX3B1cmNoYXNlQ29uZmlybWF0aW9uU2VydmljZS5jb25maXJtYXRpb25OZWVkZWQuc3Vic2NyaWJlKChuZWVkZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIC8vICAgaWYgKG5lZWRlZCkge1xuICAgICAgLy8gICAgIHRoaXMuc2hvdWxkU2hvd1NpZGVQYW5lbCA9IHRydWU7XG4gICAgICAvLyAgICAgdGhpcy5oYW5kbGVTaG93U2lkZVBhbmVsKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lc1swXSwgdHJ1ZSk7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0pLFxuICAgICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS50cmFuc2FjdGlvbkxpbmVEcmFnZ2VkT3Zlci5zdWJzY3JpYmUoKGxpbmVOcikgPT4ge1xuICAgICAgICB0aGlzLmxpbmVEcmFnZ2VkT3ZlciA9IGxpbmVOcjtcbiAgICAgIH0pLFxuICAgICAgLy8gdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uub3BlblNpZGVQYW5lbC5zdWJzY3JpYmUoKGxpbmUpID0+IHRoaXMuaGFuZGxlU2hvd1NpZGVQYW5lbChsaW5lKSksXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5vcGVuQXJ0aWNsZVRleHRPdmVydmlldy5zdWJzY3JpYmUoKGxpbmUpID0+IHRoaXMuaGFuZGxlU2hvd0FydGljbGVUZXh0T3ZlcnZpZXcobGluZSkpLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuYWRkVHJhbnNhY3Rpb25UZXh0LnN1YnNjcmliZSgobGluZSkgPT4gdGhpcy5oYW5kbGVTaG93VHJhbnNhY3Rpb25UZXh0KGxpbmUpKSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmFkZEFydGljbGVUZXh0LnN1YnNjcmliZSgobGluZSkgPT4gdGhpcy5oYW5kbGVTaG93QXJ0aWNsZVRleHQobGluZSkpLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuZWRpdFRyYW5zYWN0aW9uVGV4dC5zdWJzY3JpYmUoKGxpbmUpID0+IHRoaXMuaGFuZGxlRWRpdFRyYW5zYWN0aW9uVGV4dChsaW5lKSksXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5lZGl0QXJ0aWNsZVRleHQuc3Vic2NyaWJlKChsaW5lKSA9PiB0aGlzLmhhbmRsZUVkaXRBcnRpY2xlVGV4dChsaW5lKSksXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5jcmVhdGVTZXJ2aWNlQnV0dG9uQ2xpY2tlZC5zdWJzY3JpYmUoKGxpbmVOcikgPT4gdGhpcy5oYW5kbGVDcmVhdGVTZXJ2aWNlUmVxdWVzdChsaW5lTnIpKSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnZpZXdTdG9ja0J1dHRvbkNsaWNrLnN1YnNjcmliZSgoZ29vZElkKSA9PiB0aGlzLmhhbmRsZVZpZXdTdG9jayhnb29kSWQpKSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmNvcHlMaW5lQnV0dG9uQ2xpY2suc3Vic2NyaWJlKChsaW5lKSA9PiB0aGlzLmhhbmRsZUNvcHlUcmFuc2FjdGlvbkxpbmUobGluZSkpLFxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2hvd0Vycm9yLnN1YnNjcmliZSgoZSkgPT5cbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5zaG93RXJyb3IoZS5tZXNzYWdlLCBlLmxvY2FsaXplLCBlLmRldGFpbHMpKSxcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmNvcHlPcmRlci5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zaG93Q29weU9yZGVyRGlhbG9nID0gdHJ1ZSlcbiAgICApO1xuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcblxuICAgIGlmICh0aGlzLnJlc2V0QWN0aXZlUnVicmljKSB7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkJhc2VTZXJ2aWNlLnNldERlZmF1bHRBY3RpdmVSdWJyaWNGcm9tVHJhbnNhY3Rpb25LaW5kKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvLyBwdWJsaWMgaGFuZGxlUmVsYXRpb25DaGFuZ2UocmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSk6IHZvaWQge1xuICAvLyAgIHRoaXMuc2VydmljZS5yZWxhdGlvbiA9IHJlbGF0aW9uO1xuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZUJ1dHRvbkJhckJ1dHRvbkNsaWNrZWQoYnV0dG9uOiBUcmFuc2FjdGlvbkJhckJ1dHRvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcnkgPSBidXR0b24uY2F0ZWdvcnk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hlY2tQcmVmZXJyZWRQbGFubmluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbiAmJiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCkge1xuICAgICAgdGhpcy5zaG93UHJlZmVycmVkUGxhbm5pbmcgPSBhd2FpdCB0aGlzLl90cmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UuZ2V0UEFTdGF0dXNGcm9tVHJhbnNhY3Rpb24odGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTaG93U2lkZVBhbmVsKGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8sIGZvcmNlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAobGluZSB8fCBmb3JjZSkge1xuICAgICAgdGhpcy5zaWRlUGFuZWxUcmFuc2FjdGlvbkxpbmUgPSBsaW5lO1xuICAgICAgdGhpcy5zaG93U2lkZVBhbmVsID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlVHJhbnNhY3Rpb25UZXh0KCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuYWRkVHJhbnNhY3Rpb25UZXh0Lm5leHQodGhpcy50cmFuc2FjdGlvbkxpbmUpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVNob3dBcnRpY2xlVGV4dE92ZXJ2aWV3KGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pOiB2b2lkIHtcbiAgICBpZiAobGluZSkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbkxpbmUgPSBsaW5lO1xuICAgICAgdGhpcy5zaG93QXJ0aWNsZVRleHRPdmVydmlldyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVNob3dUcmFuc2FjdGlvblRleHQobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudGV4dFRvRWRpdCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkT3JkZXJMaW5lU2V0RFRPID0gbmV3IE9yZGVyTGluZVNldERUTygpO1xuICAgIHRoaXMuc2hvd1RyYW5zYWN0aW9uVGV4dERpYWxvZygpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVNob3dBcnRpY2xlVGV4dChsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogdm9pZCB7XG4gICAgaWYgKGxpbmUpIHtcbiAgICAgIHRoaXMudGV4dFRvRWRpdCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25MaW5lID0gbGluZTtcbiAgICAgIHRoaXMuc2hvd0FydGljbGVUZXh0RGlhbG9nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHNhdmVUcmFuc2FjdGlvbkxpbmVUZXh0KGRhdGE6IHsgcmVxdWVzdDogVHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3QsIG5ldzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFkYXRhLm5ldykgeyAvL3VwZGF0ZVxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnVwZGF0ZVRleHRMaW5lKGRhdGEucmVxdWVzdC50cmFuc2FjdGlvblV1aWQsIHRoaXMudHJhbnNhY3Rpb25MaW5lLnV1aWQsIGRhdGEucmVxdWVzdC5zaG93T25Eb2N1bWVudHMsIGRhdGEucmVxdWVzdC50ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmFkZFRleHRMaW5lKFxuICAgICAgICBkYXRhLnJlcXVlc3Quc2hvd09uRG9jdW1lbnRzLFxuICAgICAgICBkYXRhLnJlcXVlc3QudGV4dCxcbiAgICAgICAgMCxcbiAgICAgICAgZGF0YS5yZXF1ZXN0LmFydGljbGVCb3VuZCxcbiAgICAgICAgMCxcbiAgICAgICAgMCxcbiAgICAgICAgMCk7XG4gICAgfVxuXG4gICAgdGhpcy5faGlkZVRyYW5zYWN0aW9uVGV4dERpYWxvZygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNhdmVPcmRlckxpbmVTZXQoZGF0YTogeyByZXF1ZXN0OiBPcmRlckxpbmVTZXREVE8sIG5ldzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFkYXRhLm5ldykge1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnVwZGF0ZU9yZGVyTGluZVNldChkYXRhLnJlcXVlc3QpO1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnVwZGF0ZVRleHRMaW5lKGRhdGEucmVxdWVzdC50cmFuc2FjdGlvblV1aWQsIHRoaXMudHJhbnNhY3Rpb25MaW5lLnV1aWQsIGRhdGEucmVxdWVzdC5zaG93T25Eb2N1bWVudHMsIGRhdGEucmVxdWVzdC50aXRsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld1JlcXVlc3Q6IFRyYW5zYWN0aW9uQWRkT3JkZXJMaW5lU2V0VGV4dExpbmVSZXF1ZXN0ID0gbmV3IFRyYW5zYWN0aW9uQWRkT3JkZXJMaW5lU2V0VGV4dExpbmVSZXF1ZXN0KCk7XG4gICAgICBuZXdSZXF1ZXN0Lm9yZGVyTGluZVNldFRleHQgPSBkYXRhLnJlcXVlc3QudGV4dDtcbiAgICAgIG5ld1JlcXVlc3QuYW1vdW50ID0gZGF0YS5yZXF1ZXN0LmFtb3VudDtcbiAgICAgIG5ld1JlcXVlc3QuY2F0ZWdvcnlJZCA9IGRhdGEucmVxdWVzdC5jYXRlZ29yeUlkO1xuICAgICAgbmV3UmVxdWVzdC5jb2xvciA9IGRhdGEucmVxdWVzdC5jb2xvcjtcbiAgICAgIG5ld1JlcXVlc3QudHJhbnNhY3Rpb25VdWlkID0gZGF0YS5yZXF1ZXN0LnRyYW5zYWN0aW9uVXVpZDtcbiAgICAgIG5ld1JlcXVlc3Quc2hvd09uRG9jdW1lbnRzID0gZGF0YS5yZXF1ZXN0LnNob3dPbkRvY3VtZW50cztcbiAgICAgIG5ld1JlcXVlc3QudGV4dCA9IGRhdGEucmVxdWVzdC50aXRsZTtcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRPcmRlckxpbmVTZXQobmV3UmVxdWVzdCk7XG4gICAgfVxuICAgIHRoaXMuX2hpZGVUcmFuc2FjdGlvblRleHREaWFsb2coKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzYXZlQXJ0aWNsZUxpbmVUZXh0KGRhdGE6IHsgcmVxdWVzdDogVHJhbnNhY3Rpb25BZGRUZXh0TGluZVJlcXVlc3QsIG5ldzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFkYXRhLm5ldykgeyAvL3VwZGF0ZVxuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnVwZGF0ZVRleHRMaW5lKGRhdGEucmVxdWVzdC50cmFuc2FjdGlvblV1aWQsIHRoaXMudHJhbnNhY3Rpb25MaW5lLnV1aWQsIGRhdGEucmVxdWVzdC5zaG93T25Eb2N1bWVudHMsIGRhdGEucmVxdWVzdC50ZXh0KTtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuYXJ0aWNsZUxpbmVUZXh0QWRkZWRPckNoYW5nZWQubmV4dCh0aGlzLl9lZGl0QXJ0aWNsZVRleHRSZWZMaW5lTnIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkVGV4dExpbmUoXG4gICAgICAgIGRhdGEucmVxdWVzdC5zaG93T25Eb2N1bWVudHMsXG4gICAgICAgIGRhdGEucmVxdWVzdC50ZXh0LFxuICAgICAgICAwLFxuICAgICAgICB0cnVlLFxuICAgICAgICBkYXRhLnJlcXVlc3QucmVmQXJ0aWNsZUxpbmVOclxuICAgICAgKTtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuYXJ0aWNsZUxpbmVUZXh0QWRkZWRPckNoYW5nZWQubmV4dCh0aGlzLnRyYW5zYWN0aW9uTGluZS5saW5lTnIpO1xuICAgIH1cbiAgICB0aGlzLl9oaWRlQXJ0aWNsZVRleHREaWFsb2coKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVFZGl0VHJhbnNhY3Rpb25UZXh0KGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8pOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uTGluZSA9IGxpbmU7XG4gICAgdGhpcy5zZWxlY3RlZE9yZGVyTGluZVNldERUTyA9IHRoaXMuX2dldE9yZGVyTGluZVNldElmRXhpc3RzKGxpbmUpO1xuICAgIGlmIChpc05pbGwodGhpcy5zZWxlY3RlZE9yZGVyTGluZVNldERUTykpIHtcbiAgICAgIHRoaXMudGV4dFRvRWRpdCA9IGxpbmUudGV4dDtcbiAgICB9XG4gICAgaWYgKGxpbmUuaXNUZXh0KSB7XG4gICAgICB0aGlzLnNob3dUcmFuc2FjdGlvblRleHREaWFsb2coKTtcbiAgICB9XG4gICAgLy8gaWYgKGxpbmUuYXJ0aWNsZUJvdW5kQ29uY2F0ZW5hdGVkVGV4dCAmJiBsaW5lLmFydGljbGVCb3VuZENvbmNhdGVuYXRlZFRleHQubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy5zaG93QXJ0aWNsZVRleHRPdmVydmlld0RpYWxvZygpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVFZGl0QXJ0aWNsZVRleHQobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IHZvaWQge1xuICAgIHRoaXMudGV4dFRvRWRpdCA9IGxpbmUudGV4dDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uTGluZSA9IGxpbmU7XG4gICAgdGhpcy5fZWRpdEFydGljbGVUZXh0UmVmTGluZU5yID0gbGluZS5yZWZMaW5lTnI7XG4gICAgdGhpcy5faGlkZUFydGljbGVUZXh0T3ZlcnZpZXdEaWFsb2coKTtcbiAgICB0aGlzLnNob3dBcnRpY2xlVGV4dERpYWxvZygpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNvcHlUcmFuc2FjdGlvbkxpbmUobGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyk6IHZvaWQge1xuICAgIGNvbnN0IGNvcHlSZXF1ZXN0OlRyYW5zYWN0aW9uTGluZUNvcHlSZXF1ZXN0ID0gbmV3IFRyYW5zYWN0aW9uTGluZUNvcHlSZXF1ZXN0O1xuICAgIGNvcHlSZXF1ZXN0LmxpbmVVdWlkID0gbGluZS51dWlkO1xuICAgIGNvcHlSZXF1ZXN0LnRyYW5zYWN0aW9uVXVpZCA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnV1aWQ7XG4gICAgdGhpcy5zZXJ2aWNlLmNvcHlUcmFuc2FjdGlvbkxpbmUoY29weVJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNyZWF0ZVNlcnZpY2VSZXF1ZXN0KGxpbmVOcjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGxpbmVOciAmJiB0aGlzLnRyYW5zYWN0aW9uKSB7LypcbiAgICAgIGxldCByZXF1ZXN0OkNyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmVSZXF1ZXN0ID0gbmV3IENyZWF0ZVNlcnZpY2VPcmRlcldpdGhTb3VyY2VUcmFuc2FjdGlvbkxpbmVSZXF1ZXN0KCk7XG4gICAgICByZXF1ZXN0LnNvdXJjZUxpbmVOciA9IGxpbmUubGluZU5yO1xuICAgICAgcmVxdWVzdC5zb3VyY2VUcmFuc0lkID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQ7XG4gICAgICByZXF1ZXN0LmN1c3RvbWVyUmVsYXRpb25JZCA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLnJlbGF0aW9uLnJlbGF0aW9uSWQ7XG4gICAgICByZXF1ZXN0LmJyYW5jaE5yID0gdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uYnJhbmNoLnJlbGF0aW9uTnI7Ki9cblxuICAgICAgLyp0aGlzLl90cmFuc2FjdGlvbkNvbm5lY3RvclNlcnZpY2UuY3JlYXRlU2VydmljZU9yZGVyV2l0aFNvdXJjZVRyYW5zYWN0aW9uTGluZShyZXF1ZXN0KS50aGVuKChyZXN1bHQ6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmKHJlc3VsdCkgeyovXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkV2ZW50U2VydmljZS5yZXF1ZXN0Q3JlYXRlU2VydmljZU9yZGVyRnJvbVRyYW5zYWN0aW9uTGluZS5uZXh0KHt0cmFuc2FjdGlvbjogdGhpcy50cmFuc2FjdGlvbiwgbGluZU5yOiBsaW5lTnJ9KTtcbiAgICAgIC8vYWRkZWQgZm9yIGJ1bmRsZSBwdXJwb3NlcyBzbyB3ZSBjYW4gcGFzcyB0aGUgdmFsdWUgYWxvbmcgd2l0aG91dCB0aGUgZXZlbnQgc2VydmljZS4gVXNlIHRoZSBldmVudCBzZXJ2aWNlIGluIGFsbCBvdGhlciBjYXNlcy5cbiAgICAgIHRoaXMuc2VydmljZVJlcXVlc3RlZC5lbWl0KHt0cmFuc2FjdGlvbk5yOiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby50cmFuc2FjdGlvbk5yLCB0cmFuc2FjdGlvbklkOiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCwgbGluZU5yOiBsaW5lTnJ9KTtcbiAgICAgIC8qICAgfVxuICAgICAgIH0pOyovXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVZpZXdTdG9jayhnb29kSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc3RvY2tHb29kSWQgPSBnb29kSWQ7XG4gICAgdGhpcy5zaG93QXJ0aWNsZVN0b2NrUG9wdXAgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGNsb3NlQXJ0aWNsZVN0b2NrUG9wdXAoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93QXJ0aWNsZVN0b2NrUG9wdXAgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZUFydGljbGVUZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuX2hpZGVBcnRpY2xlVGV4dERpYWxvZygpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlVHJhbnNhY3Rpb25UZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuX2hpZGVUcmFuc2FjdGlvblRleHREaWFsb2coKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZUFydGljbGVUZXh0T3ZlcnZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5faGlkZUFydGljbGVUZXh0T3ZlcnZpZXdEaWFsb2coKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93VHJhbnNhY3Rpb25UZXh0RGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1RyYW5zYWN0aW9uVGV4dCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgc2hvd0FydGljbGVUZXh0RGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0FydGljbGVUZXh0ID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93QXJ0aWNsZVRleHRPdmVydmlld0RpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBcnRpY2xlVGV4dE92ZXJ2aWV3ID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG91bGRTaG93VGlsZXMoKTogYm9vbGVhbiB7XG4gICAgLy8gQWRqdXN0IHRoZSB3aWR0aCBjb25kaXRpb24gYXMgbmVlZGVkXG4gICAgcmV0dXJuIHRoaXMuc2NyZWVuV2lkdGggPCAxMjgwOyAvLyBTaG93IHRoZSBkaXYgaWYgc2NyZWVuIHdpZHRoIGlzIHNtYWxsZXIgdGhhbiAxMjgwcHhcbiAgfVxuXG4gIHB1YmxpYyBmdWxseUludm9pY2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy50cmFuc2FjdGlvbiAmJlxuICAgICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8gJiZcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMgJiZcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JbmZvLmhlYWRlckluZm9TdGF0dXMuaGFzT3duUHJvcGVydHkoJ2lzRnVsbHlJbnZvaWNlZCcpICYmXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlJbnZvaWNlZCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRPcmRlckxpbmVTZXRJZkV4aXN0cyhsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogT3JkZXJMaW5lU2V0RFRPIHtcbiAgICBpZiAoIWxpbmUub3JkZXJMaW5lU2V0Q29kZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmVTZXQ6IE9yZGVyTGluZVNldEluZm8gPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5vcmRlckxpbmVTZXRzLmZpbmQoc2V0ID0+IHNldC5vcmRlckxpbmVTZXRDb2RlID09PSBsaW5lLm9yZGVyTGluZVNldENvZGUpO1xuICAgICAgaWYgKCFsaW5lU2V0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IERUTzogT3JkZXJMaW5lU2V0RFRPID0gbmV3IE9yZGVyTGluZVNldERUTygpO1xuICAgICAgICBEVE8ub3JkZXJMaW5lU2V0Q29kZSA9IGxpbmVTZXQub3JkZXJMaW5lU2V0Q29kZTtcbiAgICAgICAgRFRPLm9yZGVyTGluZVNldElkID0gbGluZVNldC5vcmRlckxpbmVTZXRJZDtcbiAgICAgICAgRFRPLnRleHQgPSBsaW5lU2V0LnRleHQ7XG4gICAgICAgIERUTy5hbW91bnQgPSBsaW5lU2V0LmFtb3VudDtcbiAgICAgICAgRFRPLnRpdGxlID0gbGluZVNldC50aXRsZTtcbiAgICAgICAgRFRPLmNvbG9yID0gbGluZVNldC5jb2xvcjtcbiAgICAgICAgRFRPLmNhdGVnb3J5SWQgPSBsaW5lU2V0LmNhdGVnb3J5SWQ7XG4gICAgICAgIHJldHVybiBEVE87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGlkZUFydGljbGVUZXh0RGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0FydGljbGVUZXh0ID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9oaWRlVHJhbnNhY3Rpb25UZXh0RGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1RyYW5zYWN0aW9uVGV4dCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGlkZUFydGljbGVUZXh0T3ZlcnZpZXdEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93QXJ0aWNsZVRleHRPdmVydmlldyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUcmFuc2FjdGlvbkxpbmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb25MaW5lKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZSA9IHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lc1xuICAgICAgICAuZmluZCgobGluZSkgPT4gbGluZS5saW5lTnIgPT09IHRoaXMudHJhbnNhY3Rpb25MaW5lLmxpbmVOcik7XG4gICAgfVxuICAgIGlmICh0aGlzLnNpZGVQYW5lbFRyYW5zYWN0aW9uTGluZSkge1xuICAgICAgdGhpcy5zaWRlUGFuZWxUcmFuc2FjdGlvbkxpbmUgPSB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXNcbiAgICAgICAgLmZpbmQoKGxpbmUpID0+IGxpbmUubGluZU5yID09PSB0aGlzLnNpZGVQYW5lbFRyYW5zYWN0aW9uTGluZS5saW5lTnIpO1xuICAgIH1cbiAgICAvLyBpZiAodGhpcy5zaG91bGRTaG93U2lkZVBhbmVsICYmIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lcyAmJiB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uTGluZXMubGVuZ3RoID4gMCkge1xuICAgIC8vICAgdGhpcy5oYW5kbGVTaG93U2lkZVBhbmVsKHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25MaW5lc1swXSk7XG4gICAgLy8gfVxuICB9XG5cbiAgLy8gcHJpdmF0ZSBfcHJlcGFyZUhlYWRlcigpOiB2b2lkIHtcbiAgLy8gICAgIGlmICh0aGlzLl9zY3JlZW5Db25maWd1cmF0aW9uU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuY2ZnTmFtZXMuUmVsYXRpb25JbmZvSGVhZGVyKS5pbW1lZGlhdGVseUhpZGRlbigpICYmXG4gIC8vICAgICAgICAgdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmNmZ05hbWVzLk9yZGVySW5mb0hlYWRlcikuaW1tZWRpYXRlbHlIaWRkZW4oKSAmJlxuICAvLyAgICAgICAgIHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5jZmdOYW1lcy5QYXltZW50SW5mb0hlYWRlcikuaW1tZWRpYXRlbHlIaWRkZW4oKSAmJlxuICAvLyAgICAgICAgIHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5jZmdOYW1lcy5EZWxpdmVyeUluZm9IZWFkZXIpLmltbWVkaWF0ZWx5SGlkZGVuKCkpIHtcbiAgLy8gICAgICAgICAvLyBub3RoaW5nIHRvIHNlZSBoZXJlXG4gIC8vICAgICAgICAgdGhpcy5zaG93SGVhZGVyID0gZmFsc2U7XG4gIC8vICAgICB9XG4gIC8vIH1cblxuICBwdWJsaWMgaGFuZGxlVmlld01vZGVDaGFuZ2UobW9kZTogQ29udGVudFZpZXdNb2RlKSB7XG4gICAgdGhpcy5hY3RpdmVWaWV3TW9kZSA9IG1vZGU7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UGxhbk9yZGVyRm9yVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSB7XG4gICAgaWYgKCF0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5jdXJyZW50UGxhbm5pbmc/LnBsYW5uaW5nSWQpIHtcbiAgICAgIGNvbnN0IHBsYW5uaW5nU291cmNlczogUGxhbm5pbmdbXSA9IGF3YWl0IHRoaXMuX3RyYW5zYWN0aW9uQ29ubmVjdG9yU2VydmljZS5nZXRQbGFubmluZ1NvdXJjZXMoKTtcbiAgICAgIHRoaXMuX2RlbGl2ZXJ5UGxhbm5pbmdTZXJ2aWNlLmN1cnJlbnRQbGFubmluZyA9IHBsYW5uaW5nU291cmNlc1swXSA/IHBsYW5uaW5nU291cmNlc1swXSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IHBsYW5PcmRlcjogUGxhbk9yZGVyID0gYXdhaXQgdGhpcy5fdHJhbnNhY3Rpb25Db25uZWN0b3JTZXJ2aWNlLmdldFBsYW5PcmRlcih0cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpO1xuXG4gICAgaWYgKHBsYW5PcmRlcikge1xuICAgICAgYXdhaXQgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UuZ2V0U2VxdWVuY2VPcmRlclZhbHVlKHBsYW5PcmRlcik7XG4gICAgICBhd2FpdCB0aGlzLl9kZWxpdmVyeVBsYW5uaW5nU2VydmljZS5nZXRPcmRlckxpbmVzUGxhbm5lZChwbGFuT3JkZXIpO1xuICAgICAgdGhpcy5fZGVsaXZlcnlQbGFubmluZ1NlcnZpY2UubGluZXNQbGFuT3JkZXIgPSBwbGFuT3JkZXI7XG4gICAgfVxuICB9XG59XG4iXX0=