raain-app 1.4.2 → 1.4.5

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.
@@ -223,13 +223,10 @@ export class ProfileService {
223
223
  }
224
224
  return null;
225
225
  }
226
- async putRadar(radarNode, configurationAsJSON) {
226
+ async putRadar(radarNode) {
227
227
  const data = {
228
228
  name: radarNode.name,
229
229
  };
230
- if (configurationAsJSON) {
231
- data['configurationAsJSON'] = configurationAsJSON;
232
- }
233
230
  try {
234
231
  const resp = await this.fidjService.sendOnEndpoint({
235
232
  key: 'radars',
@@ -519,4 +516,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
519
516
  providedIn: 'root'
520
517
  }]
521
518
  }], ctorParameters: function () { return [{ type: i1.Storage }, { type: i2.FidjService }, { type: i3.HttpClient }, { type: i4.Router }]; } });
522
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9zaGFyZWQvcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsUUFBUSxFQUNULE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBQyxXQUFXLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUE4QixlQUFlLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sU0FBUyxDQUFDOzs7Ozs7QUFNeEMsTUFBTSxPQUFPLGNBQWM7SUFXekIsWUFBc0IsT0FBZ0IsRUFDaEIsV0FBd0IsRUFDeEIsVUFBc0IsRUFDeEIsTUFBYztRQUhaLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxl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QUFFLEtBQUs7WUFDWCxZQUFZLEVBQUUsU0FBUztZQUN2QixhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVM7U0FDakQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxhQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xELGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrQkFBa0I7SUFFUixRQUFRLENBQUMsS0FBb0I7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7NEdBOWpCVSxjQUFjO2dIQUFkLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRXZlbnROb2RlLFxuICBHYXVnZU1lYXN1cmUsXG4gIEdhdWdlTm9kZSxcbiAgUmFkYXJOb2RlLFxuICBSYWluQ29tcHV0YXRpb24sXG4gIFJhaW5Db21wdXRhdGlvbk1hcCxcbiAgUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSxcbiAgUmFpbk5vZGUsXG4gIFNwZWVkTWF0cml4Q29udGFpbmVyLFxuICBUZWFtTm9kZVxufSBmcm9tICdyYWFpbi1tb2RlbCc7XG5cbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQge0ZpZGpTdG9yYWdlLCBGaWRqU3RvcmFnZU5vZGV9IGZyb20gJy4vZmlkai1zdG9yYWdlLm1vZGVsJztcbmltcG9ydCB7RXJyb3JJbnRlcmZhY2UsIEZpZGpTZXJ2aWNlLCBMb2dnZXJMZXZlbEVudW19IGZyb20gJ2ZpZGotYW5ndWxhcic7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi94eXR5cGUnO1xuaW1wb3J0IHtHYXVnZU5vZGVGaWx0ZXJ9IGZyb20gJy4vdG9vbHMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWR5Rm9yU3luYzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaWMgYXNUZWFtSWQ6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgZW1haWw6IHN0cmluZztcbiAgcHJvdGVjdGVkIGlzRGVtbzogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJvbGVzOiBBcnJheTxzdHJpbmc+O1xuICBwcm90ZWN0ZWQgbm9kZURhdGE6IEZpZGpTdG9yYWdlTm9kZTtcbiAgcHJvdGVjdGVkIGZpZGpTdG9yYWdlOiBGaWRqU3RvcmFnZTtcbiAgcHJvdGVjdGVkIGhhdmVUcnlUb1JlY29ubmVjdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGZpZGpTZXJ2aWNlOiBGaWRqU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsKSB7XG4gICAgdGhpcy5lbWFpbCA9IHRoaXMuc3RvcmFnZS5nZXQoJ2VtYWlsJykgfHwgbnVsbDtcbiAgICB0aGlzLmFzVGVhbUlkID0gdGhpcy5zdG9yYWdlLmdldCgnYXNUZWFtSWQnKSB8fCBudWxsO1xuICAgIHRoaXMucmVhZHlGb3JTeW5jID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5yb2xlcyA9IFtdO1xuICAgIHRoaXMuZmlkalN0b3JhZ2UgPSBuZXcgRmlkalN0b3JhZ2Uoc3RvcmFnZSk7XG4gICAgdGhpcy5pc0RlbW9Nb2RlID0gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNEZW1vTW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0RlbW87XG4gIH1cblxuICBzZXQgaXNEZW1vTW9kZShtb2RlKSB7XG4gICAgdGhpcy5pc0RlbW8gPSBtb2RlID8gbW9kZSA6IHRydWU7XG4gICAgdGhpcy5maWRqU3RvcmFnZS5zZXREZW1vTW9kZSh0aGlzLmlzRGVtbyk7XG4gIH1cblxuICBnZXQgZGVmYXVsdFVybEZvckFQSSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldCgnVXJsRm9yQVBJJyk7XG4gIH1cblxuICBzZXQgZGVmYXVsdFVybEZvckFQSSh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmFnZS5zZXQoJ1VybEZvckFQSScsIHVybCk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoUHJvZmlsZSgpOiBQcm9taXNlPEZpZGpTdG9yYWdlTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLm5vZGVEYXRhID0gYXdhaXQgdGhpcy5maWRqU3RvcmFnZS5nZXRSZWZyZXNoZWROb2RlQ29weSh0aGlzLmZpZGpTZXJ2aWNlKTtcbiAgICAgIHRoaXMuc2V0Um9sZXMoYXdhaXQgdGhpcy5maWRqU2VydmljZS5nZXRSb2xlcygpKTtcbiAgICAgIHJldHVybiB0aGlzLm5vZGVEYXRhO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBnZXRFbWFpbCgpIHtcbiAgICBsZXQgZW1haWwgPSB0aGlzLmVtYWlsO1xuICAgIGVtYWlsID0gZW1haWwgfHwgdGhpcy5zdG9yYWdlLmdldCgnZW1haWwnKTtcbiAgICByZXR1cm4gZW1haWw7XG4gIH1cblxuICBzZXRFbWFpbChlbWFpbDogc3RyaW5nKSB7XG4gICAgdGhpcy5lbWFpbCA9IGVtYWlsO1xuICAgIHRoaXMuc3RvcmFnZS5zZXQoJ2VtYWlsJywgdGhpcy5lbWFpbCk7XG4gIH1cblxuICBhc3luYyBsb2dvdXQoZmlkaktleTogc3RyaW5nLCBmaWRqUHJvZDogYm9vbGVhbikge1xuXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZSgnZW1haWwnKTtcbiAgICBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLmxvZ291dCh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLmluaXQoZmlkaktleSxcbiAgICAgICAge1xuICAgICAgICAgIGxvZ0xldmVsOiBmaWRqUHJvZCA/IExvZ2dlckxldmVsRW51bS5XQVJOIDogTG9nZ2VyTGV2ZWxFbnVtLklORk8sXG4gICAgICAgICAgY3J5cHRvOiBmYWxzZSxcbiAgICAgICAgICBwcm9kOiBmaWRqUHJvZCxcbiAgICAgICAgICB1c2VEQjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5yZWFkeUZvclN5bmMubmV4dCh0cnVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2luaXRGaWRqIGNhdGNoIHBiOiAnLCBlcnIpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgY2hlY2tFcnJvcihlcnJvcjogRXJyb3JJbnRlcmZhY2UpIHtcbiAgICBpZiAoZXJyb3IuY29kZSA9PT0gNDAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1BiIG9uIGF1dGgnKTtcbiAgICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5kZXhPZignbG9naW4nKSA8IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ290b0xvdXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBnb3RvTG91dCgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJ2xvZ2luJykgPiAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbG9nb3V0Jywge3NraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZX0pO1xuICB9XG5cbiAgYXN5bmMgZ290b0xvZ2luKCkge1xuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5kZXhPZignbG9naW4nKSA+IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7c2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlfSk7XG4gICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XG4gIH1cblxuICBpc0xvZ2dlZEluKCkge1xuICAgIHJldHVybiB0aGlzLmZpZGpTZXJ2aWNlLmlzTG9nZ2VkSW4oKTtcbiAgfVxuXG4gIGFzeW5jIHN0b3JlQWxsKCkge1xuICAgIHJldHVybiB0aGlzLmZpZGpTdG9yYWdlLnN0b3JlRGF0YSh0aGlzLmZpZGpTZXJ2aWNlLCB0aGlzLm5vZGVEYXRhKTtcbiAgfVxuXG4gIGlzQWRtaW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm9sZXMuaW5kZXhPZignYWRtaW4nKSA+IC0xO1xuICB9XG5cbiAgLy8gPT09IE5vdGlmaWNhdGlvbnMgPT09XG5cbiAgYXN5bmMgY3JlYXRlTm90aWZpY2F0aW9uKHJhaW5JZDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdub3RpZmljYXRpb25zJyxcbiAgICAgICAgdmVyYjogJ1BPU1QnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL25vdGlmaWNhdGlvbnMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmFpbjogcmFpbklkLFxuICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgRXZlbnROb2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZ2V0Tm90aWZpY2F0aW9ucyhyYWluSWQ6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcmdzID0gJz9yYWluPScgKyByYWluSWQ7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ25vdGlmaWNhdGlvbnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBhcmdzLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL25vdGlmaWNhdGlvbnMnLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXNwLmRhdGEubm90aWZpY2F0aW9ucy5tYXAobiA9PiBuZXcgRXZlbnROb2RlKG4pKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBnZXRBbGxOb3RpZmljYXRpb25zKCk6IFByb21pc2U8RXZlbnROb2RlW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdub3RpZmljYXRpb25zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvbm90aWZpY2F0aW9ucycsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3AuZGF0YS5ub3RpZmljYXRpb25zLm1hcChuID0+IG5ldyBFdmVudE5vZGUobikpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyA9PT0gVGVhbXMgPT09XG5cbiAgYXN5bmMgZ2V0VGVhbXMoKTogUHJvbWlzZTxBcnJheTxUZWFtTm9kZT4+IHtcbiAgICBjb25zdCB0ZWFtcyA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3RlYW1zX2FsbCcsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3RlYW1zX2FsbCdcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCB0ZWFtIG9mIHJlc3AuZGF0YS50ZWFtcykge1xuICAgICAgICB0ZWFtcy5wdXNoKG5ldyBUZWFtTm9kZSh0ZWFtKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGVhbXM7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtKHRlYW1JZDogc3RyaW5nKTogUHJvbWlzZTxUZWFtTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3RlYW1zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogdGVhbUlkLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3RlYW1zJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFRlYW1Ob2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gPT09IFJhZGFycyA9PT1cblxuICBhc3luYyBnZXRSYWRhcnModGVhbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFJhZGFyTm9kZT4+IHtcbiAgICBjb25zdCByYWRhcnMgPSBbXTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycycgKyAodGVhbUlkID8gJz90ZWFtSWQ9JyArIHRlYW1JZCA6ICcnKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWRhcnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdXJsLFxuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHIgb2YgcmVzcC5kYXRhLnJhZGFycykge1xuICAgICAgICBjb25zdCByYWRhciA9IG5ldyBSYWRhck5vZGUocik7XG4gICAgICAgIHJhZGFycy5wdXNoKHJhZGFyKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiByYWRhcnM7XG4gIH1cblxuICBhc3luYyBnZXRSYWRhcihpZDogc3RyaW5nKTogUHJvbWlzZTxSYWRhck5vZGU+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWRhcnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBpZCxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWRhcnMnXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUmFkYXJOb2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcHV0UmFkYXIocmFkYXJOb2RlOiBSYWRhck5vZGUsIGNvbmZpZ3VyYXRpb25Bc0pTT04/OiBhbnkpOiBQcm9taXNlPFJhZGFyTm9kZT4ge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBuYW1lOiByYWRhck5vZGUubmFtZSxcbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb25Bc0pTT04pIHtcbiAgICAgIGRhdGFbJ2NvbmZpZ3VyYXRpb25Bc0pTT04nXSA9IGNvbmZpZ3VyYXRpb25Bc0pTT047XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFkYXJzJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiByYWRhck5vZGUuaWQsXG4gICAgICAgIHZlcmI6ICdQVVQnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycy8nXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG5ldyBSYWRhck5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0TG9uZWx5UmFkYXJzKHJhaW5zOiBSYWluTm9kZVtdKTogUHJvbWlzZTxSYWRhck5vZGVbXT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhZGFycycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycydcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbG9uZWx5UmFkYXJzOiBSYWRhck5vZGVbXSA9IFtdO1xuICAgICAgY29uc3QgcmFkYXJzID0gcmVzcC5kYXRhLnJhZGFycztcbiAgICAgIHJhZGFycy5mb3JFYWNoKHJhZGFyID0+IHtcbiAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICAgIHJhaW5zLmZvckVhY2gocmFpbiA9PiB7XG4gICAgICAgICAgY29uc3QgcmRJZCA9IHJhaW4uZ2V0TGlua0lkKCdyYWRhcicsIDApO1xuICAgICAgICAgIGlmIChyZElkID09PSByYWRhci5pZCkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICBsb25lbHlSYWRhcnMucHVzaChyYWRhcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGxvbmVseVJhZGFycztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGFzeW5jIGdldFJhaW5UaW1lZnJhbWUocmFpbklkOiBzdHJpbmcsIGJlZ2luOiBEYXRlLCBlbmQ6IERhdGUsIGZvcmNlZCA9IGZhbHNlKTogUHJvbWlzZTxSYWluTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBsZXQgcXVlcnlQYXRoID0gJycgKyByYWluSWQgKyAnP2Zvcm1hdD10aW1lZnJhbWUnO1xuICAgICAgaWYgKGJlZ2luKSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnJmJlZ2luPScgKyBiZWdpbi50b0lTT1N0cmluZygpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCkge1xuICAgICAgICBxdWVyeVBhdGggKz0gJyZlbmQ9JyArIGVuZC50b0lTT1N0cmluZygpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcmNlZCkge1xuICAgICAgICBxdWVyeVBhdGggKz0gJyZmb3JjZWQ9dHJ1ZSc7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogcXVlcnlQYXRoLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJ1xuICAgICAgfSk7XG4gICAgICBjb25zdCByYWluTm9kZSA9IG5ldyBSYWluTm9kZShyZXNwLmRhdGEudGltZWZyYW1lKTtcbiAgICAgIHJhaW5Ob2RlLm5hbWUgKz0gJy5yYWRhci50aW1lZnJhbWUnO1xuICAgICAgcmV0dXJuIHJhaW5Ob2RlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyA9PT0gUmFpbnMgPT09XG5cbiAgYXN5bmMgZ2V0UmFpbnModGVhbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFJhaW5Ob2RlPj4ge1xuICAgIGNvbnN0IHJhaW5zID0gW107XG4gICAgY29uc3QgdXJsID0gdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucycgKyAodGVhbUlkID8gJz90ZWFtSWQ9JyArIHRlYW1JZCA6ICcnKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWlucycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB1cmwsXG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgcmFpbiBvZiByZXNwLmRhdGEucmFpbnMpIHtcbiAgICAgICAgcmFpbnMucHVzaChuZXcgUmFpbk5vZGUocmFpbikpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhaW5zO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpbihpZDogc3RyaW5nKTogUHJvbWlzZTxSYWluTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBpZCxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMvJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFJhaW5Ob2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vID09PSBDb3VudFxuXG4gIGFzeW5jIGdldENvdW50cyhyYWluSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgIHBlcmlvZEJlZ2luPzogRGF0ZSxcbiAgICAgICAgICAgICAgICAgIHBlcmlvZEVuZD86IERhdGUsXG4gICAgICAgICAgICAgICAgICB3aXRoUXVhbGl0aWVzPzogYm9vbGVhbik6IFByb21pc2U8e1xuICAgIHJhZGFyTWVhc3VyZXM6IFhZVHlwZVtdLFxuICAgIGdhdWdlTWVhc3VyZXM6IFhZVHlwZVtdLFxuICAgIGNvbXB1dGF0aW9uc0J5VGVhbTogWFlUeXBlW10sXG4gICAgY29tcHV0YXRpb25zSW50ZXJuYWw6IFhZVHlwZVtdLFxuICB9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgbGV0IGFyZ3MgPSAnJztcbiAgICAgIGlmIChwZXJpb2RCZWdpbiAmJiBwZXJpb2RFbmQpIHtcbiAgICAgICAgYXJncyA9ICc/cGVyaW9kQmVnaW49JyArIHBlcmlvZEJlZ2luLnRvSVNPU3RyaW5nKCkgKyAnJnBlcmlvZEVuZD0nICsgcGVyaW9kRW5kLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICBpZiAod2l0aFF1YWxpdGllcykge1xuICAgICAgICBhcmdzICs9ICcmd2l0aFF1YWxpdGllcz0nICsgd2l0aFF1YWxpdGllcztcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWlucycsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogcmFpbklkICsgJy9jb3VudHMnICsgYXJncyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMvJyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb3VudHMgPSByZXNwLmRhdGEuY291bnRzO1xuICAgICAgY29uc3QgcmFkYXJNZWFzdXJlczogWFlUeXBlW10gPSBbXSxcbiAgICAgICAgZ2F1Z2VNZWFzdXJlczogWFlUeXBlW10gPSBbXSxcbiAgICAgICAgY29tcHV0YXRpb25zQnlUZWFtOiBYWVR5cGVbXSA9IFtdLFxuICAgICAgICBjb21wdXRhdGlvbnNJbnRlcm5hbDogWFlUeXBlW10gPSBbXTtcblxuICAgICAgY291bnRzLmZvckVhY2goYyA9PiB7XG4gICAgICAgIHJhZGFyTWVhc3VyZXMucHVzaChuZXcgWFlUeXBlKDEsIE5hTiwgTmFOLCBjLl9pZCkpO1xuICAgICAgICBnYXVnZU1lYXN1cmVzLnB1c2gobmV3IFhZVHlwZShjLmdhdWdlTWVhc3VyZXMsIE5hTiwgTmFOLCBjLl9pZCkpO1xuICAgICAgICBjb21wdXRhdGlvbnNCeVRlYW0ucHVzaChuZXcgWFlUeXBlKGMuY29tcHV0YXRpb25zQnlUZWFtLCBOYU4sIE5hTiwgYy5faWQpKTtcbiAgICAgICAgY29tcHV0YXRpb25zSW50ZXJuYWwucHVzaChuZXcgWFlUeXBlKGMuY29tcHV0YXRpb25zSW50ZXJuYWwsIE5hTiwgTmFOLCBjLl9pZCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJhZGFyTWVhc3VyZXMsXG4gICAgICAgIGdhdWdlTWVhc3VyZXMsXG4gICAgICAgIGNvbXB1dGF0aW9uc0J5VGVhbSxcbiAgICAgICAgY29tcHV0YXRpb25zSW50ZXJuYWwsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyA9PT0gQ29tcHV0aW5nID09PVxuXG4gIGFzeW5jIGxhdW5jaFJhaW5Db21wdXRhdGlvbihyYWluSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6IERhdGUpOiBQcm9taXNlPFJhaW5Db21wdXRhdGlvbltdPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgIHZlcmI6ICdQT1NUJyxcbiAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgIHJlbGF0aXZlUGF0aDogJycgKyByYWluSWQgKyAnL2NvbXB1dGF0aW9ucycsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGRhdGU6IGRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJ1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuY29tcHV0YXRpb25zPy5tYXAoYyA9PiBuZXcgUmFpbkNvbXB1dGF0aW9uKGMpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFJhaW5Db21wdXRhdGlvbkNhcnRlc2lhbk1hcEJ5SWQocmFpbklkOiBzdHJpbmcsIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJhaW5Db21wdXRhdGlvbk1hcD4ge1xuICAgIGNvbnN0IHF1ZXJ5UGF0aCA9ICcnICsgcmFpbklkICsgJy9jb21wdXRhdGlvbnMvJyArIHJhaW5Db21wdXRhdGlvbklkICsgJz9mb3JtYXQ9Y2FydGVzaWFuLW1hcCc7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJ1xuICAgIH0pO1xuICAgIGlmICghcmVzcG9uc2UuZGF0YVsnY2FydGVzaWFuLW1hcCddKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByYWluQ29tcHV0YXRpb25NYXAgPSBuZXcgUmFpbkNvbXB1dGF0aW9uTWFwKHJlc3BvbnNlLmRhdGFbJ2NhcnRlc2lhbi1tYXAnXSk7XG4gICAgcmFpbkNvbXB1dGF0aW9uTWFwLm5hbWUgPSByYWluSWQgKyAnLnJhaW4uY2FydGVzaWFuLW1hcCc7XG4gICAgcmV0dXJuIHJhaW5Db21wdXRhdGlvbk1hcDtcbiAgfVxuXG4gIGFzeW5jIGdldFJhaW5Db21wdXRhdGlvbkN1bXVsYXRpdmVNYXBCeUlkKHJhaW5JZDogc3RyaW5nLCByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxSYWluQ29tcHV0YXRpb25NYXA+IHtcbiAgICBjb25zdCBxdWVyeVBhdGggPSAnJyArIHJhaW5JZCArICcvY29tcHV0YXRpb25zLycgKyByYWluQ29tcHV0YXRpb25JZCArICcvY3VtdWxhdGl2ZS8xJztcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnXG4gICAgfSk7XG4gICAgaWYgKCFyZXNwb25zZS5kYXRhWydjdW11bGF0aXZlJ10pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJhaW5Db21wdXRhdGlvbk1hcCA9IG5ldyBSYWluQ29tcHV0YXRpb25NYXAocmVzcG9uc2UuZGF0YVsnY3VtdWxhdGl2ZSddKTtcbiAgICByYWluQ29tcHV0YXRpb25NYXAubmFtZSA9IHJhaW5JZCArICcucmFpbi5jdW11bGF0aXZlJztcbiAgICByZXR1cm4gcmFpbkNvbXB1dGF0aW9uTWFwO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpbkNvbXBhcmVzKHJhaW5JZDogc3RyaW5nLCByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx7IGlkOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZyB9W10+IHtcbiAgICBjb25zdCBxdWVyeVBhdGggPSAnJyArIHJhaW5JZCArICcvY29tcHV0YXRpb25zLycgKyByYWluQ29tcHV0YXRpb25JZDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnLFxuICAgICAgLy8gdGltZW91dDogMjAwMDAwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmFpbkNvbXB1dGF0aW9uID0gbmV3IFJhaW5Db21wdXRhdGlvbihyZXNwb25zZS5kYXRhKTtcbiAgICBjb25zdCBsaW5rcyA9IHJhaW5Db21wdXRhdGlvbi5nZXRMaW5rcygpO1xuICAgIGNvbnN0IHJhaW5Db21wdXRhdGlvblF1YWxpdGllcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgaWYgKGxpbmsucmVsID09PSAncmFpbi1jb21wdXRhdGlvbi1xdWFsaXR5Jykge1xuICAgICAgICBjb25zdCBpZCA9IGxpbmsuZ2V0SWQoKTtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IGxpbmsuaHJlZi5zdWJzdHJpbmcobGluay5ocmVmLmluZGV4T2YoJ3ZlcnNpb24vJykgKyA4LCBsaW5rLmhyZWYuaW5kZXhPZignLycgKyBpZCkpO1xuICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXMucHVzaCh7aWQsIHZlcnNpb259KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJhaW5Db21wdXRhdGlvblF1YWxpdGllcztcbiAgfVxuXG4gIGFzeW5jIGdldFJhaW5Db21wYXJlQnlJZChyYWluSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyk6IFByb21pc2U8UmFpbkNvbXB1dGF0aW9uUXVhbGl0eT4ge1xuICAgIGNvbnN0IHF1ZXJ5UGF0aCA9ICcnICsgcmFpbklkICsgJy9jb21wdXRhdGlvbnMvJyArIHJhaW5Db21wdXRhdGlvbklkICsgJy9jb21wYXJlcy8nICsgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICBrZXk6ICdyYWlucycsXG4gICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgIHJlbGF0aXZlUGF0aDogcXVlcnlQYXRoLFxuICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucycsXG4gICAgfSk7XG5cbiAgICBjb25zdCByYWluQ29tcHV0YXRpb25RdWFsaXR5ID0gbmV3IFJhaW5Db21wdXRhdGlvblF1YWxpdHkocmVzcG9uc2UuZGF0YSk7XG4gICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eS5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIgPSBTcGVlZE1hdHJpeENvbnRhaW5lclxuICAgICAgLkNyZWF0ZUZyb21Kc29uKHJhaW5Db21wdXRhdGlvblF1YWxpdHkucXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyKTtcbiAgICByZXR1cm4gcmFpbkNvbXB1dGF0aW9uUXVhbGl0eTtcbiAgfVxuXG4gIC8vID09PSBHYXVnZXMgPT09XG5cbiAgYXN5bmMgZ2V0R2F1Z2UoZ2F1Z2VJZDogc3RyaW5nKTogUHJvbWlzZTxHYXVnZU5vZGU+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdnYXVnZXMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBnYXVnZUlkLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL2dhdWdlcydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBHYXVnZU5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0R2F1Z2VzKHJhaW5JZD86IHN0cmluZyk6IFByb21pc2U8QXJyYXk8R2F1Z2VOb2RlRmlsdGVyPj4ge1xuICAgIGxldCBxdWVyeVBhdGggPSAnJztcbiAgICBpZiAodGhpcy5hc1RlYW1JZCkge1xuICAgICAgcXVlcnlQYXRoICs9ICc/dGVhbUlkPScgKyB0aGlzLmFzVGVhbUlkO1xuICAgIH1cbiAgICBpZiAocmFpbklkKSB7XG4gICAgICBpZiAocXVlcnlQYXRoKSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnJic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWVyeVBhdGggKz0gJz8nO1xuICAgICAgfVxuICAgICAgcXVlcnlQYXRoICs9ICdyYWluSWQ9JyArIHJhaW5JZDtcbiAgICB9XG5cbiAgICBjb25zdCBnYXVnZXMgPSBbXTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdnYXVnZXMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvZ2F1Z2VzJ1xuICAgICAgfSk7XG5cbiAgICAgIGZvciAoY29uc3QgZ2F1Z2Ugb2YgcmVzcC5kYXRhLmdhdWdlcykge1xuICAgICAgICBnYXVnZXMucHVzaChuZXcgR2F1Z2VOb2RlRmlsdGVyKGdhdWdlKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gZ2F1Z2VzO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2F1Z2VNZWFzdXJlcyhnYXVnZUlkOiBzdHJpbmcsIGJlZ2luOiBEYXRlLCBlbmQ6IERhdGUpOiBQcm9taXNlPEdhdWdlTWVhc3VyZVtdPiB7XG4gICAgY29uc3QgcXVlcnlQYXRoID0gJycgKyBnYXVnZUlkICsgJy9tZWFzdXJlcz9iZWdpbj0nICsgYmVnaW4udG9JU09TdHJpbmcoKSArICcmZW5kPScgKyBlbmQudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICBrZXk6ICdnYXVnZXMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvZ2F1Z2VzJ1xuICAgIH0pO1xuXG4gICAgY29uc3QgZ2F1Z2VNZWFzdXJlczogR2F1Z2VNZWFzdXJlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGdhdWdlTWVhc3VyZSBvZiByZXNwLmRhdGEuZ2F1Z2VNZWFzdXJlcykge1xuICAgICAgZ2F1Z2VNZWFzdXJlcy5wdXNoKG5ldyBHYXVnZU1lYXN1cmUoZ2F1Z2VNZWFzdXJlKSk7XG4gICAgfVxuICAgIHJldHVybiBnYXVnZU1lYXN1cmVzO1xuICB9XG5cbiAgLy8gPT09IFByaXZhdGUgPT09XG5cbiAgcHJvdGVjdGVkIHNldFJvbGVzKHJvbGVzOiBBcnJheTxzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5yb2xlcyA9IHJvbGVzO1xuICB9XG5cbn1cbiJdfQ==
519
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9zaGFyZWQvcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsUUFBUSxFQUNULE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBQyxXQUFXLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUE4QixlQUFlLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sU0FBUyxDQUFDOzs7Ozs7QUFNeEMsTUFBTSxPQUFPLGNBQWM7SUFXekIsWUFBc0IsT0FBZ0IsRUFDaEIsV0FBd0IsRUFDeEIsVUFBc0IsRUFDeEIsTUFBYztRQUhaLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxl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QUM7UUFFSCxNQUFNLGFBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEQsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQ3BEO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELGtCQUFrQjtJQUVSLFFBQVEsQ0FBQyxLQUFvQjtRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDOzs0R0ExakJVLGNBQWM7Z0hBQWQsY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBFdmVudE5vZGUsXG4gIEdhdWdlTWVhc3VyZSxcbiAgR2F1Z2VOb2RlLFxuICBSYWRhck5vZGUsXG4gIFJhaW5Db21wdXRhdGlvbixcbiAgUmFpbkNvbXB1dGF0aW9uTWFwLFxuICBSYWluQ29tcHV0YXRpb25RdWFsaXR5LFxuICBSYWluTm9kZSxcbiAgU3BlZWRNYXRyaXhDb250YWluZXIsXG4gIFRlYW1Ob2RlXG59IGZyb20gJ3JhYWluLW1vZGVsJztcblxuaW1wb3J0IHtTdG9yYWdlfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7RmlkalN0b3JhZ2UsIEZpZGpTdG9yYWdlTm9kZX0gZnJvbSAnLi9maWRqLXN0b3JhZ2UubW9kZWwnO1xuaW1wb3J0IHtFcnJvckludGVyZmFjZSwgRmlkalNlcnZpY2UsIExvZ2dlckxldmVsRW51bX0gZnJvbSAnZmlkai1hbmd1bGFyJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuL3h5dHlwZSc7XG5pbXBvcnQge0dhdWdlTm9kZUZpbHRlcn0gZnJvbSAnLi90b29scyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZHlGb3JTeW5jOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyBhc1RlYW1JZDogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBlbWFpbDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgaXNEZW1vOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgcm9sZXM6IEFycmF5PHN0cmluZz47XG4gIHByb3RlY3RlZCBub2RlRGF0YTogRmlkalN0b3JhZ2VOb2RlO1xuICBwcm90ZWN0ZWQgZmlkalN0b3JhZ2U6IEZpZGpTdG9yYWdlO1xuICBwcm90ZWN0ZWQgaGF2ZVRyeVRvUmVjb25uZWN0OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yYWdlOiBTdG9yYWdlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgZmlkalNlcnZpY2U6IEZpZGpTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwpIHtcbiAgICB0aGlzLmVtYWlsID0gdGhpcy5zdG9yYWdlLmdldCgnZW1haWwnKSB8fCBudWxsO1xuICAgIHRoaXMuYXNUZWFtSWQgPSB0aGlzLnN0b3JhZ2UuZ2V0KCdhc1RlYW1JZCcpIHx8IG51bGw7XG4gICAgdGhpcy5yZWFkeUZvclN5bmMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnJvbGVzID0gW107XG4gICAgdGhpcy5maWRqU3RvcmFnZSA9IG5ldyBGaWRqU3RvcmFnZShzdG9yYWdlKTtcbiAgICB0aGlzLmlzRGVtb01vZGUgPSBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc0RlbW9Nb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGVtbztcbiAgfVxuXG4gIHNldCBpc0RlbW9Nb2RlKG1vZGUpIHtcbiAgICB0aGlzLmlzRGVtbyA9IG1vZGUgPyBtb2RlIDogdHJ1ZTtcbiAgICB0aGlzLmZpZGpTdG9yYWdlLnNldERlbW9Nb2RlKHRoaXMuaXNEZW1vKTtcbiAgfVxuXG4gIGdldCBkZWZhdWx0VXJsRm9yQVBJKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0KCdVcmxGb3JBUEknKTtcbiAgfVxuXG4gIHNldCBkZWZhdWx0VXJsRm9yQVBJKHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yYWdlLnNldCgnVXJsRm9yQVBJJywgdXJsKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hQcm9maWxlKCk6IFByb21pc2U8RmlkalN0b3JhZ2VOb2RlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubm9kZURhdGEgPSBhd2FpdCB0aGlzLmZpZGpTdG9yYWdlLmdldFJlZnJlc2hlZE5vZGVDb3B5KHRoaXMuZmlkalNlcnZpY2UpO1xuICAgICAgdGhpcy5zZXRSb2xlcyhhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLmdldFJvbGVzKCkpO1xuICAgICAgcmV0dXJuIHRoaXMubm9kZURhdGE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVtYWlsKCkge1xuICAgIGxldCBlbWFpbCA9IHRoaXMuZW1haWw7XG4gICAgZW1haWwgPSBlbWFpbCB8fCB0aGlzLnN0b3JhZ2UuZ2V0KCdlbWFpbCcpO1xuICAgIHJldHVybiBlbWFpbDtcbiAgfVxuXG4gIHNldEVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVtYWlsID0gZW1haWw7XG4gICAgdGhpcy5zdG9yYWdlLnNldCgnZW1haWwnLCB0aGlzLmVtYWlsKTtcbiAgfVxuXG4gIGFzeW5jIGxvZ291dChmaWRqS2V5OiBzdHJpbmcsIGZpZGpQcm9kOiBib29sZWFuKSB7XG5cbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCdlbWFpbCcpO1xuICAgIGF3YWl0IHRoaXMuZmlkalNlcnZpY2UubG9nb3V0KHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZmlkalNlcnZpY2UuaW5pdChmaWRqS2V5LFxuICAgICAgICB7XG4gICAgICAgICAgbG9nTGV2ZWw6IGZpZGpQcm9kID8gTG9nZ2VyTGV2ZWxFbnVtLldBUk4gOiBMb2dnZXJMZXZlbEVudW0uSU5GTyxcbiAgICAgICAgICBjcnlwdG86IGZhbHNlLFxuICAgICAgICAgIHByb2Q6IGZpZGpQcm9kLFxuICAgICAgICAgIHVzZURCOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLnJlYWR5Rm9yU3luYy5uZXh0KHRydWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignaW5pdEZpZGogY2F0Y2ggcGI6ICcsIGVycik7XG4gICAgfVxuXG4gIH1cblxuICBhc3luYyBjaGVja0Vycm9yKGVycm9yOiBFcnJvckludGVyZmFjZSkge1xuICAgIGlmIChlcnJvci5jb2RlID09PSA0MDEpIHtcbiAgICAgIGNvbnNvbGUud2FybignUGIgb24gYXV0aCcpO1xuICAgICAgaWYgKHRoaXMucm91dGVyLnVybC5pbmRleE9mKCdsb2dpbicpIDwgMCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuZmlkalNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nb3RvTG91dCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdvdG9Mb3V0KCkge1xuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5kZXhPZignbG9naW4nKSA+IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9sb2dvdXQnLCB7c2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlfSk7XG4gIH1cblxuICBhc3luYyBnb3RvTG9naW4oKSB7XG4gICAgaWYgKHRoaXMucm91dGVyLnVybC5pbmRleE9mKCdsb2dpbicpID4gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycsIHtza2lwTG9jYXRpb25DaGFuZ2U6IHRydWV9KTtcbiAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddKTtcbiAgfVxuXG4gIGlzTG9nZ2VkSW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlkalNlcnZpY2UuaXNMb2dnZWRJbigpO1xuICB9XG5cbiAgYXN5bmMgc3RvcmVBbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlkalN0b3JhZ2Uuc3RvcmVEYXRhKHRoaXMuZmlkalNlcnZpY2UsIHRoaXMubm9kZURhdGEpO1xuICB9XG5cbiAgaXNBZG1pbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlcy5pbmRleE9mKCdhZG1pbicpID4gLTE7XG4gIH1cblxuICAvLyA9PT0gTm90aWZpY2F0aW9ucyA9PT1cblxuICBhc3luYyBjcmVhdGVOb3RpZmljYXRpb24ocmFpbklkOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ25vdGlmaWNhdGlvbnMnLFxuICAgICAgICB2ZXJiOiAnUE9TVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvbm90aWZpY2F0aW9ucycsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByYWluOiByYWluSWQsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBFdmVudE5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBnZXROb3RpZmljYXRpb25zKHJhaW5JZDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFyZ3MgPSAnP3JhaW49JyArIHJhaW5JZDtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAnbm90aWZpY2F0aW9ucycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICByZWxhdGl2ZVBhdGg6IGFyZ3MsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvbm90aWZpY2F0aW9ucycsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3AuZGF0YS5ub3RpZmljYXRpb25zLm1hcChuID0+IG5ldyBFdmVudE5vZGUobikpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldEFsbE5vdGlmaWNhdGlvbnMoKTogUHJvbWlzZTxFdmVudE5vZGVbXT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ25vdGlmaWNhdGlvbnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9ub3RpZmljYXRpb25zJyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzcC5kYXRhLm5vdGlmaWNhdGlvbnMubWFwKG4gPT4gbmV3IEV2ZW50Tm9kZShuKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vID09PSBUZWFtcyA9PT1cblxuICBhc3luYyBnZXRUZWFtcygpOiBQcm9taXNlPEFycmF5PFRlYW1Ob2RlPj4ge1xuICAgIGNvbnN0IHRlYW1zID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAndGVhbXNfYWxsJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvdGVhbXNfYWxsJ1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHRlYW0gb2YgcmVzcC5kYXRhLnRlYW1zKSB7XG4gICAgICAgIHRlYW1zLnB1c2gobmV3IFRlYW1Ob2RlKHRlYW0pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiB0ZWFtcztcbiAgfVxuXG4gIGFzeW5jIGdldFRlYW0odGVhbUlkOiBzdHJpbmcpOiBQcm9taXNlPFRlYW1Ob2RlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAndGVhbXMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiB0ZWFtSWQsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvdGVhbXMnXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgVGVhbU5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyA9PT0gUmFkYXJzID09PVxuXG4gIGFzeW5jIGdldFJhZGFycyh0ZWFtSWQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8UmFkYXJOb2RlPj4ge1xuICAgIGNvbnN0IHJhZGFycyA9IFtdO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFkYXJzJyArICh0ZWFtSWQgPyAnP3RlYW1JZD0nICsgdGVhbUlkIDogJycpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhZGFycycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB1cmwsXG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgciBvZiByZXNwLmRhdGEucmFkYXJzKSB7XG4gICAgICAgIGNvbnN0IHJhZGFyID0gbmV3IFJhZGFyTm9kZShyKTtcbiAgICAgICAgcmFkYXJzLnB1c2gocmFkYXIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhZGFycztcbiAgfVxuXG4gIGFzeW5jIGdldFJhZGFyKGlkOiBzdHJpbmcpOiBQcm9taXNlPFJhZGFyTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhZGFycycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICByZWxhdGl2ZVBhdGg6IGlkLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycydcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBSYWRhck5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBwdXRSYWRhcihyYWRhck5vZGU6IFJhZGFyTm9kZSk6IFByb21pc2U8UmFkYXJOb2RlPiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIG5hbWU6IHJhZGFyTm9kZS5uYW1lLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWRhcnMnLFxuICAgICAgICByZWxhdGl2ZVBhdGg6IHJhZGFyTm9kZS5pZCxcbiAgICAgICAgdmVyYjogJ1BVVCcsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFkYXJzLydcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IFJhZGFyTm9kZShyZXNwLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRMb25lbHlSYWRhcnMocmFpbnM6IFJhaW5Ob2RlW10pOiBQcm9taXNlPFJhZGFyTm9kZVtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFkYXJzJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFkYXJzJ1xuICAgICAgfSk7XG4gICAgICBjb25zdCBsb25lbHlSYWRhcnM6IFJhZGFyTm9kZVtdID0gW107XG4gICAgICBjb25zdCByYWRhcnMgPSByZXNwLmRhdGEucmFkYXJzO1xuICAgICAgcmFkYXJzLmZvckVhY2gocmFkYXIgPT4ge1xuICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgcmFpbnMuZm9yRWFjaChyYWluID0+IHtcbiAgICAgICAgICBjb25zdCByZElkID0gcmFpbi5nZXRMaW5rSWQoJ3JhZGFyJywgMCk7XG4gICAgICAgICAgaWYgKHJkSWQgPT09IHJhZGFyLmlkKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgIGxvbmVseVJhZGFycy5wdXNoKHJhZGFyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbG9uZWx5UmFkYXJzO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpblRpbWVmcmFtZShyYWluSWQ6IHN0cmluZywgYmVnaW46IERhdGUsIGVuZDogRGF0ZSwgZm9yY2VkID0gZmFsc2UpOiBQcm9taXNlPFJhaW5Ob2RlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBxdWVyeVBhdGggPSAnJyArIHJhaW5JZCArICc/Zm9ybWF0PXRpbWVmcmFtZSc7XG4gICAgICBpZiAoYmVnaW4pIHtcbiAgICAgICAgcXVlcnlQYXRoICs9ICcmYmVnaW49JyArIGJlZ2luLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kKSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnJmVuZD0nICsgZW5kLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICBpZiAoZm9yY2VkKSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnJmZvcmNlZD10cnVlJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJhaW5Ob2RlID0gbmV3IFJhaW5Ob2RlKHJlc3AuZGF0YS50aW1lZnJhbWUpO1xuICAgICAgcmFpbk5vZGUubmFtZSArPSAnLnJhZGFyLnRpbWVmcmFtZSc7XG4gICAgICByZXR1cm4gcmFpbk5vZGU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vID09PSBSYWlucyA9PT1cblxuICBhc3luYyBnZXRSYWlucyh0ZWFtSWQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8UmFpbk5vZGU+PiB7XG4gICAgY29uc3QgcmFpbnMgPSBbXTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJyArICh0ZWFtSWQgPyAnP3RlYW1JZD0nICsgdGVhbUlkIDogJycpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHVybCxcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCByYWluIG9mIHJlc3AuZGF0YS5yYWlucykge1xuICAgICAgICByYWlucy5wdXNoKG5ldyBSYWluTm9kZShyYWluKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmFpbnM7XG4gIH1cblxuICBhc3luYyBnZXRSYWluKGlkOiBzdHJpbmcpOiBQcm9taXNlPFJhaW5Ob2RlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgICByZWxhdGl2ZVBhdGg6IGlkLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucy8nXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUmFpbk5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gPT09IENvdW50XG5cbiAgYXN5bmMgZ2V0Q291bnRzKHJhaW5JZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgcGVyaW9kQmVnaW4/OiBEYXRlLFxuICAgICAgICAgICAgICAgICAgcGVyaW9kRW5kPzogRGF0ZSxcbiAgICAgICAgICAgICAgICAgIHdpdGhRdWFsaXRpZXM/OiBib29sZWFuKTogUHJvbWlzZTx7XG4gICAgcmFkYXJNZWFzdXJlczogWFlUeXBlW10sXG4gICAgZ2F1Z2VNZWFzdXJlczogWFlUeXBlW10sXG4gICAgY29tcHV0YXRpb25zQnlUZWFtOiBYWVR5cGVbXSxcbiAgICBjb21wdXRhdGlvbnNJbnRlcm5hbDogWFlUeXBlW10sXG4gIH0+IHtcbiAgICB0cnkge1xuXG4gICAgICBsZXQgYXJncyA9ICcnO1xuICAgICAgaWYgKHBlcmlvZEJlZ2luICYmIHBlcmlvZEVuZCkge1xuICAgICAgICBhcmdzID0gJz9wZXJpb2RCZWdpbj0nICsgcGVyaW9kQmVnaW4udG9JU09TdHJpbmcoKSArICcmcGVyaW9kRW5kPScgKyBwZXJpb2RFbmQudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIGlmICh3aXRoUXVhbGl0aWVzKSB7XG4gICAgICAgIGFyZ3MgKz0gJyZ3aXRoUXVhbGl0aWVzPScgKyB3aXRoUXVhbGl0aWVzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiByYWluSWQgKyAnL2NvdW50cycgKyBhcmdzLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucy8nLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvdW50cyA9IHJlc3AuZGF0YS5jb3VudHM7XG4gICAgICBjb25zdCByYWRhck1lYXN1cmVzOiBYWVR5cGVbXSA9IFtdLFxuICAgICAgICBnYXVnZU1lYXN1cmVzOiBYWVR5cGVbXSA9IFtdLFxuICAgICAgICBjb21wdXRhdGlvbnNCeVRlYW06IFhZVHlwZVtdID0gW10sXG4gICAgICAgIGNvbXB1dGF0aW9uc0ludGVybmFsOiBYWVR5cGVbXSA9IFtdO1xuXG4gICAgICBjb3VudHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgcmFkYXJNZWFzdXJlcy5wdXNoKG5ldyBYWVR5cGUoMSwgTmFOLCBOYU4sIGMuX2lkKSk7XG4gICAgICAgIGdhdWdlTWVhc3VyZXMucHVzaChuZXcgWFlUeXBlKGMuZ2F1Z2VNZWFzdXJlcywgTmFOLCBOYU4sIGMuX2lkKSk7XG4gICAgICAgIGNvbXB1dGF0aW9uc0J5VGVhbS5wdXNoKG5ldyBYWVR5cGUoYy5jb21wdXRhdGlvbnNCeVRlYW0sIE5hTiwgTmFOLCBjLl9pZCkpO1xuICAgICAgICBjb21wdXRhdGlvbnNJbnRlcm5hbC5wdXNoKG5ldyBYWVR5cGUoYy5jb21wdXRhdGlvbnNJbnRlcm5hbCwgTmFOLCBOYU4sIGMuX2lkKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmFkYXJNZWFzdXJlcyxcbiAgICAgICAgZ2F1Z2VNZWFzdXJlcyxcbiAgICAgICAgY29tcHV0YXRpb25zQnlUZWFtLFxuICAgICAgICBjb21wdXRhdGlvbnNJbnRlcm5hbCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vID09PSBDb21wdXRpbmcgPT09XG5cbiAgYXN5bmMgbGF1bmNoUmFpbkNvbXB1dGF0aW9uKHJhaW5JZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogRGF0ZSk6IFByb21pc2U8UmFpbkNvbXB1dGF0aW9uW10+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgdmVyYjogJ1BPU1QnLFxuICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgcmVsYXRpdmVQYXRoOiAnJyArIHJhaW5JZCArICcvY29tcHV0YXRpb25zJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGF0ZTogZGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5jb21wdXRhdGlvbnM/Lm1hcChjID0+IG5ldyBSYWluQ29tcHV0YXRpb24oYykpO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpbkNvbXB1dGF0aW9uQ2FydGVzaWFuTWFwQnlJZChyYWluSWQ6IHN0cmluZywgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8UmFpbkNvbXB1dGF0aW9uTWFwPiB7XG4gICAgY29uc3QgcXVlcnlQYXRoID0gJycgKyByYWluSWQgKyAnL2NvbXB1dGF0aW9ucy8nICsgcmFpbkNvbXB1dGF0aW9uSWQgKyAnP2Zvcm1hdD1jYXJ0ZXNpYW4tbWFwJztcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnXG4gICAgfSk7XG4gICAgaWYgKCFyZXNwb25zZS5kYXRhWydjYXJ0ZXNpYW4tbWFwJ10pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJhaW5Db21wdXRhdGlvbk1hcCA9IG5ldyBSYWluQ29tcHV0YXRpb25NYXAocmVzcG9uc2UuZGF0YVsnY2FydGVzaWFuLW1hcCddKTtcbiAgICByYWluQ29tcHV0YXRpb25NYXAubmFtZSA9IHJhaW5JZCArICcucmFpbi5jYXJ0ZXNpYW4tbWFwJztcbiAgICByZXR1cm4gcmFpbkNvbXB1dGF0aW9uTWFwO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpbkNvbXB1dGF0aW9uQ3VtdWxhdGl2ZU1hcEJ5SWQocmFpbklkOiBzdHJpbmcsIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJhaW5Db21wdXRhdGlvbk1hcD4ge1xuICAgIGNvbnN0IHF1ZXJ5UGF0aCA9ICcnICsgcmFpbklkICsgJy9jb21wdXRhdGlvbnMvJyArIHJhaW5Db21wdXRhdGlvbklkICsgJy9jdW11bGF0aXZlLzEnO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICBrZXk6ICdyYWlucycsXG4gICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgIHJlbGF0aXZlUGF0aDogcXVlcnlQYXRoLFxuICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucydcbiAgICB9KTtcbiAgICBpZiAoIXJlc3BvbnNlLmRhdGFbJ2N1bXVsYXRpdmUnXSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmFpbkNvbXB1dGF0aW9uTWFwID0gbmV3IFJhaW5Db21wdXRhdGlvbk1hcChyZXNwb25zZS5kYXRhWydjdW11bGF0aXZlJ10pO1xuICAgIHJhaW5Db21wdXRhdGlvbk1hcC5uYW1lID0gcmFpbklkICsgJy5yYWluLmN1bXVsYXRpdmUnO1xuICAgIHJldHVybiByYWluQ29tcHV0YXRpb25NYXA7XG4gIH1cblxuICBhc3luYyBnZXRSYWluQ29tcGFyZXMocmFpbklkOiBzdHJpbmcsIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHsgaWQ6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nIH1bXT4ge1xuICAgIGNvbnN0IHF1ZXJ5UGF0aCA9ICcnICsgcmFpbklkICsgJy9jb21wdXRhdGlvbnMvJyArIHJhaW5Db21wdXRhdGlvbklkO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICBrZXk6ICdyYWlucycsXG4gICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgIHJlbGF0aXZlUGF0aDogcXVlcnlQYXRoLFxuICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucycsXG4gICAgICAvLyB0aW1lb3V0OiAyMDAwMDAsXG4gICAgfSk7XG5cbiAgICBjb25zdCByYWluQ29tcHV0YXRpb24gPSBuZXcgUmFpbkNvbXB1dGF0aW9uKHJlc3BvbnNlLmRhdGEpO1xuICAgIGNvbnN0IGxpbmtzID0gcmFpbkNvbXB1dGF0aW9uLmdldExpbmtzKCk7XG4gICAgY29uc3QgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzID0gW107XG4gICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XG4gICAgICBpZiAobGluay5yZWwgPT09ICdyYWluLWNvbXB1dGF0aW9uLXF1YWxpdHknKSB7XG4gICAgICAgIGNvbnN0IGlkID0gbGluay5nZXRJZCgpO1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gbGluay5ocmVmLnN1YnN0cmluZyhsaW5rLmhyZWYuaW5kZXhPZigndmVyc2lvbi8nKSArIDgsIGxpbmsuaHJlZi5pbmRleE9mKCcvJyArIGlkKSk7XG4gICAgICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdGllcy5wdXNoKHtpZCwgdmVyc2lvbn0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpbkNvbXBhcmVCeUlkKHJhaW5JZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDogc3RyaW5nKTogUHJvbWlzZTxSYWluQ29tcHV0YXRpb25RdWFsaXR5PiB7XG4gICAgY29uc3QgcXVlcnlQYXRoID0gJycgKyByYWluSWQgKyAnL2NvbXB1dGF0aW9ucy8nICsgcmFpbkNvbXB1dGF0aW9uSWQgKyAnL2NvbXBhcmVzLycgKyByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJhaW5Db21wdXRhdGlvblF1YWxpdHkgPSBuZXcgUmFpbkNvbXB1dGF0aW9uUXVhbGl0eShyZXNwb25zZS5kYXRhKTtcbiAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5LnF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lciA9IFNwZWVkTWF0cml4Q29udGFpbmVyXG4gICAgICAuQ3JlYXRlRnJvbUpzb24ocmFpbkNvbXB1dGF0aW9uUXVhbGl0eS5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIpO1xuICAgIHJldHVybiByYWluQ29tcHV0YXRpb25RdWFsaXR5O1xuICB9XG5cbiAgLy8gPT09IEdhdWdlcyA9PT1cblxuICBhc3luYyBnZXRHYXVnZShnYXVnZUlkOiBzdHJpbmcpOiBQcm9taXNlPEdhdWdlTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ2dhdWdlcycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICByZWxhdGl2ZVBhdGg6IGdhdWdlSWQsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvZ2F1Z2VzJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IEdhdWdlTm9kZShyZXNwLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRHYXVnZXMocmFpbklkPzogc3RyaW5nKTogUHJvbWlzZTxBcnJheTxHYXVnZU5vZGVGaWx0ZXI+PiB7XG4gICAgbGV0IHF1ZXJ5UGF0aCA9ICcnO1xuICAgIGlmICh0aGlzLmFzVGVhbUlkKSB7XG4gICAgICBxdWVyeVBhdGggKz0gJz90ZWFtSWQ9JyArIHRoaXMuYXNUZWFtSWQ7XG4gICAgfVxuICAgIGlmIChyYWluSWQpIHtcbiAgICAgIGlmIChxdWVyeVBhdGgpIHtcbiAgICAgICAgcXVlcnlQYXRoICs9ICcmJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnPyc7XG4gICAgICB9XG4gICAgICBxdWVyeVBhdGggKz0gJ3JhaW5JZD0nICsgcmFpbklkO1xuICAgIH1cblxuICAgIGNvbnN0IGdhdWdlcyA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ2dhdWdlcycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9nYXVnZXMnXG4gICAgICB9KTtcblxuICAgICAgZm9yIChjb25zdCBnYXVnZSBvZiByZXNwLmRhdGEuZ2F1Z2VzKSB7XG4gICAgICAgIGdhdWdlcy5wdXNoKG5ldyBHYXVnZU5vZGVGaWx0ZXIoZ2F1Z2UpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiBnYXVnZXM7XG4gIH1cblxuICBhc3luYyBnZXRHYXVnZU1lYXN1cmVzKGdhdWdlSWQ6IHN0cmluZywgYmVnaW46IERhdGUsIGVuZDogRGF0ZSk6IFByb21pc2U8R2F1Z2VNZWFzdXJlW10+IHtcbiAgICBjb25zdCBxdWVyeVBhdGggPSAnJyArIGdhdWdlSWQgKyAnL21lYXN1cmVzP2JlZ2luPScgKyBiZWdpbi50b0lTT1N0cmluZygpICsgJyZlbmQ9JyArIGVuZC50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgIGtleTogJ2dhdWdlcycsXG4gICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgIHJlbGF0aXZlUGF0aDogcXVlcnlQYXRoLFxuICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9nYXVnZXMnXG4gICAgfSk7XG5cbiAgICBjb25zdCBnYXVnZU1lYXN1cmVzOiBHYXVnZU1lYXN1cmVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZ2F1Z2VNZWFzdXJlIG9mIHJlc3AuZGF0YS5nYXVnZU1lYXN1cmVzKSB7XG4gICAgICBnYXVnZU1lYXN1cmVzLnB1c2gobmV3IEdhdWdlTWVhc3VyZShnYXVnZU1lYXN1cmUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGdhdWdlTWVhc3VyZXM7XG4gIH1cblxuICAvLyA9PT0gUHJpdmF0ZSA9PT1cblxuICBwcm90ZWN0ZWQgc2V0Um9sZXMocm9sZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVzID0gcm9sZXM7XG4gIH1cblxufVxuIl19
@@ -2,7 +2,6 @@ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from
2
2
  import { CompareElementInput, ElementsFactory } from 'raain-ui';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
- import * as i2 from "@ionic/angular";
6
5
  export class RaainCompareComponent {
7
6
  constructor(ngZone) {
8
7
  this.ngZone = ngZone;
@@ -78,10 +77,10 @@ export class RaainCompareComponent {
78
77
  }
79
78
  }
80
79
  RaainCompareComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
81
- RaainCompareComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareComponent, selector: "raain-compare", inputs: { points: "points", pointMax: "pointMax", remarks: "remarks", compareIndex: "compareIndex", currentHeight: "currentHeight", currentWidth: "currentWidth" }, outputs: { selectedPoint: "selectedPoint" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-grid>\n <ion-row>\n <ion-col id=\"col-container\">\n <div id=\"canvas-container\">\n <h1 *ngIf=\"remarks\">{{ remarks }}</h1>\n\n <!-- [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" [width]=\"currentWidth\" [height]=\"currentHeight\"-->\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#canvas-container{position:relative;height:30vh;width:40vw}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }] });
80
+ RaainCompareComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareComponent, selector: "raain-compare", inputs: { points: "points", pointMax: "pointMax", remarks: "remarks", compareIndex: "compareIndex", currentHeight: "currentHeight", currentWidth: "currentWidth" }, outputs: { selectedPoint: "selectedPoint" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"canvas-container\">\n <h1 *ngIf=\"remarks\">{{ remarks }}</h1>\n\n <!-- [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" [width]=\"currentWidth\" [height]=\"currentHeight\"-->\n <canvas #canvasElement></canvas>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
82
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareComponent, decorators: [{
83
82
  type: Component,
84
- args: [{ selector: 'raain-compare', template: "<ion-grid>\n <ion-row>\n <ion-col id=\"col-container\">\n <div id=\"canvas-container\">\n <h1 *ngIf=\"remarks\">{{ remarks }}</h1>\n\n <!-- [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" [width]=\"currentWidth\" [height]=\"currentHeight\"-->\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#canvas-container{position:relative;height:30vh;width:40vw}\n"] }]
83
+ args: [{ selector: 'raain-compare', template: "<div id=\"canvas-container\">\n <h1 *ngIf=\"remarks\">{{ remarks }}</h1>\n\n <!-- [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" [width]=\"currentWidth\" [height]=\"currentHeight\"-->\n <canvas #canvasElement></canvas>\n</div>\n" }]
85
84
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { points: [{
86
85
  type: Input
87
86
  }], pointMax: [{
@@ -103,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
103
102
  type: HostListener,
104
103
  args: ['window:resize', ['$event']]
105
104
  }] } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb21wYXJlL3JhYWluLWNvbXBhcmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29tcGFyZS9yYWFpbi1jb21wYXJlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWlCLG1CQUFtQixFQUFFLGVBQWUsRUFBQyxNQUFNLFVBQVUsQ0FBQzs7OztBQVE5RSxNQUFNLE9BQU8scUJBQXFCO0lBOEJoQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVQzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUEyQyxDQUFDO1FBVWpGLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1FBQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVTLE9BQU8sQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRVMsVUFBVSxDQUFDLE9BQWlCLEVBQUUsVUFBcUI7UUFFM0QsSUFBSSxPQUFPLEdB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LENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFFbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O21IQXRIVSxxQkFBcUI7dUdBQXJCLHFCQUFxQix5Y0N0QmxDLHNZQVlBOzRGRFVhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzZGQU9sQixNQUFNO3NCQURaLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixNQUFNO2dCQUlHLGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsZUFBZTtnQkFpRGxCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbXBhcmVFbGVtZW50LCBDb21wYXJlRWxlbWVudElucHV0LCBFbGVtZW50c0ZhY3Rvcnl9IGZyb20gJ3JhYWluLXVpJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuLi94eXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyYWFpbi1jb21wYXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhYWluLWNvbXBhcmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWFpbi1jb21wYXJlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJhYWluQ29tcGFyZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9pbnRzOiBBcnJheTxYWVR5cGU+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2ludE1heDogWFlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1hcmtzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVJbmRleDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50SGVpZ2h0OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGN1cnJlbnRXaWR0aDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc0VsZW1lbnQnKVxuICBwcm90ZWN0ZWQgY2FudmFzRWxlbWVudDogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIGNvbXBhcmVFbGVtZW50OiBDb21wYXJlRWxlbWVudDtcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2VkO1xuICBwcml2YXRlIGNyZWF0ZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMub25TaXplQ2hhbmdlZCA9ICgpID0+IHtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZShjaGFuZ2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xpY2socG9pbnQ6IFhZVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQb2ludC5lbWl0KHtwb2ludCwgY29tcGFyZUluZGV4OiB0aGlzLmNvbXBhcmVJbmRleH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZURhdGEobmV3RGF0YTogWFlUeXBlW10sIG5ld01heExpbmU/OiBYWVR5cGVbXSkge1xuXG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBjb25zdCBkYXRhc2V0ID0gdGhpcy5jb21wYXJlRWxlbWVudD8uY2hhcnQ/LmRhdGE/LmRhdGFzZXRzWzBdO1xuICAgIGlmIChkYXRhc2V0KSB7XG4gICAgICBkYXRhc2V0LmRhdGEgPSBuZXdEYXRhO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZSA9IHRoaXMuY29tcGFyZUVsZW1lbnQ/LmNoYXJ0Py5kYXRhPy5kYXRhc2V0c1sxXTtcbiAgICBpZiAobGluZSkge1xuICAgICAgbGluZS5kYXRhID0gbmV3TWF4TGluZTtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNvbXBhcmVFbGVtZW50Py5jaGFydD8udXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFwU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGUoKSB7XG4gICAgaWYgKHRoaXMuY3JlYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBFbGVtZW50c0ZhY3RvcnkoKTtcbiAgICB0aGlzLmNvbXBhcmVFbGVtZW50ID0gZmFjdG9yeS5jcmVhdGVDb21wYXJlKHRoaXMuY2FudmFzRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgbmV3IENvbXBhcmVFbGVtZW50SW5wdXQodGhpcy5wb2ludHMubWFwKHAgPT4ge1xuICAgICAgICAgIHJldHVybiB7eDogcC54LCB5OiBwLnksIHI6IHAuciwgbmFtZTogcC5uYW1lLCBpZDogcC5pZH07XG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLnBvaW50TWF4LCB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGUoKSB7XG4gICAgaWYgKHRoaXMuY29tcGFyZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY29tcGFyZUVsZW1lbnQ/LmNoYXJ0Py5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnBvaW50cykge1xuICAgICAgdGhpcy5jaGFuZ2VEYXRhKHRoaXMucG9pbnRzLCBbe3g6IDAsIHk6IDB9LCB0aGlzLnBvaW50TWF4XSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNYXBTaXplKCk6IHZvaWQge1xuXG4gICAgY29uc3QgbWFwRGl2V2lkdGggPSB0aGlzLmNhbnZhc0VsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlPy5wYXJlbnROb2RlWydjbGllbnRXaWR0aCddO1xuICAgIGNvbnN0IHBhZGRpbmcgPSAyMDtcbiAgICBsZXQgY3VycmVudFdpZHRoID0gbWFwRGl2V2lkdGggfHxcbiAgICAgICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCk7XG4gICAgY29uc3QgY3VycmVudEhlaWdodCA9IHRoaXMuY3VycmVudEhlaWdodCB8fFxuICAgICAgKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgICBjdXJyZW50V2lkdGggLT0gcGFkZGluZztcbiAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IGN1cnJlbnRXaWR0aDtcbiAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSBjdXJyZW50SGVpZ2h0O1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMub25TaXplQ2hhbmdlZCgpO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxpb24tZ3JpZD5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2wgaWQ9XCJjb2wtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGlkPVwiY2FudmFzLWNvbnRhaW5lclwiPlxuICAgICAgICA8aDEgKm5nSWY9XCJyZW1hcmtzXCI+e3sgcmVtYXJrcyB9fTwvaDE+XG5cbiAgICAgICAgPCEtLSBbc3R5bGUuaGVpZ2h0LnB4XT1cImN1cnJlbnRIZWlnaHRcIiBbc3R5bGUud2lkdGgucHhdPVwiY3VycmVudFdpZHRoXCIgW3dpZHRoXT1cImN1cnJlbnRXaWR0aFwiIFtoZWlnaHRdPVwiY3VycmVudEhlaWdodFwiLS0+XG4gICAgICAgIDxjYW52YXMgI2NhbnZhc0VsZW1lbnQ+PC9jYW52YXM+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWdyaWQ+XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb21wYXJlL3JhYWluLWNvbXBhcmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29tcGFyZS9yYWFpbi1jb21wYXJlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWlCLG1CQUFtQixFQUFFLGVBQWUsRUFBQyxNQUFNLFVBQVUsQ0FBQzs7O0FBUTlFLE1BQU0sT0FBTyxxQkFBcUI7SUE4QmhDLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVDNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQTJDLENBQUM7UUFVakYsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7UUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRVMsT0FBTyxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxVQUFVLENBQUMsT0FBaUIsRUFBRSxVQUFxQjtRQUUzRCxJQUFJLE9BQU8sR0FB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Q0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUhBdEhVLHFCQUFxQjt1R0FBckIscUJBQXFCLHljQ3RCbEMsZ1FBTUE7NEZEZ0JhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzZGQU9sQixNQUFNO3NCQURaLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixNQUFNO2dCQUlHLGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsZUFBZTtnQkFpRGxCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbXBhcmVFbGVtZW50LCBDb21wYXJlRWxlbWVudElucHV0LCBFbGVtZW50c0ZhY3Rvcnl9IGZyb20gJ3JhYWluLXVpJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuLi94eXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyYWFpbi1jb21wYXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhYWluLWNvbXBhcmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWFpbi1jb21wYXJlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJhYWluQ29tcGFyZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9pbnRzOiBBcnJheTxYWVR5cGU+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2ludE1heDogWFlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1hcmtzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVJbmRleDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50SGVpZ2h0OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGN1cnJlbnRXaWR0aDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc0VsZW1lbnQnKVxuICBwcm90ZWN0ZWQgY2FudmFzRWxlbWVudDogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIGNvbXBhcmVFbGVtZW50OiBDb21wYXJlRWxlbWVudDtcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2VkO1xuICBwcml2YXRlIGNyZWF0ZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMub25TaXplQ2hhbmdlZCA9ICgpID0+IHtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZShjaGFuZ2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xpY2socG9pbnQ6IFhZVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQb2ludC5lbWl0KHtwb2ludCwgY29tcGFyZUluZGV4OiB0aGlzLmNvbXBhcmVJbmRleH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZURhdGEobmV3RGF0YTogWFlUeXBlW10sIG5ld01heExpbmU/OiBYWVR5cGVbXSkge1xuXG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBjb25zdCBkYXRhc2V0ID0gdGhpcy5jb21wYXJlRWxlbWVudD8uY2hhcnQ/LmRhdGE/LmRhdGFzZXRzWzBdO1xuICAgIGlmIChkYXRhc2V0KSB7XG4gICAgICBkYXRhc2V0LmRhdGEgPSBuZXdEYXRhO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZSA9IHRoaXMuY29tcGFyZUVsZW1lbnQ/LmNoYXJ0Py5kYXRhPy5kYXRhc2V0c1sxXTtcbiAgICBpZiAobGluZSkge1xuICAgICAgbGluZS5kYXRhID0gbmV3TWF4TGluZTtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNvbXBhcmVFbGVtZW50Py5jaGFydD8udXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFwU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGUoKSB7XG4gICAgaWYgKHRoaXMuY3JlYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBFbGVtZW50c0ZhY3RvcnkoKTtcbiAgICB0aGlzLmNvbXBhcmVFbGVtZW50ID0gZmFjdG9yeS5jcmVhdGVDb21wYXJlKHRoaXMuY2FudmFzRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgbmV3IENvbXBhcmVFbGVtZW50SW5wdXQodGhpcy5wb2ludHMubWFwKHAgPT4ge1xuICAgICAgICAgIHJldHVybiB7eDogcC54LCB5OiBwLnksIHI6IHAuciwgbmFtZTogcC5uYW1lLCBpZDogcC5pZH07XG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLnBvaW50TWF4LCB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGUoKSB7XG4gICAgaWYgKHRoaXMuY29tcGFyZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY29tcGFyZUVsZW1lbnQ/LmNoYXJ0Py5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnBvaW50cykge1xuICAgICAgdGhpcy5jaGFuZ2VEYXRhKHRoaXMucG9pbnRzLCBbe3g6IDAsIHk6IDB9LCB0aGlzLnBvaW50TWF4XSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNYXBTaXplKCk6IHZvaWQge1xuXG4gICAgY29uc3QgbWFwRGl2V2lkdGggPSB0aGlzLmNhbnZhc0VsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlPy5wYXJlbnROb2RlWydjbGllbnRXaWR0aCddO1xuICAgIGNvbnN0IHBhZGRpbmcgPSAyMDtcbiAgICBsZXQgY3VycmVudFdpZHRoID0gbWFwRGl2V2lkdGggfHxcbiAgICAgICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCk7XG4gICAgY29uc3QgY3VycmVudEhlaWdodCA9IHRoaXMuY3VycmVudEhlaWdodCB8fFxuICAgICAgKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgICBjdXJyZW50V2lkdGggLT0gcGFkZGluZztcbiAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IGN1cnJlbnRXaWR0aDtcbiAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSBjdXJyZW50SGVpZ2h0O1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMub25TaXplQ2hhbmdlZCgpO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgaWQ9XCJjYW52YXMtY29udGFpbmVyXCI+XG4gIDxoMSAqbmdJZj1cInJlbWFya3NcIj57eyByZW1hcmtzIH19PC9oMT5cblxuICA8IS0tIFtzdHlsZS5oZWlnaHQucHhdPVwiY3VycmVudEhlaWdodFwiIFtzdHlsZS53aWR0aC5weF09XCJjdXJyZW50V2lkdGhcIiBbd2lkdGhdPVwiY3VycmVudFdpZHRoXCIgW2hlaWdodF09XCJjdXJyZW50SGVpZ2h0XCItLT5cbiAgPGNhbnZhcyAjY2FudmFzRWxlbWVudD48L2NhbnZhcz5cbjwvZGl2PlxuIl19
@@ -13,10 +13,10 @@ export class RaainCompareStackComponent {
13
13
  }
14
14
  }
15
15
  RaainCompareStackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareStackComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
16
- RaainCompareStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareStackComponent, selector: "raain-compare-stack", inputs: { compareManager: "compareManager", currentHeight: "currentHeight", cumulative: "cumulative" }, outputs: { selectedPoint: "selectedPoint" }, ngImport: i0, template: "<ion-grid>\n <ion-row *ngIf=\"cumulative\">\n <ion-col size=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative</ion-card-header>\n <ion-card-content>\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row *ngIf=\"!cumulative\">\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size=\"12\" size-md=\"6\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualitiesPerDate :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualitiesPerDate\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n </ion-row>\n</ion-grid>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i3.RaainCompareComponent, selector: "raain-compare", inputs: ["points", "pointMax", "remarks", "compareIndex", "currentHeight", "currentWidth"], outputs: ["selectedPoint"] }] });
16
+ RaainCompareStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareStackComponent, selector: "raain-compare-stack", inputs: { compareManager: "compareManager", currentHeight: "currentHeight", cumulative: "cumulative" }, outputs: { selectedPoint: "selectedPoint" }, ngImport: i0, template: "<div *ngIf=\"cumulative\">\n <ion-col size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative</ion-card-header>\n <ion-card-content>\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<div *ngIf=\"!cumulative\">\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualitiesPerDate :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualitiesPerDate\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n</div>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i3.RaainCompareComponent, selector: "raain-compare", inputs: ["points", "pointMax", "remarks", "compareIndex", "currentHeight", "currentWidth"], outputs: ["selectedPoint"] }] });
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareStackComponent, decorators: [{
18
18
  type: Component,
19
- args: [{ selector: 'raain-compare-stack', template: "<ion-grid>\n <ion-row *ngIf=\"cumulative\">\n <ion-col size=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative</ion-card-header>\n <ion-card-content>\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row *ngIf=\"!cumulative\">\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size=\"12\" size-md=\"6\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualitiesPerDate :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualitiesPerDate\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n </ion-row>\n</ion-grid>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"] }]
19
+ args: [{ selector: 'raain-compare-stack', template: "<div *ngIf=\"cumulative\">\n <ion-col size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>Cumulative</ion-card-header>\n <ion-card-content>\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"0\"\n [currentHeight]=\"500\"\n [pointMax]=\"compareManager.globalComparePointsMax\"\n [points]=\"compareManager.globalComparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n</div>\n\n<div *ngIf=\"!cumulative\">\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.uiCompares; index as compareIndex\" size-md=\"6\" size-xs=\"12\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualitiesPerDate :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualitiesPerDate\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n</div>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"] }]
20
20
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { compareManager: [{
21
21
  type: Input
22
22
  }], currentHeight: [{
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
26
26
  }], cumulative: [{
27
27
  type: Input
28
28
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb21wYXJlLXN0YWNrL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29tcGFyZS1zdGFjay9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUzdFLE1BQU0sT0FBTywwQkFBMEI7SUFlckMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOM0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBMkMsQ0FBQztJQU9uRixDQUFDO0lBRVMsT0FBTyxDQUFDLENBQTBDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O3dIQXBCVSwwQkFBMEI7NEdBQTFCLDBCQUEwQixnTkNUdkMsdXdHQXNGQTs0RkQ3RWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQjs2RkFPeEIsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4uL3Rvb2xzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncmFhaW4tY29tcGFyZS1zdGFjaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkNvbXBhcmVTdGFja0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVNYW5hZ2VyOiBDb21wYXJlTWFuYWdlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9PigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdW11bGF0aXZlOiBib29sZWFuO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xpY2soZTogeyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFBvaW50LmVtaXQoe3BvaW50OiBlLnBvaW50LCBjb21wYXJlSW5kZXg6IGUuY29tcGFyZUluZGV4fSk7XG4gIH1cblxuXG59XG4iLCI8aW9uLWdyaWQ+XG4gIDxpb24tcm93ICpuZ0lmPVwiY3VtdWxhdGl2ZVwiPlxuICAgIDxpb24tY29sIHNpemU9XCIxMlwiPlxuICAgICAgPGlvbi1jYXJkIGNsYXNzPVwiY2FyZC1jb21wYXJlXCI+XG4gICAgICAgIDxpb24tY2FyZC1oZWFkZXI+Q3VtdWxhdGl2ZTwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8cmFhaW4tY29tcGFyZVxuICAgICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjb21wYXJlSW5kZXhdPVwiMFwiXG4gICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCI1MDBcIlxuICAgICAgICAgICAgW3BvaW50TWF4XT1cImNvbXBhcmVNYW5hZ2VyLmdsb2JhbENvbXBhcmVQb2ludHNNYXhcIlxuICAgICAgICAgICAgW3BvaW50c109XCJjb21wYXJlTWFuYWdlci5nbG9iYWxDb21wYXJlUG9pbnRzXCI+PC9yYWFpbi1jb21wYXJlPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L2lvbi1jYXJkPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93ICpuZ0lmPVwiIWN1bXVsYXRpdmVcIj5cblxuICAgIDwhLS1cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxpb24tY2FyZCBpZD1cImNhcmQtbWF0cml4XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb21wYXJlTWFuYWdlcj8uY29tcGFyZU5hbWVzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8cmFhaW4tc3BlZWQgW2NvbXBhcmVTcGVlZE1hdHJpeF09XCJjb21wYXJlTWFuYWdlci5jb21wYXJlU3BlZWRNYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JdPVwiY29tcGFyZU1hbmFnZXIuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgID48L3JhYWluLXNwZWVkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAge3sgY29tcGFyZU1hbmFnZXI/LmNvbXBhcmVWZXJzaW9uIH19XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgIDwvaW9uLWNhcmQ+XG4gICAgPC9pb24tY29sPiAtLT5cblxuICAgIDxpb24tY29sICpuZ0Zvcj1cImxldCBjb21wYXJlIG9mICBjb21wYXJlTWFuYWdlcj8udWlDb21wYXJlczsgaW5kZXggYXMgY29tcGFyZUluZGV4XCIgc2l6ZT1cIjEyXCIgc2l6ZS1tZD1cIjZcIj5cbiAgICAgIDxpb24tY2FyZCBjbGFzcz1cImNhcmQtY29tcGFyZVwiPlxuICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPnt7IGNvbXBhcmUubmFtZSB9fSB7eyBjb21wYXJlLnJlbWFya3MgfX1cbiAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50ICpuZ0lmPVwiY29tcGFyZS5jb21wYXJlUG9pbnRzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8cmFhaW4tY29tcGFyZVxuICAgICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjb21wYXJlSW5kZXhdPVwiY29tcGFyZUluZGV4XCJcbiAgICAgICAgICAgIFtjdXJyZW50SGVpZ2h0XT1cIjUwMFwiXG4gICAgICAgICAgICBbcG9pbnRNYXhdPVwiY29tcGFyZS5jb21wYXJlUG9pbnRzTWF4XCJcbiAgICAgICAgICAgIFtwb2ludHNdPVwiY29tcGFyZS5jb21wYXJlUG9pbnRzXCI+PC9yYWFpbi1jb21wYXJlPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L2lvbi1jYXJkPlxuICAgIDwvaW9uLWNvbD5cblxuICAgIDwhLS1cbiAgICA8aW9uLWNhcmQgIGlkPVwiY2FyZC1zZWxlY3RlZC1nYXVnZVwiIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8aW9uLWFjY29yZGlvbi1ncm91cD5cblxuICAgICAgICAgIDxpb24tYWNjb3JkaW9uIHZhbHVlPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgIDxpb24taXRlbSBjb2xvcj1cImxpZ2h0XCIgc2xvdD1cImhlYWRlclwiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsPmRlYnVnPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBzbG90PVwiY29udGVudFwiPlxuICAgICAgICAgICAgICBkYXRlOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LmRhdGUgfCAgZGF0ZToneXl5eS1NTS1kZCBISDptbTpzcycgfX08YnI+XG4gICAgICAgICAgICAgIHJhZGFyTWVhc3VyZUlkOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LnJhZGFyTWVhc3VyZUlkIH19PGJyPlxuICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25JZDoge3sgY3VycmVudFRpbWVmcmFtZVRhcmdldC5yYWluQ29tcHV0YXRpb25JZCB9fTxicj5cbiAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uVmVyc2lvbjoge3sgY3VycmVudFRpbWVmcmFtZVRhcmdldC5yYWluQ29tcHV0YXRpb25WZXJzaW9uIH19PGJyPlxuICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlIDpcbiAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcmNxIG9mIGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzUGVyRGF0ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmNxLnZlcnNpb24gfX0gLSB7eyByY3EuaWQgfX1cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2lvbi1hY2NvcmRpb24+XG4gICAgICAgICAgPGlvbi1hY2NvcmRpb24gKm5nSWY9XCJzZWxlY3RlZEdhdWdlXCIgdmFsdWU9XCJjb250ZXh0XCI+XG4gICAgICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyBzZWxlY3RlZEdhdWdlSW5Qb2ludHNEZXRhaWwgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZm9ybWF0TGFiZWxPZlNlbGVjdGVkR2F1Z2Uoc2VsZWN0ZWRHYXVnZUluUG9pbnRzKVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgICAgICBzbG90PVwiY29udGVudFwiPjwvZGl2PlxuICAgICAgICAgIDwvaW9uLWFjY29yZGlvbj5cbiAgICAgICAgPC9pb24tYWNjb3JkaW9uLWdyb3VwPlxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG4gICAgLS0+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWdyaWQ+XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb21wYXJlLXN0YWNrL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29tcGFyZS1zdGFjay9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUzdFLE1BQU0sT0FBTywwQkFBMEI7SUFlckMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOM0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBMkMsQ0FBQztJQU9uRixDQUFDO0lBRVMsT0FBTyxDQUFDLENBQTBDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O3dIQXBCVSwwQkFBMEI7NEdBQTFCLDBCQUEwQixnTkNUdkMsd2xHQW9GQTs0RkQzRWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQjs2RkFPeEIsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4uL3Rvb2xzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncmFhaW4tY29tcGFyZS1zdGFjaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkNvbXBhcmVTdGFja0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVNYW5hZ2VyOiBDb21wYXJlTWFuYWdlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9PigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdW11bGF0aXZlOiBib29sZWFuO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xpY2soZTogeyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFBvaW50LmVtaXQoe3BvaW50OiBlLnBvaW50LCBjb21wYXJlSW5kZXg6IGUuY29tcGFyZUluZGV4fSk7XG4gIH1cblxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwiY3VtdWxhdGl2ZVwiPlxuICA8aW9uLWNvbCBzaXplLW1kPVwiNlwiIHNpemUteHM9XCIxMlwiPlxuICAgIDxpb24tY2FyZCBjbGFzcz1cImNhcmQtY29tcGFyZVwiPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5DdW11bGF0aXZlPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPHJhYWluLWNvbXBhcmVcbiAgICAgICAgICAoc2VsZWN0ZWRQb2ludCk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgIFtjb21wYXJlSW5kZXhdPVwiMFwiXG4gICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiNTAwXCJcbiAgICAgICAgICBbcG9pbnRNYXhdPVwiY29tcGFyZU1hbmFnZXIuZ2xvYmFsQ29tcGFyZVBvaW50c01heFwiXG4gICAgICAgICAgW3BvaW50c109XCJjb21wYXJlTWFuYWdlci5nbG9iYWxDb21wYXJlUG9pbnRzXCI+PC9yYWFpbi1jb21wYXJlPlxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG4gIDwvaW9uLWNvbD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWN1bXVsYXRpdmVcIj5cblxuICA8IS0tXG4gIDxpb24tY29sPlxuICAgIDxpb24tY2FyZCBpZD1cImNhcmQtbWF0cml4XCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29tcGFyZU1hbmFnZXI/LmNvbXBhcmVOYW1lcz8ubGVuZ3RoXCI+XG4gICAgICAgIDxyYWFpbi1zcGVlZCBbY29tcGFyZVNwZWVkTWF0cml4XT1cImNvbXBhcmVNYW5hZ2VyLmNvbXBhcmVTcGVlZE1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICBbY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JdPVwiY29tcGFyZU1hbmFnZXIuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiMzAwXCJcbiAgICAgICAgPjwvcmFhaW4tc3BlZWQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICB7eyBjb21wYXJlTWFuYWdlcj8uY29tcGFyZVZlcnNpb24gfX1cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2lvbi1jb2w+IC0tPlxuXG4gIDxpb24tY29sICpuZ0Zvcj1cImxldCBjb21wYXJlIG9mICBjb21wYXJlTWFuYWdlcj8udWlDb21wYXJlczsgaW5kZXggYXMgY29tcGFyZUluZGV4XCIgc2l6ZS1tZD1cIjZcIiBzaXplLXhzPVwiMTJcIj5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJjYXJkLWNvbXBhcmVcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+e3sgY29tcGFyZS5uYW1lIH19IHt7IGNvbXBhcmUucmVtYXJrcyB9fVxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudCAqbmdJZj1cImNvbXBhcmUuY29tcGFyZVBvaW50cz8ubGVuZ3RoXCI+XG4gICAgICAgIDxyYWFpbi1jb21wYXJlXG4gICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICBbY29tcGFyZUluZGV4XT1cImNvbXBhcmVJbmRleFwiXG4gICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiNTAwXCJcbiAgICAgICAgICBbcG9pbnRNYXhdPVwiY29tcGFyZS5jb21wYXJlUG9pbnRzTWF4XCJcbiAgICAgICAgICBbcG9pbnRzXT1cImNvbXBhcmUuY29tcGFyZVBvaW50c1wiPjwvcmFhaW4tY29tcGFyZT5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2lvbi1jb2w+XG5cbiAgPCEtLVxuICA8aW9uLWNhcmQgIGlkPVwiY2FyZC1zZWxlY3RlZC1nYXVnZVwiIHNsb3Q9XCJlbmRcIj5cbiAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgIDxpb24tYWNjb3JkaW9uLWdyb3VwPlxuXG4gICAgICAgIDxpb24tYWNjb3JkaW9uIHZhbHVlPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+ZGVidWc8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCIgc2xvdD1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgIGRhdGU6IHt7IGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQuZGF0ZSB8ICBkYXRlOid5eXl5LU1NLWRkIEhIOm1tOnNzJyB9fTxicj5cbiAgICAgICAgICAgIHJhZGFyTWVhc3VyZUlkOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LnJhZGFyTWVhc3VyZUlkIH19PGJyPlxuICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uSWQ6IHt7IGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQucmFpbkNvbXB1dGF0aW9uSWQgfX08YnI+XG4gICAgICAgICAgICByYWluQ29tcHV0YXRpb25WZXJzaW9uOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LnJhaW5Db21wdXRhdGlvblZlcnNpb24gfX08YnI+XG4gICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlIDpcbiAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByY3Egb2YgY3VycmVudFRpbWVmcmFtZVRhcmdldC5yYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlXCI+XG4gICAgICAgICAgICAgICAge3sgcmNxLnZlcnNpb24gfX0gLSB7eyByY3EuaWQgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9pb24tYWNjb3JkaW9uPlxuICAgICAgICA8aW9uLWFjY29yZGlvbiAqbmdJZj1cInNlbGVjdGVkR2F1Z2VcIiB2YWx1ZT1cImNvbnRleHRcIj5cbiAgICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgc2VsZWN0ZWRHYXVnZUluUG9pbnRzRGV0YWlsIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZm9ybWF0TGFiZWxPZlNlbGVjdGVkR2F1Z2Uoc2VsZWN0ZWRHYXVnZUluUG9pbnRzKVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgICAgc2xvdD1cImNvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgPC9pb24tYWNjb3JkaW9uPlxuICAgICAgPC9pb24tYWNjb3JkaW9uLWdyb3VwPlxuICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgPC9pb24tY2FyZD5cbiAgLS0+XG48L2Rpdj5cbiJdfQ==
@@ -44,40 +44,73 @@ export class RaainConfigurationComponent {
44
44
  this.created = true;
45
45
  let inputs = new ConfigurationElementInput(this.points, this.minPoint, this.maxPoint, false, [], this.onDrag);
46
46
  if (this.logStyle) {
47
- const trans = 0.4;
47
+ const confTransparency = 0.3;
48
48
  inputs = new ConfigurationElementInput(this.points, this.minPoint, this.maxPoint, true, [
49
49
  {
50
- color: Tools.getTransparency(ChartScaleColors['0.4'], trans),
50
+ color: Tools.getTransparency(ChartScaleColors['0'], confTransparency),
51
51
  yStart: Math.log10(0.1),
52
52
  yEnd: Math.log10(0.4)
53
53
  },
54
- { color: Tools.getTransparency(ChartScaleColors['1'], trans), yStart: Math.log10(0.4), yEnd: Math.log10(1) },
55
- { color: Tools.getTransparency(ChartScaleColors['3'], trans), yStart: Math.log10(1), yEnd: Math.log10(3) },
56
- { color: Tools.getTransparency(ChartScaleColors['10'], trans), yStart: Math.log10(3), yEnd: Math.log10(10) },
57
- { color: Tools.getTransparency(ChartScaleColors['20'], trans), yStart: Math.log10(10), yEnd: Math.log10(20) },
58
- { color: Tools.getTransparency(ChartScaleColors['30'], trans), yStart: Math.log10(20), yEnd: Math.log10(30) },
59
- { color: Tools.getTransparency(ChartScaleColors['50'], trans), yStart: Math.log10(30), yEnd: Math.log10(50) },
60
- { color: Tools.getTransparency(ChartScaleColors['100'], trans), yStart: Math.log10(50), yEnd: Math.log10(100) },
61
54
  {
62
- color: Tools.getTransparency(ChartScaleColors['150'], trans),
55
+ color: Tools.getTransparency(ChartScaleColors['0.4'], confTransparency),
56
+ yStart: Math.log10(0.4),
57
+ yEnd: Math.log10(1)
58
+ },
59
+ {
60
+ color: Tools.getTransparency(ChartScaleColors['1'], confTransparency),
61
+ yStart: Math.log10(1),
62
+ yEnd: Math.log10(3)
63
+ },
64
+ {
65
+ color: Tools.getTransparency(ChartScaleColors['3'], confTransparency),
66
+ yStart: Math.log10(3),
67
+ yEnd: Math.log10(10)
68
+ },
69
+ {
70
+ color: Tools.getTransparency(ChartScaleColors['10'], confTransparency),
71
+ yStart: Math.log10(10),
72
+ yEnd: Math.log10(20)
73
+ },
74
+ {
75
+ color: Tools.getTransparency(ChartScaleColors['20'], confTransparency),
76
+ yStart: Math.log10(20),
77
+ yEnd: Math.log10(30)
78
+ },
79
+ {
80
+ color: Tools.getTransparency(ChartScaleColors['30'], confTransparency),
81
+ yStart: Math.log10(30),
82
+ yEnd: Math.log10(50)
83
+ },
84
+ {
85
+ color: Tools.getTransparency(ChartScaleColors['50'], confTransparency),
86
+ yStart: Math.log10(50),
87
+ yEnd: Math.log10(100)
88
+ },
89
+ {
90
+ color: Tools.getTransparency(ChartScaleColors['100'], confTransparency),
63
91
  yStart: Math.log10(100),
64
92
  yEnd: Math.log10(150)
65
93
  },
66
94
  {
67
- color: Tools.getTransparency(ChartScaleColors['200'], trans),
95
+ color: Tools.getTransparency(ChartScaleColors['150'], confTransparency),
68
96
  yStart: Math.log10(150),
69
97
  yEnd: Math.log10(200)
70
98
  },
71
99
  {
72
- color: Tools.getTransparency(ChartScaleColors['250'], trans),
100
+ color: Tools.getTransparency(ChartScaleColors['200'], confTransparency),
73
101
  yStart: Math.log10(200),
74
102
  yEnd: Math.log10(250)
75
103
  },
76
104
  {
77
- color: Tools.getTransparency(ChartScaleColors['300'], trans),
105
+ color: Tools.getTransparency(ChartScaleColors['250'], confTransparency),
78
106
  yStart: Math.log10(250),
79
107
  yEnd: Math.log10(300)
80
108
  },
109
+ {
110
+ color: Tools.getTransparency(ChartScaleColors['300'], confTransparency),
111
+ yStart: Math.log10(300),
112
+ yEnd: Math.log10(500)
113
+ },
81
114
  ], this.onDrag);
82
115
  }
83
116
  this.ngZone.runOutsideAngular(() => {
@@ -137,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
137
170
  type: HostListener,
138
171
  args: ['window:resize', ['$event']]
139
172
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb25maWd1cmF0aW9uL3JhYWluLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29uZmlndXJhdGlvbi9yYWFpbi1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZ0JBQWdCLEVBQXdCLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7O0FBT2pDLE1BQU0sT0FBTywyQkFBMkI7SUErQnRDLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBekIzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFTN0MsYUFBUSxHQUFXLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFHaEMsYUFBUSxHQUFXLEVBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFDLENBQUM7UUFHcEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVd0QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUMxQixDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZD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LEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUM7Z0JBQzNHLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUM7Z0JBQzNHLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUM7Z0JBQzNHLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUM7Z0JBQzdHO29CQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQztvQkFDNUQsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ3RCO2dCQUNEO29CQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQztvQkFDNUQs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QVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUksYUFBYTtzQkFEdEIsU0FBUzt1QkFBQyxlQUFlO2dCQXVDbEIsUUFBUTtzQkFEZixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2hhcnRTY2FsZUNvbG9ycywgQ29uZmlndXJhdGlvbkVsZW1lbnQsIENvbmZpZ3VyYXRpb25FbGVtZW50SW5wdXQsIEVsZW1lbnRzRmFjdG9yeSwgVG9vbHN9IGZyb20gJ3JhYWluLXVpJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuLi94eXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyYWFpbi1jb25maWd1cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhYWluLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWFpbi1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJhYWluQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9pbnRzOiBYWVR5cGVbXTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNoYW5nZWRQb2ludHMgPSBuZXcgRXZlbnRFbWl0dGVyPFhZVHlwZVtdPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50SGVpZ2h0OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGN1cnJlbnRXaWR0aDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5Qb2ludDogWFlUeXBlID0ge3g6IDAsIHk6IDB9O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhQb2ludDogWFlUeXBlID0ge3g6IDMwMCwgeTogMTAwfTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbG9nU3R5bGUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdjYW52YXNFbGVtZW50JylcbiAgcHJvdGVjdGVkIGNhbnZhc0VsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uRWxlbWVudDogQ29uZmlndXJhdGlvbkVsZW1lbnQ7XG4gIHByaXZhdGUgb25EcmFnO1xuICBwcml2YXRlIG9uU2l6ZUNoYW5nZWQ7XG4gIHByaXZhdGUgY3JlYXRlZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgdGhpcy5vblNpemVDaGFuZ2VkID0gKCkgPT4ge1xuICAgIH07XG4gICAgdGhpcy5vbkRyYWcgPSAoZTogYW55KSA9PiB7XG4gICAgICB0aGlzLmNoYW5nZWRQb2ludHMuZW1pdCh0aGlzLnBvaW50cyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZShjaGFuZ2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZSgpO1xuICB9XG5cbiAgYXN5bmMgcmVzZXQoY291bnQgPSA0KSB7XG4gICAgY29uc3QgcG9pbnRzID0gW107XG4gICAgZm9yIChsZXQgYyA9IDA7IGMgPCBjb3VudDsgYysrKSB7XG4gICAgICBwb2ludHMucHVzaChuZXcgWFlUeXBlKChjICsgMSkgKiAxMCwgKGMgKyAxKSAqIDAuMSkpO1xuICAgIH1cbiAgICB0aGlzLnBvaW50cyA9IHBvaW50cztcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZSgpO1xuICAgIHRoaXMuY3JlYXRlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvblJlc2l6ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgLy8gdGhpcy51cGRhdGVNYXBTaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZSgpIHtcbiAgICBpZiAodGhpcy5jcmVhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlZCA9IHRydWU7XG5cbiAgICBsZXQgaW5wdXRzID0gbmV3IENvbmZpZ3VyYXRpb25FbGVtZW50SW5wdXQodGhpcy5wb2ludHMsXG4gICAgICB0aGlzLm1pblBvaW50LFxuICAgICAgdGhpcy5tYXhQb2ludCxcbiAgICAgIGZhbHNlLCBbXSxcbiAgICAgIHRoaXMub25EcmFnKTtcbiAgICBpZiAodGhpcy5sb2dTdHlsZSkge1xuICAgICAgY29uc3QgdHJhbnMgPSAwLjQ7XG4gICAgICBpbnB1dHMgPSBuZXcgQ29uZmlndXJhdGlvbkVsZW1lbnRJbnB1dCh0aGlzLnBvaW50cyxcbiAgICAgICAgdGhpcy5taW5Qb2ludCxcbiAgICAgICAgdGhpcy5tYXhQb2ludCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMC40J10sIHRyYW5zKSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgwLjEpLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgwLjQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7Y29sb3I6IFRvb2xzLmdldFRyYW5zcGFyZW5jeShDaGFydFNjYWxlQ29sb3JzWycxJ10sIHRyYW5zKSwgeVN0YXJ0OiBNYXRoLmxvZzEwKDAuNCksIHlFbmQ6IE1hdGgubG9nMTAoMSl9LFxuICAgICAgICAgIHtjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzMnXSwgdHJhbnMpLCB5U3RhcnQ6IE1hdGgubG9nMTAoMSksIHlFbmQ6IE1hdGgubG9nMTAoMyl9LFxuICAgICAgICAgIHtjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzEwJ10sIHRyYW5zKSwgeVN0YXJ0OiBNYXRoLmxvZzEwKDMpLCB5RW5kOiBNYXRoLmxvZzEwKDEwKX0sXG4gICAgICAgICAge2NvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMjAnXSwgdHJhbnMpLCB5U3RhcnQ6IE1hdGgubG9nMTAoMTApLCB5RW5kOiBNYXRoLmxvZzEwKDIwKX0sXG4gICAgICAgICAge2NvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMzAnXSwgdHJhbnMpLCB5U3RhcnQ6IE1hdGgubG9nMTAoMjApLCB5RW5kOiBNYXRoLmxvZzEwKDMwKX0sXG4gICAgICAgICAge2NvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snNTAnXSwgdHJhbnMpLCB5U3RhcnQ6IE1hdGgubG9nMTAoMzApLCB5RW5kOiBNYXRoLmxvZzEwKDUwKX0sXG4gICAgICAgICAge2NvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMTAwJ10sIHRyYW5zKSwgeVN0YXJ0OiBNYXRoLmxvZzEwKDUwKSwgeUVuZDogTWF0aC5sb2cxMCgxMDApfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzE1MCddLCB0cmFucyksXG4gICAgICAgICAgICB5U3RhcnQ6IE1hdGgubG9nMTAoMTAwKSxcbiAgICAgICAgICAgIHlFbmQ6IE1hdGgubG9nMTAoMTUwKVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6IFRvb2xzLmdldFRyYW5zcGFyZW5jeShDaGFydFNjYWxlQ29sb3JzWycyMDAnXSwgdHJhbnMpLFxuICAgICAgICAgICAgeVN0YXJ0OiBNYXRoLmxvZzEwKDE1MCksXG4gICAgICAgICAgICB5RW5kOiBNYXRoLmxvZzEwKDIwMClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMjUwJ10sIHRyYW5zKSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgyMDApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgyNTApXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzMwMCddLCB0cmFucyksXG4gICAgICAgICAgICB5U3RhcnQ6IE1hdGgubG9nMTAoMjUwKSxcbiAgICAgICAgICAgIHlFbmQ6IE1hdGgubG9nMTAoMzAwKVxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRoaXMub25EcmFnKTtcbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBFbGVtZW50c0ZhY3RvcnkoKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uRWxlbWVudCA9IGZhY3RvcnkuY3JlYXRlQ29uZmlndXJhdGlvbih0aGlzLmNhbnZhc0VsZW1lbnQubmF0aXZlRWxlbWVudCwgaW5wdXRzKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9KTtcblxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWxldGUoKSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uRWxlbWVudD8uY2hhcnQ/LmRlc3Ryb3koKTtcbiAgICB0aGlzLmNyZWF0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hhbmdlKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnY2hhbmdlZCcsIGNoYW5nZXMpO1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlKCk7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFwU2l6ZSgpOiB2b2lkIHtcblxuICAgIGNvbnN0IG1hcERpdldpZHRoID0gdGhpcy5jYW52YXNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZT8ucGFyZW50Tm9kZVsnY2xpZW50V2lkdGgnXTtcbiAgICBjb25zdCBwYWRkaW5nID0gMjA7XG4gICAgbGV0IGN1cnJlbnRXaWR0aCA9IG1hcERpdldpZHRoIHx8XG4gICAgICAod2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB0aGlzLmN1cnJlbnRIZWlnaHQgfHxcbiAgICAgICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCk7XG4gICAgY3VycmVudFdpZHRoIC09IHBhZGRpbmc7XG4gICAgdGhpcy5jdXJyZW50V2lkdGggPSBjdXJyZW50V2lkdGg7XG4gICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gY3VycmVudEhlaWdodDtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm9uU2l6ZUNoYW5nZWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGlvbi1ncmlkPlxuICA8aW9uLXJvdz5cbiAgICA8aW9uLWNvbCBpZD1cImNvbC1jb250YWluZXJcIiBzaXplLXhzPVwiMTBcIj5cbiAgICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJjdXJyZW50SGVpZ2h0XCIgaWQ9XCJjYW52YXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxjYW52YXMgI2NhbnZhc0VsZW1lbnQ+PC9jYW52YXM+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2wgc2l6ZS14cz1cIjJcIj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJyZXNldCgyKVwiIGNvbG9yPVwibGlnaHRcIiBzaGFwZT1cInJvdW5kXCIgc2l6ZT1cInNtYWxsXCI+MjwvaW9uLWJ1dHRvbj5cbiAgICAgIDxicj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJyZXNldCg0KVwiIGNvbG9yPVwibGlnaHRcIiBzaGFwZT1cInJvdW5kXCIgc2l6ZT1cInNtYWxsXCI+NDwvaW9uLWJ1dHRvbj5cbiAgICAgIDxicj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJyZXNldCg2KVwiIGNvbG9yPVwibGlnaHRcIiBzaGFwZT1cInJvdW5kXCIgc2l6ZT1cInNtYWxsXCI+NjwvaW9uLWJ1dHRvbj5cbiAgICAgIDxicj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWdyaWQ+XG4iXX0=
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb25maWd1cmF0aW9uL3JhYWluLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29uZmlndXJhdGlvbi9yYWFpbi1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZ0JBQWdCLEVBQXdCLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7O0FBT2pDLE1BQU0sT0FBTywyQkFBMkI7SUErQnRDLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBekIzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFTN0MsYUFBUSxHQUFXLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFHaEMsYUFBUSxHQUFXLEVBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFDLENBQUM7UUFHcEMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVd0QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUMxQixDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZD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QUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3lIQTVMVSwyQkFBMkI7NkdBQTNCLDJCQUEyQix5Y0N0QnhDLDZuQkFpQkE7NEZES2EsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHFCQUFxQjs2RkFPeEIsTUFBTTtzQkFEWixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlJLGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsZUFBZTtnQkF1Q2xCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoYXJ0U2NhbGVDb2xvcnMsIENvbmZpZ3VyYXRpb25FbGVtZW50LCBDb25maWd1cmF0aW9uRWxlbWVudElucHV0LCBFbGVtZW50c0ZhY3RvcnksIFRvb2xzfSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncmFhaW4tY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWFpbi1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tY29uZmlndXJhdGlvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkNvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvaW50czogWFlUeXBlW107XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjaGFuZ2VkUG9pbnRzID0gbmV3IEV2ZW50RW1pdHRlcjxYWVR5cGVbXT4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50V2lkdGg6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWluUG9pbnQ6IFhZVHlwZSA9IHt4OiAwLCB5OiAwfTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4UG9pbnQ6IFhZVHlwZSA9IHt4OiAzMDAsIHk6IDEwMH07XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxvZ1N0eWxlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnY2FudmFzRWxlbWVudCcpXG4gIHByb3RlY3RlZCBjYW52YXNFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgY29uZmlndXJhdGlvbkVsZW1lbnQ6IENvbmZpZ3VyYXRpb25FbGVtZW50O1xuICBwcml2YXRlIG9uRHJhZztcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2VkO1xuICBwcml2YXRlIGNyZWF0ZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMub25TaXplQ2hhbmdlZCA9ICgpID0+IHtcbiAgICB9O1xuICAgIHRoaXMub25EcmFnID0gKGU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jaGFuZ2VkUG9pbnRzLmVtaXQodGhpcy5wb2ludHMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UoY2hhbmdlcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGUoKTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0KGNvdW50ID0gNCkge1xuICAgIGNvbnN0IHBvaW50cyA9IFtdO1xuICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY291bnQ7IGMrKykge1xuICAgICAgcG9pbnRzLnB1c2gobmV3IFhZVHlwZSgoYyArIDEpICogMTAsIChjICsgMSkgKiAwLjEpKTtcbiAgICB9XG4gICAgdGhpcy5wb2ludHMgPSBwb2ludHM7XG4gICAgYXdhaXQgdGhpcy5kZWxldGUoKTtcbiAgICB0aGlzLmNyZWF0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8vIHRoaXMudXBkYXRlTWFwU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGUoKSB7XG4gICAgaWYgKHRoaXMuY3JlYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZWQgPSB0cnVlO1xuXG4gICAgbGV0IGlucHV0cyA9IG5ldyBDb25maWd1cmF0aW9uRWxlbWVudElucHV0KHRoaXMucG9pbnRzLFxuICAgICAgdGhpcy5taW5Qb2ludCxcbiAgICAgIHRoaXMubWF4UG9pbnQsXG4gICAgICBmYWxzZSwgW10sXG4gICAgICB0aGlzLm9uRHJhZyk7XG4gICAgaWYgKHRoaXMubG9nU3R5bGUpIHtcbiAgICAgIGNvbnN0IGNvbmZUcmFuc3BhcmVuY3kgPSAwLjM7XG4gICAgICBpbnB1dHMgPSBuZXcgQ29uZmlndXJhdGlvbkVsZW1lbnRJbnB1dCh0aGlzLnBvaW50cyxcbiAgICAgICAgdGhpcy5taW5Qb2ludCxcbiAgICAgICAgdGhpcy5tYXhQb2ludCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMCddLCBjb25mVHJhbnNwYXJlbmN5KSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgwLjEpLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgwLjQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzAuNCddLCBjb25mVHJhbnNwYXJlbmN5KSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgwLjQpLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgxKVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6IFRvb2xzLmdldFRyYW5zcGFyZW5jeShDaGFydFNjYWxlQ29sb3JzWycxJ10sIGNvbmZUcmFuc3BhcmVuY3kpLFxuICAgICAgICAgICAgeVN0YXJ0OiBNYXRoLmxvZzEwKDEpLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgzKVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6IFRvb2xzLmdldFRyYW5zcGFyZW5jeShDaGFydFNjYWxlQ29sb3JzWyczJ10sIGNvbmZUcmFuc3BhcmVuY3kpLFxuICAgICAgICAgICAgeVN0YXJ0OiBNYXRoLmxvZzEwKDMpLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgxMClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMTAnXSwgY29uZlRyYW5zcGFyZW5jeSksXG4gICAgICAgICAgICB5U3RhcnQ6IE1hdGgubG9nMTAoMTApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgyMClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMjAnXSwgY29uZlRyYW5zcGFyZW5jeSksXG4gICAgICAgICAgICB5U3RhcnQ6IE1hdGgubG9nMTAoMjApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgzMClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snMzAnXSwgY29uZlRyYW5zcGFyZW5jeSksXG4gICAgICAgICAgICB5U3RhcnQ6IE1hdGgubG9nMTAoMzApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCg1MClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBUb29scy5nZXRUcmFuc3BhcmVuY3koQ2hhcnRTY2FsZUNvbG9yc1snNTAnXSwgY29uZlRyYW5zcGFyZW5jeSksXG4gICAgICAgICAgICB5U3RhcnQ6IE1hdGgubG9nMTAoNTApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgxMDApXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzEwMCddLCBjb25mVHJhbnNwYXJlbmN5KSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgxMDApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgxNTApXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzE1MCddLCBjb25mVHJhbnNwYXJlbmN5KSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgxNTApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgyMDApXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzIwMCddLCBjb25mVHJhbnNwYXJlbmN5KSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgyMDApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgyNTApXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzI1MCddLCBjb25mVHJhbnNwYXJlbmN5KSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgyNTApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCgzMDApXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogVG9vbHMuZ2V0VHJhbnNwYXJlbmN5KENoYXJ0U2NhbGVDb2xvcnNbJzMwMCddLCBjb25mVHJhbnNwYXJlbmN5KSxcbiAgICAgICAgICAgIHlTdGFydDogTWF0aC5sb2cxMCgzMDApLFxuICAgICAgICAgICAgeUVuZDogTWF0aC5sb2cxMCg1MDApXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGhpcy5vbkRyYWcpO1xuICAgIH1cblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IEVsZW1lbnRzRmFjdG9yeSgpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25FbGVtZW50ID0gZmFjdG9yeS5jcmVhdGVDb25maWd1cmF0aW9uKHRoaXMuY2FudmFzRWxlbWVudC5uYXRpdmVFbGVtZW50LCBpbnB1dHMpO1xuICAgICAgfSwgMTApO1xuICAgIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZSgpIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25FbGVtZW50Py5jaGFydD8uZGVzdHJveSgpO1xuICAgIHRoaXMuY3JlYXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIC8vIGNvbnNvbGUubG9nKCdjaGFuZ2VkJywgY2hhbmdlcyk7XG4gICAgYXdhaXQgdGhpcy5kZWxldGUoKTtcbiAgICB0aGlzLmNyZWF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNYXBTaXplKCk6IHZvaWQge1xuXG4gICAgY29uc3QgbWFwRGl2V2lkdGggPSB0aGlzLmNhbnZhc0VsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlPy5wYXJlbnROb2RlWydjbGllbnRXaWR0aCddO1xuICAgIGNvbnN0IHBhZGRpbmcgPSAyMDtcbiAgICBsZXQgY3VycmVudFdpZHRoID0gbWFwRGl2V2lkdGggfHxcbiAgICAgICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCk7XG4gICAgY29uc3QgY3VycmVudEhlaWdodCA9IHRoaXMuY3VycmVudEhlaWdodCB8fFxuICAgICAgKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgICBjdXJyZW50V2lkdGggLT0gcGFkZGluZztcbiAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IGN1cnJlbnRXaWR0aDtcbiAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSBjdXJyZW50SGVpZ2h0O1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMub25TaXplQ2hhbmdlZCgpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8aW9uLWdyaWQ+XG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sIGlkPVwiY29sLWNvbnRhaW5lclwiIHNpemUteHM9XCIxMFwiPlxuICAgICAgPGRpdiBbc3R5bGUuaGVpZ2h0LnB4XT1cImN1cnJlbnRIZWlnaHRcIiBpZD1cImNhbnZhcy1jb250YWluZXJcIj5cbiAgICAgICAgPGNhbnZhcyAjY2FudmFzRWxlbWVudD48L2NhbnZhcz5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBzaXplLXhzPVwiMlwiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0KDIpXCIgY29sb3I9XCJsaWdodFwiIHNoYXBlPVwicm91bmRcIiBzaXplPVwic21hbGxcIj4yPC9pb24tYnV0dG9uPlxuICAgICAgPGJyPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0KDQpXCIgY29sb3I9XCJsaWdodFwiIHNoYXBlPVwicm91bmRcIiBzaXplPVwic21hbGxcIj40PC9pb24tYnV0dG9uPlxuICAgICAgPGJyPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0KDYpXCIgY29sb3I9XCJsaWdodFwiIHNoYXBlPVwicm91bmRcIiBzaXplPVwic21hbGxcIj42PC9pb24tYnV0dG9uPlxuICAgICAgPGJyPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuPC9pb24tZ3JpZD5cbiJdfQ==