ng-pli-commons 0.0.1402 → 0.0.1405

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.
@@ -38,12 +38,6 @@ export class PliCnfStatusFlowService {
38
38
  getAllActiveByStatusEndId(statusEnd) {
39
39
  return this.httpClient.get(this.environment.host.backend.configuration + 'pliCnfStatusFlow/getAllActiveByStatusEnd', { params: new HttpParams().set('statusEndId', statusEnd.toString()) });
40
40
  }
41
- getMailConfigurationIn(listStatusFlowId) {
42
- return this.httpClient.get(`${this.environment.host.backend.configuration}pliCnfStatusFlowMailing/findByIdIn`, {
43
- params: new HttpParams()
44
- .set('listStatusFlowId', listStatusFlowId.toString())
45
- });
46
- }
47
41
  }
48
42
  PliCnfStatusFlowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PliCnfStatusFlowService, deps: [{ token: 'environment' }, { token: i1.HttpClient }, { token: i2.AuthenticationService }], target: i0.ɵɵFactoryTarget.Injectable });
49
43
  PliCnfStatusFlowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PliCnfStatusFlowService, providedIn: 'root' });
@@ -56,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
56
50
  type: Inject,
57
51
  args: ['environment']
58
52
  }] }, { type: i1.HttpClient }, { type: i2.AuthenticationService }]; } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxpLWNuZi1zdGF0dXMtZmxvdy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9wbGktY25mLXN0YXR1cy1mbG93LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUczRSxPQUFPLEVBQUUsV0FBVyxFQUF1QyxNQUFNLGFBQWEsQ0FBQzs7OztBQUsvRSxNQUFNLE9BQU8sdUJBQXVCO0lBR25DLFlBQ2dDLFdBQWdCLEVBQ3ZDLFVBQXNCLEVBQ3RCLFdBQWtDO1FBRlgsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFMbkMsZUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBTXZGLENBQUM7SUFFSixpREFBaUQ7SUFDakQsT0FBTyxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsMEJBQTBCLEVBQ3hFLEVBQUUsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLG1DQUFtQyxFQUNqRixFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxpREFBaUQ7SUFDakQsc0JBQXNCLENBQUMsUUFBZ0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyx5Q0FBeUMsRUFDdkYsRUFBRSxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsVUFBa0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDekIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSwyQ0FBMkMsVUFBVSxFQUFFLENBQ3JHLENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBdUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDMUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSx5QkFBeUIsRUFDdkUsSUFBSSxDQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGFBQStCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsdUJBQXVCLEVBQ3JFLGFBQWEsRUFDYixXQUFXLENBQ1gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsYUFBaUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRywwQkFBMEIsRUFDeEUsYUFBYSxFQUNiLFdBQVcsQ0FDWCxDQUFDO0lBQ0gsQ0FBQztJQUVBLHlCQUF5QixDQUFDLFNBQWlCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsMENBQTBDLEVBQ3hGLEVBQUUsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUNyRSxDQUFDO0lBQ0YsQ0FBQztJQUVELHNCQUFzQixDQUFDLGdCQUErQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUMzQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLG9DQUFvQyxFQUMvRTtZQUNFLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRTtpQkFDckIsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3hELENBQ0osQ0FBQztJQUNGLENBQUM7O29IQTdFVSx1QkFBdUIsa0JBSTFCLGFBQWE7d0hBSlYsdUJBQXVCLGNBRnZCLE1BQU07MkZBRU4sdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBS0UsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEhFQURFUl9KU09OLCBQbGlDbmZTdGF0dXNGbG93LCBQbGlDbmZTdGF0dXNFbWFpbCB9IGZyb20gJ25nLXBsaS11dGlsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsaUNuZlN0YXR1c0Zsb3dTZXJ2aWNlIHtcclxuXHRwcml2YXRlIGhlYWRlckpzb24gPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSkgfTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueSxcclxuXHRcdHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZVxyXG5cdCkge31cclxuXHJcblx0LyoqIEl0IHJldHVybnMgYWxsIGxpc3Qgb2Ygc3RhdHVzIGJ5IHByb20gY29kZSAqL1xyXG5cdGdldEJ5SWQoc3RhdHVzRmxvd0lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAncGxpQ25mU3RhdHVzRmxvdy9nZXRCeUlkJyxcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdzdGF0dXNGbG93SWQnLCBzdGF0dXNGbG93SWQudG9TdHJpbmcoKSkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIGFsbCBsaXN0IG9mIHN0YXR1cyBieSBwcm9tIGNvZGUgKi9cclxuXHRnZXRBbGxCeVByb21Db2RlKHByb21Db2RlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAncGxpQ25mU3RhdHVzRmxvdy9nZXRBbGxCeVByb21Db2RlJyxcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwcm9tQ29kaWdvJywgcHJvbUNvZGUudG9TdHJpbmcoKSkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIGFsbCBsaXN0IG9mIHN0YXR1cyBieSBwcm9tIGNvZGUgKi9cclxuXHRnZXRBbGxBY3RpdmVCeVByb21Db2RlKHByb21Db2RlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAncGxpQ25mU3RhdHVzRmxvdy9nZXRBbGxBY3RpdmVCeVByb21Db2RlJyxcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwcm9tQ29kaWdvJywgcHJvbUNvZGUudG9TdHJpbmcoKSkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdGdldE1haWxDb25maWd1cmF0aW9uKHN0YXR1c0Zsb3c6IG51bWJlcik6IE9ic2VydmFibGU8UGxpQ25mU3RhdHVzRW1haWw+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFBsaUNuZlN0YXR1c0VtYWlsPihcclxuXHRcdFx0YCR7dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbn1wbGlDbmZTdGF0dXNGbG93TWFpbGluZy9nZXRCeVN0YXR1c0Zsb3cvJHtzdGF0dXNGbG93fWBcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzYXZlTWFpbENvbmZpZ3VyYXRpb24oY29uZjogUGxpQ25mU3RhdHVzRW1haWwpOiBPYnNlcnZhYmxlPFBsaUNuZlN0YXR1c0VtYWlsPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8UGxpQ25mU3RhdHVzRW1haWw+KFxyXG5cdFx0XHRgJHt0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9ufXBsaUNuZlN0YXR1c0Zsb3dNYWlsaW5nYCxcclxuXHRcdFx0Y29uZlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHNhdmUoY25mU3RhdHVzRmxvdzogUGxpQ25mU3RhdHVzRmxvdyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAncGxpQ25mU3RhdHVzRmxvdy9zYXZlJyxcclxuXHRcdFx0Y25mU3RhdHVzRmxvdyxcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzYXZlQWxsKGNuZlN0YXR1c0Zsb3c6IFBsaUNuZlN0YXR1c0Zsb3dbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAncGxpQ25mU3RhdHVzRmxvdy9zYXZlQWxsJyxcclxuXHRcdFx0Y25mU3RhdHVzRmxvdyxcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuICBnZXRBbGxBY3RpdmVCeVN0YXR1c0VuZElkKHN0YXR1c0VuZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3BsaUNuZlN0YXR1c0Zsb3cvZ2V0QWxsQWN0aXZlQnlTdGF0dXNFbmQnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3N0YXR1c0VuZElkJywgc3RhdHVzRW5kLnRvU3RyaW5nKCkpIH1cclxuXHRcdCk7XHJcbiAgfVxyXG5cclxuICBnZXRNYWlsQ29uZmlndXJhdGlvbkluKGxpc3RTdGF0dXNGbG93SWQ6IEFycmF5PG51bWJlcj4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8UGxpQ25mU3RhdHVzRW1haWw+KFxyXG5cdFx0XHRgJHt0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9ufXBsaUNuZlN0YXR1c0Zsb3dNYWlsaW5nL2ZpbmRCeUlkSW5gLFxyXG4gICAgICB7XHJcbiAgICAgICAgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpXHJcbiAgICAgICAgICAuc2V0KCdsaXN0U3RhdHVzRmxvd0lkJywgbGlzdFN0YXR1c0Zsb3dJZC50b1N0cmluZygpKVxyXG4gICAgICB9XHJcblx0XHQpO1xyXG4gIH1cclxufVxyXG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxpLWNuZi1zdGF0dXMtZmxvdy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9wbGktY25mLXN0YXR1cy1mbG93LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUczRSxPQUFPLEVBQUUsV0FBVyxFQUF1QyxNQUFNLGFBQWEsQ0FBQzs7OztBQUsvRSxNQUFNLE9BQU8sdUJBQXVCO0lBR25DLFlBQ2dDLFdBQWdCLEVBQ3ZDLFVBQXNCLEVBQ3RCLFdBQWtDO1FBRlgsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFMbkMsZUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBTXZGLENBQUM7SUFFSixpREFBaUQ7SUFDakQsT0FBTyxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsMEJBQTBCLEVBQ3hFLEVBQUUsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLG1DQUFtQyxFQUNqRixFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxpREFBaUQ7SUFDakQsc0JBQXNCLENBQUMsUUFBZ0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyx5Q0FBeUMsRUFDdkYsRUFBRSxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsVUFBa0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDekIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSwyQ0FBMkMsVUFBVSxFQUFFLENBQ3JHLENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBdUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDMUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSx5QkFBeUIsRUFDdkUsSUFBSSxDQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLGFBQStCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsdUJBQXVCLEVBQ3JFLGFBQWEsRUFDYixXQUFXLENBQ1gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsYUFBaUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRywwQkFBMEIsRUFDeEUsYUFBYSxFQUNiLFdBQVcsQ0FDWCxDQUFDO0lBQ0gsQ0FBQztJQUVBLHlCQUF5QixDQUFDLFNBQWlCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsMENBQTBDLEVBQ3hGLEVBQUUsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUNyRSxDQUFDO0lBQ0YsQ0FBQzs7b0hBbkVVLHVCQUF1QixrQkFJMUIsYUFBYTt3SEFKVix1QkFBdUIsY0FGdkIsTUFBTTsyRkFFTix1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFLRSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSEVBREVSX0pTT04sIFBsaUNuZlN0YXR1c0Zsb3csIFBsaUNuZlN0YXR1c0VtYWlsIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxpQ25mU3RhdHVzRmxvd1NlcnZpY2Uge1xyXG5cdHByaXZhdGUgaGVhZGVySnNvbiA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSB9O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55LFxyXG5cdFx0cHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyBhbGwgbGlzdCBvZiBzdGF0dXMgYnkgcHJvbSBjb2RlICovXHJcblx0Z2V0QnlJZChzdGF0dXNGbG93SWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICdwbGlDbmZTdGF0dXNGbG93L2dldEJ5SWQnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3N0YXR1c0Zsb3dJZCcsIHN0YXR1c0Zsb3dJZC50b1N0cmluZygpKSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgYWxsIGxpc3Qgb2Ygc3RhdHVzIGJ5IHByb20gY29kZSAqL1xyXG5cdGdldEFsbEJ5UHJvbUNvZGUocHJvbUNvZGU6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICdwbGlDbmZTdGF0dXNGbG93L2dldEFsbEJ5UHJvbUNvZGUnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3Byb21Db2RpZ28nLCBwcm9tQ29kZS50b1N0cmluZygpKSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgYWxsIGxpc3Qgb2Ygc3RhdHVzIGJ5IHByb20gY29kZSAqL1xyXG5cdGdldEFsbEFjdGl2ZUJ5UHJvbUNvZGUocHJvbUNvZGU6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICdwbGlDbmZTdGF0dXNGbG93L2dldEFsbEFjdGl2ZUJ5UHJvbUNvZGUnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3Byb21Db2RpZ28nLCBwcm9tQ29kZS50b1N0cmluZygpKSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0Z2V0TWFpbENvbmZpZ3VyYXRpb24oc3RhdHVzRmxvdzogbnVtYmVyKTogT2JzZXJ2YWJsZTxQbGlDbmZTdGF0dXNFbWFpbD4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8UGxpQ25mU3RhdHVzRW1haWw+KFxyXG5cdFx0XHRgJHt0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9ufXBsaUNuZlN0YXR1c0Zsb3dNYWlsaW5nL2dldEJ5U3RhdHVzRmxvdy8ke3N0YXR1c0Zsb3d9YFxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHNhdmVNYWlsQ29uZmlndXJhdGlvbihjb25mOiBQbGlDbmZTdGF0dXNFbWFpbCk6IE9ic2VydmFibGU8UGxpQ25mU3RhdHVzRW1haWw+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxQbGlDbmZTdGF0dXNFbWFpbD4oXHJcblx0XHRcdGAke3RoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb259cGxpQ25mU3RhdHVzRmxvd01haWxpbmdgLFxyXG5cdFx0XHRjb25mXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c2F2ZShjbmZTdGF0dXNGbG93OiBQbGlDbmZTdGF0dXNGbG93KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICdwbGlDbmZTdGF0dXNGbG93L3NhdmUnLFxyXG5cdFx0XHRjbmZTdGF0dXNGbG93LFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHNhdmVBbGwoY25mU3RhdHVzRmxvdzogUGxpQ25mU3RhdHVzRmxvd1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICdwbGlDbmZTdGF0dXNGbG93L3NhdmVBbGwnLFxyXG5cdFx0XHRjbmZTdGF0dXNGbG93LFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG4gIGdldEFsbEFjdGl2ZUJ5U3RhdHVzRW5kSWQoc3RhdHVzRW5kOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAncGxpQ25mU3RhdHVzRmxvdy9nZXRBbGxBY3RpdmVCeVN0YXR1c0VuZCcsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnc3RhdHVzRW5kSWQnLCBzdGF0dXNFbmQudG9TdHJpbmcoKSkgfVxyXG5cdFx0KTtcclxuICB9XHJcbn1cclxuIl19
@@ -710,6 +710,22 @@ export class TokenService {
710
710
  // title: "Alerta!",
711
711
  // error: "El token " + tokensArray[i].value + " no fue encontrado."
712
712
  // };
713
+ //
714
+ let regexOperator = new RegExp('(={2}|!==|!=|<=|>=|<|>)');
715
+ // Retorna el operador
716
+ let operator = replacedTokens.match(regexOperator);
717
+ // Separa la sentencia por el operador
718
+ // La primera parte es el valor por el cual se remplaza el token
719
+ // El segundo es el valor con el cual se va a comparar
720
+ let valueToken, valueToCompare;
721
+ [valueToken, valueToCompare] = replacedTokens.split(operator[0]);
722
+ // Si el valor que se encontro para el token es un array es porque es tag
723
+ if (Array.isArray(valueToken)) {
724
+ // Se trata de encontrar el valor a comparar dentro del array si es asi
725
+ // replacedTokens='true'
726
+ let isTagFound = valueToken.some((tag) => tag == valueToCompare);
727
+ replacedTokens = isTagFound ? 'true' : 'false';
728
+ }
713
729
  }
714
730
  }
715
731
  return replacedTokens;
@@ -788,8 +804,6 @@ TokenService.TOKEN_LABEL_TASK = 'Tarea';
788
804
  TokenService.TOKEN_LABEL_TASKL = 'task';
789
805
  /** */
790
806
  TokenService.TOKEN_LABEL_GUARANTEE = 'Garantia';
791
- // Token de tags
792
- TokenService.TOKEN_LABEL_TAG = 'Tag';
793
807
  /** */
794
808
  TokenService.BUDGET_TOKENS_KEY_TOTAL_AMOUNT = 'totalAmount';
795
809
  /** */
@@ -912,6 +926,7 @@ TokenService.STATIC_TOKENS_BEN_CODIGO = 'benCodigo';
912
926
  TokenService.STATIC_TOKEN_CREDIT_REVIEWER_OBSERVATIONS_CODEBTOR = 'creditReviewerObservationsCodebtor';
913
927
  /** */
914
928
  TokenService.STATIC_TOKEN_CREDIT_REVIEWER_OBSERVATIONS = 'creditReviewerObservations';
929
+ TokenService.STATIC_TOKEN_TAG_NAME = 'tagName';
915
930
  TokenService.STATIC_TOKENS = [
916
931
  {
917
932
  key: TokenService.STATIC_TOKENS_KEY_PATROCINADOR,
@@ -1088,6 +1103,10 @@ TokenService.STATIC_TOKENS = [
1088
1103
  {
1089
1104
  key: TokenService.STATIC_TOKEN_CREDIT_REVIEWER_OBSERVATIONS_CODEBTOR,
1090
1105
  label: 'Observaciones revisor financiero codeudores'
1106
+ },
1107
+ {
1108
+ key: TokenService.STATIC_TOKEN_TAG_NAME,
1109
+ label: 'Nombre del tag'
1091
1110
  }
1092
1111
  ];
1093
1112
  TokenService.excludedToken = [
@@ -1109,4 +1128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
1109
1128
  type: Inject,
1110
1129
  args: [LOCALE_ID]
1111
1130
  }] } });
1112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTlELE9BQU8sRUFBUyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBd0IsTUFBTSxhQUFhLENBQUM7Ozs7O0FBSzdGLE1BQU0sT0FBTyxZQUFZO0lBaVZ4QixZQUNnQyxXQUFXLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCO1FBSEgsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNoQyxDQUFDO0lBRUosaUZBQWlGO0lBQ2pGLHVCQUF1QixDQUFDLFVBQVU7UUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QywwQkFBMEI7WUFDMUIsSUFBSSxnQkFBZ0IsR0FBVSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN0RCxJQUFJLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDMUIsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUU7NEJBQy9CLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FB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RSxZQUFZLENBQUMsc0NBQXNDLENBQUMsV0FBVyxFQUFFO0NBQ2pFLENBQUM7eUdBL1VVLFlBQVksa0JBa1ZmLGFBQWE7NkdBbFZWLFlBQVksY0FGWixNQUFNOzJGQUVOLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFtVkUsTUFBTTsyQkFBQyxhQUFhOzBIQTdVSSxNQUFNO3NCQUEvQixNQUFNO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRva2VuLCBIRUFERVJfSlNPTiwgVXRpbFN0cmluZywgRGF0ZVV0aWwsIFBsaUNuZkd1YXJhbnRlZVRva2VuIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9rZW5TZXJ2aWNlIHtcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU0lHTl9MRVRURVJfVEFHX0lEOiBzdHJpbmcgPSAnX3NpZ24tbGV0dGVyLXRhZy1pZCc7XHJcblxyXG5cdC8qKiAqL1xyXG5cdEBJbmplY3QoTE9DQUxFX0lEKSBwdWJsaWMgbG9jYWxlOiBzdHJpbmc7XHJcblxyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9GT1JNOiBzdHJpbmcgPSAnRnJtJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfQlVER0VUOiBzdHJpbmcgPSAnUHJlc3VwdWVzdG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9DQUxDVUxBVEVEOiBzdHJpbmcgPSAnQ2FsY3VsYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfU05BUFNIT1Q6IHN0cmluZyA9ICdTbmFwc2hvdCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1NUQVRJQzogc3RyaW5nID0gJ0VzdMOhdGljbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0RPQ1VNRU5UTzogc3RyaW5nID0gJ0RvY3VtZW50byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBU0s6IHN0cmluZyA9ICdUYXJlYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBU0tMOiBzdHJpbmcgPSAndGFzayc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0dVQVJBTlRFRTogc3RyaW5nID0gJ0dhcmFudGlhJztcclxuXHQvLyBUb2tlbiBkZSB0YWdzXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBRzogc3RyaW5nID0gJ1RhZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ3RvdGFsQW1vdW50JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICdhcHBsaWNhdGlvblRvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9PV05fRk9VTkRTOiBzdHJpbmcgPSAnYXBwbGljYXRpb25Pd25Gb3VuZHMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID0gJ2FwcGxpY2F0aW9uRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAnbGVnYWxpemF0aW9uVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9PV05fRk9VTkRTOiBzdHJpbmcgPVxyXG5cdFx0J2xlZ2FsaXphdGlvbk93bkZvdW5kcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID0gJ2xlZ2FsaXphdGlvbkZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0lOU1VSQU5DRV9BTU9VTlQ6IHN0cmluZyA9ICdpbnN1cmFuY2VBbW91bnQnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBMRUdBTElaQVRJT05fT1JfQVBQTElDQVRJT05fVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPVxyXG5cdFx0J2xlZ2xpemF0aW9uT3JBcHBsaWNhdGlvblRvdGFsRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfUkVTVU1FX0NBVEVHT1JZX1lFQVI6IHN0cmluZyA9ICdyZXN1bWVDYXRlZ29yeVllYXInO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9GRUNIQV9GSU5BTkNJTkdfU1RBUlQ6IHN0cmluZyA9ICdmZWNoYUluaWNpb0ZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19FTkQ6IHN0cmluZyA9ICdmZWNoYUZpbkZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfRFVSQVRJT05fU1RVRElFUzogc3RyaW5nID0gJ2R1cmFjaW9uRXN0dWRpb3MnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0ZJTkFOQ0lOR19EVVJBVElPTjogc3RyaW5nID0gJ2R1cmFjaW9uRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTjogc3RyaW5nID0gJ2NvZGlnb1ZlcmlmaWNhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0FfUVVJRU5fVkFfRElSSUdJRE86IHN0cmluZyA9ICdhUXVpZW5WYURpcmlnaWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfRkVDSEFfQUNUVUFMOiBzdHJpbmcgPSAnZmVjaGFBY3R1YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9TVEFUVVNfTkFNRTogc3RyaW5nID0gJ3N0YXR1c05hbWUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1I6IHN0cmluZyA9ICdwbGlQYXRyb2NpbmFkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1JfQ09SVE86IHN0cmluZyA9ICdwbGlQYXRyb2NpbmFkb3JDb3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BOiBzdHJpbmcgPSAncGxpUHJvZ3JhbWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQV9DT1JUTzogc3RyaW5nID0gJ3BsaVByb2dyYW1hQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT046IHN0cmluZyA9ICdwbGlQcm9tb2Npb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT05fQ09SVE86IHN0cmluZyA9ICdwbGlQcm9tb2Npb25Db3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OOiBzdHJpbmcgPSAnYW5pb1Byb21vY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRTogc3RyaW5nID0gJ2lzb01vbmVkYUJhc2UnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9TQUxVRE9fQ09NUExFTUVOVEFSSU86IHN0cmluZyA9ICdzYWx1ZG9Db21wbGVtZW50YXJpbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX05VTUJFUl9BUFBMSUNBVElPTjogc3RyaW5nID0gJ251bWVyb1JhZGljYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfVVNFUl9JTklUSUFMUzogc3RyaW5nID0gJ2luaWNpYWxlc1VzdWFyaW8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9MRVRURVJfU0lHTjogc3RyaW5nID0gJ2Zpcm1hQ2FydGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9OQU1FOiBzdHJpbmcgPSAnY29taXRlTm9tYnJlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OOiBzdHJpbmcgPSAnY29taXRlU2VnbWVudGFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT046IHN0cmluZyA9ICdjb21pdGVBZ3J1cGFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFOiBzdHJpbmcgPSAnY29taXRlRmVjaGFMaW5lYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ORklSTV9MRUdBTElaQVRJT05fQVBQT0lOVE1FTlQ6IHN0cmluZyA9ICdjb25maXJtYWNpb25DaXRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9OVU1CRVI6IHN0cmluZyA9ICdudW1lcm9Eb2N1bWVudG9Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfVFlQRTogc3RyaW5nID0gJ3RpcG9Eb2N1bWVudG9Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTkFNRTogc3RyaW5nID0gJ25vbWJyZXNDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTEFTVE5BTUU6IHN0cmluZyA9ICdhcGVsbGlkb3NDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVFlQRV9DT0RFQlRPUjogc3RyaW5nID0gJ3RpcG9QZXJzb25hQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX1JFVklFV0VSOiBzdHJpbmcgPSAncmV2aXNvckNvZGV1ZG9yZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1RPVEFMX1dFSUdIVEVEOiBzdHJpbmcgPSAncG9uZGVyYWRvVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTlNFQ1VUSVZFX0dVQVJBTlRFRTogc3RyaW5nID0gJ2NvbnNlY3V0aXZvR2FyYW50aWFzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19EQVk6IHN0cmluZyA9ICdkaWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX01PTlRIOiBzdHJpbmcgPSAnbWVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19ZRUFSOiBzdHJpbmcgPSAnYW5vJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9OQU1FOiBzdHJpbmcgPSAnbm9tYnJlc1JlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0xBU1ROQU1FOiBzdHJpbmcgPSAnYXBlbGxpZG9zUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfRE9DVU1FTlRfTlVNQkVSOiBzdHJpbmcgPSAnY2VkdWxhUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ0lUWV9TSUdOQVRVUkU6IHN0cmluZyA9ICdjaXVkYWRGaXJtYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWTogc3RyaW5nID0gJ3RpcG9Vc3VhcmlvRXN0dWRpb0NyZWRpdG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZOiBzdHJpbmcgPSAnY2FudGlkYWRWZWhpY3Vsb3NDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZOiBzdHJpbmcgPSAnY2FudGlkYWRCaWVuZXNDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfTElTVF9DT0RFQlRPUlM6IHN0cmluZyA9ICdsaXN0YUNvZGV1ZG9yZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fSU5HUkVTT19DT0RFVURPUl9IQUJFQVNfREFUQTogc3RyaW5nID0gJ2luZ3Jlc29Db2RldWRvckhhYmVhc0RhdGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fUERGX1JFU1VNRU5fQ09ERVVET1I6IHN0cmluZyA9ICdwZGZSZXN1bWVuQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1FVQU5USVRZX1ZFSElDTEVfQkVORUZJQ0lBUlk6IHN0cmluZyA9ICdjYW50aWRhZFZlaGljdWxvc1NlbGVjY2lvbmFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfQVNTRVRTX0JFTkVGSUNJQVJZOiBzdHJpbmcgPSAnY2FudGlkYWRCaWVuZXNTZWxlY2Npb25hZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0JFTl9DT0RJR086IHN0cmluZyA9ICdiZW5Db2RpZ28nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OU19DT0RFQlRPUjogc3RyaW5nID1cclxuXHRcdCdjcmVkaXRSZXZpZXdlck9ic2VydmF0aW9uc0NvZGVidG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlM6IHN0cmluZyA9ICdjcmVkaXRSZXZpZXdlck9ic2VydmF0aW9ucyc7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlM6IGFueVtdID0gW1xyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1IsXHJcblx0XHRcdGxhYmVsOiAnUGF0cm9jaW5hZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUEsXHJcblx0XHRcdGxhYmVsOiAnUHJvZ3JhbWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT04sXHJcblx0XHRcdGxhYmVsOiAnUHJvbW9jacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0HDsW8gcHJvbW9jacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRSxcclxuXHRcdFx0bGFiZWw6ICdJU08gTW9uZWRhIGJhc2UnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9TQUxVRE9fQ09NUExFTUVOVEFSSU8sXHJcblx0XHRcdGxhYmVsOiAnU2FsdWRvIGNvbXBsZW1lbnRhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdDw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9BX1FVSUVOX1ZBX0RJUklHSURPLFxyXG5cdFx0XHRsYWJlbDogJ0EgcXVpZW4gdmEgZGlyaWdpZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9GRUNIQV9BQ1RVQUwsXHJcblx0XHRcdGxhYmVsOiAnRmVjaGEgYWN0dWFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnRXN0YWRvIGFjdHVhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX05VTUJFUl9BUFBMSUNBVElPTixcclxuXHRcdFx0bGFiZWw6ICdOw7ptZXJvIHJhZGljYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfVVNFUl9JTklUSUFMUyxcclxuXHRcdFx0bGFiZWw6ICdJbmljaWFsZXMgZGUgdXN1YXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0xFVFRFUl9TSUdOLFxyXG5cdFx0XHRsYWJlbDogJ0Zpcm1hIGRlIGNhcnRhcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9TRUdNRU5UQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnU2VnbWVudGFjacOzbiBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnQWdydXBhY2nDs24gY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURSxcclxuXHRcdFx0bGFiZWw6ICdGZWNoYSBMw61uZWEgZGUgY29ydGUnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTkZJUk1fTEVHQUxJWkFUSU9OX0FQUE9JTlRNRU5ULFxyXG5cdFx0XHRsYWJlbDogJ0NvbmZpcm1hY2nDs24gZGUgY2l0YSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfTlVNQkVSLFxyXG5cdFx0XHRsYWJlbDogJ07Dum1lcm8gZGUgZG9jdW1lbnRvIGRlIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9UWVBFLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gZGUgZG9jdW1lbnRvIGRlIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZXMgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0xBU1ROQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0FwZWxsaWRvcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVFlQRV9DT0RFQlRPUixcclxuXHRcdFx0bGFiZWw6ICdUaXBvIGRlIHBlcnNvbmEgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIHZlaGljdWxvcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGJpZW5lcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfUkVWSUVXRVIsXHJcblx0XHRcdGxhYmVsOiAnUmV2aXNvciBkZSBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRCxcclxuXHRcdFx0bGFiZWw6ICdQb25kZXJhZG8gdG90YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTlNFQ1VUSVZFX0dVQVJBTlRFRSxcclxuXHRcdFx0bGFiZWw6ICdDb25zZWN1dGl2byBkZSBnYXJhbnRpYXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlcyByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9MQVNUTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdBcGVsbGlkb3MgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfRE9DVU1FTlRfTlVNQkVSLFxyXG5cdFx0XHRsYWJlbDogJ0NlZHVsYSByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gdXN1YXJpbyBlc3R1ZGlvIGNyw6lkaXRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19EQVksXHJcblx0XHRcdGxhYmVsOiAnRGlhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19NT05USCxcclxuXHRcdFx0bGFiZWw6ICdNZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1lFQVIsXHJcblx0XHRcdGxhYmVsOiAnQcOxbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ0lUWV9TSUdOQVRVUkUsXHJcblx0XHRcdGxhYmVsOiAnQ2l1ZGFkIGRlIGxhIGZpcm1hJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19MSVNUX0NPREVCVE9SUyxcclxuXHRcdFx0bGFiZWw6ICdMaXN0YSBkZSBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0lOR1JFU09fQ09ERVVET1JfSEFCRUFTX0RBVEEsXHJcblx0XHRcdGxhYmVsOiAnSW5ncmVzbyBDb2RldWRvciBIYWJlYXMgRGF0YSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9QREZfUkVTVU1FTl9DT0RFVURPUixcclxuXHRcdFx0bGFiZWw6ICdQZGYgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1FVQU5USVRZX1ZFSElDTEVfQkVORUZJQ0lBUlksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgZGUgdmVow61jdWxvcyBkZWwgc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19RVUFOVElUWV9BU1NFVFNfQkVORUZJQ0lBUlksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgYmllbmVzIGRlbCBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0JFTl9DT0RJR08sXHJcblx0XHRcdGxhYmVsOiAnQ8OzZGlnbyBiZW5lZmljaWFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OUyxcclxuXHRcdFx0bGFiZWw6ICdPYnNlcnZhY2lvbmVzIHJldmlzb3IgZmluYW5jaWVybyBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OU19DT0RFQlRPUixcclxuXHRcdFx0bGFiZWw6ICdPYnNlcnZhY2lvbmVzIHJldmlzb3IgZmluYW5jaWVybyBjb2RldWRvcmVzJ1xyXG5cdFx0fVxyXG5cdF07XHJcblxyXG5cdHN0YXRpYyBleGNsdWRlZFRva2VuID0gW1xyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWS50b0xvd2VyQ2FzZSgpLFxyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFkudG9Mb3dlckNhc2UoKSxcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWS50b0xvd2VyQ2FzZSgpXHJcblx0XTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcblx0XHRwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcclxuXHRcdHByaXZhdGUgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGVcclxuXHQpIHt9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1GaWVsZHNCeVByb21Db2RlKHByb21Db2RpZ28pOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5UHJvbUNvZGlnbyhwcm9tQ29kaWdvKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6IChhcnJheUZvcm1zOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmIChhcnJheUZvcm1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBmb3JtcyBvZiBhcnJheUZvcm1zKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGZvcm1zLmNvbXBvbmVudHMgJiYgZm9ybXMuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudHMgb2YgZm9ybXMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50cy5jb21wb25lbnRzICYmIGNvbXBvbmVudHMuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50LmNvbHVtbnMgJiYgY29tcG9uZW50LmNvbHVtbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNDb21wb25lbnRzIG9mIGNvbXBvbmVudC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y0NvbXBvbmVudHMuY29tcG9uZW50cyAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y0NvbXBvbmVudHMuY29tcG9uZW50cy5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIGNDb21wb25lbnRzLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGl0ZXJhdG9yLnR5cGUgPT09ICdhZGRyZXNzJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZSBpdGVyYXRvci5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IGFycmF5Rm9ybXM7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0Rm9ybUZpZWxkc0J5Rm9ybUlkKGZvcm1JZDogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeUlkKGZvcm1JZCkuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmICghZm9ybSB8fCAhZm9ybVswXSkge1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybVBhbmVsc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybVBhbm5lbHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5UHJvbUNvZGlnbyhwcm9tQ29kaWdvKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZm9ybSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXS5wcm9tQ29kaWdvIHx8XHJcblx0XHRcdFx0XHRcdGZvcm1bMF0ucHJvbUNvZGlnbyAhPSBwcm9tQ29kaWdvXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyc0MDQnXSk7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1QYW5uZWxzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1QYW5uZWxzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbltsRm9ybVBhbm5lbHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGVkaXRHcmlkIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50czogYW55W10sIGZvcm06IGFueSwgcGFuZWxOYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgcGFuZWxOYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbXBvbmVudHMgYSBjb2x1bW5zIG9mIHRoZSBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRjb21wb25lbnRzOiBhbnlbXSxcclxuXHRcdGZvcm06IGFueSxcclxuXHRcdHBhbmVsTmFtZTogc3RyaW5nLFxyXG5cdFx0ZWRpdGdyaWQ6IGJvb2xlYW4sXHJcblx0XHRlZGl0R3JpZEtleTogc3RyaW5nXHJcblx0KTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cyB8fCBmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdFx0XHRlZGl0Z3JpZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdGVkaXRHcmlkS2V5ID0gZm9ybUNvbXAua2V5O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0cGFuZWxOYW1lLFxyXG5cdFx0XHRcdFx0ZWRpdGdyaWQsXHJcblx0XHRcdFx0XHRlZGl0R3JpZEtleVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9ybUNvbXAucGFuZWxOYW1lID0gcGFuZWxOYW1lO1xyXG5cdFx0XHRcdGZvcm1Db21wLmVkaXRncmlkID0gZWRpdGdyaWQ7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdEdyaWRLZXkgPSBlZGl0R3JpZEtleTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1FZGl0R3JpZEZpZWxkc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdlZGl0Z3JpZCcpIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSAmJiBmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0XHRwYW5lbE5hbWUgPSBmb3JtQ29tcC50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29tcG9uZW50cyA9IHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIHBhbmVsTmFtZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHRva2VucyBieSBwcm9tQ29kaWdvICovXHJcblx0Z2V0TGlzdEJ5UHJvbUNvZGlnbyhwcm9tQ29kZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5UHJvbUNvZGlnbycsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgncHJvbUNvZGlnbycsIHByb21Db2RlLnRvU3RyaW5nKCkpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW4gYnkgaWQgKi9cclxuXHRnZXRCeUlkKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9nZXRCeUlkJywge1xyXG5cdFx0XHRwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpZCcsIGlkLnRvU3RyaW5nKCkpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBkZWxldGVzIGEgZm9ybSBieSBpZCAqL1xyXG5cdGRlbGV0ZShpZCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZShcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9kZWxldGUnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2F2ZXMgdGhlIHRva2VuICovXHJcblx0c2F2ZSh0b2tlbjogVG9rZW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL3NhdmUnLFxyXG5cdFx0XHR0b2tlbixcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtVGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRpZiAoVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1UaXRsZSkpIHtcclxuXHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk0pICtcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoZm9ybVRpdGxlKS5yZXBsYWNlKC9fL2csICctJylcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB1bmlxdWUgdmVyaWZpY2F0aW9uIGNvZGUgKi9cclxuXHRnZXRVbmlxdWVWZXJpZmljYXRpb25Db2RlKGxvZ2luOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmRvY3VtZW50c1JlcG9zaXRvcnkgK1xyXG5cdFx0XHRcdCdkb2N1bWVudG8vY29uc3VsdGFyQ29kaWdvVW5pY28vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2VuZCB0aGUgaW5mb3JtYXRpb24gdG8gY29weSB0aGUgRG9jdW1lbnQgdmlld2VyICovXHJcblx0Y29weURvY3VtZW50SW5mb3JtYXRpb25WaWV3ZXIoXHJcblx0XHRsb2dpbjogc3RyaW5nLFxyXG5cdFx0dG9rZW46IHN0cmluZyxcclxuXHRcdHVuaXF1ZUNvZGU6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50VVJMOiBzdHJpbmcsXHJcblx0XHRkb2N1bWVudE5hbWU6IHN0cmluZ1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgaW5mb0RvY3VtZW50byA9IHtcclxuXHRcdFx0Y29kaWdvVW5pY286IHVuaXF1ZUNvZGUsXHJcblx0XHRcdHJ1dGFEb2N1bWVudG86IGRvY3VtZW50VVJMLFxyXG5cdFx0XHRkb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZVxyXG5cdFx0fTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdFx0J2RvY3VtZW50by9hZGljaW9uYXJEb2N1bWVudG8vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdGluZm9Eb2N1bWVudG8sXHJcblx0XHRcdEhFQURFUl9KU09OXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUJ1ZGdldCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlEb2N1bWVudCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRE9DVU1FTlRPKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlUYXNrKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5U3RhdGljKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUMpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUNhbGN1bGF0ZWQodG9rZW46IFRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRCkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5U25hcHNob3QodG9rZW46IFRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU05BUFNIT1QpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUd1YXJhbnRlZSh0b2tlbjogUGxpQ25mR3VhcmFudGVlVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9HVUFSQU5URUUpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJuIGEgdmFsdWUgdGhhdCByZXByZXNlbnQgdGhlIHR5cGUgb2YgbGFiZWw6IDE9Rm9ybSwgMj1CdWRnZXQsIDM9U3RhdGljLCA0PUNhbGN1bGF0ZWRcclxuXHQgKiBAcGFyYW0ga2V5IFZhbHVlIHRvIGV2YWx1ZWF0ZVxyXG5cdCAqL1xyXG5cdHN0YXRpYyBnZXRLZXlUeXBlKGtleTogc3RyaW5nKTogbnVtYmVyIHtcclxuXHRcdGtleSA9IGtleS5yZXBsYWNlKCd7JywgJycpLnJlcGxhY2UoJ30nLCAnJyk7XHJcblx0XHRrZXkgPSBrZXkuc3Vic3RyaW5nKDEsIGtleS5pbmRleE9mKCdfJykpO1xyXG5cdFx0aWYgKGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STSkpKSB7XHJcblx0XHRcdHJldHVybiAxO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVQpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiAyO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUMpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiAzO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoXHJcblx0XHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEKVxyXG5cdFx0XHQpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDQ7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gNTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVwZW5kcyBvZiB0aGUgdHlwZSBvZiBmb3JtRmllbGRUb2tlbiByZXR1cm4gZGUgdmFsdWUgb2YgdGhlIHZhbHVlRGF0YVxyXG5cdCAqIEBwYXJhbSBmb3JtRmllbGRUb2tlblxyXG5cdCAqIEBwYXJhbSB2YWx1ZURhdGFcclxuXHQgKi9cclxuXHRnZXRWYWx1ZUZyb21Gb3JtRmllbGQoZm9ybUZpZWxkVG9rZW46IGFueSwgdmFsdWVEYXRhOiBhbnkpOiBhbnkge1xyXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZURhdGEgPT0gJ29iamVjdCcpIHtcclxuXHRcdFx0aWYgKGZvcm1GaWVsZFRva2VuLnR5cGUpIHtcclxuXHRcdFx0XHRpZiAoZm9ybUZpZWxkVG9rZW4udHlwZSA9PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGEuZm9ybWF0dGVkX2FkZHJlc3M7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGZvcm1GaWVsZFRva2VuLnR5cGUgPT0gJ3NlbGVjdCcgJiZcclxuXHRcdFx0XHRcdGZvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkICYmXHJcblx0XHRcdFx0XHR2YWx1ZURhdGEuaGFzT3duUHJvcGVydHkoZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhW2Zvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZURhdGE7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZmluZCB0aGUgdG9rZW4gaW4gdGhlIHN0cmluZ1RleHQgYW5kIHJlcGxhY2Ugd2l0aCBkYXRhVmFsdWUuIElmIGRldGVjdCBmb3JtYXQgb2YgbnVtYmVyIG9yIGRhdGUgdHJ5IHRvIGZvcm1hdCB0aGUgZGF0YVZhbHVlXHJcblx0ICogQHBhcmFtIHN0cmluZ1RleHRcclxuXHQgKiBAcGFyYW0gdG9rZW5cclxuXHQgKiBAcGFyYW0gZGF0YVZhbHVlXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2VuKHN0cmluZ1RleHQ6IHN0cmluZywgdG9rZW46IGFueSwgZGF0YVZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0bGV0IHZhbHVlUmVwbGFjZTogc3RyaW5nID0gbnVsbDtcclxuXHRcdGlmICh0b2tlbiAmJiB0b2tlblswXSA9PSAnIycpIHtcclxuXHRcdFx0bGV0IHR5cGVUb2tlbiA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5pbmRleE9mKCcoJykpO1xyXG5cdFx0XHRpZiAodHlwZVRva2VuID09ICdkYXRlJykge1xyXG5cdFx0XHRcdGxldCBkYXRlRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCd9JykgKyAxLFxyXG5cdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignKScpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRsZXQgZGF0ZVZhbHVlID0gRGF0ZVV0aWwuZ2V0RGF0ZShkYXRhVmFsdWUpO1xyXG5cdFx0XHRcdGlmIChkYXRlVmFsdWUpIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IERhdGVVdGlsLmdldE1vbWVudChkYXRlVmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVUb2tlbiA9PSAnbnVtYmVyJykge1xyXG5cdFx0XHRcdGxldCBudW1iZXJWYWx1ZTogbnVtYmVyID0gTnVtYmVyKGRhdGFWYWx1ZSk7XHJcblx0XHRcdFx0aWYgKG51bWJlclZhbHVlICE9IHVuZGVmaW5lZCAmJiAhaXNOYU4obnVtYmVyVmFsdWUpKSB7XHJcblx0XHRcdFx0XHRsZXQgbnVtYmVyRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJ30nKSArIDEsXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJyknKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdG51bWJlckZvcm1hdCA9IG51bWJlckZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShcclxuXHRcdFx0XHRcdFx0bnVtYmVyVmFsdWUsXHJcblx0XHRcdFx0XHRcdHRoaXMubG9jYWxlLFxyXG5cdFx0XHRcdFx0XHQnJyxcclxuXHRcdFx0XHRcdFx0bnVtYmVyRm9ybWF0XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcclxuXHRcdFx0XHRcdFx0J0VsIGRhdG8gWycgK1xyXG5cdFx0XHRcdFx0XHRcdGRhdGFWYWx1ZSArXHJcblx0XHRcdFx0XHRcdFx0J10gcGFyYSBlbCB0b2tlbiBbJyArXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4gK1xyXG5cdFx0XHRcdFx0XHRcdCddIHRpcG8gbsO6bWVyaWNvIG5vIGVzIHZhbGlkbydcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RpcG8gZGUgdG9rZW4gaW5kZWZpbmlkby4gW3R5cGVUb2tlblsnICsgdHlwZVRva2VuICsgJ11dJyk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodG9rZW4gJiYgdG9rZW5bMF0gPT0gJyQnKSB7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IGRhdGFWYWx1ZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdFbCB0b2tlbiBubyBlcyB2YWxpZG8uIFt0b2tlblsnICsgdG9rZW4gKyAnXV0nKTtcclxuXHRcdH1cclxuXHRcdGlmIChzdHJpbmdUZXh0ICYmIHZhbHVlUmVwbGFjZSAhPT0gbnVsbCkge1xyXG5cdFx0XHQvLyByZXBsYWNlIHRleHQgaW4gYSBtb3JlIGVmZmljaWVudCB3YXlcclxuXHRcdFx0c3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3BsaXQodG9rZW4pLmpvaW4odmFsdWVSZXBsYWNlKTtcclxuXHRcdFx0Ly9zdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5yZXBsYWNlKHRva2VuLCB2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHN0cmluZ1RleHQ7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmdTZWdtZW50YXRpb24oc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNkYXRlW14pXStcXCkvZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHRsZXQgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRjb25zdCBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG5cdGNoYW5nZUlkUHJvcGVydGllc09mT2JqZWN0KG5vcm1hbGl6YXRpb25Db2x1bW5zOiBhbnlbXSwgbGlzdERhdGE6IGFueVtdKTogYW55W10ge1xyXG5cdFx0Y29uc3QgbmV3RGF0YSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpEYXRhID0ge307XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0aWYgKGRhdGEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XHJcblx0XHRcdFx0XHRub3JtYWxpemF0aW9uQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGNvbHVtbi5pZENvbHVtbi50b1N0cmluZygpID09PSBwcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0XHRcdG9iakRhdGFbY29sdW1uLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0aWYgKG9iakRhdGEpIHtcclxuXHRcdFx0XHRuZXdEYXRhLnB1c2gob2JqRGF0YSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG5ld0RhdGE7XHJcblx0fVxyXG5cclxuXHRnZW5lcmF0ZUh0bWxCeVRva2Vuc0FuZERhdGEoaHRtbDogc3RyaW5nLCBsaXN0RGF0YTogYW55W10sIGxpc3RUb2tlbnM6IGFueVtdKTogc3RyaW5nW10ge1xyXG5cdFx0Y29uc3QgdHJhbnNsYXRlZENhcmRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpUb2tlbiA9IHt9O1xyXG5cdFx0XHRjb25zdCBodG1sVHJhbnNsYXRlZCA9IHsgaHRtbDogaHRtbCB9O1xyXG5cdFx0XHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG5cdFx0XHRcdGxpc3RUb2tlbnMuZm9yRWFjaCgodG9rZW4pID0+IHtcclxuXHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA9PSB0b2tlbi5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKSkge1xyXG5cdFx0XHRcdFx0XHRvYmpUb2tlblt0b2tlbi5rZXldID0gZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdGh0bWxUcmFuc2xhdGVkLmh0bWwgPSBodG1sVHJhbnNsYXRlZC5odG1sLnJlcGxhY2UoXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4ua2V5LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGFbcHJvcGVydHldXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0cmFuc2xhdGVkQ2FyZHMucHVzaChodG1sVHJhbnNsYXRlZCk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiB0cmFuc2xhdGVkQ2FyZHM7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmcoc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0dmFyIGFycmF5VG9rZW4gPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCR7KFtefV0rKVxcfS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHR2YXIgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdHZhciByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG5cdFx0aWYgKGFycmF5VG9rZW4pIHtcclxuXHRcdFx0Zm9yIChjb25zdCB0b2tlbiBvZiBhcnJheVRva2VuKSB7XHJcblx0XHRcdFx0bGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKHRva2VuKTtcclxuXHRcdFx0XHRpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGluZGV4ID0gdG9rZW5Gb3JtYXR0ZWQuaW5kZXhPZih0b2tlbik7XHJcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0aW5mb1Rva2VuLnZhbHVlID0gdG9rZW5Gb3JtYXR0ZWQ7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblxyXG5cdFx0Ly8gbGV0IHRva2VuczogYW55W10gPSBbXTtcclxuXHRcdC8vIGxldCBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCAwKTtcclxuXHRcdC8vIGxldCBjb3VudCA9IDA7XHJcblx0XHQvLyB3aGlsZSAoaSA+PSAwICYmIGNvdW50IDw9IDEwKSB7XHJcblx0XHQvLyAgIGxldCBpbmZvVG9rZW46IHt9ID0gbnVsbDtcclxuXHRcdC8vICAgbGV0IG5leHRJOiBudW1iZXIgPSBpO1xyXG5cdFx0Ly8gICBsZXQgY2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgKGkgKyAxKSk7XHJcblx0XHQvLyAgIGlmIChjaGFyYWN0ZXIgPT0gXCIkXCIpIHtcclxuXHRcdC8vICAgICBsZXQgbmV4dENoYXJhY3RlciA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKChpICsgMSksIChpICsgMikpO1xyXG5cdFx0Ly8gICAgIC8vIFRoZSBuZXh0IGNoYXJhY3RlciBuZWVkIHRvIGJlIGEgeyBzaWduXHJcblx0XHQvLyAgICAgaWYgKG5leHRDaGFyYWN0ZXIgIT0gXCJ7XCIpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgbGV0IGtleVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgLy8gSWYgdGhlIHRva2VuIGhhdmUgYSB2YWxpZCBrZXkgdHlwZVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUeXBlOiBudW1iZXIgPSBUb2tlblNlcnZpY2UuZ2V0S2V5VHlwZShrZXlUb2tlbi5yZXBsYWNlKFwie1wiLCBcIlwiKS5yZXBsYWNlKFwifVwiLCBcIlwiKSk7XHJcblx0XHQvLyAgICAgaWYgKGtleVR5cGUgPT09IG51bGwpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiBrZXlUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpO1xyXG5cdFx0Ly8gICB9IGVsc2Uge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0U2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKTtcclxuXHRcdC8vICAgICAvLyBXZSBpbmx5IHN1cHBvcnQgI2RhdGUoJCBhbmQgI251bWJlcigkIGluIHRoaXMgMiBzY2VuYXJpb3MgdGhlIGxlbmdodCBjYW4ndCBiZSBtb3JlIHRoYW4gMTAgY2hhcmFjdGVyc1xyXG5cdFx0Ly8gICAgIGlmIChuZXh0U2lnbiA8IDAgfHwgKG5leHRTaWduIC0gaSkgPiAxMCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHN0cmluZ1RleHQuaW5kZXhPZihcIiRcIiwgaSksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICBsZXQgdmFsdWVUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgc3RyaW5nVGV4dC5pbmRleE9mKFwiKVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGluZm9Ub2tlbiA9IHtcclxuXHRcdC8vICAgICAgIGtleToga2V5VG9rZW4sXHJcblx0XHQvLyAgICAgICB2YWx1ZTogdmFsdWVUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpO1xyXG5cdFx0Ly8gICB9XHJcblx0XHQvLyAgIHRva2Vucy5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHQvLyAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJKTtcclxuXHRcdC8vICAgY291bnQrKztcclxuXHRcdC8vIH1cclxuXHRcdC8vIHJldHVybiB0b2tlbnM7XHJcblx0fVxyXG5cclxuXHRuZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0OiBzdHJpbmcsIG5leHRJOiBudW1iZXIpOiBudW1iZXIge1xyXG5cdFx0bGV0IHRva2VuRG9sbGFyU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCckJywgbmV4dEkpO1xyXG5cdFx0bGV0IHRva2VuTnVtU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCcjJywgbmV4dEkpO1xyXG5cdFx0bGV0IGk6IG51bWJlciA9XHJcblx0XHRcdHRva2VuRG9sbGFyU2lnbiA8IDAgJiYgdG9rZW5OdW1TaWduID49IDBcclxuXHRcdFx0XHQ/IHRva2VuTnVtU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduIDwgMCAmJiB0b2tlbkRvbGxhclNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5Eb2xsYXJTaWduXHJcblx0XHRcdFx0OiB0b2tlbkRvbGxhclNpZ24gPCB0b2tlbk51bVNpZ25cclxuXHRcdFx0XHQ/IHRva2VuRG9sbGFyU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduO1xyXG5cdFx0cmV0dXJuIGk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXVzZXMgcmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljIGJ1dCBzZXQgYWxsIGtleXMgbG9iamVjdHRva2VucyBhcyBsb3dlcmNhc2VcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGFcclxuXHQgKiBAcGFyYW0gbE9iamVjdFRva2Vuc1xyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdFB1YmxpYyhcclxuXHRcdHRva2VuTmFtZTogc3RyaW5nLFxyXG5cdFx0Zm9ybXVsYTogc3RyaW5nLFxyXG5cdFx0bE9iamVjdFRva2VuczogYW55W11cclxuXHQpOiBzdHJpbmcge1xyXG5cdFx0bGV0IGxEYXRhT3JnOiBhbnlbXSA9IFtdO1xyXG5cdFx0aWYgKGxPYmplY3RUb2tlbnMpIHtcclxuXHRcdFx0Zm9yIChsZXQgZGF0YUZvcm0gaW4gbE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRcdGxEYXRhT3JnW2RhdGFGb3JtLnRvTG93ZXJDYXNlKCldID0gbE9iamVjdFRva2Vuc1tkYXRhRm9ybV07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdCh0b2tlbk5hbWUsIGZvcm11bGEsIGxEYXRhT3JnKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRva2VuTmFtZSB0b2tlbiBuYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGEgU3RyaW5nIHdpdGggdGhlIGZvcm11bGEgdG8gZXhlY3V0ZVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zIExpc3Qgb2YgdG9rZW5zIHdpdGggdGhlIHZhbHVlcyB0byByZXBsYWNlXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZTogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcsIGxPYmplY3RUb2tlbnM6IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWZvcm11bGEgfHwgZm9ybXVsYS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0bWVzc2FnZTogJ0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hJyxcclxuXHRcdFx0XHR0aXRsZTogJ0FsZXJ0YSEnLFxyXG5cdFx0XHRcdGVycm9yOlxyXG5cdFx0XHRcdFx0J0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hLiBbZm9ybXVsYVsnICsgZm9ybXVsYSArICddXSdcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcdGxldCByZXBsYWNlZFRva2Vuczogc3RyaW5nID0gZm9ybXVsYS50b1N0cmluZygpO1xyXG5cdFx0aWYgKHJlcGxhY2VkVG9rZW5zLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBGaW5kIHRoZSB0b2tlbnMgaW4gdGhlIGZvcm11bGFcclxuXHRcdGxldCB0b2tlbnNBcnJheTogYW55W10gPSB0aGlzLmdldExpc3RUb2tlbnNCeVN0cmluZyhyZXBsYWNlZFRva2Vucyk7XHJcblx0XHRpZiAodG9rZW5zQXJyYXkubGVuZ3RoID09IDApIHtcclxuXHRcdFx0cmV0dXJuIHJlcGxhY2VkVG9rZW5zO1xyXG5cdFx0fVxyXG5cdFx0Ly8gSWYgdGhlcmUgYW55IHRva2VuLCB0cnkgdG8gcmVwbGFjZVxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnNBcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRsZXQgb2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XSAhPT0gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHQ/IGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XVxyXG5cdFx0XHRcdFx0OiBudWxsO1xyXG5cdFx0XHRsZXQgY2xlYXJLZXk7XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0Y2xlYXJLZXkgPSB0b2tlbnNBcnJheVtpXS5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdGxPYmplY3RUb2tlbnNbY2xlYXJLZXldICE9PSB1bmRlZmluZWQgPyBsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSA6IG51bGw7XHJcblxyXG5cdFx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgneycsICcnKVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdFx0XHQuc3BsaXQoJ18nKVsxXVxyXG5cdFx0XHRcdFx0XHQudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHQvLyBJZiBub3QgZmluZCB0aGUgdG9rZW4sIGJ5IGRlZmF1bHQgcHV0IGFuIGVtcHR5IHN0cmluZ1xyXG5cdFx0XHRcdC8qaWYgKFRva2VuU2VydmljZS5leGNsdWRlZFRva2VuLmluZGV4T2YoY2xlYXJLZXkpID09PSAtMSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0J0VsIHRva2VuICcgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArICcgbm8gZnVlIGVuY29udHJhZG8uJyxcclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2VucyxcclxuXHRcdFx0XHRcdFx0dG9rZW5zQXJyYXlcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSovXHJcblx0XHRcdFx0b2JqZWN0VG9rZW4gPSAnJztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gIT0gbnVsbCkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZTogYW55ID0gTnVtYmVyKG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0PyBvYmplY3RUb2tlblxyXG5cdFx0XHRcdFx0OiBBcnJheS5pc0FycmF5KG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0PyBKU09OLnN0cmluZ2lmeShvYmplY3RUb2tlbilcclxuXHRcdFx0XHRcdDogXCInXCIgKyBvYmplY3RUb2tlbiArIFwiJ1wiO1xyXG5cdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gdGhpcy5yZXBsYWNlVG9rZW4ocmVwbGFjZWRUb2tlbnMsIHRva2Vuc0FycmF5W2ldLnZhbHVlLCB2YWx1ZSk7XHJcblx0XHRcdFx0Ly8gfSBlbHNlIHtcclxuXHRcdFx0XHQvLyAgIGNvbnNvbGUuZXJyb3IobE9iamVjdFRva2VucywgdG9rZW5zQXJyYXkpO1xyXG5cdFx0XHRcdC8vICAgdGhyb3cge1xyXG5cdFx0XHRcdC8vICAgICBtZXNzYWdlOiBcIk5vIHNlIGVuY29udHLDsyB2YWxvciBwYXJhIHVuIHRva2VuXCIsXHJcblx0XHRcdFx0Ly8gICAgIHRpdGxlOiBcIkFsZXJ0YSFcIixcclxuXHRcdFx0XHQvLyAgICAgZXJyb3I6IFwiRWwgdG9rZW4gXCIgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArIFwiIG5vIGZ1ZSBlbmNvbnRyYWRvLlwiXHJcblx0XHRcdFx0Ly8gICB9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZXZhbCB0aGUgZm9ybXVsYSBkZXBlbmQgb2YgdGhlIHR5cGUgb2YgZmllbGRzLlxyXG5cdCAqIEBwYXJhbSBsU3RhdGljVG9rZW5cclxuXHQgKiBAcGFyYW0gZm9ybXVsYU5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqL1xyXG5cdHZhbGlkYXRlRm9ybXVsYShsU3RhdGljVG9rZW46IGFueSwgZm9ybXVsYU5hbWU6IHN0cmluZywgZm9ybXVsYTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRsZXQgZXZhbEZvcm11bGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdC8vIFRvIHZhbGlkYXRlIHRoZSBmb3JtdWxhLCBmaXJzdCBvcmdhbml6ZSB0aGUgaW5mbyB0byBrZXkgLSB2YWx1ZSBhcnJheVxyXG5cdFx0bGV0IG9iamVjdFRva2VuczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IHBhbmVsIG9mIGxTdGF0aWNUb2tlbikge1xyXG5cdFx0XHRmb3IgKGxldCBncm91cFRva2VuIG9mIHBhbmVsLnZhbHVlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgc3RhdGljVG9rZW4gb2YgZ3JvdXBUb2tlbi52YWx1ZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgYXJyYXlUb2tlbkluZm8gb2Ygc3RhdGljVG9rZW4pIHtcclxuXHRcdFx0XHRcdFx0b2JqZWN0VG9rZW5zW2FycmF5VG9rZW5JbmZvLmtleV0gPSBhcnJheVRva2VuSW5mby5vYmplY3RcclxuXHRcdFx0XHRcdFx0XHQ/IGFycmF5VG9rZW5JbmZvLm9iamVjdC50eXBlID09ICdudW1iZXInXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICcwJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAnJ1xyXG5cdFx0XHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3JtdWxhID0gdGhpcy5yZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QoZm9ybXVsYU5hbWUsIGZvcm11bGEsIG9iamVjdFRva2Vucyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR0aHJvdyBlcnJvcjtcclxuXHRcdH1cclxuXHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpID8gZm9ybXVsYSA6IGV2YWwoZm9ybXVsYSk7XHJcblx0XHRcdFx0ZXZhbEZvcm11bGEgPSB0cnVlO1xyXG5cdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmVycm9yKFwiRXJyb3IgZXZhbHVhdGluZyB0aGUgZm9ybXVsYVwiLCBlKTtcclxuXHRcdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBubyBmdWUgcG9zaWJsZSBldmFsdWFyJyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0XHRlcnJvcjogZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBldmFsRm9ybXVsYTtcclxuXHR9XHJcblxyXG5cdGdldENvbmZpZ0Nsb25pbmdUb2tlbk1hcChvbGRQUFA6IG51bWJlciwgbmV3UFBQOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwJyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKVxyXG5cdFx0XHRcdFx0LnNldCgnb2xkUFBQJywgb2xkUFBQLnRvU3RyaW5nKCkpXHJcblx0XHRcdFx0XHQuc2V0KCduZXdQUFAnLCBuZXdQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
1131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTlELE9BQU8sRUFBUyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBd0IsTUFBTSxhQUFhLENBQUM7Ozs7O0FBSzdGLE1BQU0sT0FBTyxZQUFZO0lBb1Z4QixZQUNnQyxXQUFXLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCO1FBSEgsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNoQyxDQUFDO0lBRUosaUZBQWlGO0lBQ2pGLHVCQUF1QixDQUFDLFVBQVU7UUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QywwQkFBMEI7WUFDMUIsSUFBSSxnQkFBZ0IsR0FBVSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN0RCxJQUFJLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDMUIsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUU7NEJBQy9CLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FB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QUFDLHlDQUF5QztRQUMzRCxLQUFLLEVBQUUsOEJBQThCO0tBQ3JDO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLGlDQUFpQztRQUNuRCxLQUFLLEVBQUUsY0FBYztLQUNyQjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQywwQ0FBMEM7UUFDNUQsS0FBSyxFQUFFLHdDQUF3QztLQUMvQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyx5Q0FBeUM7UUFDM0QsS0FBSyxFQUFFLGtDQUFrQztLQUN6QztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyx3QkFBd0I7UUFDMUMsS0FBSyxFQUFFLHFCQUFxQjtLQUM1QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyx5Q0FBeUM7UUFDM0QsS0FBSyxFQUFFLCtDQUErQztLQUN0RDtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxrREFBa0Q7UUFDcEUsS0FBSyxFQUFFLDZDQUE2QztLQUNwRDtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxxQkFBcUI7UUFDdkMsS0FBSyxFQUFFLGdCQUFnQjtLQUN2QjtDQUNBLENBQUE7QUFFSywwQkFBYSxHQUFHO0lBQ3RCLFlBQVksQ0FBQyxvQ0FBb0MsQ0FBQyxXQUFXLEVBQUU7SUFDL0QsWUFBWSxDQUFDLHdDQUF3QyxDQUFDLFdBQVcsRUFBRTtJQUNuRSxZQUFZLENBQUMsc0NBQXNDLENBQUMsV0FBVyxFQUFFO0NBQ2pFLENBQUM7eUdBbFZVLFlBQVksa0JBcVZmLGFBQWE7NkdBclZWLFlBQVksY0FGWixNQUFNOzJGQUVOLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFzVkUsTUFBTTsyQkFBQyxhQUFhOzBIQWhWSSxNQUFNO3NCQUEvQixNQUFNO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRva2VuLCBIRUFERVJfSlNPTiwgVXRpbFN0cmluZywgRGF0ZVV0aWwsIFBsaUNuZkd1YXJhbnRlZVRva2VuIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9rZW5TZXJ2aWNlIHtcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU0lHTl9MRVRURVJfVEFHX0lEOiBzdHJpbmcgPSAnX3NpZ24tbGV0dGVyLXRhZy1pZCc7XHJcblxyXG5cdC8qKiAqL1xyXG5cdEBJbmplY3QoTE9DQUxFX0lEKSBwdWJsaWMgbG9jYWxlOiBzdHJpbmc7XHJcblxyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9GT1JNOiBzdHJpbmcgPSAnRnJtJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfQlVER0VUOiBzdHJpbmcgPSAnUHJlc3VwdWVzdG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9DQUxDVUxBVEVEOiBzdHJpbmcgPSAnQ2FsY3VsYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfU05BUFNIT1Q6IHN0cmluZyA9ICdTbmFwc2hvdCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1NUQVRJQzogc3RyaW5nID0gJ0VzdMOhdGljbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0RPQ1VNRU5UTzogc3RyaW5nID0gJ0RvY3VtZW50byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBU0s6IHN0cmluZyA9ICdUYXJlYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBU0tMOiBzdHJpbmcgPSAndGFzayc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0dVQVJBTlRFRTogc3RyaW5nID0gJ0dhcmFudGlhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAndG90YWxBbW91bnQnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ2FwcGxpY2F0aW9uVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFM6IHN0cmluZyA9ICdhcHBsaWNhdGlvbk93bkZvdW5kcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPSAnYXBwbGljYXRpb25GaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICdsZWdhbGl6YXRpb25Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFM6IHN0cmluZyA9XHJcblx0XHQnbGVnYWxpemF0aW9uT3duRm91bmRzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPSAnbGVnYWxpemF0aW9uRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfSU5TVVJBTkNFX0FNT1VOVDogc3RyaW5nID0gJ2luc3VyYW5jZUFtb3VudCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIExFR0FMSVpBVElPTl9PUl9BUFBMSUNBVElPTl9UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9XHJcblx0XHQnbGVnbGl6YXRpb25PckFwcGxpY2F0aW9uVG90YWxGaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9SRVNVTUVfQ0FURUdPUllfWUVBUjogc3RyaW5nID0gJ3Jlc3VtZUNhdGVnb3J5WWVhcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19TVEFSVDogc3RyaW5nID0gJ2ZlY2hhSW5pY2lvRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfRkVDSEFfRklOQU5DSU5HX0VORDogc3RyaW5nID0gJ2ZlY2hhRmluRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19EVVJBVElPTl9TVFVESUVTOiBzdHJpbmcgPSAnZHVyYWNpb25Fc3R1ZGlvcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfRklOQU5DSU5HX0RVUkFUSU9OOiBzdHJpbmcgPSAnZHVyYWNpb25GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9DT0RJR09fVkVSSUZJQ0FDSU9OOiBzdHJpbmcgPSAnY29kaWdvVmVyaWZpY2FjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQV9RVUlFTl9WQV9ESVJJR0lETzogc3RyaW5nID0gJ2FRdWllblZhRGlyaWdpZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9GRUNIQV9BQ1RVQUw6IHN0cmluZyA9ICdmZWNoYUFjdHVhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1NUQVRVU19OQU1FOiBzdHJpbmcgPSAnc3RhdHVzTmFtZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUjogc3RyaW5nID0gJ3BsaVBhdHJvY2luYWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUl9DT1JUTzogc3RyaW5nID0gJ3BsaVBhdHJvY2luYWRvckNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUE6IHN0cmluZyA9ICdwbGlQcm9ncmFtYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BX0NPUlRPOiBzdHJpbmcgPSAncGxpUHJvZ3JhbWFDb3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTjogc3RyaW5nID0gJ3BsaVByb21vY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTl9DT1JUTzogc3RyaW5nID0gJ3BsaVByb21vY2lvbkNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQU5JT19QUk9NT0NJT046IHN0cmluZyA9ICdhbmlvUHJvbW9jaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfSVNPX01PTkVEQV9CQVNFOiBzdHJpbmcgPSAnaXNvTW9uZWRhQmFzZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1NBTFVET19DT01QTEVNRU5UQVJJTzogc3RyaW5nID0gJ3NhbHVkb0NvbXBsZW1lbnRhcmlvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfTlVNQkVSX0FQUExJQ0FUSU9OOiBzdHJpbmcgPSAnbnVtZXJvUmFkaWNhZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9VU0VSX0lOSVRJQUxTOiBzdHJpbmcgPSAnaW5pY2lhbGVzVXN1YXJpbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0xFVFRFUl9TSUdOOiBzdHJpbmcgPSAnZmlybWFDYXJ0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX05BTUU6IHN0cmluZyA9ICdjb21pdGVOb21icmUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9TRUdNRU5UQVRJT046IHN0cmluZyA9ICdjb21pdGVTZWdtZW50YWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9BR0dSVVBBVElPTjogc3RyaW5nID0gJ2NvbWl0ZUFncnVwYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9DVVRMSU5FX0RBVEU6IHN0cmluZyA9ICdjb21pdGVGZWNoYUxpbmVhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT05GSVJNX0xFR0FMSVpBVElPTl9BUFBPSU5UTUVOVDogc3RyaW5nID0gJ2NvbmZpcm1hY2lvbkNpdGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX05VTUJFUjogc3RyaW5nID0gJ251bWVyb0RvY3VtZW50b0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9UWVBFOiBzdHJpbmcgPSAndGlwb0RvY3VtZW50b0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9OQU1FOiBzdHJpbmcgPSAnbm9tYnJlc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9MQVNUTkFNRTogc3RyaW5nID0gJ2FwZWxsaWRvc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19UWVBFX0NPREVCVE9SOiBzdHJpbmcgPSAndGlwb1BlcnNvbmFDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfUkVWSUVXRVI6IHN0cmluZyA9ICdyZXZpc29yQ29kZXVkb3Jlcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVE9UQUxfV0VJR0hURUQ6IHN0cmluZyA9ICdwb25kZXJhZG9Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09OU0VDVVRJVkVfR1VBUkFOVEVFOiBzdHJpbmcgPSAnY29uc2VjdXRpdm9HYXJhbnRpYXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0RBWTogc3RyaW5nID0gJ2RpYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfTU9OVEg6IHN0cmluZyA9ICdtZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1lFQVI6IHN0cmluZyA9ICdhbm8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX05BTUU6IHN0cmluZyA9ICdub21icmVzUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTEFTVE5BTUU6IHN0cmluZyA9ICdhcGVsbGlkb3NSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9ET0NVTUVOVF9OVU1CRVI6IHN0cmluZyA9ICdjZWR1bGFSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DSVRZX1NJR05BVFVSRTogc3RyaW5nID0gJ2NpdWRhZEZpcm1hJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZOiBzdHJpbmcgPSAndGlwb1VzdWFyaW9Fc3R1ZGlvQ3JlZGl0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFk6IHN0cmluZyA9ICdjYW50aWRhZFZlaGljdWxvc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFk6IHN0cmluZyA9ICdjYW50aWRhZEJpZW5lc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19MSVNUX0NPREVCVE9SUzogc3RyaW5nID0gJ2xpc3RhQ29kZXVkb3Jlcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9JTkdSRVNPX0NPREVVRE9SX0hBQkVBU19EQVRBOiBzdHJpbmcgPSAnaW5ncmVzb0NvZGV1ZG9ySGFiZWFzRGF0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9QREZfUkVTVU1FTl9DT0RFVURPUjogc3RyaW5nID0gJ3BkZlJlc3VtZW5Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfVkVISUNMRV9CRU5FRklDSUFSWTogc3RyaW5nID0gJ2NhbnRpZGFkVmVoaWN1bG9zU2VsZWNjaW9uYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19RVUFOVElUWV9BU1NFVFNfQkVORUZJQ0lBUlk6IHN0cmluZyA9ICdjYW50aWRhZEJpZW5lc1NlbGVjY2lvbmFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQkVOX0NPRElHTzogc3RyaW5nID0gJ2JlbkNvZGlnbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TX0NPREVCVE9SOiBzdHJpbmcgPVxyXG5cdFx0J2NyZWRpdFJldmlld2VyT2JzZXJ2YXRpb25zQ29kZWJ0b3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OUzogc3RyaW5nID0gJ2NyZWRpdFJldmlld2VyT2JzZXJ2YXRpb25zJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX1RBR19OQU1FOiBzdHJpbmcgPSAndGFnTmFtZSc7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlM6IGFueVtdID0gW1xyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1IsXHJcblx0XHRcdGxhYmVsOiAnUGF0cm9jaW5hZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUEsXHJcblx0XHRcdGxhYmVsOiAnUHJvZ3JhbWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT04sXHJcblx0XHRcdGxhYmVsOiAnUHJvbW9jacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0HDsW8gcHJvbW9jacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRSxcclxuXHRcdFx0bGFiZWw6ICdJU08gTW9uZWRhIGJhc2UnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9TQUxVRE9fQ09NUExFTUVOVEFSSU8sXHJcblx0XHRcdGxhYmVsOiAnU2FsdWRvIGNvbXBsZW1lbnRhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdDw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9BX1FVSUVOX1ZBX0RJUklHSURPLFxyXG5cdFx0XHRsYWJlbDogJ0EgcXVpZW4gdmEgZGlyaWdpZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9GRUNIQV9BQ1RVQUwsXHJcblx0XHRcdGxhYmVsOiAnRmVjaGEgYWN0dWFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnRXN0YWRvIGFjdHVhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX05VTUJFUl9BUFBMSUNBVElPTixcclxuXHRcdFx0bGFiZWw6ICdOw7ptZXJvIHJhZGljYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfVVNFUl9JTklUSUFMUyxcclxuXHRcdFx0bGFiZWw6ICdJbmljaWFsZXMgZGUgdXN1YXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0xFVFRFUl9TSUdOLFxyXG5cdFx0XHRsYWJlbDogJ0Zpcm1hIGRlIGNhcnRhcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9TRUdNRU5UQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnU2VnbWVudGFjacOzbiBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnQWdydXBhY2nDs24gY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURSxcclxuXHRcdFx0bGFiZWw6ICdGZWNoYSBMw61uZWEgZGUgY29ydGUnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTkZJUk1fTEVHQUxJWkFUSU9OX0FQUE9JTlRNRU5ULFxyXG5cdFx0XHRsYWJlbDogJ0NvbmZpcm1hY2nDs24gZGUgY2l0YSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfTlVNQkVSLFxyXG5cdFx0XHRsYWJlbDogJ07Dum1lcm8gZGUgZG9jdW1lbnRvIGRlIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9UWVBFLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gZGUgZG9jdW1lbnRvIGRlIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZXMgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0xBU1ROQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0FwZWxsaWRvcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVFlQRV9DT0RFQlRPUixcclxuXHRcdFx0bGFiZWw6ICdUaXBvIGRlIHBlcnNvbmEgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIHZlaGljdWxvcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGJpZW5lcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfUkVWSUVXRVIsXHJcblx0XHRcdGxhYmVsOiAnUmV2aXNvciBkZSBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRCxcclxuXHRcdFx0bGFiZWw6ICdQb25kZXJhZG8gdG90YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTlNFQ1VUSVZFX0dVQVJBTlRFRSxcclxuXHRcdFx0bGFiZWw6ICdDb25zZWN1dGl2byBkZSBnYXJhbnRpYXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlcyByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9MQVNUTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdBcGVsbGlkb3MgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfRE9DVU1FTlRfTlVNQkVSLFxyXG5cdFx0XHRsYWJlbDogJ0NlZHVsYSByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gdXN1YXJpbyBlc3R1ZGlvIGNyw6lkaXRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19EQVksXHJcblx0XHRcdGxhYmVsOiAnRGlhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19NT05USCxcclxuXHRcdFx0bGFiZWw6ICdNZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1lFQVIsXHJcblx0XHRcdGxhYmVsOiAnQcOxbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ0lUWV9TSUdOQVRVUkUsXHJcblx0XHRcdGxhYmVsOiAnQ2l1ZGFkIGRlIGxhIGZpcm1hJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19MSVNUX0NPREVCVE9SUyxcclxuXHRcdFx0bGFiZWw6ICdMaXN0YSBkZSBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0lOR1JFU09fQ09ERVVET1JfSEFCRUFTX0RBVEEsXHJcblx0XHRcdGxhYmVsOiAnSW5ncmVzbyBDb2RldWRvciBIYWJlYXMgRGF0YSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9QREZfUkVTVU1FTl9DT0RFVURPUixcclxuXHRcdFx0bGFiZWw6ICdQZGYgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1FVQU5USVRZX1ZFSElDTEVfQkVORUZJQ0lBUlksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgZGUgdmVow61jdWxvcyBkZWwgc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19RVUFOVElUWV9BU1NFVFNfQkVORUZJQ0lBUlksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgYmllbmVzIGRlbCBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0JFTl9DT0RJR08sXHJcblx0XHRcdGxhYmVsOiAnQ8OzZGlnbyBiZW5lZmljaWFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OUyxcclxuXHRcdFx0bGFiZWw6ICdPYnNlcnZhY2lvbmVzIHJldmlzb3IgZmluYW5jaWVybyBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OU19DT0RFQlRPUixcclxuXHRcdFx0bGFiZWw6ICdPYnNlcnZhY2lvbmVzIHJldmlzb3IgZmluYW5jaWVybyBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX1RBR19OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZSBkZWwgdGFnJ1xyXG5cdFx0fVxyXG5cdF07XHJcblxyXG5cdHN0YXRpYyBleGNsdWRlZFRva2VuID0gW1xyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWS50b0xvd2VyQ2FzZSgpLFxyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFkudG9Mb3dlckNhc2UoKSxcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWS50b0xvd2VyQ2FzZSgpXHJcblx0XTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcblx0XHRwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcclxuXHRcdHByaXZhdGUgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGVcclxuXHQpIHt9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1GaWVsZHNCeVByb21Db2RlKHByb21Db2RpZ28pOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5UHJvbUNvZGlnbyhwcm9tQ29kaWdvKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6IChhcnJheUZvcm1zOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmIChhcnJheUZvcm1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBmb3JtcyBvZiBhcnJheUZvcm1zKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGZvcm1zLmNvbXBvbmVudHMgJiYgZm9ybXMuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudHMgb2YgZm9ybXMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50cy5jb21wb25lbnRzICYmIGNvbXBvbmVudHMuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50LmNvbHVtbnMgJiYgY29tcG9uZW50LmNvbHVtbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNDb21wb25lbnRzIG9mIGNvbXBvbmVudC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y0NvbXBvbmVudHMuY29tcG9uZW50cyAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y0NvbXBvbmVudHMuY29tcG9uZW50cy5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIGNDb21wb25lbnRzLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGl0ZXJhdG9yLnR5cGUgPT09ICdhZGRyZXNzJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZSBpdGVyYXRvci5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IGFycmF5Rm9ybXM7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0Rm9ybUZpZWxkc0J5Rm9ybUlkKGZvcm1JZDogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeUlkKGZvcm1JZCkuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmICghZm9ybSB8fCAhZm9ybVswXSkge1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybVBhbmVsc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybVBhbm5lbHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5UHJvbUNvZGlnbyhwcm9tQ29kaWdvKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZm9ybSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXS5wcm9tQ29kaWdvIHx8XHJcblx0XHRcdFx0XHRcdGZvcm1bMF0ucHJvbUNvZGlnbyAhPSBwcm9tQ29kaWdvXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyc0MDQnXSk7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1QYW5uZWxzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1QYW5uZWxzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbltsRm9ybVBhbm5lbHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGVkaXRHcmlkIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50czogYW55W10sIGZvcm06IGFueSwgcGFuZWxOYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgcGFuZWxOYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbXBvbmVudHMgYSBjb2x1bW5zIG9mIHRoZSBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRjb21wb25lbnRzOiBhbnlbXSxcclxuXHRcdGZvcm06IGFueSxcclxuXHRcdHBhbmVsTmFtZTogc3RyaW5nLFxyXG5cdFx0ZWRpdGdyaWQ6IGJvb2xlYW4sXHJcblx0XHRlZGl0R3JpZEtleTogc3RyaW5nXHJcblx0KTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cyB8fCBmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdFx0XHRlZGl0Z3JpZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdGVkaXRHcmlkS2V5ID0gZm9ybUNvbXAua2V5O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0cGFuZWxOYW1lLFxyXG5cdFx0XHRcdFx0ZWRpdGdyaWQsXHJcblx0XHRcdFx0XHRlZGl0R3JpZEtleVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9ybUNvbXAucGFuZWxOYW1lID0gcGFuZWxOYW1lO1xyXG5cdFx0XHRcdGZvcm1Db21wLmVkaXRncmlkID0gZWRpdGdyaWQ7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdEdyaWRLZXkgPSBlZGl0R3JpZEtleTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1FZGl0R3JpZEZpZWxkc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdlZGl0Z3JpZCcpIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSAmJiBmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0XHRwYW5lbE5hbWUgPSBmb3JtQ29tcC50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29tcG9uZW50cyA9IHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIHBhbmVsTmFtZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHRva2VucyBieSBwcm9tQ29kaWdvICovXHJcblx0Z2V0TGlzdEJ5UHJvbUNvZGlnbyhwcm9tQ29kZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5UHJvbUNvZGlnbycsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgncHJvbUNvZGlnbycsIHByb21Db2RlLnRvU3RyaW5nKCkpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW4gYnkgaWQgKi9cclxuXHRnZXRCeUlkKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9nZXRCeUlkJywge1xyXG5cdFx0XHRwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpZCcsIGlkLnRvU3RyaW5nKCkpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBkZWxldGVzIGEgZm9ybSBieSBpZCAqL1xyXG5cdGRlbGV0ZShpZCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZShcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9kZWxldGUnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2F2ZXMgdGhlIHRva2VuICovXHJcblx0c2F2ZSh0b2tlbjogVG9rZW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL3NhdmUnLFxyXG5cdFx0XHR0b2tlbixcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtVGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRpZiAoVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1UaXRsZSkpIHtcclxuXHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk0pICtcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoZm9ybVRpdGxlKS5yZXBsYWNlKC9fL2csICctJylcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB1bmlxdWUgdmVyaWZpY2F0aW9uIGNvZGUgKi9cclxuXHRnZXRVbmlxdWVWZXJpZmljYXRpb25Db2RlKGxvZ2luOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmRvY3VtZW50c1JlcG9zaXRvcnkgK1xyXG5cdFx0XHRcdCdkb2N1bWVudG8vY29uc3VsdGFyQ29kaWdvVW5pY28vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2VuZCB0aGUgaW5mb3JtYXRpb24gdG8gY29weSB0aGUgRG9jdW1lbnQgdmlld2VyICovXHJcblx0Y29weURvY3VtZW50SW5mb3JtYXRpb25WaWV3ZXIoXHJcblx0XHRsb2dpbjogc3RyaW5nLFxyXG5cdFx0dG9rZW46IHN0cmluZyxcclxuXHRcdHVuaXF1ZUNvZGU6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50VVJMOiBzdHJpbmcsXHJcblx0XHRkb2N1bWVudE5hbWU6IHN0cmluZ1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgaW5mb0RvY3VtZW50byA9IHtcclxuXHRcdFx0Y29kaWdvVW5pY286IHVuaXF1ZUNvZGUsXHJcblx0XHRcdHJ1dGFEb2N1bWVudG86IGRvY3VtZW50VVJMLFxyXG5cdFx0XHRkb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZVxyXG5cdFx0fTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdFx0J2RvY3VtZW50by9hZGljaW9uYXJEb2N1bWVudG8vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdGluZm9Eb2N1bWVudG8sXHJcblx0XHRcdEhFQURFUl9KU09OXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUJ1ZGdldCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlEb2N1bWVudCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRE9DVU1FTlRPKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlUYXNrKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5U3RhdGljKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUMpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUNhbGN1bGF0ZWQodG9rZW46IFRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRCkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5U25hcHNob3QodG9rZW46IFRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU05BUFNIT1QpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUd1YXJhbnRlZSh0b2tlbjogUGxpQ25mR3VhcmFudGVlVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9HVUFSQU5URUUpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJuIGEgdmFsdWUgdGhhdCByZXByZXNlbnQgdGhlIHR5cGUgb2YgbGFiZWw6IDE9Rm9ybSwgMj1CdWRnZXQsIDM9U3RhdGljLCA0PUNhbGN1bGF0ZWRcclxuXHQgKiBAcGFyYW0ga2V5IFZhbHVlIHRvIGV2YWx1ZWF0ZVxyXG5cdCAqL1xyXG5cdHN0YXRpYyBnZXRLZXlUeXBlKGtleTogc3RyaW5nKTogbnVtYmVyIHtcclxuXHRcdGtleSA9IGtleS5yZXBsYWNlKCd7JywgJycpLnJlcGxhY2UoJ30nLCAnJyk7XHJcblx0XHRrZXkgPSBrZXkuc3Vic3RyaW5nKDEsIGtleS5pbmRleE9mKCdfJykpO1xyXG5cdFx0aWYgKGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STSkpKSB7XHJcblx0XHRcdHJldHVybiAxO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVQpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiAyO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUMpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiAzO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoXHJcblx0XHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEKVxyXG5cdFx0XHQpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDQ7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gNTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVwZW5kcyBvZiB0aGUgdHlwZSBvZiBmb3JtRmllbGRUb2tlbiByZXR1cm4gZGUgdmFsdWUgb2YgdGhlIHZhbHVlRGF0YVxyXG5cdCAqIEBwYXJhbSBmb3JtRmllbGRUb2tlblxyXG5cdCAqIEBwYXJhbSB2YWx1ZURhdGFcclxuXHQgKi9cclxuXHRnZXRWYWx1ZUZyb21Gb3JtRmllbGQoZm9ybUZpZWxkVG9rZW46IGFueSwgdmFsdWVEYXRhOiBhbnkpOiBhbnkge1xyXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZURhdGEgPT0gJ29iamVjdCcpIHtcclxuXHRcdFx0aWYgKGZvcm1GaWVsZFRva2VuLnR5cGUpIHtcclxuXHRcdFx0XHRpZiAoZm9ybUZpZWxkVG9rZW4udHlwZSA9PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGEuZm9ybWF0dGVkX2FkZHJlc3M7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGZvcm1GaWVsZFRva2VuLnR5cGUgPT0gJ3NlbGVjdCcgJiZcclxuXHRcdFx0XHRcdGZvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkICYmXHJcblx0XHRcdFx0XHR2YWx1ZURhdGEuaGFzT3duUHJvcGVydHkoZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhW2Zvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZURhdGE7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZmluZCB0aGUgdG9rZW4gaW4gdGhlIHN0cmluZ1RleHQgYW5kIHJlcGxhY2Ugd2l0aCBkYXRhVmFsdWUuIElmIGRldGVjdCBmb3JtYXQgb2YgbnVtYmVyIG9yIGRhdGUgdHJ5IHRvIGZvcm1hdCB0aGUgZGF0YVZhbHVlXHJcblx0ICogQHBhcmFtIHN0cmluZ1RleHRcclxuXHQgKiBAcGFyYW0gdG9rZW5cclxuXHQgKiBAcGFyYW0gZGF0YVZhbHVlXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2VuKHN0cmluZ1RleHQ6IHN0cmluZywgdG9rZW46IGFueSwgZGF0YVZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0bGV0IHZhbHVlUmVwbGFjZTogc3RyaW5nID0gbnVsbDtcclxuXHRcdGlmICh0b2tlbiAmJiB0b2tlblswXSA9PSAnIycpIHtcclxuXHRcdFx0bGV0IHR5cGVUb2tlbiA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5pbmRleE9mKCcoJykpO1xyXG5cdFx0XHRpZiAodHlwZVRva2VuID09ICdkYXRlJykge1xyXG5cdFx0XHRcdGxldCBkYXRlRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCd9JykgKyAxLFxyXG5cdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignKScpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRsZXQgZGF0ZVZhbHVlID0gRGF0ZVV0aWwuZ2V0RGF0ZShkYXRhVmFsdWUpO1xyXG5cdFx0XHRcdGlmIChkYXRlVmFsdWUpIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IERhdGVVdGlsLmdldE1vbWVudChkYXRlVmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVUb2tlbiA9PSAnbnVtYmVyJykge1xyXG5cdFx0XHRcdGxldCBudW1iZXJWYWx1ZTogbnVtYmVyID0gTnVtYmVyKGRhdGFWYWx1ZSk7XHJcblx0XHRcdFx0aWYgKG51bWJlclZhbHVlICE9IHVuZGVmaW5lZCAmJiAhaXNOYU4obnVtYmVyVmFsdWUpKSB7XHJcblx0XHRcdFx0XHRsZXQgbnVtYmVyRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJ30nKSArIDEsXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJyknKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdG51bWJlckZvcm1hdCA9IG51bWJlckZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShcclxuXHRcdFx0XHRcdFx0bnVtYmVyVmFsdWUsXHJcblx0XHRcdFx0XHRcdHRoaXMubG9jYWxlLFxyXG5cdFx0XHRcdFx0XHQnJyxcclxuXHRcdFx0XHRcdFx0bnVtYmVyRm9ybWF0XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcclxuXHRcdFx0XHRcdFx0J0VsIGRhdG8gWycgK1xyXG5cdFx0XHRcdFx0XHRcdGRhdGFWYWx1ZSArXHJcblx0XHRcdFx0XHRcdFx0J10gcGFyYSBlbCB0b2tlbiBbJyArXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4gK1xyXG5cdFx0XHRcdFx0XHRcdCddIHRpcG8gbsO6bWVyaWNvIG5vIGVzIHZhbGlkbydcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RpcG8gZGUgdG9rZW4gaW5kZWZpbmlkby4gW3R5cGVUb2tlblsnICsgdHlwZVRva2VuICsgJ11dJyk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodG9rZW4gJiYgdG9rZW5bMF0gPT0gJyQnKSB7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IGRhdGFWYWx1ZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdFbCB0b2tlbiBubyBlcyB2YWxpZG8uIFt0b2tlblsnICsgdG9rZW4gKyAnXV0nKTtcclxuXHRcdH1cclxuXHRcdGlmIChzdHJpbmdUZXh0ICYmIHZhbHVlUmVwbGFjZSAhPT0gbnVsbCkge1xyXG5cdFx0XHQvLyByZXBsYWNlIHRleHQgaW4gYSBtb3JlIGVmZmljaWVudCB3YXlcclxuXHRcdFx0c3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3BsaXQodG9rZW4pLmpvaW4odmFsdWVSZXBsYWNlKTtcclxuXHRcdFx0Ly9zdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5yZXBsYWNlKHRva2VuLCB2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHN0cmluZ1RleHQ7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmdTZWdtZW50YXRpb24oc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNkYXRlW14pXStcXCkvZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHRsZXQgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRjb25zdCBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG5cdGNoYW5nZUlkUHJvcGVydGllc09mT2JqZWN0KG5vcm1hbGl6YXRpb25Db2x1bW5zOiBhbnlbXSwgbGlzdERhdGE6IGFueVtdKTogYW55W10ge1xyXG5cdFx0Y29uc3QgbmV3RGF0YSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpEYXRhID0ge307XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0aWYgKGRhdGEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XHJcblx0XHRcdFx0XHRub3JtYWxpemF0aW9uQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGNvbHVtbi5pZENvbHVtbi50b1N0cmluZygpID09PSBwcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0XHRcdG9iakRhdGFbY29sdW1uLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0aWYgKG9iakRhdGEpIHtcclxuXHRcdFx0XHRuZXdEYXRhLnB1c2gob2JqRGF0YSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG5ld0RhdGE7XHJcblx0fVxyXG5cclxuXHRnZW5lcmF0ZUh0bWxCeVRva2Vuc0FuZERhdGEoaHRtbDogc3RyaW5nLCBsaXN0RGF0YTogYW55W10sIGxpc3RUb2tlbnM6IGFueVtdKTogc3RyaW5nW10ge1xyXG5cdFx0Y29uc3QgdHJhbnNsYXRlZENhcmRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpUb2tlbiA9IHt9O1xyXG5cdFx0XHRjb25zdCBodG1sVHJhbnNsYXRlZCA9IHsgaHRtbDogaHRtbCB9O1xyXG5cdFx0XHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG5cdFx0XHRcdGxpc3RUb2tlbnMuZm9yRWFjaCgodG9rZW4pID0+IHtcclxuXHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA9PSB0b2tlbi5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKSkge1xyXG5cdFx0XHRcdFx0XHRvYmpUb2tlblt0b2tlbi5rZXldID0gZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdGh0bWxUcmFuc2xhdGVkLmh0bWwgPSBodG1sVHJhbnNsYXRlZC5odG1sLnJlcGxhY2UoXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4ua2V5LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGFbcHJvcGVydHldXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0cmFuc2xhdGVkQ2FyZHMucHVzaChodG1sVHJhbnNsYXRlZCk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiB0cmFuc2xhdGVkQ2FyZHM7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmcoc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0dmFyIGFycmF5VG9rZW4gPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCR7KFtefV0rKVxcfS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHR2YXIgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdHZhciByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG5cdFx0aWYgKGFycmF5VG9rZW4pIHtcclxuXHRcdFx0Zm9yIChjb25zdCB0b2tlbiBvZiBhcnJheVRva2VuKSB7XHJcblx0XHRcdFx0bGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKHRva2VuKTtcclxuXHRcdFx0XHRpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGluZGV4ID0gdG9rZW5Gb3JtYXR0ZWQuaW5kZXhPZih0b2tlbik7XHJcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0aW5mb1Rva2VuLnZhbHVlID0gdG9rZW5Gb3JtYXR0ZWQ7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblxyXG5cdFx0Ly8gbGV0IHRva2VuczogYW55W10gPSBbXTtcclxuXHRcdC8vIGxldCBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCAwKTtcclxuXHRcdC8vIGxldCBjb3VudCA9IDA7XHJcblx0XHQvLyB3aGlsZSAoaSA+PSAwICYmIGNvdW50IDw9IDEwKSB7XHJcblx0XHQvLyAgIGxldCBpbmZvVG9rZW46IHt9ID0gbnVsbDtcclxuXHRcdC8vICAgbGV0IG5leHRJOiBudW1iZXIgPSBpO1xyXG5cdFx0Ly8gICBsZXQgY2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgKGkgKyAxKSk7XHJcblx0XHQvLyAgIGlmIChjaGFyYWN0ZXIgPT0gXCIkXCIpIHtcclxuXHRcdC8vICAgICBsZXQgbmV4dENoYXJhY3RlciA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKChpICsgMSksIChpICsgMikpO1xyXG5cdFx0Ly8gICAgIC8vIFRoZSBuZXh0IGNoYXJhY3RlciBuZWVkIHRvIGJlIGEgeyBzaWduXHJcblx0XHQvLyAgICAgaWYgKG5leHRDaGFyYWN0ZXIgIT0gXCJ7XCIpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgbGV0IGtleVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgLy8gSWYgdGhlIHRva2VuIGhhdmUgYSB2YWxpZCBrZXkgdHlwZVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUeXBlOiBudW1iZXIgPSBUb2tlblNlcnZpY2UuZ2V0S2V5VHlwZShrZXlUb2tlbi5yZXBsYWNlKFwie1wiLCBcIlwiKS5yZXBsYWNlKFwifVwiLCBcIlwiKSk7XHJcblx0XHQvLyAgICAgaWYgKGtleVR5cGUgPT09IG51bGwpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiBrZXlUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpO1xyXG5cdFx0Ly8gICB9IGVsc2Uge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0U2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKTtcclxuXHRcdC8vICAgICAvLyBXZSBpbmx5IHN1cHBvcnQgI2RhdGUoJCBhbmQgI251bWJlcigkIGluIHRoaXMgMiBzY2VuYXJpb3MgdGhlIGxlbmdodCBjYW4ndCBiZSBtb3JlIHRoYW4gMTAgY2hhcmFjdGVyc1xyXG5cdFx0Ly8gICAgIGlmIChuZXh0U2lnbiA8IDAgfHwgKG5leHRTaWduIC0gaSkgPiAxMCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHN0cmluZ1RleHQuaW5kZXhPZihcIiRcIiwgaSksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICBsZXQgdmFsdWVUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgc3RyaW5nVGV4dC5pbmRleE9mKFwiKVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGluZm9Ub2tlbiA9IHtcclxuXHRcdC8vICAgICAgIGtleToga2V5VG9rZW4sXHJcblx0XHQvLyAgICAgICB2YWx1ZTogdmFsdWVUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpO1xyXG5cdFx0Ly8gICB9XHJcblx0XHQvLyAgIHRva2Vucy5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHQvLyAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJKTtcclxuXHRcdC8vICAgY291bnQrKztcclxuXHRcdC8vIH1cclxuXHRcdC8vIHJldHVybiB0b2tlbnM7XHJcblx0fVxyXG5cclxuXHRuZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0OiBzdHJpbmcsIG5leHRJOiBudW1iZXIpOiBudW1iZXIge1xyXG5cdFx0bGV0IHRva2VuRG9sbGFyU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCckJywgbmV4dEkpO1xyXG5cdFx0bGV0IHRva2VuTnVtU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCcjJywgbmV4dEkpO1xyXG5cdFx0bGV0IGk6IG51bWJlciA9XHJcblx0XHRcdHRva2VuRG9sbGFyU2lnbiA8IDAgJiYgdG9rZW5OdW1TaWduID49IDBcclxuXHRcdFx0XHQ/IHRva2VuTnVtU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduIDwgMCAmJiB0b2tlbkRvbGxhclNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5Eb2xsYXJTaWduXHJcblx0XHRcdFx0OiB0b2tlbkRvbGxhclNpZ24gPCB0b2tlbk51bVNpZ25cclxuXHRcdFx0XHQ/IHRva2VuRG9sbGFyU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduO1xyXG5cdFx0cmV0dXJuIGk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXVzZXMgcmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljIGJ1dCBzZXQgYWxsIGtleXMgbG9iamVjdHRva2VucyBhcyBsb3dlcmNhc2VcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGFcclxuXHQgKiBAcGFyYW0gbE9iamVjdFRva2Vuc1xyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdFB1YmxpYyhcclxuXHRcdHRva2VuTmFtZTogc3RyaW5nLFxyXG5cdFx0Zm9ybXVsYTogc3RyaW5nLFxyXG5cdFx0bE9iamVjdFRva2VuczogYW55W11cclxuXHQpOiBzdHJpbmcge1xyXG5cdFx0bGV0IGxEYXRhT3JnOiBhbnlbXSA9IFtdO1xyXG5cdFx0aWYgKGxPYmplY3RUb2tlbnMpIHtcclxuXHRcdFx0Zm9yIChsZXQgZGF0YUZvcm0gaW4gbE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRcdGxEYXRhT3JnW2RhdGFGb3JtLnRvTG93ZXJDYXNlKCldID0gbE9iamVjdFRva2Vuc1tkYXRhRm9ybV07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdCh0b2tlbk5hbWUsIGZvcm11bGEsIGxEYXRhT3JnKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRva2VuTmFtZSB0b2tlbiBuYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGEgU3RyaW5nIHdpdGggdGhlIGZvcm11bGEgdG8gZXhlY3V0ZVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zIExpc3Qgb2YgdG9rZW5zIHdpdGggdGhlIHZhbHVlcyB0byByZXBsYWNlXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZTogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcsIGxPYmplY3RUb2tlbnM6IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWZvcm11bGEgfHwgZm9ybXVsYS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0bWVzc2FnZTogJ0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hJyxcclxuXHRcdFx0XHR0aXRsZTogJ0FsZXJ0YSEnLFxyXG5cdFx0XHRcdGVycm9yOlxyXG5cdFx0XHRcdFx0J0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hLiBbZm9ybXVsYVsnICsgZm9ybXVsYSArICddXSdcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcdGxldCByZXBsYWNlZFRva2Vuczogc3RyaW5nID0gZm9ybXVsYS50b1N0cmluZygpO1xyXG5cdFx0aWYgKHJlcGxhY2VkVG9rZW5zLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBGaW5kIHRoZSB0b2tlbnMgaW4gdGhlIGZvcm11bGFcclxuXHRcdGxldCB0b2tlbnNBcnJheTogYW55W10gPSB0aGlzLmdldExpc3RUb2tlbnNCeVN0cmluZyhyZXBsYWNlZFRva2Vucyk7XHJcblx0XHRpZiAodG9rZW5zQXJyYXkubGVuZ3RoID09IDApIHtcclxuXHRcdFx0cmV0dXJuIHJlcGxhY2VkVG9rZW5zO1xyXG5cdFx0fVxyXG5cdFx0Ly8gSWYgdGhlcmUgYW55IHRva2VuLCB0cnkgdG8gcmVwbGFjZVxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnNBcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRsZXQgb2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XSAhPT0gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHQ/IGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XVxyXG5cdFx0XHRcdFx0OiBudWxsO1xyXG5cdFx0XHRsZXQgY2xlYXJLZXk7XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0Y2xlYXJLZXkgPSB0b2tlbnNBcnJheVtpXS5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdGxPYmplY3RUb2tlbnNbY2xlYXJLZXldICE9PSB1bmRlZmluZWQgPyBsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSA6IG51bGw7XHJcblxyXG5cdFx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgneycsICcnKVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdFx0XHQuc3BsaXQoJ18nKVsxXVxyXG5cdFx0XHRcdFx0XHQudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHQvLyBJZiBub3QgZmluZCB0aGUgdG9rZW4sIGJ5IGRlZmF1bHQgcHV0IGFuIGVtcHR5IHN0cmluZ1xyXG5cdFx0XHRcdC8qaWYgKFRva2VuU2VydmljZS5leGNsdWRlZFRva2VuLmluZGV4T2YoY2xlYXJLZXkpID09PSAtMSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0J0VsIHRva2VuICcgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArICcgbm8gZnVlIGVuY29udHJhZG8uJyxcclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2VucyxcclxuXHRcdFx0XHRcdFx0dG9rZW5zQXJyYXlcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSovXHJcblx0XHRcdFx0b2JqZWN0VG9rZW4gPSAnJztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gIT0gbnVsbCkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZTogYW55ID0gTnVtYmVyKG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0PyBvYmplY3RUb2tlblxyXG5cdFx0XHRcdFx0OiBBcnJheS5pc0FycmF5KG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0PyBKU09OLnN0cmluZ2lmeShvYmplY3RUb2tlbilcclxuXHRcdFx0XHRcdDogXCInXCIgKyBvYmplY3RUb2tlbiArIFwiJ1wiO1xyXG5cdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gdGhpcy5yZXBsYWNlVG9rZW4ocmVwbGFjZWRUb2tlbnMsIHRva2Vuc0FycmF5W2ldLnZhbHVlLCB2YWx1ZSk7XHJcblx0XHRcdFx0Ly8gfSBlbHNlIHtcclxuXHRcdFx0XHQvLyAgIGNvbnNvbGUuZXJyb3IobE9iamVjdFRva2VucywgdG9rZW5zQXJyYXkpO1xyXG5cdFx0XHRcdC8vICAgdGhyb3cge1xyXG5cdFx0XHRcdC8vICAgICBtZXNzYWdlOiBcIk5vIHNlIGVuY29udHLDsyB2YWxvciBwYXJhIHVuIHRva2VuXCIsXHJcblx0XHRcdFx0Ly8gICAgIHRpdGxlOiBcIkFsZXJ0YSFcIixcclxuXHRcdFx0XHQvLyAgICAgZXJyb3I6IFwiRWwgdG9rZW4gXCIgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArIFwiIG5vIGZ1ZSBlbmNvbnRyYWRvLlwiXHJcblx0XHRcdFx0Ly8gICB9O1xyXG5cdFx0XHRcdC8vXHJcblxyXG5cdFx0XHRcdGxldCByZWdleE9wZXJhdG9yID0gbmV3IFJlZ0V4cCgnKD17Mn18IT09fCE9fDw9fD49fDx8PiknKTtcclxuXHRcdFx0XHQvLyBSZXRvcm5hIGVsIG9wZXJhZG9yXHJcblx0XHRcdFx0bGV0IG9wZXJhdG9yOiBzdHJpbmdbXSA9IHJlcGxhY2VkVG9rZW5zLm1hdGNoKHJlZ2V4T3BlcmF0b3IpO1xyXG5cdFx0XHRcdC8vIFNlcGFyYSBsYSBzZW50ZW5jaWEgcG9yIGVsIG9wZXJhZG9yXHJcblx0XHRcdFx0Ly8gTGEgcHJpbWVyYSBwYXJ0ZSBlcyBlbCB2YWxvciBwb3IgZWwgY3VhbCBzZSByZW1wbGF6YSBlbCB0b2tlblxyXG5cdFx0XHRcdC8vIEVsIHNlZ3VuZG8gZXMgZWwgdmFsb3IgY29uIGVsIGN1YWwgc2UgdmEgYSBjb21wYXJhclxyXG5cdFx0XHRcdGxldCB2YWx1ZVRva2VuLCB2YWx1ZVRvQ29tcGFyZTtcclxuXHRcdFx0XHRbdmFsdWVUb2tlbiwgdmFsdWVUb0NvbXBhcmVdID0gcmVwbGFjZWRUb2tlbnMuc3BsaXQob3BlcmF0b3JbMF0pO1xyXG5cdFx0XHRcdC8vIFNpIGVsIHZhbG9yIHF1ZSBzZSBlbmNvbnRybyBwYXJhIGVsIHRva2VuIGVzIHVuIGFycmF5IGVzIHBvcnF1ZSBlcyB0YWdcclxuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZVRva2VuKSkge1xyXG5cdFx0XHRcdFx0Ly8gU2UgdHJhdGEgZGUgZW5jb250cmFyIGVsIHZhbG9yIGEgY29tcGFyYXIgZGVudHJvIGRlbCBhcnJheSBzaSBlcyBhc2lcclxuXHRcdFx0XHRcdC8vIHJlcGxhY2VkVG9rZW5zPSd0cnVlJ1xyXG5cdFx0XHRcdFx0bGV0IGlzVGFnRm91bmQgPSB2YWx1ZVRva2VuLnNvbWUoKHRhZykgPT4gdGFnID09IHZhbHVlVG9Db21wYXJlKTtcclxuXHRcdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gaXNUYWdGb3VuZCA/ICd0cnVlJyA6ICdmYWxzZSc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZXZhbCB0aGUgZm9ybXVsYSBkZXBlbmQgb2YgdGhlIHR5cGUgb2YgZmllbGRzLlxyXG5cdCAqIEBwYXJhbSBsU3RhdGljVG9rZW5cclxuXHQgKiBAcGFyYW0gZm9ybXVsYU5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqL1xyXG5cdHZhbGlkYXRlRm9ybXVsYShsU3RhdGljVG9rZW46IGFueSwgZm9ybXVsYU5hbWU6IHN0cmluZywgZm9ybXVsYTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRsZXQgZXZhbEZvcm11bGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdC8vIFRvIHZhbGlkYXRlIHRoZSBmb3JtdWxhLCBmaXJzdCBvcmdhbml6ZSB0aGUgaW5mbyB0byBrZXkgLSB2YWx1ZSBhcnJheVxyXG5cdFx0bGV0IG9iamVjdFRva2VuczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IHBhbmVsIG9mIGxTdGF0aWNUb2tlbikge1xyXG5cdFx0XHRmb3IgKGxldCBncm91cFRva2VuIG9mIHBhbmVsLnZhbHVlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgc3RhdGljVG9rZW4gb2YgZ3JvdXBUb2tlbi52YWx1ZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgYXJyYXlUb2tlbkluZm8gb2Ygc3RhdGljVG9rZW4pIHtcclxuXHRcdFx0XHRcdFx0b2JqZWN0VG9rZW5zW2FycmF5VG9rZW5JbmZvLmtleV0gPSBhcnJheVRva2VuSW5mby5vYmplY3RcclxuXHRcdFx0XHRcdFx0XHQ/IGFycmF5VG9rZW5JbmZvLm9iamVjdC50eXBlID09ICdudW1iZXInXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICcwJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAnJ1xyXG5cdFx0XHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3JtdWxhID0gdGhpcy5yZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QoZm9ybXVsYU5hbWUsIGZvcm11bGEsIG9iamVjdFRva2Vucyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR0aHJvdyBlcnJvcjtcclxuXHRcdH1cclxuXHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpID8gZm9ybXVsYSA6IGV2YWwoZm9ybXVsYSk7XHJcblx0XHRcdFx0ZXZhbEZvcm11bGEgPSB0cnVlO1xyXG5cdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmVycm9yKFwiRXJyb3IgZXZhbHVhdGluZyB0aGUgZm9ybXVsYVwiLCBlKTtcclxuXHRcdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBubyBmdWUgcG9zaWJsZSBldmFsdWFyJyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0XHRlcnJvcjogZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBldmFsRm9ybXVsYTtcclxuXHR9XHJcblxyXG5cdGdldENvbmZpZ0Nsb25pbmdUb2tlbk1hcChvbGRQUFA6IG51bWJlciwgbmV3UFBQOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwJyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKVxyXG5cdFx0XHRcdFx0LnNldCgnb2xkUFBQJywgb2xkUFBQLnRvU3RyaW5nKCkpXHJcblx0XHRcdFx0XHQuc2V0KCduZXdQUFAnLCBuZXdQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
@@ -2,9 +2,9 @@
2
2
  /* tslint:disable */
3
3
  export const VERSION = {
4
4
  "dirty": true,
5
- "raw": "v0.0.18-1910-gdec84563-dirty",
6
- "hash": "gdec84563",
7
- "distance": 1910,
5
+ "raw": "v0.0.18-1912-gac7bc9c6-dirty",
6
+ "hash": "gac7bc9c6",
7
+ "distance": 1912,
8
8
  "tag": "v0.0.18",
9
9
  "semver": {
10
10
  "options": {
@@ -20,10 +20,10 @@ export const VERSION = {
20
20
  "build": [],
21
21
  "version": "0.0.18"
22
22
  },
23
- "suffix": "1910-gdec84563-dirty",
24
- "semverString": "0.0.18+1910.gdec84563",
25
- "version": "0.0.1402",
26
- "buildTimestamp": "2022-04-05T14:06:37.639Z"
23
+ "suffix": "1912-gac7bc9c6-dirty",
24
+ "semverString": "0.0.18+1912.gac7bc9c6",
25
+ "version": "0.0.1405",
26
+ "buildTimestamp": "2022-04-06T15:21:15.120Z"
27
27
  };
28
28
  /* tslint:enable */
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTE5MTAtZ2RlYzg0NTYzLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiZ2RlYzg0NTYzXCIsXG4gICAgXCJkaXN0YW5jZVwiOiAxOTEwLFxuICAgIFwidGFnXCI6IFwidjAuMC4xOFwiLFxuICAgIFwic2VtdmVyXCI6IHtcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImluY2x1ZGVQcmVyZWxlYXNlXCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgIFwicmF3XCI6IFwidjAuMC4xOFwiLFxuICAgICAgICBcIm1ham9yXCI6IDAsXG4gICAgICAgIFwibWlub3JcIjogMCxcbiAgICAgICAgXCJwYXRjaFwiOiAxOCxcbiAgICAgICAgXCJwcmVyZWxlYXNlXCI6IFtdLFxuICAgICAgICBcImJ1aWxkXCI6IFtdLFxuICAgICAgICBcInZlcnNpb25cIjogXCIwLjAuMThcIlxuICAgIH0sXG4gICAgXCJzdWZmaXhcIjogXCIxOTEwLWdkZWM4NDU2My1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzE5MTAuZ2RlYzg0NTYzXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE0MDJcIixcbiAgICBcImJ1aWxkVGltZXN0YW1wXCI6IFwiMjAyMi0wNC0wNVQxNDowNjozNy42MzlaXCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTE5MTItZ2FjN2JjOWM2LWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiZ2FjN2JjOWM2XCIsXG4gICAgXCJkaXN0YW5jZVwiOiAxOTEyLFxuICAgIFwidGFnXCI6IFwidjAuMC4xOFwiLFxuICAgIFwic2VtdmVyXCI6IHtcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImluY2x1ZGVQcmVyZWxlYXNlXCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgIFwicmF3XCI6IFwidjAuMC4xOFwiLFxuICAgICAgICBcIm1ham9yXCI6IDAsXG4gICAgICAgIFwibWlub3JcIjogMCxcbiAgICAgICAgXCJwYXRjaFwiOiAxOCxcbiAgICAgICAgXCJwcmVyZWxlYXNlXCI6IFtdLFxuICAgICAgICBcImJ1aWxkXCI6IFtdLFxuICAgICAgICBcInZlcnNpb25cIjogXCIwLjAuMThcIlxuICAgIH0sXG4gICAgXCJzdWZmaXhcIjogXCIxOTEyLWdhYzdiYzljNi1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzE5MTIuZ2FjN2JjOWM2XCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE0MDVcIixcbiAgICBcImJ1aWxkVGltZXN0YW1wXCI6IFwiMjAyMi0wNC0wNlQxNToyMToxNS4xMjBaXCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=