vcomply-workflow-engine 6.0.62 → 6.0.64

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.
@@ -114,15 +114,11 @@ export class ProgramsService {
114
114
  "owners": {
115
115
  "admins": {
116
116
  "users": this.listToId(form?.program_owners, 'uid') ?? [],
117
- userGroups: option?.ROLES
118
- ? this.listToId(form?.program_owners_group, 'ugid') ?? []
119
- : []
117
+ userGroups: this.listToId(form?.program_owners_group, 'ugid') ?? []
120
118
  },
121
119
  "managers": {
122
120
  "users": this.listToId(form?.collaborators, 'uid') ?? [],
123
- userGroups: option?.ROLES
124
- ? this.listToId(form?.collaborators_group, 'ugid') ?? []
125
- : []
121
+ userGroups: this.listToId(form?.collaborators_group, 'ugid') ?? []
126
122
  }
127
123
  },
128
124
  "customFields": option?.CUSTOM_FIELDS ? form?.custom_fields ?? [] : [],
@@ -231,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
231
227
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
232
228
  type: Optional
233
229
  }] }]; } });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTzdCLE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUdoQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWU7WUFDdkIsaURBQWlELEVBQ25ELEVBQUUsT0FBTyxFQUFFLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxPQUFZLEVBQUUsSUFBUztRQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FB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ckQsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQ2xCLEVBQUUsT0FBTyxFQUFFLENBQ1o7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVE7UUFDeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUNILElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1lBQ3ZCLDZDQUE2QyxFQUMvQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsRUFDbEIsRUFBRSxPQUFPLEVBQUUsQ0FDWjthQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDOytHQTNUVSxlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJldHJ5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZ3JhbXNTZXJ2aWNlIHtcbiAgZW52ITogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnNcbiAgKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5lbnYgPSBjb25maWcuZW52Q29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIGdldFJvbGVzKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgJ3JvbGVzL2dldFByb2dyYW1Sb2xlcyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWRzIHRoZSBnaXZlbiBmaWxlIHRvIHNlcnZlclxuICAgKiBAcGFyYW0gcGF5bG9hZCBwYXlsb2FkIEZpbGUgZGF0YSB0byBiZSB1cGxvYWRlZFxuICAgKiBAcGFyYW0gcGF0aCBwYXRoIFBhdGggb2YgZmlsZSB0byBiZSB1cGxvYWRlZFxuICAgKiBAcmV0dXJucyByZXNwb25zZSBhZnRlciB1cGxvYWRpbmcgYSBmaWxlXG4gICAqL1xuICB1cGxvYWRGaWxlcyhwYXlsb2FkOiBhbnksIHBhdGg6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgY29uc3QgT1JHX1BBVEggPSBgby8ke3BhdGh9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLmVudi5maWxlVXBsb2FkRW5kUG9pbnQgKyBPUkdfUEFUSCArICcmbmdzdy1ieXBhc3M9dHJ1ZScsXG4gICAgICBwYXlsb2FkLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Py5jb21wbGlhbmNlR2V0ICtcbiAgICAgICAgICAncmVzcG9uc2liaWxpdHlDZW50ZXJUcmVlJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZmV0Y2hSb2xlVXNlcnMocm9sZXM6IGFueSwgcGFnZT86IGFueSwgc2VhcmNoS2V5PzogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBsZXQgcXVlcnlTdHJpbmcgPSAnJztcbiAgICBpZiAocGFnZSkge1xuICAgICAgcXVlcnlTdHJpbmcgKz0gYCZwYWdlPSR7cGFnZX1gO1xuICAgIH1cbiAgICBpZiAoc2VhcmNoS2V5KSB7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnYub3JnYW5pemF0aW9uUG9zdCArXG4gICAgICAgICAgJ3JvbGVzL2dldFVzZXJEZXRhaWxzJmxpbWl0PTMwJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnICtcbiAgICAgICAgICBxdWVyeVN0cmluZyxcbiAgICAgICAgeyByb2xlX2lkczogcm9sZXMgPz8gW10gfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGZldGNoQWxsUm9sZVVzZXJzKHJvbGVzOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvblBvc3QgK1xuICAgICAgICAgICdyb2xlcy9nZXRVc2VyRGV0YWlscyZ0eXBlPWFsbCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyByb2xlX2lkczogcm9sZXMgPz8gW10gfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGZldGNoQWxsUm9sZUdyb3Vwcyhyb2xlczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgK1xuICAgICAgICAgICdyb2xlcy9nZXRHcm91cERldGFpbHMmdHlwZT1hbGwmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHsgcm9sZV9pZHM6IHJvbGVzID8/IFtdIH0sXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZmV0Y2hBbGxPcmdVc2VyKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgLy9odHRwczovL2RldmFwaS52LWNvbXBseS5jb20vb3JnYW5pemF0aW9uLz9tb2RlPW9yZ2FuaXNhdGlvblVzZXJzTGlzdCZwYWdpbmF0aW9uVHlwZT1zbWFsbCZhZG1pbj0xXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAgICdvcmdhbmlzYXRpb25Vc2Vyc0xpc3QmcGFnaW5hdGlvblR5cGU9c21hbGwmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgZmV0Y2hDb21wbGlhbmNlR3JvdXBzKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgLy9odHRwczovL2RldmFwaS52LWNvbXBseS5jb20vb3JnYW5pemF0aW9uLz9tb2RlPWdyb3Vwc0xpc3Qmc3RhdHVzPTEmdHlwZT1jb21wbGlhbmNlXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAgICdncm91cHNMaXN0JnN0YXR1cz0xJnR5cGU9Y29tcGxpYW5jZSZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldEJ1c2luZXNzQ3ljbGUoKSB7XG4gICAgY29uc3QgYnVzaW5lc3NDeWNsZSA9IEpTT04ucGFyc2UoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NDeWNsZScpID8/ICd7fSdcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RlZF9jeWNsZTogYnVzaW5lc3NDeWNsZVxuICAgICAgICA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnN0YXJ0X2RhdGUgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGVcbiAgICAgICAgOiAnJyxcbiAgICAgIHN0YXJ0X2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlIDogJycsXG4gICAgICBlbmRfZGF0ZTogYnVzaW5lc3NDeWNsZSA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LmVuZF9kYXRlIDogJycsXG4gICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IGJ1c2luZXNzQ3ljbGVcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zZWxlY3RlZF9jeWNsZV9hcnJcbiAgICAgICAgOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgc2F2ZVByb2dyYW0ocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpXG4gICAgICAuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpXG4gICAgICAuc2V0KCd4LWJ1c2luZXNzLWN5Y2xlJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRCdXNpbmVzc0N5Y2xlKCkpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KFxuICAgICAgdGhpcy5lbnYucHJvZ3JhbUVuZHBvaW50ICsgJy9jYXRlZ29yeS8/aXNCdXNpbmVzc0N5Y2xlPXRydWUmc2VydmljZVR5cGU9MScsXG4gICAgICBwYXlsb2FkLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgYnVpbGRQYXlsb2FkKGZvcm1EYXRhOiBhbnksIGluc3RhbmNlOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtID0gZm9ybURhdGE/LnZhbHVlO1xuICAgIGNvbnN0IG9wdGlvbiA9IGluc3RhbmNlLmFkZGl0aW9uYWxPcHRpb247XG4gICAgY29uc3QgdHlwZSA9IFtcIm90aGVyc1wiLCBcInJlZ3VsYXRpb25zXCIsIFwic3RhbmRhcmRzXCIsIFwiaW50ZXJuYWxfY29udHJvbHNcIl1cbiAgICByZXR1cm4ge1xuICAgICAgXCJuYW1lXCI6IGZvcm0/LnByb2dyYW1fbmFtZS50cmltKCkgPz8gJycsXG4gICAgICBcInR5cGVcIjogdHlwZVtmb3JtPy5wcm9ncmFtX3R5cGVdID8/IFwib3RoZXJzXCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IGZvcm0/LnByb2dyYW1fb2JqZWN0aXZlID8/IFwiXCIsXG4gICAgICBcIm93bmVyc1wiOiB7XG4gICAgICAgIFwiYWRtaW5zXCI6IHsgIC8vIE93bmVyc1xuICAgICAgICAgIFwidXNlcnNcIjogdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX293bmVycywgJ3VpZCcpID8/IFtdLFxuICAgICAgICAgIHVzZXJHcm91cHM6IG9wdGlvbj8uUk9MRVNcbiAgICAgICAgICAgID8gdGhpcy5saXN0VG9JZChmb3JtPy5wcm9ncmFtX293bmVyc19ncm91cCwgJ3VnaWQnKSA/PyBbXVxuICAgICAgICAgICAgOiBbXVxuICAgICAgICB9LFxuICAgICAgICBcIm1hbmFnZXJzXCI6IHsgIC8vIENvbGxhYm9yYXRvcnNcbiAgICAgICAgICBcInVzZXJzXCI6IHRoaXMubGlzdFRvSWQoZm9ybT8uY29sbGFib3JhdG9ycywgJ3VpZCcpID8/IFtdLFxuICAgICAgICAgIHVzZXJHcm91cHM6IG9wdGlvbj8uUk9MRVNcbiAgICAgICAgICAgID8gdGhpcy5saXN0VG9JZChmb3JtPy5jb2xsYWJvcmF0b3JzX2dyb3VwLCAndWdpZCcpID8/IFtdXG4gICAgICAgICAgICA6IFtdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImN1c3RvbUZpZWxkc1wiOiBvcHRpb24/LkNVU1RPTV9GSUVMRFMgPyBmb3JtPy5jdXN0b21fZmllbGRzID8/IFtdIDogW10sXG4gICAgfVxuICB9XG4gIGdlbmVyYXRlQXNzZXNzbWVudChhc3Nlc3NtZW50OiBhbnkpIHtcbiAgICBpZiAoYXNzZXNzbWVudCAmJiBhc3Nlc3NtZW50Py5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBhc3Nlc3NtZW50Lm1hcCgoY2F0OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jYXQsXG4gICAgICAgICAgYXNzZXNzbWVudElkczogY2F0LmFzc2Vzc21lbnRJZHM/Lm1hcCgoYXNzZXNzOiBhbnkpID0+IGFzc2Vzcy5pZCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuICBnZXRGcmFtZXdvcmsoaW5wdXQ6IGFueSkge1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIF9pZDogaW5wdXQ/Ll9pZCxcbiAgICAgICAgICBmcmFtZXdvcmtfbmFtZTogaW5wdXQ/Lm5hbWUsXG4gICAgICAgICAgdHlwZTogaW5wdXQ/LnR5cGUsXG4gICAgICAgICAgaW5fc2NvcGU6IGlucHV0Py5pbl9zY29wZVxuICAgICAgICAgICAgPyB0aGlzLmxpc3RUb0lkKGlucHV0Py5pbl9zY29wZSwgJ19pZCcpXG4gICAgICAgICAgICA6IFtdLFxuICAgICAgICAgIG91dF9zY29wZTogaW5wdXQ/Lm91dF9zY29wZVxuICAgICAgICAgICAgPyB0aGlzLmxpc3RUb0lkKGlucHV0Py5vdXRfc2NvcGUsICdfaWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBsaXN0VG9JZChsaXN0OiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGxpc3QgJiYgbGlzdD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbGlzdC5tYXAoKGVsZTogYW55KSA9PiBlbGVba2V5XSkuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlKVxuICAgICAgLm1hcCgoZWxlOiBhbnkpID0+IGVsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGlkIDogcHJvZ3JhbSBvYmplY3QgaWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldFByb2dyYW0oaWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgneC1idXNpbmVzcy1jeWNsZScsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KFxuICAgICAgdGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArXG4gICAgICAgICcvJyArXG4gICAgICAgIGlkICtcbiAgICAgICAgJz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gcGF5bG9hZCBwYXlsb2FkIHdoaWNoIG5lZWQgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gaWQgcHJvZ3JhbSBvYmplY3QgaWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHVwZGF0ZVByb2dyYW0ocGF5bG9hZDogYW55LCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpXG4gICAgICAuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpXG4gICAgICAuc2V0KCd4LWJ1c2luZXNzLWN5Y2xlJywgSlNPTi5zdHJpbmdpZnkodGhpcy5nZXRCdXNpbmVzc0N5Y2xlKCkpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KFxuICAgICAgdGhpcy5lbnYucHJvZ3JhbUVuZHBvaW50ICtcbiAgICAgICAgJy9jYXRlZ29yeS9lZGl0Q2F0ZWdvcnkvJyArXG4gICAgICAgIGlkICtcbiAgICAgICAgJz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJnNlcnZpY2VUeXBlPTEnLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIGdldE1lbWViZXJCeUlkcyhpZHM6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICtcbiAgICAgICAgICAnbWVtYmVyRGV0YWlsc2J5SWRzJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7IG1lbWJlcl9pZDogaWRzIH0sXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBnZXRNZW1lYmVyQnlVSWRzKGlkczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgK1xuICAgICAgICAgICdtZW1iZXJEZXRhaWxzYnlJZHNTYWlscyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBtZW1iZXJfaWQ6IGlkcyB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0TWVtYmVyQnlHcm91cHMoaWRzOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnYub3JnYW5pemF0aW9uUG9zdCArXG4gICAgICAgICAgJ2dyb3VwRGV0YWlsc2J5SWRzJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7IGdyb3VwX2lkczogaWRzIH0sXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbn1cbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTzdCLE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUdoQyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWU7WUFDdkIsaURBQWlELEVBQ25ELEVBQUUsT0FBTyxFQUFFLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxPQUFZLEVBQUUsSUFBUztRQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FB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QUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBUTtRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0I7WUFDdkIsNkNBQTZDLEVBQy9DLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUNsQixFQUFFLE9BQU8sRUFBRSxDQUNaO2FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7K0dBeFRVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmFtc1NlcnZpY2Uge1xuICBlbnYhOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xuICApIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XG4gICAgfVxuICB9XG5cbiAgZ2V0Um9sZXMoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAncm9sZXMvZ2V0UHJvZ3JhbVJvbGVzJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwbG9hZHMgdGhlIGdpdmVuIGZpbGUgdG8gc2VydmVyXG4gICAqIEBwYXJhbSBwYXlsb2FkIHBheWxvYWQgRmlsZSBkYXRhIHRvIGJlIHVwbG9hZGVkXG4gICAqIEBwYXJhbSBwYXRoIHBhdGggUGF0aCBvZiBmaWxlIHRvIGJlIHVwbG9hZGVkXG4gICAqIEByZXR1cm5zIHJlc3BvbnNlIGFmdGVyIHVwbG9hZGluZyBhIGZpbGVcbiAgICovXG4gIHVwbG9hZEZpbGVzKHBheWxvYWQ6IGFueSwgcGF0aDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICBjb25zdCBPUkdfUEFUSCA9IGBvLyR7cGF0aH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIHRoaXMuZW52LmZpbGVVcGxvYWRFbmRQb2ludCArIE9SR19QQVRIICsgJyZuZ3N3LWJ5cGFzcz10cnVlJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgK1xuICAgICAgICAgICdyZXNwb25zaWJpbGl0eUNlbnRlclRyZWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBmZXRjaFJvbGVVc2Vycyhyb2xlczogYW55LCBwYWdlPzogYW55LCBzZWFyY2hLZXk/OiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIGxldCBxdWVyeVN0cmluZyA9ICcnO1xuICAgIGlmIChwYWdlKSB7XG4gICAgICBxdWVyeVN0cmluZyArPSBgJnBhZ2U9JHtwYWdlfWA7XG4gICAgfVxuICAgIGlmIChzZWFyY2hLZXkpIHtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICtcbiAgICAgICAgICAncm9sZXMvZ2V0VXNlckRldGFpbHMmbGltaXQ9MzAmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScgK1xuICAgICAgICAgIHF1ZXJ5U3RyaW5nLFxuICAgICAgICB7IHJvbGVfaWRzOiByb2xlcyA/PyBbXSB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZmV0Y2hBbGxSb2xlVXNlcnMocm9sZXM6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uUG9zdCArXG4gICAgICAgICAgJ3JvbGVzL2dldFVzZXJEZXRhaWxzJnR5cGU9YWxsJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7IHJvbGVfaWRzOiByb2xlcyA/PyBbXSB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZmV0Y2hBbGxSb2xlR3JvdXBzKHJvbGVzOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnYub3JnYW5pemF0aW9uUG9zdCArXG4gICAgICAgICAgJ3JvbGVzL2dldEdyb3VwRGV0YWlscyZ0eXBlPWFsbCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyByb2xlX2lkczogcm9sZXMgPz8gW10gfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuICBmZXRjaEFsbE9yZ1VzZXIoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICAvL2h0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9vcmdhbml6YXRpb24vP21vZGU9b3JnYW5pc2F0aW9uVXNlcnNMaXN0JnBhZ2luYXRpb25UeXBlPXNtYWxsJmFkbWluPTFcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXG4gICAgICAgICAgJ29yZ2FuaXNhdGlvblVzZXJzTGlzdCZwYWdpbmF0aW9uVHlwZT1zbWFsbCZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuICBmZXRjaENvbXBsaWFuY2VHcm91cHMoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICAvL2h0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9vcmdhbml6YXRpb24vP21vZGU9Z3JvdXBzTGlzdCZzdGF0dXM9MSZ0eXBlPWNvbXBsaWFuY2VcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXG4gICAgICAgICAgJ2dyb3Vwc0xpc3Qmc3RhdHVzPTEmdHlwZT1jb21wbGlhbmNlJmJ5cGFzcy1idXNpbmVzc0N5Y2xlPXRydWUnLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0QnVzaW5lc3NDeWNsZSgpIHtcbiAgICBjb25zdCBidXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0N5Y2xlJykgPz8gJ3t9J1xuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdGVkX2N5Y2xlOiBidXNpbmVzc0N5Y2xlXG4gICAgICAgID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uc3RhcnRfZGF0ZSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZVxuICAgICAgICA6ICcnLFxuICAgICAgc3RhcnRfZGF0ZTogYnVzaW5lc3NDeWNsZSA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnN0YXJ0X2RhdGUgOiAnJyxcbiAgICAgIGVuZF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGUgOiAnJyxcbiAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogYnVzaW5lc3NDeWNsZVxuICAgICAgICA/IGJ1c2luZXNzQ3ljbGU/LnNlbGVjdGVkQ3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2FyclxuICAgICAgICA6IFtdLFxuICAgIH07XG4gIH1cblxuICBzYXZlUHJvZ3JhbShwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSlcbiAgICAgIC5zZXQoJ3gtYnVzaW5lc3MtY3ljbGUnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldEJ1c2luZXNzQ3ljbGUoKSkpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4oXG4gICAgICB0aGlzLmVudi5wcm9ncmFtRW5kcG9pbnQgKyAnL2NhdGVnb3J5Lz9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZzZXJ2aWNlVHlwZT0xJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBidWlsZFBheWxvYWQoZm9ybURhdGE6IGFueSwgaW5zdGFuY2U6IGFueSkge1xuICAgIGNvbnN0IGZvcm0gPSBmb3JtRGF0YT8udmFsdWU7XG4gICAgY29uc3Qgb3B0aW9uID0gaW5zdGFuY2UuYWRkaXRpb25hbE9wdGlvbjtcbiAgICBjb25zdCB0eXBlID0gW1wib3RoZXJzXCIsIFwicmVndWxhdGlvbnNcIiwgXCJzdGFuZGFyZHNcIiwgXCJpbnRlcm5hbF9jb250cm9sc1wiXVxuICAgIHJldHVybiB7XG4gICAgICBcIm5hbWVcIjogZm9ybT8ucHJvZ3JhbV9uYW1lLnRyaW0oKSA/PyAnJyxcbiAgICAgIFwidHlwZVwiOiB0eXBlW2Zvcm0/LnByb2dyYW1fdHlwZV0gPz8gXCJvdGhlcnNcIixcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogZm9ybT8ucHJvZ3JhbV9vYmplY3RpdmUgPz8gXCJcIixcbiAgICAgIFwib3duZXJzXCI6IHtcbiAgICAgICAgXCJhZG1pbnNcIjogeyAgLy8gT3duZXJzXG4gICAgICAgICAgXCJ1c2Vyc1wiOiB0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fb3duZXJzLCAndWlkJykgPz8gW10sXG4gICAgICAgICAgdXNlckdyb3Vwczp0aGlzLmxpc3RUb0lkKGZvcm0/LnByb2dyYW1fb3duZXJzX2dyb3VwLCAndWdpZCcpID8/IFtdXG4gICAgICAgIH0sXG4gICAgICAgIFwibWFuYWdlcnNcIjogeyAgLy8gQ29sbGFib3JhdG9yc1xuICAgICAgICAgIFwidXNlcnNcIjogdGhpcy5saXN0VG9JZChmb3JtPy5jb2xsYWJvcmF0b3JzLCAndWlkJykgPz8gW10sXG4gICAgICAgICAgdXNlckdyb3VwczogdGhpcy5saXN0VG9JZChmb3JtPy5jb2xsYWJvcmF0b3JzX2dyb3VwLCAndWdpZCcpID8/IFtdXG4gICAgICAgIFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJjdXN0b21GaWVsZHNcIjogb3B0aW9uPy5DVVNUT01fRklFTERTID8gZm9ybT8uY3VzdG9tX2ZpZWxkcyA/PyBbXSA6IFtdLFxuICAgIH1cbiAgfVxuICBnZW5lcmF0ZUFzc2Vzc21lbnQoYXNzZXNzbWVudDogYW55KSB7XG4gICAgaWYgKGFzc2Vzc21lbnQgJiYgYXNzZXNzbWVudD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYXNzZXNzbWVudC5tYXAoKGNhdDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY2F0LFxuICAgICAgICAgIGFzc2Vzc21lbnRJZHM6IGNhdC5hc3Nlc3NtZW50SWRzPy5tYXAoKGFzc2VzczogYW55KSA9PiBhc3Nlc3MuaWQpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbiAgZ2V0RnJhbWV3b3JrKGlucHV0OiBhbnkpIHtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBfaWQ6IGlucHV0Py5faWQsXG4gICAgICAgICAgZnJhbWV3b3JrX25hbWU6IGlucHV0Py5uYW1lLFxuICAgICAgICAgIHR5cGU6IGlucHV0Py50eXBlLFxuICAgICAgICAgIGluX3Njb3BlOiBpbnB1dD8uaW5fc2NvcGVcbiAgICAgICAgICAgID8gdGhpcy5saXN0VG9JZChpbnB1dD8uaW5fc2NvcGUsICdfaWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICBvdXRfc2NvcGU6IGlucHV0Py5vdXRfc2NvcGVcbiAgICAgICAgICAgID8gdGhpcy5saXN0VG9JZChpbnB1dD8ub3V0X3Njb3BlLCAnX2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgbGlzdFRvSWQobGlzdDogYW55LCBrZXk6IHN0cmluZykge1xuICAgIGlmIChsaXN0ICYmIGxpc3Q/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGxpc3QubWFwKChlbGU6IGFueSkgPT4gZWxlW2tleV0pLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSlcbiAgICAgIC5tYXAoKGVsZTogYW55KSA9PiBlbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpZCA6IHByb2dyYW0gb2JqZWN0IGlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRQcm9ncmFtKGlkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ3Rva2VuJywgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSlcbiAgICAgIC5zZXQoJ3gtYnVzaW5lc3MtY3ljbGUnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmdldEJ1c2luZXNzQ3ljbGUoKSkpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52Py5wcm9ncmFtRW5kcG9pbnQgK1xuICAgICAgICAnLycgK1xuICAgICAgICBpZCArXG4gICAgICAgICc/aXNCdXNpbmVzc0N5Y2xlPXRydWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHBheWxvYWQgcGF5bG9hZCB3aGljaCBuZWVkIHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGlkIHByb2dyYW0gb2JqZWN0IGlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB1cGRhdGVQcm9ncmFtKHBheWxvYWQ6IGFueSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgneC1idXNpbmVzcy1jeWNsZScsIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0QnVzaW5lc3NDeWNsZSgpKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LnByb2dyYW1FbmRwb2ludCArXG4gICAgICAgICcvY2F0ZWdvcnkvZWRpdENhdGVnb3J5LycgK1xuICAgICAgICBpZCArXG4gICAgICAgICc/aXNCdXNpbmVzc0N5Y2xlPXRydWUmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZSZzZXJ2aWNlVHlwZT0xJyxcbiAgICAgIHBheWxvYWQsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBnZXRNZW1lYmVyQnlJZHMoaWRzOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnYub3JnYW5pemF0aW9uUG9zdCArXG4gICAgICAgICAgJ21lbWJlckRldGFpbHNieUlkcyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBtZW1iZXJfaWQ6IGlkcyB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0TWVtZWJlckJ5VUlkcyhpZHM6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5vcmdhbml6YXRpb25Qb3N0ICtcbiAgICAgICAgICAnbWVtYmVyRGV0YWlsc2J5SWRzU2FpbHMmYnlwYXNzLWJ1c2luZXNzQ3ljbGU9dHJ1ZScsXG4gICAgICAgIHsgbWVtYmVyX2lkOiBpZHMgfSxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldE1lbWJlckJ5R3JvdXBzKGlkczogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52Lm9yZ2FuaXphdGlvblBvc3QgK1xuICAgICAgICAgICdncm91cERldGFpbHNieUlkcyZieXBhc3MtYnVzaW5lc3NDeWNsZT10cnVlJyxcbiAgICAgICAgeyBncm91cF9pZHM6IGlkcyB9LFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG59XG4iXX0=