@unipin/angular-applet 18.7.3 → 18.7.6

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.
@@ -17,15 +17,29 @@ export class FilterComponent {
17
17
  this.initialItems = new Map();
18
18
  }
19
19
  ngOnInit() {
20
+ const irresoluteKeys = new Set();
21
+ const irresoluteValue = new Map();
20
22
  this.config.fields.forEach(({ key, initialValue, initialItems, isIrresolute }) => {
21
23
  if (typeof key !== 'string') {
22
- key.forEach((k, i) => this.createFormControl(k, initialValue?.at(i), isIrresolute));
24
+ key.forEach((k, i) => {
25
+ this.createFormControl(k, initialValue?.at(i), isIrresolute);
26
+ if (isIrresolute) {
27
+ irresoluteKeys.add(k);
28
+ if (initialValue)
29
+ irresoluteValue.set(k, initialValue?.at(i));
30
+ }
31
+ });
23
32
  }
24
33
  else {
25
34
  if (initialItems) {
26
35
  this.initialItems.set(key, initialItems);
27
36
  }
28
37
  this.createFormControl(key, initialValue, isIrresolute);
38
+ if (isIrresolute) {
39
+ irresoluteKeys.add(key);
40
+ if (initialValue)
41
+ irresoluteValue.set(key, initialValue);
42
+ }
29
43
  }
30
44
  });
31
45
  const savedState = localStorage.getItem(`${this.id}`);
@@ -34,11 +48,25 @@ export class FilterComponent {
34
48
  return;
35
49
  }
36
50
  const state = JSON.parse(savedState);
37
- this.activeFilter = state.activeFilter;
38
51
  if (state.initialItems) {
39
52
  this.initialItems = new Map(Object.entries(state.initialItems));
40
53
  }
41
- this.form.patchValue(state.formValues);
54
+ const formValues = state.formValues || {};
55
+ const combValues = {};
56
+ Object.keys(formValues).forEach(key => {
57
+ if (!irresoluteKeys.has(key))
58
+ combValues[key] = formValues[key];
59
+ else {
60
+ combValues[key] = irresoluteValue.get(key);
61
+ }
62
+ });
63
+ this.form.patchValue(combValues);
64
+ this.activeFilter = [];
65
+ const currentValues = this.form.getRawValue();
66
+ Object.keys(currentValues).forEach(key => {
67
+ if (currentValues[key])
68
+ this.processFilter(key, currentValues[key]);
69
+ });
42
70
  this.emitValue();
43
71
  }
44
72
  close() {
@@ -182,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
182
210
  type: ViewChild,
183
211
  args: ['searchBox']
184
212
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFvQnJILE1BQU0sT0FBTyxlQUFlO0lBK0MxQixZQUNtQyxXQUFtQixFQUNqQyxFQUFxQixFQUNyQixXQUE4QjtRQUZoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUE3QnpCLGFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVl6RSxTQUFJLEdBQW1CLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTWxELGlCQUFZLEdBQW9ELEVBQUUsQ0FBQztRQU1uRSxpQkFBWSxHQUFvRCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBTTdFLENBQUM7SUFNRSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWUsRUFBRSxFQUFFO1lBQzVGLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0RyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBSSxJQUFJLENBQUMsRUFBRyxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFLTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBS00sS0FBSztRQUNWLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxCLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBSSxJQUFJLENBQUMsRUFBRyxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFNTSxZQUFZLENBQUMsQ0FBUztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBSU0sTUFBTTtRQUNYLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENB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O3NCQUF2QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPQyxRQUFRO3NCQUFqQyxNQUFNO2dCQU1vQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItc2VhcmNoLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQsIEZvcm1TZWxlY3RDb21wb25lbnQsIEZvcm1EYXRlQ29tcG9uZW50LCBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtZmlsdGVyJyxcbiAgc3R5bGVVcmw6ICAnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgXG4gICAgY2xhc3M6ICdkLWJsb2NrIHBvc2l0aW9uLXJlbGF0aXZlJyBcbiAgfSxcbiAgaW1wb3J0czogWyAgXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgRm9ybURhdGVDb21wb25lbnQsXG4gICAgRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybVNlbGVjdENvbXBvbmVudCxcbiAgICBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGZpbHRlci5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgc3BlY2lmeWluZyBmaWx0ZXIgZmllbGRzIGFuZCBtb2RlLlxuICAgKiBAdHlwZSB7RmlsdGVyQ29uZmlnfVxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBjb25maWchOiBGaWx0ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBldmVudCBlbWl0dGVyIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKiBFbWl0cyBhIGBGaWx0ZXJTZWFyY2hFdmVudGAgb2JqZWN0IHdpdGggc2VhcmNoIG1vZGUgYW5kIGNyaXRlcmlhIGRhdGEuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVmlld0NoaWxkIGRlY29yYXRvciB0byByZWZlcmVuY2UgdGhlIHNlYXJjaEJveCBlbGVtZW50IGluIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHR5cGUge0VsZW1lbnRSZWZ9XG4gICAqL1xuICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnKSBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoQm94ITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogRm9ybSBncm91cCBmb3IgbWFuYWdpbmcgZm9ybSBjb250cm9scy5cbiAgICogQHR5cGUge0Zvcm1Hcm91cDxhbnk+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxhbnk+ID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgLyoqXG4gICAqIEFycmF5IHRvIHN0b3JlIGFjdGl2ZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqIEB0eXBlIHt7IGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXX1cbiAgICovXG4gIHB1YmxpYyBhY3RpdmVGaWx0ZXI6IHsgbGFiZWw6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIE1hcCB0byBzdG9yZSBpbml0aWFsIGl0ZW1zIGZvciBlYWNoIGZpbHRlciBrZXkuXG4gICAqIEB0eXBlIHtNYXA8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdPn1cbiAgICovXG4gIHB1YmxpYyBpbml0aWFsSXRlbXM6IE1hcDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9W10+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9wb3ZlckN0cmw6IFBvcG92ZXJDb250cm9sbGVyXG4gICkgeyB9IFxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9vayB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnQuXG4gICAqIENyZWF0ZXMgZm9ybSBjb250cm9scyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdG9yZXMgc2F2ZWQgZmlsdGVyIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWR7XG4gICAgdGhpcy5jb25maWcuZmllbGRzLmZvckVhY2goKHsga2V5LCBpbml0aWFsVmFsdWUsIGluaXRpYWxJdGVtcywgaXNJcnJlc29sdXRlIH06IEZpbHRlckZpZWxkKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAga2V5LmZvckVhY2goKGs6IHN0cmluZywgaTogbnVtYmVyKSA9PiB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKGssIGluaXRpYWxWYWx1ZT8uYXQoaSksIGlzSXJyZXNvbHV0ZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGluaXRpYWxJdGVtcykge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zLnNldChrZXksIGluaXRpYWxJdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKGtleSwgaW5pdGlhbFZhbHVlLCBpc0lycmVzb2x1dGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2F2ZWRTdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICBpZiAoIXNhdmVkU3RhdGUpIHtcbiAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlID0gSlNPTi5wYXJzZShzYXZlZFN0YXRlKTtcblxuICAgIHRoaXMuYWN0aXZlRmlsdGVyID0gc3RhdGUuYWN0aXZlRmlsdGVyO1xuICAgIGlmIChzdGF0ZS5pbml0aWFsSXRlbXMpIHtcbiAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gbmV3IE1hcChPYmplY3QuZW50cmllcyhzdGF0ZS5pbml0aWFsSXRlbXMpKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoc3RhdGUuZm9ybVZhbHVlcyk7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGZpbHRlciBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWR7IFxuICAgIHRoaXMucG9wb3ZlckN0cmwuZGlzbWlzcygpOyBcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGZpbHRlciBjcml0ZXJpYSwgbG9jYWxTdG9yYWdlLCBhbmQgdHJpZ2dlcnMgYSBzZWFyY2ggZXZlbnQgd2l0aCBudWxsIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZHtcbiAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICB0aGlzLmluaXRpYWxJdGVtcy5jbGVhcigpO1xuICAgIHRoaXMub25TZWFyY2guZW1pdCh7IG1vZGU6IHRoaXMuY29uZmlnLm1vZGUsIGRhdGE6IG51bGwgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNwZWNpZmljIGZpbHRlciBjcml0ZXJpYSBiYXNlZCBvbiBpdHMgaW5kZXguXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpIC0gSW5kZXggb2YgdGhlIGZpbHRlciBjcml0ZXJpYSB0byBiZSByZW1vdmVkLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZpbHRlcihpOiBudW1iZXIpOiB2b2lke1xuICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmFjdGl2ZUZpbHRlcltpXS5rZXldLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5zcGxpY2UoaSwgMSk7XG4gICBcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cbiAgLyoqXG4gICAqIEluaXRpYXRlcyBhIHNlYXJjaCBiYXNlZCBvbiB0aGUgYWN0aXZlIGZpbHRlciBjcml0ZXJpYSBhbmQgY2xlYXJzIHRoZSBzYXZlZCBmaWx0ZXIgc3RhdGUgaWYgdGhlcmUgYXJlIG5vIGFjdGl2ZSBmaWx0ZXJzLlxuICAgKi9cbiAgcHVibGljIHNlYXJjaCgpOiB2b2lke1xuICAgIHRoaXMucmVzZXRWYWx1ZSgpO1xuICAgIHRoaXMuZW1pdFZhbHVlKChrOiBzdHJpbmcsIHY6IGFueSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgdi5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB0aGlzLnByb2Nlc3NGaWx0ZXIoaywgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrLCB2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3RoaXMuaWR9YCk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuICBcbiAgcHJvdGVjdGVkIHByb2Nlc3NGaWx0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lke1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZVswXTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgaW5pdGlhbEl0ZW0gPSB0aGlzLmluaXRpYWxJdGVtcy5nZXQoa2V5KT8uZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKTtcbiAgICBjb25zdCBsYWJlbCA9IGluaXRpYWxJdGVtXG4gICAgICA/IGAkeyBrZXkgfTogJHsgaW5pdGlhbEl0ZW0ubGFiZWwgfWBcbiAgICAgIDogYCR7IGtleSB9OiAkeyBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpPyBmb3JtYXREYXRlKHZhbHVlLCAnZGQgTU1NIHl5eXknLCAnZW4tVVMnKSA6IHZhbHVlIH1gO1xuICBcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsga2V5LCB2YWx1ZSwgbGFiZWwgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBmaWx0ZXIgY3JpdGVyaWEgYmFzZWQgb24gdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYWRkKCk6IHZvaWR7XG4gICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSB0aGlzLmdldFZhbHVlKHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5maWVsZHMuZmluZEluZGV4KCh7IGtleTogayB9KSA9PiBrID09PSBrZXkpID09PSAtMSkge1xuICAgICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGkgPSB0aGlzLmFjdGl2ZUZpbHRlci5maW5kSW5kZXgoKHsga2V5OiBrIH0pID0+IGsgPT09IGtleSk7XG4gICAgaWYgKGkgPT09IC0xKSB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsgbGFiZWw6IGAkeyBrZXkgfTokeyB2YWx1ZSB9YCwga2V5LCB2YWx1ZSB9KTtcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLmtleSA9IGtleTtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlcltpXS5sYWJlbCA9IGAkeyBrZXkgfTokeyB2YWx1ZSB9YDtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNlaXZlIHRoZSBpbml0aWFsSXRlbXMgZm9ybSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnQgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIGluaXRpYWxJdGVtcyBtYXAgdG8gYmUgdXNlZCBhZ2FpbiBieSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnRcbiAgICogd2hlbiBpdCBpbml0aWFsaXplZCBhZ2Fpbi5cbiAgICogQHBhcmFtIHthbnl9IGl0ZW0gLSBUaGUgaW5pdGlhbCBpdGVtcyByZWNlaXZlZCBmcm9tIHRoZSBzZWFyY2FibGUgb3Igc2VsZWN0IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbml0aWFsIGl0ZW1zLlxuICAgKi9cbiAgcHVibGljIGFwcGx5SW5pdGlhbEl0ZW1zKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiB2b2lkeyBcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgWyBpdGVtIF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgaXRlbSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGFjdGl2ZSBmaWx0ZXIgYW5kIGNsZWFycyB0aGUgc2VhcmNoIGJveC5cbiAgICovXG4gIHByb3RlY3RlZCByZXNldFZhbHVlKCk6IHZvaWR7XG4gICAgdGhpcy5hY3RpdmVGaWx0ZXIubGVuZ3RoID0gMDtcbiAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIHRoZSBpbnB1dCB2YWx1ZSBhbmQgcmV0dXJucyBhIGtleS12YWx1ZSBwYWlyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBJbnB1dCB2YWx1ZSB0byBiZSBwYXJzZWQuXG4gICAqIEByZXR1cm5zIHt7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH19IC0gS2V5LXZhbHVlIHBhaXIgZXh0cmFjdGVkIGZyb20gdGhlIGlucHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH17XG4gICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KCc6Jyk7XG5cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHsga2V5OiA8c3RyaW5nPiB0aGlzLmNvbmZpZy5maWVsZHNbMF0ua2V5LCB2YWx1ZTogdmFsdWVzWzBdIH07XG4gICAgcmV0dXJuIHsga2V5OiB2YWx1ZXNbMF0sIHZhbHVlOiB2YWx1ZXNbMV0gfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgc2VhcmNoIGV2ZW50IGJhc2VkIG9uIHRoZSBmb3JtIHZhbHVlcy5cbiAgICogSW52b2tlcyBhbiBleHRyYSBhY3Rpb24gaWYgcHJvdmlkZWQgYW5kIHNhdmVzIHRoZSBzdGF0ZSB0byBsb2NhbFN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB2b2lkfSBbZXh0cmFBY3Rpb25dIC0gT3B0aW9uYWwgZXh0cmEgYWN0aW9uIHRvIGJlIGludm9rZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZW1pdFZhbHVlKGV4dHJhQWN0aW9uPzogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZHtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGNvbnN0IGYgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBjb25zdCBkYXRhOiB7IFtrOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIFxuICAgIE9iamVjdC5rZXlzKGYpLmZvckVhY2goKGs6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFmW2tdKSByZXR1cm47XG4gICAgICBcbiAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgZGF0YVtrXSA9IGZba107XG4gICAgICBleHRyYUFjdGlvbj8uKGssIGZba10pO1xuICAgIH0pO1xuICAgIHRoaXMub25TZWFyY2guZW1pdCh7IG1vZGU6IHRoaXMuY29uZmlnLm1vZGUsIGRhdGE6IGZsYWc/IGRhdGEgOiBudWxsIH0pO1xuICAgIFxuICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGZvcm0gY29udHJvbCBmb3IgYSBnaXZlbiBrZXkgYW5kIHNldHMgaXRzIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBLZXkgZm9yIHRoZSBmb3JtIGNvbnRyb2wuXG4gICAqIEBwYXJhbSB7Kn0gW3ZhbF0gLSBJbml0aWFsIHZhbHVlIGZvciB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUZvcm1Db250cm9sKGtleTogc3RyaW5nLCB2YWw/OiBhbnksIGlzSXJyZXNvbHV0ZT86IGJvb2xlYW4pOiB2b2lke1xuICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKGtleSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNba2V5XS5zZXRWYWx1ZSh2YWwpO1xuICAgICAgdGhpcy5wcm9jZXNzRmlsdGVyKGtleSwgdmFsKTtcblxuICAgICAgaWYgKCFpc0lycmVzb2x1dGUpIHtcbiAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2F2ZVN0YXRlKCk6IHZvaWR7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBgJHsgdGhpcy5pZCB9YCwgXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGFjdGl2ZUZpbHRlcjogdGhpcy5hY3RpdmVGaWx0ZXIsXG4gICAgICAgIGluaXRpYWxJdGVtczogT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuaW5pdGlhbEl0ZW1zKSxcbiAgICAgICAgZm9ybVZhbHVlczogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKClcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPGlvbi1pY29uIG5hbWU9XCJzZWFyY2hcIiBjbGFzcz1cImZzLTQgcG9zaXRpb24tYWJzb2x1dGVcIiAvPlxuXG48ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmb3JtLWNvbnRyb2wgcHMtNSBweS0wIHBlLTAgZ2FwLTNcIj5cbiAgICBAaWYgKGFjdGl2ZUZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgZmxleC1zaHJpbmstMCB0YWctY29udGFpbmVyIGdhcC0yIHRleHQtbm93cmFwIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgYWN0aXZlRmlsdGVyOyB0cmFjayBpdGVtLmtleTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnLWl0ZW0gcC0xIHJvdW5kZWQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB1c2VyLXNlbGVjdC1ub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInBlLTEgbWUtMSBjdXJzb3ItcG9pbnRlciB0ZXh0LXByaW1hcnlcIiAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGkpO1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGlucHV0ICNzZWFyY2hCb3ggdHlwZT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIiBjbGFzcz1cImZsZXgtc2hyaW5rLTEgYm9yZGVyLTAgZm9ybS1jb250cm9sIHBzLTAgcHktMlwiIFtjbGFzcy5hZHZdPVwiY29uZmlnLm1vZGUgPT09ICdhZHZhbmNlZCdcIiAoa2V5dXAuZW50ZXIpPVwiYWRkKCk7XCIgLz5cbjwvZGl2PlxuXG5AaWYgKGNvbmZpZy5tb2RlID09PSAnYWR2YW5jZWQnKSB7XG4gICAgPGlvbi1pY29uIG5hbWU9XCJmaWx0ZXJcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZzLTQgY3Vyc29yLXBvaW50ZXJcIiBpZD1cImZpbHRlci17eyBpZCB9fVwiIC8+XG4gICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZnMtNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbGVhcigpO1wiIC8+XG4gICAgXG4gICAgPGlvbi1wb3BvdmVyIHRyaWdnZXI9XCJmaWx0ZXIte3sgaWQgfX1cIiB0cmlnZ2VyQWN0aW9uPVwiY2xpY2tcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmaWx0ZXIgb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wIGJvcmRlci1ib3R0b20gcC0xIHBlLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbnM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNsb3NlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy01IGZ3LW1lZGl1bVwiPkFkdmFuY2VkIEZpbHRlcjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZsZXgtZ3Jvdy0xIG92ZXJmbG93LWF1dG8gcHgtNFwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjIG9mIGNvbmZpZy5maWVsZHM7IHRyYWNrIGMua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChjLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IHR5cGU9XCJudW1iZXJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm15LTRcIiBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIC8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnY2hlY2tib3gnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94IGxhYmVsUGxhY2VtZW50PVwiZW5kXCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIj57eyBjLmxhYmVsIH19PC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnZGF0ZS1yYW5nZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtZGF0ZSBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgbmFtZT1cImZpbHRlci1mcm9tXCIgbGFiZWw9XCJ7eyBjLmxhYmVsWzBdIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXlbMF0gfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWRhdGUgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIG5hbWU9XCJmaWx0ZXItdG9cIiBsYWJlbD1cInt7IGMubGFiZWxbMV0gfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleVsxXSB9fVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnc2VsZWN0JykgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLXNlbGVjdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXktNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3sgYy5sYWJlbCB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJjLm9wdGlvbnMhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJjLm11bHRpcGxlIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdzZWFyY2hhYmxlLXNlbGVjdCcpIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1zZWFyY2hhYmxlLXNlbGVjdCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXktNFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlGdW5jXT1cImMuZ2V0T3B0aW9ucyFcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbml0aWFsSXRlbXNdPVwiYy5vcHRpb25zISB8fCBpbml0aWFsSXRlbXMuZ2V0KGMua2V5LnRvU3RyaW5nKCkpIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiYy5tdWx0aXBsZSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiYXBwbHlJbml0aWFsSXRlbXMoJGV2ZW50LCBjLmtleS50b1N0cmluZygpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtaW5wdXQgdHlwZT1cInRleHRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBjbGFzcz1cIm15LTRcIiBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIC8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgcHktMyBweC00IGJvcmRlci10b3AgZC1mbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiZmxleC1ncm93LTFcIiBjb2xvcj1cInNlY29uZGFyeVwiIChjbGljayk9XCJmb3JtLnJlc2V0KCk7XCI+UmVzZXQ8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiZmxleC1ncm93LTFcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2VhcmNoKCk7XCI+U2VhcmNoPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgIDwvaW9uLXBvcG92ZXI+ICAgIFxufVxuIl19
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaXBpbi1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUloRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFvQnJILE1BQU0sT0FBTyxlQUFlO0lBK0MxQixZQUNtQyxXQUFtQixFQUNqQyxFQUFxQixFQUNyQixXQUE4QjtRQUZoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUE3QnpCLGFBQVEsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVl6RSxTQUFJLEdBQW1CLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTWxELGlCQUFZLEdBQW9ELEVBQUUsQ0FBQztRQU1uRSxpQkFBWSxHQUFvRCxJQUFJLEdBQUcs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NkI7cUJBQzlCOzswQkFrREUsU0FBUzsyQkFBQyxhQUFhO3lHQXpDUSxFQUFFO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPUyxNQUFNO3NCQUF2QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPQyxRQUFRO3NCQUFqQyxNQUFNO2dCQU1vQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItc2VhcmNoLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQsIEZvcm1TZWxlY3RDb21wb25lbnQsIEZvcm1EYXRlQ29tcG9uZW50LCBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndXAtZmlsdGVyJyxcbiAgc3R5bGVVcmw6ICAnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgXG4gICAgY2xhc3M6ICdkLWJsb2NrIHBvc2l0aW9uLXJlbGF0aXZlJyBcbiAgfSxcbiAgaW1wb3J0czogWyAgXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgRm9ybURhdGVDb21wb25lbnQsXG4gICAgRm9ybUlucHV0Q29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybVNlbGVjdENvbXBvbmVudCxcbiAgICBGb3JtU2VhcmNoYWJsZVNlbGVjdENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGZpbHRlci5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgaWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgc3BlY2lmeWluZyBmaWx0ZXIgZmllbGRzIGFuZCBtb2RlLlxuICAgKiBAdHlwZSB7RmlsdGVyQ29uZmlnfVxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBjb25maWchOiBGaWx0ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBldmVudCBlbWl0dGVyIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKiBFbWl0cyBhIGBGaWx0ZXJTZWFyY2hFdmVudGAgb2JqZWN0IHdpdGggc2VhcmNoIG1vZGUgYW5kIGNyaXRlcmlhIGRhdGEuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8RmlsdGVyU2VhcmNoRXZlbnQ+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBvblNlYXJjaDogRXZlbnRFbWl0dGVyPEZpbHRlclNlYXJjaEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVmlld0NoaWxkIGRlY29yYXRvciB0byByZWZlcmVuY2UgdGhlIHNlYXJjaEJveCBlbGVtZW50IGluIHRoZSB0ZW1wbGF0ZS5cbiAgICogQHR5cGUge0VsZW1lbnRSZWZ9XG4gICAqL1xuICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnKSBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoQm94ITogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogRm9ybSBncm91cCBmb3IgbWFuYWdpbmcgZm9ybSBjb250cm9scy5cbiAgICogQHR5cGUge0Zvcm1Hcm91cDxhbnk+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxhbnk+ID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgLyoqXG4gICAqIEFycmF5IHRvIHN0b3JlIGFjdGl2ZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqIEB0eXBlIHt7IGxhYmVsOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXX1cbiAgICovXG4gIHB1YmxpYyBhY3RpdmVGaWx0ZXI6IHsgbGFiZWw6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIE1hcCB0byBzdG9yZSBpbml0aWFsIGl0ZW1zIGZvciBlYWNoIGZpbHRlciBrZXkuXG4gICAqIEB0eXBlIHtNYXA8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfVtdPn1cbiAgICovXG4gIHB1YmxpYyBpbml0aWFsSXRlbXM6IE1hcDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9W10+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9wb3ZlckN0cmw6IFBvcG92ZXJDb250cm9sbGVyXG4gICkgeyB9IFxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGUgaG9vayB0byBpbml0aWFsaXplIHRoZSBjb21wb25lbnQuXG4gICAqIENyZWF0ZXMgZm9ybSBjb250cm9scyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdG9yZXMgc2F2ZWQgZmlsdGVyIHN0YXRlLlxuICAgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWR7XG4gICAgY29uc3QgaXJyZXNvbHV0ZUtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBpcnJlc29sdXRlVmFsdWUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gICAgdGhpcy5jb25maWcuZmllbGRzLmZvckVhY2goKHsga2V5LCBpbml0aWFsVmFsdWUsIGluaXRpYWxJdGVtcywgaXNJcnJlc29sdXRlIH06IEZpbHRlckZpZWxkKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAga2V5LmZvckVhY2goKGs6IHN0cmluZywgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbChrLCBpbml0aWFsVmFsdWU/LmF0KGkpLCBpc0lycmVzb2x1dGUpO1xuXG4gICAgICAgICAgaWYgKGlzSXJyZXNvbHV0ZSkge1xuICAgICAgICAgICAgaXJyZXNvbHV0ZUtleXMuYWRkKGspO1xuICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkgaXJyZXNvbHV0ZVZhbHVlLnNldChrLCBpbml0aWFsVmFsdWU/LmF0KGkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGluaXRpYWxJdGVtcykge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zLnNldChrZXksIGluaXRpYWxJdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKGtleSwgaW5pdGlhbFZhbHVlLCBpc0lycmVzb2x1dGUpO1xuICAgICAgICBpZiAoaXNJcnJlc29sdXRlKSB7XG4gICAgICAgICAgaXJyZXNvbHV0ZUtleXMuYWRkKGtleSk7XG4gICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSkgaXJyZXNvbHV0ZVZhbHVlLnNldChrZXksIGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgY29uc3Qgc2F2ZWRTdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICBpZiAoIXNhdmVkU3RhdGUpIHtcbiAgICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICBcbiAgICBjb25zdCBzdGF0ZSA9IEpTT04ucGFyc2Uoc2F2ZWRTdGF0ZSk7XG4gICAgaWYgKHN0YXRlLmluaXRpYWxJdGVtcykge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHN0YXRlLmluaXRpYWxJdGVtcykpO1xuICAgIH1cbiAgXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IHN0YXRlLmZvcm1WYWx1ZXMgfHwge307XG4gICAgY29uc3QgY29tYlZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGZvcm1WYWx1ZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghaXJyZXNvbHV0ZUtleXMuaGFzKGtleSkpIGNvbWJWYWx1ZXNba2V5XSA9IGZvcm1WYWx1ZXNba2V5XTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb21iVmFsdWVzW2tleV0gPSBpcnJlc29sdXRlVmFsdWUuZ2V0KGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShjb21iVmFsdWVzKTtcbiAgICBcbiAgICB0aGlzLmFjdGl2ZUZpbHRlciA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBPYmplY3Qua2V5cyhjdXJyZW50VmFsdWVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY3VycmVudFZhbHVlc1trZXldKSB0aGlzLnByb2Nlc3NGaWx0ZXIoa2V5LCBjdXJyZW50VmFsdWVzW2tleV0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGZpbHRlciBwb3BvdmVyLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWR7IFxuICAgIHRoaXMucG9wb3ZlckN0cmwuZGlzbWlzcygpOyBcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGZpbHRlciBjcml0ZXJpYSwgbG9jYWxTdG9yYWdlLCBhbmQgdHJpZ2dlcnMgYSBzZWFyY2ggZXZlbnQgd2l0aCBudWxsIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZHtcbiAgICB0aGlzLnJlc2V0VmFsdWUoKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcblxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAkeyB0aGlzLmlkIH1gKTtcbiAgICB0aGlzLmluaXRpYWxJdGVtcy5jbGVhcigpO1xuICAgIHRoaXMub25TZWFyY2guZW1pdCh7IG1vZGU6IHRoaXMuY29uZmlnLm1vZGUsIGRhdGE6IG51bGwgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNwZWNpZmljIGZpbHRlciBjcml0ZXJpYSBiYXNlZCBvbiBpdHMgaW5kZXguXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpIC0gSW5kZXggb2YgdGhlIGZpbHRlciBjcml0ZXJpYSB0byBiZSByZW1vdmVkLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZpbHRlcihpOiBudW1iZXIpOiB2b2lke1xuICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmFjdGl2ZUZpbHRlcltpXS5rZXldLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5zcGxpY2UoaSwgMSk7XG4gICBcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XG4gIH1cbiAgLyoqXG4gICAqIEluaXRpYXRlcyBhIHNlYXJjaCBiYXNlZCBvbiB0aGUgYWN0aXZlIGZpbHRlciBjcml0ZXJpYSBhbmQgY2xlYXJzIHRoZSBzYXZlZCBmaWx0ZXIgc3RhdGUgaWYgdGhlcmUgYXJlIG5vIGFjdGl2ZSBmaWx0ZXJzLlxuICAgKi9cbiAgcHVibGljIHNlYXJjaCgpOiB2b2lke1xuICAgIHRoaXMucmVzZXRWYWx1ZSgpO1xuICAgIHRoaXMuZW1pdFZhbHVlKChrOiBzdHJpbmcsIHY6IGFueSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgdi5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB0aGlzLnByb2Nlc3NGaWx0ZXIoaywgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrLCB2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pbml0aWFsSXRlbXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGAke3RoaXMuaWR9YCk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuICBcbiAgcHJvdGVjdGVkIHByb2Nlc3NGaWx0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lke1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZVswXTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgaW5pdGlhbEl0ZW0gPSB0aGlzLmluaXRpYWxJdGVtcy5nZXQoa2V5KT8uZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKTtcbiAgICBjb25zdCBsYWJlbCA9IGluaXRpYWxJdGVtXG4gICAgICA/IGAkeyBrZXkgfTogJHsgaW5pdGlhbEl0ZW0ubGFiZWwgfWBcbiAgICAgIDogYCR7IGtleSB9OiAkeyBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpPyBmb3JtYXREYXRlKHZhbHVlLCAnZGQgTU1NIHl5eXknLCAnZW4tVVMnKSA6IHZhbHVlIH1gO1xuICBcbiAgICB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsga2V5LCB2YWx1ZSwgbGFiZWwgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBmaWx0ZXIgY3JpdGVyaWEgYmFzZWQgb24gdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYWRkKCk6IHZvaWR7XG4gICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSB0aGlzLmdldFZhbHVlKHRoaXMuc2VhcmNoQm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5maWVsZHMuZmluZEluZGV4KCh7IGtleTogayB9KSA9PiBrID09PSBrZXkpID09PSAtMSkge1xuICAgICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGkgPSB0aGlzLmFjdGl2ZUZpbHRlci5maW5kSW5kZXgoKHsga2V5OiBrIH0pID0+IGsgPT09IGtleSk7XG4gICAgaWYgKGkgPT09IC0xKSB0aGlzLmFjdGl2ZUZpbHRlci5wdXNoKHsgbGFiZWw6IGAkeyBrZXkgfTokeyB2YWx1ZSB9YCwga2V5LCB2YWx1ZSB9KTtcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLmtleSA9IGtleTtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyW2ldLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlcltpXS5sYWJlbCA9IGAkeyBrZXkgfTokeyB2YWx1ZSB9YDtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICB0aGlzLnNlYXJjaEJveC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNlaXZlIHRoZSBpbml0aWFsSXRlbXMgZm9ybSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnQgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIGluaXRpYWxJdGVtcyBtYXAgdG8gYmUgdXNlZCBhZ2FpbiBieSBzZWFyY2hhYmxlIG9yIHNlbGVjdCBjb21wb25lbnRcbiAgICogd2hlbiBpdCBpbml0aWFsaXplZCBhZ2Fpbi5cbiAgICogQHBhcmFtIHthbnl9IGl0ZW0gLSBUaGUgaW5pdGlhbCBpdGVtcyByZWNlaXZlZCBmcm9tIHRoZSBzZWFyY2FibGUgb3Igc2VsZWN0IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbml0aWFsIGl0ZW1zLlxuICAgKi9cbiAgcHVibGljIGFwcGx5SW5pdGlhbEl0ZW1zKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiB2b2lkeyBcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgWyBpdGVtIF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbEl0ZW1zID0gdGhpcy5pbml0aWFsSXRlbXMuc2V0KGtleSwgaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBhY3RpdmUgZmlsdGVyIGFuZCBjbGVhcnMgdGhlIHNlYXJjaCBib3guXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzZXRWYWx1ZSgpOiB2b2lke1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5zZWFyY2hCb3gubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgaW5wdXQgdmFsdWUgYW5kIHJldHVybnMgYSBrZXktdmFsdWUgcGFpci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gSW5wdXQgdmFsdWUgdG8gYmUgcGFyc2VkLlxuICAgKiBAcmV0dXJucyB7eyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9fSAtIEtleS12YWx1ZSBwYWlyIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogeyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9e1xuICAgIGNvbnN0IHZhbHVlczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHJldHVybiB7IGtleTogPHN0cmluZz4gdGhpcy5jb25maWcuZmllbGRzWzBdLmtleSwgdmFsdWU6IHZhbHVlc1swXSB9O1xuICAgIHJldHVybiB7IGtleTogdmFsdWVzWzBdLCB2YWx1ZTogdmFsdWVzWzFdIH07XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgdGhlIHNlYXJjaCBldmVudCBiYXNlZCBvbiB0aGUgZm9ybSB2YWx1ZXMuXG4gICAqIEludm9rZXMgYW4gZXh0cmEgYWN0aW9uIGlmIHByb3ZpZGVkIGFuZCBzYXZlcyB0aGUgc3RhdGUgdG8gbG9jYWxTdG9yYWdlLlxuICAgKiBAcGFyYW0geyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZH0gW2V4dHJhQWN0aW9uXSAtIE9wdGlvbmFsIGV4dHJhIGFjdGlvbiB0byBiZSBpbnZva2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGVtaXRWYWx1ZShleHRyYUFjdGlvbj86IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWR7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjb25zdCBmID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgZGF0YTogeyBbazogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBcbiAgICBPYmplY3Qua2V5cyhmKS5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghZltrXSkgcmV0dXJuO1xuICAgICAgXG4gICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgIGRhdGFba10gPSBmW2tdO1xuICAgICAgZXh0cmFBY3Rpb24/LihrLCBmW2tdKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VhcmNoLmVtaXQoeyBtb2RlOiB0aGlzLmNvbmZpZy5tb2RlLCBkYXRhOiBmbGFnPyBkYXRhIDogbnVsbCB9KTtcbiAgICBcbiAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmb3JtIGNvbnRyb2wgZm9yIGEgZ2l2ZW4ga2V5IGFuZCBzZXRzIGl0cyBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gS2V5IGZvciB0aGUgZm9ybSBjb250cm9sLlxuICAgKiBAcGFyYW0geyp9IFt2YWxdIC0gSW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbChrZXk6IHN0cmluZywgdmFsPzogYW55LCBpc0lycmVzb2x1dGU/OiBib29sZWFuKTogdm9pZHtcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChrZXksIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUodmFsKTtcbiAgICAgIHRoaXMucHJvY2Vzc0ZpbHRlcihrZXksIHZhbCk7XG5cbiAgICAgIGlmICghaXNJcnJlc29sdXRlKSB7XG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNhdmVTdGF0ZSgpOiB2b2lke1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYCR7IHRoaXMuaWQgfWAsIFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBhY3RpdmVGaWx0ZXI6IHRoaXMuYWN0aXZlRmlsdGVyLFxuICAgICAgICBpbml0aWFsSXRlbXM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLmluaXRpYWxJdGVtcyksXG4gICAgICAgIGZvcm1WYWx1ZXM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxpb24taWNvbiBuYW1lPVwic2VhcmNoXCIgY2xhc3M9XCJmcy00IHBvc2l0aW9uLWFic29sdXRlXCIgLz5cblxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZm9ybS1jb250cm9sIHBzLTUgcHktMCBwZS0wIGdhcC0zXCI+XG4gICAgQGlmIChhY3RpdmVGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtc2hyaW5rLTAgdGFnLWNvbnRhaW5lciBnYXAtMiB0ZXh0LW5vd3JhcCBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGFjdGl2ZUZpbHRlcjsgdHJhY2sgaXRlbS5rZXk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZy1pdGVtIHAtMSByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdXNlci1zZWxlY3Qtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY2xhc3M9XCJwZS0xIG1lLTEgY3Vyc29yLXBvaW50ZXIgdGV4dC1wcmltYXJ5XCIgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihpKTtcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxpbnB1dCAjc2VhcmNoQm94IHR5cGU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCIgY2xhc3M9XCJmbGV4LXNocmluay0xIGJvcmRlci0wIGZvcm0tY29udHJvbCBwcy0wIHB5LTJcIiBbY2xhc3MuYWR2XT1cImNvbmZpZy5tb2RlID09PSAnYWR2YW5jZWQnXCIgKGtleXVwLmVudGVyKT1cImFkZCgpO1wiIC8+XG48L2Rpdj5cblxuQGlmIChjb25maWcubW9kZSA9PT0gJ2FkdmFuY2VkJykge1xuICAgIDxpb24taWNvbiBuYW1lPVwiZmlsdGVyXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBmcy00IGN1cnNvci1wb2ludGVyXCIgaWQ9XCJmaWx0ZXIte3sgaWQgfX1cIiAvPlxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGZzLTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXIoKTtcIiAvPlxuICAgIFxuICAgIDxpb24tcG9wb3ZlciB0cmlnZ2VyPVwiZmlsdGVyLXt7IGlkIH19XCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmlsdGVyIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMCBib3JkZXItYm90dG9tIHAtMSBwZS00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25zPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNSBmdy1tZWRpdW1cIj5BZHZhbmNlZCBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmbGV4LWdyb3ctMSBvdmVyZmxvdy1hdXRvIHB4LTRcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBjb25maWcuZmllbGRzOyB0cmFjayBjLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoYy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1pbnB1dCB0eXBlPVwibnVtYmVyXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBsYWJlbFBsYWNlbWVudD1cImVuZFwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCI+e3sgYy5sYWJlbCB9fTwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2RhdGUtcmFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWRhdGUgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIG5hbWU9XCJmaWx0ZXItZnJvbVwiIGxhYmVsPVwie3sgYy5sYWJlbFswXSB9fVwiIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5WzBdIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1kYXRlIGNsYXNzPVwiZmxleC1ncm93LTFcIiBuYW1lPVwiZmlsdGVyLXRvXCIgbGFiZWw9XCJ7eyBjLmxhYmVsWzFdIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXlbMV0gfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3NlbGVjdCcpIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1cC1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7IGMubGFiZWwgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGMua2V5IH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYy5vcHRpb25zIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiYy5tdWx0aXBsZSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnc2VhcmNoYWJsZS1zZWxlY3QnKSB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXAtc2VhcmNoYWJsZS1zZWxlY3QgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBjLmtleSB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5RnVuY109XCJjLmdldE9wdGlvbnMhXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5pdGlhbEl0ZW1zXT1cImMub3B0aW9ucyEgfHwgaW5pdGlhbEl0ZW1zLmdldChjLmtleS50b1N0cmluZygpKSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImMubXVsdGlwbGUgfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImFwcGx5SW5pdGlhbEl0ZW1zKCRldmVudCwgYy5rZXkudG9TdHJpbmcoKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVwLWlucHV0IHR5cGU9XCJ0ZXh0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJteS00XCIgbGFiZWw9XCJ7eyBjLmxhYmVsIH19XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgYy5rZXkgfX1cIiAvPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wIHB5LTMgcHgtNCBib3JkZXItdG9wIGQtZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiZm9ybS5yZXNldCgpO1wiPlJlc2V0PC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNlYXJjaCgpO1wiPlNlYXJjaDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICA8L2lvbi1wb3BvdmVyPiAgICBcbn1cbiJdfQ==
@@ -117,6 +117,21 @@ export class AuthService {
117
117
  `
118
118
  });
119
119
  }
120
+ initOtpCode(email) {
121
+ return this.apollo.mutate({
122
+ variables: {
123
+ input: {
124
+ email,
125
+ sourcePlatform: SourcePlatform.Admin
126
+ }
127
+ },
128
+ mutation: gql `
129
+ mutation AuthMsLoginOtp($input: LoginOtpRq!) {
130
+ authMsLoginOtp(input: $input)
131
+ }
132
+ `
133
+ });
134
+ }
120
135
  createNewPassword({ newPassword, principalId, sourcePlatform, verifCode }) {
121
136
  return this.apollo.mutate({
122
137
  mutation: gql `
@@ -153,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
153
168
  providedIn: 'root'
154
169
  }]
155
170
  }], ctorParameters: () => [{ type: i1.Apollo }, { type: i2.ProfileService }] });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUEwQixHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQXNGLGNBQWMsRUFBRSxlQUFlLEVBQVMsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU94SyxNQUFNLE9BQU8sV0FBVzthQVFSLGNBQVMsR0FBVyxFQUFFLEFBQWIsQ0FBYzthQUN2QixpQkFBWSxHQUFXLEVBQUUsQUFBYixDQUFjO0lBU3hDLFlBQ3FCLE1BQWMsRUFDZCxjQUE4QjtRQUQ5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQy9DLENBQUM7SUFVRSxLQUFLLENBQUMsS0FBa0U7UUFDN0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBaUM7WUFDeEQsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFFBQVEsRUFBRSxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUNaO1NBQ0YsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDZixJQUFJLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUVyRixJQUFJLENBQUMsSUFB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QUssRUFBRTtvQkFDTCxXQUFXO29CQUNYLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxTQUFTO2lCQUNWO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBUU0sY0FBYyxDQUFDLEtBQW1EO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDeEIsUUFBUSxFQUFFLEdBQUcsQ0FBQTs7OztPQUlaO1lBQ0QsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBaE5VLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcG9sbG8sIE11dGF0aW9uUmVzdWx0LCBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBGZXRjaFBvbGljeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgQXBwTG9naW5TdWJqZWN0LCBDaGFuZ2VQYXNzUnEsIExvZ2luUmVzcG9uc2UsIE11dGF0aW9uQXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuQXJncywgU291cmNlUGxhdGZvcm0sIFN1Z2dlc3RlZEFjdGlvbiwgVG9rZW4gfSBmcm9tICcuLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4uL3Byb2ZpbGUvcHJvZmlsZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBCb3RoIGBhdXRoVG9rZW5gIGFuZCBgcmVmcmVzaFRva2VuYCBhcmUgcHVibGljIHN0YXRpYyB2YXJpYWJsZSB0byBzdG9yZSB0aGUgYXV0aCB0b2tlbiBhbmQgcmVmcmVzaCB0b2tlbiBvYnRhaW5lZCBmb3JtIHRoZSBsb2dpbiBBUEkuXG4gICAqIFRoZXkgd2lsbCBiZSBzZXQgYXMgaGVhZGVyIHBhcmFtIGluc2lkZSBBUEkgY2FsbHMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGF1dGhUb2tlbjogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVmcmVzaFRva2VuOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQSBwdWJsaWMgdmFyaWFibGUgdG8gc3RvcmUgdGhlIGxvZ2luZWQgdXNlciBpbmZvcm1hdGlvbi5cbiAgICogQHR5cGUge1VzZXJ9IEFuIGludGVyZmFjZSBjb250YWluIHVzZXIgaW5mb3JtYXRpb24uXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcHVibGljIHVzZXI/OiBVc2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcG9sbG86IEFwb2xsbyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciB0byBnZXQgdGhlIHNlc3Npb24gZm9yIGFwcGxldCBvciBwbGF0Zm9ybS5cbiAgICogV2hlbiBzdWNjZXNzZnVsIGl0IHdpbGwgc2V0IHRoZSB1c2VyIGluZm9ybWF0aW9uIHRvIHRoZSBgdXNlcmAgdmFyaWFibGUsIGBhdXRoVG9rZW5gIGFuZCBgcmVmcmVzaFRva2VuYC5cbiAgICogSXQgd2lsbCBzZXQgdGhlIGBhdXRoVG9rZW5gLCBgcmVmcmVzaFRva2VuYCwgYHVzZXJHdWlkYCBhbmQgYHJvbGVzYCB0byB0aGUgbG9jYWxTdG9yYWdlIGFsc28gZm9yIEFQSSBjYWxscy5cbiAgICogQHBhcmFtIHt7IGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIHNvdXJjZVBsYXRmb3JtOiBzdHJpbmcgfX0gaW5wdXQgLSBDb250YWluIGBlbWFpbGAgd2hpY2ggaXMgcmVnaXN0ZXJlZCB1c2VyIGVtYWlsLCBgcGFzc3dvcmRgIHdoaWNoIGlzIHJlZ2lzdGVyZWQgdXNlciBwYXNzd29yZFxuICAgKiBhbmQgYHNvdXJjZVBsYXRmb3JtYCBpdCdzIHZhbHVlIGNhbiBiZSBgQURNSU5gIHRvIGdldCB0aGUgYXBwbGV0IHNlc3Npb24gb3IgYENQX0NPTU1FUkNFYCB0byBnZXQgdGhlIHBsYXRmb3JtIHNlc3Npb24uXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zTG9naW46IExvZ2luUmVzcG9uc2UgfT4+fSBDb250YWluIGxvZ2luZWQgdXNlciBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHB1YmxpYyBsb2dpbihpbnB1dDogeyBlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzb3VyY2VQbGF0Zm9ybTogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zTG9naW46IExvZ2luUmVzcG9uc2UgfT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGU8eyBhdXRoTXNMb2dpbjogTG9naW5SZXNwb25zZSB9Pih7XG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQgfSxcbiAgICAgIG11dGF0aW9uOiBncWxgXG4gICAgICAgIG11dGF0aW9uIExvZ2luKCRpbnB1dDogTG9naW5ScSEpIHtcbiAgICAgICAgICBhdXRoTXNMb2dpbihpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBhY2Nlc3NUb2tlblxuICAgICAgICAgICAgcmVmcmVzaFRva2VuXG4gICAgICAgICAgICBzdWdnZXN0ZWRBY3Rpb25cbiAgICAgICAgICAgIHVzZXIge1xuICAgICAgICAgICAgICBiaXJ0aGRheVxuICAgICAgICAgICAgICBjYXRlZ29yeVxuICAgICAgICAgICAgICBlbWFpbFxuICAgICAgICAgICAgICBnZW5kZXJcbiAgICAgICAgICAgICAgZ3VpZFxuICAgICAgICAgICAgICBtb2JpbGVOdW1iZXJcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgICAgZGVwYXJ0bWVudHMge1xuICAgICAgICAgICAgICAgIGRlcGFydG1lbnQge1xuICAgICAgICAgICAgICAgICAgaGllcmFyY2h5Q29kZVxuICAgICAgICAgICAgICAgICAgaGllcmFyY2h5UGF0aFxuICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgZ3VpZFxuICAgICAgICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlzTGVhZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb2xlcyB7XG4gICAgICAgICAgICAgIGd1aWRcbiAgICAgICAgICAgICAgY29kZVxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgIGlzSW50ZXJuYWxcbiAgICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBgXG4gICAgfSkucGlwZShcbiAgICAgIHRhcCgoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgaWYgKGRhdGE/LmF1dGhNc0xvZ2luKSB7XG4gICAgICAgICAgY29uc3QgeyBhY2Nlc3NUb2tlbiwgdXNlciwgcmVmcmVzaFRva2VuLCBzdWdnZXN0ZWRBY3Rpb24sIHJvbGVzIH0gPSBkYXRhLmF1dGhNc0xvZ2luO1xuXG4gICAgICAgICAgdGhpcy51c2VyID0gdXNlciBhcyBVc2VyO1xuICAgICAgICAgIHRoaXMudXNlci5yb2xlcyA9IHJvbGVzIGFzIGFueTtcbiAgICAgICAgICB0aGlzLnVzZXIhLnBob3RvID0gJy9hc3NldHMvaW1ncy9wcm9maWxlLnN2Zyc7XG4gICAgICAgICAgQXV0aFNlcnZpY2UuYXV0aFRva2VuID0gYWNjZXNzVG9rZW4gPz8gJyc7XG4gICAgICAgICAgQXV0aFNlcnZpY2UucmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2VuID8/ICcnO1xuXG4gICAgICAgICAgaWYgKHN1Z2dlc3RlZEFjdGlvbiAhPT0gU3VnZ2VzdGVkQWN0aW9uLkNoYW5nZVBhc3N3b3JkICkgeyBcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhdXRoVG9rZW4nLCBBdXRoU2VydmljZS5hdXRoVG9rZW4pOyBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlckd1aWQnLCB0aGlzLnVzZXIhLmd1aWQpO1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyb2xlcycsIEpTT04uc3RyaW5naWZ5KHJvbGVzKSk7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlZnJlc2hUb2tlbicsIEF1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSBgcmVmcmVzaFRva2VuSW50ZXJjZXB0b3JgLCB0byBnZXQgdGhlIG5ldyB0b2tlbiBzaG9ydGx5IGJlZm9yZSB0aGUgYXV0aCB0b2tlbiBpcyBleHBpcmVkLlxuICAgKiBAcGFyYW0ge011dGF0aW9uQXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuQXJnc30gdmFyaWFibGVzIC0gQ29udGFpbiBgcmVmcmVzaFRva2VuYCBhdHRyaWJ1dGUgd2hpY2ggaXMgdGhlIGN1cnJlbnQgcmVmcmVzaCB0b2tlbi5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8eyBhdXRoTXNSZWZyZXNoQWNjZXNzVG9rZW46IFRva2VuIH0+Pn0gQ29udGFpbiBuZXcgYGF1dGhUb2tlbmAgYW5kIGByZWZyZXNoVG9rZW5gLlxuICAgKi9cbiAgcHVibGljIHJlZnJlc2hUb2tlbih2YXJpYWJsZXM6IE11dGF0aW9uQXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuQXJncyk6IE9ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8eyBhdXRoTXNSZWZyZXNoQWNjZXNzVG9rZW46IFRva2VuIH0+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ubXV0YXRlKHtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdvcGVyYXRpb24tdHlwZSc6ICdNdXRhdGlvbicsXG4gICAgICAgICAgJ29wZXJhdGlvbi1uYW1lJzogJ1JlZnJlc2hUb2tlbidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIG11dGF0aW9uOiBncWxgXG4gICAgICAgIG11dGF0aW9uIFJlZnJlc2hUb2tlbigkcmVmcmVzaFRva2VuOiBTdHJpbmchKSB7XG4gICAgICAgICAgYXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuKHJlZnJlc2hUb2tlbjogJHJlZnJlc2hUb2tlbikge1xuICAgICAgICAgICAgYWNjZXNzVG9rZW5cbiAgICAgICAgICAgIHJlZnJlc2hUb2tlblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgYFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIHNldCB0aGUgdXNlciBpbmZvcm1hdGlvbiB0byB0aGUgYHVzZXJgIHZhcmlhYmxlIHdoZW4gdGhlIHVzZXIgcmVmcmVzaCB0aGUgcGFnZS5cbiAgICogQmVjYXVzZSBvZiB0aGUgdXNlciBpbmZvcm1hdGlvbiBvbmx5IHN0b3JlZCBpbiB0aGUgdmFyaWFibGUgc28gaXQgd2lsbCBnb25lIHdoaWxlIHRoZSBwYWdlIHJlZnJlc2hlZCBhbmQgbmVlZCB0byByZXNldCBhZ2Fpbi5cbiAgICogQHBhcmFtIHtGZXRjaFBvbGljeSB8IHVuZGVmaW5lZH0gZmV0Y2hQb2xpY3kgLSBTcGVjaWZpZXMgaG93IEFwb2xsbyBDbGllbnQgc2hvdWxkIGhhbmRsZSBkYXRhIHJldHJpZXZhbCxcbiAgICogZGV0ZXJtaW5pbmcgd2hldGhlciBpdCBzaG91bGQgbWFrZSBhIG5ldHdvcmsgcmVxdWVzdCB0byBmZXRjaCBmcmVzaCBkYXRhIGZyb20gdGhlIHNlcnZlciBvciB1c2UgZGF0YSBmcm9tIHRoZSBsb2NhbCBjYWNoZS5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8QXBwTG9naW5TdWJqZWN0IHwgbnVsbD59XG4gICAqL1xuICBwdWJsaWMgZ2V0UHJvZmlsZShmZXRjaFBvbGljeT86IEZldGNoUG9saWN5KTogT2JzZXJ2YWJsZTxBcHBMb2dpblN1YmplY3QgfCBudWxsPntcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlU2VydmljZS5nZXRNeVByb2ZpbGUoZmV0Y2hQb2xpY3kpLnBpcGUoXG4gICAgICB0YXAoKHVzZXI6IEFwcExvZ2luU3ViamVjdCB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKCF1c2VyKSByZXR1cm47XG4gICAgICAgIHRoaXMudXNlciA9IHsgLi4udXNlciwgcGhvdG86ICcvYXNzZXRzL2ltZ3MvcHJvZmlsZS5zdmcnIH0gYXMgVXNlcjtcblxuICAgICAgICB1c2VyLmFwcExvZ2luRXh0Py5mb3JFYWNoKCh7IHBhcmFtQ29kZSwgZmlsZTogeyBwdWJsaWNVcmwgfX06IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChwYXJhbUNvZGUgPT09ICdVU0VSX1BST0ZJTEVfUEhPVE8nKSB0aGlzLnVzZXIhLnBob3RvID0gcHVibGljVXJsO1xuICAgICAgICB9KTtcblxuICAgICAgICB1c2VyLmFwcExvZ2luUHJpbmNpcGFsPy5mb3JFYWNoKCh7IHByaW5jaXBhbElkLCBwcmluY2lwYWxUeXBlIH06IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChwcmluY2lwYWxUeXBlID09PSAnRU1BSUxfVVNFUk5BTUUnKSB0aGlzLnVzZXIhLmVtYWlsID0gcHJpbmNpcGFsSWQ7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIGdldCB0aGUgb3RwIC8gdmVyaWZpY2F0aW9uIGNvZGUgZm9yIHJlc2V0IHBhc3N3b3JkIHB1cnBvc2UuXG4gICAqIE5vIG5lZWQgYXV0aG9yaXphdGlvbiBoZWFkZXIgdG8gY2FsbCB0aGlzIEFQSS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVtYWlsIC0gQ29udGFpbiByZWdpc3RlcmVkIHVzZXIgZW1haWwuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PGFueT4+fSBDb250YWluIG1lc3NhZ2Ugc3RhdGluZyB0aGF0IHZlcmlmaWNhdGlvbiBjb2RlIGhhcyBiZWVuIHNlbnQgdG8gdGhlIGVtYWlsLlxuICAgKi9cbiAgcHVibGljIGluaXRGb3Jnb3RQYXNzd29yZChlbWFpbDogc3RyaW5nKTogT2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDxhbnk+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ubXV0YXRlKHtcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgIHNvdXJjZVBsYXRmb3JtOiBTb3VyY2VQbGF0Zm9ybS5BZG1pblxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbXV0YXRpb246ICBncWxgXG4gICAgICAgIG11dGF0aW9uIEluaXRGb3Jnb3RQYXNzd29yZCgkaW5wdXQ6IEZvcmdvdFBhc3NPdHBScSEpIHtcbiAgICAgICAgICBhdXRoTXNGb3Jnb3RQYXNzd29yZE90cChpbnB1dDogJGlucHV0KVxuICAgICAgICB9XG4gICAgICBgXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQSBtZXRob2QgdG8gZ2VuZXJhdGUgbmV3IHBhc3N3b3JkIHdoZW4gdGhlIHVzZXIgZm9yZ2V0cyB0aGUgcGFzc3dvcmQuXG4gICAqIE5vIG5lZWQgYXV0aG9yaXphdGlvbiBoZWFkZXIgZm9yIHRoaXMgQVBJLlxuICAgKiBAcGFyYW0ge3sgY29uZmlybTogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCB2ZXJpZkNvZGU6IHN0cmluZywgc291cmNlUGxhdGZvcm06IHN0cmluZyB9fSAtIENvbnRhaW4gOlxuICAgKiBuZXdQYXNzd29yZCAtIHRoZSBuZXcgcGFzc3dvcmQuXG4gICAqIGNvbmZpcm0gLSB0aGUgZXhhY3RseSBzYW1lIHdpdGggdGhlIG5ldyBwYXNzd29yZC5cbiAgICogcHJpbmNpcGFsSWQgLSByZWdpc3RlcmVkIGVtYWlsIG9yIHBob25lIG51bWJlciBhdHRhY2hlZCB0byB1c2VyLlxuICAgKiB2ZXJpZkNvZGUgLSBvdHAgLyB2ZXJpZmljYXRpb24gY29kZSB0aGF0IGhhcyBiZWVuIHNlbnQgdG8gZW1haWwuXG4gICAqIHNvdXJjZVBsYXRmb3JtIC0gYEFETUlOYCBmb3IgYXBwbGV0IG9yIGBDUF9DT01NRVJDRWAgZm9yIHBsYXRmb3JtLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDxhbnk+Pn0gQ29udGFpbiBtZXNzYWdlIHN0YXRpbmcgdGhhdCB1c2VyIHN1Y2Nlc3NmdWxseSAvIGZhaWxlZCB0byByZXNldCB0aGUgcGFzc3dvcmQuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlTmV3UGFzc3dvcmQoeyBuZXdQYXNzd29yZCwgcHJpbmNpcGFsSWQsIHNvdXJjZVBsYXRmb3JtLCB2ZXJpZkNvZGUgfTogeyBjb25maXJtOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcsIHByaW5jaXBhbElkOiBzdHJpbmcsIHZlcmlmQ29kZTogc3RyaW5nLCBzb3VyY2VQbGF0Zm9ybTogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PGFueT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb24gOiBncWxgXG4gICAgICAgIG11dGF0aW9uIFN1Ym1pdEZvcmdvdFBhc3N3b3JkKCRpbnB1dDogRm9yZ290UGFzc1JxISkge1xuICAgICAgICAgIGF1dGhNc0ZvcmdvdFBhc3N3b3JkKGlucHV0OiAkaW5wdXQpXG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBuZXdQYXNzd29yZCxcbiAgICAgICAgICBwcmluY2lwYWxJZCxcbiAgICAgICAgICBzb3VyY2VQbGF0Zm9ybSxcbiAgICAgICAgICB2ZXJpZkNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIHVwZGF0ZSB1c2VyJ3MgcGFzc3dvcmQuXG4gICAqIE5lZWQgYXV0aG9yaXphdGlvbiBoZWFkZXIgZm9yIHRoaXMgQVBJLlxuICAgKiBAcGFyYW0ge3sgb2xkUGFzc3dvcmQ6IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZyB9fSBpbnB1dCAtIENvbnRhaW4gb2xkUGFzc3dvcmQgd2hpY2ggaXMgb2xkIC8gY3VycmVudCBwYXNzd29yZCBhbmQgbmV3UGFzc3dvcmQgd2hpY2ggaXMgdGhlIG5ldyBwYXNzd29yZC5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8eyBhdXRoTXNDaGFuZ2VQYXNzd29yZDogQ2hhbmdlUGFzc1JxIH0+Pn0gQ29udGFpbiBtZXNzYWdlIHN0YXRpbmcgdGhlIHBhc3N3b3JkIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVBhc3N3b3JkKGlucHV0OiB7IG9sZFBhc3N3b3JkOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8eyBhdXRoTXNDaGFuZ2VQYXNzd29yZDogQ2hhbmdlUGFzc1JxIH0+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uOiBncWxgXG4gICAgICAgIG11dGF0aW9uIENoYW5nZVBhc3N3b3JkKCRpbnB1dDogQ2hhbmdlUGFzc1JxISkge1xuICAgICAgICAgIGF1dGhNc0NoYW5nZVBhc3N3b3JkKGlucHV0OiAkaW5wdXQpXG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUEwQixHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQStGLGNBQWMsRUFBRSxlQUFlLEVBQVMsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU9qTCxNQUFNLE9BQU8sV0FBVzthQVFSLGNBQVMsR0FBVyxFQUFFLEFBQWIsQ0FBYzthQUN2QixpQkFBWSxHQUFXLEVBQUUsQUFBYixDQUFjO0lBU3hDLFlBQ3FCLE1BQWMsRUFDZCxjQUE4QjtRQUQ5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQy9DLENBQUM7SUFVRSxLQUFLLENBQUMsS0FBYztRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFpQztZQUN4RCxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUU7WUFDcEIsUUFBUSxFQUFFLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQ1o7U0FDRixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNmLElBQUksSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBRXJGLElBQUksQ0FBQyxJQUFJ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R0FBRyxDQUFBOzs7O09BSVo7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBYU0saUJBQWlCLENBQUMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQTRHO1FBQ3hMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDeEIsUUFBUSxFQUFHLEdBQUcsQ0FBQTs7OztPQUliO1lBQ0QsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxXQUFXO29CQUNYLFdBQVc7b0JBQ1gsY0FBYztvQkFDZCxTQUFTO2lCQUNWO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBUU0sY0FBYyxDQUFDLEtBQW1EO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDeEIsUUFBUSxFQUFFLEdBQUcsQ0FBQTs7OztPQUlaO1lBQ0QsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBdE9VLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcG9sbG8sIE11dGF0aW9uUmVzdWx0LCBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBGZXRjaFBvbGljeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgQXBwTG9naW5TdWJqZWN0LCBDaGFuZ2VQYXNzUnEsIExvZ2luUmVzcG9uc2UsIExvZ2luUnEsIE11dGF0aW9uQXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuQXJncywgU291cmNlUGxhdGZvcm0sIFN1Z2dlc3RlZEFjdGlvbiwgVG9rZW4gfSBmcm9tICcuLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4uL3Byb2ZpbGUvcHJvZmlsZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBCb3RoIGBhdXRoVG9rZW5gIGFuZCBgcmVmcmVzaFRva2VuYCBhcmUgcHVibGljIHN0YXRpYyB2YXJpYWJsZSB0byBzdG9yZSB0aGUgYXV0aCB0b2tlbiBhbmQgcmVmcmVzaCB0b2tlbiBvYnRhaW5lZCBmb3JtIHRoZSBsb2dpbiBBUEkuXG4gICAqIFRoZXkgd2lsbCBiZSBzZXQgYXMgaGVhZGVyIHBhcmFtIGluc2lkZSBBUEkgY2FsbHMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGF1dGhUb2tlbjogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVmcmVzaFRva2VuOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQSBwdWJsaWMgdmFyaWFibGUgdG8gc3RvcmUgdGhlIGxvZ2luZWQgdXNlciBpbmZvcm1hdGlvbi5cbiAgICogQHR5cGUge1VzZXJ9IEFuIGludGVyZmFjZSBjb250YWluIHVzZXIgaW5mb3JtYXRpb24uXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcHVibGljIHVzZXI/OiBVc2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcG9sbG86IEFwb2xsbyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciB0byBnZXQgdGhlIHNlc3Npb24gZm9yIGFwcGxldCBvciBwbGF0Zm9ybS5cbiAgICogV2hlbiBzdWNjZXNzZnVsIGl0IHdpbGwgc2V0IHRoZSB1c2VyIGluZm9ybWF0aW9uIHRvIHRoZSBgdXNlcmAgdmFyaWFibGUsIGBhdXRoVG9rZW5gIGFuZCBgcmVmcmVzaFRva2VuYC5cbiAgICogSXQgd2lsbCBzZXQgdGhlIGBhdXRoVG9rZW5gLCBgcmVmcmVzaFRva2VuYCwgYHVzZXJHdWlkYCBhbmQgYHJvbGVzYCB0byB0aGUgbG9jYWxTdG9yYWdlIGFsc28gZm9yIEFQSSBjYWxscy5cbiAgICogQHBhcmFtIHt7IGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIHNvdXJjZVBsYXRmb3JtOiBzdHJpbmcgfX0gaW5wdXQgLSBDb250YWluIGBlbWFpbGAgd2hpY2ggaXMgcmVnaXN0ZXJlZCB1c2VyIGVtYWlsLCBgcGFzc3dvcmRgIHdoaWNoIGlzIHJlZ2lzdGVyZWQgdXNlciBwYXNzd29yZFxuICAgKiBhbmQgYHNvdXJjZVBsYXRmb3JtYCBpdCdzIHZhbHVlIGNhbiBiZSBgQURNSU5gIHRvIGdldCB0aGUgYXBwbGV0IHNlc3Npb24gb3IgYENQX0NPTU1FUkNFYCB0byBnZXQgdGhlIHBsYXRmb3JtIHNlc3Npb24uXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zTG9naW46IExvZ2luUmVzcG9uc2UgfT4+fSBDb250YWluIGxvZ2luZWQgdXNlciBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHB1YmxpYyBsb2dpbihpbnB1dDogTG9naW5ScSk6IE9ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8eyBhdXRoTXNMb2dpbjogTG9naW5SZXNwb25zZSB9Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZTx7IGF1dGhNc0xvZ2luOiBMb2dpblJlc3BvbnNlIH0+KHtcbiAgICAgIHZhcmlhYmxlczogeyBpbnB1dCB9LFxuICAgICAgbXV0YXRpb246IGdxbGBcbiAgICAgICAgbXV0YXRpb24gTG9naW4oJGlucHV0OiBMb2dpblJxISkge1xuICAgICAgICAgIGF1dGhNc0xvZ2luKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuXG4gICAgICAgICAgICByZWZyZXNoVG9rZW5cbiAgICAgICAgICAgIHN1Z2dlc3RlZEFjdGlvblxuICAgICAgICAgICAgdXNlciB7XG4gICAgICAgICAgICAgIGJpcnRoZGF5XG4gICAgICAgICAgICAgIGNhdGVnb3J5XG4gICAgICAgICAgICAgIGVtYWlsXG4gICAgICAgICAgICAgIGdlbmRlclxuICAgICAgICAgICAgICBndWlkXG4gICAgICAgICAgICAgIG1vYmlsZU51bWJlclxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICBkZXBhcnRtZW50cyB7XG4gICAgICAgICAgICAgICAgZGVwYXJ0bWVudCB7XG4gICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDb2RlXG4gICAgICAgICAgICAgICAgICBoaWVyYXJjaHlQYXRoXG4gICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICBndWlkXG4gICAgICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXNMZWFkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvbGVzIHtcbiAgICAgICAgICAgICAgZ3VpZFxuICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgaXNJbnRlcm5hbFxuICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KS5waXBlKFxuICAgICAgdGFwKCh7IGRhdGEgfSkgPT4ge1xuICAgICAgICBpZiAoZGF0YT8uYXV0aE1zTG9naW4pIHtcbiAgICAgICAgICBjb25zdCB7IGFjY2Vzc1Rva2VuLCB1c2VyLCByZWZyZXNoVG9rZW4sIHN1Z2dlc3RlZEFjdGlvbiwgcm9sZXMgfSA9IGRhdGEuYXV0aE1zTG9naW47XG5cbiAgICAgICAgICB0aGlzLnVzZXIgPSB1c2VyIGFzIFVzZXI7XG4gICAgICAgICAgdGhpcy51c2VyLnJvbGVzID0gcm9sZXMgYXMgYW55O1xuICAgICAgICAgIHRoaXMudXNlciEucGhvdG8gPSAnL2Fzc2V0cy9pbWdzL3Byb2ZpbGUuc3ZnJztcbiAgICAgICAgICBBdXRoU2VydmljZS5hdXRoVG9rZW4gPSBhY2Nlc3NUb2tlbiA/PyAnJztcbiAgICAgICAgICBBdXRoU2VydmljZS5yZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW4gPz8gJyc7XG5cbiAgICAgICAgICBpZiAoc3VnZ2VzdGVkQWN0aW9uICE9PSBTdWdnZXN0ZWRBY3Rpb24uQ2hhbmdlUGFzc3dvcmQgKSB7IFxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2F1dGhUb2tlbicsIEF1dGhTZXJ2aWNlLmF1dGhUb2tlbik7IFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VyR3VpZCcsIHRoaXMudXNlciEuZ3VpZCk7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JvbGVzJywgSlNPTi5zdHJpbmdpZnkocm9sZXMpKTtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncmVmcmVzaFRva2VuJywgQXV0aFNlcnZpY2UucmVmcmVzaFRva2VuKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGByZWZyZXNoVG9rZW5JbnRlcmNlcHRvcmAsIHRvIGdldCB0aGUgbmV3IHRva2VuIHNob3J0bHkgYmVmb3JlIHRoZSBhdXRoIHRva2VuIGlzIGV4cGlyZWQuXG4gICAqIEBwYXJhbSB7TXV0YXRpb25BdXRoTXNSZWZyZXNoQWNjZXNzVG9rZW5BcmdzfSB2YXJpYWJsZXMgLSBDb250YWluIGByZWZyZXNoVG9rZW5gIGF0dHJpYnV0ZSB3aGljaCBpcyB0aGUgY3VycmVudCByZWZyZXNoIHRva2VuLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDx7IGF1dGhNc1JlZnJlc2hBY2Nlc3NUb2tlbjogVG9rZW4gfT4+fSBDb250YWluIG5ldyBgYXV0aFRva2VuYCBhbmQgYHJlZnJlc2hUb2tlbmAuXG4gICAqL1xuICBwdWJsaWMgcmVmcmVzaFRva2VuKHZhcmlhYmxlczogTXV0YXRpb25BdXRoTXNSZWZyZXNoQWNjZXNzVG9rZW5BcmdzKTogT2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDx7IGF1dGhNc1JlZnJlc2hBY2Nlc3NUb2tlbjogVG9rZW4gfT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGUoe1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ29wZXJhdGlvbi10eXBlJzogJ011dGF0aW9uJyxcbiAgICAgICAgICAnb3BlcmF0aW9uLW5hbWUnOiAnUmVmcmVzaFRva2VuJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgbXV0YXRpb246IGdxbGBcbiAgICAgICAgbXV0YXRpb24gUmVmcmVzaFRva2VuKCRyZWZyZXNoVG9rZW46IFN0cmluZyEpIHtcbiAgICAgICAgICBhdXRoTXNSZWZyZXNoQWNjZXNzVG9rZW4ocmVmcmVzaFRva2VuOiAkcmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICBhY2Nlc3NUb2tlblxuICAgICAgICAgICAgcmVmcmVzaFRva2VuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBgXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQSBtZXRob2QgdG8gc2V0IHRoZSB1c2VyIGluZm9ybWF0aW9uIHRvIHRoZSBgdXNlcmAgdmFyaWFibGUgd2hlbiB0aGUgdXNlciByZWZyZXNoIHRoZSBwYWdlLlxuICAgKiBCZWNhdXNlIG9mIHRoZSB1c2VyIGluZm9ybWF0aW9uIG9ubHkgc3RvcmVkIGluIHRoZSB2YXJpYWJsZSBzbyBpdCB3aWxsIGdvbmUgd2hpbGUgdGhlIHBhZ2UgcmVmcmVzaGVkIGFuZCBuZWVkIHRvIHJlc2V0IGFnYWluLlxuICAgKiBAcGFyYW0ge0ZldGNoUG9saWN5IHwgdW5kZWZpbmVkfSBmZXRjaFBvbGljeSAtIFNwZWNpZmllcyBob3cgQXBvbGxvIENsaWVudCBzaG91bGQgaGFuZGxlIGRhdGEgcmV0cmlldmFsLFxuICAgKiBkZXRlcm1pbmluZyB3aGV0aGVyIGl0IHNob3VsZCBtYWtlIGEgbmV0d29yayByZXF1ZXN0IHRvIGZldGNoIGZyZXNoIGRhdGEgZnJvbSB0aGUgc2VydmVyIG9yIHVzZSBkYXRhIGZyb20gdGhlIGxvY2FsIGNhY2hlLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxBcHBMb2dpblN1YmplY3QgfCBudWxsPn1cbiAgICovXG4gIHB1YmxpYyBnZXRQcm9maWxlKGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kpOiBPYnNlcnZhYmxlPEFwcExvZ2luU3ViamVjdCB8IG51bGw+e1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldE15UHJvZmlsZShmZXRjaFBvbGljeSkucGlwZShcbiAgICAgIHRhcCgodXNlcjogQXBwTG9naW5TdWJqZWN0IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoIXVzZXIpIHJldHVybjtcbiAgICAgICAgdGhpcy51c2VyID0geyAuLi51c2VyLCBwaG90bzogJy9hc3NldHMvaW1ncy9wcm9maWxlLnN2ZycgfSBhcyBVc2VyO1xuXG4gICAgICAgIHVzZXIuYXBwTG9naW5FeHQ/LmZvckVhY2goKHsgcGFyYW1Db2RlLCBmaWxlOiB7IHB1YmxpY1VybCB9fTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHBhcmFtQ29kZSA9PT0gJ1VTRVJfUFJPRklMRV9QSE9UTycpIHRoaXMudXNlciEucGhvdG8gPSBwdWJsaWNVcmw7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHVzZXIuYXBwTG9naW5QcmluY2lwYWw/LmZvckVhY2goKHsgcHJpbmNpcGFsSWQsIHByaW5jaXBhbFR5cGUgfTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHByaW5jaXBhbFR5cGUgPT09ICdFTUFJTF9VU0VSTkFNRScpIHRoaXMudXNlciEuZW1haWwgPSBwcmluY2lwYWxJZDtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQSBtZXRob2QgdG8gZ2V0IHRoZSBvdHAgLyB2ZXJpZmljYXRpb24gY29kZSBmb3IgcmVzZXQgcGFzc3dvcmQgcHVycG9zZS5cbiAgICogTm8gbmVlZCBhdXRob3JpemF0aW9uIGhlYWRlciB0byBjYWxsIHRoaXMgQVBJLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW1haWwgLSBDb250YWluIHJlZ2lzdGVyZWQgdXNlciBlbWFpbC5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8YW55Pj59IENvbnRhaW4gbWVzc2FnZSBzdGF0aW5nIHRoYXQgdmVyaWZpY2F0aW9uIGNvZGUgaGFzIGJlZW4gc2VudCB0byB0aGUgZW1haWwuXG4gICAqL1xuICBwdWJsaWMgaW5pdEZvcmdvdFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PGFueT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGUoe1xuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgZW1haWwsXG4gICAgICAgICAgc291cmNlUGxhdGZvcm06IFNvdXJjZVBsYXRmb3JtLkFkbWluXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtdXRhdGlvbjogIGdxbGBcbiAgICAgICAgbXV0YXRpb24gSW5pdEZvcmdvdFBhc3N3b3JkKCRpbnB1dDogRm9yZ290UGFzc090cFJxISkge1xuICAgICAgICAgIGF1dGhNc0ZvcmdvdFBhc3N3b3JkT3RwKGlucHV0OiAkaW5wdXQpXG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1ldGhvZCB0byBnZXQgdGhlIG90cCAvIHZlcmlmaWNhdGlvbiBjb2RlIGZvciAyRkEuXG4gICAqIE5vIG5lZWQgYXV0aG9yaXphdGlvbiBoZWFkZXIgdG8gY2FsbCB0aGlzIEFQSS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVtYWlsIC0gQ29udGFpbiByZWdpc3RlcmVkIHVzZXIgZW1haWwuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PGFueT4+fSBDb250YWluIG1lc3NhZ2Ugc3RhdGluZyB0aGF0IHZlcmlmaWNhdGlvbiBjb2RlIGhhcyBiZWVuIHNlbnQgdG8gdGhlIGVtYWlsLlxuICAgKi9cbiAgcHVibGljIGluaXRPdHBDb2RlKGVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PGFueT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGUoe1xuICAgICAgdmFyaWFibGVzOntcbiAgICAgICAgaW5wdXQ6e1xuICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgIHNvdXJjZVBsYXRmb3JtOiBTb3VyY2VQbGF0Zm9ybS5BZG1pblxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbXV0YXRpb246IGdxbGBcbiAgICAgICAgbXV0YXRpb24gQXV0aE1zTG9naW5PdHAoJGlucHV0OiBMb2dpbk90cFJxISkge1xuICAgICAgICAgIGF1dGhNc0xvZ2luT3RwKGlucHV0OiAkaW5wdXQpXG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1ldGhvZCB0byBnZW5lcmF0ZSBuZXcgcGFzc3dvcmQgd2hlbiB0aGUgdXNlciBmb3JnZXRzIHRoZSBwYXNzd29yZC5cbiAgICogTm8gbmVlZCBhdXRob3JpemF0aW9uIGhlYWRlciBmb3IgdGhpcyBBUEkuXG4gICAqIEBwYXJhbSB7eyBjb25maXJtOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcsIHByaW5jaXBhbElkOiBzdHJpbmcsIHZlcmlmQ29kZTogc3RyaW5nLCBzb3VyY2VQbGF0Zm9ybTogc3RyaW5nIH19IC0gQ29udGFpbiA6XG4gICAqIG5ld1Bhc3N3b3JkIC0gdGhlIG5ldyBwYXNzd29yZC5cbiAgICogY29uZmlybSAtIHRoZSBleGFjdGx5IHNhbWUgd2l0aCB0aGUgbmV3IHBhc3N3b3JkLlxuICAgKiBwcmluY2lwYWxJZCAtIHJlZ2lzdGVyZWQgZW1haWwgb3IgcGhvbmUgbnVtYmVyIGF0dGFjaGVkIHRvIHVzZXIuXG4gICAqIHZlcmlmQ29kZSAtIG90cCAvIHZlcmlmaWNhdGlvbiBjb2RlIHRoYXQgaGFzIGJlZW4gc2VudCB0byBlbWFpbC5cbiAgICogc291cmNlUGxhdGZvcm0gLSBgQURNSU5gIGZvciBhcHBsZXQgb3IgYENQX0NPTU1FUkNFYCBmb3IgcGxhdGZvcm0uXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PGFueT4+fSBDb250YWluIG1lc3NhZ2Ugc3RhdGluZyB0aGF0IHVzZXIgc3VjY2Vzc2Z1bGx5IC8gZmFpbGVkIHRvIHJlc2V0IHRoZSBwYXNzd29yZC5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVOZXdQYXNzd29yZCh7IG5ld1Bhc3N3b3JkLCBwcmluY2lwYWxJZCwgc291cmNlUGxhdGZvcm0sIHZlcmlmQ29kZSB9OiB7IGNvbmZpcm06IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZywgdmVyaWZDb2RlOiBzdHJpbmcsIHNvdXJjZVBsYXRmb3JtOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8YW55Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbiA6IGdxbGBcbiAgICAgICAgbXV0YXRpb24gU3VibWl0Rm9yZ290UGFzc3dvcmQoJGlucHV0OiBGb3Jnb3RQYXNzUnEhKSB7XG4gICAgICAgICAgYXV0aE1zRm9yZ290UGFzc3dvcmQoaW5wdXQ6ICRpbnB1dClcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIG5ld1Bhc3N3b3JkLFxuICAgICAgICAgIHByaW5jaXBhbElkLFxuICAgICAgICAgIHNvdXJjZVBsYXRmb3JtLFxuICAgICAgICAgIHZlcmlmQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQSBtZXRob2QgdG8gdXBkYXRlIHVzZXIncyBwYXNzd29yZC5cbiAgICogTmVlZCBhdXRob3JpemF0aW9uIGhlYWRlciBmb3IgdGhpcyBBUEkuXG4gICAqIEBwYXJhbSB7eyBvbGRQYXNzd29yZDogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nIH19IGlucHV0IC0gQ29udGFpbiBvbGRQYXNzd29yZCB3aGljaCBpcyBvbGQgLyBjdXJyZW50IHBhc3N3b3JkIGFuZCBuZXdQYXNzd29yZCB3aGljaCBpcyB0aGUgbmV3IHBhc3N3b3JkLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDx7IGF1dGhNc0NoYW5nZVBhc3N3b3JkOiBDaGFuZ2VQYXNzUnEgfT4+fSBDb250YWluIG1lc3NhZ2Ugc3RhdGluZyB0aGUgcGFzc3dvcmQgdXBkYXRlZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlUGFzc3dvcmQoaW5wdXQ6IHsgb2xkUGFzc3dvcmQ6IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDx7IGF1dGhNc0NoYW5nZVBhc3N3b3JkOiBDaGFuZ2VQYXNzUnEgfT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IGdxbGBcbiAgICAgICAgbXV0YXRpb24gQ2hhbmdlUGFzc3dvcmQoJGlucHV0OiBDaGFuZ2VQYXNzUnEhKSB7XG4gICAgICAgICAgYXV0aE1zQ2hhbmdlUGFzc3dvcmQoaW5wdXQ6ICRpbnB1dClcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICAgIHZhcmlhYmxlczogeyBpbnB1dCB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==