@colijnit/transaction 257.1.33 → 257.1.35

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.
@@ -29,6 +29,7 @@ export class AddProductComponent {
29
29
  this.showRelatedProductsPopup = false;
30
30
  this.cartPlusIcon = this.iconService.getIcon(this.icons.CartPlusRegular);
31
31
  this.cartMinIcon = this.iconService.getIcon(this.icons.CartMinusRegular);
32
+ this.pendingAddArticleAction = false;
32
33
  this._showCatalog = false;
33
34
  this._subs = [];
34
35
  }
@@ -59,35 +60,40 @@ export class AddProductComponent {
59
60
  }
60
61
  this.searchText = text;
61
62
  this._prepareCatalogRequest();
62
- this.searchText = undefined;
63
+ this._changeDetector.detectChanges();
64
+ this.searchText = "";
63
65
  // first check if there's a single article found
64
66
  // This is a two check step:
65
67
  // Check if there is an exact match on barcode, ean or articlenumber
66
68
  // if not: check with search like
67
69
  // else open catalogus
68
- const fullMatchSearch = yield this.transactionService.getArticleListWithBarcodeArticleNrEanCode(text);
69
- if (fullMatchSearch && fullMatchSearch.length === 1) {
70
- const article = yield this.transactionService.getArticleExtended(fullMatchSearch[0].articleNr);
71
- if (article.goodType === "B") {
72
- this.showCatalogDialog();
73
- }
74
- else {
75
- yield this.handleAddArticle(article);
76
- }
77
- }
78
- else {
79
- const foundArticles = yield this.transactionService.getArticles(this.catalogParameters);
80
- if (foundArticles && foundArticles.length === 1) {
81
- const article = yield this.transactionService.getArticleExtended(foundArticles[0].articleNumber);
70
+ if (!this.pendingAddArticleAction) {
71
+ const fullMatchSearch = yield this.transactionService.getArticleListWithBarcodeArticleNrEanCode(text);
72
+ if (fullMatchSearch && fullMatchSearch.length === 1) {
73
+ const article = yield this.transactionService.getArticleExtended(fullMatchSearch[0].articleNr);
82
74
  if (article.goodType === "B") {
83
75
  this.showCatalogDialog();
84
76
  }
85
77
  else {
78
+ this.pendingAddArticleAction = true;
86
79
  yield this.handleAddArticle(article);
87
80
  }
88
81
  }
89
82
  else {
90
- this.showCatalogDialog();
83
+ const foundArticles = yield this.transactionService.getArticles(this.catalogParameters);
84
+ if (foundArticles && foundArticles.length === 1) {
85
+ const article = yield this.transactionService.getArticleExtended(foundArticles[0].articleNumber);
86
+ if (article.goodType === "B") {
87
+ this.showCatalogDialog();
88
+ }
89
+ else {
90
+ this.pendingAddArticleAction = true;
91
+ yield this.handleAddArticle(article);
92
+ }
93
+ }
94
+ else {
95
+ this.showCatalogDialog();
96
+ }
91
97
  }
92
98
  }
93
99
  });
@@ -99,9 +105,13 @@ export class AddProductComponent {
99
105
  return __awaiter(this, void 0, void 0, function* () {
100
106
  if (this.handleAddArticleInternally) {
101
107
  const success = yield this.transactionService.addArticle(article.articleNumber, this.return ? -1 : 1);
102
- if (!success) {
108
+ if (success) {
109
+ this.searchText = "";
110
+ }
111
+ else {
103
112
  this.transactionService.rollback();
104
113
  }
114
+ this.pendingAddArticleAction = false;
105
115
  }
106
116
  else {
107
117
  this.addArticle.next({
@@ -111,6 +121,7 @@ export class AddProductComponent {
111
121
  belowLineNr: 0,
112
122
  lastArticle: true
113
123
  });
124
+ this.pendingAddArticleAction = false;
114
125
  }
115
126
  });
116
127
  }
@@ -121,29 +132,7 @@ export class AddProductComponent {
121
132
  // }
122
133
  this.showCatalog = false;
123
134
  if (this.handleAddArticleInternally) {
124
- if (data && data.article) {
125
- if (typeof data.article === 'string') {
126
- const article = JSON.parse(data.article);
127
- if (article.selectorData.compositions) { // configured (frozen) article
128
- yield this.transactionService.addArticle(article.selectorData.compositions[0].compositionArticleNo, data.quantity, 0, 0, true, true);
129
- }
130
- else if (article.selectorData.articleNr) { // flat article
131
- yield this.transactionService.addArticle(article.selectorData.articleNr, data.quantity, 0, 0, true, true);
132
- }
133
- }
134
- else { // flat (simple) article
135
- let articleNr;
136
- if (data.article instanceof ArticleExtended) {
137
- articleNr = data.article.articleNumber;
138
- }
139
- else {
140
- articleNr = data.article.hasOwnProperty('articleNr') ? data.article['articleNr'] : data.article['articleNo'];
141
- }
142
- if (articleNr) {
143
- yield this.transactionService.addArticle(articleNr, data.quantity, 0, 0, true, true);
144
- }
145
- }
146
- }
135
+ yield this._handleArticleTypeOnAdd(data);
147
136
  }
148
137
  else {
149
138
  if (data && data.article instanceof ArticleExtended) {
@@ -158,6 +147,46 @@ export class AddProductComponent {
158
147
  }
159
148
  });
160
149
  }
150
+ _tryAddArticle(articleNr, quantity) {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ const success = yield this.transactionService.addArticle(articleNr, quantity, 0, 0, true, true);
153
+ console.log(success);
154
+ if (success) {
155
+ this.searchText = "";
156
+ }
157
+ else {
158
+ // keep the search text
159
+ this.searchText = this.inputSearchText.model;
160
+ }
161
+ });
162
+ }
163
+ _handleArticleTypeOnAdd(data) {
164
+ return __awaiter(this, void 0, void 0, function* () {
165
+ if (data && data.article) {
166
+ if (typeof data.article === 'string') {
167
+ const article = JSON.parse(data.article);
168
+ if (article.selectorData.compositions) { // configured (frozen) article
169
+ yield this._tryAddArticle(article.selectorData.compositions[0].compositionArticleNo, data.quantity);
170
+ }
171
+ else if (article.selectorData.articleNr) { // flat article
172
+ yield this._tryAddArticle(article.selectorData.articleNr, data.quantity);
173
+ }
174
+ }
175
+ else { // flat (simple) article
176
+ let articleNr;
177
+ if (data.article instanceof ArticleExtended) {
178
+ articleNr = data.article.articleNumber;
179
+ }
180
+ else {
181
+ articleNr = data.article.hasOwnProperty('articleNr') ? data.article['articleNr'] : data.article['articleNo'];
182
+ }
183
+ if (articleNr) {
184
+ yield this._tryAddArticle(articleNr, data.quantity);
185
+ }
186
+ }
187
+ }
188
+ });
189
+ }
161
190
  getActualQuantity(quantityInput) {
162
191
  let quantity = 0;
163
192
  if (this.return && quantityInput > 0) {
@@ -176,6 +205,11 @@ export class AddProductComponent {
176
205
  }
177
206
  showCatalogDialog() {
178
207
  this.showCatalog = true;
208
+ this.pendingAddArticleAction = false;
209
+ }
210
+ handleCloseCatalogueClick() {
211
+ this.showCatalog = false;
212
+ this.searchText = "";
179
213
  }
180
214
  handleCartIconClick(event) {
181
215
  this.return = !this.return;
@@ -185,7 +219,7 @@ export class AddProductComponent {
185
219
  this.searchText = this.inputSearchText.model;
186
220
  }
187
221
  this._prepareCatalogRequest();
188
- this.searchText = undefined;
222
+ // this.searchText = undefined;
189
223
  this.showCatalogDialog();
190
224
  }
191
225
  handleIFrameFeedback(iFrameFeedbackObject) {
@@ -247,7 +281,7 @@ AddProductComponent.decorators = [
247
281
  [isReturn]="return"
248
282
  [showRelatedProductsPopup]="showRelatedProductsPopup"
249
283
  [transaction]="transactionService.currentTransaction"
250
- (closeClick)="showCatalog = false"
284
+ (closeClick)="handleCloseCatalogueClick()"
251
285
  (articleClicked)="handleCatalogArticleClick($event)"
252
286
  (addArticleClicked)="handleAddArticleClick($event)"
253
287
  (addCatFarmArticleClicked)="handleAddCatFarmArticleClick($event)"
@@ -271,4 +305,4 @@ AddProductComponent.propDecorators = {
271
305
  showClass: [{ type: HostBinding, args: ['class.co-add-product',] }],
272
306
  return: [{ type: HostBinding, args: ['class.return',] }]
273
307
  };
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvYWRkLXByb2R1Y3QvYWRkLXByb2R1Y3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDbkMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUVyRyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQStDaEYsTUFBTSxPQUFPLG1CQUFtQjtJQWlENUIsWUFDVyxXQUE2QixFQUM3QixrQkFBc0MsRUFDdEMsdUJBQWdELEVBQy9DLGVBQWtDO1FBSG5DLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDL0Msb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBcEQ5QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFHM0MsZUFBVSxHQUFzQyxJQUFJ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O3FCQUtsQyxXQUFXLFNBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FydGljbGVFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpZ2h0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpZ2h0LmJvJztcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7XHJcbiAgICBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdFxyXG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLWFkZC1hcnRpY2xlLXJlcXVlc3QnO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1R5cGVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9leHRlcm5hbC1jYXRhbG9nLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge0lucHV0U2Nhbm5lckNvbXBvbmVudH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZEFydGljbGVJbnRlcmZhY2Uge1xyXG4gICAgYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkO1xyXG4gICAgcXVhbnRpdHk6IG51bWJlcjtcclxuICAgIGFib3ZlTGluZU5yOiBudW1iZXI7XHJcbiAgICBiZWxvd0xpbmVOcjogbnVtYmVyO1xyXG4gICAgbGFzdEFydGljbGU6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjby1hZGQtcHJvZHVjdCcsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjby1pbnB1dC1zY2FubmVyXHJcbiAgICAgICAgICAgICNpbnB1dFNlYXJjaFxyXG4gICAgICAgICAgICBbY3VzdG9tQ3NzQ2xhc3NdPVwiJ25vLWZvY3VzLWxpbmUnXCJcclxuICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VBUkNIX0FERF9BUlRJQ0xFJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2NlbnRlckxhYmVsXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbdXNlTGVmdEljb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtsZWZ0SWNvbkRhdGFdPVwicmV0dXJuID8gY2FydE1pbkljb24gOiBjYXJ0UGx1c0ljb25cIlxyXG4gICAgICAgICAgICBbdXNlUmlnaHRJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAobGVmdEljb25DbGljayk9XCJoYW5kbGVDYXJ0SWNvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAocmlnaHRJY29uQ2xpY2spPVwiaGFuZGxlU2VhcmNoSWNvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAoYmFyQ29kZVNjYW5uZWQpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAoc2VhcmNoKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGlzRm9jdXNlZCk9XCJoYW5kbGVJbnB1dEZvY3VzKCRldmVudClcIlxyXG4gICAgICAgID48L2NvLWlucHV0LXNjYW5uZXI+XHJcbiAgICAgICAgPGNvLWRpYWxvZy1jYXRhbG9nICpuZ0lmPVwic2hvd0NhdGFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjYXRhbG9nT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJhbWV0ZXJzXT1cImNhdGFsb2dQYXJhbWV0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5XT1cImhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSZXR1cm5dPVwicmV0dXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dSZWxhdGVkUHJvZHVjdHNQb3B1cF09XCJzaG93UmVsYXRlZFByb2R1Y3RzUG9wdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25dPVwidHJhbnNhY3Rpb25TZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cInNob3dDYXRhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJ0aWNsZUNsaWNrZWQpPVwiaGFuZGxlQ2F0YWxvZ0FydGljbGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZEFydGljbGVDbGlja2VkKT1cImhhbmRsZUFkZEFydGljbGVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZENhdEZhcm1BcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoaUZyYW1lRmVlZGJhY2spPVwiaGFuZGxlSUZyYW1lRmVlZGJhY2soJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvY28tZGlhbG9nLWNhdGFsb2c+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkUHJvZHVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBhZGRBcnRpY2xlOiBFdmVudEVtaXR0ZXI8QWRkQXJ0aWNsZUludGVyZmFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFkZEFydGljbGVJbnRlcmZhY2U+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRTZWFyY2gnKVxyXG4gICAgcHVibGljIGlucHV0U2VhcmNoVGV4dDogSW5wdXRTY2FubmVyQ29tcG9uZW50O1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY28tYWRkLXByb2R1Y3QnKVxyXG4gICAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJldHVybicpXHJcbiAgICBwdWJsaWMgcmV0dXJuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIGNhdGFsb2dPcHRpb25zOiBhbnkgPSB7XHJcbiAgICAgICAgc2VhcmNoT25TdGFydDogdHJ1ZSxcclxuICAgICAgICBzaG93QWRkVG9DYXJ0OiBmYWxzZSxcclxuICAgICAgICBzaG93TG9va0F0QXJ0aWNsZUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd0FkZEFydGljbGVCdXR0b246IHRydWUsXHJcbiAgICAgICAgb25seVRocmVlRDogZmFsc2VcclxuICAgIH07XHJcbiAgICBwdWJsaWMgY2F0YWxvZ1BhcmFtZXRlcnM6IGFueSA9IHt9O1xyXG5cclxuICAgIHB1YmxpYyBpc1NlYXJjaElucHV0Rm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNlYXJjaFRleHQ6IHN0cmluZztcclxuXHJcbiAgICBwdWJsaWMgc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIGNhcnRQbHVzSWNvbjogU2FmZUh0bWwgPSB0aGlzLmljb25TZXJ2aWNlLmdldEljb24odGhpcy5pY29ucy5DYXJ0UGx1c1JlZ3VsYXIpO1xyXG4gICAgcHVibGljIGNhcnRNaW5JY29uOiBTYWZlSHRtbCA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0SWNvbih0aGlzLmljb25zLkNhcnRNaW51c1JlZ3VsYXIpO1xyXG5cclxuICAgIHB1YmxpYyBzZXQgc2hvd0NhdGFsb2codmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zaG93Q2F0YWxvZyA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzaG93Q2F0YWxvZygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NhdGFsb2c7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2hvd0NhdGFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGljb25TZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmFmdGVyQWRkVHJhbnNhY3Rpb25MaW5lLnN1YnNjcmliZSgoYm9vbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dSZWxhdGVkUHJvZHVjdHNQb3B1cCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZVNlYXJjaCh0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0ZXh0O1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVDYXRhbG9nUmVxdWVzdCgpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIGEgc2luZ2xlIGFydGljbGUgZm91bmRcclxuICAgICAgICAvLyBUaGlzIGlzIGEgdHdvIGNoZWNrIHN0ZXA6XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYW4gZXhhY3QgbWF0Y2ggb24gYmFyY29kZSwgZWFuIG9yIGFydGljbGVudW1iZXJcclxuICAgICAgICAvLyBpZiBub3Q6IGNoZWNrIHdpdGggc2VhcmNoIGxpa2VcclxuICAgICAgICAvLyBlbHNlIG9wZW4gY2F0YWxvZ3VzXHJcblxyXG4gICAgICAgIGNvbnN0IGZ1bGxNYXRjaFNlYXJjaDogYW55W10gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlTGlzdFdpdGhCYXJjb2RlQXJ0aWNsZU5yRWFuQ29kZSh0ZXh0KTtcclxuICAgICAgICBpZiAoZnVsbE1hdGNoU2VhcmNoICYmIGZ1bGxNYXRjaFNlYXJjaC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZUV4dGVuZGVkKGZ1bGxNYXRjaFNlYXJjaFswXS5hcnRpY2xlTnIpO1xyXG4gICAgICAgICAgICBpZiAoYXJ0aWNsZS5nb29kVHlwZSA9PT0gXCJCXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NhdGFsb2dEaWFsb2coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kQXJ0aWNsZXM6IEFydGljbGVMaWdodFtdID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZXModGhpcy5jYXRhbG9nUGFyYW1ldGVycyk7XHJcbiAgICAgICAgICAgIGlmIChmb3VuZEFydGljbGVzICYmIGZvdW5kQXJ0aWNsZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlRXh0ZW5kZWQoZm91bmRBcnRpY2xlc1swXS5hcnRpY2xlTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgIGlmIChhcnRpY2xlLmdvb2RUeXBlID09PSBcIkJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NhdGFsb2dEaWFsb2coKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVBZGRBcnRpY2xlKGFydGljbGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVJbnB1dEZvY3VzKGlzRm9jdXNlZDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQgPSBpc0ZvY3VzZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZUFkZEFydGljbGUoYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3VjY2VzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEFydGljbGUoYXJ0aWNsZS5hcnRpY2xlTnVtYmVyLCB0aGlzLnJldHVybiA/IC0xIDogMSk7XHJcbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uucm9sbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQXJ0aWNsZS5uZXh0KHtcclxuICAgICAgICAgICAgICAgIGFydGljbGU6IGFydGljbGUsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogdGhpcy5yZXR1cm4gPyAtMSA6IDEsXHJcbiAgICAgICAgICAgICAgICBhYm92ZUxpbmVOcjogMCxcclxuICAgICAgICAgICAgICAgIGJlbG93TGluZU5yOiAwLFxyXG4gICAgICAgICAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRBcnRpY2xlQ2xpY2soZGF0YTogeyBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQsIHF1YW50aXR5OiBudW1iZXIgfSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5zaG93UmVsYXRlZFByb2R1Y3RzUG9wdXApIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHkpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5hcnRpY2xlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuYXJ0aWNsZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnRpY2xlID0gSlNPTi5wYXJzZShkYXRhLmFydGljbGUgYXMgc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJ0aWNsZS5zZWxlY3RvckRhdGEuY29tcG9zaXRpb25zKSB7ICAvLyBjb25maWd1cmVkIChmcm96ZW4pIGFydGljbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkQXJ0aWNsZShhcnRpY2xlLnNlbGVjdG9yRGF0YS5jb21wb3NpdGlvbnNbMF0uY29tcG9zaXRpb25BcnRpY2xlTm8sIGRhdGEucXVhbnRpdHksIDAsIDAsIHRydWUsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJ0aWNsZS5zZWxlY3RvckRhdGEuYXJ0aWNsZU5yKSB7IC8vIGZsYXQgYXJ0aWNsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGUuc2VsZWN0b3JEYXRhLmFydGljbGVOciwgZGF0YS5xdWFudGl0eSwgMCwgMCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gZmxhdCAoc2ltcGxlKSBhcnRpY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFydGljbGVOcjogc3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmFydGljbGUgaW5zdGFuY2VvZiBBcnRpY2xlRXh0ZW5kZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZU5yID0gZGF0YS5hcnRpY2xlLmFydGljbGVOdW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZU5yID0gKGRhdGEuYXJ0aWNsZSBhcyBhbnkpLmhhc093blByb3BlcnR5KCdhcnRpY2xlTnInKSA/IGRhdGEuYXJ0aWNsZVsnYXJ0aWNsZU5yJ10gOiBkYXRhLmFydGljbGVbJ2FydGljbGVObyddO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJ0aWNsZU5yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEFydGljbGUoYXJ0aWNsZU5yLCBkYXRhLnF1YW50aXR5LCAwLCAwLCB0cnVlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmFydGljbGUgaW5zdGFuY2VvZiBBcnRpY2xlRXh0ZW5kZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQXJ0aWNsZS5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlOiBkYXRhLmFydGljbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHRoaXMuZ2V0QWN0dWFsUXVhbnRpdHkoZGF0YS5xdWFudGl0eSksXHJcbiAgICAgICAgICAgICAgICAgICAgYWJvdmVMaW5lTnI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgYmVsb3dMaW5lTnI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdEFydGljbGU6IHRydWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBY3R1YWxRdWFudGl0eShxdWFudGl0eUlucHV0KTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgcXVhbnRpdHk6IG51bWJlciA9IDA7XHJcbiAgICAgICAgaWYgKHRoaXMucmV0dXJuICYmIHF1YW50aXR5SW5wdXQgPiAwKSB7XHJcbiAgICAgICAgICAgIHF1YW50aXR5ID0gLTE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcXVhbnRpdHkgPSBxdWFudGl0eUlucHV0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcXVhbnRpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZUNhdGFsb2dBcnRpY2xlQ2xpY2soYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVBZGRBcnRpY2xlKGFydGljbGUpO1xyXG4gICAgICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2hvd0NhdGFsb2dEaWFsb2coKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUNhcnRJY29uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJldHVybiA9ICF0aGlzLnJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlU2VhcmNoSWNvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmlucHV0U2VhcmNoVGV4dC5tb2RlbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmlucHV0U2VhcmNoVGV4dC5tb2RlbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUNhdGFsb2dSZXF1ZXN0KCk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuc2hvd0NhdGFsb2dEaWFsb2coKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlSUZyYW1lRmVlZGJhY2soaUZyYW1lRmVlZGJhY2tPYmplY3Q6IHtcclxuICAgICAgICBqc29uU3RyaW5nOiBzdHJpbmcsXHJcbiAgICAgICAgY2F0YWxvZzogbnVtYmVyLFxyXG4gICAgICAgIHNvdXJjZVR5cGU6IHN0cmluZ1xyXG4gICAgfSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgICAgICBsZXQgcmVxdWVzdDogRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QgPSBuZXcgRXh0ZXJuYWxDYXRhbG9nQWRkQXJ0aWNsZVJlcXVlc3QoKTtcclxuICAgICAgICByZXF1ZXN0LmNhdGFsb2dJZCA9IGlGcmFtZUZlZWRiYWNrT2JqZWN0LmNhdGFsb2c7XHJcbiAgICAgICAgcmVxdWVzdC5jYXRhbG9nVHlwZSA9IGlGcmFtZUZlZWRiYWNrT2JqZWN0LnNvdXJjZVR5cGU7XHJcbiAgICAgICAgcmVxdWVzdC5hcnRpY2xlSnNvbiA9IGlGcmFtZUZlZWRiYWNrT2JqZWN0Lmpzb25TdHJpbmc7XHJcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZShyZXF1ZXN0LCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkQ2F0RmFybUFydGljbGVDbGljayhkYXRhOiB7XHJcbiAgICAgICAgcXVhbnRpdHk6IG51bWJlcixcclxuICAgICAgICBqc29uU3RyaW5nOiBzdHJpbmcsXHJcbiAgICAgICAgY2F0YWxvZzogbnVtYmVyXHJcbiAgICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIGxldCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCgpO1xyXG4gICAgICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gZGF0YS5jYXRhbG9nO1xyXG4gICAgICAgIHJlcXVlc3QuY2F0YWxvZ1R5cGUgPSBFeHRlcm5hbENhdGFsb2dUeXBlcy5DYXRhbG9nRmFybTtcclxuICAgICAgICByZXF1ZXN0LmFydGljbGVKc29uID0gZGF0YS5qc29uU3RyaW5nO1xyXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEV4dGVybmFsQ2F0YWxvZ0FydGljbGUocmVxdWVzdCwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUNhdGFsb2dSZXF1ZXN0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuZ2VuZXJhbCA9IHRoaXMuc2VhcmNoVGV4dDtcclxuICAgICAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dSZWd1bGFyQXJ0aWNsZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbmZpZ3VyZWRBcnRpY2xlcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbmZpZ3VyYWJsZUFydGljbGVzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDb21wb3NpdGlvbkFydGljbGVzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93Q3VzdG9taXplZEFydGljbGVzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93SW5hY3RpdmVBcnRpY2xlcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMucHVibGljYXRpb25Db2RlID0gNzE7IC8vIHRvZG86IGZpeCB0aGlzP1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuaXNSZXR1cm4gPSB0aGlzLnJldHVybjtcclxuICAgIH1cclxufVxyXG4iXX0=
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXByb2R1Y3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvYWRkLXByb2R1Y3QvYWRkLXByb2R1Y3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDbkMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUVyRyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQStDaEYsTUFBTSxPQUFPLG1CQUFtQjtJQW1ENUIsWUFDVyxXQUE2QixFQUM3QixrQkFBc0MsRUFDdEMsdUJBQWdELEVBQy9DLGVBQWtDO1FBSG5DLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDL0Msb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBdEQ5QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQywrQkFBMEIsR0FBWSxJQUFJLENBQUM7UUFHM0MsZUFBVSxHQUFzQyxJQUFJ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TyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNsRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQ3RELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUMsQ0FBQyxrQkFBa0I7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xELENBQUM7OztZQWhUSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBK0JUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7WUF2RE8sZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQVFsQix1QkFBdUI7WUFyQjNCLGlCQUFpQjs7O3lDQXVFaEIsS0FBSzt5QkFHTCxNQUFNOzhCQUdOLFNBQVMsU0FBQyxhQUFhO3dCQUd2QixXQUFXLFNBQUMsc0JBQXNCO3FCQUtsQyxXQUFXLFNBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FydGljbGVFeHRlbmRlZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ibyc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUxpZ2h0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpZ2h0LmJvJztcclxuaW1wb3J0IHtTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7XHJcbiAgICBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdFxyXG59IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9leHRlcm5hbC1jYXRhbG9nLWFkZC1hcnRpY2xlLXJlcXVlc3QnO1xyXG5pbXBvcnQge0V4dGVybmFsQ2F0YWxvZ1R5cGVzfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS9leHRlcm5hbC1jYXRhbG9nLXR5cGVzLmVudW0nO1xyXG5pbXBvcnQge0lucHV0U2Nhbm5lckNvbXBvbmVudH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFkZEFydGljbGVJbnRlcmZhY2Uge1xyXG4gICAgYXJ0aWNsZTogQXJ0aWNsZUV4dGVuZGVkO1xyXG4gICAgcXVhbnRpdHk6IG51bWJlcjtcclxuICAgIGFib3ZlTGluZU5yOiBudW1iZXI7XHJcbiAgICBiZWxvd0xpbmVOcjogbnVtYmVyO1xyXG4gICAgbGFzdEFydGljbGU6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjby1hZGQtcHJvZHVjdCcsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjby1pbnB1dC1zY2FubmVyXHJcbiAgICAgICAgICAgICNpbnB1dFNlYXJjaFxyXG4gICAgICAgICAgICBbY3VzdG9tQ3NzQ2xhc3NdPVwiJ25vLWZvY3VzLWxpbmUnXCJcclxuICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VBUkNIX0FERF9BUlRJQ0xFJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2NlbnRlckxhYmVsXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbdXNlTGVmdEljb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtsZWZ0SWNvbkRhdGFdPVwicmV0dXJuID8gY2FydE1pbkljb24gOiBjYXJ0UGx1c0ljb25cIlxyXG4gICAgICAgICAgICBbdXNlUmlnaHRJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAobGVmdEljb25DbGljayk9XCJoYW5kbGVDYXJ0SWNvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAocmlnaHRJY29uQ2xpY2spPVwiaGFuZGxlU2VhcmNoSWNvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAoYmFyQ29kZVNjYW5uZWQpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAoc2VhcmNoKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGlzRm9jdXNlZCk9XCJoYW5kbGVJbnB1dEZvY3VzKCRldmVudClcIlxyXG4gICAgICAgID48L2NvLWlucHV0LXNjYW5uZXI+XHJcbiAgICAgICAgPGNvLWRpYWxvZy1jYXRhbG9nICpuZ0lmPVwic2hvd0NhdGFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjYXRhbG9nT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJhbWV0ZXJzXT1cImNhdGFsb2dQYXJhbWV0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5XT1cImhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOYXZpZ2F0aW9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSZXR1cm5dPVwicmV0dXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dSZWxhdGVkUHJvZHVjdHNQb3B1cF09XCJzaG93UmVsYXRlZFByb2R1Y3RzUG9wdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNhY3Rpb25dPVwidHJhbnNhY3Rpb25TZXJ2aWNlLmN1cnJlbnRUcmFuc2FjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cImhhbmRsZUNsb3NlQ2F0YWxvZ3VlQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcnRpY2xlQ2xpY2tlZCk9XCJoYW5kbGVDYXRhbG9nQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkQXJ0aWNsZUNsaWNrZWQpPVwiaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkQ2F0RmFybUFydGljbGVDbGlja2VkKT1cImhhbmRsZUFkZENhdEZhcm1BcnRpY2xlQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpRnJhbWVGZWVkYmFjayk9XCJoYW5kbGVJRnJhbWVGZWVkYmFjaygkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9jby1kaWFsb2ctY2F0YWxvZz5cclxuICAgIGAsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRQcm9kdWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGFuZGxlQWRkQXJ0aWNsZUludGVybmFsbHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFkZEFydGljbGU6IEV2ZW50RW1pdHRlcjxBZGRBcnRpY2xlSW50ZXJmYWNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkQXJ0aWNsZUludGVyZmFjZT4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dFNlYXJjaCcpXHJcbiAgICBwdWJsaWMgaW5wdXRTZWFyY2hUZXh0OiBJbnB1dFNjYW5uZXJDb21wb25lbnQ7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1hZGQtcHJvZHVjdCcpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucmV0dXJuJylcclxuICAgIHB1YmxpYyByZXR1cm46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgY2F0YWxvZ09wdGlvbnM6IGFueSA9IHtcclxuICAgICAgICBzZWFyY2hPblN0YXJ0OiB0cnVlLFxyXG4gICAgICAgIHNob3dBZGRUb0NhcnQ6IGZhbHNlLFxyXG4gICAgICAgIHNob3dMb29rQXRBcnRpY2xlQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICBzaG93QWRkQXJ0aWNsZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICBvbmx5VGhyZWVEOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHB1YmxpYyBjYXRhbG9nUGFyYW1ldGVyczogYW55ID0ge307XHJcblxyXG4gICAgcHVibGljIGlzU2VhcmNoSW5wdXRGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nO1xyXG5cclxuICAgIHB1YmxpYyBzaG93UmVsYXRlZFByb2R1Y3RzUG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgY2FydFBsdXNJY29uOiBTYWZlSHRtbCA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0SWNvbih0aGlzLmljb25zLkNhcnRQbHVzUmVndWxhcik7XHJcbiAgICBwdWJsaWMgY2FydE1pbkljb246IFNhZmVIdG1sID0gdGhpcy5pY29uU2VydmljZS5nZXRJY29uKHRoaXMuaWNvbnMuQ2FydE1pbnVzUmVndWxhcik7XHJcblxyXG4gICAgcHVibGljIHBlbmRpbmdBZGRBcnRpY2xlQWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIHNldCBzaG93Q2F0YWxvZyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3Nob3dDYXRhbG9nID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zaG93UmVsYXRlZFByb2R1Y3RzUG9wdXAgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHNob3dDYXRhbG9nKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93Q2F0YWxvZztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zaG93Q2F0YWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgaWNvblNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyB0cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuYWZ0ZXJBZGRUcmFuc2FjdGlvbkxpbmUuc3Vic2NyaWJlKChib29sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYm9vbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlU2VhcmNoKHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5pc1NlYXJjaElucHV0Rm9jdXNlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRleHQ7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUNhdGFsb2dSZXF1ZXN0KCk7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gXCJcIjtcclxuICAgICAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIGEgc2luZ2xlIGFydGljbGUgZm91bmRcclxuICAgICAgICAvLyBUaGlzIGlzIGEgdHdvIGNoZWNrIHN0ZXA6XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYW4gZXhhY3QgbWF0Y2ggb24gYmFyY29kZSwgZWFuIG9yIGFydGljbGVudW1iZXJcclxuICAgICAgICAvLyBpZiBub3Q6IGNoZWNrIHdpdGggc2VhcmNoIGxpa2VcclxuICAgICAgICAvLyBlbHNlIG9wZW4gY2F0YWxvZ3VzXHJcbiAgICAgICAgaWYgKCF0aGlzLnBlbmRpbmdBZGRBcnRpY2xlQWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxNYXRjaFNlYXJjaDogYW55W10gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlTGlzdFdpdGhCYXJjb2RlQXJ0aWNsZU5yRWFuQ29kZSh0ZXh0KTtcclxuICAgICAgICAgICAgaWYgKGZ1bGxNYXRjaFNlYXJjaCAmJiBmdWxsTWF0Y2hTZWFyY2gubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnRpY2xlOiBBcnRpY2xlRXh0ZW5kZWQgPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRBcnRpY2xlRXh0ZW5kZWQoZnVsbE1hdGNoU2VhcmNoWzBdLmFydGljbGVOcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJ0aWNsZS5nb29kVHlwZSA9PT0gXCJCXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dDYXRhbG9nRGlhbG9nKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0FkZEFydGljbGVBY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kQXJ0aWNsZXM6IEFydGljbGVMaWdodFtdID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0QXJ0aWNsZXModGhpcy5jYXRhbG9nUGFyYW1ldGVycyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRBcnRpY2xlcyAmJiBmb3VuZEFydGljbGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFydGljbGU6IEFydGljbGVFeHRlbmRlZCA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEFydGljbGVFeHRlbmRlZChmb3VuZEFydGljbGVzWzBdLmFydGljbGVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcnRpY2xlLmdvb2RUeXBlID09PSBcIkJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dDYXRhbG9nRGlhbG9nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQWRkQXJ0aWNsZUFjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NhdGFsb2dEaWFsb2coKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRGb2N1cyhpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkID0gaXNGb2N1c2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRBcnRpY2xlKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRBcnRpY2xlKGFydGljbGUuYXJ0aWNsZU51bWJlciwgdGhpcy5yZXR1cm4gPyAtMSA6IDEpXHJcblxyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gXCJcIlxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2Uucm9sbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdBZGRBcnRpY2xlQWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRBcnRpY2xlLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgYXJ0aWNsZTogYXJ0aWNsZSxcclxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiB0aGlzLnJldHVybiA/IC0xIDogMSxcclxuICAgICAgICAgICAgICAgIGFib3ZlTGluZU5yOiAwLFxyXG4gICAgICAgICAgICAgICAgYmVsb3dMaW5lTnI6IDAsXHJcbiAgICAgICAgICAgICAgICBsYXN0QXJ0aWNsZTogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nQWRkQXJ0aWNsZUFjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgaGFuZGxlQWRkQXJ0aWNsZUNsaWNrKGRhdGE6IHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUV4dGVuZGVkLCBxdWFudGl0eTogbnVtYmVyIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuc2hvd1JlbGF0ZWRQcm9kdWN0c1BvcHVwKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuc2hvd0NhdGFsb2cgPSBmYWxzZTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmhhbmRsZUFkZEFydGljbGVJbnRlcm5hbGx5KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFydGljbGVUeXBlT25BZGQoZGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5hcnRpY2xlIGluc3RhbmNlb2YgQXJ0aWNsZUV4dGVuZGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFydGljbGUubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZTogZGF0YS5hcnRpY2xlLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiB0aGlzLmdldEFjdHVhbFF1YW50aXR5KGRhdGEucXVhbnRpdHkpLFxyXG4gICAgICAgICAgICAgICAgICAgIGFib3ZlTGluZU5yOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGJlbG93TGluZU5yOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RBcnRpY2xlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF90cnlBZGRBcnRpY2xlKGFydGljbGVOcjogc3RyaW5nLCBxdWFudGl0eTogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmFkZEFydGljbGUoYXJ0aWNsZU5yLCBxdWFudGl0eSwgMCwgMCwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coc3VjY2VzcylcclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBcIlwiXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8ga2VlcCB0aGUgc2VhcmNoIHRleHRcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5pbnB1dFNlYXJjaFRleHQubW9kZWw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZUFydGljbGVUeXBlT25BZGQoZGF0YTogeyBhcnRpY2xlOiBzdHJpbmcgfCBBcnRpY2xlRXh0ZW5kZWQ7IHF1YW50aXR5OiBudW1iZXIgfSkge1xyXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEuYXJ0aWNsZSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuYXJ0aWNsZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFydGljbGUgPSBKU09OLnBhcnNlKGRhdGEuYXJ0aWNsZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFydGljbGUuc2VsZWN0b3JEYXRhLmNvbXBvc2l0aW9ucykgeyAgLy8gY29uZmlndXJlZCAoZnJvemVuKSBhcnRpY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fdHJ5QWRkQXJ0aWNsZShhcnRpY2xlLnNlbGVjdG9yRGF0YS5jb21wb3NpdGlvbnNbMF0uY29tcG9zaXRpb25BcnRpY2xlTm8sIGRhdGEucXVhbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcnRpY2xlLnNlbGVjdG9yRGF0YS5hcnRpY2xlTnIpIHsgLy8gZmxhdCBhcnRpY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fdHJ5QWRkQXJ0aWNsZShhcnRpY2xlLnNlbGVjdG9yRGF0YS5hcnRpY2xlTnIsIGRhdGEucXVhbnRpdHkpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIGZsYXQgKHNpbXBsZSkgYXJ0aWNsZVxyXG4gICAgICAgICAgICAgICAgbGV0IGFydGljbGVOcjogc3RyaW5nO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmFydGljbGUgaW5zdGFuY2VvZiBBcnRpY2xlRXh0ZW5kZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnRpY2xlTnIgPSBkYXRhLmFydGljbGUuYXJ0aWNsZU51bWJlcjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJ0aWNsZU5yID0gKGRhdGEuYXJ0aWNsZSBhcyBhbnkpLmhhc093blByb3BlcnR5KCdhcnRpY2xlTnInKSA/IGRhdGEuYXJ0aWNsZVsnYXJ0aWNsZU5yJ10gOiBkYXRhLmFydGljbGVbJ2FydGljbGVObyddO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFydGljbGVOcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3RyeUFkZEFydGljbGUoYXJ0aWNsZU5yLCBkYXRhLnF1YW50aXR5LClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWN0dWFsUXVhbnRpdHkocXVhbnRpdHlJbnB1dCk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IHF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgICAgIGlmICh0aGlzLnJldHVybiAmJiBxdWFudGl0eUlucHV0ID4gMCkge1xyXG4gICAgICAgICAgICBxdWFudGl0eSA9IC0xO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHF1YW50aXR5ID0gcXVhbnRpdHlJbnB1dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHF1YW50aXR5O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVDYXRhbG9nQXJ0aWNsZUNsaWNrKGFydGljbGU6IEFydGljbGVFeHRlbmRlZCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQWRkQXJ0aWNsZShhcnRpY2xlKTtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNob3dDYXRhbG9nRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd0NhdGFsb2cgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGVuZGluZ0FkZEFydGljbGVBY3Rpb24gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2VDYXRhbG9ndWVDbGljaygpIHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2FydEljb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmV0dXJuID0gIXRoaXMucmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVTZWFyY2hJY29uQ2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRTZWFyY2hUZXh0Lm1vZGVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRoaXMuaW5wdXRTZWFyY2hUZXh0Lm1vZGVsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTtcclxuICAgICAgICAvLyB0aGlzLnNlYXJjaFRleHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZ0RpYWxvZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVJRnJhbWVGZWVkYmFjayhpRnJhbWVGZWVkYmFja09iamVjdDoge1xyXG4gICAgICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgICAgICBjYXRhbG9nOiBudW1iZXIsXHJcbiAgICAgICAgc291cmNlVHlwZTogc3RyaW5nXHJcbiAgICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2F0YWxvZyA9IGZhbHNlO1xyXG4gICAgICAgIGxldCByZXF1ZXN0OiBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCA9IG5ldyBFeHRlcm5hbENhdGFsb2dBZGRBcnRpY2xlUmVxdWVzdCgpO1xyXG4gICAgICAgIHJlcXVlc3QuY2F0YWxvZ0lkID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuY2F0YWxvZztcclxuICAgICAgICByZXF1ZXN0LmNhdGFsb2dUeXBlID0gaUZyYW1lRmVlZGJhY2tPYmplY3Quc291cmNlVHlwZTtcclxuICAgICAgICByZXF1ZXN0LmFydGljbGVKc29uID0gaUZyYW1lRmVlZGJhY2tPYmplY3QuanNvblN0cmluZztcclxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5hZGRFeHRlcm5hbENhdGFsb2dBcnRpY2xlKHJlcXVlc3QsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVBZGRDYXRGYXJtQXJ0aWNsZUNsaWNrKGRhdGE6IHtcclxuICAgICAgICBxdWFudGl0eTogbnVtYmVyLFxyXG4gICAgICAgIGpzb25TdHJpbmc6IHN0cmluZyxcclxuICAgICAgICBjYXRhbG9nOiBudW1iZXJcclxuICAgIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLnNob3dDYXRhbG9nID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHJlcXVlc3Q6IEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0ID0gbmV3IEV4dGVybmFsQ2F0YWxvZ0FkZEFydGljbGVSZXF1ZXN0KCk7XHJcbiAgICAgICAgcmVxdWVzdC5jYXRhbG9nSWQgPSBkYXRhLmNhdGFsb2c7XHJcbiAgICAgICAgcmVxdWVzdC5jYXRhbG9nVHlwZSA9IEV4dGVybmFsQ2F0YWxvZ1R5cGVzLkNhdGFsb2dGYXJtO1xyXG4gICAgICAgIHJlcXVlc3QuYXJ0aWNsZUpzb24gPSBkYXRhLmpzb25TdHJpbmc7XHJcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuYWRkRXh0ZXJuYWxDYXRhbG9nQXJ0aWNsZShyZXF1ZXN0LCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQ2F0YWxvZ1JlcXVlc3QoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5nZW5lcmFsID0gdGhpcy5zZWFyY2hUZXh0O1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd1JlZ3VsYXJBcnRpY2xlcyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93Q29uZmlndXJlZEFydGljbGVzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5zaG93Q29uZmlndXJhYmxlQXJ0aWNsZXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1BhcmFtZXRlcnMuc2hvd0NvbXBvc2l0aW9uQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dDdXN0b21pemVkQXJ0aWNsZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dQYXJhbWV0ZXJzLnNob3dJbmFjdGl2ZUFydGljbGVzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5wdWJsaWNhdGlvbkNvZGUgPSA3MTsgLy8gdG9kbzogZml4IHRoaXM/XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nUGFyYW1ldGVycy5pc1JldHVybiA9IHRoaXMucmV0dXJuO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -59,6 +59,10 @@ export class TransactionLineImageAndDescriptionComponent extends TransactionLine
59
59
  transactionLineSet() {
60
60
  super.transactionLineSet();
61
61
  this._loadLineImage();
62
+ if (this.transactionLine.configurationReadable) {
63
+ // @ts-ignore
64
+ this.transactionLine.configurationReadable = this.transactionLine.configurationReadable.replaceAll('\n', '<br>');
65
+ }
62
66
  }
63
67
  visibilitySet() {
64
68
  super.visibilitySet();
@@ -113,10 +117,10 @@ TransactionLineImageAndDescriptionComponent.decorators = [
113
117
  screenConfigNativeElement>
114
118
  <div [ngClass]="{'article-text-expand': true, 'large-article': !expanded && !customerPortal}" class="co-small-scrollbar">
115
119
  <div class="article-text" *ngFor="let text of transactionLine.articleTextAsArray">
116
- <span [innerHTML]="text | safeHtml" (dblclick)="handleOpenArticleText()"></span>
120
+ <div [innerHTML]="text | safeHtml" (dblclick)="handleOpenArticleText()"></div>
117
121
  </div>
118
122
  <div *ngIf="!popUpView && transactionLine.configurationReadable" class="configuration-text">
119
- <span [innerHTML]="transactionLine.configurationReadable"></span>
123
+ <div [innerHTML]="transactionLine.configurationReadable"></div>
120
124
  </div>
121
125
  </div>
122
126
  <div class="expand-wrapper" (click)="expandClicked()" *ngIf="!customerPortal">
@@ -143,4 +147,4 @@ TransactionLineImageAndDescriptionComponent.propDecorators = {
143
147
  openArticleTextClicked: [{ type: Output }],
144
148
  handleDeleteLine: [{ type: Output }]
145
149
  };
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb24vdHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsOENBQThDLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQTJEMUYsTUFBTSxPQUFPLDJDQUE0QyxTQUFRLDRCQUE0QjtJQXREN0Y7O1FBeURTLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBR2xDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBT2hDLDJCQUFzQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3RFLHFCQUFnQixHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBRTVFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBTTdCLG1DQUE4QixHQUFnQztZQUNuRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLO1lBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFDdEMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztZQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQ3RD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ZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUFuSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQ0FBMkM7Z0JBQ3JELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1Q7Z0JBQ0QsU0FBUyxFQUFFLENBQUM7d0JBQ1YsT0FBTyxFQUFFLDhDQUE4Qzt3QkFDdkQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQztxQkFBQztpQkFDNUU7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7d0JBR0UsS0FBSzsrQkFHTCxLQUFLOzZCQUdMLEtBQUs7d0JBRUwsV0FBVyxTQUFDLGlEQUFpRDtxQ0FLN0QsTUFBTTsrQkFHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7SW1hZ2VBbmREZXNjcmlwdGlvbkNmZ05hbWVzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvaW1hZ2UtYW5kLWRlc2NyaXB0aW9uLWNmZy1uYW1lcy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUJhc2VDb21wb25lbnR9IGZyb20gJy4uL2NvcmUvYmFzZS90cmFuc2FjdGlvbi1saW5lLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge09iamVjdENvbmZpZ3VyYXRpb259IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL29iamVjdC1jb25maWd1cmF0aW9uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby10cmFuc2FjdGlvbi1saW5lLWltYWdlLWFuZC1kZXNjcmlwdGlvblwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIXRyYW5zYWN0aW9uTGluZS5pc1BheW1lbnRcIiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtaW1hZ2VcIiBbY2xhc3MucHJldmlld109XCJwcmV2aWV3XCIgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiaW1hZ2VBbmREZXNjcmlwdGlvbkNvbmZpZ05hbWVzPy5pbWFnZVwiIHNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQ+XHJcbiAgICAgIDxjby1pbWFnZS1kaXNwbGF5IFttb2RlbF09XCJpbWFnZVwiPjwvY28taW1hZ2UtZGlzcGxheT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGNvLWljb24gKm5nSWY9XCJ0cmFuc2FjdGlvbkxpbmUuaXNQYXltZW50XCIgY2xhc3M9XCJwYXltZW50LWxpbmUtaWNvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuVXBGcm9tTGluZVJlZ3VsYXIpXCI+XHJcbiAgICA8L2NvLWljb24+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtZGVzY3JpcHRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3JCbG9ja1wiICpuZ0lmPVwidHJhbnNhY3Rpb25MaW5lLmNvbG9yXCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwidHJhbnNhY3Rpb25MaW5lLmNvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWxpbmUtZGVzY3JpcHRpb24gY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWRlc2NyaXB0aW9uLWRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnTmFtZXNdPVwiaW1hZ2VBbmREZXNjcmlwdGlvbkNvbmZpZ05hbWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdEVkaXRNb2RlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1B1cmNoYXNlRGVzY109XCJzaG93UHVyY2hhc2VEZXNjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tZXJQb3J0YWxdPVwiY3VzdG9tZXJQb3J0YWxcIlxyXG4gICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWxpbmUtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWxpbmUtYXJ0aWNsZS1udW1iZXItd3JhcHBlclwiICpuZ0lmPVwiIXBvcFVwVmlldyAmJiAhY3VzdG9tZXJQb3J0YWxcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0RpdmlkZXJcIj58PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInRyYW5zYWN0aW9uTGluZS5hcnRpY2xlTnVtYmVyXCIgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiaW1hZ2VBbmREZXNjcmlwdGlvbkNvbmZpZ05hbWVzPy5hcnRpY2xlTnJcIiBzY3JlZW5Db25maWdOYXRpdmVFbGVtZW50Pjwvc3Bhbj5cclxuICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwiZGVsZXRlLWljb25cIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlRyYXNoQ2FuTGlnaHQpXCJcclxuICAgICAgICAgICAgICAgICAgIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImltYWdlQW5kRGVzY3JpcHRpb25Db25maWdOYW1lcz8uZGVsZXRlQnRuXCIgc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVRyYW5zYWN0aW9uTGluZUNsaWNrKCRldmVudClcIj48L2NvLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFwcmV2aWV3ICYmICFwb3BVcFZpZXcgJiYgKHRyYW5zYWN0aW9uTGluZS5hcnRpY2xlQm91bmRDb25jYXRlbmF0ZWRUZXh0IHx8IHRyYW5zYWN0aW9uTGluZS5jb25maWd1cmF0aW9uUmVhZGFibGUpXCJcclxuICAgICAgICAgICBjbGFzcz1cImFydGljbGUtdGV4dC13cmFwcGVyXCJcclxuICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJpbWFnZUFuZERlc2NyaXB0aW9uQ29uZmlnTmFtZXM/LmFydGljbGVUZXh0XCJcclxuICAgICAgICAgICBzY3JlZW5Db25maWdOYXRpdmVFbGVtZW50PlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydhcnRpY2xlLXRleHQtZXhwYW5kJzogdHJ1ZSwgJ2xhcmdlLWFydGljbGUnOiAhZXhwYW5kZWQgJiYgIWN1c3RvbWVyUG9ydGFsfVwiICBjbGFzcz1cImNvLXNtYWxsLXNjcm9sbGJhclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFydGljbGUtdGV4dFwiICpuZ0Zvcj1cImxldCB0ZXh0IG9mIHRyYW5zYWN0aW9uTGluZS5hcnRpY2xlVGV4dEFzQXJyYXlcIj5cclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ0ZXh0IHwgc2FmZUh0bWxcIiAoZGJsY2xpY2spPVwiaGFuZGxlT3BlbkFydGljbGVUZXh0KClcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcG9wVXBWaWV3ICYmIHRyYW5zYWN0aW9uTGluZS5jb25maWd1cmF0aW9uUmVhZGFibGVcIiBjbGFzcz1cImNvbmZpZ3VyYXRpb24tdGV4dFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInRyYW5zYWN0aW9uTGluZS5jb25maWd1cmF0aW9uUmVhZGFibGVcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kLXdyYXBwZXJcIiAoY2xpY2spPVwiZXhwYW5kQ2xpY2tlZCgpXCIgKm5nSWY9XCIhY3VzdG9tZXJQb3J0YWxcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXhwYW5kLXRleHRcIiBbdGV4dENvbnRlbnRdPVwiIWV4cGFuZGVkID8gKCdTSE9XX01PUkUnIHwgbG9jYWxpemUpIDogKCdTSE9XX0xFU1MnIHwgbG9jYWxpemUpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImV4cGFuZGVkID8gaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZXZyb25VcFJlZ3VsYXIpIDogaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZXZyb25Eb3duUmVndWxhcikgXCI+PC9jby1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSxcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRyYW5zYWN0aW9uTGluZUltYWdlQW5kRGVzY3JpcHRpb25Db21wb25lbnQpfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25MaW5lSW1hZ2VBbmREZXNjcmlwdGlvbkNvbXBvbmVudCBleHRlbmRzIFRyYW5zYWN0aW9uTGluZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBvcFVwVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93UHVyY2hhc2VEZXNjOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbWVyUG9ydGFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tdHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb25cIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb3BlbkFydGljbGVUZXh0Q2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaGFuZGxlRGVsZXRlTGluZTogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBwdWJsaWMgc2hvd0RpdmlkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGV4cGFuZENsaWNrZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBpbWFnZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBpbWFnZUFuZERlc2NyaXB0aW9uQ29uZmlnTmFtZXM6IEltYWdlQW5kRGVzY3JpcHRpb25DZmdOYW1lcyA9IHtcclxuICAgIGltYWdlOiB0aGlzLmNmZ05hbWVzLkltYWdlLFxyXG4gICAgZGVzY3JpcHRpb246IHRoaXMuY2ZnTmFtZXMuRGVzY3JpcHRpb24sXHJcbiAgICBhcnRpY2xlTnI6IHRoaXMuY2ZnTmFtZXMuQXJ0aWNsZU5yLFxyXG4gICAgYXJ0aWNsZVRleHQ6IHRoaXMuY2ZnTmFtZXMuQXJ0aWNsZVRleHQsXHJcbiAgICBkZXNjcmlwdGlvbkVkaXRCdG46IHRoaXMuY2ZnTmFtZXMuRGVzY3JpcHRpb25FZGl0QnRuLFxyXG4gICAgZGVsZXRlQnRuOiB0aGlzLmNmZ05hbWVzLkRlbGV0ZUJ0blxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZzogT2JqZWN0Q29uZmlndXJhdGlvbltdKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93RGl2aWRlciA9XHJcbiAgICAgICAgICAgICh0aGlzLnNjcmVlbkNvbmZpZ1NlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmltYWdlQW5kRGVzY3JpcHRpb25Db25maWdOYW1lcz8uZGVzY3JpcHRpb24pICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5pbWFnZUFuZERlc2NyaXB0aW9uQ29uZmlnTmFtZXM/LmRlc2NyaXB0aW9uKS5pbW1lZGlhdGVseVZpc2libGUoKSAmJiAhIXRoaXMudHJhbnNhY3Rpb25MaW5lLmdvb2REZXNjcmlwdGlvbikgJiZcclxuICAgICAgICAgICAgKHRoaXMuc2NyZWVuQ29uZmlnU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuaW1hZ2VBbmREZXNjcmlwdGlvbkNvbmZpZ05hbWVzPy5hcnRpY2xlTnIpICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5pbWFnZUFuZERlc2NyaXB0aW9uQ29uZmlnTmFtZXM/LmFydGljbGVOcikuaW1tZWRpYXRlbHlWaXNpYmxlKCkgJiYgISF0aGlzLnRyYW5zYWN0aW9uTGluZS5hcnRpY2xlTnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmFydGljbGVMaW5lVGV4dEFkZGVkT3JDaGFuZ2VkLnN1YnNjcmliZSgobGluZU5yOiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAobGluZU5yICYmIGxpbmVOciA9PT0gdGhpcy50cmFuc2FjdGlvbkxpbmUubGluZU5yKSB7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU9wZW5BcnRpY2xlVGV4dCgpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbkFydGljbGVUZXh0Q2xpY2tlZC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaGFuZGxlRGVsZXRlTGluZS5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0cmFuc2FjdGlvbkxpbmVTZXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci50cmFuc2FjdGlvbkxpbmVTZXQoKTtcclxuICAgIHRoaXMuX2xvYWRMaW5lSW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB2aXNpYmlsaXR5U2V0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIudmlzaWJpbGl0eVNldCgpO1xyXG4gICAgdGhpcy5fbG9hZExpbmVJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZExpbmVJbWFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmltYWdlIHx8ICF0aGlzLnZpc2libGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb25MaW5lICYmIHRoaXMudHJhbnNhY3Rpb25MaW5lLmlzQXJ0aWNsZSkge1xyXG4gICAgICB0aGlzLmltYWdlU2VydmljZS5yZXRyaWV2ZUxpbmVJbWFnZSh0aGlzLnRyYW5zYWN0aW9uTGluZSkudGhlbigoaW1hZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcclxuICAgICAgICBpZiAodGhpcy5pbWFnZSkge1xyXG4gICAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb24vdHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsOENBQThDLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQTJEMUYsTUFBTSxPQUFPLDJDQUE0QyxTQUFRLDRCQUE0QjtJQXREN0Y7O1FBeURTLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBR2xDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBT2hDLDJCQUFzQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3RFLHFCQUFnQixHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBRTVFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBTTdCLG1DQUE4QixHQUFnQztZQUNuRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLO1lBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFDdEMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztZQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQ3RD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QUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFO1lBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUMvRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNkLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7O1lBdkpGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMkNBQTJDO2dCQUNyRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENUO2dCQUNELFNBQVMsRUFBRSxDQUFDO3dCQUNWLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkNBQTJDLENBQUM7cUJBQUM7aUJBQzVFO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs7O3dCQUdFLEtBQUs7K0JBR0wsS0FBSzs2QkFHTCxLQUFLO3dCQUVMLFdBQVcsU0FBQyxpREFBaUQ7cUNBSzdELE1BQU07K0JBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LCBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1NDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge0ltYWdlQW5kRGVzY3JpcHRpb25DZmdOYW1lc30gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL2ltYWdlLWFuZC1kZXNjcmlwdGlvbi1jZmctbmFtZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVCYXNlQ29tcG9uZW50fSBmcm9tICcuLi9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tbGluZS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9ufSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvbic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tdHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb25cIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAqbmdJZj1cIiF0cmFuc2FjdGlvbkxpbmUuaXNQYXltZW50XCIgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWltYWdlXCIgW2NsYXNzLnByZXZpZXddPVwicHJldmlld1wiIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImltYWdlQW5kRGVzY3JpcHRpb25Db25maWdOYW1lcz8uaW1hZ2VcIiBzY3JlZW5Db25maWdOYXRpdmVFbGVtZW50PlxyXG4gICAgICA8Y28taW1hZ2UtZGlzcGxheSBbbW9kZWxdPVwiaW1hZ2VcIj48L2NvLWltYWdlLWRpc3BsYXk+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxjby1pY29uICpuZ0lmPVwidHJhbnNhY3Rpb25MaW5lLmlzUGF5bWVudFwiIGNsYXNzPVwicGF5bWVudC1saW5lLWljb25cIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlVwRnJvbUxpbmVSZWd1bGFyKVwiPlxyXG4gICAgPC9jby1pY29uPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yQmxvY2tcIiAqbmdJZj1cInRyYW5zYWN0aW9uTGluZS5jb2xvclwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInRyYW5zYWN0aW9uTGluZS5jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1saW5lLWRlc2NyaXB0aW9uIGNsYXNzPVwidHJhbnNhY3Rpb24tbGluZS1kZXNjcmlwdGlvbi1kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ05hbWVzXT1cImltYWdlQW5kRGVzY3JpcHRpb25Db25maWdOYW1lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRFZGl0TW9kZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dMYWJlbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dQdXJjaGFzZURlc2NdPVwic2hvd1B1cmNoYXNlRGVzY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbWVyUG9ydGFsXT1cImN1c3RvbWVyUG9ydGFsXCJcclxuICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1saW5lLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1saW5lLWFydGljbGUtbnVtYmVyLXdyYXBwZXJcIiAqbmdJZj1cIiFwb3BVcFZpZXcgJiYgIWN1c3RvbWVyUG9ydGFsXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dEaXZpZGVyXCI+fDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJ0cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZU51bWJlclwiIFtzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XT1cImltYWdlQW5kRGVzY3JpcHRpb25Db25maWdOYW1lcz8uYXJ0aWNsZU5yXCIgc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudD48L3NwYW4+XHJcbiAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImRlbGV0ZS1pY29uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5UcmFzaENhbkxpZ2h0KVwiXHJcbiAgICAgICAgICAgICAgICAgICBbc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdF09XCJpbWFnZUFuZERlc2NyaXB0aW9uQ29uZmlnTmFtZXM/LmRlbGV0ZUJ0blwiIHNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnRcclxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVUcmFuc2FjdGlvbkxpbmVDbGljaygkZXZlbnQpXCI+PC9jby1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhcHJldmlldyAmJiAhcG9wVXBWaWV3ICYmICh0cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZUJvdW5kQ29uY2F0ZW5hdGVkVGV4dCB8fCB0cmFuc2FjdGlvbkxpbmUuY29uZmlndXJhdGlvblJlYWRhYmxlKVwiXHJcbiAgICAgICAgICAgY2xhc3M9XCJhcnRpY2xlLXRleHQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdPVwiaW1hZ2VBbmREZXNjcmlwdGlvbkNvbmZpZ05hbWVzPy5hcnRpY2xlVGV4dFwiXHJcbiAgICAgICAgICAgc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudD5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnYXJ0aWNsZS10ZXh0LWV4cGFuZCc6IHRydWUsICdsYXJnZS1hcnRpY2xlJzogIWV4cGFuZGVkICYmICFjdXN0b21lclBvcnRhbH1cIiAgY2xhc3M9XCJjby1zbWFsbC1zY3JvbGxiYXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnRpY2xlLXRleHRcIiAqbmdGb3I9XCJsZXQgdGV4dCBvZiB0cmFuc2FjdGlvbkxpbmUuYXJ0aWNsZVRleHRBc0FycmF5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJ0ZXh0IHwgc2FmZUh0bWxcIiAoZGJsY2xpY2spPVwiaGFuZGxlT3BlbkFydGljbGVUZXh0KClcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFwb3BVcFZpZXcgJiYgdHJhbnNhY3Rpb25MaW5lLmNvbmZpZ3VyYXRpb25SZWFkYWJsZVwiIGNsYXNzPVwiY29uZmlndXJhdGlvbi10ZXh0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJ0cmFuc2FjdGlvbkxpbmUuY29uZmlndXJhdGlvblJlYWRhYmxlXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kLXdyYXBwZXJcIiAoY2xpY2spPVwiZXhwYW5kQ2xpY2tlZCgpXCIgKm5nSWY9XCIhY3VzdG9tZXJQb3J0YWxcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXhwYW5kLXRleHRcIiBbdGV4dENvbnRlbnRdPVwiIWV4cGFuZGVkID8gKCdTSE9XX01PUkUnIHwgbG9jYWxpemUpIDogKCdTSE9XX0xFU1MnIHwgbG9jYWxpemUpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImV4cGFuZGVkID8gaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZXZyb25VcFJlZ3VsYXIpIDogaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZXZyb25Eb3duUmVndWxhcikgXCI+PC9jby1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSxcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRyYW5zYWN0aW9uTGluZUltYWdlQW5kRGVzY3JpcHRpb25Db21wb25lbnQpfVxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25MaW5lSW1hZ2VBbmREZXNjcmlwdGlvbkNvbXBvbmVudCBleHRlbmRzIFRyYW5zYWN0aW9uTGluZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBvcFVwVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93UHVyY2hhc2VEZXNjOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbWVyUG9ydGFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tdHJhbnNhY3Rpb24tbGluZS1pbWFnZS1hbmQtZGVzY3JpcHRpb25cIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb3BlbkFydGljbGVUZXh0Q2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaGFuZGxlRGVsZXRlTGluZTogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xyXG5cclxuICBwdWJsaWMgc2hvd0RpdmlkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGV4cGFuZENsaWNrZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBpbWFnZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBpbWFnZUFuZERlc2NyaXB0aW9uQ29uZmlnTmFtZXM6IEltYWdlQW5kRGVzY3JpcHRpb25DZmdOYW1lcyA9IHtcclxuICAgIGltYWdlOiB0aGlzLmNmZ05hbWVzLkltYWdlLFxyXG4gICAgZGVzY3JpcHRpb246IHRoaXMuY2ZnTmFtZXMuRGVzY3JpcHRpb24sXHJcbiAgICBhcnRpY2xlTnI6IHRoaXMuY2ZnTmFtZXMuQXJ0aWNsZU5yLFxyXG4gICAgYXJ0aWNsZVRleHQ6IHRoaXMuY2ZnTmFtZXMuQXJ0aWNsZVRleHQsXHJcbiAgICBkZXNjcmlwdGlvbkVkaXRCdG46IHRoaXMuY2ZnTmFtZXMuRGVzY3JpcHRpb25FZGl0QnRuLFxyXG4gICAgZGVsZXRlQnRuOiB0aGlzLmNmZ05hbWVzLkRlbGV0ZUJ0blxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmNvbmZpZ1NldC5zdWJzY3JpYmUoKGNvbmZpZzogT2JqZWN0Q29uZmlndXJhdGlvbltdKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93RGl2aWRlciA9XHJcbiAgICAgICAgICAgICh0aGlzLnNjcmVlbkNvbmZpZ1NlcnZpY2UuZ2V0T2JqZWN0Q29uZmlndXJhdGlvbkZvcih0aGlzLmltYWdlQW5kRGVzY3JpcHRpb25Db25maWdOYW1lcz8uZGVzY3JpcHRpb24pICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5pbWFnZUFuZERlc2NyaXB0aW9uQ29uZmlnTmFtZXM/LmRlc2NyaXB0aW9uKS5pbW1lZGlhdGVseVZpc2libGUoKSAmJiAhIXRoaXMudHJhbnNhY3Rpb25MaW5lLmdvb2REZXNjcmlwdGlvbikgJiZcclxuICAgICAgICAgICAgKHRoaXMuc2NyZWVuQ29uZmlnU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuaW1hZ2VBbmREZXNjcmlwdGlvbkNvbmZpZ05hbWVzPy5hcnRpY2xlTnIpICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5Db25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5pbWFnZUFuZERlc2NyaXB0aW9uQ29uZmlnTmFtZXM/LmFydGljbGVOcikuaW1tZWRpYXRlbHlWaXNpYmxlKCkgJiYgISF0aGlzLnRyYW5zYWN0aW9uTGluZS5hcnRpY2xlTnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmFydGljbGVMaW5lVGV4dEFkZGVkT3JDaGFuZ2VkLnN1YnNjcmliZSgobGluZU5yOiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAobGluZU5yICYmIGxpbmVOciA9PT0gdGhpcy50cmFuc2FjdGlvbkxpbmUubGluZU5yKSB7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU9wZW5BcnRpY2xlVGV4dCgpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbkFydGljbGVUZXh0Q2xpY2tlZC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGVsZXRlVHJhbnNhY3Rpb25MaW5lQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaGFuZGxlRGVsZXRlTGluZS5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0cmFuc2FjdGlvbkxpbmVTZXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci50cmFuc2FjdGlvbkxpbmVTZXQoKTtcclxuICAgIHRoaXMuX2xvYWRMaW5lSW1hZ2UoKTtcclxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uTGluZS5jb25maWd1cmF0aW9uUmVhZGFibGUpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZS5jb25maWd1cmF0aW9uUmVhZGFibGUgPSB0aGlzLnRyYW5zYWN0aW9uTGluZS5jb25maWd1cmF0aW9uUmVhZGFibGUucmVwbGFjZUFsbCgnXFxuJywgJzxicj4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB2aXNpYmlsaXR5U2V0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIudmlzaWJpbGl0eVNldCgpO1xyXG4gICAgdGhpcy5fbG9hZExpbmVJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZExpbmVJbWFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmltYWdlIHx8ICF0aGlzLnZpc2libGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb25MaW5lICYmIHRoaXMudHJhbnNhY3Rpb25MaW5lLmlzQXJ0aWNsZSkge1xyXG4gICAgICB0aGlzLmltYWdlU2VydmljZS5yZXRyaWV2ZUxpbmVJbWFnZSh0aGlzLnRyYW5zYWN0aW9uTGluZSkudGhlbigoaW1hZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcclxuICAgICAgICBpZiAodGhpcy5pbWFnZSkge1xyXG4gICAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19