@unnilouis.org/vs-chipdropdown 9.0.3 → 9.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
- import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
4
- import { debounceTime, distinctUntilChanged, tap, switchMap, finalize, takeUntil, map, } from "rxjs/operators";
2
+ import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
3
+ import { MatAutocompleteTrigger, } from '@angular/material/autocomplete';
4
+ import { debounceTime, distinctUntilChanged, tap, switchMap, finalize, takeUntil, map, } from 'rxjs/operators';
5
5
  import { fromEvent } from 'rxjs';
6
6
  import { VsChipdropdownService } from '../vs-chipdropdown.service';
7
7
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
@@ -19,11 +19,18 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
19
19
  this.has_previous = false;
20
20
  this.chipSelectedId = [];
21
21
  this.chipSelectedObj = [];
22
+ this.Outputdata = [];
23
+ this.formkeyarr = [];
22
24
  }
23
25
  ngOnInit() {
24
- this.DropdownForm = this.fb.group({
25
- value: ''
26
- });
26
+ // if (this.formGroup) {
27
+ // this.DropdownForm = this.formGroup;
28
+ // } else {
29
+ // this.DropdownForm = this.fb.group({
30
+ // value: '',
31
+ // });
32
+ // }
33
+ // this.dupngonit();
27
34
  // if (this.InputFields?.defaultvalue) {
28
35
  // this.DropdownForm.get("value").patchValue(this.InputFields?.defaultvalue)
29
36
  // this.chipSelectedObj = this.InputFields?.defaultvalue
@@ -46,28 +53,68 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
46
53
  // this.getdropdown('')
47
54
  // }
48
55
  }
56
+ looop() {
57
+ var _a, _b, _c, _d;
58
+ for (let foundemp of this.chipSelectedObj) {
59
+ if (!(foundemp instanceof Number)) {
60
+ if ((_a = this.InputFields) === null || _a === void 0 ? void 0 : _a.Outputkey) {
61
+ this.chipSelectedId.push(foundemp[(_b = this.InputFields) === null || _b === void 0 ? void 0 : _b.Outputkey]);
62
+ }
63
+ if ((_c = this.InputFields) === null || _c === void 0 ? void 0 : _c.formkey) {
64
+ this.formkeyarr.push(foundemp[(_d = this.InputFields) === null || _d === void 0 ? void 0 : _d.formkey]);
65
+ }
66
+ else {
67
+ this.chipSelectedId.push(foundemp.id);
68
+ }
69
+ }
70
+ }
71
+ }
49
72
  dupngonit() {
50
- var _a, _b, _c, _d, _e, _f, _g;
51
- this.DropdownForm = this.fb.group({
52
- value: ''
53
- });
54
- if ((_a = this.InputFields) === null || _a === void 0 ? void 0 : _a.defaultvalue) {
55
- this.DropdownForm.get("value").patchValue((_b = this.InputFields) === null || _b === void 0 ? void 0 : _b.defaultvalue);
56
- this.chipSelectedObj = (_c = this.InputFields) === null || _c === void 0 ? void 0 : _c.defaultvalue;
73
+ var _a, _b, _c, _d, _e, _f;
74
+ if (this.formGroup) {
75
+ this.DropdownForm = this.formGroup;
76
+ if (!this.DropdownForm.contains((_a = this.InputFields) === null || _a === void 0 ? void 0 : _a.formcontrolname)) {
77
+ this.DropdownForm.addControl(this.dynamciformcontrolparent(), new FormControl({ value: [], disabled: (_b = this.InputFields) === null || _b === void 0 ? void 0 : _b.disabled }));
78
+ }
79
+ }
80
+ else {
81
+ this.DropdownForm = this.fb.group({
82
+ chipvalue: [],
83
+ });
84
+ }
85
+ console.log('this.DropdownForm', this.DropdownForm.value);
86
+ // this.chipSelectedObj =
87
+ // this.DropdownForm.get(this.dynamciformcontrolparent()).value &&
88
+ // this.DropdownForm.get(this.dynamciformcontrolparent()).value.length !== 0
89
+ // ? this.DropdownForm.get(this.dynamciformcontrolparent()).value
90
+ // : [];
91
+ // console.log('this.chipSelectedObj', this.chipSelectedObj);
92
+ if ((_c = this.InputFields) === null || _c === void 0 ? void 0 : _c.defaultvalue) {
93
+ // this.DropdownForm.get(this.dynamciformcontrolparent()).patchValue(
94
+ // this.InputFields?.formkey
95
+ // ? this.InputFields?.defaultvalue[this.InputFields?.formkey]
96
+ // : this.InputFields?.defaultvalue
97
+ // );
98
+ // this.DropdownForm.get(this.dynamciformcontrolparent()).patchValue(this.InputFields?.defaultvalue);
99
+ this.chipSelectedObj = (_d = this.InputFields) === null || _d === void 0 ? void 0 : _d.defaultvalue;
100
+ this.chipSelectedId = [];
101
+ this.formkeyarr = [];
57
102
  if (this.chipSelectedObj.length > 0) {
58
- for (let foundemp of this.chipSelectedObj) {
59
- if ((_d = this.InputFields) === null || _d === void 0 ? void 0 : _d.Outputkey) {
60
- this.chipSelectedId.push(foundemp[(_e = this.InputFields) === null || _e === void 0 ? void 0 : _e.Outputkey]);
61
- }
62
- else {
63
- this.chipSelectedId.push(foundemp.id);
64
- }
65
- }
103
+ this.looop();
66
104
  this.selected();
67
105
  }
68
106
  }
69
- if ((_f = this.InputFields) === null || _f === void 0 ? void 0 : _f.fronentdata) {
70
- this.Dropdowndata = (_g = this.InputFields) === null || _g === void 0 ? void 0 : _g.data;
107
+ if (this.DropdownForm.get(this.dynamciformcontrolparent()).value &&
108
+ this.DropdownForm.get(this.dynamciformcontrolparent()).value.length !== 0) {
109
+ this.chipSelectedObj = this.DropdownForm.get(this.dynamciformcontrolparent()).value;
110
+ console.log('test', this.chipSelectedObj = this.DropdownForm.get(this.dynamciformcontrolparent()).value);
111
+ this.chipSelectedId = [];
112
+ this.formkeyarr = [];
113
+ this.looop();
114
+ this.selected();
115
+ }
116
+ if ((_e = this.InputFields) === null || _e === void 0 ? void 0 : _e.fronentdata) {
117
+ this.Dropdowndata = (_f = this.InputFields) === null || _f === void 0 ? void 0 : _f.data;
71
118
  }
72
119
  // else {
73
120
  // this.getdropdown('')
@@ -75,16 +122,17 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
75
122
  }
76
123
  ngOnChanges(changes) {
77
124
  if (changes.InputFields && changes.InputFields.currentValue) {
78
- console.log("Summary Log Changes");
125
+ console.log('Summary Log Changes');
79
126
  this.currentpage = 1;
80
127
  this.dupngonit();
81
128
  }
82
129
  if (changes.ResetForm && changes.ResetForm.currentValue) {
83
- console.log("hitted");
84
- this.DropdownForm.reset();
130
+ console.log('hitted');
131
+ // this.DropdownForm.reset();
85
132
  this.currentpage = 1;
86
133
  this.dupngonit();
87
134
  this.chipSelectedId = [];
135
+ this.formkeyarr = [];
88
136
  this.chipSelectedObj = [];
89
137
  this.dataEvent.emit([]);
90
138
  }
@@ -100,8 +148,8 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
100
148
  this.autocompleteTrigger &&
101
149
  this.matAutocompleteApp.panel) {
102
150
  fromEvent(this.matAutocompleteApp.panel.nativeElement, 'scroll')
103
- .pipe(map(x => this.matAutocompleteApp.panel.nativeElement.scrollTop), takeUntil(this.autocompleteTrigger.panelClosingActions))
104
- .subscribe(x => {
151
+ .pipe(map((x) => this.matAutocompleteApp.panel.nativeElement.scrollTop), takeUntil(this.autocompleteTrigger.panelClosingActions))
152
+ .subscribe((x) => {
105
153
  const scrollTop = this.matAutocompleteApp.panel.nativeElement.scrollTop;
106
154
  const scrollHeight = this.matAutocompleteApp.panel.nativeElement.scrollHeight;
107
155
  const elementHeight = this.matAutocompleteApp.panel.nativeElement.clientHeight;
@@ -112,12 +160,13 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
112
160
  let params = this.searchparams(value);
113
161
  this.currentpage = this.currentpage + 1;
114
162
  if (this.currentpage > 1) {
115
- this.service.GetApi(this.InputFields.url + "?page=" + this.currentpage, params)
163
+ this.service
164
+ .GetApi(this.InputFields.url + '?page=' + this.currentpage, params)
116
165
  .subscribe((results) => {
117
- let datas = results["data"];
118
- let datapagination = results["pagination"];
166
+ let datas = results['data'];
167
+ let datapagination = results['pagination'];
119
168
  this.Dropdowndata = this.Dropdowndata.concat(datas);
120
- console.log("this.Dropdowndata", this.Dropdowndata);
169
+ console.log('this.Dropdowndata', this.Dropdowndata);
121
170
  if (this.Dropdowndata.length >= 0) {
122
171
  this.has_next = datapagination.has_next;
123
172
  this.has_previous = datapagination.has_previous;
@@ -135,29 +184,38 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
135
184
  dropdownsearch() {
136
185
  var _a;
137
186
  if (!((_a = this.InputFields) === null || _a === void 0 ? void 0 : _a.fronentdata)) {
138
- this.DropdownForm.get("value").valueChanges.pipe(debounceTime(100), distinctUntilChanged(), tap(() => {
187
+ this.DropdownForm.get('value')
188
+ .valueChanges.pipe(debounceTime(100), distinctUntilChanged(), tap(() => {
139
189
  this.DrodownLoading = true;
140
- console.log("inside tap");
190
+ console.log('inside tap');
141
191
  }), switchMap((value) => {
142
192
  let params = this.searchparams(value);
143
193
  this.currentpage = 1;
144
- return this.service.GetApi(this.InputFields.url + "?page=" + this.currentpage, params).pipe(finalize(() => {
194
+ return this.service
195
+ .GetApi(this.InputFields.url + '?page=' + this.currentpage, params)
196
+ .pipe(finalize(() => {
145
197
  this.DrodownLoading = false;
146
198
  }));
147
- })).subscribe((results) => {
148
- let datas = results["data"];
199
+ }))
200
+ .subscribe((results) => {
201
+ let datas = results['data'];
149
202
  this.Dropdowndata = datas;
150
203
  });
151
204
  }
152
205
  }
153
206
  getdropdown(value) {
207
+ this.currentpage = 1;
154
208
  if (this.InputFields.url) {
155
209
  let params = this.searchparams(value);
156
- this.service.GetApi(this.InputFields.url + "?page=" + this.currentpage, params)
210
+ this.service
211
+ .GetApi(this.InputFields.url + '?page=' + this.currentpage, params)
157
212
  .subscribe((results) => {
158
- let datas = results["data"];
159
- let datapagination = results["pagination"];
213
+ let datas = results['data'];
214
+ let datapagination = results['pagination'];
160
215
  this.Dropdowndata = datas;
216
+ setTimeout(() => {
217
+ this.trigger.openPanel();
218
+ }, 0);
161
219
  if (this.Dropdowndata.length >= 0) {
162
220
  this.has_next = datapagination.has_next;
163
221
  this.has_previous = datapagination.has_previous;
@@ -166,29 +224,50 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
166
224
  });
167
225
  }
168
226
  }
227
+ dynamciformcontrolparent() {
228
+ var _a, _b;
229
+ return ((_a = this.InputFields) === null || _a === void 0 ? void 0 : _a.formcontrolname) && this.formGroup
230
+ ? (_b = this.InputFields) === null || _b === void 0 ? void 0 : _b.formcontrolname : 'chipvalue';
231
+ }
169
232
  selected() {
170
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
171
- // let data = this.DropdownForm.value.value
172
- if ((_a = this.InputFields) === null || _a === void 0 ? void 0 : _a.wholedata) {
173
- this.dataEvent.emit(this.chipSelectedObj);
174
- if (((_b = this.InputFields) === null || _b === void 0 ? void 0 : _b.formgroup) && ((_c = this.InputFields) === null || _c === void 0 ? void 0 : _c.formcontrolname)) {
175
- (_d = this.InputFields) === null || _d === void 0 ? void 0 : _d.formgroup.get((_e = this.InputFields) === null || _e === void 0 ? void 0 : _e.formcontrolname).patchValue(this.chipSelectedObj);
176
- }
233
+ var _a, _b;
234
+ this.Outputdata = this.chipSelectedObj;
235
+ if ((_a = this.InputFields) === null || _a === void 0 ? void 0 : _a.Outputkey) {
236
+ this.Outputdata = this.chipSelectedId;
177
237
  }
178
- else {
179
- if ((_f = this.InputFields) === null || _f === void 0 ? void 0 : _f.Outputkey) {
180
- this.dataEvent.emit(this.chipSelectedId);
181
- if (((_g = this.InputFields) === null || _g === void 0 ? void 0 : _g.formgroup) && ((_h = this.InputFields) === null || _h === void 0 ? void 0 : _h.formcontrolname)) {
182
- (_j = this.InputFields) === null || _j === void 0 ? void 0 : _j.formgroup.get((_k = this.InputFields) === null || _k === void 0 ? void 0 : _k.formcontrolname).patchValue(this.chipSelectedId);
183
- }
184
- }
185
- else {
186
- this.dataEvent.emit(this.chipSelectedObj);
187
- if (((_l = this.InputFields) === null || _l === void 0 ? void 0 : _l.formgroup) && ((_m = this.InputFields) === null || _m === void 0 ? void 0 : _m.formcontrolname)) {
188
- (_o = this.InputFields) === null || _o === void 0 ? void 0 : _o.formgroup.get((_p = this.InputFields) === null || _p === void 0 ? void 0 : _p.formcontrolname).patchValue(this.chipSelectedObj);
189
- }
190
- }
238
+ if (this.formGroup && ((_b = this.InputFields) === null || _b === void 0 ? void 0 : _b.formcontrolname)) {
239
+ this.DropdownForm.get(this.dynamciformcontrolparent()).patchValue(this.formkeyarr);
191
240
  }
241
+ console.log(this.formkeyarr);
242
+ console.log('this.DropdownForm.get', this.DropdownForm.value);
243
+ this.dataEvent.emit(this.Outputdata);
244
+ // let data = this.DropdownForm.value.value
245
+ // if (this.InputFields?.wholedata) {
246
+ // this.dataEvent.emit(this.chipSelectedObj);
247
+ // if (this.InputFields?.formgroup && this.InputFields?.formcontrolname) {
248
+ // this.InputFields?.formgroup
249
+ // .get(this.InputFields?.formcontrolname)
250
+ // .patchValue(this.chipSelectedObj);
251
+ // }
252
+ // }
253
+ // else {
254
+ // if (this.InputFields?.Outputkey) {
255
+ // this.dataEvent.emit(this.chipSelectedId);
256
+ // if (this.InputFields?.formgroup && this.InputFields?.formcontrolname) {
257
+ // this.InputFields?.formgroup
258
+ // .get(this.InputFields?.formcontrolname)
259
+ // .patchValue(this.chipSelectedId);
260
+ // }
261
+ // }
262
+ // else {
263
+ // this.dataEvent.emit(this.chipSelectedObj);
264
+ // if (this.InputFields?.formgroup && this.InputFields?.formcontrolname) {
265
+ // this.InputFields?.formgroup
266
+ // .get(this.InputFields?.formcontrolname)
267
+ // .patchValue(this.chipSelectedObj);
268
+ // }
269
+ // }
270
+ // }
192
271
  }
193
272
  searchparams(value) {
194
273
  let params = '';
@@ -196,7 +275,9 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
196
275
  params = this.InputFields.params;
197
276
  }
198
277
  let inpValue = value;
199
- inpValue ? params += '&' + this.InputFields.searchkey + '=' + inpValue : '';
278
+ inpValue
279
+ ? (params += '&' + this.InputFields.searchkey + '=' + inpValue)
280
+ : '';
200
281
  return params;
201
282
  }
202
283
  removechip(obj) {
@@ -206,31 +287,38 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
206
287
  console.log(this.chipSelectedObj);
207
288
  this.chipSelectedId.splice(index, 1);
208
289
  console.log(this.chipSelectedId);
290
+ this.formkeyarr.splice(index, 1);
291
+ console.log('this.formkeyarr', this.formkeyarr);
209
292
  this.DropInput.nativeElement.value = '';
210
293
  this.selected();
211
294
  }
212
295
  }
213
- venSelected(event) {
296
+ venSelected(data) {
214
297
  this.DropInput.nativeElement.value = '';
215
- console.log('event.option.value', event.option.value);
216
- this.selectvenByName(event.option.value[this.comparekey(event.option.value)]);
298
+ console.log('event.option.value', data);
299
+ this.selectvenByName(data[this.comparekey(data)]);
217
300
  console.log('chipSelectedvenid', this.chipSelectedObj);
218
301
  }
219
302
  selectvenByName(ven) {
220
- var _a, _b;
221
- let foundemp1 = this.chipSelectedObj.filter(e => e[this.comparekey(e)] == ven);
303
+ var _a, _b, _c, _d;
304
+ let foundemp1 = this.chipSelectedObj.filter((e) => e[this.comparekey(e)] == ven);
222
305
  if (foundemp1.length) {
223
306
  return;
224
307
  }
225
- let foundemp = this.Dropdowndata.filter(e => e[this.comparekey(e)] == ven);
308
+ let foundemp = this.Dropdowndata.filter((e) => e[this.comparekey(e)] == ven);
226
309
  if (foundemp.length) {
227
310
  this.chipSelectedObj.push(foundemp[0]);
228
311
  if ((_a = this.InputFields) === null || _a === void 0 ? void 0 : _a.Outputkey) {
229
312
  this.chipSelectedId.push(foundemp[0][(_b = this.InputFields) === null || _b === void 0 ? void 0 : _b.Outputkey]);
230
313
  }
314
+ if ((_c = this.InputFields) === null || _c === void 0 ? void 0 : _c.formkey) {
315
+ this.formkeyarr.push(foundemp[0][(_d = this.InputFields) === null || _d === void 0 ? void 0 : _d.formkey]);
316
+ }
231
317
  else {
232
318
  this.chipSelectedId.push(foundemp[0].id);
233
319
  }
320
+ console.log('formkeyarr12', this.formkeyarr);
321
+ this.selected();
234
322
  }
235
323
  }
236
324
  comparekey(e) {
@@ -240,7 +328,7 @@ let VsChipddCmpComponent = class VsChipddCmpComponent {
240
328
  }
241
329
  else {
242
330
  if (e === null || e === void 0 ? void 0 : e.id) {
243
- return "id";
331
+ return 'id';
244
332
  }
245
333
  else {
246
334
  return this.InputFields.displaykey;
@@ -261,6 +349,12 @@ __decorate([
261
349
  __decorate([
262
350
  Input()
263
351
  ], VsChipddCmpComponent.prototype, "Backendapi", void 0);
352
+ __decorate([
353
+ ViewChild('autoCompleteInput', {
354
+ static: false,
355
+ read: MatAutocompleteTrigger,
356
+ })
357
+ ], VsChipddCmpComponent.prototype, "trigger", void 0);
264
358
  __decorate([
265
359
  ViewChild(MatAutocompleteTrigger)
266
360
  ], VsChipddCmpComponent.prototype, "autocompleteTrigger", void 0);
@@ -273,12 +367,15 @@ __decorate([
273
367
  __decorate([
274
368
  ViewChild('DropInput')
275
369
  ], VsChipddCmpComponent.prototype, "DropInput", void 0);
370
+ __decorate([
371
+ Input()
372
+ ], VsChipddCmpComponent.prototype, "formGroup", void 0);
276
373
  VsChipddCmpComponent = __decorate([
277
374
  Component({
278
375
  selector: 'lib-vs-chipdd-cmp',
279
- template: "<div (click)=\"!this.InputFields?.fronentdata ? this.getdropdown(''):'' \">\r\n <form [formGroup]=\"DropdownForm\">\r\n <mat-form-field class=\"mat-chipScroll\"\r\n appearance=\"outline\">\r\n <mat-label>{{InputFields?.label | translate}}</mat-label>\r\n <mat-chip-list multiple #chipListvendor class=\"chip-container\">\r\n <mat-chip *ngFor=\"let obj of chipSelectedObj\" [removable]=\"true\" (removed)=\"removechip(obj)\" class=\"mat-chipEx\">\r\n {{ obj[InputFields?.displaykey] }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input #DropInput [matAutocomplete]=\"scrolll\" class=\"matformfieldinputstyle\"\r\n (keydown)=\"dropdownsearch()\" [matChipInputFor]=\"chipListvendor\" [matChipInputSeparatorKeyCodes]=\"\r\n separatorsKeysCodes\r\n \" [matChipInputAddOnBlur]=\"true\" formControlName=\"value\" />\r\n </mat-chip-list>\r\n <mat-autocomplete #scrolll=\"matAutocomplete\" (optionSelected)=\"venSelected($event)\"\r\n (opened)=\"autocompleteAppScroll()\">\r\n <ng-container>\r\n <mat-option *ngFor=\"let dropvalues of Dropdowndata\" [value]=\"dropvalues\" (click)=\"selected()\">\r\n {{dropvalues[InputFields?.displaykey]}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </form>\r\n</div>\r\n",
376
+ template: "<div>\r\n <form [formGroup]=\"DropdownForm\">\r\n <mat-form-field\r\n class=\"mat-chipScroll\"\r\n appearance=\"outline\"\r\n (click)=\"!this.InputFields?.fronentdata ? this.getdropdown('') : ''\"\r\n >\r\n <mat-label>{{ InputFields?.label | translate }}</mat-label>\r\n <mat-chip-list multiple #chipListvendor class=\"chip-container\">\r\n <mat-chip\r\n *ngFor=\"let obj of chipSelectedObj\"\r\n [removable]=\"true\"\r\n (removed)=\"removechip(obj)\"\r\n class=\"mat-chipEx\"\r\n >\r\n {{ obj[InputFields?.displaykey] }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input\r\n #DropInput\r\n [matAutocomplete]=\"scrolll\"\r\n class=\"matformfieldinputstyle\"\r\n (keydown)=\"dropdownsearch()\"\r\n [matChipInputFor]=\"chipListvendor\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorsKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n #autoCompleteInput=\"matAutocompleteTrigger\"\r\n [formControlName]=\"\r\n this.dynamciformcontrolparent()\r\n \"\r\n />\r\n </mat-chip-list>\r\n <mat-autocomplete\r\n #scrolll=\"matAutocomplete\"\r\n (opened)=\"autocompleteAppScroll()\"\r\n >\r\n <ng-container>\r\n <mat-option\r\n *ngFor=\"let dropvalues of Dropdowndata\"\r\n [value]=\"\r\n this.InputFields?.formkey\r\n ? dropvalues[this.InputFields?.formkey]\r\n : dropvalues\r\n \"\r\n (onSelectionChange)=\"venSelected(dropvalues)\"\r\n >\r\n {{ dropvalues[InputFields?.displaykey] }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </form>\r\n</div>\r\n<!-- (click)=\"selected()\"\r\n -->\r\n<!-- (optionSelected)=\"venSelected($event)\"\r\n -->\r\n",
280
377
  styles: [".mat-chipScroll{width:420px!important}.mat-chipEx{text-align:left}.chip-container::-webkit-scrollbar{width:6px;height:6px}.chip-container::-webkit-scrollbar-track{background:0 0}.chip-container::-webkit-scrollbar-thumb{border-radius:20px;background:#c3c3c3}.chip-container::-webkit-scrollbar-thumb:hover{background:#a6a6a6}.mat-chipScroll .mat-chip-list-wrapper{height:80px;overflow-y:scroll}mat-form-field{width:250px;font-family:var(--base-font-family)}"]
281
378
  })
282
379
  ], VsChipddCmpComponent);
283
380
  export { VsChipddCmpComponent };
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnMtY2hpcGRkLWNtcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5uaWxvdWlzLm9yZy92cy1jaGlwZHJvcGRvd24vIiwic291cmNlcyI6WyJsaWIvdnMtY2hpcGRkLWNtcC92cy1jaGlwZGQtY21wLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBaUQsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2SCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFvQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU1yRCxJQUFhLG9CQUFvQixHQUFqQyxNQUFhLG9CQUFvQjtJQUUvQixZQUFvQixPQUE4QixFQUFVLEVBQWU7UUFBdkQsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBR2xFLGVBQVUsR0FBWSxJQUFJLENBQUE7UUFJekIsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXhELHdCQUFtQixHQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7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REFBMkI7QUFFQTtJQUFsQyxTQUFTLENBQUMsc0JBQXNCLENBQUM7aUVBQTZDO0FBQ3pEO0lBQXJCLFNBQVMsQ0FBQyxTQUFTLENBQUM7Z0VBQXFDO0FBQ2hEO0lBQVQsTUFBTSxFQUFFO3VEQUF3RDtBQUN6QztJQUF2QixTQUFTLENBQUMsV0FBVyxDQUFDO3VEQUFnQjtBQVY1QixvQkFBb0I7SUFMaEMsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLG1CQUFtQjtRQUM3QixzbERBQTZDOztLQUU5QyxDQUFDO0dBQ1csb0JBQW9CLENBNFJoQztTQTVSWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7XHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIHRhcCxcclxuICBmaWx0ZXIsXHJcbiAgc3dpdGNoTWFwLFxyXG4gIGZpbmFsaXplLFxyXG4gIHRha2VVbnRpbCxcclxuICBtYXAsXHJcbn0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBWc0NoaXBkcm9wZG93blNlcnZpY2UgfSBmcm9tICcuLi92cy1jaGlwZHJvcGRvd24uc2VydmljZSdcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXZzLWNoaXBkZC1jbXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92cy1jaGlwZGQtY21wLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92cy1jaGlwZGQtY21wLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZzQ2hpcGRkQ21wQ29tcG9uZW50IHtcclxuICBEcm9kb3duTG9hZGluZzogYm9vbGVhbjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IFZzQ2hpcGRyb3Bkb3duU2VydmljZSwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHsgfVxyXG4gIEBJbnB1dCgpIElucHV0RmllbGRzOiBhbnlcclxuICBASW5wdXQoKSBSZXNldEZvcm06IGFueVxyXG4gIEBJbnB1dCgpIEJhY2tlbmRhcGk6IGJvb2xlYW4gPSB0cnVlXHJcblxyXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuICBAVmlld0NoaWxkKCdzY3JvbGxsJykgbWF0QXV0b2NvbXBsZXRlQXBwOiBNYXRBdXRvY29tcGxldGU7XHJcbiAgQE91dHB1dCgpIGRhdGFFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAVmlld0NoaWxkKCdEcm9wSW5wdXQnKSBEcm9wSW5wdXQ6IGFueTtcclxuICByZWFkb25seSBzZXBhcmF0b3JzS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuICBoYXNfbmV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN1cnJlbnRwYWdlOiBudW1iZXIgPSAxO1xyXG4gIERyb3Bkb3duZGF0YTogYW55ID0gW107XHJcbiAgaGFzX3ByZXZpb3VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgRHJvcGRvd25Gb3JtOiBGb3JtR3JvdXBcclxuICBjaGlwU2VsZWN0ZWRJZDogYW55ID0gW107XHJcbiAgY2hpcFNlbGVjdGVkT2JqOiBhbnkgPSBbXVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuRHJvcGRvd25Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHZhbHVlOiAnJ1xyXG4gICAgfSlcclxuICAgIC8vIGlmICh0aGlzLklucHV0RmllbGRzPy5kZWZhdWx0dmFsdWUpIHtcclxuICAgIC8vICAgdGhpcy5Ecm9wZG93bkZvcm0uZ2V0KFwidmFsdWVcIikucGF0Y2hWYWx1ZSh0aGlzLklucHV0RmllbGRzPy5kZWZhdWx0dmFsdWUpXHJcbiAgICAvLyAgIHRoaXMuY2hpcFNlbGVjdGVkT2JqID0gdGhpcy5JbnB1dEZpZWxkcz8uZGVmYXVsdHZhbHVlXHJcbiAgICAvLyAgIGlmICh0aGlzLmNoaXBTZWxlY3RlZE9iai5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgZm9yIChsZXQgZm91bmRlbXAgb2YgdGhpcy5jaGlwU2VsZWN0ZWRPYmopIHtcclxuICAgIC8vICAgICAgIGlmICh0aGlzLklucHV0RmllbGRzPy5PdXRwdXRrZXkpIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5jaGlwU2VsZWN0ZWRJZC5wdXNoKGZvdW5kZW1wW3RoaXMuSW5wdXRGaWVsZHM/Lk91dHB1dGtleV0pXHJcblxyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgICAgZWxzZSB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuY2hpcFNlbGVjdGVkSWQucHVzaChmb3VuZGVtcC5pZClcclxuXHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMuc2VsZWN0ZWQoKVxyXG4gICAgLy8gICB9XHJcblxyXG5cclxuICAgIC8vIH1cclxuICAgIC8vIGlmICh0aGlzLklucHV0RmllbGRzPy5mcm9uZW50ZGF0YSkge1xyXG4gICAgLy8gICB0aGlzLkRyb3Bkb3duZGF0YSA9IHRoaXMuSW5wdXRGaWVsZHM/LmRhdGFcclxuXHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5nZXRkcm9wZG93bignJylcclxuICAgIC8vIH1cclxuICB9XHJcbiAgZHVwbmdvbml0KCl7XHJcbiAgICB0aGlzLkRyb3Bkb3duRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICB2YWx1ZTogJydcclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uZGVmYXVsdHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25Gb3JtLmdldChcInZhbHVlXCIpLnBhdGNoVmFsdWUodGhpcy5JbnB1dEZpZWxkcz8uZGVmYXVsdHZhbHVlKVxyXG4gICAgICB0aGlzLmNoaXBTZWxlY3RlZE9iaiA9IHRoaXMuSW5wdXRGaWVsZHM/LmRlZmF1bHR2YWx1ZVxyXG4gICAgICBpZiAodGhpcy5jaGlwU2VsZWN0ZWRPYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IGZvdW5kZW1wIG9mIHRoaXMuY2hpcFNlbGVjdGVkT2JqKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uT3V0cHV0a2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hpcFNlbGVjdGVkSWQucHVzaChmb3VuZGVtcFt0aGlzLklucHV0RmllbGRzPy5PdXRwdXRrZXldKVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNoaXBTZWxlY3RlZElkLnB1c2goZm91bmRlbXAuaWQpXHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdGVkKClcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uZnJvbmVudGRhdGEpIHtcclxuICAgICAgdGhpcy5Ecm9wZG93bmRhdGEgPSB0aGlzLklucHV0RmllbGRzPy5kYXRhXHJcblxyXG4gICAgfVxyXG4gICAgLy8gZWxzZSB7XHJcbiAgICAvLyAgIHRoaXMuZ2V0ZHJvcGRvd24oJycpXHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLklucHV0RmllbGRzICYmIGNoYW5nZXMuSW5wdXRGaWVsZHMuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiU3VtbWFyeSBMb2cgQ2hhbmdlc1wiKVxyXG4gICAgICB0aGlzLmN1cnJlbnRwYWdlID0gMVxyXG4gICAgICB0aGlzLmR1cG5nb25pdCgpXHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlcy5SZXNldEZvcm0gJiYgY2hhbmdlcy5SZXNldEZvcm0uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiaGl0dGVkXCIpXHJcbiAgICAgIHRoaXMuRHJvcGRvd25Gb3JtLnJlc2V0KClcclxuICAgICAgdGhpcy5jdXJyZW50cGFnZSA9IDFcclxuICAgICAgdGhpcy5kdXBuZ29uaXQoKVxyXG4gICAgICB0aGlzLmNoaXBTZWxlY3RlZElkID0gW107XHJcbiAgICAgIHRoaXMuY2hpcFNlbGVjdGVkT2JqID0gW11cclxuICAgICAgdGhpcy5kYXRhRXZlbnQuZW1pdChbXSk7XHJcblxyXG5cclxuICAgIH1cclxuICB9XHJcbiAgLy8gcHVibGljIGRpc3BsYXlkZXZlbG9wY2xpZW50KGNsdDogYW55LCBrZXk6IHN0cmluZykge1xyXG4gIC8vICAgcmV0dXJuIGtleVtjbHRdO1xyXG4gIC8vIH1cclxuICBhdXRvY29tcGxldGVBcHBTY3JvbGwoKSB7XHJcbiAgICBpZiAoISh0aGlzLklucHV0RmllbGRzPy5mcm9uZW50ZGF0YSkpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5tYXRBdXRvY29tcGxldGVBcHAgJiZcclxuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlciAmJlxyXG4gICAgICAgICAgdGhpcy5tYXRBdXRvY29tcGxldGVBcHAucGFuZWxcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGZyb21FdmVudCh0aGlzLm1hdEF1dG9jb21wbGV0ZUFwcC5wYW5lbC5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgbWFwKHggPT4gdGhpcy5tYXRBdXRvY29tcGxldGVBcHAucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3ApLFxyXG4gICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIucGFuZWxDbG9zaW5nQWN0aW9ucyBhcyBPYnNlcnZhYmxlPGFueT4pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLm1hdEF1dG9jb21wbGV0ZUFwcC5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSB0aGlzLm1hdEF1dG9jb21wbGV0ZUFwcC5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5tYXRBdXRvY29tcGxldGVBcHAucGFuZWwubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXRCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSAxIDw9IHNjcm9sbFRvcCArIGVsZW1lbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgaWYgKGF0Qm90dG9tKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNfbmV4dCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLkRyb3BJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnNlYXJjaHBhcmFtcyh2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50cGFnZSA9IHRoaXMuY3VycmVudHBhZ2UgKyAxXHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRwYWdlID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5HZXRBcGkodGhpcy5JbnB1dEZpZWxkcy51cmwgKyBcIj9wYWdlPVwiICsgdGhpcy5jdXJyZW50cGFnZSwgcGFyYW1zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0czogYW55W10pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFzID0gcmVzdWx0c1tcImRhdGFcIl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhcGFnaW5hdGlvbiA9IHJlc3VsdHNbXCJwYWdpbmF0aW9uXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkRyb3Bkb3duZGF0YSA9IHRoaXMuRHJvcGRvd25kYXRhLmNvbmNhdChkYXRhcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5Ecm9wZG93bmRhdGFcIiwgdGhpcy5Ecm9wZG93bmRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLkRyb3Bkb3duZGF0YS5sZW5ndGggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzX25leHQgPSBkYXRhcGFnaW5hdGlvbi5oYXNfbmV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc19wcmV2aW91cyA9IGRhdGFwYWdpbmF0aW9uLmhhc19wcmV2aW91cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRwYWdlID0gZGF0YXBhZ2luYXRpb24uaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgZHJvcGRvd25zZWFyY2goKSB7XHJcbiAgICBpZiAoISh0aGlzLklucHV0RmllbGRzPy5mcm9uZW50ZGF0YSkpIHtcclxuICAgICAgdGhpcy5Ecm9wZG93bkZvcm0uZ2V0KFwidmFsdWVcIikudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5Ecm9kb3duTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImluc2lkZSB0YXBcIik7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMuc2VhcmNocGFyYW1zKHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudHBhZ2UgPSAxXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLkdldEFwaSh0aGlzLklucHV0RmllbGRzLnVybCArIFwiP3BhZ2U9XCIgKyB0aGlzLmN1cnJlbnRwYWdlLCBwYXJhbXMpLnBpcGUoXHJcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLkRyb2Rvd25Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKChyZXN1bHRzOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIGxldCBkYXRhcyA9IHJlc3VsdHNbXCJkYXRhXCJdO1xyXG4gICAgICAgIHRoaXMuRHJvcGRvd25kYXRhID0gZGF0YXM7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgZ2V0ZHJvcGRvd24odmFsdWUpIHtcclxuICAgIGlmKHRoaXMuSW5wdXRGaWVsZHMudXJsKXtcclxuICAgICAgbGV0IHBhcmFtcyA9IHRoaXMuc2VhcmNocGFyYW1zKHZhbHVlKVxyXG4gICAgdGhpcy5zZXJ2aWNlLkdldEFwaSh0aGlzLklucHV0RmllbGRzLnVybCArIFwiP3BhZ2U9XCIgKyB0aGlzLmN1cnJlbnRwYWdlLCBwYXJhbXMpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgbGV0IGRhdGFzID0gcmVzdWx0c1tcImRhdGFcIl07XHJcbiAgICAgICAgbGV0IGRhdGFwYWdpbmF0aW9uID0gcmVzdWx0c1tcInBhZ2luYXRpb25cIl07XHJcbiAgICAgICAgdGhpcy5Ecm9wZG93bmRhdGEgPSBkYXRhc1xyXG4gICAgICAgIGlmICh0aGlzLkRyb3Bkb3duZGF0YS5sZW5ndGggPj0gMCkge1xyXG4gICAgICAgICAgdGhpcy5oYXNfbmV4dCA9IGRhdGFwYWdpbmF0aW9uLmhhc19uZXh0O1xyXG4gICAgICAgICAgdGhpcy5oYXNfcHJldmlvdXMgPSBkYXRhcGFnaW5hdGlvbi5oYXNfcHJldmlvdXM7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRwYWdlID0gZGF0YXBhZ2luYXRpb24uaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuICBzZWxlY3RlZCgpIHtcclxuICAgIC8vIGxldCBkYXRhID0gdGhpcy5Ecm9wZG93bkZvcm0udmFsdWUudmFsdWVcclxuICAgIGlmICh0aGlzLklucHV0RmllbGRzPy53aG9sZWRhdGEpIHtcclxuICAgICAgdGhpcy5kYXRhRXZlbnQuZW1pdCh0aGlzLmNoaXBTZWxlY3RlZE9iaik7XHJcbiAgICAgIGlmICh0aGlzLklucHV0RmllbGRzPy5mb3JtZ3JvdXAgJiYgdGhpcy5JbnB1dEZpZWxkcz8uZm9ybWNvbnRyb2xuYW1lKSB7XHJcbiAgICAgICAgdGhpcy5JbnB1dEZpZWxkcz8uZm9ybWdyb3VwXHJcbiAgICAgICAgICAuZ2V0KHRoaXMuSW5wdXRGaWVsZHM/LmZvcm1jb250cm9sbmFtZSlcclxuICAgICAgICAgIC5wYXRjaFZhbHVlKHRoaXMuY2hpcFNlbGVjdGVkT2JqKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLklucHV0RmllbGRzPy5PdXRwdXRrZXkpIHtcclxuICAgICAgICB0aGlzLmRhdGFFdmVudC5lbWl0KHRoaXMuY2hpcFNlbGVjdGVkSWQpO1xyXG4gICAgICAgIGlmICh0aGlzLklucHV0RmllbGRzPy5mb3JtZ3JvdXAgJiYgdGhpcy5JbnB1dEZpZWxkcz8uZm9ybWNvbnRyb2xuYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLklucHV0RmllbGRzPy5mb3JtZ3JvdXBcclxuICAgICAgICAgICAgLmdldCh0aGlzLklucHV0RmllbGRzPy5mb3JtY29udHJvbG5hbWUpXHJcbiAgICAgICAgICAgIC5wYXRjaFZhbHVlKHRoaXMuY2hpcFNlbGVjdGVkSWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGFFdmVudC5lbWl0KHRoaXMuY2hpcFNlbGVjdGVkT2JqKTtcclxuICAgICAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uZm9ybWdyb3VwICYmIHRoaXMuSW5wdXRGaWVsZHM/LmZvcm1jb250cm9sbmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5JbnB1dEZpZWxkcz8uZm9ybWdyb3VwXHJcbiAgICAgICAgICAgIC5nZXQodGhpcy5JbnB1dEZpZWxkcz8uZm9ybWNvbnRyb2xuYW1lKVxyXG4gICAgICAgICAgICAucGF0Y2hWYWx1ZSh0aGlzLmNoaXBTZWxlY3RlZE9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgc2VhcmNocGFyYW1zKHZhbHVlKSB7XHJcbiAgICBsZXQgcGFyYW1zID0gJydcclxuICAgIGlmICh0aGlzLklucHV0RmllbGRzLnBhcmFtcykge1xyXG4gICAgICBwYXJhbXMgPSB0aGlzLklucHV0RmllbGRzLnBhcmFtc1xyXG4gICAgfVxyXG4gICAgbGV0IGlucFZhbHVlID0gdmFsdWVcclxuICAgIGlucFZhbHVlID8gcGFyYW1zICs9ICcmJyArIHRoaXMuSW5wdXRGaWVsZHMuc2VhcmNoa2V5ICsgJz0nICsgaW5wVmFsdWUgOiAnJ1xyXG4gICAgcmV0dXJuIHBhcmFtc1xyXG4gIH1cclxuICByZW1vdmVjaGlwKG9iaikge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmNoaXBTZWxlY3RlZE9iai5pbmRleE9mKG9iaik7XHJcblxyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuXHJcbiAgICAgIHRoaXMuY2hpcFNlbGVjdGVkT2JqLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2hpcFNlbGVjdGVkT2JqKTtcclxuICAgICAgdGhpcy5jaGlwU2VsZWN0ZWRJZC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmNoaXBTZWxlY3RlZElkKTtcclxuICAgICAgdGhpcy5Ecm9wSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkKClcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIHB1YmxpYyB2ZW5TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5Ecm9wSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgY29uc29sZS5sb2coJ2V2ZW50Lm9wdGlvbi52YWx1ZScsIGV2ZW50Lm9wdGlvbi52YWx1ZSlcclxuICAgIHRoaXMuc2VsZWN0dmVuQnlOYW1lKGV2ZW50Lm9wdGlvbi52YWx1ZVt0aGlzLmNvbXBhcmVrZXkoZXZlbnQub3B0aW9uLnZhbHVlKV0pO1xyXG4gICAgY29uc29sZS5sb2coJ2NoaXBTZWxlY3RlZHZlbmlkJywgdGhpcy5jaGlwU2VsZWN0ZWRPYmopXHJcbiAgfVxyXG4gIHByaXZhdGUgc2VsZWN0dmVuQnlOYW1lKHZlbikge1xyXG4gICAgbGV0IGZvdW5kZW1wMSA9IHRoaXMuY2hpcFNlbGVjdGVkT2JqLmZpbHRlcihlID0+IGVbdGhpcy5jb21wYXJla2V5KGUpXSA9PSB2ZW4pO1xyXG4gICAgaWYgKGZvdW5kZW1wMS5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvdW5kZW1wID0gdGhpcy5Ecm9wZG93bmRhdGEuZmlsdGVyKGUgPT4gZVt0aGlzLmNvbXBhcmVrZXkoZSldID09IHZlbik7XHJcbiAgICBpZiAoZm91bmRlbXAubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY2hpcFNlbGVjdGVkT2JqLnB1c2goZm91bmRlbXBbMF0pO1xyXG4gICAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uT3V0cHV0a2V5KSB7XHJcbiAgICAgICAgdGhpcy5jaGlwU2VsZWN0ZWRJZC5wdXNoKGZvdW5kZW1wWzBdW3RoaXMuSW5wdXRGaWVsZHM/Lk91dHB1dGtleV0pXHJcblxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hpcFNlbGVjdGVkSWQucHVzaChmb3VuZGVtcFswXS5pZClcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgY29tcGFyZWtleShlKSB7XHJcbiAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uY29tcGFyZWtleSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5JbnB1dEZpZWxkcz8uY29tcGFyZWtleVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChlPy5pZCkge1xyXG4gICAgICAgIHJldHVybiBcImlkXCJcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5JbnB1dEZpZWxkcy5kaXNwbGF5a2V5XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0iXX0=
381
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnMtY2hpcGRkLWNtcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5uaWxvdWlzLm9yZy92cy1jaGlwZHJvcGRvd24vIiwic291cmNlcyI6WyJsaWIvdnMtY2hpcGRkLWNtcC92cy1jaGlwZGQtY21wLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLHNCQUFzQixHQUN2QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFFSCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQW9CLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTXJELElBQWEsb0JBQW9CLEdBQWpDLE1BQWEsb0JBQW9CO0lBRS9CLFlBQ1UsT0FBOEIsRUFDOUIsRUFBZTtRQURmLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBQzlCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFJaEIsZUFBVSxHQUFZLElBQUksQ0FBQztRQVcxQixjQUFTLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFeEQsd0JBQW1CLEdBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFXLENBQUMsQ0FBQztR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Q0FDRixDQUFBOztZQTdYb0IscUJBQXFCO1lBQzFCLFdBQVc7O0FBRWhCO0lBQVIsS0FBSyxFQUFFO3lEQUFrQjtBQUNqQjtJQUFSLEtBQUssRUFBRTt1REFBZ0I7QUFDZjtJQUFSLEtBQUssRUFBRTt3REFBNEI7QUFNcEM7SUFKQyxTQUFTLENBQUMsbUJBQW1CLEVBQUU7UUFDOUIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsc0JBQXNCO0tBQzdCLENBQUM7cURBQzhCO0FBR2hDO0lBREMsU0FBUyxDQUFDLHNCQUFzQixDQUFDO2lFQUNVO0FBQ3RCO0lBQXJCLFNBQVMsQ0FBQyxTQUFTLENBQUM7Z0VBQXFDO0FBQ2hEO0lBQVQsTUFBTSxFQUFFO3VEQUF3RDtBQUN6QztJQUF2QixTQUFTLENBQUMsV0FBVyxDQUFDO3VEQUFnQjtBQVU5QjtJQUFSLEtBQUssRUFBRTt1REFBdUI7QUE5QnBCLG9CQUFvQjtJQUxoQyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLG8vREFBNkM7O0tBRTlDLENBQUM7R0FDVyxvQkFBb0IsQ0FnWWhDO1NBaFlZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCxcclxuICBNYXRBdXRvY29tcGxldGUsXHJcbiAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICB0YXAsXHJcbiAgZmlsdGVyLFxyXG4gIHN3aXRjaE1hcCxcclxuICBmaW5hbGl6ZSxcclxuICB0YWtlVW50aWwsXHJcbiAgbWFwLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFZzQ2hpcGRyb3Bkb3duU2VydmljZSB9IGZyb20gJy4uL3ZzLWNoaXBkcm9wZG93bi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXZzLWNoaXBkZC1jbXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92cy1jaGlwZGQtY21wLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92cy1jaGlwZGQtY21wLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWc0NoaXBkZENtcENvbXBvbmVudCB7XHJcbiAgRHJvZG93bkxvYWRpbmc6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFZzQ2hpcGRyb3Bkb3duU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXHJcbiAgKSB7fVxyXG4gIEBJbnB1dCgpIElucHV0RmllbGRzOiBhbnk7XHJcbiAgQElucHV0KCkgUmVzZXRGb3JtOiBhbnk7XHJcbiAgQElucHV0KCkgQmFja2VuZGFwaTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2F1dG9Db21wbGV0ZUlucHV0Jywge1xyXG4gICAgc3RhdGljOiBmYWxzZSxcclxuICAgIHJlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXHJcbiAgfSlcclxuICB0cmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG5cclxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpXHJcbiAgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuICBAVmlld0NoaWxkKCdzY3JvbGxsJykgbWF0QXV0b2NvbXBsZXRlQXBwOiBNYXRBdXRvY29tcGxldGU7XHJcbiAgQE91dHB1dCgpIGRhdGFFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAVmlld0NoaWxkKCdEcm9wSW5wdXQnKSBEcm9wSW5wdXQ6IGFueTtcclxuICByZWFkb25seSBzZXBhcmF0b3JzS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuICBoYXNfbmV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN1cnJlbnRwYWdlOiBudW1iZXIgPSAxO1xyXG4gIERyb3Bkb3duZGF0YTogYW55ID0gW107XHJcbiAgaGFzX3ByZXZpb3VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgRHJvcGRvd25Gb3JtOiBGb3JtR3JvdXA7XHJcbiAgY2hpcFNlbGVjdGVkSWQ6IGFueSA9IFtdO1xyXG4gIGNoaXBTZWxlY3RlZE9iajogYW55ID0gW107XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gaWYgKHRoaXMuZm9ybUdyb3VwKSB7XHJcbiAgICAvLyAgIHRoaXMuRHJvcGRvd25Gb3JtID0gdGhpcy5mb3JtR3JvdXA7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLkRyb3Bkb3duRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgLy8gICAgIHZhbHVlOiAnJyxcclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmR1cG5nb25pdCgpO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLklucHV0RmllbGRzPy5kZWZhdWx0dmFsdWUpIHtcclxuICAgIC8vICAgdGhpcy5Ecm9wZG93bkZvcm0uZ2V0KFwidmFsdWVcIikucGF0Y2hWYWx1ZSh0aGlzLklucHV0RmllbGRzPy5kZWZhdWx0dmFsdWUpXHJcbiAgICAvLyAgIHRoaXMuY2hpcFNlbGVjdGVkT2JqID0gdGhpcy5JbnB1dEZpZWxkcz8uZGVmYXVsdHZhbHVlXHJcbiAgICAvLyAgIGlmICh0aGlzLmNoaXBTZWxlY3RlZE9iai5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgZm9yIChsZXQgZm91bmRlbXAgb2YgdGhpcy5jaGlwU2VsZWN0ZWRPYmopIHtcclxuICAgIC8vICAgICAgIGlmICh0aGlzLklucHV0RmllbGRzPy5PdXRwdXRrZXkpIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5jaGlwU2VsZWN0ZWRJZC5wdXNoKGZvdW5kZW1wW3RoaXMuSW5wdXRGaWVsZHM/Lk91dHB1dGtleV0pXHJcblxyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgICAgZWxzZSB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuY2hpcFNlbGVjdGVkSWQucHVzaChmb3VuZGVtcC5pZClcclxuXHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMuc2VsZWN0ZWQoKVxyXG4gICAgLy8gICB9XHJcblxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHRoaXMuSW5wdXRGaWVsZHM/LmZyb25lbnRkYXRhKSB7XHJcbiAgICAvLyAgIHRoaXMuRHJvcGRvd25kYXRhID0gdGhpcy5JbnB1dEZpZWxkcz8uZGF0YVxyXG5cclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLmdldGRyb3Bkb3duKCcnKVxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBsb29vcCgpIHtcclxuICAgIGZvciAobGV0IGZvdW5kZW1wIG9mIHRoaXMuY2hpcFNlbGVjdGVkT2JqKSB7XHJcbiAgICAgIGlmKCEoZm91bmRlbXAgaW5zdGFuY2VvZiBOdW1iZXIpKXtcclxuICAgICAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uT3V0cHV0a2V5KSB7XHJcbiAgICAgICAgICB0aGlzLmNoaXBTZWxlY3RlZElkLnB1c2goZm91bmRlbXBbdGhpcy5JbnB1dEZpZWxkcz8uT3V0cHV0a2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLklucHV0RmllbGRzPy5mb3Jta2V5KSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1rZXlhcnIucHVzaChmb3VuZGVtcFt0aGlzLklucHV0RmllbGRzPy5mb3Jta2V5XSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2hpcFNlbGVjdGVkSWQucHVzaChmb3VuZGVtcC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIH1cclxuICAgICBcclxuICB9XHJcbiAgZHVwbmdvbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25Gb3JtID0gdGhpcy5mb3JtR3JvdXA7XHJcbiAgICAgIGlmICghdGhpcy5Ecm9wZG93bkZvcm0uY29udGFpbnModGhpcy5JbnB1dEZpZWxkcz8uZm9ybWNvbnRyb2xuYW1lKSkge1xyXG4gICAgICAgIHRoaXMuRHJvcGRvd25Gb3JtLmFkZENvbnRyb2woXHJcbiAgICAgICAgICB0aGlzLmR5bmFtY2lmb3JtY29udHJvbHBhcmVudCgpLFxyXG4gICAgICAgICAgbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IFtdLCBkaXNhYmxlZDogdGhpcy5JbnB1dEZpZWxkcz8uZGlzYWJsZWQgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkRyb3Bkb3duRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIGNoaXB2YWx1ZTogW10sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coJ3RoaXMuRHJvcGRvd25Gb3JtJywgdGhpcy5Ecm9wZG93bkZvcm0udmFsdWUpO1xyXG4gICAgLy8gdGhpcy5jaGlwU2VsZWN0ZWRPYmogPVxyXG4gICAgLy8gICB0aGlzLkRyb3Bkb3duRm9ybS5nZXQodGhpcy5keW5hbWNpZm9ybWNvbnRyb2xwYXJlbnQoKSkudmFsdWUgJiZcclxuICAgIC8vICAgdGhpcy5Ecm9wZG93bkZvcm0uZ2V0KHRoaXMuZHluYW1jaWZvcm1jb250cm9scGFyZW50KCkpLnZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgLy8gICAgID8gdGhpcy5Ecm9wZG93bkZvcm0uZ2V0KHRoaXMuZHluYW1jaWZvcm1jb250cm9scGFyZW50KCkpLnZhbHVlXHJcbiAgICAvLyAgICAgOiBbXTtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZygndGhpcy5jaGlwU2VsZWN0ZWRPYmonLCB0aGlzLmNoaXBTZWxlY3RlZE9iaik7XHJcblxyXG4gICAgaWYgKHRoaXMuSW5wdXRGaWVsZHM/LmRlZmF1bHR2YWx1ZSkge1xyXG4gICAgICAvLyB0aGlzLkRyb3Bkb3duRm9ybS5nZXQodGhpcy5keW5hbWNpZm9ybWNvbnRyb2xwYXJlbnQoKSkucGF0Y2hWYWx1ZShcclxuICAgICAgLy8gICB0aGlzLklucHV0RmllbGRzPy5mb3Jta2V5XHJcbiAgICAgIC8vICAgICA/IHRoaXMuSW5wdXRGaWVsZHM/LmRlZmF1bHR2YWx1ZVt0aGlzLklucHV0RmllbGRzPy5mb3Jta2V5XVxyXG4gICAgICAvLyAgICAgOiB0aGlzLklucHV0RmllbGRzPy5kZWZhdWx0dmFsdWVcclxuICAgICAgLy8gKTtcclxuICAgICAgLy8gdGhpcy5Ecm9wZG93bkZvcm0uZ2V0KHRoaXMuZHluYW1jaWZvcm1jb250cm9scGFyZW50KCkpLnBhdGNoVmFsdWUodGhpcy5JbnB1dEZpZWxkcz8uZGVmYXVsdHZhbHVlKTtcclxuICAgICAgdGhpcy5jaGlwU2VsZWN0ZWRPYmogPSB0aGlzLklucHV0RmllbGRzPy5kZWZhdWx0dmFsdWU7XHJcbiAgICAgIHRoaXMuY2hpcFNlbGVjdGVkSWQgPSBbXTtcclxuICAgICAgdGhpcy5mb3Jta2V5YXJyID0gW107XHJcbiAgICAgIGlmICh0aGlzLmNoaXBTZWxlY3RlZE9iai5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5sb29vcCgpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5Ecm9wZG93bkZvcm0uZ2V0KHRoaXMuZHluYW1jaWZvcm1jb250cm9scGFyZW50KCkpLnZhbHVlICYmXHJcbiAgICAgIHRoaXMuRHJvcGRvd25Gb3JtLmdldCh0aGlzLmR5bmFtY2lmb3JtY29udHJvbHBhcmVudCgpKS52YWx1ZS5sZW5ndGggIT09IDBcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNoaXBTZWxlY3RlZE9iaiA9IHRoaXMuRHJvcGRvd25Gb3JtLmdldChcclxuICAgICAgICB0aGlzLmR5bmFtY2lmb3JtY29udHJvbHBhcmVudCgpXHJcbiAgICAgICkudmFsdWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKCd0ZXN0Jyx0aGlzLmNoaXBTZWxlY3RlZE9iaiA9IHRoaXMuRHJvcGRvd25Gb3JtLmdldChcclxuICAgICAgICB0aGlzLmR5bmFtY2lmb3JtY29udHJvbHBhcmVudCgpXHJcbiAgICAgICkudmFsdWUpXHJcbiAgICAgIHRoaXMuY2hpcFNlbGVjdGVkSWQgPSBbXTtcclxuICAgICAgdGhpcy5mb3Jta2V5YXJyID0gW107XHJcbiAgICAgIHRoaXMubG9vb3AoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuSW5wdXRGaWVsZHM/LmZyb25lbnRkYXRhKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25kYXRhID0gdGhpcy5JbnB1dEZpZWxkcz8uZGF0YTtcclxuICAgIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLmdldGRyb3Bkb3duKCcnKVxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5JbnB1dEZpZWxkcyAmJiBjaGFuZ2VzLklucHV0RmllbGRzLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnU3VtbWFyeSBMb2cgQ2hhbmdlcycpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRwYWdlID0gMTtcclxuICAgICAgdGhpcy5kdXBuZ29uaXQoKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzLlJlc2V0Rm9ybSAmJiBjaGFuZ2VzLlJlc2V0Rm9ybS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgY29uc29sZS5sb2coJ2hpdHRlZCcpO1xyXG4gICAgICAvLyB0aGlzLkRyb3Bkb3duRm9ybS5yZXNldCgpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRwYWdlID0gMTtcclxuICAgICAgdGhpcy5kdXBuZ29uaXQoKTtcclxuICAgICAgdGhpcy5jaGlwU2VsZWN0ZWRJZCA9IFtdO1xyXG4gICAgICB0aGlzLmZvcm1rZXlhcnIgPSBbXTtcclxuICAgICAgdGhpcy5jaGlwU2VsZWN0ZWRPYmogPSBbXTtcclxuICAgICAgdGhpcy5kYXRhRXZlbnQuZW1pdChbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIHB1YmxpYyBkaXNwbGF5ZGV2ZWxvcGNsaWVudChjbHQ6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAvLyAgIHJldHVybiBrZXlbY2x0XTtcclxuICAvLyB9XHJcbiAgYXV0b2NvbXBsZXRlQXBwU2Nyb2xsKCkge1xyXG4gICAgaWYgKCF0aGlzLklucHV0RmllbGRzPy5mcm9uZW50ZGF0YSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLm1hdEF1dG9jb21wbGV0ZUFwcCAmJlxyXG4gICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyICYmXHJcbiAgICAgICAgICB0aGlzLm1hdEF1dG9jb21wbGV0ZUFwcC5wYW5lbFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZnJvbUV2ZW50KHRoaXMubWF0QXV0b2NvbXBsZXRlQXBwLnBhbmVsLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBtYXAoKHgpID0+IHRoaXMubWF0QXV0b2NvbXBsZXRlQXBwLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wKSxcclxuICAgICAgICAgICAgICB0YWtlVW50aWwoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIucGFuZWxDbG9zaW5nQWN0aW9ucyBhcyBPYnNlcnZhYmxlPGFueT5cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdEF1dG9jb21wbGV0ZUFwcC5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICBjb25zdCBzY3JvbGxIZWlnaHQgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRBdXRvY29tcGxldGVBcHAucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgZWxlbWVudEhlaWdodCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdEF1dG9jb21wbGV0ZUFwcC5wYW5lbC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgICAgICAgICAgICBjb25zdCBhdEJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIDEgPD0gc2Nyb2xsVG9wICsgZWxlbWVudEhlaWdodDtcclxuICAgICAgICAgICAgICBpZiAoYXRCb3R0b20pIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc19uZXh0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuRHJvcElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnNlYXJjaHBhcmFtcyh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudHBhZ2UgPSB0aGlzLmN1cnJlbnRwYWdlICsgMTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudHBhZ2UgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAuR2V0QXBpKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLklucHV0RmllbGRzLnVybCArICc/cGFnZT0nICsgdGhpcy5jdXJyZW50cGFnZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHRzOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YXMgPSByZXN1bHRzWydkYXRhJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhcGFnaW5hdGlvbiA9IHJlc3VsdHNbJ3BhZ2luYXRpb24nXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Ecm9wZG93bmRhdGEgPSB0aGlzLkRyb3Bkb3duZGF0YS5jb25jYXQoZGF0YXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5Ecm9wZG93bmRhdGEnLCB0aGlzLkRyb3Bkb3duZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLkRyb3Bkb3duZGF0YS5sZW5ndGggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzX25leHQgPSBkYXRhcGFnaW5hdGlvbi5oYXNfbmV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc19wcmV2aW91cyA9IGRhdGFwYWdpbmF0aW9uLmhhc19wcmV2aW91cztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRwYWdlID0gZGF0YXBhZ2luYXRpb24uaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBkcm9wZG93bnNlYXJjaCgpIHtcclxuICAgIGlmICghdGhpcy5JbnB1dEZpZWxkcz8uZnJvbmVudGRhdGEpIHtcclxuICAgICAgdGhpcy5Ecm9wZG93bkZvcm0uZ2V0KCd2YWx1ZScpXHJcbiAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Ecm9kb3duTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgdGFwJyk7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMuc2VhcmNocGFyYW1zKHZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50cGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcclxuICAgICAgICAgICAgICAuR2V0QXBpKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5JbnB1dEZpZWxkcy51cmwgKyAnP3BhZ2U9JyArIHRoaXMuY3VycmVudHBhZ2UsXHJcbiAgICAgICAgICAgICAgICBwYXJhbXNcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuRHJvZG93bkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZGF0YXMgPSByZXN1bHRzWydkYXRhJ107XHJcbiAgICAgICAgICB0aGlzLkRyb3Bkb3duZGF0YSA9IGRhdGFzO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRkcm9wZG93bih2YWx1ZSkge1xyXG4gICAgdGhpcy5jdXJyZW50cGFnZSA9IDE7XHJcbiAgICBpZiAodGhpcy5JbnB1dEZpZWxkcy51cmwpIHtcclxuICAgICAgbGV0IHBhcmFtcyA9IHRoaXMuc2VhcmNocGFyYW1zKHZhbHVlKTtcclxuICAgICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgICAgLkdldEFwaSh0aGlzLklucHV0RmllbGRzLnVybCArICc/cGFnZT0nICsgdGhpcy5jdXJyZW50cGFnZSwgcGFyYW1zKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZGF0YXMgPSByZXN1bHRzWydkYXRhJ107XHJcbiAgICAgICAgICBsZXQgZGF0YXBhZ2luYXRpb24gPSByZXN1bHRzWydwYWdpbmF0aW9uJ107XHJcbiAgICAgICAgICB0aGlzLkRyb3Bkb3duZGF0YSA9IGRhdGFzO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlci5vcGVuUGFuZWwoKTtcclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgaWYgKHRoaXMuRHJvcGRvd25kYXRhLmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzX25leHQgPSBkYXRhcGFnaW5hdGlvbi5oYXNfbmV4dDtcclxuICAgICAgICAgICAgdGhpcy5oYXNfcHJldmlvdXMgPSBkYXRhcGFnaW5hdGlvbi5oYXNfcHJldmlvdXM7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudHBhZ2UgPSBkYXRhcGFnaW5hdGlvbi5pbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgT3V0cHV0ZGF0YTogYW55ID0gW107XHJcbiAgZHluYW1jaWZvcm1jb250cm9scGFyZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuSW5wdXRGaWVsZHM/LmZvcm1jb250cm9sbmFtZSAmJiB0aGlzLmZvcm1Hcm91cFxyXG4gICAgICA/IHRoaXMuSW5wdXRGaWVsZHM/LmZvcm1jb250cm9sbmFtZVxyXG4gICAgICA6ICdjaGlwdmFsdWUnO1xyXG4gIH1cclxuICBzZWxlY3RlZCgpIHtcclxuICAgIHRoaXMuT3V0cHV0ZGF0YSA9IHRoaXMuY2hpcFNlbGVjdGVkT2JqO1xyXG4gICAgaWYgKHRoaXMuSW5wdXRGaWVsZHM/Lk91dHB1dGtleSkge1xyXG4gICAgICB0aGlzLk91dHB1dGRhdGEgPSB0aGlzLmNoaXBTZWxlY3RlZElkO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuSW5wdXRGaWVsZHM/LmZvcm1jb250cm9sbmFtZSkge1xyXG4gICAgICB0aGlzLkRyb3Bkb3duRm9ybS5nZXQodGhpcy5keW5hbWNpZm9ybWNvbnRyb2xwYXJlbnQoKSkucGF0Y2hWYWx1ZShcclxuICAgICAgICB0aGlzLmZvcm1rZXlhcnJcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybWtleWFycik7XHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5Ecm9wZG93bkZvcm0uZ2V0JywgdGhpcy5Ecm9wZG93bkZvcm0udmFsdWUpO1xyXG4gICAgdGhpcy5kYXRhRXZlbnQuZW1pdCh0aGlzLk91dHB1dGRhdGEpO1xyXG5cclxuICAgIC8vIGxldCBkYXRhID0gdGhpcy5Ecm9wZG93bkZvcm0udmFsdWUudmFsdWVcclxuICAgIC8vIGlmICh0aGlzLklucHV0RmllbGRzPy53aG9sZWRhdGEpIHtcclxuICAgIC8vICAgdGhpcy5kYXRhRXZlbnQuZW1pdCh0aGlzLmNoaXBTZWxlY3RlZE9iaik7XHJcbiAgICAvLyAgIGlmICh0aGlzLklucHV0RmllbGRzPy5mb3JtZ3JvdXAgJiYgdGhpcy5JbnB1dEZpZWxkcz8uZm9ybWNvbnRyb2xuYW1lKSB7XHJcbiAgICAvLyAgICAgdGhpcy5JbnB1dEZpZWxkcz8uZm9ybWdyb3VwXHJcbiAgICAvLyAgICAgICAuZ2V0KHRoaXMuSW5wdXRGaWVsZHM/LmZvcm1jb250cm9sbmFtZSlcclxuICAgIC8vICAgICAgIC5wYXRjaFZhbHVlKHRoaXMuY2hpcFNlbGVjdGVkT2JqKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLklucHV0RmllbGRzPy5PdXRwdXRrZXkpIHtcclxuICAgIC8vICAgICB0aGlzLmRhdGFFdmVudC5lbWl0KHRoaXMuY2hpcFNlbGVjdGVkSWQpO1xyXG4gICAgLy8gICAgIGlmICh0aGlzLklucHV0RmllbGRzPy5mb3JtZ3JvdXAgJiYgdGhpcy5JbnB1dEZpZWxkcz8uZm9ybWNvbnRyb2xuYW1lKSB7XHJcbiAgICAvLyAgICAgICB0aGlzLklucHV0RmllbGRzPy5mb3JtZ3JvdXBcclxuICAgIC8vICAgICAgICAgLmdldCh0aGlzLklucHV0RmllbGRzPy5mb3JtY29udHJvbG5hbWUpXHJcbiAgICAvLyAgICAgICAgIC5wYXRjaFZhbHVlKHRoaXMuY2hpcFNlbGVjdGVkSWQpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBlbHNlIHtcclxuICAgIC8vICAgICB0aGlzLmRhdGFFdmVudC5lbWl0KHRoaXMuY2hpcFNlbGVjdGVkT2JqKTtcclxuICAgIC8vICAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uZm9ybWdyb3VwICYmIHRoaXMuSW5wdXRGaWVsZHM/LmZvcm1jb250cm9sbmFtZSkge1xyXG4gICAgLy8gICAgICAgdGhpcy5JbnB1dEZpZWxkcz8uZm9ybWdyb3VwXHJcbiAgICAvLyAgICAgICAgIC5nZXQodGhpcy5JbnB1dEZpZWxkcz8uZm9ybWNvbnRyb2xuYW1lKVxyXG4gICAgLy8gICAgICAgICAucGF0Y2hWYWx1ZSh0aGlzLmNoaXBTZWxlY3RlZE9iaik7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcblxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBzZWFyY2hwYXJhbXModmFsdWUpIHtcclxuICAgIGxldCBwYXJhbXMgPSAnJztcclxuICAgIGlmICh0aGlzLklucHV0RmllbGRzLnBhcmFtcykge1xyXG4gICAgICBwYXJhbXMgPSB0aGlzLklucHV0RmllbGRzLnBhcmFtcztcclxuICAgIH1cclxuICAgIGxldCBpbnBWYWx1ZSA9IHZhbHVlO1xyXG4gICAgaW5wVmFsdWVcclxuICAgICAgPyAocGFyYW1zICs9ICcmJyArIHRoaXMuSW5wdXRGaWVsZHMuc2VhcmNoa2V5ICsgJz0nICsgaW5wVmFsdWUpXHJcbiAgICAgIDogJyc7XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuICByZW1vdmVjaGlwKG9iaikge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmNoaXBTZWxlY3RlZE9iai5pbmRleE9mKG9iaik7XHJcblxyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy5jaGlwU2VsZWN0ZWRPYmouc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5jaGlwU2VsZWN0ZWRPYmopO1xyXG4gICAgICB0aGlzLmNoaXBTZWxlY3RlZElkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2hpcFNlbGVjdGVkSWQpO1xyXG4gICAgICB0aGlzLmZvcm1rZXlhcnIuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgY29uc29sZS5sb2coJ3RoaXMuZm9ybWtleWFycicsIHRoaXMuZm9ybWtleWFycik7XHJcblxyXG4gICAgICB0aGlzLkRyb3BJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIHZlblNlbGVjdGVkKGRhdGEpOiB2b2lkIHtcclxuICAgIHRoaXMuRHJvcElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIGNvbnNvbGUubG9nKCdldmVudC5vcHRpb24udmFsdWUnLCBkYXRhKTtcclxuICAgIHRoaXMuc2VsZWN0dmVuQnlOYW1lKGRhdGFbdGhpcy5jb21wYXJla2V5KGRhdGEpXSk7XHJcbiAgICBjb25zb2xlLmxvZygnY2hpcFNlbGVjdGVkdmVuaWQnLCB0aGlzLmNoaXBTZWxlY3RlZE9iaik7XHJcbiAgfVxyXG4gIGZvcm1rZXlhcnI6IGFueSA9IFtdO1xyXG4gIHByaXZhdGUgc2VsZWN0dmVuQnlOYW1lKHZlbikge1xyXG4gICAgbGV0IGZvdW5kZW1wMSA9IHRoaXMuY2hpcFNlbGVjdGVkT2JqLmZpbHRlcihcclxuICAgICAgKGUpID0+IGVbdGhpcy5jb21wYXJla2V5KGUpXSA9PSB2ZW5cclxuICAgICk7XHJcbiAgICBpZiAoZm91bmRlbXAxLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZm91bmRlbXAgPSB0aGlzLkRyb3Bkb3duZGF0YS5maWx0ZXIoXHJcbiAgICAgIChlKSA9PiBlW3RoaXMuY29tcGFyZWtleShlKV0gPT0gdmVuXHJcbiAgICApO1xyXG4gICAgaWYgKGZvdW5kZW1wLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmNoaXBTZWxlY3RlZE9iai5wdXNoKGZvdW5kZW1wWzBdKTtcclxuICAgICAgaWYgKHRoaXMuSW5wdXRGaWVsZHM/Lk91dHB1dGtleSkge1xyXG4gICAgICAgIHRoaXMuY2hpcFNlbGVjdGVkSWQucHVzaChmb3VuZGVtcFswXVt0aGlzLklucHV0RmllbGRzPy5PdXRwdXRrZXldKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5JbnB1dEZpZWxkcz8uZm9ybWtleSkge1xyXG4gICAgICAgIHRoaXMuZm9ybWtleWFyci5wdXNoKGZvdW5kZW1wWzBdW3RoaXMuSW5wdXRGaWVsZHM/LmZvcm1rZXldKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoaXBTZWxlY3RlZElkLnB1c2goZm91bmRlbXBbMF0uaWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCdmb3Jta2V5YXJyMTInLCB0aGlzLmZvcm1rZXlhcnIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBhcmVrZXkoZSkge1xyXG4gICAgaWYgKHRoaXMuSW5wdXRGaWVsZHM/LmNvbXBhcmVrZXkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuSW5wdXRGaWVsZHM/LmNvbXBhcmVrZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZT8uaWQpIHtcclxuICAgICAgICByZXR1cm4gJ2lkJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5JbnB1dEZpZWxkcy5kaXNwbGF5a2V5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==