iptdevs-design-system 3.2.118 → 3.2.120

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,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF5bWVudEdhdGV3YXkubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvcmUvbW9kZWxzL1BheW1lbnRHYXRld2F5L1BheW1lbnRHYXRld2F5Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJU3R1ZGVudFBlbmRpbmdGZWVzUnMge1xuICBpcF9hcHBsaWNhbnQ6IHN0cmluZztcbiAgc3RhdHVzOiAgICAgICAgbnVtYmVyO1xuICBtZXNzYWdlOiAgICAgICBJTWVzc2FnZVdwUnM7XG4gIGRhdGE6ICAgICAgICAgIElTdHVkZW50UGVuZGluZ0ZlZVJzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1lc3NhZ2VXcFJzIHtcbiAgICBjb2RlOiBudW1iZXI7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdHVkZW50UGVuZGluZ0ZlZVJzIHtcbiAgY29kZTogICAgICAgICAgICAgICAgbnVtYmVyO1xuICBjb2Q6ICAgICAgICAgICAgICAgICBudW1iZXI7XG4gIHRpbWVseV9kYXRlOiAgICAgICAgIHN0cmluZztcbiAgYW1vdW50OiAgICAgICAgICAgICAgbnVtYmVyO1xuICBmZWVfbnVtYmVyOiAgICAgICAgICBudW1iZXI7XG4gIHN0YXR1czogICAgICAgICAgICAgIG51bWJlcjtcbiAgdXBkYXRlZF9hbW91bnRfYnk6ICAgbnVtYmVyIHwgbnVsbDtcbiAgdXBkYXRlZF9ieTogICAgICAgICAgbnVtYmVyO1xuICBkZWxldGVkX2F0OiAgICAgICAgICBzdHJpbmcgfCBudWxsO1xuICB1cGRhdGVkX2F0OiAgICAgICAgICBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6ICAgICAgICAgIHN0cmluZztcbiAgZGF5VmVuYzogICAgICAgICAgICAgbnVtYmVyO1xuICBjb2xvckRheTogICAgICAgICAgICBzdHJpbmc7XG4gIHNlbGVjdGVkPzogICAgICAgICAgIGJvb2xlYW47XG4gIHBhcnRpYWxBbW91bnQ/OiAgICAgIG51bWJlcjtcbiAgaXNQYXJ0aWFsPzogICAgICAgICAgYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGF5bWVudFNlbGVjdGlvblJzIHtcbiAgc2VsZWN0ZWRGZWVzOiAgICBJU3R1ZGVudFBlbmRpbmdGZWVSc1tdO1xuICB0b3RhbEFtb3VudDogICAgIG51bWJlcjtcbiAgaXNQYXJ0aWFsTW9kZTogICBib29sZWFuO1xuICBwYXJ0aWFsQW1vdW50OiAgIG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJV29tcGlQYXltZW50UnEge1xuICB0b2tlbjogICAgICAgICAgICAgIHN0cmluZztcbiAgZmVlX2NvZGVzOiAgICAgICAgICBudW1iZXJbXTtcbiAgYW1vdW50X2luX2NlbnRzOiAgICBudW1iZXI7XG4gIGN1c3RvbWVyX3R5cGVfaWRfY2FyZDogbnVtYmVyO1xuICBjdXN0b21lcl9pZF9jYXJkOiAgIHN0cmluZztcbiAgY3VzdG9tZXJfZnVsbF9uYW1lOiBzdHJpbmc7XG4gIGN1c3RvbWVyX3Bob25lX2luZGljYXRpdmU6IG51bWJlcjtcbiAgY3VzdG9tZXJfcGhvbmU6ICAgICBzdHJpbmc7XG4gIGN1c3RvbWVyX2VtYWlsOiAgICAgc3RyaW5nO1xuICB0eXBlX2N1cnJlbmN5OiAgICAgIG51bWJlcjtcbiAgdHlwZV9lbnZpcm9ubWVudDogICBudW1iZXI7XG4gIHBheW1lbnRfbWV0aG9kOiAgICAgbnVtYmVyO1xuICBpc19wYXJ0aWFsOiAgICAgICAgIGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdvbXBpUGF5bWVudFJzIHtcbiAgY2hlY2tvdXRfdXJsOiAgc3RyaW5nO1xuICByZWZlcmVuY2U6ICAgICBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uX2lkPzogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdldFRyYW5zYWN0aW9uc0J5VXNlckNvZGVScSB7XG4gICAgdG9rZW46IHN0cmluZztcbiAgICB1c2VyX2NvZGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJV3BUcmFuc2FjdGlvblJzIHtcbiAgICB3cF9wYXltZW50X2dhdGV3YXlfdHJhbnNhY3Rpb25fY29kZTogbnVtYmVyO1xuICAgIHdwX3BheW1lbnRfbWV0aG9kOiBzdHJpbmc7XG4gICAgd3BfcmVmZXJlbmNlOiBzdHJpbmc7XG4gICAgd3BfdHJhbnNhY3Rpb25fYW1vdW50OiBudW1iZXI7XG4gICAgd3Bfc3RhdHVzOiBzdHJpbmc7XG4gICAgY3VzdG9tZXJfdHlwZV9pZF9jYXJkOiBudW1iZXI7XG4gICAgY3VzdG9tZXJfaWRfY2FyZDogc3RyaW5nO1xuICAgIGN1c3RvbWVyX2Z1bGxfbmFtZTogc3RyaW5nO1xuICAgIGN1c3RvbWVyX2VtYWlsOiBzdHJpbmc7XG4gICAgY3VzdG9tZXJfcGhvbmU6IHN0cmluZztcbiAgICBmZWVzOiBJV3BGZWVSc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElXcEZlZVJzIHtcbiAgICB3cF90cmFuc2FjdGlvbl9jb2RlOiBudW1iZXI7XG4gICAgY29kX3BheW1lbnRfY29kZTogbnVtYmVyO1xuICAgIHdwX3N0YXR1czogc3RyaW5nO1xuICAgIGZlZV9hbW91bnQ6IG51bWJlcjtcbiAgICBmZWVfbnVtYmVyOiBudW1iZXI7XG4gICAgdG90YWxfY3JlZGl0czogbnVtYmVyO1xuICAgIHdwX2FwcGxpZWQ6IG51bWJlcjtcbiAgICBhbW91bnRfZHVlOiBudW1iZXI7XG4gICAgZmVlX2R1ZV9kYXRlOiBzdHJpbmc7XG4gICAgZmVlX2NyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICBwYXltZW50X2JpbGxzOiBJV3BQYXltZW50QmlsbFJzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdwUGF5bWVudEJpbGxScyB7XG4gICAgY29kZTogbnVtYmVyO1xuICAgIGFtb3VudDogbnVtYmVyO1xuICAgIHBheW1lbnRfbWV0aG9kOiBzdHJpbmc7XG4gICAgcGF5bWVudF9kYXRlOiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF5bWVudEdhdGV3YXkubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvcmUvbW9kZWxzL1BheW1lbnRHYXRld2F5L1BheW1lbnRHYXRld2F5Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJU3R1ZGVudFBlbmRpbmdGZWVzUnMge1xuICBpcF9hcHBsaWNhbnQ6IHN0cmluZztcbiAgc3RhdHVzOiAgICAgICAgbnVtYmVyO1xuICBtZXNzYWdlOiAgICAgICBJTWVzc2FnZVdwUnM7XG4gIGRhdGE6ICAgICAgICAgIElTdHVkZW50UGVuZGluZ0ZlZVJzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1lc3NhZ2VXcFJzIHtcbiAgICBjb2RlOiBudW1iZXI7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdHVkZW50UGVuZGluZ0ZlZVJzIHtcbiAgY29kZTogICAgICAgICAgICAgICAgbnVtYmVyO1xuICBjb2Q6ICAgICAgICAgICAgICAgICBudW1iZXI7XG4gIHRpbWVseV9kYXRlOiAgICAgICAgIHN0cmluZztcbiAgYW1vdW50OiAgICAgICAgICAgICAgbnVtYmVyO1xuICBmZWVfbnVtYmVyOiAgICAgICAgICBudW1iZXI7XG4gIHN0YXR1czogICAgICAgICAgICAgIG51bWJlcjtcbiAgdXBkYXRlZF9hbW91bnRfYnk6ICAgbnVtYmVyIHwgbnVsbDtcbiAgdXBkYXRlZF9ieTogICAgICAgICAgbnVtYmVyO1xuICBkZWxldGVkX2F0OiAgICAgICAgICBzdHJpbmcgfCBudWxsO1xuICB1cGRhdGVkX2F0OiAgICAgICAgICBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6ICAgICAgICAgIHN0cmluZztcbiAgZGF5VmVuYzogICAgICAgICAgICAgbnVtYmVyO1xuICBjb2xvckRheTogICAgICAgICAgICBzdHJpbmc7XG4gIHNlbGVjdGVkPzogICAgICAgICAgIGJvb2xlYW47XG4gIHBhcnRpYWxBbW91bnQ/OiAgICAgIG51bWJlcjtcbiAgaXNQYXJ0aWFsPzogICAgICAgICAgYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGF5bWVudFNlbGVjdGlvblJzIHtcbiAgc2VsZWN0ZWRGZWVzOiAgICBJU3R1ZGVudFBlbmRpbmdGZWVSc1tdO1xuICB0b3RhbEFtb3VudDogICAgIG51bWJlcjtcbiAgaXNQYXJ0aWFsTW9kZTogICBib29sZWFuO1xuICBwYXJ0aWFsQW1vdW50OiAgIG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJV29tcGlQYXltZW50UnEge1xuICB0b2tlbjogICAgICAgICAgICAgIHN0cmluZztcbiAgZmVlX2NvZGVzOiAgICAgICAgICBudW1iZXJbXTtcbiAgYW1vdW50X2luX2NlbnRzOiAgICBudW1iZXI7XG4gIGN1c3RvbWVyX3R5cGVfaWRfY2FyZDogbnVtYmVyO1xuICBjdXN0b21lcl9pZF9jYXJkOiAgIHN0cmluZztcbiAgY3VzdG9tZXJfZnVsbF9uYW1lOiBzdHJpbmc7XG4gIGN1c3RvbWVyX3Bob25lX2luZGljYXRpdmU6IG51bWJlcjtcbiAgY3VzdG9tZXJfcGhvbmU6ICAgICBzdHJpbmc7XG4gIGN1c3RvbWVyX2VtYWlsOiAgICAgc3RyaW5nO1xuICB0eXBlX2N1cnJlbmN5OiAgICAgIG51bWJlcjtcbiAgdHlwZV9lbnZpcm9ubWVudDogICBudW1iZXI7XG4gIHBheW1lbnRfbWV0aG9kOiAgICAgbnVtYmVyO1xuICBpc19wYXJ0aWFsOiAgICAgICAgIGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdvbXBpUGF5bWVudFJzIHtcbiAgY2hlY2tvdXRfdXJsOiAgc3RyaW5nO1xuICByZWZlcmVuY2U6ICAgICBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uX2lkPzogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdldFRyYW5zYWN0aW9uc0J5VXNlckNvZGVScSB7XG4gICAgdG9rZW46IHN0cmluZztcbiAgICB1c2VyX2NvZGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJV3BUcmFuc2FjdGlvblJzIHtcbiAgICB3cF9wYXltZW50X2dhdGV3YXlfdHJhbnNhY3Rpb25fY29kZTogbnVtYmVyO1xuICAgIHdwX3BheW1lbnRfbWV0aG9kOiBzdHJpbmc7XG4gICAgd3BfcmVmZXJlbmNlOiBzdHJpbmc7XG4gICAgd3BfdHJhbnNhY3Rpb25fYW1vdW50OiBudW1iZXI7XG4gICAgd3Bfc3RhdHVzOiBzdHJpbmc7XG4gICAgY3VzdG9tZXJfdHlwZV9pZF9jYXJkOiBudW1iZXI7XG4gICAgY3VzdG9tZXJfaWRfY2FyZDogc3RyaW5nO1xuICAgIGN1c3RvbWVyX2Z1bGxfbmFtZTogc3RyaW5nO1xuICAgIGN1c3RvbWVyX2VtYWlsOiBzdHJpbmc7XG4gICAgY3VzdG9tZXJfcGhvbmU6IHN0cmluZztcbiAgICBmZWVzOiBJV3BGZWVSc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElXcEZlZVJzIHtcbiAgICB3cF90cmFuc2FjdGlvbl9jb2RlOiBudW1iZXI7XG4gICAgY29kX3BheW1lbnRfY29kZTogbnVtYmVyO1xuICAgIHdwX3N0YXR1czogc3RyaW5nO1xuICAgIGZlZV9hbW91bnQ6IG51bWJlcjtcbiAgICBmZWVfbnVtYmVyOiBudW1iZXI7XG4gICAgdG90YWxfY3JlZGl0czogbnVtYmVyO1xuICAgIHdwX2FwcGxpZWQ6IG51bWJlcjtcbiAgICBhbW91bnRfZHVlOiBudW1iZXI7XG4gICAgZmVlX2R1ZV9kYXRlOiBzdHJpbmc7XG4gICAgZmVlX2NyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICBwYXltZW50X2JpbGxzOiBJV3BQYXltZW50QmlsbFJzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdwUGF5bWVudEJpbGxScyB7XG4gICAgY29kZTogbnVtYmVyO1xuICAgIGFtb3VudDogbnVtYmVyO1xuICAgIHBheW1lbnRfbWV0aG9kOiBzdHJpbmc7XG4gICAgcGF5bWVudF9kYXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVVwZGF0ZVRyYW5zYWN0aW9uU3RhdHVzUnEge1xuICAgIHRva2VuPzogICAgICAgICAgICAgICAgICAgc3RyaW5nO1xuICAgIHJlZmVyZW5jZV9pcHQ/OiAgICAgICAgICAgc3RyaW5nO1xuICAgIG5ld19zdGF0dXM/OiAgICAgICAgICAgICAgc3RyaW5nO1xuICAgIG5ld193cF90cmFuc2FjdGlvbl9jb2RlPzogc3RyaW5nO1xuICAgIG5ld193cF9wYXltZW50X21ldGhvZD86ICAgc3RyaW5nO1xuICAgIHN0YXR1c19tZXNzYWdlX3Jlc3A/OiAgICAgc3RyaW5nO1xuICAgIHdwX3RyYW5zX3N0YXJ0ZWRfYXQ/OiAgICAgRGF0ZTtcbiAgICB3cF90cmFuc19maW5pc2hlZF9hdD86ICAgIERhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdvbXBpVHJhbnNhY3Rpb25QYXlsb2FkUnEge1xuICB0b2tlbjogICAgICAgICAgICAgICAgc3RyaW5nO1xuICB3b21waV90cmFuc2FjdGlvbl9pZDogbnVtYmVyO1xuICB0eXBlX2Vudmlyb25tZW50OiAgICAgc3RyaW5nO1xufVxuIl19
@@ -609,6 +609,16 @@ export class BudgetService extends IPTGeneralService {
609
609
  this.generateRequestParams(param);
610
610
  return this.http.post(serviceUrl, this.httpOptions);
611
611
  }
612
+ updateTransactionStatus(param) {
613
+ let serviceUrl = this.SERVICE_URL + 'update/transaction/status';
614
+ this.generateRequestParams(param);
615
+ return this.http.post(serviceUrl, this.httpOptions);
616
+ }
617
+ getWompiTransactionById(param) {
618
+ let serviceUrl = this.SERVICE_URL + 'get/wompi/transaction/by/id';
619
+ this.generateRequestParams(param);
620
+ return this.http.post(serviceUrl, this.httpOptions);
621
+ }
612
622
  }
613
623
  BudgetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: BudgetService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
614
624
  BudgetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: BudgetService, providedIn: 'root' });
@@ -618,4 +628,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
618
628
  providedIn: 'root'
619
629
  }]
620
630
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
621
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVkZ2V0LXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9idWRnZXQtc2VydmljZS9idWRnZXQtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFRM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxpQkFBaUI7SUFJbEQsWUFBb0IsSUFBZ0I7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBRjVCLGdCQUFXLEdBQUcsYUFBYSxDQUFDO1FBSWxDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkQsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFzQjtRQUNuQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLDJCQUEyQixDQUFDO1FBQ2hFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELGNBQWMsQ0FBQyxNQUFrQjtRQUMvQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLDZCQUE2QixDQUFDO1FBQ2xFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGNBQWMsQ0FBQyxN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QUM7SUFDdEQsQ0FBQztJQUVELHlCQUF5QixDQUFDLEtBQW1DO1FBQzNELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsK0JBQStCLENBQUM7UUFDcEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsK0JBQStCLENBQUMsS0FBbUM7UUFDakUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxzQ0FBc0MsQ0FBQztRQUMzRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7OzBHQTVzQlUsYUFBYTs4R0FBYixhQUFhLGNBRlosTUFBTTsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRkaXNjb3VudEFsbFJxLCBEaXNjb3VudFJxLCBEaXNjb3VudFVwZGF0ZVJxLCBJT2J0YWluQWxsQ291cnNld2FsbGV0LCBJQXNzaWduUmVxdWVzdFJxLCBJT2J0YWluQXZhaWxhYmxlQ291cnNlUnMsIElHZXRDb2RCeVBheW1lbnRQbGFuUnEsIElVcGRhdGVBbW91bnRDb2RQYXltZW50c1JxLCBJUGFyYW1zVXBkYXRlRGF0ZUNvZFBheW1lbnRzUnEsIElDYW5jZWxTdHVkZW50UmVjZWlwdFJxLCBJQ2FuY2VsbGVkUmVjZWlwdEJ5RGF0ZVJxLCBJUGF5bWVudHNSZWNlaXZlZEJ5VXNlclJxLCBJT2J0YWluQ291cnNlQnlDb29kRGlmZlBhcmFtUnEsIE5hbWVDb21tb25FeHBlbnNlcywgSU9idGFpblBheW1lbnRUcmFuSGlzdG9yeVJxLCBJT2J0YWluU3R1ZGVudFBheW1lbnRCeURpZmZQYXJhbVJxLCBJbmZvQ2FzaENsb3NpbmdScSwgSWNhc2hDbG9zaW5nRGF0ZVJxLCBJY2FzaENsb3NpbmdScSwgSXBheW1lbnRCaWxsRWdyZXNzUnEsIEluY29tZXNBbmRFZ3Jlc3NScSwgSU9iYXRpbkRldGFpbGVkSW5jb21lQnlVc2VyQW5kRGF0ZVJxLCBJT2JhdGluQmFsYWNlc0J5Q29vZGluYXRvclJxLCBTZW5kRW1haWxQYXltZW50LFNlbmRFbWFpbFBheW1lbnRDYW5jZWxsYXRpb25SUywgSVBheW1lbnRDb3JyZWxhdGl2ZVJxLCBJT2J0YWluR2F0ZXdheVBheW1lbnRSZWNvcmRScSwgSVVwZGF0ZUVwYXljb1BheW1lbnRScSwgSUVsZWN0cm9uaWNJbnZvaWNlUlMsIElBY2NvdW50c0JhbGFuY2VScSwgSUdldEZ1bGxQYXltZW50SW5mb3JtYXRpb25ScSwgSUdldEZ1bGxQYXltZW50SW5mb3JtYXRpb25ScywgSVNlYXJjaFBheW1lbnRCaWxsUnEsIElTZWFyY2hQYXltZW50QmlsbFJzLCBJR2V0U3VtbWFyeUJ5Q29vcmRpbmF0b3JScSwgSUFkZE5ld1F1b3RhV2l0aENvbW1lbnRzUnEsIElEZWxldGVRdW90YVJlY29yZFdpdGhDb21tZW50c1JxLCBJTW9kaWZ5UXVvdGFEYXRhV2l0aENvbW1lbnRzUnEsIElFZGl0SW5zdGFsbG1lbnRBbW91bldpdGhDb21tZW50c1JxLCBJQ291cnNlUGF5bWVudFJhbmdlUmVwb3J0UnEsIElDb3Vyc2VQYXltZW50UmFuZ2VSZXBvcnRScywgSVByZXZpZXdNb2RpZnlQYXltZW50UGxhblJxLCBJU2F2ZU1vZGlmaWVkUGF5bWVudFBsYW5ScSAgfSBmcm9tICcuLi8uLi9tb2RlbHMvYnVkZ2V0L2J1ZGdldC5tb2RlbCc7XG5pbXBvcnQgeyBJRnVsbENvZFN0dWRlbnRPdmVyZHVlQnlDb29yZGluYXRvclJxLCBJUGF5bWVudE92ZXJkdWVCeUNvb3JkaW5hdG9yQ291cnNlUnEsIElQYXltZW50T3ZlcmR1ZUJ5Q29vcmRpbmF0b3JScSwgSVBheW1lbnRSZWZlcmVuY2VScSwgSVRyYW5zZmVyLCBJVHJhbnNmZXJBc3NpZ25JbWFnZSwgSVRyYW5zZmVyQ3JlYXRlUnEsIElUcmFuc2ZlckRlbGV0ZVJxLCBJVHJhbnNmZXJHZXRBbGxScSwgSVRyYW5zZmVyR2V0UnEsIElUcmFuc2ZlclNlYXJjaFJxLCBJVHJhbnNmZXJTaG93SW1hZ2VScSwgSVRyYW5zZmVyU3RhdHVzVXBkYXRlUnEsIElUcmFuc2ZlclVwZGF0ZVJxLCBQYXltZW50QmlsbFJxLCBQYXltZW50QmlsbFJxMiwgUHJpY2VCeVR5cGVTZXJ2aWNlUnEsSURlbGV0ZUNvZFBheW1lbnRzUnEsSUNyZWF0ZUNvZFBheW1lbnRzUnEsIElUcmFuc2ZlclN0YXR1c1VwZGF0ZVJlcXVlc3RScSwgSVVwZGF0ZUVsZWN0cm9uaWNJbnZvaWNlUnEsIElWYWxpZGF0aW9uT2ZUcmFuc2ZlcnNCeU51bWJlclJxIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BheW1lbnQvcGF5bWVudC1ycS5tb2RlbCc7XG5pbXBvcnQgeyBJZ2V0Q291cnNlc0ZpbmlzaEFuZHVuYXNzaWduZWRScSB9IGZyb20gJy4uLy4uL21vZGVscy9yZXBvcnRzL3JlcG9ydHMubW9kZWwnO1xuaW1wb3J0IHsgSVBUR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlLWVudmlyb21lbnRzJztcbmltcG9ydCB7IElDb2RQYXltZW50UnEgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29kL2NvZC1ycS5tb2RlbCc7XG5pbXBvcnQgeyBJQ3JlYXRlVHJhbnNmZXJScSwgSVNlYXJjaFRyYW5zZmVyUnEsIElVcGRhdGVUcmFuc2ZlclJxIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyYW5zZmVyL3RyYW5zZmVyLm1vZGVsJztcbmltcG9ydCB7IElHZXRUcmFuc2FjdGlvbnNCeVVzZXJDb2RlUnEsIElXb21waVBheW1lbnRScSB9IGZyb20gJy4uLy4uL21vZGVscy9QYXltZW50R2F0ZXdheS9QYXltZW50R2F0ZXdheS5tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCdWRnZXRTZXJ2aWNlIGV4dGVuZHMgSVBUR2VuZXJhbFNlcnZpY2V7XG5cbiAgcHJpdmF0ZSBTRVJWSUNFX1VSTCA9ICdidWRnZXQvYXBpLyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLlNFUlZJQ0VfVVJMID0gdGhpcy5iYXNlVXJsKCkgKyB0aGlzLlNFUlZJQ0VfVVJMO1xuICB9XG5cbiAgZ2V0QWxsRGlzY291bnQodXNlcjogZ2V0ZGlzY291bnRBbGxScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvZGlzY291bnRzL2NvdXBvbi9hbGwnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXIpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG4gIGNyZWF0ZURpc2NvdW50KHBhcmFtczogRGlzY291bnRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvZGlzY291bnQvY291cG9uL2NyZWF0ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgdXBkYXRlRGlzY291bnQocGFyYW1zOiBEaXNjb3VudFVwZGF0ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9kaXNjb3VudC9jb3Vwb24vdXBkYXRlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFBheW1lbnRTdHVkZW50c0J5Q29kZShjb2RlU3R1ZGVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvY29kL3N0dWRlbnQvYnkvY29kZS8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50V2FsbGV0QnlDYW1wdXMoY29kZUNhbXB1czogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvd2FsbGV0L2J5L2NhbXB1cy8nICsgY29kZUNhbXB1cztcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIHBheW1lbnRCaWxsRHVlcyhwYXJhbXM6IFBheW1lbnRCaWxsUnEyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9wYXltZW50L2JpbGwvcmVnaXN0ZXIvZHVlcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBwYXltZW50QmlsbFNlcnZpY2VzKHBhcmFtczogUGF5bWVudEJpbGxScTIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvYmlsbC9yZWdpc3Rlci9zZXJ2aWNlcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRQYXltZW50QmlsbEFsbCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvcGF5bWVudC9iaWxsL2NhbmNlbGVkL2FsbCc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50QmlsbEJ5Q29kZShjb2RlUGF5bWVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAgJ2dldC9wYXltZW50L2JpbGwvY2FuY2VsZWQvYnkvY29kZS8nICsgY29kZVBheW1lbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50QmlsbEJ5U3R1ZGVudChjb2RlU3R1ZGVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAgJ2dldC9wYXltZW50L2JpbGwvY2FuY2VsZWQvYnkvc3R1ZGVudC8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50QmlsbEJ5UmVmZXJlbmNlKHJlZmVyZW5jZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvYmlsbC9jYW5jZWxlZC9ieS9yZWZlcmVuY2UvJyArIHJlZmVyZW5jZTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG5cbiAgZ2V0UHJpY2VCeVR5cGVTZXJ2aWNlKHBhcmFtczogUHJpY2VCeVR5cGVTZXJ2aWNlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9wcmljZS9ieS90eXBlL3NlcnZpY2UnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluQ291cnNlc0J5Q29vcmRpbmF0b3IocGFyYW1zOiBJT2J0YWluQWxsQ291cnNld2FsbGV0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jb3Vyc2Uvd2FsbGV0L3VzZXIvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0V2FsbGV0QnlDb2RlVXNlciAoY29kZVVzZXI6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC93YWxsZXQvYnkvY29kZS91c2VyLycgKyBjb2RlVXNlcjtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRwYXltZW50QmlsbEJ5V2FsbGV0Q29kZSAoY29kZVdhbGxldDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L29idGFpbi9wYXltZW50L2JpbGwvYnkvd2FsbGV0cy9ieS8nICsgY29kZVdhbGxldDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRwYXltZW50QmlsbEluY29tZSAoY29kZVdhbGxldDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvYmlsbC93YWxsZXRzL2NvZGUvZmlsdGVyL2luY29tZS8nICsgY29kZVdhbGxldDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRwYXltZW50QmlsbEVncmVzcyAoY29kZVdhbGxldDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvYmlsbC93YWxsZXRzL2NvZGUvZmlsdGVyL2VncmVzcy8nICsgY29kZVdhbGxldDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFBheW1lbnRPdmVyZHVlU3R1ZGVudCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICAnZ2V0L3BheW1lbnQvb3ZlcmR1ZS9hbGwvc3R1ZGVudCc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXREYXlQYXltZW50T3ZlcmR1ZVN0dWRlbnQoY29kZVN0dWRlbnQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9kYXkvcGF5bWVudC9vdmVyZHVlL3N0dWRlbnQvYnkvY29kZS8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50T3ZlcmR1ZUNvdXJzZUJ5Q29vcmRpbmF0b3IocGFyYW1zOiBJUGF5bWVudE92ZXJkdWVCeUNvb3JkaW5hdG9yUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvb3ZlcmR1ZS9jb3Vyc2UvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0UGF5bWVudE92ZXJkdWVTdHVkZW50QnlDb29yZGluYXRvcihwYXJhbXM6IElQYXltZW50T3ZlcmR1ZUJ5Q29vcmRpbmF0b3JScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9vdmVyZHVlL3N0dWRlbnQvYnkvY29vZGluYXRvcic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRQYXltZW50T3ZlcmR1ZVN0dWRlbnRCeUNvb3JkaW5hdG9yQW5kQ291cnNlQ29kZShwYXJhbXM6IElQYXltZW50T3ZlcmR1ZUJ5Q29vcmRpbmF0b3JDb3Vyc2VScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9vdmVyZHVlL3N0dWRlbnQvYnkvY29vZGluYXRvcmNvdXJzZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRPYnRhaW5Db2RTdHVkZW50QnlDb29yZGluYXRvcihwYXJhbXM6IElGdWxsQ29kU3R1ZGVudE92ZXJkdWVCeUNvb3JkaW5hdG9yUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9jb2Qvc3R1bmRlbnQvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0Q291cnNlc0ZpbmlzaEFuZHVuYXNzaWduZWQocGFyYW1zOiBJZ2V0Q291cnNlc0ZpbmlzaEFuZHVuYXNzaWduZWRScSk6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L2NvdXJzZS9ieS91c2VyL2J1ZGdldCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICAvLyBBc3NpbmdDb3Vyc2UocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAvLyAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2NvdXJzZS9ieS9jb2RlL3VzZXIvYnVkZ2V0L2Fzc2lnbic7XG4gIC8vICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIC8vIH1cbiAgQXNzaW5nQ291cnNlKHBhcmFtczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL2NvdXJzZS9hc3NpZ24vZGV0YWlsL2J5L2FkdmlzZXIvYnVkZ2V0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIEFzc2luZ0NvdXJzZXMocGFyYW1zOiBJQXNzaWduUmVxdWVzdFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jb3Vyc2UvYnkvdXNlci9idWRnZXQvYXNzaWduJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkFsbEF2YWlsYWJsZUNvdXJzZXNCeVN0dWRlbnQocGFyYW1zOiBJT2J0YWluQXZhaWxhYmxlQ291cnNlUnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9hbGwvYXZhaWxhYmxlL2NvdXJzZXMvYnkvc3R1ZGVudCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5PYnNlcnZhdGlvbkJ5Q29kU3R1ZGVudChwYXJhbXM6IElGdWxsQ29kU3R1ZGVudE92ZXJkdWVCeUNvb3JkaW5hdG9yUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9vYnNlcnZhcmlvbi9ieS9jb2Qvc3R1ZGV0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGFkbWluU3R1ZGVudEJ5Q29vcmRpbmF0b3IocGFyYW1zOiBJRnVsbENvZFN0dWRlbnRPdmVyZHVlQnlDb29yZGluYXRvclJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9hZG1pbi9zdHVkZW50L2J5L2Nvb3JkaW5hdG9yJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldENvZGJ5UGF5bWVudFBsYW5ScShwYXJhbXM6IElHZXRDb2RCeVBheW1lbnRQbGFuUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9jb2Qvc3R1bmRlbnQvcGF5bWVudHMvYnkvY29kZS91c2VyJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIFVwZGF0ZUFtb3VudENvZFBheW1lbnRzKHBhcmFtczogSVVwZGF0ZUFtb3VudENvZFBheW1lbnRzUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2NoYW5nZS9hbW91bnQvY29kL3BheW1lbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIFVwZGF0ZURhdGVDb2RQYXltZW50cyhwYXJhbXM6IElQYXJhbXNVcGRhdGVEYXRlQ29kUGF5bWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3B1dC9jaGFuZ2UvZGF0ZS9wYXltZW50L2NvZC9ieS9jb2QnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG4gIFVwZGF0ZURhdGVDb2RQYXltZW50c0ZvclBheW1lbnRQbGFuKHBhcmFtczogSVBhcmFtc1VwZGF0ZURhdGVDb2RQYXltZW50c1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jaGFuZ2UvZGF0ZS9wYXltZW50L2NvZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5QYXltZW50UmVjZWlwdEJ5Q29kZSAoY29kZVJlY2VpcHQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9vYnRhaW4vcGF5bWVudC9yZWNlaXB0L2J5L2NvZGUvJyArIGNvZGVSZWNlaXB0O1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluUGF5bWVudHNGb3JTdHVkZW50Q29kZSAoY29kZVN0dWRlbnQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9vYnRhaW4vcGF5bWVudHMvZm9yL3N0dWRlbnQvY29kZS8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5TdHVkZW50UGF5bWVudHNCeUdyb3VwaW5nQ29kIChjb2RlU3R1ZGVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3N0dWRlbnQvcGF5bWVudHMvYnkvZ3JvdXBpbmcvY29kLycgKyBjb2RlU3R1ZGVudDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblJlY2VpcHRCeUNvZGUgKGNvZGVSZWNlaXB0OiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvcmVjZWlwdC9ieS9jb2RlLycgKyBjb2RlUmVjZWlwdDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRzRm9yUmVjZWlwdENvZGUgKGNvZGVTdHVkZW50OiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvb2J0YWluL3BheW1lbnRzL2Zvci9yZWNlaXB0L2NvZGUvJyArIGNvZGVTdHVkZW50O1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgY2FuZWxTdHVkZW50UmVjZWlwdChwYXJhbXM6IElDYW5jZWxTdHVkZW50UmVjZWlwdFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jYW5jZWwvc3R1ZGVudC9yZWNlaXB0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldENhbmNlbGxlZFJlY2VpcHRzQnlEYXRlKHBhcmFtczogSUNhbmNlbGxlZFJlY2VpcHRCeURhdGVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvY2FuY2VsbGVkL3JlY2VpcHRzL2J5L2RhdGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluUGF5bWVudHJlY2VpdmVkQnlVc2VyKHBhcmFtczogSVBheW1lbnRzUmVjZWl2ZWRCeVVzZXJScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3BheW1lbnRzL3JlY2VpdmVkL2J5L3VzZXInO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VG90YWxDYXNoUmVjZWlwdHNCeURhdGVBbmRVc2VyKHBhcmFtczogSVBheW1lbnRzUmVjZWl2ZWRCeVVzZXJScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdG90YWwvY2FzaC9yZWNlaXB0cy9ieS9kYXRlL2FuZC91c2VyJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkNvdXJzZXNCeUNvb3JkQW5kRGlmZlBhcmFtKHBhcmFtczogSU9idGFpbkNvdXJzZUJ5Q29vZERpZmZQYXJhbVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL2NvdXJzZS93YWxsZXQvYnkvY29vcmRpbmF0b3IvZGlmZmV0ZW50L3BhcmFtJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldEFsbENvbW1vbkV4cGVuc2VzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9jb21tb24vZXhwZW5zZXMvYWxsJztcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuICBjcmVhdGVDb21tbW9uRXhwZW5zZXMocGFyYW06IE5hbWVDb21tb25FeHBlbnNlcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvY29tbW9uL2V4cGVuc2VzL2NyZWF0ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBvYnRhaW5Db2RBbmRTdGF0dXNBcHByb3ZlZExldmVsQnlHcm91cChwYXJhbTogTmFtZUNvbW1vbkV4cGVuc2VzKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3N0dWRlbnQvc3RhdHVzL2FwcHJvdmVkL2J5L2dyb3VwJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluU3R1ZGVudFBheW1lbnRUcmFuc2FjdGlvbkhpc3RvcnlCeUNvdXJzZShwYXJhbTogSU9idGFpblBheW1lbnRUcmFuSGlzdG9yeVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3N0dWRlbnQvcGF5bWVudC90cmFuc2FjdGlvbi9oaXN0b3J5L2J5L2NvdXJzZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRUcmFuc2FjdGlvbkhpc3RvcnlCeUNvZChwYXJhbTogSU9idGFpblBheW1lbnRUcmFuSGlzdG9yeVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3BheW1lbnQvdHJhbnNhY3Rpb24vaGlzdG9yeS9ieS9jb2QnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5TdHVkZW50UGF5bWVudEJ5RGlmZmVyZW50UGFyYW1ldGVyKHBhcmFtOiBJT2J0YWluU3R1ZGVudFBheW1lbnRCeURpZmZQYXJhbVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3N0dWRlbnQvcGF5bWVudC9ieS9kaWZmZXJlbnQvcGFyYW1ldGVycyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGNyZWF0ZUVncmVzcyhwYXJhbTogSXBheW1lbnRCaWxsRWdyZXNzUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9iaWxsL3JlZ2lzdGVyL2VncmVzcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRDYXRlZ29yeSgpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC90eXBlL3N1cHBsaWVyL2FsbCc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cbiAgY3JlYXRlQ2FzaENsb3NpbmcocGFyYW06IEljYXNoQ2xvc2luZ1JxKTogT2JzZXJ2YWJsZTxhbnk+e1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvYmlsbC9jbG9zZS9jYXNoJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgc2VhcmNoQ29tbW9uRXhwZW5zZXMobmFtZTpzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsnZ2V0L3NlYXJjaC9jb21tb24vZXhwZW5zZXMvJyArIG5hbWU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cbiAgZ2V0VXNlcnNDYXNoQ2xvc2luZygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvYmlsbC9jbG9zZS9jYXNoL2J5L3VzZXInO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgZ2V0Q2FzaENsb3NpbmdEYXkoY29kZTpudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArJ3Bvc3QvcGF5bWVudC9iaWxsL2Nsb3NlL2Nhc2gvYnkvZGF5L2NvZGV1c2VyLycgKyBjb2RlO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG4gIGdldENhc2hDbG9zaW5nTW9udGgoY29kZTpudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCsgJ3Bvc3QvcGF5bWVudC9iaWxsL2Nsb3NlL2Nhc2gvYnkvbW9udGgvY29kZXVzZXIvJyArIGNvZGU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cbiAgZ2V0Q2FzaENsb3NpbmdZZWFyKGNvZGU6bnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9wYXltZW50L2JpbGwvY2xvc2UvY2FzaC9ieS95ZWFyL2NvZGV1c2VyLycgKyBjb2RlO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG4gIGdldEluZm9DYXNoQ2xvc2luZ0J5Q29kZShwYXJhbTpJbmZvQ2FzaENsb3NpbmdScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9iaWxsL2Nsb3NlL2Nhc2gvYnkvY29kZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldENhc2hDbG9zaW5nRGF0ZShwYXJhbTpJY2FzaENsb3NpbmdEYXRlUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9iaWxsL2Nsb3NlL2Nhc2gvYnkvZGF0ZS9yYW5nZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBleHBvcnRPYnRhaW5TdHVkZW50UGF5bWVudFRyYW5zYWN0aW9uSGlzdG9yeUJ5Q291cnNlKHBhcmFtOiBJT2J0YWluUGF5bWVudFRyYW5IaXN0b3J5UnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2V4cG9ydC9leGNlbC9kYXRhL3BheW1lbnQvdHJhbnNhY3Rpb24vaGlzdG9yeS9ieS9jb3Vyc2UnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgZ2V0VG90YWxDYXNoSW5jb21lRWdyZXNzKHBhcmFtOiBJbmNvbWVzQW5kRWdyZXNzUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdG90YWwvY2FzaC9yZWNlaXB0cy9pbmNvbWVzL2VncmVzcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9iYXRpbkJhbGFjZXNCeUNvb2RpbmF0b3IocGFyYW1zOiBJQWNjb3VudHNCYWxhbmNlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdvYnRhaW4vYWNjb3VudHMvYW5kL2JhbGFuY2VzL2J5L2Nvb2RpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2JhdGluRGV0YWlsZWRJbmNvbWVCeVVzZXJBbmREYXRlKHBhcmFtczogSU9iYXRpbkRldGFpbGVkSW5jb21lQnlVc2VyQW5kRGF0ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL2RldGFpbGVkL2luY29tZS9yZXBvcnQvYnkvYWR2aXNvcic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBleHBvcnRJbmNvbWVFeHBlbnNlSGlzdG9yeURhdGEocGFyYW1zOiBJT2JhdGluRGV0YWlsZWRJbmNvbWVCeVVzZXJBbmREYXRlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdleHBvcnQvaW5jb21lL2V4cGVuc2UvaGlzdG9yeS9kYXRhJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkFsbFBheW1lbnRCaWxsQ2FuY2VsZWRCeVN0dWRlbnQoY29kZVN0dWRlbnQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ29idGFpbi9hbGwvcGF5bWVudC9iaWxsL2NhbmNlbGxlZC9ieS9zdHVkZW50LycgKyBjb2RlU3R1ZGVudDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIGdldFBheW1lbnRJbmZvQnlSZWZlcmVuY2UocGFyYW1zOiBJUGF5bWVudFJlZmVyZW5jZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9wYXltZW50L2JpbGwvYnkvcmVmZXJlbmNlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRzQnlDb2QocGFyYW06SUNvZFBheW1lbnRScSk6T2JzZXJ2YWJsZTxhbnk+e1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3BheW1lbnRzL2J5L2NvZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRzTWFkZUJ5RGF0ZXMocGFyYW1zOiBJQ2FuY2VsbGVkUmVjZWlwdEJ5RGF0ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3BheW1lbnRzL21hZGUvYnkvZGF0ZXMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgc2VuZEVtYWlsUGF5bWVudChwYXJhbXM6IFNlbmRFbWFpbFBheW1lbnQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3NlbmQvZW1haWwvcGF5bWVudCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBzZW5kRW1haWxQYXltZW50Q2FuY2VsbGF0aW9uKHBhcmFtczogU2VuZEVtYWlsUGF5bWVudENhbmNlbGxhdGlvblJTKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9zZW5kL2VtYWlsL3BheW1lbnQvY2FuY2VsbGF0aW9uJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbn1cblxuICBnZXRBbGxUcmFuc2ZlcnMocGFyYW1zOiBJVHJhbnNmZXJHZXRBbGxScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2ZlcnMvYWxsJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG5cbiAgZ2V0VHJhbnNmZXJCeUNvZGUocGFyYW1zOiBJVHJhbnNmZXJHZXRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2ZlcnMvc3BlY2lmaWMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgLy8gY3JlYXRlVHJhbnNmZXIocGFyYW1zOiBJVHJhbnNmZXJDcmVhdGVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gIC8vICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2ZlcnMvY3JlYXRlJztcbiAgLy8gICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgLy8gfVxuXG4gIGNyZWF0ZVRyYW5zZmVyKHBhcmFtczogSVRyYW5zZmVyQ3JlYXRlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdHJhbnNmZXJzL2NyZWF0ZSc7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgncGFyYW1zW3Rva2VuXScsIHBhcmFtcy50b2tlbik7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdwYXJhbXNbdHJhbnNmZXJfYW1vdW50XScsIHBhcmFtcy50cmFuc2Zlcl9hbW91bnQudG9TdHJpbmcoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdwYXJhbXNbYmFua19jb2RlXScsIHBhcmFtcy5iYW5rX2NvZGUudG9TdHJpbmcoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdwYXJhbXNbdHJhbnNmZXJfZGF0ZV0nLCBwYXJhbXMudHJhbnNmZXJfZGF0ZSk7IC8vIGFob3JhIHN0cmluZ1xuICAgIGZvcm1EYXRhLmFwcGVuZCgncGFyYW1zW3JlZmVyZW5jZV9udW1iZXJdJywgcGFyYW1zLnJlZmVyZW5jZV9udW1iZXIpO1xuXG5cbiAgICBpZiAocGFyYW1zLmltYWdlKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ3BhcmFtc1tpbWFnZV0nLCBwYXJhbXMuaW1hZ2UsIHBhcmFtcy5pbWFnZS5uYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIGZvcm1EYXRhKTtcbiAgfVxuLypcbiAgc2hvd1RyYW5zZmVySW1hZ2UocGFyYW1zOiBJVHJhbnNmZXJTaG93SW1hZ2VScSk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdHJhbnNmZXIvc2hvdy1pbWFnZSc7XG4gICAgY29uc3QgYm9keSA9IHsgY29kZTogcGFyYW1zLmNvZGUgfTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxCbG9iPihzZXJ2aWNlVXJsLCBib2R5LCB7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicsXG4gICAgfSk7XG4gIH1cblxuICBhc3NpZ25JbWFnZVRvVHJhbnNmZXIocGFyYW1zOiBJVHJhbnNmZXJBc3NpZ25JbWFnZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2Zlci9hc3NpZ24taW1hZ2UnO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCd0b2tlbicsIHBhcmFtcy50b2tlbik7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdjb2RlJywgcGFyYW1zLmNvZGUudG9TdHJpbmcoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdpbWFnZScsIHBhcmFtcy5pbWFnZSwgcGFyYW1zLmltYWdlLm5hbWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIGZvcm1EYXRhKTtcbiAgfSAgICovXG5cbiAgICBhc3NpZ25JbWFnZVRvVHJhbnNmZXIocGFyYW1zOiBJVHJhbnNmZXJBc3NpZ25JbWFnZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3RyYW5zZmVyL2Fzc2lnbi1pbWFnZSc7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXJhbXNbdG9rZW5dJywgcGFyYW1zLnRva2VuKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGFyYW1zW2NvZGVdJywgcGFyYW1zLmNvZGUudG9TdHJpbmcoKSk7XG4gICAgICBpZiAocGFyYW1zLmltYWdlKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW1hZ2UnLCBwYXJhbXMuaW1hZ2UsIHBhcmFtcy5pbWFnZS5uYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc2hvd1RyYW5zZmVySW1hZ2UocGFyYW1zOiBJVHJhbnNmZXJTaG93SW1hZ2VScSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJsb2I+PiB7XG4gICAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3RyYW5zZmVyL3Nob3ctaW1hZ2UnO1xuICAgICAgY29uc3QgYm9keSA9IHtcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgY29kZTogcGFyYW1zLmNvZGVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCBib2R5LCB7XG4gICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgICB9KTtcbiAgICB9XG5cblxuXG4gIHVwZGF0ZVRyYW5zZmVyKHBhcmFtczogSVRyYW5zZmVyVXBkYXRlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdHJhbnNmZXJzL3VwZGF0ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICB1cGRhdGVUcmFuc2ZlclN0YXR1cyhwYXJhbXM6IElUcmFuc2ZlclN0YXR1c1VwZGF0ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3RyYW5zZmVycy91cGRhdGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZGVsZXRlVHJhbnNmZXIocGFyYW1zOiBJVHJhbnNmZXJEZWxldGVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2ZlcnMvZGVsZXRlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHNlYXJjaFRyYW5zZmVyKHBhcmFtczogSVRyYW5zZmVyU2VhcmNoUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdHJhbnNmZXIvc2VhcmNoJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGV4cG9ydFBheW1lbnRDb3JyZWxhdGl2ZWVIaXN0b3J5RGF0YShwYXJhbTpJUGF5bWVudENvcnJlbGF0aXZlUnEpOk9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZXhwb3J0L3BheW1lbnRzL2NvcnJlbGF0aXZlL2hpc3RvcnkvZGF0YSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRzTWFkZUJ5RmlsdGVyKHBhcmFtOiBJUGF5bWVudENvcnJlbGF0aXZlUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ29idGFpbi9wYXltZW50L2NvcnJlbGF0aXZlcy9ieS9maWx0ZXInO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5HYXRld2F5UGF5bWVudFJlY29yZChwYXJhbTogSU9idGFpbkdhdGV3YXlQYXltZW50UmVjb3JkUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ29idGFpbi9nYXRld2F5L3BheW1lbnQvcmVjb3JkJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZXBheWNvUGF5bWVudFVwZGF0ZShwYXJhbTogSVVwZGF0ZUVwYXljb1BheW1lbnRScSk6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZXBheWNvL3BheW1lbnQvdXBkYXRlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZXhwb3J0RWxlY3Ryb25pY0ludm9pY2VIaXN0b3J5RGF0YShwYXJhbTpJRWxlY3Ryb25pY0ludm9pY2VSUyk6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZXhwb3J0L2VsZWN0cm9uaWMvaW52b2ljZS9oaXN0b3J5L2RhdGEnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBleHBvcnRBY2NvdW50c0FuZEJhbGFuY2VzQnlDb29kaW5hdG9yKHBhcmFtOklBY2NvdW50c0JhbGFuY2VScSk6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZXhwb3J0L2FjY291bnRzL2FuZC9iYWxhbmNlcy9ieS9jb29kaW5hdG9yJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgY3JlYXRlQ29kUGF5bWVudHMocGFyYW1zOiBJQ3JlYXRlQ29kUGF5bWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvY3JlYXRlL2NvZC9wYXltZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBkZWxldGVDb2RQYXltZW50cyhwYXJhbXM6IElEZWxldGVDb2RQYXltZW50c1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9kZWxldGUvY29kL3BheW1lbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG5cbiAgZ2V0RnVsbFBheW1lbnRJbmZvcm1hdGlvbihwYXJhbXM6IElHZXRGdWxsUGF5bWVudEluZm9ybWF0aW9uUnEpOiBPYnNlcnZhYmxlPElHZXRGdWxsUGF5bWVudEluZm9ybWF0aW9uUnM+IHtcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvYmlsbC9mdWxsLWluZm9ybWF0aW9uJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxJR2V0RnVsbFBheW1lbnRJbmZvcm1hdGlvblJzPihzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHVwZGF0ZVRyYW5zZmVyU3RhdHVzQnlDb2RlKHBhcmFtczogSVRyYW5zZmVyU3RhdHVzVXBkYXRlUmVxdWVzdFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3RyYW5zZmVyL3VwZGF0ZS1zdGF0dXMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgdXBkYXRlRWxlY3Ryb25pY0ludm9pY2UocGFyYW1zOiBJVXBkYXRlRWxlY3Ryb25pY0ludm9pY2VScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9wYXltZW50L2JpbGwvdXBkYXRlLWVsZWN0cm9uaWMtaW52b2ljZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBzZWFyY2hQYXltZW50QmlsbChwYXJhbXM6IElTZWFyY2hQYXltZW50QmlsbFJxKTogT2JzZXJ2YWJsZTxJU2VhcmNoUGF5bWVudEJpbGxScz4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9iaWxsL3NlYXJjaC1pbmZvcm1hdGlvbic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SVNlYXJjaFBheW1lbnRCaWxsUnM+KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VmFsaWRhdGlvbk9mVHJhbnNmZXJzQnlOdW1iZXIocGFyYW1zOiBJVmFsaWRhdGlvbk9mVHJhbnNmZXJzQnlOdW1iZXJScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3ZhbGlkYXRpb24vb2YvdHJhbnNmZXJzL2J5L251bWJlcic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SVNlYXJjaFBheW1lbnRCaWxsUnM+KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0U3VtbWFyeUJ5Q29vcmRpbmF0b3IocGFyYW1zOiBJR2V0U3VtbWFyeUJ5Q29vcmRpbmF0b3JScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3N1bW1hcnkvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cblxuICBjcmVhdGVUcmFuc2ZlclZhbGlkYXRlKHBhcmFtczogSUNyZWF0ZVRyYW5zZmVyUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2NyZWF0ZS90cmFuc2Zlci92YWxpZGF0ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBzZWFyY2hUcmFuc2ZlckJ5UmVmZXJlbmNlKHBhcmFtczogSVNlYXJjaFRyYW5zZmVyUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3NlYXJjaC90cmFuc2Zlci9ieS9yZWZlcmVuY2UnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgdXBkYXRlVHJhbnNmZXJEYXRhKHBhcmFtczogSVVwZGF0ZVRyYW5zZmVyUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3VwZGF0ZS90cmFuc2Zlci9kYXRhJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkxpc3RTdHVkZW50UGF5bWVudFN0YXR1cyhwYXJhbXM6IElPYnRhaW5Db3Vyc2VCeUNvb2REaWZmUGFyYW1ScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL2xpc3Qvc3R1ZGVudC9wYXltZW50L3N0YXR1cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBleHBvcnRMaXN0U3R1ZGVudFBheW1lbnRTdGF0dXMocGFyYW1zOiBJT2J0YWluQ291cnNlQnlDb29kRGlmZlBhcmFtUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2V4cG9ydC9zdHVkZW50L3BheW1lbnQvc3RhdHVzL2xpc3QvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluUGF5bWVudFBsYW5CeUNvZGVDb2QgKGNvZGVDb2Q6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3BheW1lbnQvcGxhbi9ieS9jb2RlL2NvZC8nICsgY29kZUNvZDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIHJlY2VpdmVQYXltZW50c01hZGVUb0NvZCAoY29kZUNvZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdyZWNlaXZlL3BheW1lbnRzL21hZGUvdG8vY29kLycgKyBjb2RlQ29kO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgbmV3UmVnaXN0ZVBheW1lbnRCaWxsUHJlYXNzaWduZWRDb2QocGFyYW1zOiBQYXltZW50QmlsbFJxMik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ25ldy9yZWdpc3RlL3BheW1lbnQvYmlsbC9wcmVhc3NpZ25lZC9jb2QnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgYWRkTmV3UXVvdGFXaXRoQ29tbWVudHMocGFyYW1zOiBJQWRkTmV3UXVvdGFXaXRoQ29tbWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2FkZC9uZXcvcXVvdGEvd2l0aC9jb21tZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBkZWxldGVRdW90YVJlY29yZFdpdGhDb21tZW50cyhwYXJhbXM6IElEZWxldGVRdW90YVJlY29yZFdpdGhDb21tZW50c1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZGVsZXRlL3F1b3RhL3JlY29yZC93aXRoL2NvbW1lbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHNhdmVNb2RpZmllZFBheW1lbnRQbGFuKHBhcmFtczogSVNhdmVNb2RpZmllZFBheW1lbnRQbGFuUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdzYXZlL21vZGlmaWVkL3BheW1lbnQvcGxhbic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBwcmV2aWV3TW9kaWZ5UGF5bWVudFBsYW4ocGFyYW1zOiBJUHJldmlld01vZGlmeVBheW1lbnRQbGFuUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwcmV2aWV3L21vZGlmeS9wYXltZW50L3BsYW4nO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgbW9kaWZ5UXVvdGFEYXRhV2l0aENvbW1lbnRzKHBhcmFtczogSU1vZGlmeVF1b3RhRGF0YVdpdGhDb21tZW50c1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnbW9kaWZ5L3F1b3RhL2RhdGEvd2l0aC9jb21tZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBlZGl0SW5zdGFsbG1lbnRBbW91bnRXaXRoQ29tbWVudHMocGFyYW1zOiBJRWRpdEluc3RhbGxtZW50QW1vdW5XaXRoQ29tbWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2VkaXQvaW5zdGFsbG1lbnQvYW1vdW50L3dpdGgvY29tbWVudHMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgc3R1ZGVudFBheW1lbnRQbGFuQnlDb2QgKGNvZGVDb2Q6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnc3R1ZGVudC9wYXltZW50L3BsYW4vYnkvY29kLycgKyBjb2RlQ29kO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgZ2V0UGF5bWVudHNCeU1hZGVFeHBvcnQocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdleHBvcnQvZmlsZS9leGNlbC9wYXltZW50cy9tYWRlL2J5L2RhdGVzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHNlYXJjaEZvclN0dWRlbnRzQnlEaWZmZXJlbnRQYXJhbWV0ZXJzKHBhcmFtOiBJT2J0YWluU3R1ZGVudFBheW1lbnRCeURpZmZQYXJhbVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnc2VhcmNoL2Zvci9zdHVkZW50cy9ieS9kaWZmZXJlbnQvcGFyYW1ldGVycyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkNvdXJzZVBheW1lbnRSYW5nZVJlcG9ydChwYXJhbTogSUNvdXJzZVBheW1lbnRSYW5nZVJlcG9ydFJxKTogT2JzZXJ2YWJsZTxJQ291cnNlUGF5bWVudFJhbmdlUmVwb3J0UnM+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vY291cnNlL3BheW1lbnQvcmFuZ2UvcmVwb3J0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PElDb3Vyc2VQYXltZW50UmFuZ2VSZXBvcnRScz4oc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5QZW5kaW5nR2F0ZXdheVBheW1lbnRzRm9yUHJvY2Vzc2luZyhjb2RlU3R1ZGVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3BlbmRpbmcvZ2F0ZXdheS9wYXltZW50cy9mb3IvcHJvY2Vzc2luZy8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBuZXdUcmFuc2FjdGlvbk9uV29tcGlQYXltZW50R2F0ZXdheShwYXJhbTogSVdvbXBpUGF5bWVudFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnbmV3L3RyYW5zYWN0aW9uL29uL3dvbXBpL3BheW1lbnQvZ2F0ZXdheSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGhhbmRsZShwYXJhbTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnd29tcGkvd2ViaG9vayc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uc0J5VXNlckNvZGUocGFyYW06IElHZXRUcmFuc2FjdGlvbnNCeVVzZXJDb2RlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvdHJhbnNhY3Rpb25zL2J5L3VzZXIvY29kZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHJldmVydFBlbmRpbmdQYXltZW50c0J5VXNlckNvZGUocGFyYW06IElHZXRUcmFuc2FjdGlvbnNCeVVzZXJDb2RlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdyZXZlcnQvcGVuZGluZy9wYXltZW50cy9ieS91c2VyL2NvZGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxufVxuXG4iXX0=
631
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVkZ2V0LXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9idWRnZXQtc2VydmljZS9idWRnZXQtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFRM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxpQkFBaUI7SUFJbEQsWUFBb0IsSUFBZ0I7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBRjVCLGdCQUFXLEdBQUcsYUFBYSxDQUFDO1FBSWxDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkQsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFzQjtRQUNuQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLDJCQUEyQixDQUFDO1FBQ2hFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELGNBQWMsQ0FBQyxNQUFrQjtRQUMvQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLDZCQUE2QixDQUFDO1FBQ2xFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELGNBQWMsQ0FBQyxN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QztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0ZGlzY291bnRBbGxScSwgRGlzY291bnRScSwgRGlzY291bnRVcGRhdGVScSwgSU9idGFpbkFsbENvdXJzZXdhbGxldCwgSUFzc2lnblJlcXVlc3RScSwgSU9idGFpbkF2YWlsYWJsZUNvdXJzZVJzLCBJR2V0Q29kQnlQYXltZW50UGxhblJxLCBJVXBkYXRlQW1vdW50Q29kUGF5bWVudHNScSwgSVBhcmFtc1VwZGF0ZURhdGVDb2RQYXltZW50c1JxLCBJQ2FuY2VsU3R1ZGVudFJlY2VpcHRScSwgSUNhbmNlbGxlZFJlY2VpcHRCeURhdGVScSwgSVBheW1lbnRzUmVjZWl2ZWRCeVVzZXJScSwgSU9idGFpbkNvdXJzZUJ5Q29vZERpZmZQYXJhbVJxLCBOYW1lQ29tbW9uRXhwZW5zZXMsIElPYnRhaW5QYXltZW50VHJhbkhpc3RvcnlScSwgSU9idGFpblN0dWRlbnRQYXltZW50QnlEaWZmUGFyYW1ScSwgSW5mb0Nhc2hDbG9zaW5nUnEsIEljYXNoQ2xvc2luZ0RhdGVScSwgSWNhc2hDbG9zaW5nUnEsIElwYXltZW50QmlsbEVncmVzc1JxLCBJbmNvbWVzQW5kRWdyZXNzUnEsIElPYmF0aW5EZXRhaWxlZEluY29tZUJ5VXNlckFuZERhdGVScSwgSU9iYXRpbkJhbGFjZXNCeUNvb2RpbmF0b3JScSwgU2VuZEVtYWlsUGF5bWVudCxTZW5kRW1haWxQYXltZW50Q2FuY2VsbGF0aW9uUlMsIElQYXltZW50Q29ycmVsYXRpdmVScSwgSU9idGFpbkdhdGV3YXlQYXltZW50UmVjb3JkUnEsIElVcGRhdGVFcGF5Y29QYXltZW50UnEsIElFbGVjdHJvbmljSW52b2ljZVJTLCBJQWNjb3VudHNCYWxhbmNlUnEsIElHZXRGdWxsUGF5bWVudEluZm9ybWF0aW9uUnEsIElHZXRGdWxsUGF5bWVudEluZm9ybWF0aW9uUnMsIElTZWFyY2hQYXltZW50QmlsbFJxLCBJU2VhcmNoUGF5bWVudEJpbGxScywgSUdldFN1bW1hcnlCeUNvb3JkaW5hdG9yUnEsIElBZGROZXdRdW90YVdpdGhDb21tZW50c1JxLCBJRGVsZXRlUXVvdGFSZWNvcmRXaXRoQ29tbWVudHNScSwgSU1vZGlmeVF1b3RhRGF0YVdpdGhDb21tZW50c1JxLCBJRWRpdEluc3RhbGxtZW50QW1vdW5XaXRoQ29tbWVudHNScSwgSUNvdXJzZVBheW1lbnRSYW5nZVJlcG9ydFJxLCBJQ291cnNlUGF5bWVudFJhbmdlUmVwb3J0UnMsIElQcmV2aWV3TW9kaWZ5UGF5bWVudFBsYW5ScSwgSVNhdmVNb2RpZmllZFBheW1lbnRQbGFuUnEgIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2J1ZGdldC9idWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgSUZ1bGxDb2RTdHVkZW50T3ZlcmR1ZUJ5Q29vcmRpbmF0b3JScSwgSVBheW1lbnRPdmVyZHVlQnlDb29yZGluYXRvckNvdXJzZVJxLCBJUGF5bWVudE92ZXJkdWVCeUNvb3JkaW5hdG9yUnEsIElQYXltZW50UmVmZXJlbmNlUnEsIElUcmFuc2ZlciwgSVRyYW5zZmVyQXNzaWduSW1hZ2UsIElUcmFuc2ZlckNyZWF0ZVJxLCBJVHJhbnNmZXJEZWxldGVScSwgSVRyYW5zZmVyR2V0QWxsUnEsIElUcmFuc2ZlckdldFJxLCBJVHJhbnNmZXJTZWFyY2hScSwgSVRyYW5zZmVyU2hvd0ltYWdlUnEsIElUcmFuc2ZlclN0YXR1c1VwZGF0ZVJxLCBJVHJhbnNmZXJVcGRhdGVScSwgUGF5bWVudEJpbGxScSwgUGF5bWVudEJpbGxScTIsIFByaWNlQnlUeXBlU2VydmljZVJxLElEZWxldGVDb2RQYXltZW50c1JxLElDcmVhdGVDb2RQYXltZW50c1JxLCBJVHJhbnNmZXJTdGF0dXNVcGRhdGVSZXF1ZXN0UnEsIElVcGRhdGVFbGVjdHJvbmljSW52b2ljZVJxLCBJVmFsaWRhdGlvbk9mVHJhbnNmZXJzQnlOdW1iZXJScSB9IGZyb20gJy4uLy4uL21vZGVscy9wYXltZW50L3BheW1lbnQtcnEubW9kZWwnO1xuaW1wb3J0IHsgSWdldENvdXJzZXNGaW5pc2hBbmR1bmFzc2lnbmVkUnEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVwb3J0cy9yZXBvcnRzLm1vZGVsJztcbmltcG9ydCB7IElQVEdlbmVyYWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS1lbnZpcm9tZW50cyc7XG5pbXBvcnQgeyBJQ29kUGF5bWVudFJxIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvZC9jb2QtcnEubW9kZWwnO1xuaW1wb3J0IHsgSUNyZWF0ZVRyYW5zZmVyUnEsIElTZWFyY2hUcmFuc2ZlclJxLCBJVXBkYXRlVHJhbnNmZXJScSB9IGZyb20gJy4uLy4uL21vZGVscy90cmFuc2Zlci90cmFuc2Zlci5tb2RlbCc7XG5pbXBvcnQgeyBJR2V0VHJhbnNhY3Rpb25zQnlVc2VyQ29kZVJxLCBJVXBkYXRlVHJhbnNhY3Rpb25TdGF0dXNScSwgSVdvbXBpUGF5bWVudFJxLCBJV29tcGlUcmFuc2FjdGlvblBheWxvYWRScSB9IGZyb20gJy4uLy4uL21vZGVscy9QYXltZW50R2F0ZXdheS9QYXltZW50R2F0ZXdheS5tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCdWRnZXRTZXJ2aWNlIGV4dGVuZHMgSVBUR2VuZXJhbFNlcnZpY2V7XG5cbiAgcHJpdmF0ZSBTRVJWSUNFX1VSTCA9ICdidWRnZXQvYXBpLyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLlNFUlZJQ0VfVVJMID0gdGhpcy5iYXNlVXJsKCkgKyB0aGlzLlNFUlZJQ0VfVVJMO1xuICB9XG5cbiAgZ2V0QWxsRGlzY291bnQodXNlcjogZ2V0ZGlzY291bnRBbGxScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvZGlzY291bnRzL2NvdXBvbi9hbGwnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXIpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG4gIGNyZWF0ZURpc2NvdW50KHBhcmFtczogRGlzY291bnRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvZGlzY291bnQvY291cG9uL2NyZWF0ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgdXBkYXRlRGlzY291bnQocGFyYW1zOiBEaXNjb3VudFVwZGF0ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9kaXNjb3VudC9jb3Vwb24vdXBkYXRlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFBheW1lbnRTdHVkZW50c0J5Q29kZShjb2RlU3R1ZGVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvY29kL3N0dWRlbnQvYnkvY29kZS8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50V2FsbGV0QnlDYW1wdXMoY29kZUNhbXB1czogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvd2FsbGV0L2J5L2NhbXB1cy8nICsgY29kZUNhbXB1cztcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIHBheW1lbnRCaWxsRHVlcyhwYXJhbXM6IFBheW1lbnRCaWxsUnEyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9wYXltZW50L2JpbGwvcmVnaXN0ZXIvZHVlcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBwYXltZW50QmlsbFNlcnZpY2VzKHBhcmFtczogUGF5bWVudEJpbGxScTIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvYmlsbC9yZWdpc3Rlci9zZXJ2aWNlcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRQYXltZW50QmlsbEFsbCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvcGF5bWVudC9iaWxsL2NhbmNlbGVkL2FsbCc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50QmlsbEJ5Q29kZShjb2RlUGF5bWVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAgJ2dldC9wYXltZW50L2JpbGwvY2FuY2VsZWQvYnkvY29kZS8nICsgY29kZVBheW1lbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50QmlsbEJ5U3R1ZGVudChjb2RlU3R1ZGVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAgJ2dldC9wYXltZW50L2JpbGwvY2FuY2VsZWQvYnkvc3R1ZGVudC8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50QmlsbEJ5UmVmZXJlbmNlKHJlZmVyZW5jZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvYmlsbC9jYW5jZWxlZC9ieS9yZWZlcmVuY2UvJyArIHJlZmVyZW5jZTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG5cbiAgZ2V0UHJpY2VCeVR5cGVTZXJ2aWNlKHBhcmFtczogUHJpY2VCeVR5cGVTZXJ2aWNlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9wcmljZS9ieS90eXBlL3NlcnZpY2UnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluQ291cnNlc0J5Q29vcmRpbmF0b3IocGFyYW1zOiBJT2J0YWluQWxsQ291cnNld2FsbGV0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jb3Vyc2Uvd2FsbGV0L3VzZXIvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0V2FsbGV0QnlDb2RlVXNlciAoY29kZVVzZXI6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC93YWxsZXQvYnkvY29kZS91c2VyLycgKyBjb2RlVXNlcjtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRwYXltZW50QmlsbEJ5V2FsbGV0Q29kZSAoY29kZVdhbGxldDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L29idGFpbi9wYXltZW50L2JpbGwvYnkvd2FsbGV0cy9ieS8nICsgY29kZVdhbGxldDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRwYXltZW50QmlsbEluY29tZSAoY29kZVdhbGxldDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvYmlsbC93YWxsZXRzL2NvZGUvZmlsdGVyL2luY29tZS8nICsgY29kZVdhbGxldDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRwYXltZW50QmlsbEVncmVzcyAoY29kZVdhbGxldDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3BheW1lbnQvYmlsbC93YWxsZXRzL2NvZGUvZmlsdGVyL2VncmVzcy8nICsgY29kZVdhbGxldDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFBheW1lbnRPdmVyZHVlU3R1ZGVudCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICAnZ2V0L3BheW1lbnQvb3ZlcmR1ZS9hbGwvc3R1ZGVudCc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXREYXlQYXltZW50T3ZlcmR1ZVN0dWRlbnQoY29kZVN0dWRlbnQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9kYXkvcGF5bWVudC9vdmVyZHVlL3N0dWRlbnQvYnkvY29kZS8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBnZXRQYXltZW50T3ZlcmR1ZUNvdXJzZUJ5Q29vcmRpbmF0b3IocGFyYW1zOiBJUGF5bWVudE92ZXJkdWVCeUNvb3JkaW5hdG9yUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvb3ZlcmR1ZS9jb3Vyc2UvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0UGF5bWVudE92ZXJkdWVTdHVkZW50QnlDb29yZGluYXRvcihwYXJhbXM6IElQYXltZW50T3ZlcmR1ZUJ5Q29vcmRpbmF0b3JScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9vdmVyZHVlL3N0dWRlbnQvYnkvY29vZGluYXRvcic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRQYXltZW50T3ZlcmR1ZVN0dWRlbnRCeUNvb3JkaW5hdG9yQW5kQ291cnNlQ29kZShwYXJhbXM6IElQYXltZW50T3ZlcmR1ZUJ5Q29vcmRpbmF0b3JDb3Vyc2VScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9vdmVyZHVlL3N0dWRlbnQvYnkvY29vZGluYXRvcmNvdXJzZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRPYnRhaW5Db2RTdHVkZW50QnlDb29yZGluYXRvcihwYXJhbXM6IElGdWxsQ29kU3R1ZGVudE92ZXJkdWVCeUNvb3JkaW5hdG9yUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9jb2Qvc3R1bmRlbnQvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0Q291cnNlc0ZpbmlzaEFuZHVuYXNzaWduZWQocGFyYW1zOiBJZ2V0Q291cnNlc0ZpbmlzaEFuZHVuYXNzaWduZWRScSk6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L2NvdXJzZS9ieS91c2VyL2J1ZGdldCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICAvLyBBc3NpbmdDb3Vyc2UocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAvLyAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2NvdXJzZS9ieS9jb2RlL3VzZXIvYnVkZ2V0L2Fzc2lnbic7XG4gIC8vICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIC8vIH1cbiAgQXNzaW5nQ291cnNlKHBhcmFtczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL2NvdXJzZS9hc3NpZ24vZGV0YWlsL2J5L2FkdmlzZXIvYnVkZ2V0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIEFzc2luZ0NvdXJzZXMocGFyYW1zOiBJQXNzaWduUmVxdWVzdFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jb3Vyc2UvYnkvdXNlci9idWRnZXQvYXNzaWduJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkFsbEF2YWlsYWJsZUNvdXJzZXNCeVN0dWRlbnQocGFyYW1zOiBJT2J0YWluQXZhaWxhYmxlQ291cnNlUnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9hbGwvYXZhaWxhYmxlL2NvdXJzZXMvYnkvc3R1ZGVudCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5PYnNlcnZhdGlvbkJ5Q29kU3R1ZGVudChwYXJhbXM6IElGdWxsQ29kU3R1ZGVudE92ZXJkdWVCeUNvb3JkaW5hdG9yUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9vYnNlcnZhcmlvbi9ieS9jb2Qvc3R1ZGV0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGFkbWluU3R1ZGVudEJ5Q29vcmRpbmF0b3IocGFyYW1zOiBJRnVsbENvZFN0dWRlbnRPdmVyZHVlQnlDb29yZGluYXRvclJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9hZG1pbi9zdHVkZW50L2J5L2Nvb3JkaW5hdG9yJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldENvZGJ5UGF5bWVudFBsYW5ScShwYXJhbXM6IElHZXRDb2RCeVBheW1lbnRQbGFuUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9jb2Qvc3R1bmRlbnQvcGF5bWVudHMvYnkvY29kZS91c2VyJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIFVwZGF0ZUFtb3VudENvZFBheW1lbnRzKHBhcmFtczogSVVwZGF0ZUFtb3VudENvZFBheW1lbnRzUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2NoYW5nZS9hbW91bnQvY29kL3BheW1lbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIFVwZGF0ZURhdGVDb2RQYXltZW50cyhwYXJhbXM6IElQYXJhbXNVcGRhdGVEYXRlQ29kUGF5bWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3B1dC9jaGFuZ2UvZGF0ZS9wYXltZW50L2NvZC9ieS9jb2QnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG4gIFVwZGF0ZURhdGVDb2RQYXltZW50c0ZvclBheW1lbnRQbGFuKHBhcmFtczogSVBhcmFtc1VwZGF0ZURhdGVDb2RQYXltZW50c1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jaGFuZ2UvZGF0ZS9wYXltZW50L2NvZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5QYXltZW50UmVjZWlwdEJ5Q29kZSAoY29kZVJlY2VpcHQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9vYnRhaW4vcGF5bWVudC9yZWNlaXB0L2J5L2NvZGUvJyArIGNvZGVSZWNlaXB0O1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluUGF5bWVudHNGb3JTdHVkZW50Q29kZSAoY29kZVN0dWRlbnQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9vYnRhaW4vcGF5bWVudHMvZm9yL3N0dWRlbnQvY29kZS8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5TdHVkZW50UGF5bWVudHNCeUdyb3VwaW5nQ29kIChjb2RlU3R1ZGVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3N0dWRlbnQvcGF5bWVudHMvYnkvZ3JvdXBpbmcvY29kLycgKyBjb2RlU3R1ZGVudDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblJlY2VpcHRCeUNvZGUgKGNvZGVSZWNlaXB0OiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvcmVjZWlwdC9ieS9jb2RlLycgKyBjb2RlUmVjZWlwdDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRzRm9yUmVjZWlwdENvZGUgKGNvZGVTdHVkZW50OiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvb2J0YWluL3BheW1lbnRzL2Zvci9yZWNlaXB0L2NvZGUvJyArIGNvZGVTdHVkZW50O1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgY2FuZWxTdHVkZW50UmVjZWlwdChwYXJhbXM6IElDYW5jZWxTdHVkZW50UmVjZWlwdFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jYW5jZWwvc3R1ZGVudC9yZWNlaXB0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldENhbmNlbGxlZFJlY2VpcHRzQnlEYXRlKHBhcmFtczogSUNhbmNlbGxlZFJlY2VpcHRCeURhdGVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvY2FuY2VsbGVkL3JlY2VpcHRzL2J5L2RhdGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluUGF5bWVudHJlY2VpdmVkQnlVc2VyKHBhcmFtczogSVBheW1lbnRzUmVjZWl2ZWRCeVVzZXJScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3BheW1lbnRzL3JlY2VpdmVkL2J5L3VzZXInO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VG90YWxDYXNoUmVjZWlwdHNCeURhdGVBbmRVc2VyKHBhcmFtczogSVBheW1lbnRzUmVjZWl2ZWRCeVVzZXJScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdG90YWwvY2FzaC9yZWNlaXB0cy9ieS9kYXRlL2FuZC91c2VyJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkNvdXJzZXNCeUNvb3JkQW5kRGlmZlBhcmFtKHBhcmFtczogSU9idGFpbkNvdXJzZUJ5Q29vZERpZmZQYXJhbVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL2NvdXJzZS93YWxsZXQvYnkvY29vcmRpbmF0b3IvZGlmZmV0ZW50L3BhcmFtJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldEFsbENvbW1vbkV4cGVuc2VzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9jb21tb24vZXhwZW5zZXMvYWxsJztcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuICBjcmVhdGVDb21tbW9uRXhwZW5zZXMocGFyYW06IE5hbWVDb21tb25FeHBlbnNlcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvY29tbW9uL2V4cGVuc2VzL2NyZWF0ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBvYnRhaW5Db2RBbmRTdGF0dXNBcHByb3ZlZExldmVsQnlHcm91cChwYXJhbTogTmFtZUNvbW1vbkV4cGVuc2VzKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3N0dWRlbnQvc3RhdHVzL2FwcHJvdmVkL2J5L2dyb3VwJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluU3R1ZGVudFBheW1lbnRUcmFuc2FjdGlvbkhpc3RvcnlCeUNvdXJzZShwYXJhbTogSU9idGFpblBheW1lbnRUcmFuSGlzdG9yeVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3N0dWRlbnQvcGF5bWVudC90cmFuc2FjdGlvbi9oaXN0b3J5L2J5L2NvdXJzZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRUcmFuc2FjdGlvbkhpc3RvcnlCeUNvZChwYXJhbTogSU9idGFpblBheW1lbnRUcmFuSGlzdG9yeVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3BheW1lbnQvdHJhbnNhY3Rpb24vaGlzdG9yeS9ieS9jb2QnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5TdHVkZW50UGF5bWVudEJ5RGlmZmVyZW50UGFyYW1ldGVyKHBhcmFtOiBJT2J0YWluU3R1ZGVudFBheW1lbnRCeURpZmZQYXJhbVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3N0dWRlbnQvcGF5bWVudC9ieS9kaWZmZXJlbnQvcGFyYW1ldGVycyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGNyZWF0ZUVncmVzcyhwYXJhbTogSXBheW1lbnRCaWxsRWdyZXNzUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9iaWxsL3JlZ2lzdGVyL2VncmVzcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBnZXRDYXRlZ29yeSgpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC90eXBlL3N1cHBsaWVyL2FsbCc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cbiAgY3JlYXRlQ2FzaENsb3NpbmcocGFyYW06IEljYXNoQ2xvc2luZ1JxKTogT2JzZXJ2YWJsZTxhbnk+e1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvYmlsbC9jbG9zZS9jYXNoJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgc2VhcmNoQ29tbW9uRXhwZW5zZXMobmFtZTpzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsnZ2V0L3NlYXJjaC9jb21tb24vZXhwZW5zZXMvJyArIG5hbWU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cbiAgZ2V0VXNlcnNDYXNoQ2xvc2luZygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvYmlsbC9jbG9zZS9jYXNoL2J5L3VzZXInO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgZ2V0Q2FzaENsb3NpbmdEYXkoY29kZTpudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArJ3Bvc3QvcGF5bWVudC9iaWxsL2Nsb3NlL2Nhc2gvYnkvZGF5L2NvZGV1c2VyLycgKyBjb2RlO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG4gIGdldENhc2hDbG9zaW5nTW9udGgoY29kZTpudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCsgJ3Bvc3QvcGF5bWVudC9iaWxsL2Nsb3NlL2Nhc2gvYnkvbW9udGgvY29kZXVzZXIvJyArIGNvZGU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cbiAgZ2V0Q2FzaENsb3NpbmdZZWFyKGNvZGU6bnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9wYXltZW50L2JpbGwvY2xvc2UvY2FzaC9ieS95ZWFyL2NvZGV1c2VyLycgKyBjb2RlO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG4gIGdldEluZm9DYXNoQ2xvc2luZ0J5Q29kZShwYXJhbTpJbmZvQ2FzaENsb3NpbmdScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9iaWxsL2Nsb3NlL2Nhc2gvYnkvY29kZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldENhc2hDbG9zaW5nRGF0ZShwYXJhbTpJY2FzaENsb3NpbmdEYXRlUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9iaWxsL2Nsb3NlL2Nhc2gvYnkvZGF0ZS9yYW5nZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBleHBvcnRPYnRhaW5TdHVkZW50UGF5bWVudFRyYW5zYWN0aW9uSGlzdG9yeUJ5Q291cnNlKHBhcmFtOiBJT2J0YWluUGF5bWVudFRyYW5IaXN0b3J5UnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2V4cG9ydC9leGNlbC9kYXRhL3BheW1lbnQvdHJhbnNhY3Rpb24vaGlzdG9yeS9ieS9jb3Vyc2UnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgZ2V0VG90YWxDYXNoSW5jb21lRWdyZXNzKHBhcmFtOiBJbmNvbWVzQW5kRWdyZXNzUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdG90YWwvY2FzaC9yZWNlaXB0cy9pbmNvbWVzL2VncmVzcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9iYXRpbkJhbGFjZXNCeUNvb2RpbmF0b3IocGFyYW1zOiBJQWNjb3VudHNCYWxhbmNlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdvYnRhaW4vYWNjb3VudHMvYW5kL2JhbGFuY2VzL2J5L2Nvb2RpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2JhdGluRGV0YWlsZWRJbmNvbWVCeVVzZXJBbmREYXRlKHBhcmFtczogSU9iYXRpbkRldGFpbGVkSW5jb21lQnlVc2VyQW5kRGF0ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL2RldGFpbGVkL2luY29tZS9yZXBvcnQvYnkvYWR2aXNvcic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBleHBvcnRJbmNvbWVFeHBlbnNlSGlzdG9yeURhdGEocGFyYW1zOiBJT2JhdGluRGV0YWlsZWRJbmNvbWVCeVVzZXJBbmREYXRlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdleHBvcnQvaW5jb21lL2V4cGVuc2UvaGlzdG9yeS9kYXRhJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkFsbFBheW1lbnRCaWxsQ2FuY2VsZWRCeVN0dWRlbnQoY29kZVN0dWRlbnQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ29idGFpbi9hbGwvcGF5bWVudC9iaWxsL2NhbmNlbGxlZC9ieS9zdHVkZW50LycgKyBjb2RlU3R1ZGVudDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIGdldFBheW1lbnRJbmZvQnlSZWZlcmVuY2UocGFyYW1zOiBJUGF5bWVudFJlZmVyZW5jZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9wYXltZW50L2JpbGwvYnkvcmVmZXJlbmNlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRzQnlDb2QocGFyYW06SUNvZFBheW1lbnRScSk6T2JzZXJ2YWJsZTxhbnk+e1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3BheW1lbnRzL2J5L2NvZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRzTWFkZUJ5RGF0ZXMocGFyYW1zOiBJQ2FuY2VsbGVkUmVjZWlwdEJ5RGF0ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3BheW1lbnRzL21hZGUvYnkvZGF0ZXMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgc2VuZEVtYWlsUGF5bWVudChwYXJhbXM6IFNlbmRFbWFpbFBheW1lbnQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3NlbmQvZW1haWwvcGF5bWVudCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBzZW5kRW1haWxQYXltZW50Q2FuY2VsbGF0aW9uKHBhcmFtczogU2VuZEVtYWlsUGF5bWVudENhbmNlbGxhdGlvblJTKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9zZW5kL2VtYWlsL3BheW1lbnQvY2FuY2VsbGF0aW9uJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbn1cblxuICBnZXRBbGxUcmFuc2ZlcnMocGFyYW1zOiBJVHJhbnNmZXJHZXRBbGxScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2ZlcnMvYWxsJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG5cbiAgZ2V0VHJhbnNmZXJCeUNvZGUocGFyYW1zOiBJVHJhbnNmZXJHZXRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2ZlcnMvc3BlY2lmaWMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgLy8gY3JlYXRlVHJhbnNmZXIocGFyYW1zOiBJVHJhbnNmZXJDcmVhdGVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gIC8vICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2ZlcnMvY3JlYXRlJztcbiAgLy8gICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgLy8gfVxuXG4gIGNyZWF0ZVRyYW5zZmVyKHBhcmFtczogSVRyYW5zZmVyQ3JlYXRlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdHJhbnNmZXJzL2NyZWF0ZSc7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgncGFyYW1zW3Rva2VuXScsIHBhcmFtcy50b2tlbik7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdwYXJhbXNbdHJhbnNmZXJfYW1vdW50XScsIHBhcmFtcy50cmFuc2Zlcl9hbW91bnQudG9TdHJpbmcoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdwYXJhbXNbYmFua19jb2RlXScsIHBhcmFtcy5iYW5rX2NvZGUudG9TdHJpbmcoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdwYXJhbXNbdHJhbnNmZXJfZGF0ZV0nLCBwYXJhbXMudHJhbnNmZXJfZGF0ZSk7IC8vIGFob3JhIHN0cmluZ1xuICAgIGZvcm1EYXRhLmFwcGVuZCgncGFyYW1zW3JlZmVyZW5jZV9udW1iZXJdJywgcGFyYW1zLnJlZmVyZW5jZV9udW1iZXIpO1xuXG5cbiAgICBpZiAocGFyYW1zLmltYWdlKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ3BhcmFtc1tpbWFnZV0nLCBwYXJhbXMuaW1hZ2UsIHBhcmFtcy5pbWFnZS5uYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIGZvcm1EYXRhKTtcbiAgfVxuLypcbiAgc2hvd1RyYW5zZmVySW1hZ2UocGFyYW1zOiBJVHJhbnNmZXJTaG93SW1hZ2VScSk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdHJhbnNmZXIvc2hvdy1pbWFnZSc7XG4gICAgY29uc3QgYm9keSA9IHsgY29kZTogcGFyYW1zLmNvZGUgfTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxCbG9iPihzZXJ2aWNlVXJsLCBib2R5LCB7XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicsXG4gICAgfSk7XG4gIH1cblxuICBhc3NpZ25JbWFnZVRvVHJhbnNmZXIocGFyYW1zOiBJVHJhbnNmZXJBc3NpZ25JbWFnZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2Zlci9hc3NpZ24taW1hZ2UnO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCd0b2tlbicsIHBhcmFtcy50b2tlbik7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdjb2RlJywgcGFyYW1zLmNvZGUudG9TdHJpbmcoKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdpbWFnZScsIHBhcmFtcy5pbWFnZSwgcGFyYW1zLmltYWdlLm5hbWUpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIGZvcm1EYXRhKTtcbiAgfSAgICovXG5cbiAgICBhc3NpZ25JbWFnZVRvVHJhbnNmZXIocGFyYW1zOiBJVHJhbnNmZXJBc3NpZ25JbWFnZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3RyYW5zZmVyL2Fzc2lnbi1pbWFnZSc7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXJhbXNbdG9rZW5dJywgcGFyYW1zLnRva2VuKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncGFyYW1zW2NvZGVdJywgcGFyYW1zLmNvZGUudG9TdHJpbmcoKSk7XG4gICAgICBpZiAocGFyYW1zLmltYWdlKSB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW1hZ2UnLCBwYXJhbXMuaW1hZ2UsIHBhcmFtcy5pbWFnZS5uYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc2hvd1RyYW5zZmVySW1hZ2UocGFyYW1zOiBJVHJhbnNmZXJTaG93SW1hZ2VScSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJsb2I+PiB7XG4gICAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3RyYW5zZmVyL3Nob3ctaW1hZ2UnO1xuICAgICAgY29uc3QgYm9keSA9IHtcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgY29kZTogcGFyYW1zLmNvZGVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCBib2R5LCB7XG4gICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgICB9KTtcbiAgICB9XG5cblxuXG4gIHVwZGF0ZVRyYW5zZmVyKHBhcmFtczogSVRyYW5zZmVyVXBkYXRlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdHJhbnNmZXJzL3VwZGF0ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICB1cGRhdGVUcmFuc2ZlclN0YXR1cyhwYXJhbXM6IElUcmFuc2ZlclN0YXR1c1VwZGF0ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3RyYW5zZmVycy91cGRhdGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZGVsZXRlVHJhbnNmZXIocGFyYW1zOiBJVHJhbnNmZXJEZWxldGVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC90cmFuc2ZlcnMvZGVsZXRlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHNlYXJjaFRyYW5zZmVyKHBhcmFtczogSVRyYW5zZmVyU2VhcmNoUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdHJhbnNmZXIvc2VhcmNoJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGV4cG9ydFBheW1lbnRDb3JyZWxhdGl2ZWVIaXN0b3J5RGF0YShwYXJhbTpJUGF5bWVudENvcnJlbGF0aXZlUnEpOk9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZXhwb3J0L3BheW1lbnRzL2NvcnJlbGF0aXZlL2hpc3RvcnkvZGF0YSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblBheW1lbnRzTWFkZUJ5RmlsdGVyKHBhcmFtOiBJUGF5bWVudENvcnJlbGF0aXZlUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ29idGFpbi9wYXltZW50L2NvcnJlbGF0aXZlcy9ieS9maWx0ZXInO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5HYXRld2F5UGF5bWVudFJlY29yZChwYXJhbTogSU9idGFpbkdhdGV3YXlQYXltZW50UmVjb3JkUnEpOiBPYnNlcnZhYmxlPGFueT57XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ29idGFpbi9nYXRld2F5L3BheW1lbnQvcmVjb3JkJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZXBheWNvUGF5bWVudFVwZGF0ZShwYXJhbTogSVVwZGF0ZUVwYXljb1BheW1lbnRScSk6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZXBheWNvL3BheW1lbnQvdXBkYXRlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZXhwb3J0RWxlY3Ryb25pY0ludm9pY2VIaXN0b3J5RGF0YShwYXJhbTpJRWxlY3Ryb25pY0ludm9pY2VSUyk6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZXhwb3J0L2VsZWN0cm9uaWMvaW52b2ljZS9oaXN0b3J5L2RhdGEnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBleHBvcnRBY2NvdW50c0FuZEJhbGFuY2VzQnlDb29kaW5hdG9yKHBhcmFtOklBY2NvdW50c0JhbGFuY2VScSk6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZXhwb3J0L2FjY291bnRzL2FuZC9iYWxhbmNlcy9ieS9jb29kaW5hdG9yJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgY3JlYXRlQ29kUGF5bWVudHMocGFyYW1zOiBJQ3JlYXRlQ29kUGF5bWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvY3JlYXRlL2NvZC9wYXltZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBkZWxldGVDb2RQYXltZW50cyhwYXJhbXM6IElEZWxldGVDb2RQYXltZW50c1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9kZWxldGUvY29kL3BheW1lbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG5cbiAgZ2V0RnVsbFBheW1lbnRJbmZvcm1hdGlvbihwYXJhbXM6IElHZXRGdWxsUGF5bWVudEluZm9ybWF0aW9uUnEpOiBPYnNlcnZhYmxlPElHZXRGdWxsUGF5bWVudEluZm9ybWF0aW9uUnM+IHtcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3BheW1lbnQvYmlsbC9mdWxsLWluZm9ybWF0aW9uJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxJR2V0RnVsbFBheW1lbnRJbmZvcm1hdGlvblJzPihzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHVwZGF0ZVRyYW5zZmVyU3RhdHVzQnlDb2RlKHBhcmFtczogSVRyYW5zZmVyU3RhdHVzVXBkYXRlUmVxdWVzdFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3RyYW5zZmVyL3VwZGF0ZS1zdGF0dXMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgdXBkYXRlRWxlY3Ryb25pY0ludm9pY2UocGFyYW1zOiBJVXBkYXRlRWxlY3Ryb25pY0ludm9pY2VScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9wYXltZW50L2JpbGwvdXBkYXRlLWVsZWN0cm9uaWMtaW52b2ljZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBzZWFyY2hQYXltZW50QmlsbChwYXJhbXM6IElTZWFyY2hQYXltZW50QmlsbFJxKTogT2JzZXJ2YWJsZTxJU2VhcmNoUGF5bWVudEJpbGxScz4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvcGF5bWVudC9iaWxsL3NlYXJjaC1pbmZvcm1hdGlvbic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SVNlYXJjaFBheW1lbnRCaWxsUnM+KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VmFsaWRhdGlvbk9mVHJhbnNmZXJzQnlOdW1iZXIocGFyYW1zOiBJVmFsaWRhdGlvbk9mVHJhbnNmZXJzQnlOdW1iZXJScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3ZhbGlkYXRpb24vb2YvdHJhbnNmZXJzL2J5L251bWJlcic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SVNlYXJjaFBheW1lbnRCaWxsUnM+KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0U3VtbWFyeUJ5Q29vcmRpbmF0b3IocGFyYW1zOiBJR2V0U3VtbWFyeUJ5Q29vcmRpbmF0b3JScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3N1bW1hcnkvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cblxuICBjcmVhdGVUcmFuc2ZlclZhbGlkYXRlKHBhcmFtczogSUNyZWF0ZVRyYW5zZmVyUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2NyZWF0ZS90cmFuc2Zlci92YWxpZGF0ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBzZWFyY2hUcmFuc2ZlckJ5UmVmZXJlbmNlKHBhcmFtczogSVNlYXJjaFRyYW5zZmVyUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3NlYXJjaC90cmFuc2Zlci9ieS9yZWZlcmVuY2UnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgdXBkYXRlVHJhbnNmZXJEYXRhKHBhcmFtczogSVVwZGF0ZVRyYW5zZmVyUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3VwZGF0ZS90cmFuc2Zlci9kYXRhJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkxpc3RTdHVkZW50UGF5bWVudFN0YXR1cyhwYXJhbXM6IElPYnRhaW5Db3Vyc2VCeUNvb2REaWZmUGFyYW1ScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL2xpc3Qvc3R1ZGVudC9wYXltZW50L3N0YXR1cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBleHBvcnRMaXN0U3R1ZGVudFBheW1lbnRTdGF0dXMocGFyYW1zOiBJT2J0YWluQ291cnNlQnlDb29kRGlmZlBhcmFtUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2V4cG9ydC9zdHVkZW50L3BheW1lbnQvc3RhdHVzL2xpc3QvYnkvY29vcmRpbmF0b3InO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluUGF5bWVudFBsYW5CeUNvZGVDb2QgKGNvZGVDb2Q6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3BheW1lbnQvcGxhbi9ieS9jb2RlL2NvZC8nICsgY29kZUNvZDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIHJlY2VpdmVQYXltZW50c01hZGVUb0NvZCAoY29kZUNvZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdyZWNlaXZlL3BheW1lbnRzL21hZGUvdG8vY29kLycgKyBjb2RlQ29kO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgbmV3UmVnaXN0ZVBheW1lbnRCaWxsUHJlYXNzaWduZWRDb2QocGFyYW1zOiBQYXltZW50QmlsbFJxMik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ25ldy9yZWdpc3RlL3BheW1lbnQvYmlsbC9wcmVhc3NpZ25lZC9jb2QnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgYWRkTmV3UXVvdGFXaXRoQ29tbWVudHMocGFyYW1zOiBJQWRkTmV3UXVvdGFXaXRoQ29tbWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2FkZC9uZXcvcXVvdGEvd2l0aC9jb21tZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBkZWxldGVRdW90YVJlY29yZFdpdGhDb21tZW50cyhwYXJhbXM6IElEZWxldGVRdW90YVJlY29yZFdpdGhDb21tZW50c1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZGVsZXRlL3F1b3RhL3JlY29yZC93aXRoL2NvbW1lbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHNhdmVNb2RpZmllZFBheW1lbnRQbGFuKHBhcmFtczogSVNhdmVNb2RpZmllZFBheW1lbnRQbGFuUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdzYXZlL21vZGlmaWVkL3BheW1lbnQvcGxhbic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBwcmV2aWV3TW9kaWZ5UGF5bWVudFBsYW4ocGFyYW1zOiBJUHJldmlld01vZGlmeVBheW1lbnRQbGFuUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwcmV2aWV3L21vZGlmeS9wYXltZW50L3BsYW4nO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgbW9kaWZ5UXVvdGFEYXRhV2l0aENvbW1lbnRzKHBhcmFtczogSU1vZGlmeVF1b3RhRGF0YVdpdGhDb21tZW50c1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnbW9kaWZ5L3F1b3RhL2RhdGEvd2l0aC9jb21tZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBlZGl0SW5zdGFsbG1lbnRBbW91bnRXaXRoQ29tbWVudHMocGFyYW1zOiBJRWRpdEluc3RhbGxtZW50QW1vdW5XaXRoQ29tbWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2VkaXQvaW5zdGFsbG1lbnQvYW1vdW50L3dpdGgvY29tbWVudHMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgc3R1ZGVudFBheW1lbnRQbGFuQnlDb2QgKGNvZGVDb2Q6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnc3R1ZGVudC9wYXltZW50L3BsYW4vYnkvY29kLycgKyBjb2RlQ29kO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgZ2V0UGF5bWVudHNCeU1hZGVFeHBvcnQocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdleHBvcnQvZmlsZS9leGNlbC9wYXltZW50cy9tYWRlL2J5L2RhdGVzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHNlYXJjaEZvclN0dWRlbnRzQnlEaWZmZXJlbnRQYXJhbWV0ZXJzKHBhcmFtOiBJT2J0YWluU3R1ZGVudFBheW1lbnRCeURpZmZQYXJhbVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnc2VhcmNoL2Zvci9zdHVkZW50cy9ieS9kaWZmZXJlbnQvcGFyYW1ldGVycyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkNvdXJzZVBheW1lbnRSYW5nZVJlcG9ydChwYXJhbTogSUNvdXJzZVBheW1lbnRSYW5nZVJlcG9ydFJxKTogT2JzZXJ2YWJsZTxJQ291cnNlUGF5bWVudFJhbmdlUmVwb3J0UnM+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vY291cnNlL3BheW1lbnQvcmFuZ2UvcmVwb3J0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PElDb3Vyc2VQYXltZW50UmFuZ2VSZXBvcnRScz4oc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5QZW5kaW5nR2F0ZXdheVBheW1lbnRzRm9yUHJvY2Vzc2luZyhjb2RlU3R1ZGVudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnb2J0YWluL3BlbmRpbmcvZ2F0ZXdheS9wYXltZW50cy9mb3IvcHJvY2Vzc2luZy8nICsgY29kZVN0dWRlbnQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBuZXdUcmFuc2FjdGlvbk9uV29tcGlQYXltZW50R2F0ZXdheShwYXJhbTogSVdvbXBpUGF5bWVudFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnbmV3L3RyYW5zYWN0aW9uL29uL3dvbXBpL3BheW1lbnQvZ2F0ZXdheSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGhhbmRsZShwYXJhbTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnd29tcGkvd2ViaG9vayc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uc0J5VXNlckNvZGUocGFyYW06IElHZXRUcmFuc2FjdGlvbnNCeVVzZXJDb2RlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvdHJhbnNhY3Rpb25zL2J5L3VzZXIvY29kZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHJldmVydFBlbmRpbmdQYXltZW50c0J5VXNlckNvZGUocGFyYW06IElHZXRUcmFuc2FjdGlvbnNCeVVzZXJDb2RlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdyZXZlcnQvcGVuZGluZy9wYXltZW50cy9ieS91c2VyL2NvZGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICB1cGRhdGVUcmFuc2FjdGlvblN0YXR1cyhwYXJhbTogSVVwZGF0ZVRyYW5zYWN0aW9uU3RhdHVzUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICd1cGRhdGUvdHJhbnNhY3Rpb24vc3RhdHVzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0V29tcGlUcmFuc2FjdGlvbkJ5SWQocGFyYW06IElXb21waVRyYW5zYWN0aW9uUGF5bG9hZFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3dvbXBpL3RyYW5zYWN0aW9uL2J5L2lkJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbn1cblxuIl19
@@ -229,7 +229,8 @@ export class UserService extends IPTGeneralService {
229
229
  }
230
230
  searchUsersForTeamAssignment(params) {
231
231
  let serviceUrl = this.SERVICE_URL + 'post/search/users/for/team/assignment';
232
- return this.http.get(serviceUrl);
232
+ this.generateRequestParams(params);
233
+ return this.http.post(serviceUrl, this.httpOptions);
233
234
  }
234
235
  }
235
236
  UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: UserService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -240,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
240
241
  providedIn: 'root',
241
242
  }]
242
243
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvcmUvc2VydmljZXMvdXNlci1zZXJ2aWNlL3VzZXItc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFPM0QsTUFBTSxPQUFPLFdBQVksU0FBUSxpQkFBaUI7SUFHaEQsWUFBb0IsSUFBZ0I7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBRjVCLGdCQUFXLEdBQUcsWUFBWSxDQUFDO1FBSWpDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFrQjtRQUN0QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztRQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxhQUFhLENBQUMsYUFBK0I7UUFDM0MsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUNyRCxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRLENBQUMsSUFBZ0I7UUFD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Q0FBQztJQUVELG1CQUFtQixDQUFDLFFBQWdCO1FBQ2xDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcseUJBQXlCLEdBQUcsUUFBUSxDQUFDO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQWU7UUFDbkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRywyQkFBMkIsR0FBRyxPQUFPLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsNEJBQTRCLENBQUMsTUFBdUM7UUFDbEUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyx1Q0FBdUMsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7O3dHQTdRVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZWdpc3RlckluZGV4UnEsIFJlZ2lzdGVyRGFzaGJvYXJkUnEsIFVzZXJUb2tlblJxLCBGb3Jnb3RQYXNzd29yZFJxLCBMb2dpblJxLCBSZWdpc3RlclJxLCBnZXRTdHVkZW50UnEsIFRlYWNoZXJCeUNvZGVScSwgdXNlclRva2VuUnEsIElVcGR0YWVVc2VyVmFsaWRhdGVkUnEsIElPYnRhaW5Vc2VyQnlFbWFpbERvY1JxLCBJU3R1ZGVudE9yVXNlckVrdEJ5Q29uY2VwdFJxLCBVc2VyVG9rZW5ScTIsIFBhcmFtc1VzZXIsIEl1c2Vyc1JxLCBJRGVsZXRlVGVhY2hlclJxLElVcGRhdGVEYXRhVGVhY2hlclJxLCBJT2J0YWluRGF0YUZyb21TdXBwbGllcnNTdHVkZW50UnEsIElHZVVzZXJzRnJvbURlcGFydG1lbnRzUnEsIElTZWFyY2hGb3JTdHVkZW50VG9FZGl0UnEsIElTZWFyY2hVc2Vyc0ZvclRlYW1Bc3NpZ25tZW50UnEgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlci91c2VyLXJxLm1vZGVsJztcbmltcG9ydCB7IGdldFN0cmF0ZWd5QnlVc2VyQ29tbWVyY2lhbFJxIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21hcmtldGluZy9tYXJrZXRpbmcubW9kZWwnO1xuaW1wb3J0IHsgSVBUR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlLWVudmlyb21lbnRzJztcbmltcG9ydCB7IEdldFN0dWRlbnRCeUNvZGVScSwgdG9rZW5BZG1pbmlzdHJhdGl2ZVJxIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BheW1lbnQvcGF5bWVudC1ycS5tb2RlbCc7XG5pbXBvcnQgeyBJUmVwb3J0RXhjZWxScSB9IGZyb20gJy4uLy4uL21vZGVscy9jb21tZXJjaWFsL2NvbW1lcmNpYWwubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2UgZXh0ZW5kcyBJUFRHZW5lcmFsU2VydmljZXtcbiAgcHJpdmF0ZSBTRVJWSUNFX1VSTCA9ICd1c2Vycy9hcGkvJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuU0VSVklDRV9VUkwgPSB0aGlzLmJhc2VVcmwoKSArIHRoaXMuU0VSVklDRV9VUkw7XG4gIH1cblxuICBsb2dpbih1c2VyTG9naW46IExvZ2luUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2xvZ2luJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh1c2VyTG9naW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHJlc2V0UGFzc3dvcmQocmVzZXRQYXNzd29yZDogRm9yZ290UGFzc3dvcmRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Jlc2V0L3Bhc3N3b3JkJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhyZXNldFBhc3N3b3JkKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICByZWdpc3Rlcih1c2VyOiBSZWdpc3RlclJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jcmVhdGUvd2ViJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh1c2VyKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICByZWdpc3RlckluZGV4KHJlZ2lzdGVyOiBSZWdpc3RlckluZGV4UnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2NyZWF0ZS9tYXJrZXRpbmcnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHJlZ2lzdGVyKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICByZWdpc3RlckRhc2hib2FyZCh1c2VyOiBSZWdpc3RlckRhc2hib2FyZFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jcmVhdGUvZGFzaGJvYXJkJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh1c2VyKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRBdmFpbGFibGVUZWFjaGVycyh0b2tlbjogVXNlclRva2VuUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi90ZWFjaGVycyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXModG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldEFsbEFkdmlzb3IodXNlclRva2VuOiBnZXRTdHJhdGVneUJ5VXNlckNvbW1lcmNpYWxScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSAgdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9hbGwvdXNlci9jb21tZXJjaWFsJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh1c2VyVG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldEJ5Um9sZVVzZXIoY29kZVJvbGU6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9vYnRhaW4vYnkvcm9sZS91c2VyLycgKyBjb2RlUm9sZTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIGdldFVzZXJTdGF0aXN0aWNzKHVzZXJUb2tlbjogZ2V0U3RyYXRlZ3lCeVVzZXJDb21tZXJjaWFsUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gIHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L2NvbnRhY3Qvc3RyYXRlZ3kvc3RhdGlzdGljcyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXModXNlclRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRSb3V0ZXNGb3JSb2xlKHRva2VuOiBVc2VyVG9rZW5ScTIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3JvdXRlcy9yb2xlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh0b2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0U3R1ZGVudHModG9rZW46IFVzZXJUb2tlblJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vc3R1ZGVudHMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRTdHVkZW50KHRva2VuOiBnZXRTdHVkZW50UnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9zdHVkZW50JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh0b2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0QWxsQWRtaW5pc3RyYXRpdmUodXNlclRva2VuOiB0b2tlbkFkbWluaXN0cmF0aXZlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gIHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vYWxsL3VzZXIvYWRtaW5pc3RyYXRpdmUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXJUb2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG4gIGdldEFsbE1hcmtldGluZyh1c2VyVG9rZW46IHRva2VuQWRtaW5pc3RyYXRpdmVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSAgdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9hbGwvdXNlci9tYXJrZXRpbmcnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXJUb2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0U3R1ZGVuYnlDb2RlKHBhcmFuczogR2V0U3R1ZGVudEJ5Q29kZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L29idGFpbi9zdHVkZW50L2J5L2NvZGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFucyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VGVhY2hlcnNieUNvZGUocGFyYW5zOiBUZWFjaGVyQnlDb2RlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi90ZWFjaGVycy9ieS9jb2RlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbnMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldEFsbFVzZXJCeVJvbGUodXNlclRva2VuOiB1c2VyVG9rZW5ScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSAgdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9hbGwvdXNlci9ieS9yb2xlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh1c2VyVG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFVzZXJSb2xlQnlDb2RlKGNvZGVSb2xlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvb2J0YWluL3VzZXIvcm9sZS9ieS9jb2RlLycgKyBjb2RlUm9sZTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIGdldFVzZXJBbGxCdWRnZXQodXNlclRva2VuOiB0b2tlbkFkbWluaXN0cmF0aXZlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gIHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vYWxsL3VzZXIvYnVkZ2V0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh1c2VyVG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldE9idGFpblBvc3NpYmxlU3R1ZGVudHModXNlclRva2VuOiB0b2tlbkFkbWluaXN0cmF0aXZlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9wb3NzaWJsZVN0dWRlbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh1c2VyVG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldEFsbFVzZXJCeVJvbGVWYWxpZGF0ZSh0b2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vYnkvcm9sL2FsbC91c2VyL3ZhbGlkYXRlZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXModG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHVwZGF0ZVVzZXJWYWxpZGF0ZWQocGFyYW1zOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3VwZGF0ZS91c2VyL3ZhbGlkYXRlZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBkZWxldGVkVXNlclZhbGlkYXRlZChwYXJhbXM6IElVcGR0YWVVc2VyVmFsaWRhdGVkUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2RlbGV0ZWQvdXNlci92YWxpZGF0ZWQnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluU3R1ZGVudEJ5RG9jdW1lbnRFbWFpbChwYXJhbXM6IElPYnRhaW5Vc2VyQnlFbWFpbERvY1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vc3R1ZGVudC9ieS9kb2N1bWVudC9lbWFpbCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5EYXRhQnlVc2VyTG9nZWQocGFyYW1zOiBJUmVwb3J0RXhjZWxScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3VzZXIvY29tbWVyY2lhbC9sb2dlZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgb2J0YWluU3R1ZGVudE9yVXNlckVrdEJ5Q29uY2VwdChwYXJhbXM6IElTdHVkZW50T3JVc2VyRWt0QnlDb25jZXB0UnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9zdHVkZW50cy9ieS90eXBlL2NvbmNlcHQvaW4vcGF5bWVudHMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgb2J0YWluUmVmZXJyYWxVc2Vycyh0b2tlbjogZ2V0U3R1ZGVudFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vcmVmZXJyYWwvdXNlcnMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgb2J0YWluVXNlcnNUaHJlZURwdG9Db21tZXJjaWFsQW5kQWRtaW5pc3RyYXRpdmVBbmRCdWRnZXQodG9rZW46IGdldFN0cmF0ZWd5QnlVc2VyQ29tbWVyY2lhbFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vdXNlci9jb21tZXJjaWFsL2FkbWluaXN0cmF0aXZlL2J1ZGdldHMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5UZWFjaGVyc0F2YWlsYWJsZVRvVGVhY2goKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L29idGFpbi90ZWFjaGVycy9hdmFpbGFibGUvdG8vdGVhY2gnO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgc2VhcmNoVXNlcihwYXJhbTogUGFyYW1zVXNlcik6IE9ic2VydmFibGU8YW55PntcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9zZWFyY2gvdXNlcic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFVzZXJCeUNvZGUoY29kZVVzZXI6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC91c2VyL2J5L2NvZGUvJyArIGNvZGVVc2VyO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG4gIGNyZWF0ZVByb3ZlZWRvcihwYXJhbTpJdXNlcnNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvY3JlYXRlL3VzZXInO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgdXBkYXRlVXNlcihwYXJhbTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICd1cGRhdGUvZGF0YS91c2VyL2NvZC9zZWxmL21hbmFnZWQnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBEZWxldGVUZWFjaGVyQnlDb2RlKHBhcmFtczogSURlbGV0ZVRlYWNoZXJScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvZGVsZXRlL3RlYWNoZXIvYnkvY29kZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBVcGRhdGVUZWFjaGVyRGF0YUJ5Q29kZShwYXJhbXM6IElVcGRhdGVEYXRhVGVhY2hlclJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC91cGRhdGUvdGVhY2hlci9kYXRhL2J5L2NvZGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0QWxsVXNlcnNDb21taXNpb25zKHBhcmFtczogZ2V0U3RyYXRlZ3lCeVVzZXJDb21tZXJjaWFsUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9hbGwvdXNlci9jb21taXNzaW9ucyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5EYXRhRnJvbVN1cHBsaWVyc1N0dWRlbnQocGFyYW1zOiBJT2J0YWluRGF0YUZyb21TdXBwbGllcnNTdHVkZW50UnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdvYnRhaW4vZGF0YS9mcm9tL3N1cHBsaWVycy9vci9zdHVkZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRVc2Vyc0Zyb21EZXBhcnRtZW50cyhwYXJhbXM6IElHZVVzZXJzRnJvbURlcGFydG1lbnRzUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvdXNlcnMvZnJvbS9kZXBhcnRtZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRVc2Vyc0FsbEZyb21EZXBhcnRtZW50c0J5UGFyYW1zKHBhcmFtczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3VzZXJzL2FsbC9mcm9tL2RlcGFydG1lbnRzL2J5L3BhcmFtZXRlcnMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgdXBkYXRlVXNlckFuZFBhcmVudEJ5Q29kZShwYXJhbXM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3VwZGF0ZS91c2VyL2J5L2NvZGUvYW5kL3BhcmVudCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICB1cGRhdGVVc2VyQnlDb2RlKHBhcmFtczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAndXBkYXRlL3VzZXIvYnkvY29kZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBzZWFyY2hGb3JVc2VyQnlDb2RlKGNvZGVVc2VyOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdzZWFyY2gvZm9yL3VzZXIvYnkvY29kZS8nICsgY29kZVVzZXI7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBzZWFyY2hGb3JTdHVkZW50VG9FZGl0KHBhcmFtczogSVNlYXJjaEZvclN0dWRlbnRUb0VkaXRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3NlYXJjaC9mb3Ivc3R1ZGVudC90by9lZGl0JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHNlYXJjaFN0dWRlbnRCeUNvZGUoY29kZVVzZXI6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3NlYXJjaC9zdHVkZW50L2J5L2NvZGUvJyArIGNvZGVVc2VyO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgc2VhcmNoU3R1ZGVudEJ5SWRjYXJkKGlkX2NhcmQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3NlYXJjaC9zdHVkZW50L2J5L2lkY2FyZC8nICsgaWRfY2FyZDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIHNlYXJjaFVzZXJzRm9yVGVhbUFzc2lnbm1lbnQocGFyYW1zOiBJU2VhcmNoVXNlcnNGb3JUZWFtQXNzaWdubWVudFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9zZWFyY2gvdXNlcnMvZm9yL3RlYW0vYXNzaWdubWVudCc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cbn1cbiJdfQ==
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvcmUvc2VydmljZXMvdXNlci1zZXJ2aWNlL3VzZXItc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFPM0QsTUFBTSxPQUFPLFdBQVksU0FBUSxpQkFBaUI7SUFHaEQsWUFBb0IsSUFBZ0I7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBRjVCLGdCQUFXLEdBQUcsWUFBWSxDQUFDO1FBSWpDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFrQjtRQUN0QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztRQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxhQUFhLENBQUMsYUFBK0I7UUFDM0MsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztRQUNyRCxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRLENBQUMsSUFBZ0I7UUFD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Q0FBQztJQUVELG1CQUFtQixDQUFDLFFBQWdCO1FBQ2xDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcseUJBQXlCLEdBQUcsUUFBUSxDQUFDO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQWU7UUFDbkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRywyQkFBMkIsR0FBRyxPQUFPLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBSUQsNEJBQTRCLENBQUMsTUFBVztRQUN0QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLHVDQUF1QyxDQUFDO1FBQzVFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7d0dBaFJVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlZ2lzdGVySW5kZXhScSwgUmVnaXN0ZXJEYXNoYm9hcmRScSwgVXNlclRva2VuUnEsIEZvcmdvdFBhc3N3b3JkUnEsIExvZ2luUnEsIFJlZ2lzdGVyUnEsIGdldFN0dWRlbnRScSwgVGVhY2hlckJ5Q29kZVJxLCB1c2VyVG9rZW5ScSwgSVVwZHRhZVVzZXJWYWxpZGF0ZWRScSwgSU9idGFpblVzZXJCeUVtYWlsRG9jUnEsIElTdHVkZW50T3JVc2VyRWt0QnlDb25jZXB0UnEsIFVzZXJUb2tlblJxMiwgUGFyYW1zVXNlciwgSXVzZXJzUnEsIElEZWxldGVUZWFjaGVyUnEsSVVwZGF0ZURhdGFUZWFjaGVyUnEsIElPYnRhaW5EYXRhRnJvbVN1cHBsaWVyc1N0dWRlbnRScSwgSUdlVXNlcnNGcm9tRGVwYXJ0bWVudHNScSwgSVNlYXJjaEZvclN0dWRlbnRUb0VkaXRScSwgSVNlYXJjaFVzZXJzRm9yVGVhbUFzc2lnbm1lbnRScSB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyL3VzZXItcnEubW9kZWwnO1xuaW1wb3J0IHsgZ2V0U3RyYXRlZ3lCeVVzZXJDb21tZXJjaWFsUnEgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWFya2V0aW5nL21hcmtldGluZy5tb2RlbCc7XG5pbXBvcnQgeyBJUFRHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UtZW52aXJvbWVudHMnO1xuaW1wb3J0IHsgR2V0U3R1ZGVudEJ5Q29kZVJxLCB0b2tlbkFkbWluaXN0cmF0aXZlUnEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGF5bWVudC9wYXltZW50LXJxLm1vZGVsJztcbmltcG9ydCB7IElSZXBvcnRFeGNlbFJxIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbW1lcmNpYWwvY29tbWVyY2lhbC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyU2VydmljZSBleHRlbmRzIElQVEdlbmVyYWxTZXJ2aWNle1xuICBwcml2YXRlIFNFUlZJQ0VfVVJMID0gJ3VzZXJzL2FwaS8nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5TRVJWSUNFX1VSTCA9IHRoaXMuYmFzZVVybCgpICsgdGhpcy5TRVJWSUNFX1VSTDtcbiAgfVxuXG4gIGxvZ2luKHVzZXJMb2dpbjogTG9naW5ScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvbG9naW4nO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXJMb2dpbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgcmVzZXRQYXNzd29yZChyZXNldFBhc3N3b3JkOiBGb3Jnb3RQYXNzd29yZFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncmVzZXQvcGFzc3dvcmQnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHJlc2V0UGFzc3dvcmQpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHJlZ2lzdGVyKHVzZXI6IFJlZ2lzdGVyUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2NyZWF0ZS93ZWInO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXIpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHJlZ2lzdGVySW5kZXgocmVnaXN0ZXI6IFJlZ2lzdGVySW5kZXhScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvY3JlYXRlL21hcmtldGluZyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocmVnaXN0ZXIpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHJlZ2lzdGVyRGFzaGJvYXJkKHVzZXI6IFJlZ2lzdGVyRGFzaGJvYXJkUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L2NyZWF0ZS9kYXNoYm9hcmQnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXIpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVRlYWNoZXJzKHRva2VuOiBVc2VyVG9rZW5ScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3RlYWNoZXJzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh0b2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0QWxsQWR2aXNvcih1c2VyVG9rZW46IGdldFN0cmF0ZWd5QnlVc2VyQ29tbWVyY2lhbFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9ICB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL2FsbC91c2VyL2NvbW1lcmNpYWwnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXJUb2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0QnlSb2xlVXNlcihjb2RlUm9sZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L29idGFpbi9ieS9yb2xlL3VzZXIvJyArIGNvZGVSb2xlO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgZ2V0VXNlclN0YXRpc3RpY3ModXNlclRva2VuOiBnZXRTdHJhdGVneUJ5VXNlckNvbW1lcmNpYWxScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSAgdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvY29udGFjdC9zdHJhdGVneS9zdGF0aXN0aWNzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh1c2VyVG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFJvdXRlc0ZvclJvbGUodG9rZW46IFVzZXJUb2tlblJxMik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvcm91dGVzL3JvbGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRTdHVkZW50cyh0b2tlbjogVXNlclRva2VuUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9zdHVkZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXModG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFN0dWRlbnQodG9rZW46IGdldFN0dWRlbnRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3N0dWRlbnQnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRBbGxBZG1pbmlzdHJhdGl2ZSh1c2VyVG9rZW46IHRva2VuQWRtaW5pc3RyYXRpdmVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSAgdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9hbGwvdXNlci9hZG1pbmlzdHJhdGl2ZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXModXNlclRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cbiAgZ2V0QWxsTWFya2V0aW5nKHVzZXJUb2tlbjogdG9rZW5BZG1pbmlzdHJhdGl2ZVJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9ICB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL2FsbC91c2VyL21hcmtldGluZyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXModXNlclRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRTdHVkZW5ieUNvZGUocGFyYW5zOiBHZXRTdHVkZW50QnlDb2RlUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvb2J0YWluL3N0dWRlbnQvYnkvY29kZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW5zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRUZWFjaGVyc2J5Q29kZShwYXJhbnM6IFRlYWNoZXJCeUNvZGVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3RlYWNoZXJzL2J5L2NvZGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFucyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0QWxsVXNlckJ5Um9sZSh1c2VyVG9rZW46IHVzZXJUb2tlblJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9ICB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL2FsbC91c2VyL2J5L3JvbGUnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXJUb2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VXNlclJvbGVCeUNvZGUoY29kZVJvbGU6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC9vYnRhaW4vdXNlci9yb2xlL2J5L2NvZGUvJyArIGNvZGVSb2xlO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cbiAgZ2V0VXNlckFsbEJ1ZGdldCh1c2VyVG9rZW46IHRva2VuQWRtaW5pc3RyYXRpdmVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSAgdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9hbGwvdXNlci9idWRnZXQnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXJUb2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0T2J0YWluUG9zc2libGVTdHVkZW50cyh1c2VyVG9rZW46IHRva2VuQWRtaW5pc3RyYXRpdmVScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3Bvc3NpYmxlU3R1ZGVudHMnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHVzZXJUb2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0QWxsVXNlckJ5Um9sZVZhbGlkYXRlKHRva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9ieS9yb2wvYWxsL3VzZXIvdmFsaWRhdGVkJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyh0b2tlbik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgdXBkYXRlVXNlclZhbGlkYXRlZChwYXJhbXM6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvdXBkYXRlL3VzZXIvdmFsaWRhdGVkJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGRlbGV0ZWRVc2VyVmFsaWRhdGVkKHBhcmFtczogSVVwZHRhZVVzZXJWYWxpZGF0ZWRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3QvZGVsZXRlZC91c2VyL3ZhbGlkYXRlZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5TdHVkZW50QnlEb2N1bWVudEVtYWlsKHBhcmFtczogSU9idGFpblVzZXJCeUVtYWlsRG9jUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9zdHVkZW50L2J5L2RvY3VtZW50L2VtYWlsJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkRhdGFCeVVzZXJMb2dlZChwYXJhbXM6IElSZXBvcnRFeGNlbFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9vYnRhaW4vdXNlci9jb21tZXJjaWFsL2xvZ2VkJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBvYnRhaW5TdHVkZW50T3JVc2VyRWt0QnlDb25jZXB0KHBhcmFtczogSVN0dWRlbnRPclVzZXJFa3RCeUNvbmNlcHRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL3N0dWRlbnRzL2J5L3R5cGUvY29uY2VwdC9pbi9wYXltZW50cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBvYnRhaW5SZWZlcnJhbFVzZXJzKHRva2VuOiBnZXRTdHVkZW50UnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi9yZWZlcnJhbC91c2Vycyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXModG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICBvYnRhaW5Vc2Vyc1RocmVlRHB0b0NvbW1lcmNpYWxBbmRBZG1pbmlzdHJhdGl2ZUFuZEJ1ZGdldCh0b2tlbjogZ2V0U3RyYXRlZ3lCeVVzZXJDb21tZXJjaWFsUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L29idGFpbi91c2VyL2NvbW1lcmNpYWwvYWRtaW5pc3RyYXRpdmUvYnVkZ2V0cyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXModG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpblRlYWNoZXJzQXZhaWxhYmxlVG9UZWFjaCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvb2J0YWluL3RlYWNoZXJzL2F2YWlsYWJsZS90by90ZWFjaCc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBzZWFyY2hVc2VyKHBhcmFtOiBQYXJhbXNVc2VyKTogT2JzZXJ2YWJsZTxhbnk+e1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3NlYXJjaC91c2VyJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VXNlckJ5Q29kZShjb2RlVXNlcjogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnZ2V0L3VzZXIvYnkvY29kZS8nICsgY29kZVVzZXI7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cbiAgY3JlYXRlUHJvdmVlZG9yKHBhcmFtOkl1c2Vyc1JxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9jcmVhdGUvdXNlcic7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuICB1cGRhdGVVc2VyKHBhcmFtOmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3VwZGF0ZS9kYXRhL3VzZXIvY29kL3NlbGYvbWFuYWdlZCc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIERlbGV0ZVRlYWNoZXJCeUNvZGUocGFyYW1zOiBJRGVsZXRlVGVhY2hlclJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAncG9zdC9kZWxldGUvdGVhY2hlci9ieS9jb2RlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIFVwZGF0ZVRlYWNoZXJEYXRhQnlDb2RlKHBhcmFtczogSVVwZGF0ZURhdGFUZWFjaGVyUnEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3VwZGF0ZS90ZWFjaGVyL2RhdGEvYnkvY29kZSc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICBnZXRBbGxVc2Vyc0NvbW1pc2lvbnMocGFyYW1zOiBnZXRTdHJhdGVneUJ5VXNlckNvbW1lcmNpYWxScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3Bvc3Qvb2J0YWluL2FsbC91c2VyL2NvbW1pc3Npb25zJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIG9idGFpbkRhdGFGcm9tU3VwcGxpZXJzU3R1ZGVudChwYXJhbXM6IElPYnRhaW5EYXRhRnJvbVN1cHBsaWVyc1N0dWRlbnRScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ29idGFpbi9kYXRhL2Zyb20vc3VwcGxpZXJzL29yL3N0dWRlbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFVzZXJzRnJvbURlcGFydG1lbnRzKHBhcmFtczogSUdlVXNlcnNGcm9tRGVwYXJ0bWVudHNScSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ2dldC91c2Vycy9mcm9tL2RlcGFydG1lbnRzJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIGdldFVzZXJzQWxsRnJvbURlcGFydG1lbnRzQnlQYXJhbXMocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdnZXQvdXNlcnMvYWxsL2Zyb20vZGVwYXJ0bWVudHMvYnkvcGFyYW1ldGVycyc7XG4gICAgdGhpcy5nZW5lcmF0ZVJlcXVlc3RQYXJhbXMocGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Qoc2VydmljZVVybCwgdGhpcy5odHRwT3B0aW9ucyk7XG4gIH1cblxuICB1cGRhdGVVc2VyQW5kUGFyZW50QnlDb2RlKHBhcmFtczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAndXBkYXRlL3VzZXIvYnkvY29kZS9hbmQvcGFyZW50JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHVwZGF0ZVVzZXJCeUNvZGUocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICd1cGRhdGUvdXNlci9ieS9jb2RlJztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxuXG4gIHNlYXJjaEZvclVzZXJCeUNvZGUoY29kZVVzZXI6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHNlcnZpY2VVcmwgPSB0aGlzLlNFUlZJQ0VfVVJMICsgJ3NlYXJjaC9mb3IvdXNlci9ieS9jb2RlLycgKyBjb2RlVXNlcjtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChzZXJ2aWNlVXJsKTtcbiAgfVxuXG4gIHNlYXJjaEZvclN0dWRlbnRUb0VkaXQocGFyYW1zOiBJU2VhcmNoRm9yU3R1ZGVudFRvRWRpdFJxKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnc2VhcmNoL2Zvci9zdHVkZW50L3RvL2VkaXQnO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXF1ZXN0UGFyYW1zKHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHNlcnZpY2VVcmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICB9XG5cbiAgc2VhcmNoU3R1ZGVudEJ5Q29kZShjb2RlVXNlcjogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnc2VhcmNoL3N0dWRlbnQvYnkvY29kZS8nICsgY29kZVVzZXI7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoc2VydmljZVVybCk7XG4gIH1cblxuICBzZWFyY2hTdHVkZW50QnlJZGNhcmQoaWRfY2FyZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgc2VydmljZVVybCA9IHRoaXMuU0VSVklDRV9VUkwgKyAnc2VhcmNoL3N0dWRlbnQvYnkvaWRjYXJkLycgKyBpZF9jYXJkO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHNlcnZpY2VVcmwpO1xuICB9XG5cblxuXG4gIHNlYXJjaFVzZXJzRm9yVGVhbUFzc2lnbm1lbnQocGFyYW1zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzZXJ2aWNlVXJsID0gdGhpcy5TRVJWSUNFX1VSTCArICdwb3N0L3NlYXJjaC91c2Vycy9mb3IvdGVhbS9hc3NpZ25tZW50JztcbiAgICB0aGlzLmdlbmVyYXRlUmVxdWVzdFBhcmFtcyhwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChzZXJ2aWNlVXJsLCB0aGlzLmh0dHBPcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -1008,7 +1008,8 @@ class UserService extends IPTGeneralService {
1008
1008
  }
1009
1009
  searchUsersForTeamAssignment(params) {
1010
1010
  let serviceUrl = this.SERVICE_URL + 'post/search/users/for/team/assignment';
1011
- return this.http.get(serviceUrl);
1011
+ this.generateRequestParams(params);
1012
+ return this.http.post(serviceUrl, this.httpOptions);
1012
1013
  }
1013
1014
  }
1014
1015
  UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: UserService, deps: [{ token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -8077,6 +8078,16 @@ class BudgetService extends IPTGeneralService {
8077
8078
  this.generateRequestParams(param);
8078
8079
  return this.http.post(serviceUrl, this.httpOptions);
8079
8080
  }
8081
+ updateTransactionStatus(param) {
8082
+ let serviceUrl = this.SERVICE_URL + 'update/transaction/status';
8083
+ this.generateRequestParams(param);
8084
+ return this.http.post(serviceUrl, this.httpOptions);
8085
+ }
8086
+ getWompiTransactionById(param) {
8087
+ let serviceUrl = this.SERVICE_URL + 'get/wompi/transaction/by/id';
8088
+ this.generateRequestParams(param);
8089
+ return this.http.post(serviceUrl, this.httpOptions);
8090
+ }
8080
8091
  }
8081
8092
  BudgetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: BudgetService, deps: [{ token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
8082
8093
  BudgetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: BudgetService, providedIn: 'root' });