@tilde-nlp/ngx-translate 4.0.38 → 4.0.39

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,9 +1,9 @@
1
1
  import { Inject, Injectable } from '@angular/core';
2
2
  import { SortHelper } from '@tilde-nlp/ngx-common';
3
3
  import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
4
- import { TranslationApiVersion } from '../models';
5
4
  import { TRANSLATION_API_VERSION_TOKEN } from '../../../injection-tokens';
6
5
  import { AUTO_LANGUAGE_DETECTION_KEY } from '../models/auto-language-detection-key.const';
6
+ import { TranslationApiVersion } from '../models';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@tilde-nlp/ngx-common";
9
9
  import * as i2 from "./tld-translate-config.service";
@@ -197,7 +197,7 @@ export class TldTranslateSystemManagementService {
197
197
  }
198
198
  }
199
199
  else {
200
- selectedSystem = this.createSystem('', languageId, languageId, this.sourceLanguage, this.targetLanguage, '', null, false);
200
+ selectedSystem = this.createSystem('', languageId, languageId, this.sourceLanguage, this.targetLanguage, this.apiVersion, '', null, false);
201
201
  this.targetLangList = this.createLangList(this.systems, this.sourceLanguage);
202
202
  this.targetLanguage = this.targetLanguage;
203
203
  this.sourceLanguage = this.sourceLanguage;
@@ -207,7 +207,9 @@ export class TldTranslateSystemManagementService {
207
207
  this.onActiveSystemChange(retranslate);
208
208
  return;
209
209
  }
210
- selectedSystem.detectedLanguage = this.activeSystem?.detectedLanguage;
210
+ if (this.apiVersion === TranslationApiVersion.V2) {
211
+ selectedSystem.detectedLanguage = this.activeSystem?.detectedLanguage;
212
+ }
211
213
  this.targetLangList = this.createLangList(this.systems, selectedSystem.sourceLanguage);
212
214
  this.targetLanguage = selectedSystem.targetLanguage;
213
215
  this.sourceLanguage = selectedSystem.sourceLanguage;
@@ -369,8 +371,8 @@ export class TldTranslateSystemManagementService {
369
371
  detectedLanguage: this.activeSystem.detectedLanguage === this.sourceLanguage ? this.activeSystem.detectedLanguage : null
370
372
  });
371
373
  }
372
- createSystem(domain, id, languageId, sourceLanguage, targetLanguage, vendor, detectedLanguage, includesTerminology) {
373
- return { domain, id, languageId, sourceLanguage, targetLanguage, vendor, detectedLanguage, includesTerminology };
374
+ createSystem(domain, id, languageId, sourceLanguage, targetLanguage, translationApiVersion, vendor, detectedLanguage, includesTerminology) {
375
+ return { domain, id, languageId, sourceLanguage, targetLanguage, translationApiVersion, vendor, detectedLanguage, includesTerminology };
374
376
  }
375
377
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TldTranslateSystemManagementService, deps: [{ token: i1.AlertService }, { token: i2.TldTranslateConfigService }, { token: i1.SystemService }, { token: TRANSLATION_API_VERSION_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
376
378
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TldTranslateSystemManagementService, providedIn: 'root' });
@@ -384,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
384
386
  type: Inject,
385
387
  args: [TRANSLATION_API_VERSION_TOKEN]
386
388
  }] }]; } });
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1zeXN0ZW0tbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLWNvbW1vbi9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXN5c3RlbS1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFvQyxVQUFVLEVBQStDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUsxRixNQUFNLE9BQU8sbUNBQW1DO0lBK0MzQjtJQUNBO0lBQ0E7SUFDdUM7SUFqRDFELGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUN2QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksQ0FBVTtJQUN0QixnQkFBZ0IsQ0FBVztJQUUzQiwwQkFBMEIsR0FBRyx1Q0FBdUMsQ0FBQztJQUU3RCxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO0lBRXZELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN4RCxDQUFDO0lBRUQs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SW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmVEYXRhLCBBbGVydFNlcnZpY2UsIERvbWFpbiwgU29ydEhlbHBlciwgU3lzdGVtLCBTeXN0ZW1TZXJ2aWNlLCBWZW5kb3IsIExhbmdMaXN0SXRlbSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvbkFwaVZlcnNpb24gfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi90bGQtdHJhbnNsYXRlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVFJBTlNMQVRJT05fQVBJX1ZFUlNJT05fVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIH0gZnJvbSAnLi4vbW9kZWxzL2F1dG8tbGFuZ3VhZ2UtZGV0ZWN0aW9uLWtleS5jb25zdCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSB7XHJcbiAgbm9TeXN0ZW1zRXJyb3IgPSBmYWxzZTtcclxuICBzeXN0ZW1zOiBTeXN0ZW1bXSA9IFtdO1xyXG4gIHdpZGdldEluaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgc3lzTGlzdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFN5c3RlbVtdPigxKTtcclxuICBhY3RpdmVEb21haW4hOiBEb21haW47XHJcbiAgY2FuU3dhcExhbmd1YWdlcyE6IGJvb2xlYW47XHJcblxyXG4gIGRlZmF1bHRFcnJvclRyYW5zbGF0aW9uS2V5ID0gJ1RMRF9UUkFOU0xBVEUuRVJST1JfTk9fU1lTVEVNU19MT0FERUQnO1xyXG5cclxuICBwcml2YXRlIGxvYWRlZFN5c3RlbXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U3lzdGVtW10+KCk7XHJcblxyXG4gIGdldCBhY3RpdmVWZW5kb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVTeXN0ZW0udmVuZG9yIHx8IHRoaXMuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0VmVuZG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0RG9tYWlucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmRlZmF1bHREb21haW5zIGFzIHN0cmluZ1tdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRUYXJnZXRMYW5ndWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmRlZmF1bHRUYXJnZXRMYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZlU3lzdGVtITogU3lzdGVtO1xyXG4gIHByaXZhdGUgZG9tYWluczogRG9tYWluW10gPSBbXTtcclxuICBwcml2YXRlIHZlbmRvcnM6IFZlbmRvcltdID0gW107XHJcbiAgcHJpdmF0ZSBzb3VyY2VMYW5ndWFnZSE6IHN0cmluZztcclxuICBwcml2YXRlIHRhcmdldExhbmd1YWdlITogc3RyaW5nO1xyXG4gIHByaXZhdGUgc291cmNlTGFuZ0xpc3Q6IExhbmdMaXN0SXRlbVtdID0gW107XHJcbiAgcHJpdmF0ZSB0YXJnZXRMYW5nTGlzdDogTGFuZ0xpc3RJdGVtW10gPSBbXTtcclxuXHJcbiAgLy8jcmVnaW9uIFJlY2VudCBzeXN0ZW0gdmFyaWFibGVzXHJcbiAgLy8gUG9zc2libHkgZnJvbSBjb25maWdcclxuICBnZXQgcmVjZW50U3lzdGVtc01heENvdW50KCkgeyByZXR1cm4gdGhpcy5jb25maWcuY29yZUNvbmZpZy5tYXhSZWNlbnRTeXN0ZW1Db3VudCBhcyBudW1iZXI7IH1cclxuICBwcml2YXRlIHJlY2VudFN5c3RlbXM6IFN5c3RlbVtdID0gW107XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVjZW50U3lzdGVtS2V5ID0gXCJyZWNlbnRTeXN0ZW1zXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmU6IEJlaGF2aW9yU3ViamVjdDxBY3RpdmVEYXRhPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWN0aXZlRGF0YT4oPGFueT5udWxsKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxhc3RVc2VkU3lzdGVtS2V5OiBzdHJpbmcgPSBcImxhc3RVc2VkU3lzdGVtXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydDogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFRSQU5TTEFUSU9OX0FQSV9WRVJTSU9OX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGFwaVZlcnNpb25cclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAqIFRoaXMgbWV0aG9kIGlzIGJlaW5nIGNhbGxlZCB3aGVuIGF1dG8gbGFuZ3VhZ2UgZGV0ZWN0aW9uIHdhcyBjaG9zZW4uXHJcbiAgKi9cclxuICBlbmFibGVMYW5ndWFnZURldGVjdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVk7XHJcbiAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMuc291cmNlTGFuZ3VhZ2UsIHRoaXMudGFyZ2V0TGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUaGlzIG1ldGhvZCBpcyBiZWluZyB1c2VkIHRvIHNldCBkZXRlY3RlZCBsYW5ndWFnZSB3aGVuIGFwaSByZXNwb25zZSBoYXMgaXQuXHJcbiAgKiBBbHNvLCB3aGVuIGxhbmd1YWdlIHdhcyBkZXRlY3RlZCBhbmQgd2Ugd2FudCB0byBjbGVhciBzb3VyY2UgdGV4dCwgdGhpcyBtZXRob2QgYWxzbyBpcyBiZWluZyBjYWxsZWQuXHJcbiAgKi9cclxuICBzZXREZXRlY3RlZExhbmd1YWdlKGxhbmdDb2RlOiBzdHJpbmcsIGRvbWFpbj86IHN0cmluZykge1xyXG4gICAgY29uc3QgaXNTb3VyY2VMYW5nQ29kZVNhbWVBZnRlckRldGVjdGlvbiA9IHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlID09PSB0aGlzLnNvdXJjZUxhbmd1YWdlO1xyXG4gICAgLy8gSGVyZSB3ZSBuZWVkIHRvIGNsZWFyIG91dCBkZXRlY3RlZCBsYW5ndWFnZSwgYnV0IGtlZXAgdGhlIGRldGVjdGlvbiBlbmFibGVkLlxyXG4gICAgaWYgKCFsYW5nQ29kZSAmJiBpc1NvdXJjZUxhbmdDb2RlU2FtZUFmdGVyRGV0ZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVk7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMuc291cmNlTGFuZ3VhZ2UsIHRoaXMudGFyZ2V0TGFuZ3VhZ2UsIGZhbHNlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoaXMgaXMgYmVpbmcgY2FsbGVkLCB3aGVuIGxhbmd1YWdlIGlzIGRldGVjdGVkLlxyXG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IGxhbmdDb2RlO1xyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPSBsYW5nQ29kZTtcclxuICAgIHRoaXMuYWN0aXZlU3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgPSBsYW5nQ29kZTtcclxuICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UobGFuZ0NvZGUsIHRoaXMudGFyZ2V0TGFuZ3VhZ2UsIGZhbHNlLCBkb21haW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3lzdGVtcygpOiBTeXN0ZW1bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1zO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlTGFuZ3VhZ2Uoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nLCByZXRyYW5zbGF0ZT86IGJvb2xlYW4sIGRvbWFpbj86IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3lzdGVtSWQgPSB0aGlzLmZpbmRDb3JyZWN0U3lzdGVtKHNvdXJjZSwgdGFyZ2V0LCBkb21haW4pO1xyXG4gICAgdGhpcy5jaGFuZ2VTeXN0ZW0oc3lzdGVtSWQsIHJldHJhbnNsYXRlKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVTeXN0ZW1PYmooKTogU3lzdGVtIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN5c3RlbTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVZlbmRvcnNBbmREb21haW5zKCkge1xyXG4gICAgaWYgKCF0aGlzLnNvdXJjZUxhbmd1YWdlIHx8ICF0aGlzLnRhcmdldExhbmd1YWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZlbmRvcnM6IFZlbmRvcltdID0gW107XHJcbiAgICBjb25zdCBkb21haW5zOiBEb21haW5bXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHRoaXMuc3lzdGVtcykge1xyXG4gICAgICBpZiAoIShzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IHRoaXMuc291cmNlTGFuZ3VhZ2UgJiYgc3lzdGVtLnRhcmdldExhbmd1YWdlID09PSB0aGlzLnRhcmdldExhbmd1YWdlKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRvbWFpbjogRG9tYWluID0ge1xyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICAgIHRpdGxlOiBzeXN0ZW0uZG9tYWluIGFzIHN0cmluZ1xyXG4gICAgICB9O1xyXG4gICAgICBkb21haW5zLnB1c2goZG9tYWluKTtcclxuICAgICAgY29uc3QgdmVuZG9yOiBWZW5kb3IgPSB7XHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgdGl0bGU6IHN5c3RlbS52ZW5kb3JcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF2ZW5kb3JzLmluY2x1ZGVzKHZlbmRvcikpIHtcclxuICAgICAgICB2ZW5kb3JzLnB1c2godmVuZG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGRvbWFpbi5sYW5ndWFnZUlkID09PSB0aGlzLmFjdGl2ZVN5c3RlbS5sYW5ndWFnZUlkKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEb21haW4gPSBkb21haW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRvbWFpbnMgPSBkb21haW5zO1xyXG4gICAgdGhpcy52ZW5kb3JzID0gdmVuZG9ycztcclxuICB9XHJcblxyXG5cclxuICBnZXRMYXN0VXNlZFN5c3RlbSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubGFzdFVzZWRTeXN0ZW1LZXkpIGFzIHN0cmluZztcclxuICB9XHJcblxyXG4gIGdldFVuaXF1ZUxhbmd1YWdlcyhsaXN0OiBMYW5nTGlzdEl0ZW1bXSk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghbGlzdCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aXRsZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgbGlzdC5mb3JFYWNoKChsYW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxhbmdUaXRsZSA9IGxhbmcubGFuZztcclxuICAgICAgY29uc3QgaXggPSB0aXRsZXMuaW5kZXhPZihsYW5nVGl0bGUgYXMgc3RyaW5nKTtcclxuICAgICAgaWYgKGl4ID09IC0xKSB7XHJcbiAgICAgICAgdGl0bGVzLnB1c2gobGFuZ1RpdGxlIGFzIHN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aXRsZXM7XHJcbiAgfVxyXG5cclxuICBpbml0KGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkOiBzdHJpbmcpIHsgICBcclxuICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1MaXN0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogU3lzdGVtW10pID0+IHtcclxuICAgICAgICB0aGlzLnN5c3RlbXMgPSByZXM7XHJcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZWRTeXN0ZW1zU3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc3lzdGVtRXhpc3RzKGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkLCB0aGlzLnN5c3RlbXMpICYmIGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkICE9PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpIHtcclxuICAgICAgICAgIGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkID0gdGhpcy5zeXN0ZW1zWzBdPy5sYW5ndWFnZUlkO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBzeXN0ZW0gb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlbmRvciA9IHN5c3RlbS52ZW5kb3I7XHJcbiAgICAgICAgICAgIGlmICh2ZW5kb3IgPT09IHRoaXMuZGVmYXVsdFZlbmRvcikge1xyXG4gICAgICAgICAgICAgIGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkID0gc3lzdGVtLmxhbmd1YWdlSWQ7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB7XHJcbiAgICAgICAgICB0aGlzLnRhcmdldExhbmd1YWdlID0gdGhpcy5kZWZhdWx0VGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNyZWF0ZVJlY2VudFN5c3RlbUFycmF5KCk7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VMYW5nTGlzdCA9IHRoaXMuY3JlYXRlTGFuZ0xpc3QodGhpcy5zeXN0ZW1zKTtcclxuICAgICAgICB0aGlzLmNoYW5nZVN5c3RlbShkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCk7XHJcbiAgICAgICAgdGhpcy53aWRnZXRJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zeXNMaXN0Lm5leHQodGhpcy5zeXN0ZW1zKTtcclxuICAgICAgICB0aGlzLm5vU3lzdGVtc0Vycm9yID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB7XHJcbiAgICAgICAgICB0aGlzLmVuYWJsZUxhbmd1YWdlRGV0ZWN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub1N5c3RlbXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hbGVydC5lcnJvcih0aGlzLmRlZmF1bHRFcnJvclRyYW5zbGF0aW9uS2V5LCBlcnJvcik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExvYWRlZFN5c3RlbXMoKTogT2JzZXJ2YWJsZTxTeXN0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkU3lzdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMYXN0VXNlZFN5c3RlbShzeXN0ZW1JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sYXN0VXNlZFN5c3RlbUtleSwgc3lzdGVtSWQpO1xyXG4gIH1cclxuXHJcbiAgc3dhcFN5c3RlbUxhbmd1YWdlcygpIHtcclxuICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy50YXJnZXRMYW5ndWFnZSwgdGhpcy5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTeXN0ZW0obGFuZ3VhZ2VJZDogc3RyaW5nLCByZXRyYW5zbGF0ZSA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVN5c3RlbT8ubGFuZ3VhZ2VJZCA9PT0gbGFuZ3VhZ2VJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNlbGVjdGVkU3lzdGVtITogU3lzdGVtO1xyXG5cclxuICAgIGlmICghbGFuZ3VhZ2VJZD8uaW5jbHVkZXMoQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHN5c3RlbSBvZiB0aGlzLnN5c3RlbXMpIHtcclxuICAgICAgICBpZiAoc3lzdGVtLmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpIHtcclxuICAgICAgICAgIHNlbGVjdGVkU3lzdGVtID0gc3lzdGVtO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFN5c3RlbSA9IHRoaXMuY3JlYXRlU3lzdGVtKCcnLCBsYW5ndWFnZUlkLCBsYW5ndWFnZUlkLCB0aGlzLnNvdXJjZUxhbmd1YWdlLCB0aGlzLnRhcmdldExhbmd1YWdlLCAnJywgbnVsbCwgZmFsc2UpO1xyXG4gICAgICBcclxuICAgICAgdGhpcy50YXJnZXRMYW5nTGlzdCA9IHRoaXMuY3JlYXRlTGFuZ0xpc3QodGhpcy5zeXN0ZW1zLCB0aGlzLnNvdXJjZUxhbmd1YWdlKTtcclxuICAgICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHRoaXMudGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSB0aGlzLnNvdXJjZUxhbmd1YWdlO1xyXG4gICAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHNlbGVjdGVkU3lzdGVtO1xyXG4gICAgICB0aGlzLmRvbWFpbnMgPSBbXTtcclxuICAgICAgdGhpcy52ZW5kb3JzID0gW107XHJcbiAgXHJcbiAgICAgIHRoaXMub25BY3RpdmVTeXN0ZW1DaGFuZ2UocmV0cmFuc2xhdGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0ZWRTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlO1xyXG4gIFxyXG4gICAgdGhpcy50YXJnZXRMYW5nTGlzdCA9IHRoaXMuY3JlYXRlTGFuZ0xpc3QodGhpcy5zeXN0ZW1zLCBzZWxlY3RlZFN5c3RlbS5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgICB0aGlzLnRhcmdldExhbmd1YWdlID0gc2VsZWN0ZWRTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICB0aGlzLnNvdXJjZUxhbmd1YWdlID0gc2VsZWN0ZWRTeXN0ZW0uc291cmNlTGFuZ3VhZ2U7XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHNlbGVjdGVkU3lzdGVtO1xyXG4gICAgdGhpcy5nZXRBY3RpdmVWZW5kb3JzQW5kRG9tYWlucygpO1xyXG5cclxuICAgIHRoaXMub25BY3RpdmVTeXN0ZW1DaGFuZ2UocmV0cmFuc2xhdGUpO1xyXG5cclxuICAgIHRoaXMuc2V0TGFzdFVzZWRTeXN0ZW0oc2VsZWN0ZWRTeXN0ZW0ubGFuZ3VhZ2VJZCk7XHJcbiAgfVxyXG5cclxuICBzeXN0ZW1FeGlzdHMobGFuZ3VhZ2VJZDogc3RyaW5nLCBzeXN0ZW1MaXN0OiBTeXN0ZW1bXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc3lzdGVtcyA9IHN5c3RlbUxpc3QgPz8gdGhpcy5zeXN0ZW1zO1xyXG4gICAgZm9yIChjb25zdCBzeXN0ZW0gb2Ygc3lzdGVtcykge1xyXG4gICAgICBpZiAoc3lzdGVtLmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzVGVybWlub2xvZ3lTdXBwb3J0ZWQoc3lzdGVtOiBTeXN0ZW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBzeXN0ZW0uaW5jbHVkZXNUZXJtaW5vbG9neSBhcyBib29sZWFuO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU291cmNlTGFuZ3VhZ2Uoc291cmNlTGFuZ3VhZ2VDb2RlOiBzdHJpbmcpIHtcclxuICAgIGlmIChzb3VyY2VMYW5ndWFnZUNvZGUgPT09IHRoaXMuYWN0aXZlU3lzdGVtLnRhcmdldExhbmd1YWdlKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2Uoc291cmNlTGFuZ3VhZ2VDb2RlLCB0aGlzLmFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZShzb3VyY2VMYW5ndWFnZUNvZGUsIHRoaXMuYWN0aXZlU3lzdGVtLnRhcmdldExhbmd1YWdlKTtcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGFyZ2V0TGFuZ3VhZ2UodGFyZ2V0TGFuZ3VhZ2VDb2RlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0YXJnZXRMYW5ndWFnZUNvZGUgPT09IHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlQ29kZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZSh0aGlzLmFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2VDb2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUmVjZW50U3lzdGVtQXJyYXkoKSB7XHJcbiAgICBsZXQgc3lzdGVtSWRBcnJheTogc3RyaW5nW107XHJcbiAgICBjb25zdCByZWNlbnRTeXN0ZW1BcnJheTogU3lzdGVtW10gPSBbXTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN5c3RlbUlkQXJyYXkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMucmVjZW50U3lzdGVtS2V5KSA/PyBcIltdXCIpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2gge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzeXN0ZW1JZEFycmF5LmZvckVhY2goKGxhbmd1YWdlSWQpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RpbmdTeXN0ZW0gPSB0aGlzLnN5c3RlbXMuZmluZChzeXN0ZW0gPT4gc3lzdGVtLmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpO1xyXG4gICAgICBpZiAoZXhpc3RpbmdTeXN0ZW0gJiYgIXRoaXMucmVjZW50U3lzdGVtcy5pbmNsdWRlcyhleGlzdGluZ1N5c3RlbSkpIHtcclxuICAgICAgICByZWNlbnRTeXN0ZW1BcnJheS5wdXNoKGV4aXN0aW5nU3lzdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMucmVjZW50U3lzdGVtcyA9IHJlY2VudFN5c3RlbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRUb1JlY2VudFN5c3RlbUFycmF5KHN5c3RlbTogU3lzdGVtKSB7XHJcbiAgIGlmIChzeXN0ZW0uaWQgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgcmV0dXJuO1xyXG4gICB9XHJcbiAgICBcclxuICAgIGNvbnN0IGV4aXN0aW5nU3lzdGVtID0gdGhpcy5yZWNlbnRTeXN0ZW1zLmZpbmQoZXhpc3RpbmcgPT4gZXhpc3RpbmcubGFuZ3VhZ2VJZCA9PT0gc3lzdGVtLmxhbmd1YWdlSWQpO1xyXG4gICAgLy8gaWYgc3lzdGVtIGFscmVhZHkgaW4gbGlzdCwgcHV0IGl0IHRvIGZpcnN0IHBvc2l0aW9uLiBJZiBpeCAwLCBubyBhY3Rpb24gcmVxdWlyZWQgc2luY2UgbGF0ZXN0IHN5c3RlbSBpcyBhbHJlYWR5IGZpcnN0LlxyXG4gICAgaWYgKGV4aXN0aW5nU3lzdGVtKSB7XHJcbiAgICAgIGNvbnN0IHN5c3RlbUl4SW5SZWNlbnRMaXN0ID0gdGhpcy5yZWNlbnRTeXN0ZW1zLmluZGV4T2YoZXhpc3RpbmdTeXN0ZW0pO1xyXG4gICAgICBpZiAoc3lzdGVtSXhJblJlY2VudExpc3QgPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZShzeXN0ZW1JeEluUmVjZW50TGlzdCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZSgwLCAwLCBzeXN0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gaWYgbGlzdCB0b28gbG9uZywgcmVtb3ZlIGxhc3QgKG9sZGVzdCBlbGVtZW50KVxyXG4gICAgICB3aGlsZSAodGhpcy5yZWNlbnRTeXN0ZW1zLmxlbmd0aCA+PSB0aGlzLnJlY2VudFN5c3RlbXNNYXhDb3VudCkge1xyXG4gICAgICAgIHRoaXMucmVjZW50U3lzdGVtcy5wb3AoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZSgwLCAwLCBzeXN0ZW0pO1xyXG4gICAgfVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5yZWNlbnRTeXN0ZW1LZXksIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50U3lzdGVtcy5tYXAoc3lzdGVtID0+IHN5c3RlbS5sYW5ndWFnZUlkKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5Td2FwU3lzdGVtTGFuZ3VhZ2VzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGxhbmdTd2FwQWN0aXZlID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgIGNvbnN0IHN5c3RlbSA9IGVsZW1lbnQ7XHJcbiAgICAgIGlmIChzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT0gdGhpcy50YXJnZXRMYW5ndWFnZSAmJiBzeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgPT0gdGhpcy5zb3VyY2VMYW5ndWFnZSkge1xyXG4gICAgICAgIGxhbmdTd2FwQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYW5Td2FwTGFuZ3VhZ2VzID0gbGFuZ1N3YXBBY3RpdmU7XHJcbiAgICByZXR1cm4gbGFuZ1N3YXBBY3RpdmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUxhbmdMaXN0KHN5c3RlbXM6IFN5c3RlbVtdLCBzcmNMYW5nQ29kZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgbGFuZ0xpc3RJdGVtQXJyYXk6IExhbmdMaXN0SXRlbVtdID0gW107XHJcbiAgICBzeXN0ZW1zLmZvckVhY2goKHN5c3RlbSkgPT4ge1xyXG4gICAgICBpZiAoIXNyY0xhbmdDb2RlIHx8IHNyY0xhbmdDb2RlID09PSBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgfHwgc3JjTGFuZ0NvZGUgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgICAgIGxhbmdMaXN0SXRlbUFycmF5LnB1c2goXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIGxhbmc6IHNyY0xhbmdDb2RlID8gc3lzdGVtLnRhcmdldExhbmd1YWdlIDogc3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgICAgICAgdmVuZG9yOiBzeXN0ZW0udmVuZG9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBsYW5nTGlzdEl0ZW1BcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENvcnJlY3RTeXN0ZW0oc291cmNlTGFuZ3VhZ2U6IHN0cmluZywgdGFyZ2V0TGFuZ3VhZ2U6IHN0cmluZywgZG9tYWluPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChzb3VyY2VMYW5ndWFnZSA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0TGFuZ3VhZ2UgPSB0YXJnZXRMYW5ndWFnZTtcclxuICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgPSB0YXJnZXRMYW5ndWFnZTtcclxuICAgICAgcmV0dXJuIGAke0FVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWX0tJHt0YXJnZXRMYW5ndWFnZX1gXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3lzdGVtcyA9IHRoaXMuc3lzdGVtcztcclxuXHJcbiAgICBjb25zdCBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyID0gc3lzdGVtcy5maWx0ZXIoc3lzdGVtID0+IHN5c3RlbS5zb3VyY2VMYW5ndWFnZSA9PT0gc291cmNlTGFuZ3VhZ2UgJiYgdGFyZ2V0TGFuZ3VhZ2UgPT09IHN5c3RlbS50YXJnZXRMYW5ndWFnZSk7XHJcbiAgICAvLyBJZGVhbGx5IHRoaXMgY2FzZSBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGl0IGlzIHBvc3NpYmxlLlxyXG4gICAgaWYgKHN5c3RlbXNGb3JMYW5ndWFnZVBhaXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN5c3RlbXMuZmluZChzeXN0ZW0gPT4gc3lzdGVtLnNvdXJjZUxhbmd1YWdlID09PSBzb3VyY2VMYW5ndWFnZSk/Lmxhbmd1YWdlSWQgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IgPSBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyLmZpbHRlcihzeXN0ZW0gPT4gKHN5c3RlbS52ZW5kb3IgfHwgdGhpcy5kZWZhdWx0VmVuZG9yKSA9PT0gdGhpcy5kZWZhdWx0VmVuZG9yKTtcclxuICAgIGlmIChzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvciA9IHN5c3RlbXNGb3JMYW5ndWFnZVBhaXI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiA9IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvci5maWx0ZXIoc3lzdGVtID0+IGRvbWFpbiA/IHN5c3RlbS5kb21haW4gPT09IGRvbWFpbiA6IHRoaXMuZGVmYXVsdERvbWFpbnMuaW5jbHVkZXMoc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcpKTtcclxuICAgIGlmIChzeXN0ZW1zV2l0aERlZmF1bHREb21haW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiA9IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvcjtcclxuICAgIH1cclxuICAgIFNvcnRIZWxwZXIuc29ydEJ5QXJyYXkoc3lzdGVtc1dpdGhEZWZhdWx0RG9tYWluLCB0aGlzLmRlZmF1bHREb21haW5zLCBcImRvbWFpblwiKTtcclxuXHJcblxyXG4gICAgLy8gVjIgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mbyBhYm91dCBzdGF0dXNlc1xyXG4gICAgaWYgKHRoaXMuYXBpVmVyc2lvbiA9PT0gVHJhbnNsYXRpb25BcGlWZXJzaW9uLlYxKSB7XHJcbiAgICAgIGNvbnN0IHByZWZlcnJlZFN0YXR1c2VzID0gWydydW5uaW5nJywgJ3F1ZXVpbmd0cmFuc2wnLCAnc3RhbmRieSddO1xyXG4gICAgICBTb3J0SGVscGVyLnNvcnRCeUFycmF5KHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvciwgcHJlZmVycmVkU3RhdHVzZXMsIFwic3RhdHVzXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzeXN0ZW1zV2l0aERlZmF1bHREb21haW5bMF0ubGFuZ3VhZ2VJZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25BY3RpdmVTeXN0ZW1DaGFuZ2UocmV0cmFuc2xhdGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBzeXN0ZW06IFN5c3RlbSA9IHRoaXMuYWN0aXZlU3lzdGVtO1xyXG4gICAgY29uc3QgdmVuZG9yID0gdGhpcy5hY3RpdmVTeXN0ZW0udmVuZG9yO1xyXG5cclxuICAgIGlmICh0aGlzLnNvdXJjZUxhbmd1YWdlICE9PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpIHtcclxuICAgICAgdGhpcy5hZGRUb1JlY2VudFN5c3RlbUFycmF5KHN5c3RlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3RpdmUubmV4dCh7XHJcbiAgICAgIHNvdXJjZUxhbmc6IHtcclxuICAgICAgICBsYW5nOiB0aGlzLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcsXHJcbiAgICAgICAgdmVuZG9yOiB2ZW5kb3IsXHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgIH0sXHJcbiAgICAgIHNvdXJjZUxhbmdMaXN0OiB0aGlzLnNvdXJjZUxhbmdMaXN0LFxyXG4gICAgICBzeXN0ZW1JZDogc3lzdGVtLmlkLFxyXG4gICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgdGFyZ2V0TGFuZzoge1xyXG4gICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcsXHJcbiAgICAgICAgdmVuZG9yOiB2ZW5kb3IsXHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgbGFuZzogdGhpcy50YXJnZXRMYW5ndWFnZVxyXG4gICAgICB9LFxyXG4gICAgICB0YXJnZXRMYW5nTGlzdDogdGhpcy50YXJnZXRMYW5nTGlzdCxcclxuICAgICAgdmVuZG9yczogdGhpcy52ZW5kb3JzLFxyXG4gICAgICBkb21haW5zOiB7IGFjdGl2ZTogdGhpcy5hY3RpdmVEb21haW4sIGRvbWFpbnM6IHRoaXMuZG9tYWlucyB9LFxyXG4gICAgICBzd2FwTGFuZ0FjdGl2ZTogdGhpcy5jYW5Td2FwU3lzdGVtTGFuZ3VhZ2VzKCksXHJcbiAgICAgIHN5c3RlbTogc3lzdGVtLFxyXG4gICAgICByZXRyYW5zbGF0ZTogcmV0cmFuc2xhdGUsXHJcbiAgICAgIHJlY2VudFN5c3RlbXM6IHRoaXMucmVjZW50U3lzdGVtcyxcclxuICAgICAgZGV0ZWN0ZWRMYW5ndWFnZTogdGhpcy5hY3RpdmVTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9PT0gdGhpcy5zb3VyY2VMYW5ndWFnZSA/IHRoaXMuYWN0aXZlU3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgOiBudWxsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlU3lzdGVtKGRvbWFpbjogc3RyaW5nLCBpZDogc3RyaW5nLCBsYW5ndWFnZUlkOiBzdHJpbmcsIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcsIHRhcmdldExhbmd1YWdlOiBzdHJpbmcsIHZlbmRvcjogc3RyaW5nLCBkZXRlY3RlZExhbmd1YWdlOiBzdHJpbmcsIGluY2x1ZGVzVGVybWlub2xvZ3k6IGJvb2xlYW4pOiBTeXN0ZW0ge1xyXG4gICAgcmV0dXJuIHsgZG9tYWluLCBpZCwgbGFuZ3VhZ2VJZCwgc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlLCB2ZW5kb3IsIGRldGVjdGVkTGFuZ3VhZ2UsIGluY2x1ZGVzVGVybWlub2xvZ3kgfVxyXG4gIH1cclxufVxyXG4iXX0=
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1zeXN0ZW0tbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLWNvbW1vbi9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXN5c3RlbS1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFvQyxVQUFVLEVBQStDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQUtsRCxNQUFNLE9BQU8sbUNBQW1DO0lBK0MzQjtJQUNBO0lBQ0E7SUFDdUM7SUFqRDFELGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUN2QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksQ0FBVTtJQUN0QixnQkFBZ0IsQ0FBVztJQUUzQiwwQkFBMEIsR0FBRyx1Q0FBdUMsQ0FBQztJQUU3RCxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO0lBRXZELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN4RCxDQUFDO0lBRUQs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VUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQW1ESSxNQUFNOzJCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmVEYXRhLCBBbGVydFNlcnZpY2UsIERvbWFpbiwgU29ydEhlbHBlciwgU3lzdGVtLCBTeXN0ZW1TZXJ2aWNlLCBWZW5kb3IsIExhbmdMaXN0SXRlbSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi90bGQtdHJhbnNsYXRlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVFJBTlNMQVRJT05fQVBJX1ZFUlNJT05fVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIH0gZnJvbSAnLi4vbW9kZWxzL2F1dG8tbGFuZ3VhZ2UtZGV0ZWN0aW9uLWtleS5jb25zdCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uQXBpVmVyc2lvbiB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSB7XHJcbiAgbm9TeXN0ZW1zRXJyb3IgPSBmYWxzZTtcclxuICBzeXN0ZW1zOiBTeXN0ZW1bXSA9IFtdO1xyXG4gIHdpZGdldEluaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgc3lzTGlzdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFN5c3RlbVtdPigxKTtcclxuICBhY3RpdmVEb21haW4hOiBEb21haW47XHJcbiAgY2FuU3dhcExhbmd1YWdlcyE6IGJvb2xlYW47XHJcblxyXG4gIGRlZmF1bHRFcnJvclRyYW5zbGF0aW9uS2V5ID0gJ1RMRF9UUkFOU0xBVEUuRVJST1JfTk9fU1lTVEVNU19MT0FERUQnO1xyXG5cclxuICBwcml2YXRlIGxvYWRlZFN5c3RlbXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U3lzdGVtW10+KCk7XHJcblxyXG4gIGdldCBhY3RpdmVWZW5kb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVTeXN0ZW0udmVuZG9yIHx8IHRoaXMuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0VmVuZG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0RG9tYWlucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmRlZmF1bHREb21haW5zIGFzIHN0cmluZ1tdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRUYXJnZXRMYW5ndWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmRlZmF1bHRUYXJnZXRMYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZlU3lzdGVtITogU3lzdGVtO1xyXG4gIHByaXZhdGUgZG9tYWluczogRG9tYWluW10gPSBbXTtcclxuICBwcml2YXRlIHZlbmRvcnM6IFZlbmRvcltdID0gW107XHJcbiAgcHJpdmF0ZSBzb3VyY2VMYW5ndWFnZSE6IHN0cmluZztcclxuICBwcml2YXRlIHRhcmdldExhbmd1YWdlITogc3RyaW5nO1xyXG4gIHByaXZhdGUgc291cmNlTGFuZ0xpc3Q6IExhbmdMaXN0SXRlbVtdID0gW107XHJcbiAgcHJpdmF0ZSB0YXJnZXRMYW5nTGlzdDogTGFuZ0xpc3RJdGVtW10gPSBbXTtcclxuXHJcbiAgLy8jcmVnaW9uIFJlY2VudCBzeXN0ZW0gdmFyaWFibGVzXHJcbiAgLy8gUG9zc2libHkgZnJvbSBjb25maWdcclxuICBnZXQgcmVjZW50U3lzdGVtc01heENvdW50KCkgeyByZXR1cm4gdGhpcy5jb25maWcuY29yZUNvbmZpZy5tYXhSZWNlbnRTeXN0ZW1Db3VudCBhcyBudW1iZXI7IH1cclxuICBwcml2YXRlIHJlY2VudFN5c3RlbXM6IFN5c3RlbVtdID0gW107XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVjZW50U3lzdGVtS2V5ID0gXCJyZWNlbnRTeXN0ZW1zXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmU6IEJlaGF2aW9yU3ViamVjdDxBY3RpdmVEYXRhPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWN0aXZlRGF0YT4oPGFueT5udWxsKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxhc3RVc2VkU3lzdGVtS2V5OiBzdHJpbmcgPSBcImxhc3RVc2VkU3lzdGVtXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydDogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFRSQU5TTEFUSU9OX0FQSV9WRVJTSU9OX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGFwaVZlcnNpb25cclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAqIFRoaXMgbWV0aG9kIGlzIGJlaW5nIGNhbGxlZCB3aGVuIGF1dG8gbGFuZ3VhZ2UgZGV0ZWN0aW9uIHdhcyBjaG9zZW4uXHJcbiAgKi9cclxuICBlbmFibGVMYW5ndWFnZURldGVjdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVk7XHJcbiAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMuc291cmNlTGFuZ3VhZ2UsIHRoaXMudGFyZ2V0TGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBUaGlzIG1ldGhvZCBpcyBiZWluZyB1c2VkIHRvIHNldCBkZXRlY3RlZCBsYW5ndWFnZSB3aGVuIGFwaSByZXNwb25zZSBoYXMgaXQuXHJcbiAgKiBBbHNvLCB3aGVuIGxhbmd1YWdlIHdhcyBkZXRlY3RlZCBhbmQgd2Ugd2FudCB0byBjbGVhciBzb3VyY2UgdGV4dCwgdGhpcyBtZXRob2QgYWxzbyBpcyBiZWluZyBjYWxsZWQuXHJcbiAgKi9cclxuICBzZXREZXRlY3RlZExhbmd1YWdlKGxhbmdDb2RlOiBzdHJpbmcsIGRvbWFpbj86IHN0cmluZykge1xyXG4gICAgY29uc3QgaXNTb3VyY2VMYW5nQ29kZVNhbWVBZnRlckRldGVjdGlvbiA9IHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlID09PSB0aGlzLnNvdXJjZUxhbmd1YWdlO1xyXG4gICAgLy8gSGVyZSB3ZSBuZWVkIHRvIGNsZWFyIG91dCBkZXRlY3RlZCBsYW5ndWFnZSwgYnV0IGtlZXAgdGhlIGRldGVjdGlvbiBlbmFibGVkLlxyXG4gICAgaWYgKCFsYW5nQ29kZSAmJiBpc1NvdXJjZUxhbmdDb2RlU2FtZUFmdGVyRGV0ZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVk7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMuc291cmNlTGFuZ3VhZ2UsIHRoaXMudGFyZ2V0TGFuZ3VhZ2UsIGZhbHNlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoaXMgaXMgYmVpbmcgY2FsbGVkLCB3aGVuIGxhbmd1YWdlIGlzIGRldGVjdGVkLlxyXG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IGxhbmdDb2RlO1xyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPSBsYW5nQ29kZTtcclxuICAgIHRoaXMuYWN0aXZlU3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgPSBsYW5nQ29kZTtcclxuICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UobGFuZ0NvZGUsIHRoaXMudGFyZ2V0TGFuZ3VhZ2UsIGZhbHNlLCBkb21haW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3lzdGVtcygpOiBTeXN0ZW1bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1zO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlTGFuZ3VhZ2Uoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nLCByZXRyYW5zbGF0ZT86IGJvb2xlYW4sIGRvbWFpbj86IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3lzdGVtSWQgPSB0aGlzLmZpbmRDb3JyZWN0U3lzdGVtKHNvdXJjZSwgdGFyZ2V0LCBkb21haW4pO1xyXG4gICAgdGhpcy5jaGFuZ2VTeXN0ZW0oc3lzdGVtSWQsIHJldHJhbnNsYXRlKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVTeXN0ZW1PYmooKTogU3lzdGVtIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN5c3RlbTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVZlbmRvcnNBbmREb21haW5zKCkge1xyXG4gICAgaWYgKCF0aGlzLnNvdXJjZUxhbmd1YWdlIHx8ICF0aGlzLnRhcmdldExhbmd1YWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZlbmRvcnM6IFZlbmRvcltdID0gW107XHJcbiAgICBjb25zdCBkb21haW5zOiBEb21haW5bXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHRoaXMuc3lzdGVtcykge1xyXG4gICAgICBpZiAoIShzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IHRoaXMuc291cmNlTGFuZ3VhZ2UgJiYgc3lzdGVtLnRhcmdldExhbmd1YWdlID09PSB0aGlzLnRhcmdldExhbmd1YWdlKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRvbWFpbjogRG9tYWluID0ge1xyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICAgIHRpdGxlOiBzeXN0ZW0uZG9tYWluIGFzIHN0cmluZ1xyXG4gICAgICB9O1xyXG4gICAgICBkb21haW5zLnB1c2goZG9tYWluKTtcclxuICAgICAgY29uc3QgdmVuZG9yOiBWZW5kb3IgPSB7XHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgdGl0bGU6IHN5c3RlbS52ZW5kb3JcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF2ZW5kb3JzLmluY2x1ZGVzKHZlbmRvcikpIHtcclxuICAgICAgICB2ZW5kb3JzLnB1c2godmVuZG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGRvbWFpbi5sYW5ndWFnZUlkID09PSB0aGlzLmFjdGl2ZVN5c3RlbS5sYW5ndWFnZUlkKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEb21haW4gPSBkb21haW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRvbWFpbnMgPSBkb21haW5zO1xyXG4gICAgdGhpcy52ZW5kb3JzID0gdmVuZG9ycztcclxuICB9XHJcblxyXG5cclxuICBnZXRMYXN0VXNlZFN5c3RlbSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubGFzdFVzZWRTeXN0ZW1LZXkpIGFzIHN0cmluZztcclxuICB9XHJcblxyXG4gIGdldFVuaXF1ZUxhbmd1YWdlcyhsaXN0OiBMYW5nTGlzdEl0ZW1bXSk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghbGlzdCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aXRsZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgbGlzdC5mb3JFYWNoKChsYW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxhbmdUaXRsZSA9IGxhbmcubGFuZztcclxuICAgICAgY29uc3QgaXggPSB0aXRsZXMuaW5kZXhPZihsYW5nVGl0bGUgYXMgc3RyaW5nKTtcclxuICAgICAgaWYgKGl4ID09IC0xKSB7XHJcbiAgICAgICAgdGl0bGVzLnB1c2gobGFuZ1RpdGxlIGFzIHN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aXRsZXM7XHJcbiAgfVxyXG5cclxuICBpbml0KGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkOiBzdHJpbmcpIHsgICBcclxuICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1MaXN0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogU3lzdGVtW10pID0+IHtcclxuICAgICAgICB0aGlzLnN5c3RlbXMgPSByZXM7XHJcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZWRTeXN0ZW1zU3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc3lzdGVtRXhpc3RzKGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkLCB0aGlzLnN5c3RlbXMpICYmIGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkICE9PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpIHtcclxuICAgICAgICAgIGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkID0gdGhpcy5zeXN0ZW1zWzBdPy5sYW5ndWFnZUlkO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBzeXN0ZW0gb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlbmRvciA9IHN5c3RlbS52ZW5kb3I7XHJcbiAgICAgICAgICAgIGlmICh2ZW5kb3IgPT09IHRoaXMuZGVmYXVsdFZlbmRvcikge1xyXG4gICAgICAgICAgICAgIGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkID0gc3lzdGVtLmxhbmd1YWdlSWQ7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB7XHJcbiAgICAgICAgICB0aGlzLnRhcmdldExhbmd1YWdlID0gdGhpcy5kZWZhdWx0VGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNyZWF0ZVJlY2VudFN5c3RlbUFycmF5KCk7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VMYW5nTGlzdCA9IHRoaXMuY3JlYXRlTGFuZ0xpc3QodGhpcy5zeXN0ZW1zKTtcclxuICAgICAgICB0aGlzLmNoYW5nZVN5c3RlbShkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCk7XHJcbiAgICAgICAgdGhpcy53aWRnZXRJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zeXNMaXN0Lm5leHQodGhpcy5zeXN0ZW1zKTtcclxuICAgICAgICB0aGlzLm5vU3lzdGVtc0Vycm9yID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB7XHJcbiAgICAgICAgICB0aGlzLmVuYWJsZUxhbmd1YWdlRGV0ZWN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub1N5c3RlbXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hbGVydC5lcnJvcih0aGlzLmRlZmF1bHRFcnJvclRyYW5zbGF0aW9uS2V5LCBlcnJvcik7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExvYWRlZFN5c3RlbXMoKTogT2JzZXJ2YWJsZTxTeXN0ZW1bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkU3lzdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMYXN0VXNlZFN5c3RlbShzeXN0ZW1JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sYXN0VXNlZFN5c3RlbUtleSwgc3lzdGVtSWQpO1xyXG4gIH1cclxuXHJcbiAgc3dhcFN5c3RlbUxhbmd1YWdlcygpIHtcclxuICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy50YXJnZXRMYW5ndWFnZSwgdGhpcy5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTeXN0ZW0obGFuZ3VhZ2VJZDogc3RyaW5nLCByZXRyYW5zbGF0ZSA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVN5c3RlbT8ubGFuZ3VhZ2VJZCA9PT0gbGFuZ3VhZ2VJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNlbGVjdGVkU3lzdGVtITogU3lzdGVtO1xyXG5cclxuICAgIGlmICghbGFuZ3VhZ2VJZD8uaW5jbHVkZXMoQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHN5c3RlbSBvZiB0aGlzLnN5c3RlbXMpIHtcclxuICAgICAgICBpZiAoc3lzdGVtLmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpIHtcclxuICAgICAgICAgIHNlbGVjdGVkU3lzdGVtID0gc3lzdGVtO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFN5c3RlbSA9IHRoaXMuY3JlYXRlU3lzdGVtKCcnLCBsYW5ndWFnZUlkLCBsYW5ndWFnZUlkLCB0aGlzLnNvdXJjZUxhbmd1YWdlLCB0aGlzLnRhcmdldExhbmd1YWdlLCB0aGlzLmFwaVZlcnNpb24sICcnLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnRhcmdldExhbmdMaXN0ID0gdGhpcy5jcmVhdGVMYW5nTGlzdCh0aGlzLnN5c3RlbXMsIHRoaXMuc291cmNlTGFuZ3VhZ2UpO1xyXG4gICAgICB0aGlzLnRhcmdldExhbmd1YWdlID0gdGhpcy50YXJnZXRMYW5ndWFnZTtcclxuICAgICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IHRoaXMuc291cmNlTGFuZ3VhZ2U7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3lzdGVtID0gc2VsZWN0ZWRTeXN0ZW07XHJcbiAgICAgIHRoaXMuZG9tYWlucyA9IFtdO1xyXG4gICAgICB0aGlzLnZlbmRvcnMgPSBbXTtcclxuICBcclxuICAgICAgdGhpcy5vbkFjdGl2ZVN5c3RlbUNoYW5nZShyZXRyYW5zbGF0ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hcGlWZXJzaW9uID09PSBUcmFuc2xhdGlvbkFwaVZlcnNpb24uVjIpIHtcclxuICAgICAgc2VsZWN0ZWRTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IHRoaXMuYWN0aXZlU3lzdGVtPy5kZXRlY3RlZExhbmd1YWdlO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgdGhpcy50YXJnZXRMYW5nTGlzdCA9IHRoaXMuY3JlYXRlTGFuZ0xpc3QodGhpcy5zeXN0ZW1zLCBzZWxlY3RlZFN5c3RlbS5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgICB0aGlzLnRhcmdldExhbmd1YWdlID0gc2VsZWN0ZWRTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2U7XHJcbiAgICB0aGlzLnNvdXJjZUxhbmd1YWdlID0gc2VsZWN0ZWRTeXN0ZW0uc291cmNlTGFuZ3VhZ2U7XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHNlbGVjdGVkU3lzdGVtO1xyXG4gICAgdGhpcy5nZXRBY3RpdmVWZW5kb3JzQW5kRG9tYWlucygpO1xyXG5cclxuICAgIHRoaXMub25BY3RpdmVTeXN0ZW1DaGFuZ2UocmV0cmFuc2xhdGUpO1xyXG5cclxuICAgIHRoaXMuc2V0TGFzdFVzZWRTeXN0ZW0oc2VsZWN0ZWRTeXN0ZW0ubGFuZ3VhZ2VJZCk7XHJcbiAgfVxyXG5cclxuICBzeXN0ZW1FeGlzdHMobGFuZ3VhZ2VJZDogc3RyaW5nLCBzeXN0ZW1MaXN0OiBTeXN0ZW1bXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc3lzdGVtcyA9IHN5c3RlbUxpc3QgPz8gdGhpcy5zeXN0ZW1zO1xyXG4gICAgZm9yIChjb25zdCBzeXN0ZW0gb2Ygc3lzdGVtcykge1xyXG4gICAgICBpZiAoc3lzdGVtLmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzVGVybWlub2xvZ3lTdXBwb3J0ZWQoc3lzdGVtOiBTeXN0ZW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBzeXN0ZW0uaW5jbHVkZXNUZXJtaW5vbG9neSBhcyBib29sZWFuO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU291cmNlTGFuZ3VhZ2Uoc291cmNlTGFuZ3VhZ2VDb2RlOiBzdHJpbmcpIHtcclxuICAgIGlmIChzb3VyY2VMYW5ndWFnZUNvZGUgPT09IHRoaXMuYWN0aXZlU3lzdGVtLnRhcmdldExhbmd1YWdlKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2Uoc291cmNlTGFuZ3VhZ2VDb2RlLCB0aGlzLmFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZShzb3VyY2VMYW5ndWFnZUNvZGUsIHRoaXMuYWN0aXZlU3lzdGVtLnRhcmdldExhbmd1YWdlKTtcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGFyZ2V0TGFuZ3VhZ2UodGFyZ2V0TGFuZ3VhZ2VDb2RlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0YXJnZXRMYW5ndWFnZUNvZGUgPT09IHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlQ29kZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZSh0aGlzLmFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2VDb2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUmVjZW50U3lzdGVtQXJyYXkoKSB7XHJcbiAgICBsZXQgc3lzdGVtSWRBcnJheTogc3RyaW5nW107XHJcbiAgICBjb25zdCByZWNlbnRTeXN0ZW1BcnJheTogU3lzdGVtW10gPSBbXTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHN5c3RlbUlkQXJyYXkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMucmVjZW50U3lzdGVtS2V5KSA/PyBcIltdXCIpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2gge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzeXN0ZW1JZEFycmF5LmZvckVhY2goKGxhbmd1YWdlSWQpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RpbmdTeXN0ZW0gPSB0aGlzLnN5c3RlbXMuZmluZChzeXN0ZW0gPT4gc3lzdGVtLmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpO1xyXG4gICAgICBpZiAoZXhpc3RpbmdTeXN0ZW0gJiYgIXRoaXMucmVjZW50U3lzdGVtcy5pbmNsdWRlcyhleGlzdGluZ1N5c3RlbSkpIHtcclxuICAgICAgICByZWNlbnRTeXN0ZW1BcnJheS5wdXNoKGV4aXN0aW5nU3lzdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMucmVjZW50U3lzdGVtcyA9IHJlY2VudFN5c3RlbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRUb1JlY2VudFN5c3RlbUFycmF5KHN5c3RlbTogU3lzdGVtKSB7XHJcbiAgIGlmIChzeXN0ZW0uaWQgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgcmV0dXJuO1xyXG4gICB9XHJcbiAgICBcclxuICAgIGNvbnN0IGV4aXN0aW5nU3lzdGVtID0gdGhpcy5yZWNlbnRTeXN0ZW1zLmZpbmQoZXhpc3RpbmcgPT4gZXhpc3RpbmcubGFuZ3VhZ2VJZCA9PT0gc3lzdGVtLmxhbmd1YWdlSWQpO1xyXG4gICAgLy8gaWYgc3lzdGVtIGFscmVhZHkgaW4gbGlzdCwgcHV0IGl0IHRvIGZpcnN0IHBvc2l0aW9uLiBJZiBpeCAwLCBubyBhY3Rpb24gcmVxdWlyZWQgc2luY2UgbGF0ZXN0IHN5c3RlbSBpcyBhbHJlYWR5IGZpcnN0LlxyXG4gICAgaWYgKGV4aXN0aW5nU3lzdGVtKSB7XHJcbiAgICAgIGNvbnN0IHN5c3RlbUl4SW5SZWNlbnRMaXN0ID0gdGhpcy5yZWNlbnRTeXN0ZW1zLmluZGV4T2YoZXhpc3RpbmdTeXN0ZW0pO1xyXG4gICAgICBpZiAoc3lzdGVtSXhJblJlY2VudExpc3QgPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZShzeXN0ZW1JeEluUmVjZW50TGlzdCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZSgwLCAwLCBzeXN0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gaWYgbGlzdCB0b28gbG9uZywgcmVtb3ZlIGxhc3QgKG9sZGVzdCBlbGVtZW50KVxyXG4gICAgICB3aGlsZSAodGhpcy5yZWNlbnRTeXN0ZW1zLmxlbmd0aCA+PSB0aGlzLnJlY2VudFN5c3RlbXNNYXhDb3VudCkge1xyXG4gICAgICAgIHRoaXMucmVjZW50U3lzdGVtcy5wb3AoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZSgwLCAwLCBzeXN0ZW0pO1xyXG4gICAgfVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5yZWNlbnRTeXN0ZW1LZXksIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50U3lzdGVtcy5tYXAoc3lzdGVtID0+IHN5c3RlbS5sYW5ndWFnZUlkKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5Td2FwU3lzdGVtTGFuZ3VhZ2VzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGxhbmdTd2FwQWN0aXZlID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgIGNvbnN0IHN5c3RlbSA9IGVsZW1lbnQ7XHJcbiAgICAgIGlmIChzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT0gdGhpcy50YXJnZXRMYW5ndWFnZSAmJiBzeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgPT0gdGhpcy5zb3VyY2VMYW5ndWFnZSkge1xyXG4gICAgICAgIGxhbmdTd2FwQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYW5Td2FwTGFuZ3VhZ2VzID0gbGFuZ1N3YXBBY3RpdmU7XHJcbiAgICByZXR1cm4gbGFuZ1N3YXBBY3RpdmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUxhbmdMaXN0KHN5c3RlbXM6IFN5c3RlbVtdLCBzcmNMYW5nQ29kZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgbGFuZ0xpc3RJdGVtQXJyYXk6IExhbmdMaXN0SXRlbVtdID0gW107XHJcbiAgICBzeXN0ZW1zLmZvckVhY2goKHN5c3RlbSkgPT4ge1xyXG4gICAgICBpZiAoIXNyY0xhbmdDb2RlIHx8IHNyY0xhbmdDb2RlID09PSBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgfHwgc3JjTGFuZ0NvZGUgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSkge1xyXG4gICAgICAgIGxhbmdMaXN0SXRlbUFycmF5LnB1c2goXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIGxhbmc6IHNyY0xhbmdDb2RlID8gc3lzdGVtLnRhcmdldExhbmd1YWdlIDogc3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgICAgICAgdmVuZG9yOiBzeXN0ZW0udmVuZG9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBsYW5nTGlzdEl0ZW1BcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENvcnJlY3RTeXN0ZW0oc291cmNlTGFuZ3VhZ2U6IHN0cmluZywgdGFyZ2V0TGFuZ3VhZ2U6IHN0cmluZywgZG9tYWluPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChzb3VyY2VMYW5ndWFnZSA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0TGFuZ3VhZ2UgPSB0YXJnZXRMYW5ndWFnZTtcclxuICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgPSB0YXJnZXRMYW5ndWFnZTtcclxuICAgICAgcmV0dXJuIGAke0FVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWX0tJHt0YXJnZXRMYW5ndWFnZX1gXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3lzdGVtcyA9IHRoaXMuc3lzdGVtcztcclxuXHJcbiAgICBjb25zdCBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyID0gc3lzdGVtcy5maWx0ZXIoc3lzdGVtID0+IHN5c3RlbS5zb3VyY2VMYW5ndWFnZSA9PT0gc291cmNlTGFuZ3VhZ2UgJiYgdGFyZ2V0TGFuZ3VhZ2UgPT09IHN5c3RlbS50YXJnZXRMYW5ndWFnZSk7XHJcbiAgICAvLyBJZGVhbGx5IHRoaXMgY2FzZSBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGl0IGlzIHBvc3NpYmxlLlxyXG4gICAgaWYgKHN5c3RlbXNGb3JMYW5ndWFnZVBhaXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN5c3RlbXMuZmluZChzeXN0ZW0gPT4gc3lzdGVtLnNvdXJjZUxhbmd1YWdlID09PSBzb3VyY2VMYW5ndWFnZSk/Lmxhbmd1YWdlSWQgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IgPSBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyLmZpbHRlcihzeXN0ZW0gPT4gKHN5c3RlbS52ZW5kb3IgfHwgdGhpcy5kZWZhdWx0VmVuZG9yKSA9PT0gdGhpcy5kZWZhdWx0VmVuZG9yKTtcclxuICAgIGlmIChzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvciA9IHN5c3RlbXNGb3JMYW5ndWFnZVBhaXI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiA9IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvci5maWx0ZXIoc3lzdGVtID0+IGRvbWFpbiA/IHN5c3RlbS5kb21haW4gPT09IGRvbWFpbiA6IHRoaXMuZGVmYXVsdERvbWFpbnMuaW5jbHVkZXMoc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcpKTtcclxuICAgIGlmIChzeXN0ZW1zV2l0aERlZmF1bHREb21haW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiA9IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvcjtcclxuICAgIH1cclxuICAgIFNvcnRIZWxwZXIuc29ydEJ5QXJyYXkoc3lzdGVtc1dpdGhEZWZhdWx0RG9tYWluLCB0aGlzLmRlZmF1bHREb21haW5zLCBcImRvbWFpblwiKTtcclxuXHJcblxyXG4gICAgLy8gVjIgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mbyBhYm91dCBzdGF0dXNlc1xyXG4gICAgaWYgKHRoaXMuYXBpVmVyc2lvbiA9PT0gVHJhbnNsYXRpb25BcGlWZXJzaW9uLlYxKSB7XHJcbiAgICAgIGNvbnN0IHByZWZlcnJlZFN0YXR1c2VzID0gWydydW5uaW5nJywgJ3F1ZXVpbmd0cmFuc2wnLCAnc3RhbmRieSddO1xyXG4gICAgICBTb3J0SGVscGVyLnNvcnRCeUFycmF5KHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvciwgcHJlZmVycmVkU3RhdHVzZXMsIFwic3RhdHVzXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzeXN0ZW1zV2l0aERlZmF1bHREb21haW5bMF0ubGFuZ3VhZ2VJZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25BY3RpdmVTeXN0ZW1DaGFuZ2UocmV0cmFuc2xhdGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBzeXN0ZW06IFN5c3RlbSA9IHRoaXMuYWN0aXZlU3lzdGVtO1xyXG4gICAgY29uc3QgdmVuZG9yID0gdGhpcy5hY3RpdmVTeXN0ZW0udmVuZG9yO1xyXG5cclxuICAgIGlmICh0aGlzLnNvdXJjZUxhbmd1YWdlICE9PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkpIHtcclxuICAgICAgdGhpcy5hZGRUb1JlY2VudFN5c3RlbUFycmF5KHN5c3RlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3RpdmUubmV4dCh7XHJcbiAgICAgIHNvdXJjZUxhbmc6IHtcclxuICAgICAgICBsYW5nOiB0aGlzLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcsXHJcbiAgICAgICAgdmVuZG9yOiB2ZW5kb3IsXHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgIH0sXHJcbiAgICAgIHNvdXJjZUxhbmdMaXN0OiB0aGlzLnNvdXJjZUxhbmdMaXN0LFxyXG4gICAgICBzeXN0ZW1JZDogc3lzdGVtLmlkLFxyXG4gICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgdGFyZ2V0TGFuZzoge1xyXG4gICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcsXHJcbiAgICAgICAgdmVuZG9yOiB2ZW5kb3IsXHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgbGFuZzogdGhpcy50YXJnZXRMYW5ndWFnZVxyXG4gICAgICB9LFxyXG4gICAgICB0YXJnZXRMYW5nTGlzdDogdGhpcy50YXJnZXRMYW5nTGlzdCxcclxuICAgICAgdmVuZG9yczogdGhpcy52ZW5kb3JzLFxyXG4gICAgICBkb21haW5zOiB7IGFjdGl2ZTogdGhpcy5hY3RpdmVEb21haW4sIGRvbWFpbnM6IHRoaXMuZG9tYWlucyB9LFxyXG4gICAgICBzd2FwTGFuZ0FjdGl2ZTogdGhpcy5jYW5Td2FwU3lzdGVtTGFuZ3VhZ2VzKCksXHJcbiAgICAgIHN5c3RlbTogc3lzdGVtLFxyXG4gICAgICByZXRyYW5zbGF0ZTogcmV0cmFuc2xhdGUsXHJcbiAgICAgIHJlY2VudFN5c3RlbXM6IHRoaXMucmVjZW50U3lzdGVtcyxcclxuICAgICAgZGV0ZWN0ZWRMYW5ndWFnZTogdGhpcy5hY3RpdmVTeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9PT0gdGhpcy5zb3VyY2VMYW5ndWFnZSA/IHRoaXMuYWN0aXZlU3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgOiBudWxsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlU3lzdGVtKGRvbWFpbjogc3RyaW5nLCBpZDogc3RyaW5nLCBsYW5ndWFnZUlkOiBzdHJpbmcsIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcsIHRhcmdldExhbmd1YWdlOiBzdHJpbmcsIHRyYW5zbGF0aW9uQXBpVmVyc2lvbjogVHJhbnNsYXRpb25BcGlWZXJzaW9uLCB2ZW5kb3I6IHN0cmluZywgZGV0ZWN0ZWRMYW5ndWFnZTogc3RyaW5nLCBpbmNsdWRlc1Rlcm1pbm9sb2d5OiBib29sZWFuKTogU3lzdGVtIHtcclxuICAgIHJldHVybiB7IGRvbWFpbiwgaWQsIGxhbmd1YWdlSWQsIHNvdXJjZUxhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZSwgdHJhbnNsYXRpb25BcGlWZXJzaW9uLCB2ZW5kb3IsIGRldGVjdGVkTGFuZ3VhZ2UsIGluY2x1ZGVzVGVybWlub2xvZ3kgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { FilterWithHighlightPipe, SortHelper } from '@tilde-nlp/ngx-common';
2
+ import { FilterWithHighlightPipe } from '@tilde-nlp/ngx-common';
3
3
  import { OpenedMenu } from '../models';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../../tld-common/services";
@@ -201,7 +201,7 @@ export class TranslationSystemPickerDropdownBodyComponent {
201
201
  }
202
202
  else {
203
203
  newArray[idx].group.push(translatedLanguage);
204
- SortHelper.sortAlphabetically(newArray[idx].group, 'displayName');
204
+ newArray[idx].group.sort((r1, r2) => r1.displayName > r2.displayName ? 1 : -1);
205
205
  }
206
206
  return newArray;
207
207
  }, [])
@@ -227,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
227
227
  }], onFilteredLanguageClick: [{
228
228
  type: Output
229
229
  }] } });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93bi1ib2R5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10b29sdGlwL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXIvZHJvcGRvd24tYm9keS90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWRyb3Bkb3duLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRvb2x0aXAvdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci9kcm9wZG93bi1ib2R5L3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24tYm9keS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBYyx1QkFBdUIsRUFBNEIsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEgsT0FBTyxFQUFzQixVQUFVLEVBQW9CLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7O0FBWTdFLE1BQU0sT0FBTyw0Q0FBNEM7SUF3RHBDO0lBQ0E7SUFDQTtJQUNBO0lBekRuQixJQUFhLFVBQVUsQ0FBQyxHQUFXO1FBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNRLE1BQU0sQ0FBcUI7SUFFMUIsYUFBYSxHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUNyRixlQUFlLEdBQXFDLElBQUksWUFBWSxFQUFzQixDQUFDO0lBQzNGLHVCQUF1QixHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FB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QkFDRSw2Q0FBNkM7Nk9BTTFDLFVBQVU7c0JBQXRCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyx1QkFBdUI7c0JBQWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgRmlsdGVyV2l0aEhpZ2hsaWdodFBpcGUsIExhbmd1YWdlVHJhbnNsYXRlU2VydmljZSwgU29ydEhlbHBlciB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkJvZHlDb25maWcsIE9wZW5lZE1lbnUsIFRyYW5zbGF0ZWRTeXN0ZW0gfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBHcm91cGVkTGFuZ3VhZ2VJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2dyb3VwZWQtbGFuZ3VhZ2UtaXRlbSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZWRMYW5ndWFnZSB9IGZyb20gJy4uL21vZGVscy90cmFuc2xhdGVkLWxhbmd1YWdlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TeXN0ZW1QaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RsZC10cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWRyb3Bkb3duLWJvZHknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWRyb3Bkb3duLWJvZHkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24tYm9keS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGlvblN5c3RlbVBpY2tlckRyb3Bkb3duQm9keUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBmaWx0ZXJUZXh0KHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbHRlckxhbmd1YWdlcyh2YWwpO1xyXG4gIH1cclxuICBASW5wdXQoKSBjb25maWc6IERyb3Bkb3duQm9keUNvbmZpZztcclxuXHJcbiAgQE91dHB1dCgpIG9uU3lzdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxUcmFuc2xhdGVkU3lzdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8VHJhbnNsYXRlZFN5c3RlbT4oKTtcclxuICBAT3V0cHV0KCkgb25MYW5ndWFnZUNsaWNrOiBFdmVudEVtaXR0ZXI8VHJhbnNsYXRlZExhbmd1YWdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8VHJhbnNsYXRlZExhbmd1YWdlPigpO1xyXG4gIEBPdXRwdXQoKSBvbkZpbHRlcmVkTGFuZ3VhZ2VDbGljazogRXZlbnRFbWl0dGVyPFRyYW5zbGF0ZWRMYW5ndWFnZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyYW5zbGF0ZWRMYW5ndWFnZT4oKTtcclxuXHJcbiAgbWVudVN0YXRlOiBPcGVuZWRNZW51O1xyXG4gIHN5c3RlbUxpc3Q6IFRyYW5zbGF0ZWRTeXN0ZW1bXTtcclxuICBzeXN0ZW1MaXN0VGl0bGU6IHN0cmluZztcclxuICBzaG93RmlsdGVyZWQ6IGJvb2xlYW47XHJcblxyXG4gIGdldCBzaG93U3lzdGVtcygpIHsgcmV0dXJuICF0aGlzLmNvbmZpZz8uaGlkZVN5c3RlbXM7IH1cclxuICBnZXQgc2hvd0xhbmd1YWdlcygpIHsgcmV0dXJuICF0aGlzLmNvbmZpZz8uaGlkZUxhbmd1YWdlczsgfVxyXG4gIGdldCBzaG93U3lzdGVtVGl0bGUoKSB7IHJldHVybiAhdGhpcy5jb25maWc/LmhpZGVTeXN0ZW1UaXRsZTsgfTtcclxuICBnZXQgc2hvd0xhbmd1YWdlVGl0bGUoKSB7IHJldHVybiB0aGlzLmNvbmZpZz8uc2hvd0xhbmd1YWdlVGl0bGU7IH1cclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmVEYXRhOiBBY3RpdmVEYXRhO1xyXG4gIHByaXZhdGUgc3lzdGVtU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBtZW51VG9nZ2xlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgLy8gU3RvcmVzIGZyb20gbG9jYWxpemF0aW9uIGZpbGUgbGFuZ3VhZ2UgdHJhbnNsYXRpb25zXHJcbiAgLy8gVGhpcyBuZWVkcyB0byBiZSBzdG9yZWQgaGVyZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB0bWVwbGF0ZSBuZWVkcyB0byBiZSBieSBjdXJyZW50IGxhbmd1YWdlXHJcbiAgLy8gcG9zc2libGUgdG8gdXNlIHNvcnRUcmFuc2xhdGlvbnMgcGlwZSBmcm9tIGNvbW1vbiBsaWIsIGJ1dCBkZWNpZGVkIG5vdCB0byBiZWNhdXNlIGhlcmUgd2Ugc3RpbGwgbmVlZCB0byBncm91cCBsYW5ndWFnZXMgYnkgZmlyc3QgbGV0dGVyLlxyXG4gIHByaXZhdGUgbGFuZ3VhZ2VBbmREb21haW5UcmFuc2xhdGlvbnM6IHN0cmluZ1tdW107XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2VzTG9jYWxpemF0aW9uS2V5ID0gXCJMQU5HVUFHRVNcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRvbWFpbnNMb2NhbGl6YXRpb25LZXkgPSBcIkRPTUFJTlNcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlY2VudFN5c3RlbVRpdGxlS2V5ID0gXCJTWVNURU1fUElDS0VSLlJFQ0VOVF9TWVNURU1fVElUTEVcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRvbWFpbnNUaXRsZUtleSA9IFwiU1lTVEVNX1BJQ0tFUi5TRUxFQ1RfRE9NQUlOXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBmaWx0ZXJIaWdobGlnaHRQaXBlID0gbmV3IEZpbHRlcldpdGhIaWdobGlnaHRQaXBlKCk7XHJcblxyXG4gIGdldCByZWNlbnRTeXN0ZW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0YT8ucmVjZW50U3lzdGVtcyA/PyBbXTtcclxuICB9XHJcblxyXG4gIGdldCBkb21haW5zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0YT8uZG9tYWlucz8uZG9tYWlucyA/PyBbXTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVTeXN0ZW1JZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGE/Lmxhbmd1YWdlSWQ7XHJcbiAgfVxyXG5cclxuICBhbGxMYW5ndWFnZXM6IFRyYW5zbGF0ZWRMYW5ndWFnZVtdO1xyXG4gIGZpbHRlcmVkTGFuZ3VhZ2VzOiBUcmFuc2xhdGVkTGFuZ3VhZ2VbXTtcclxuXHJcbiAgZ3JvdXBlZExhbmd1YWdlczogR3JvdXBlZExhbmd1YWdlSXRlbVtdO1xyXG4gIC8vIEVpdGhlciBzb3VyY2Ugb3IgdGFyZ2V0IGxhbmcgY29kZSwgZGVwZW5kaW5nIG9uIHdoaWNoIG9uZSBpcyBvcGVuZWQuXHJcbiAgYWN0aXZlTGFuZ3VhZ2VDb2RlOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeXN0ZW1NYW5hZ2VtZW50U2VydmljZTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtUGlja2VyU2VydmljZTogVHJhbnNsYXRpb25TeXN0ZW1QaWNrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlVHJhbnNsYXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lbnVTdGF0ZSA9IHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5vcGVuZWRNZW51O1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaWJlVG9BY3RpdmVTeXN0ZW1EYXRhKCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvTGFuZ3VhZ2VDaGFuZ2UoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9NZW51VG9nZ2xlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2UuY2xvc2VPcGVuZWQoKTtcclxuICAgIHRoaXMuc3lzdGVtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMubWVudVRvZ2dsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2UuY2xvc2VPcGVuZWQoKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckxhbmd1YWdlcyhmaWx0ZXI6IHN0cmluZykge1xyXG4gICAgaWYgKCFmaWx0ZXI/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkTGFuZ3VhZ2VzID0gbnVsbDtcclxuICAgICAgdGhpcy5zaG93RmlsdGVyZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2hvd0ZpbHRlcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsdGVyZWRMYW5ndWFnZXMgPSB0aGlzLmZpbHRlckhpZ2hsaWdodFBpcGUudHJhbnNmb3JtKHRoaXMuYWxsTGFuZ3VhZ2VzLCBmaWx0ZXIsIFwiZGlzcGxheU5hbWVcIik7XHJcbiAgfVxyXG5cclxuICBsYW5ndWFnZUNsaWNrKGxhbmd1YWdlOiBUcmFuc2xhdGVkTGFuZ3VhZ2UpIHtcclxuICAgIHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5sYW5ndWFnZVNlbGVjdGVkKGxhbmd1YWdlKTtcclxuICAgIHRoaXMub25MYW5ndWFnZUNsaWNrLmVtaXQobGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyZWRMYW5ndWFnZUNsaWNrKGxhbmd1YWdlOiBUcmFuc2xhdGVkTGFuZ3VhZ2UpIHtcclxuICAgIHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5sYW5ndWFnZVNlbGVjdGVkKGxhbmd1YWdlKTtcclxuICAgIHRoaXMub25GaWx0ZXJlZExhbmd1YWdlQ2xpY2suZW1pdChsYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBzeXN0ZW1DbGljayhzeXN0ZW06IFRyYW5zbGF0ZWRTeXN0ZW0pIHtcclxuICAgIHRoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2UuY2hhbmdlU3lzdGVtKHN5c3RlbS5sYW5ndWFnZUlkKTtcclxuICAgIHRoaXMub25TeXN0ZW1DbGljay5lbWl0KHN5c3RlbSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvTWVudVRvZ2dsZSgpIHtcclxuICAgIHRoaXMubWVudVRvZ2dsZVN1YnNjcmlwdGlvbiA9IHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5tZW51VG9nZ2xlZCgpLnN1YnNjcmliZShcclxuICAgICAgKHN0YXRlKSA9PiB7IHRoaXMub25NZW51VG9nZ2xlKHN0YXRlKTsgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25NZW51VG9nZ2xlKHN0YXRlOiBPcGVuZWRNZW51KSB7XHJcbiAgICBpZiAodGhpcy5tZW51U3RhdGUgIT09IHN0YXRlKSB7XHJcbiAgICAgIHRoaXMubWVudVN0YXRlID0gc3RhdGU7XHJcbiAgICAgIHRoaXMuc2V0QWN0aXZlTGFuZ3VhZ2VDb2RlKCk7XHJcbiAgICAgIHRoaXMucmV0cmFuc2xhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QWN0aXZlTGFuZ3VhZ2VDb2RlKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjdGl2ZURhdGEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1lbnVTdGF0ZSA9PT0gT3BlbmVkTWVudS5TT1VSQ0UpIHtcclxuICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZUNvZGUgPSB0aGlzLmFjdGl2ZURhdGEuc291cmNlTGFuZy5sYW5nO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5tZW51U3RhdGUgPT09IE9wZW5lZE1lbnUuVEFSR0VUKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTGFuZ3VhZ2VDb2RlID0gdGhpcy5hY3RpdmVEYXRhLnRhcmdldExhbmcubGFuZztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlQ29kZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvQWN0aXZlU3lzdGVtRGF0YSgpIHtcclxuICAgIHRoaXMuc3lzdGVtU3Vic2NyaXB0aW9uID0gdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5nZXRBY3RpdmVEYXRhKCkuc3Vic2NyaWJlKFxyXG4gICAgICAoYWN0aXZlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFhY3RpdmUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0YSA9IGFjdGl2ZTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2ZUxhbmd1YWdlQ29kZSgpO1xyXG4gICAgICAgIHRoaXMucmV0cmFuc2xhdGUoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9MYW5ndWFnZUNoYW5nZSgpIHtcclxuICAgIHRoaXMubGFuZ1N1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLnN0cmVhbShbdGhpcy5sYW5ndWFnZXNMb2NhbGl6YXRpb25LZXksIHRoaXMuZG9tYWluc0xvY2FsaXphdGlvbktleV0pLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmxhbmd1YWdlQW5kRG9tYWluVHJhbnNsYXRpb25zID0gZGF0YTtcclxuICAgICAgdGhpcy5yZXRyYW5zbGF0ZSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmV0cmFuc2xhdGUoKSB7XHJcbiAgICAvLyBjYW50IHJldHJhbnNsYXRlIGlmIGJvdGggb2YgdGhlc2UgdmFsdWVzIGFyZSBub3QgbG9hZGVkIHllci4gVGhpcyBjb25kaXRpb24gc2hvdWxkIGZ1bGZpbGwgb25seSBvbiBmaXJzdCB0aW1lLlxyXG4gICAgaWYgKCEodGhpcy5sYW5ndWFnZUFuZERvbWFpblRyYW5zbGF0aW9ucyAmJiB0aGlzLmFjdGl2ZURhdGEpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZVN5c3RlbXMoKTtcclxuICAgIHRoaXMuc29ydExhbmd1YWdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gTWV0aG9kIHByZXBhcmVzIG9iamVjdHMgZm9yIHJlY2VudCBzeXN0ZW1zIG9yIGRvbWFpbnMsIGRlcGVuZGluZyBvbiB3aGljaCBtZW51IGlzIG9wZW5lZC5cclxuICBwcml2YXRlIHRyYW5zbGF0ZVN5c3RlbXMoKSB7XHJcbiAgICBpZiAodGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLmlzU291cmNlT3BlbmVkKSB7XHJcbiAgICAgIHRoaXMuc3lzdGVtTGlzdCA9IHRoaXMuZ2V0VHJhbnNsYXRlZFJlY2VudFN5c3RlbXMoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5pc1RhcmdldE9wZW5lZCkge1xyXG4gICAgICB0aGlzLnN5c3RlbUxpc3QgPSB0aGlzLmdldFRyYW5zbGF0ZWREb21haW5zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFRyYW5zbGF0ZWREb21haW5zKCk6IFRyYW5zbGF0ZWRTeXN0ZW1bXSB7XHJcbiAgICB0aGlzLnN5c3RlbUxpc3RUaXRsZSA9IHRoaXMuZG9tYWluc1RpdGxlS2V5O1xyXG4gICAgY29uc3QgYXJyOiBUcmFuc2xhdGVkU3lzdGVtW10gPSBbXTtcclxuICAgIHRoaXMuZG9tYWlucy5mb3JFYWNoKGRvbWFpbiA9PiB7XHJcbiAgICAgIGFyci5wdXNoKHsgZGlzcGxheU5hbWU6IHRoaXMuZ2V0RG9tYWluRGlzcGxheU5hbWUoZG9tYWluLnRpdGxlKSwgbGFuZ3VhZ2VJZDogZG9tYWluLmxhbmd1YWdlSWQgfSlcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFycjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VHJhbnNsYXRlZFJlY2VudFN5c3RlbXMoKTogVHJhbnNsYXRlZFN5c3RlbVtdIHtcclxuICAgIHRoaXMuc3lzdGVtTGlzdFRpdGxlID0gdGhpcy5yZWNlbnRTeXN0ZW1UaXRsZUtleTtcclxuICAgIGNvbnN0IGFycjogVHJhbnNsYXRlZFN5c3RlbVtdID0gW107XHJcbiAgICB0aGlzLnJlY2VudFN5c3RlbXMuZm9yRWFjaCgoc3lzdGVtKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWQ6IFRyYW5zbGF0ZWRTeXN0ZW0gPSB7XHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3RoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlQ29kZVRyYW5zbGF0aW9uKHN5c3RlbS5zb3VyY2VMYW5ndWFnZSl9IC0gJHt0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZUNvZGVUcmFuc2xhdGlvbihzeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UpfSAoJHt0aGlzLmdldERvbWFpbkRpc3BsYXlOYW1lKHN5c3RlbS5kb21haW4pfSlgXHJcbiAgICAgIH1cclxuICAgICAgYXJyLnB1c2godHJhbnNsYXRlZCk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhcnIgPz8gW107XHJcbiAgfVxyXG5cclxuICAvLyBTb3J0cyBsYW5ndWFnZXMgYW5kIHNldHMgdGhlbSB0byBHcm91cGVkTGFuZ3VhZ2VJdGVtIHN0cnVjdHVyZVxyXG4gIHByaXZhdGUgc29ydExhbmd1YWdlcygpIHtcclxuICAgIGxldCBsYW5ndWFnZUxpc3Q6IGFueVtdO1xyXG4gICAgaWYgKHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5pc1NvdXJjZU9wZW5lZCkge1xyXG4gICAgICBsYW5ndWFnZUxpc3QgPSB0aGlzLmFjdGl2ZURhdGEuc291cmNlTGFuZ0xpc3Q7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2UuaXNUYXJnZXRPcGVuZWQpIHtcclxuICAgICAgbGFuZ3VhZ2VMaXN0ID0gdGhpcy5hY3RpdmVEYXRhLnRhcmdldExhbmdMaXN0O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFsbExhbmd1YWdlcyA9IFtdO1xyXG5cclxuICAgIHRoaXMuZ3JvdXBlZExhbmd1YWdlcyA9IHRoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2UuZ2V0VW5pcXVlTGFuZ3VhZ2VzKGxhbmd1YWdlTGlzdClcclxuICAgICAgLnJlZHVjZSgobmV3QXJyYXk6IEdyb3VwZWRMYW5ndWFnZUl0ZW1bXSwgY3VycikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRMYW5ndWFnZTogVHJhbnNsYXRlZExhbmd1YWdlID0geyBjb2RlOiBjdXJyLCBkaXNwbGF5TmFtZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2VDb2RlVHJhbnNsYXRpb24oY3Vyci50b1VwcGVyQ2FzZSgpKSB9O1xyXG4gICAgICAgIGNvbnN0IGZpcnN0TGV0dGVyID0gdHJhbnNsYXRlZExhbmd1YWdlLmRpc3BsYXlOYW1lWzBdLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3QgaWR4ID0gbmV3QXJyYXkuZmluZEluZGV4KGUgPT4gZS5ncm91cGVkQnkgPT09IGZpcnN0TGV0dGVyKTtcclxuICAgICAgICB0aGlzLmFsbExhbmd1YWdlcy5wdXNoKHRyYW5zbGF0ZWRMYW5ndWFnZSk7XHJcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcclxuICAgICAgICAgIG5ld0FycmF5LnB1c2goeyBncm91cGVkQnk6IGZpcnN0TGV0dGVyLCBncm91cDogW3RyYW5zbGF0ZWRMYW5ndWFnZV0gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbmV3QXJyYXlbaWR4XS5ncm91cC5wdXNoKHRyYW5zbGF0ZWRMYW5ndWFnZSk7XHJcbiAgICAgICAgICBTb3J0SGVscGVyLnNvcnRBbHBoYWJldGljYWxseShuZXdBcnJheVtpZHhdLmdyb3VwLCAnZGlzcGxheU5hbWUnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld0FycmF5O1xyXG4gICAgICB9LCBbXSlcclxuICAgICAgLnNvcnQoKGUxLCBlMikgPT4gZTEuZ3JvdXBlZEJ5ID4gZTIuZ3JvdXBlZEJ5ID8gMSA6IC0xKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RG9tYWluRGlzcGxheU5hbWUoZG9tYWluOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlQW5kRG9tYWluVHJhbnNsYXRpb25zW3RoaXMuZG9tYWluc0xvY2FsaXphdGlvbktleV1bZG9tYWluPy5zcGxpdCgvWyAtXSsvKS5qb2luKFwiX1wiKS50b1VwcGVyQ2FzZSgpXSA/PyBkb21haW47XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkcm9wZG93bi1ib2R5XCIgKm5nSWY9XCIhc2hvd0ZpbHRlcmVkOyBlbHNlIGZpbHRlclwiPlxyXG4gIDx0bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1sYW5ndWFnZS1saXN0ICpuZ0lmPVwic2hvd0xhbmd1YWdlc1wiIFtsYW5ndWFnZXNdPVwiZ3JvdXBlZExhbmd1YWdlc1wiXHJcbiAgICBbYWN0aXZlQ29kZV09XCJhY3RpdmVMYW5ndWFnZUNvZGVcIiAoY2xpY2tlZCk9XCJsYW5ndWFnZUNsaWNrKCRldmVudClcIiBbc2hvd1RpdGxlXT1cInNob3dMYW5ndWFnZVRpdGxlXCIgW21lbnVTdGF0ZV09XCJtZW51U3RhdGVcIj5cclxuICA8L3RsZC10cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWxhbmd1YWdlLWxpc3Q+XHJcbiAgPHRsZC10cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLXN5c3RlbS1saXN0ICpuZ0lmPVwic2hvd1N5c3RlbXMgJiYgc3lzdGVtTGlzdD8ubGVuZ3RoPiAwXCIgW3N5c3RlbXNdPVwic3lzdGVtTGlzdFwiXHJcbiAgICAoY2xpY2tlZCk9XCJzeXN0ZW1DbGljaygkZXZlbnQpXCIgW3Nob3dUaXRsZV09XCJzaG93U3lzdGVtVGl0bGVcIiBbdGl0bGVLZXldPVwic3lzdGVtTGlzdFRpdGxlXCJcclxuICAgIFthY3RpdmVJZF09XCJhY3RpdmVTeXN0ZW1JZFwiPlxyXG4gIDwvdGxkLXRyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItc3lzdGVtLWxpc3Q+XHJcbjwvZGl2PlxyXG48bmctdGVtcGxhdGUgI2ZpbHRlcj5cclxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyZWQtaXRlbXNcIj5cclxuICAgIDx1bD5cclxuICAgICAgPGxpPlxyXG4gICAgICAgIDx0cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWJ1dHRvbiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgZmlsdGVyZWRMYW5ndWFnZXNcIlxyXG4gICAgICAgICAgW2FjdGl2ZV09XCJhY3RpdmVMYW5ndWFnZUNvZGUgPT09IGxhbmd1YWdlLmNvZGVcIiAob25DbGljayk9XCJmaWx0ZXJlZExhbmd1YWdlQ2xpY2sobGFuZ3VhZ2UpXCI+XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImxhbmd1YWdlLmRpc3BsYXlOYW1lXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1idXR0b24+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG4gICAgPHAgY2xhc3M9XCJuby1yZXN1bHRzLW1lc3NhZ2VcIiAqbmdJZj1cIiFmaWx0ZXJlZExhbmd1YWdlcz8ubGVuZ3RoXCI+e3tcIlNZU1RFTV9QSUNLRVIuRklMVEVSX05PX1JFU1VMVFNcIiB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L3A+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93bi1ib2R5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC10b29sdGlwL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXIvZHJvcGRvd24tYm9keS90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWRyb3Bkb3duLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRvb2x0aXAvdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci9kcm9wZG93bi1ib2R5L3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItZHJvcGRvd24tYm9keS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBYyx1QkFBdUIsRUFBNEIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQXNCLFVBQVUsRUFBb0IsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7QUFZN0UsTUFBTSxPQUFPLDRDQUE0QztJQXdEcEM7SUFDQTtJQUNBO0lBQ0E7SUF6RG5CLElBQWEsVUFBVSxDQUFDLEdBQVc7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ1EsTUFBTSxDQUFxQjtJQUUxQixhQUFhLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO0lBQ3JGLGVBQWUsR0FBcUMsSUFBSSxZQUFZLEVBQXNCLENBQUM7SUFDM0YsdUJBQXVCLEdBQXFDLElBQUksWUFBWSxFQUFzQixDQUFDO0lBRTdHLFNB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LENBQUM7SUFDbkksQ0FBQzt3R0E1T1UsNENBQTRDOzRGQUE1Qyw0Q0FBNEMsZ1JDaEJ6RCx5d0NBdUJBOzs0RkRQYSw0Q0FBNEM7a0JBTHhELFNBQVM7K0JBQ0UsNkNBQTZDOzZPQU0xQyxVQUFVO3NCQUF0QixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csdUJBQXVCO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2ZURhdGEsIEZpbHRlcldpdGhIaWdobGlnaHRQaXBlLCBMYW5ndWFnZVRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRHJvcGRvd25Cb2R5Q29uZmlnLCBPcGVuZWRNZW51LCBUcmFuc2xhdGVkU3lzdGVtIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgR3JvdXBlZExhbmd1YWdlSXRlbSB9IGZyb20gJy4uL21vZGVscy9ncm91cGVkLWxhbmd1YWdlLWl0ZW0nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVkTGFuZ3VhZ2UgfSBmcm9tICcuLi9tb2RlbHMvdHJhbnNsYXRlZC1sYW5ndWFnZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU3lzdGVtUGlja2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93bi1ib2R5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1kcm9wZG93bi1ib2R5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWRyb3Bkb3duLWJvZHkuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRpb25TeXN0ZW1QaWNrZXJEcm9wZG93bkJvZHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBzZXQgZmlsdGVyVGV4dCh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5maWx0ZXJMYW5ndWFnZXModmFsKTtcclxuICB9XHJcbiAgQElucHV0KCkgY29uZmlnOiBEcm9wZG93bkJvZHlDb25maWc7XHJcblxyXG4gIEBPdXRwdXQoKSBvblN5c3RlbUNsaWNrOiBFdmVudEVtaXR0ZXI8VHJhbnNsYXRlZFN5c3RlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyYW5zbGF0ZWRTeXN0ZW0+KCk7XHJcbiAgQE91dHB1dCgpIG9uTGFuZ3VhZ2VDbGljazogRXZlbnRFbWl0dGVyPFRyYW5zbGF0ZWRMYW5ndWFnZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyYW5zbGF0ZWRMYW5ndWFnZT4oKTtcclxuICBAT3V0cHV0KCkgb25GaWx0ZXJlZExhbmd1YWdlQ2xpY2s6IEV2ZW50RW1pdHRlcjxUcmFuc2xhdGVkTGFuZ3VhZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmFuc2xhdGVkTGFuZ3VhZ2U+KCk7XHJcblxyXG4gIG1lbnVTdGF0ZTogT3BlbmVkTWVudTtcclxuICBzeXN0ZW1MaXN0OiBUcmFuc2xhdGVkU3lzdGVtW107XHJcbiAgc3lzdGVtTGlzdFRpdGxlOiBzdHJpbmc7XHJcbiAgc2hvd0ZpbHRlcmVkOiBib29sZWFuO1xyXG5cclxuICBnZXQgc2hvd1N5c3RlbXMoKSB7IHJldHVybiAhdGhpcy5jb25maWc/LmhpZGVTeXN0ZW1zOyB9XHJcbiAgZ2V0IHNob3dMYW5ndWFnZXMoKSB7IHJldHVybiAhdGhpcy5jb25maWc/LmhpZGVMYW5ndWFnZXM7IH1cclxuICBnZXQgc2hvd1N5c3RlbVRpdGxlKCkgeyByZXR1cm4gIXRoaXMuY29uZmlnPy5oaWRlU3lzdGVtVGl0bGU7IH07XHJcbiAgZ2V0IHNob3dMYW5ndWFnZVRpdGxlKCkgeyByZXR1cm4gdGhpcy5jb25maWc/LnNob3dMYW5ndWFnZVRpdGxlOyB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZlRGF0YTogQWN0aXZlRGF0YTtcclxuICBwcml2YXRlIHN5c3RlbVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbGFuZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbWVudVRvZ2dsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIC8vIFN0b3JlcyBmcm9tIGxvY2FsaXphdGlvbiBmaWxlIGxhbmd1YWdlIHRyYW5zbGF0aW9uc1xyXG4gIC8vIFRoaXMgbmVlZHMgdG8gYmUgc3RvcmVkIGhlcmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gdG1lcGxhdGUgbmVlZHMgdG8gYmUgYnkgY3VycmVudCBsYW5ndWFnZVxyXG4gIC8vIHBvc3NpYmxlIHRvIHVzZSBzb3J0VHJhbnNsYXRpb25zIHBpcGUgZnJvbSBjb21tb24gbGliLCBidXQgZGVjaWRlZCBub3QgdG8gYmVjYXVzZSBoZXJlIHdlIHN0aWxsIG5lZWQgdG8gZ3JvdXAgbGFuZ3VhZ2VzIGJ5IGZpcnN0IGxldHRlci5cclxuICBwcml2YXRlIGxhbmd1YWdlQW5kRG9tYWluVHJhbnNsYXRpb25zOiBzdHJpbmdbXVtdO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGxhbmd1YWdlc0xvY2FsaXphdGlvbktleSA9IFwiTEFOR1VBR0VTXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkb21haW5zTG9jYWxpemF0aW9uS2V5ID0gXCJET01BSU5TXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWNlbnRTeXN0ZW1UaXRsZUtleSA9IFwiU1lTVEVNX1BJQ0tFUi5SRUNFTlRfU1lTVEVNX1RJVExFXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkb21haW5zVGl0bGVLZXkgPSBcIlNZU1RFTV9QSUNLRVIuU0VMRUNUX0RPTUFJTlwiO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVySGlnaGxpZ2h0UGlwZSA9IG5ldyBGaWx0ZXJXaXRoSGlnaGxpZ2h0UGlwZSgpO1xyXG5cclxuICBnZXQgcmVjZW50U3lzdGVtcygpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGE/LnJlY2VudFN5c3RlbXMgPz8gW107XHJcbiAgfVxyXG5cclxuICBnZXQgZG9tYWlucygpIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGE/LmRvbWFpbnM/LmRvbWFpbnMgPz8gW107XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlU3lzdGVtSWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEYXRhPy5sYW5ndWFnZUlkO1xyXG4gIH1cclxuXHJcbiAgYWxsTGFuZ3VhZ2VzOiBUcmFuc2xhdGVkTGFuZ3VhZ2VbXTtcclxuICBmaWx0ZXJlZExhbmd1YWdlczogVHJhbnNsYXRlZExhbmd1YWdlW107XHJcblxyXG4gIGdyb3VwZWRMYW5ndWFnZXM6IEdyb3VwZWRMYW5ndWFnZUl0ZW1bXTtcclxuICAvLyBFaXRoZXIgc291cmNlIG9yIHRhcmdldCBsYW5nIGNvZGUsIGRlcGVuZGluZyBvbiB3aGljaCBvbmUgaXMgb3BlbmVkLlxyXG4gIGFjdGl2ZUxhbmd1YWdlQ29kZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtTWFuYWdlbWVudFNlcnZpY2U6IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN5c3RlbVBpY2tlclNlcnZpY2U6IFRyYW5zbGF0aW9uU3lzdGVtUGlja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW51U3RhdGUgPSB0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2Uub3BlbmVkTWVudTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmliZVRvQWN0aXZlU3lzdGVtRGF0YSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvTWVudVRvZ2dsZSgpO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLmNsb3NlT3BlbmVkKCk7XHJcbiAgICB0aGlzLnN5c3RlbVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLm1lbnVUb2dnbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLmNsb3NlT3BlbmVkKCk7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJMYW5ndWFnZXMoZmlsdGVyOiBzdHJpbmcpIHtcclxuICAgIGlmICghZmlsdGVyPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZExhbmd1YWdlcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2hvd0ZpbHRlcmVkID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dGaWx0ZXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLmZpbHRlcmVkTGFuZ3VhZ2VzID0gdGhpcy5maWx0ZXJIaWdobGlnaHRQaXBlLnRyYW5zZm9ybSh0aGlzLmFsbExhbmd1YWdlcywgZmlsdGVyLCBcImRpc3BsYXlOYW1lXCIpO1xyXG4gIH1cclxuXHJcbiAgbGFuZ3VhZ2VDbGljayhsYW5ndWFnZTogVHJhbnNsYXRlZExhbmd1YWdlKSB7XHJcbiAgICB0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2UubGFuZ3VhZ2VTZWxlY3RlZChsYW5ndWFnZSk7XHJcbiAgICB0aGlzLm9uTGFuZ3VhZ2VDbGljay5lbWl0KGxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIGZpbHRlcmVkTGFuZ3VhZ2VDbGljayhsYW5ndWFnZTogVHJhbnNsYXRlZExhbmd1YWdlKSB7XHJcbiAgICB0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2UubGFuZ3VhZ2VTZWxlY3RlZChsYW5ndWFnZSk7XHJcbiAgICB0aGlzLm9uRmlsdGVyZWRMYW5ndWFnZUNsaWNrLmVtaXQobGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgc3lzdGVtQ2xpY2soc3lzdGVtOiBUcmFuc2xhdGVkU3lzdGVtKSB7XHJcbiAgICB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmNoYW5nZVN5c3RlbShzeXN0ZW0ubGFuZ3VhZ2VJZCk7XHJcbiAgICB0aGlzLm9uU3lzdGVtQ2xpY2suZW1pdChzeXN0ZW0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb01lbnVUb2dnbGUoKSB7XHJcbiAgICB0aGlzLm1lbnVUb2dnbGVTdWJzY3JpcHRpb24gPSB0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2UubWVudVRvZ2dsZWQoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChzdGF0ZSkgPT4geyB0aGlzLm9uTWVudVRvZ2dsZShzdGF0ZSk7IH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uTWVudVRvZ2dsZShzdGF0ZTogT3BlbmVkTWVudSkge1xyXG4gICAgaWYgKHRoaXMubWVudVN0YXRlICE9PSBzdGF0ZSkge1xyXG4gICAgICB0aGlzLm1lbnVTdGF0ZSA9IHN0YXRlO1xyXG4gICAgICB0aGlzLnNldEFjdGl2ZUxhbmd1YWdlQ29kZSgpO1xyXG4gICAgICB0aGlzLnJldHJhbnNsYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFjdGl2ZUxhbmd1YWdlQ29kZSgpIHtcclxuICAgIGlmICghdGhpcy5hY3RpdmVEYXRhKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tZW51U3RhdGUgPT09IE9wZW5lZE1lbnUuU09VUkNFKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTGFuZ3VhZ2VDb2RlID0gdGhpcy5hY3RpdmVEYXRhLnNvdXJjZUxhbmcubGFuZztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMubWVudVN0YXRlID09PSBPcGVuZWRNZW51LlRBUkdFVCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUxhbmd1YWdlQ29kZSA9IHRoaXMuYWN0aXZlRGF0YS50YXJnZXRMYW5nLmxhbmc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hY3RpdmVMYW5ndWFnZUNvZGUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0FjdGl2ZVN5c3RlbURhdGEoKSB7XHJcbiAgICB0aGlzLnN5c3RlbVN1YnNjcmlwdGlvbiA9IHRoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2UuZ2V0QWN0aXZlRGF0YSgpLnN1YnNjcmliZShcclxuICAgICAgKGFjdGl2ZSkgPT4ge1xyXG4gICAgICAgIGlmICghYWN0aXZlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFjdGl2ZURhdGEgPSBhY3RpdmU7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVMYW5ndWFnZUNvZGUoKTtcclxuICAgICAgICB0aGlzLnJldHJhbnNsYXRlKCk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvTGFuZ3VhZ2VDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZS5zdHJlYW0oW3RoaXMubGFuZ3VhZ2VzTG9jYWxpemF0aW9uS2V5LCB0aGlzLmRvbWFpbnNMb2NhbGl6YXRpb25LZXldKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5sYW5ndWFnZUFuZERvbWFpblRyYW5zbGF0aW9ucyA9IGRhdGE7XHJcbiAgICAgIHRoaXMucmV0cmFuc2xhdGUoKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJldHJhbnNsYXRlKCkge1xyXG4gICAgLy8gY2FudCByZXRyYW5zbGF0ZSBpZiBib3RoIG9mIHRoZXNlIHZhbHVlcyBhcmUgbm90IGxvYWRlZCB5ZXIuIFRoaXMgY29uZGl0aW9uIHNob3VsZCBmdWxmaWxsIG9ubHkgb24gZmlyc3QgdGltZS5cclxuICAgIGlmICghKHRoaXMubGFuZ3VhZ2VBbmREb21haW5UcmFuc2xhdGlvbnMgJiYgdGhpcy5hY3RpdmVEYXRhKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGVTeXN0ZW1zKCk7XHJcbiAgICB0aGlzLnNvcnRMYW5ndWFnZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIE1ldGhvZCBwcmVwYXJlcyBvYmplY3RzIGZvciByZWNlbnQgc3lzdGVtcyBvciBkb21haW5zLCBkZXBlbmRpbmcgb24gd2hpY2ggbWVudSBpcyBvcGVuZWQuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTeXN0ZW1zKCkge1xyXG4gICAgaWYgKHRoaXMuc3lzdGVtUGlja2VyU2VydmljZS5pc1NvdXJjZU9wZW5lZCkge1xyXG4gICAgICB0aGlzLnN5c3RlbUxpc3QgPSB0aGlzLmdldFRyYW5zbGF0ZWRSZWNlbnRTeXN0ZW1zKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2UuaXNUYXJnZXRPcGVuZWQpIHtcclxuICAgICAgdGhpcy5zeXN0ZW1MaXN0ID0gdGhpcy5nZXRUcmFuc2xhdGVkRG9tYWlucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUcmFuc2xhdGVkRG9tYWlucygpOiBUcmFuc2xhdGVkU3lzdGVtW10ge1xyXG4gICAgdGhpcy5zeXN0ZW1MaXN0VGl0bGUgPSB0aGlzLmRvbWFpbnNUaXRsZUtleTtcclxuICAgIGNvbnN0IGFycjogVHJhbnNsYXRlZFN5c3RlbVtdID0gW107XHJcbiAgICB0aGlzLmRvbWFpbnMuZm9yRWFjaChkb21haW4gPT4ge1xyXG4gICAgICBhcnIucHVzaCh7IGRpc3BsYXlOYW1lOiB0aGlzLmdldERvbWFpbkRpc3BsYXlOYW1lKGRvbWFpbi50aXRsZSksIGxhbmd1YWdlSWQ6IGRvbWFpbi5sYW5ndWFnZUlkIH0pXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhcnI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFRyYW5zbGF0ZWRSZWNlbnRTeXN0ZW1zKCk6IFRyYW5zbGF0ZWRTeXN0ZW1bXSB7XHJcbiAgICB0aGlzLnN5c3RlbUxpc3RUaXRsZSA9IHRoaXMucmVjZW50U3lzdGVtVGl0bGVLZXk7XHJcbiAgICBjb25zdCBhcnI6IFRyYW5zbGF0ZWRTeXN0ZW1bXSA9IFtdO1xyXG4gICAgdGhpcy5yZWNlbnRTeXN0ZW1zLmZvckVhY2goKHN5c3RlbSkgPT4ge1xyXG4gICAgICBjb25zdCB0cmFuc2xhdGVkOiBUcmFuc2xhdGVkU3lzdGVtID0ge1xyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHt0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZUNvZGVUcmFuc2xhdGlvbihzeXN0ZW0uc291cmNlTGFuZ3VhZ2UpfSAtICR7dGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2VDb2RlVHJhbnNsYXRpb24oc3lzdGVtLnRhcmdldExhbmd1YWdlKX0gKCR7dGhpcy5nZXREb21haW5EaXNwbGF5TmFtZShzeXN0ZW0uZG9tYWluKX0pYFxyXG4gICAgICB9XHJcbiAgICAgIGFyci5wdXNoKHRyYW5zbGF0ZWQpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYXJyID8/IFtdO1xyXG4gIH1cclxuXHJcbiAgLy8gU29ydHMgbGFuZ3VhZ2VzIGFuZCBzZXRzIHRoZW0gdG8gR3JvdXBlZExhbmd1YWdlSXRlbSBzdHJ1Y3R1cmVcclxuICBwcml2YXRlIHNvcnRMYW5ndWFnZXMoKSB7XHJcbiAgICBsZXQgbGFuZ3VhZ2VMaXN0OiBhbnlbXTtcclxuICAgIGlmICh0aGlzLnN5c3RlbVBpY2tlclNlcnZpY2UuaXNTb3VyY2VPcGVuZWQpIHtcclxuICAgICAgbGFuZ3VhZ2VMaXN0ID0gdGhpcy5hY3RpdmVEYXRhLnNvdXJjZUxhbmdMaXN0O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5zeXN0ZW1QaWNrZXJTZXJ2aWNlLmlzVGFyZ2V0T3BlbmVkKSB7XHJcbiAgICAgIGxhbmd1YWdlTGlzdCA9IHRoaXMuYWN0aXZlRGF0YS50YXJnZXRMYW5nTGlzdDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hbGxMYW5ndWFnZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmdyb3VwZWRMYW5ndWFnZXMgPSB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmdldFVuaXF1ZUxhbmd1YWdlcyhsYW5ndWFnZUxpc3QpXHJcbiAgICAgIC5yZWR1Y2UoKG5ld0FycmF5OiBHcm91cGVkTGFuZ3VhZ2VJdGVtW10sIGN1cnIpID0+IHtcclxuICAgICAgICBjb25zdCB0cmFuc2xhdGVkTGFuZ3VhZ2U6IFRyYW5zbGF0ZWRMYW5ndWFnZSA9IHsgY29kZTogY3VyciwgZGlzcGxheU5hbWU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlQ29kZVRyYW5zbGF0aW9uKGN1cnIudG9VcHBlckNhc2UoKSkgfTtcclxuICAgICAgICBjb25zdCBmaXJzdExldHRlciA9IHRyYW5zbGF0ZWRMYW5ndWFnZS5kaXNwbGF5TmFtZVswXS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGNvbnN0IGlkeCA9IG5ld0FycmF5LmZpbmRJbmRleChlID0+IGUuZ3JvdXBlZEJ5ID09PSBmaXJzdExldHRlcik7XHJcbiAgICAgICAgdGhpcy5hbGxMYW5ndWFnZXMucHVzaCh0cmFuc2xhdGVkTGFuZ3VhZ2UpO1xyXG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XHJcbiAgICAgICAgICBuZXdBcnJheS5wdXNoKHsgZ3JvdXBlZEJ5OiBmaXJzdExldHRlciwgZ3JvdXA6IFt0cmFuc2xhdGVkTGFuZ3VhZ2VdIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIG5ld0FycmF5W2lkeF0uZ3JvdXAucHVzaCh0cmFuc2xhdGVkTGFuZ3VhZ2UpO1xyXG4gICAgICAgICAgbmV3QXJyYXlbaWR4XS5ncm91cC5zb3J0KChyMSwgcjIpID0+IHIxLmRpc3BsYXlOYW1lID4gcjIuZGlzcGxheU5hbWUgPyAxIDogLTEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3QXJyYXk7XHJcbiAgICAgIH0sIFtdKVxyXG4gICAgICAuc29ydCgoZTEsIGUyKSA9PiBlMS5ncm91cGVkQnkgPiBlMi5ncm91cGVkQnkgPyAxIDogLTEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREb21haW5EaXNwbGF5TmFtZShkb21haW46IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VBbmREb21haW5UcmFuc2xhdGlvbnNbdGhpcy5kb21haW5zTG9jYWxpemF0aW9uS2V5XVtkb21haW4/LnNwbGl0KC9bIC1dKy8pLmpvaW4oXCJfXCIpLnRvVXBwZXJDYXNlKCldID8/IGRvbWFpbjtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRyb3Bkb3duLWJvZHlcIiAqbmdJZj1cIiFzaG93RmlsdGVyZWQ7IGVsc2UgZmlsdGVyXCI+XHJcbiAgPHRsZC10cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWxhbmd1YWdlLWxpc3QgKm5nSWY9XCJzaG93TGFuZ3VhZ2VzXCIgW2xhbmd1YWdlc109XCJncm91cGVkTGFuZ3VhZ2VzXCJcclxuICAgIFthY3RpdmVDb2RlXT1cImFjdGl2ZUxhbmd1YWdlQ29kZVwiIChjbGlja2VkKT1cImxhbmd1YWdlQ2xpY2soJGV2ZW50KVwiIFtzaG93VGl0bGVdPVwic2hvd0xhbmd1YWdlVGl0bGVcIiBbbWVudVN0YXRlXT1cIm1lbnVTdGF0ZVwiPlxyXG4gIDwvdGxkLXRyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItbGFuZ3VhZ2UtbGlzdD5cclxuICA8dGxkLXRyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItc3lzdGVtLWxpc3QgKm5nSWY9XCJzaG93U3lzdGVtcyAmJiBzeXN0ZW1MaXN0Py5sZW5ndGg+IDBcIiBbc3lzdGVtc109XCJzeXN0ZW1MaXN0XCJcclxuICAgIChjbGlja2VkKT1cInN5c3RlbUNsaWNrKCRldmVudClcIiBbc2hvd1RpdGxlXT1cInNob3dTeXN0ZW1UaXRsZVwiIFt0aXRsZUtleV09XCJzeXN0ZW1MaXN0VGl0bGVcIlxyXG4gICAgW2FjdGl2ZUlkXT1cImFjdGl2ZVN5c3RlbUlkXCI+XHJcbiAgPC90bGQtdHJhbnNsYXRpb24tc3lzdGVtLXBpY2tlci1zeXN0ZW0tbGlzdD5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjZmlsdGVyPlxyXG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXJlZC1pdGVtc1wiPlxyXG4gICAgPHVsPlxyXG4gICAgICA8bGk+XHJcbiAgICAgICAgPHRyYW5zbGF0aW9uLXN5c3RlbS1waWNrZXItYnV0dG9uICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBmaWx0ZXJlZExhbmd1YWdlc1wiXHJcbiAgICAgICAgICBbYWN0aXZlXT1cImFjdGl2ZUxhbmd1YWdlQ29kZSA9PT0gbGFuZ3VhZ2UuY29kZVwiIChvbkNsaWNrKT1cImZpbHRlcmVkTGFuZ3VhZ2VDbGljayhsYW5ndWFnZSlcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwibGFuZ3VhZ2UuZGlzcGxheU5hbWVcIj48L3NwYW4+XHJcbiAgICAgICAgPC90cmFuc2xhdGlvbi1zeXN0ZW0tcGlja2VyLWJ1dHRvbj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgICA8cCBjbGFzcz1cIm5vLXJlc3VsdHMtbWVzc2FnZVwiICpuZ0lmPVwiIWZpbHRlcmVkTGFuZ3VhZ2VzPy5sZW5ndGhcIj57e1wiU1lTVEVNX1BJQ0tFUi5GSUxURVJfTk9fUkVTVUxUU1wiIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19