raain-app 1.2.1 → 1.2.2

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.
@@ -48,7 +48,9 @@ export class ProfileService {
48
48
  }
49
49
  }
50
50
  getEmail() {
51
- return this.email;
51
+ let email = this.email;
52
+ email = email || this.storage.get('email');
53
+ return email;
52
54
  }
53
55
  setEmail(email) {
54
56
  this.email = email;
@@ -124,7 +126,7 @@ export class ProfileService {
124
126
  return new EventNode(resp.data);
125
127
  }
126
128
  catch (e) {
127
- console.error('createNotification error:', e);
129
+ await this.checkError(e);
128
130
  }
129
131
  return null;
130
132
  }
@@ -140,7 +142,7 @@ export class ProfileService {
140
142
  return resp.data.notifications.map(n => new EventNode(n));
141
143
  }
142
144
  catch (e) {
143
- console.error('createNotification error:', e);
145
+ await this.checkError(e);
144
146
  }
145
147
  return null;
146
148
  }
@@ -172,7 +174,7 @@ export class ProfileService {
172
174
  }
173
175
  }
174
176
  catch (e) {
175
- console.error('getTeams error:', e);
177
+ await this.checkError(e);
176
178
  }
177
179
  return teams;
178
180
  }
@@ -244,7 +246,7 @@ export class ProfileService {
244
246
  return new RadarNode(resp.data);
245
247
  }
246
248
  catch (e) {
247
- console.error('removeRadar error:', e);
249
+ await this.checkError(e);
248
250
  }
249
251
  }
250
252
  async getLonelyRadars(rains) {
@@ -436,13 +438,18 @@ export class ProfileService {
436
438
  }
437
439
  // === Gauges ===
438
440
  async getGauge(gaugeId) {
439
- const resp = await this.fidjService.sendOnEndpoint({
440
- key: 'gauges',
441
- verb: 'GET',
442
- relativePath: gaugeId,
443
- defaultKeyUrl: this.defaultUrlForAPI + '/gauges'
444
- });
445
- return new GaugeNode(resp.data);
441
+ try {
442
+ const resp = await this.fidjService.sendOnEndpoint({
443
+ key: 'gauges',
444
+ verb: 'GET',
445
+ relativePath: gaugeId,
446
+ defaultKeyUrl: this.defaultUrlForAPI + '/gauges'
447
+ });
448
+ return new GaugeNode(resp.data);
449
+ }
450
+ catch (e) {
451
+ await this.checkError(e);
452
+ }
446
453
  }
447
454
  async getGauges(rainId) {
448
455
  let queryPath = '';
@@ -502,4 +509,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
502
509
  providedIn: 'root'
503
510
  }]
504
511
  }], ctorParameters: function () { return [{ type: i1.Storage }, { type: i2.FidjService }, { type: i3.HttpClient }, { type: i4.Router }]; } });
505
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9zaGFyZWQvcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsUUFBUSxFQUNULE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBQyxXQUFXLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUE4QixlQUFlLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sU0FBUyxDQUFDOzs7Ozs7QUFNeEMsTUFBTSxPQUFPLGNBQWM7SUFXekIsWUFBc0IsT0FBZ0IsRUFDaEIsV0FBd0IsRUFDeEIsVUFBc0IsRUFDeEIsTUFBYztRQUhaLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRWhDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJ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Q1YsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFlLEVBQUUsS0FBVyxFQUFFLEdBQVM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLE9BQU8sR0FBRyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4RyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO1lBQ2pELEdBQUcsRUFBRSxRQUFRO1lBQ2IsSUFBSSxFQUFFLEtBQUs7WUFDWCxZQUFZLEVBQUUsU0FBUztZQUN2QixhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVM7U0FDakQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxhQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xELGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrQkFBa0I7SUFFUixRQUFRLENBQUMsS0FBb0I7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQzs7NEdBaGpCVSxjQUFjO2dIQUFkLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRXZlbnROb2RlLFxuICBHYXVnZU1lYXN1cmUsXG4gIEdhdWdlTm9kZSxcbiAgUmFkYXJOb2RlLFxuICBSYWluQ29tcHV0YXRpb24sXG4gIFJhaW5Db21wdXRhdGlvbk1hcCxcbiAgUmFpbkNvbXB1dGF0aW9uUXVhbGl0eSxcbiAgUmFpbk5vZGUsXG4gIFNwZWVkTWF0cml4Q29udGFpbmVyLFxuICBUZWFtTm9kZVxufSBmcm9tICdyYWFpbi1tb2RlbCc7XG5cbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQge0ZpZGpTdG9yYWdlLCBGaWRqU3RvcmFnZU5vZGV9IGZyb20gJy4vZmlkai1zdG9yYWdlLm1vZGVsJztcbmltcG9ydCB7RXJyb3JJbnRlcmZhY2UsIEZpZGpTZXJ2aWNlLCBMb2dnZXJMZXZlbEVudW19IGZyb20gJ2ZpZGotYW5ndWxhcic7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi94eXR5cGUnO1xuaW1wb3J0IHtHYXVnZU5vZGVGaWx0ZXJ9IGZyb20gJy4vdG9vbHMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWR5Rm9yU3luYzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaWMgYXNUZWFtSWQ6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgZW1haWw6IHN0cmluZztcbiAgcHJvdGVjdGVkIGlzRGVtbzogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJvbGVzOiBBcnJheTxzdHJpbmc+O1xuICBwcm90ZWN0ZWQgbm9kZURhdGE6IEZpZGpTdG9yYWdlTm9kZTtcbiAgcHJvdGVjdGVkIGZpZGpTdG9yYWdlOiBGaWRqU3RvcmFnZTtcbiAgcHJvdGVjdGVkIGhhdmVUcnlUb1JlY29ubmVjdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGZpZGpTZXJ2aWNlOiBGaWRqU2VydmljZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsKSB7XG5cbiAgICBjb25zb2xlLmxvZygnUHJvZmlsZVNlcnZpY2U6IE5ldyMjIyMnKTtcblxuICAgIHRoaXMuZW1haWwgPSB0aGlzLnN0b3JhZ2UuZ2V0KCdlbWFpbCcpIHx8IG51bGw7XG4gICAgdGhpcy5hc1RlYW1JZCA9IHRoaXMuc3RvcmFnZS5nZXQoJ2FzVGVhbUlkJykgfHwgbnVsbDtcbiAgICB0aGlzLnJlYWR5Rm9yU3luYyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMucm9sZXMgPSBbXTtcbiAgICB0aGlzLmZpZGpTdG9yYWdlID0gbmV3IEZpZGpTdG9yYWdlKHN0b3JhZ2UpO1xuICAgIHRoaXMuaXNEZW1vTW9kZSA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzRGVtb01vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNEZW1vO1xuICB9XG5cbiAgc2V0IGlzRGVtb01vZGUobW9kZSkge1xuICAgIHRoaXMuaXNEZW1vID0gbW9kZSA/IG1vZGUgOiB0cnVlO1xuICAgIHRoaXMuZmlkalN0b3JhZ2Uuc2V0RGVtb01vZGUodGhpcy5pc0RlbW8pO1xuICB9XG5cbiAgZ2V0IGRlZmF1bHRVcmxGb3JBUEkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5nZXQoJ1VybEZvckFQSScpO1xuICB9XG5cbiAgc2V0IGRlZmF1bHRVcmxGb3JBUEkodXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdVcmxGb3JBUEknLCB1cmwpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFByb2ZpbGUoKTogUHJvbWlzZTxGaWRqU3RvcmFnZU5vZGU+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5ub2RlRGF0YSA9IGF3YWl0IHRoaXMuZmlkalN0b3JhZ2UuZ2V0UmVmcmVzaGVkTm9kZUNvcHkodGhpcy5maWRqU2VydmljZSk7XG4gICAgICB0aGlzLnNldFJvbGVzKGF3YWl0IHRoaXMuZmlkalNlcnZpY2UuZ2V0Um9sZXMoKSk7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlRGF0YTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RW1haWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1haWw7XG4gIH1cblxuICBzZXRFbWFpbChlbWFpbDogc3RyaW5nKSB7XG4gICAgdGhpcy5lbWFpbCA9IGVtYWlsO1xuICAgIHRoaXMuc3RvcmFnZS5zZXQoJ2VtYWlsJywgdGhpcy5lbWFpbCk7XG4gIH1cblxuICBhc3luYyBsb2dvdXQoZmlkaktleTogc3RyaW5nLCBmaWRqUHJvZDogYm9vbGVhbikge1xuXG4gICAgdGhpcy5zdG9yYWdlLnJlbW92ZSgnZW1haWwnKTtcbiAgICBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLmxvZ291dCh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLmluaXQoZmlkaktleSxcbiAgICAgICAge1xuICAgICAgICAgIGxvZ0xldmVsOiBMb2dnZXJMZXZlbEVudW0uSU5GTyxcbiAgICAgICAgICBjcnlwdG86IGZhbHNlLFxuICAgICAgICAgIHByb2Q6IGZpZGpQcm9kLFxuICAgICAgICAgIHVzZURCOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKCdpbml0RmlkaiBkb25lLicpO1xuICAgICAgdGhpcy5yZWFkeUZvclN5bmMubmV4dCh0cnVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2luaXRGaWRqIGNhdGNoIHBiOiAnLCBlcnIpO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgY2hlY2tFcnJvcihlcnJvcjogRXJyb3JJbnRlcmZhY2UpIHtcbiAgICBjb25zb2xlLndhcm4oJ2NoZWNrRXJyb3InLCBlcnJvcik7XG4gICAgaWYgKGVycm9yLmNvZGUgPT09IDQwMSkge1xuICAgICAgY29uc29sZS5sb2coJ2xvb2tzIG5vdCBsb2dnZWQgaW4nKTtcblxuICAgICAgaWYgKHRoaXMucm91dGVyLnVybC5pbmRleE9mKCdsb2dpbicpIDwgMCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHN5bmMgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdvdG9Mb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBnb3RvTG91dCgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJ2xvZ2luJykgPiAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbG9nb3V0Jywge3NraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZX0pO1xuICAgIC8vIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ291dCddKTtcbiAgICAvLyBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddKTtcbiAgfVxuXG4gIGFzeW5jIGdvdG9Mb2dpbigpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJ2xvZ2luJykgPiAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywge3NraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZX0pO1xuICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICB9XG5cbiAgaXNMb2dnZWRJbigpIHtcbiAgICByZXR1cm4gdGhpcy5maWRqU2VydmljZS5pc0xvZ2dlZEluKCk7XG4gIH1cblxuICBhc3luYyBzdG9yZUFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWRqU3RvcmFnZS5zdG9yZURhdGEodGhpcy5maWRqU2VydmljZSwgdGhpcy5ub2RlRGF0YSk7XG4gIH1cblxuICBpc0FkbWluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJvbGVzLmluZGV4T2YoJ2FkbWluJykgPiAtMTtcbiAgfVxuXG4gIC8vID09PSBOb3RpZmljYXRpb25zID09PVxuXG4gIGFzeW5jIGNyZWF0ZU5vdGlmaWNhdGlvbihyYWluSWQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAnbm90aWZpY2F0aW9ucycsXG4gICAgICAgIHZlcmI6ICdQT1NUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9ub3RpZmljYXRpb25zJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHJhaW46IHJhaW5JZCxcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IEV2ZW50Tm9kZShyZXNwLmRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2NyZWF0ZU5vdGlmaWNhdGlvbiBlcnJvcjonLCBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldE5vdGlmaWNhdGlvbnMocmFpbklkOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXJncyA9ICc/cmFpbj0nICsgcmFpbklkO1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdub3RpZmljYXRpb25zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogYXJncyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9ub3RpZmljYXRpb25zJyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzcC5kYXRhLm5vdGlmaWNhdGlvbnMubWFwKG4gPT4gbmV3IEV2ZW50Tm9kZShuKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignY3JlYXRlTm90aWZpY2F0aW9uIGVycm9yOicsIGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWxsTm90aWZpY2F0aW9ucygpOiBQcm9taXNlPEV2ZW50Tm9kZVtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAnbm90aWZpY2F0aW9ucycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL25vdGlmaWNhdGlvbnMnLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXNwLmRhdGEubm90aWZpY2F0aW9ucy5tYXAobiA9PiBuZXcgRXZlbnROb2RlKG4pKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gPT09IFRlYW1zID09PVxuXG4gIGFzeW5jIGdldFRlYW1zKCk6IFByb21pc2U8QXJyYXk8VGVhbU5vZGU+PiB7XG4gICAgY29uc3QgdGVhbXMgPSBbXTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICd0ZWFtc19hbGwnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy90ZWFtc19hbGwnXG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgdGVhbSBvZiByZXNwLmRhdGEudGVhbXMpIHtcbiAgICAgICAgdGVhbXMucHVzaChuZXcgVGVhbU5vZGUodGVhbSkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2dldFRlYW1zIGVycm9yOicsIGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGVhbXM7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtKHRlYW1JZDogc3RyaW5nKTogUHJvbWlzZTxUZWFtTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3RlYW1zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogdGVhbUlkLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3RlYW1zJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFRlYW1Ob2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gPT09IFJhZGFycyA9PT1cblxuICBhc3luYyBnZXRSYWRhcnModGVhbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFJhZGFyTm9kZT4+IHtcbiAgICBjb25zdCByYWRhcnMgPSBbXTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycycgKyAodGVhbUlkID8gJz90ZWFtSWQ9JyArIHRlYW1JZCA6ICcnKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWRhcnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdXJsLFxuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHIgb2YgcmVzcC5kYXRhLnJhZGFycykge1xuICAgICAgICBjb25zdCByYWRhciA9IG5ldyBSYWRhck5vZGUocik7XG4gICAgICAgIHJhZGFycy5wdXNoKHJhZGFyKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiByYWRhcnM7XG4gIH1cblxuICBhc3luYyBnZXRSYWRhcihpZDogc3RyaW5nKTogUHJvbWlzZTxSYWRhck5vZGU+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWRhcnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBpZCxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWRhcnMnXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUmFkYXJOb2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcHV0UmFkYXIocmFkYXJOb2RlOiBSYWRhck5vZGUsIGNvbmZpZ3VyYXRpb25Bc0pTT04/OiBhbnkpOiBQcm9taXNlPFJhZGFyTm9kZT4ge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBuYW1lOiByYWRhck5vZGUubmFtZSxcbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb25Bc0pTT04pIHtcbiAgICAgIGRhdGFbJ2NvbmZpZ3VyYXRpb25Bc0pTT04nXSA9IGNvbmZpZ3VyYXRpb25Bc0pTT047XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFkYXJzJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiByYWRhck5vZGUuaWQsXG4gICAgICAgIHZlcmI6ICdQVVQnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycy8nXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG5ldyBSYWRhck5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdyZW1vdmVSYWRhciBlcnJvcjonLCBlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRMb25lbHlSYWRhcnMocmFpbnM6IFJhaW5Ob2RlW10pOiBQcm9taXNlPFJhZGFyTm9kZVtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFkYXJzJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFkYXJzJ1xuICAgICAgfSk7XG4gICAgICBjb25zdCBsb25lbHlSYWRhcnM6IFJhZGFyTm9kZVtdID0gW107XG4gICAgICBjb25zdCByYWRhcnMgPSByZXNwLmRhdGEucmFkYXJzO1xuICAgICAgcmFkYXJzLmZvckVhY2gocmFkYXIgPT4ge1xuICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgcmFpbnMuZm9yRWFjaChyYWluID0+IHtcbiAgICAgICAgICBjb25zdCByZElkID0gcmFpbi5nZXRMaW5rSWQoJ3JhZGFyJywgMCk7XG4gICAgICAgICAgaWYgKHJkSWQgPT09IHJhZGFyLmlkKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgIGxvbmVseVJhZGFycy5wdXNoKHJhZGFyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbG9uZWx5UmFkYXJzO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpblRpbWVmcmFtZShyYWluSWQ6IHN0cmluZywgYmVnaW46IERhdGUsIGVuZDogRGF0ZSwgZm9yY2VkID0gZmFsc2UpOiBQcm9taXNlPFJhaW5Ob2RlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBxdWVyeVBhdGggPSAnJyArIHJhaW5JZCArICc/Zm9ybWF0PXRpbWVmcmFtZSc7XG4gICAgICBpZiAoYmVnaW4pIHtcbiAgICAgICAgcXVlcnlQYXRoICs9ICcmYmVnaW49JyArIGJlZ2luLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kKSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnJmVuZD0nICsgZW5kLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICBpZiAoZm9yY2VkKSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnJmZvcmNlZD10cnVlJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJhaW5Ob2RlID0gbmV3IFJhaW5Ob2RlKHJlc3AuZGF0YS50aW1lZnJhbWUpO1xuICAgICAgcmFpbk5vZGUubmFtZSArPSAnLnJhZGFyLnRpbWVmcmFtZSc7XG4gICAgICByZXR1cm4gcmFpbk5vZGU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vID09PSBSYWlucyA9PT1cblxuICBhc3luYyBnZXRSYWlucyh0ZWFtSWQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8UmFpbk5vZGU+PiB7XG4gICAgY29uc3QgcmFpbnMgPSBbXTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJyArICh0ZWFtSWQgPyAnP3RlYW1JZD0nICsgdGVhbUlkIDogJycpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHVybCxcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCByYWluIG9mIHJlc3AuZGF0YS5yYWlucykge1xuICAgICAgICByYWlucy5wdXNoKG5ldyBSYWluTm9kZShyYWluKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmFpbnM7XG4gIH1cblxuICBhc3luYyBnZXRSYWluKGlkOiBzdHJpbmcpOiBQcm9taXNlPFJhaW5Ob2RlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgICByZWxhdGl2ZVBhdGg6IGlkLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucy8nXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUmFpbk5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gPT09IENvdW50XG5cbiAgYXN5bmMgZ2V0Q291bnRzKHJhaW5JZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgcGVyaW9kQmVnaW4/OiBEYXRlLFxuICAgICAgICAgICAgICAgICAgcGVyaW9kRW5kPzogRGF0ZSxcbiAgICAgICAgICAgICAgICAgIHdpdGhRdWFsaXRpZXM/OiBib29sZWFuKTogUHJvbWlzZTx7XG4gICAgcmFkYXJNZWFzdXJlczogWFlUeXBlW10sXG4gICAgZ2F1Z2VNZWFzdXJlczogWFlUeXBlW10sXG4gICAgY29tcHV0YXRpb25zQnlUZWFtOiBYWVR5cGVbXSxcbiAgICBjb21wdXRhdGlvbnNJbnRlcm5hbDogWFlUeXBlW10sXG4gIH0+IHtcbiAgICB0cnkge1xuXG4gICAgICBsZXQgYXJncyA9ICcnO1xuICAgICAgaWYgKHBlcmlvZEJlZ2luICYmIHBlcmlvZEVuZCkge1xuICAgICAgICBhcmdzID0gJz9wZXJpb2RCZWdpbj0nICsgcGVyaW9kQmVnaW4udG9JU09TdHJpbmcoKSArICcmcGVyaW9kRW5kPScgKyBwZXJpb2RFbmQudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIGlmICh3aXRoUXVhbGl0aWVzKSB7XG4gICAgICAgIGFyZ3MgKz0gJyZ3aXRoUXVhbGl0aWVzPScgKyB3aXRoUXVhbGl0aWVzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiByYWluSWQgKyAnL2NvdW50cycgKyBhcmdzLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucy8nLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvdW50cyA9IHJlc3AuZGF0YS5jb3VudHM7XG4gICAgICBjb25zdCByYWRhck1lYXN1cmVzOiBYWVR5cGVbXSA9IFtdLFxuICAgICAgICBnYXVnZU1lYXN1cmVzOiBYWVR5cGVbXSA9IFtdLFxuICAgICAgICBjb21wdXRhdGlvbnNCeVRlYW06IFhZVHlwZVtdID0gW10sXG4gICAgICAgIGNvbXB1dGF0aW9uc0ludGVybmFsOiBYWVR5cGVbXSA9IFtdO1xuXG4gICAgICBjb3VudHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgcmFkYXJNZWFzdXJlcy5wdXNoKG5ldyBYWVR5cGUoMSwgTmFOLCBOYU4sIGMuX2lkKSk7XG4gICAgICAgIGdhdWdlTWVhc3VyZXMucHVzaChuZXcgWFlUeXBlKGMuZ2F1Z2VNZWFzdXJlcywgTmFOLCBOYU4sIGMuX2lkKSk7XG4gICAgICAgIGNvbXB1dGF0aW9uc0J5VGVhbS5wdXNoKG5ldyBYWVR5cGUoYy5jb21wdXRhdGlvbnNCeVRlYW0sIE5hTiwgTmFOLCBjLl9pZCkpO1xuICAgICAgICBjb21wdXRhdGlvbnNJbnRlcm5hbC5wdXNoKG5ldyBYWVR5cGUoYy5jb21wdXRhdGlvbnNJbnRlcm5hbCwgTmFOLCBOYU4sIGMuX2lkKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmFkYXJNZWFzdXJlcyxcbiAgICAgICAgZ2F1Z2VNZWFzdXJlcyxcbiAgICAgICAgY29tcHV0YXRpb25zQnlUZWFtLFxuICAgICAgICBjb21wdXRhdGlvbnNJbnRlcm5hbCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vID09PSBDb21wdXRpbmcgPT09XG5cbiAgYXN5bmMgbGF1bmNoUmFpbkNvbXB1dGF0aW9uKHJhaW5JZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogRGF0ZSk6IFByb21pc2U8UmFpbkNvbXB1dGF0aW9uW10+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgdmVyYjogJ1BPU1QnLFxuICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgcmVsYXRpdmVQYXRoOiAnJyArIHJhaW5JZCArICcvY29tcHV0YXRpb25zJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGF0ZTogZGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5jb21wdXRhdGlvbnM/Lm1hcChjID0+IG5ldyBSYWluQ29tcHV0YXRpb24oYykpO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpbkNvbXB1dGF0aW9uQ2FydGVzaWFuTWFwQnlJZChyYWluSWQ6IHN0cmluZywgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8UmFpbkNvbXB1dGF0aW9uTWFwPiB7XG4gICAgY29uc3QgcXVlcnlQYXRoID0gJycgKyByYWluSWQgKyAnL2NvbXB1dGF0aW9ucy8nICsgcmFpbkNvbXB1dGF0aW9uSWQgKyAnP2Zvcm1hdD1jYXJ0ZXNpYW4tbWFwJztcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnXG4gICAgfSk7XG4gICAgaWYgKCFyZXNwb25zZS5kYXRhWydjYXJ0ZXNpYW4tbWFwJ10pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJhaW5Db21wdXRhdGlvbk1hcCA9IG5ldyBSYWluQ29tcHV0YXRpb25NYXAocmVzcG9uc2UuZGF0YVsnY2FydGVzaWFuLW1hcCddKTtcbiAgICByYWluQ29tcHV0YXRpb25NYXAubmFtZSA9IHJhaW5JZCArICcucmFpbi5jYXJ0ZXNpYW4tbWFwJztcbiAgICByZXR1cm4gcmFpbkNvbXB1dGF0aW9uTWFwO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpbkNvbXBhcmVzKHJhaW5JZDogc3RyaW5nLCByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx7IGlkOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZyB9W10+IHtcbiAgICBjb25zdCBxdWVyeVBhdGggPSAnJyArIHJhaW5JZCArICcvY29tcHV0YXRpb25zLycgKyByYWluQ29tcHV0YXRpb25JZDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnLFxuICAgICAgLy8gdGltZW91dDogMjAwMDAwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmFpbkNvbXB1dGF0aW9uID0gbmV3IFJhaW5Db21wdXRhdGlvbihyZXNwb25zZS5kYXRhKTtcbiAgICBjb25zdCBsaW5rcyA9IHJhaW5Db21wdXRhdGlvbi5nZXRMaW5rcygpO1xuICAgIGNvbnN0IHJhaW5Db21wdXRhdGlvblF1YWxpdGllcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgaWYgKGxpbmsucmVsID09PSAncmFpbi1jb21wdXRhdGlvbi1xdWFsaXR5Jykge1xuICAgICAgICBjb25zdCBpZCA9IGxpbmsuZ2V0SWQoKTtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IGxpbmsuaHJlZi5zdWJzdHJpbmcobGluay5ocmVmLmluZGV4T2YoJ3ZlcnNpb24vJykgKyA4LCBsaW5rLmhyZWYuaW5kZXhPZignLycgKyBpZCkpO1xuICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXMucHVzaCh7aWQsIHZlcnNpb259KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJhaW5Db21wdXRhdGlvblF1YWxpdGllcztcbiAgfVxuXG4gIGFzeW5jIGdldFJhaW5Db21wYXJlQnlJZChyYWluSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXR5SWQ6IHN0cmluZyk6IFByb21pc2U8UmFpbkNvbXB1dGF0aW9uUXVhbGl0eT4ge1xuICAgIGNvbnN0IHF1ZXJ5UGF0aCA9ICcnICsgcmFpbklkICsgJy9jb21wdXRhdGlvbnMvJyArIHJhaW5Db21wdXRhdGlvbklkICsgJy9jb21wYXJlcy8nICsgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICBrZXk6ICdyYWlucycsXG4gICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgIHJlbGF0aXZlUGF0aDogcXVlcnlQYXRoLFxuICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucycsXG4gICAgfSk7XG5cbiAgICBjb25zdCByYWluQ29tcHV0YXRpb25RdWFsaXR5ID0gbmV3IFJhaW5Db21wdXRhdGlvblF1YWxpdHkocmVzcG9uc2UuZGF0YSk7XG4gICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eS5xdWFsaXR5U3BlZWRNYXRyaXhDb250YWluZXIgPSBTcGVlZE1hdHJpeENvbnRhaW5lclxuICAgICAgLkNyZWF0ZUZyb21Kc29uKHJhaW5Db21wdXRhdGlvblF1YWxpdHkucXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyKTtcbiAgICByZXR1cm4gcmFpbkNvbXB1dGF0aW9uUXVhbGl0eTtcbiAgfVxuXG4gIC8vID09PSBHYXVnZXMgPT09XG5cbiAgYXN5bmMgZ2V0R2F1Z2UoZ2F1Z2VJZDogc3RyaW5nKTogUHJvbWlzZTxHYXVnZU5vZGU+IHtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICBrZXk6ICdnYXVnZXMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IGdhdWdlSWQsXG4gICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL2dhdWdlcydcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IEdhdWdlTm9kZShyZXNwLmRhdGEpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2F1Z2VzKHJhaW5JZD86IHN0cmluZyk6IFByb21pc2U8QXJyYXk8R2F1Z2VOb2RlRmlsdGVyPj4ge1xuICAgIGxldCBxdWVyeVBhdGggPSAnJztcbiAgICBpZiAodGhpcy5hc1RlYW1JZCkge1xuICAgICAgcXVlcnlQYXRoICs9ICc/dGVhbUlkPScgKyB0aGlzLmFzVGVhbUlkO1xuICAgIH1cbiAgICBpZiAocmFpbklkKSB7XG4gICAgICBpZiAocXVlcnlQYXRoKSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnJic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWVyeVBhdGggKz0gJz8nO1xuICAgICAgfVxuICAgICAgcXVlcnlQYXRoICs9ICdyYWluSWQ9JyArIHJhaW5JZDtcbiAgICB9XG5cbiAgICBjb25zdCBnYXVnZXMgPSBbXTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdnYXVnZXMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvZ2F1Z2VzJ1xuICAgICAgfSk7XG5cbiAgICAgIGZvciAoY29uc3QgZ2F1Z2Ugb2YgcmVzcC5kYXRhLmdhdWdlcykge1xuICAgICAgICBnYXVnZXMucHVzaChuZXcgR2F1Z2VOb2RlRmlsdGVyKGdhdWdlKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gZ2F1Z2VzO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2F1Z2VNZWFzdXJlcyhnYXVnZUlkOiBzdHJpbmcsIGJlZ2luOiBEYXRlLCBlbmQ6IERhdGUpOiBQcm9taXNlPEdhdWdlTWVhc3VyZVtdPiB7XG4gICAgY29uc3QgcXVlcnlQYXRoID0gJycgKyBnYXVnZUlkICsgJy9tZWFzdXJlcz9iZWdpbj0nICsgYmVnaW4udG9JU09TdHJpbmcoKSArICcmZW5kPScgKyBlbmQudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICBrZXk6ICdnYXVnZXMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvZ2F1Z2VzJ1xuICAgIH0pO1xuXG4gICAgY29uc3QgZ2F1Z2VNZWFzdXJlczogR2F1Z2VNZWFzdXJlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGdhdWdlTWVhc3VyZSBvZiByZXNwLmRhdGEuZ2F1Z2VNZWFzdXJlcykge1xuICAgICAgZ2F1Z2VNZWFzdXJlcy5wdXNoKG5ldyBHYXVnZU1lYXN1cmUoZ2F1Z2VNZWFzdXJlKSk7XG4gICAgfVxuICAgIHJldHVybiBnYXVnZU1lYXN1cmVzO1xuICB9XG5cbiAgLy8gPT09IFByaXZhdGUgPT09XG5cbiAgcHJvdGVjdGVkIHNldFJvbGVzKHJvbGVzOiBBcnJheTxzdHJpbmc+KTogdm9pZCB7XG4gICAgdGhpcy5yb2xlcyA9IHJvbGVzO1xuICB9XG5cbn1cbiJdfQ==
512
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9zaGFyZWQvcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsUUFBUSxFQUNULE1BQU0sYUFBYSxDQUFDO0FBSXJCLE9BQU8sRUFBQyxXQUFXLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUE4QixlQUFlLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sU0FBUyxDQUFDOzs7Ozs7QUFNeEMsTUFBTSxPQUFPLGNBQWM7SUFXekIsWUFBc0IsT0FBZ0IsRUFDaEIsV0FBd0IsRUFDeEIsVUFBc0IsRUFDeEIsTUFBYztRQUhaLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRWhDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJ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QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEV2ZW50Tm9kZSxcbiAgR2F1Z2VNZWFzdXJlLFxuICBHYXVnZU5vZGUsXG4gIFJhZGFyTm9kZSxcbiAgUmFpbkNvbXB1dGF0aW9uLFxuICBSYWluQ29tcHV0YXRpb25NYXAsXG4gIFJhaW5Db21wdXRhdGlvblF1YWxpdHksXG4gIFJhaW5Ob2RlLFxuICBTcGVlZE1hdHJpeENvbnRhaW5lcixcbiAgVGVhbU5vZGVcbn0gZnJvbSAncmFhaW4tbW9kZWwnO1xuXG5pbXBvcnQge1N0b3JhZ2V9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHtGaWRqU3RvcmFnZSwgRmlkalN0b3JhZ2VOb2RlfSBmcm9tICcuL2ZpZGotc3RvcmFnZS5tb2RlbCc7XG5pbXBvcnQge0Vycm9ySW50ZXJmYWNlLCBGaWRqU2VydmljZSwgTG9nZ2VyTGV2ZWxFbnVtfSBmcm9tICdmaWRqLWFuZ3VsYXInO1xuaW1wb3J0IHtYWVR5cGV9IGZyb20gJy4veHl0eXBlJztcbmltcG9ydCB7R2F1Z2VOb2RlRmlsdGVyfSBmcm9tICcuL3Rvb2xzJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlU2VydmljZSB7XG4gIHB1YmxpYyByZWFkeUZvclN5bmM6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIGFzVGVhbUlkOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGVtYWlsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBpc0RlbW86IGJvb2xlYW47XG4gIHByb3RlY3RlZCByb2xlczogQXJyYXk8c3RyaW5nPjtcbiAgcHJvdGVjdGVkIG5vZGVEYXRhOiBGaWRqU3RvcmFnZU5vZGU7XG4gIHByb3RlY3RlZCBmaWRqU3RvcmFnZTogRmlkalN0b3JhZ2U7XG4gIHByb3RlY3RlZCBoYXZlVHJ5VG9SZWNvbm5lY3Q6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHN0b3JhZ2U6IFN0b3JhZ2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBmaWRqU2VydmljZTogRmlkalNlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgICAgICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLCkge1xuXG4gICAgY29uc29sZS5sb2coJ1Byb2ZpbGVTZXJ2aWNlOiBOZXcjIyMjJyk7XG5cbiAgICB0aGlzLmVtYWlsID0gdGhpcy5zdG9yYWdlLmdldCgnZW1haWwnKSB8fCBudWxsO1xuICAgIHRoaXMuYXNUZWFtSWQgPSB0aGlzLnN0b3JhZ2UuZ2V0KCdhc1RlYW1JZCcpIHx8IG51bGw7XG4gICAgdGhpcy5yZWFkeUZvclN5bmMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnJvbGVzID0gW107XG4gICAgdGhpcy5maWRqU3RvcmFnZSA9IG5ldyBGaWRqU3RvcmFnZShzdG9yYWdlKTtcbiAgICB0aGlzLmlzRGVtb01vZGUgPSBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc0RlbW9Nb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGVtbztcbiAgfVxuXG4gIHNldCBpc0RlbW9Nb2RlKG1vZGUpIHtcbiAgICB0aGlzLmlzRGVtbyA9IG1vZGUgPyBtb2RlIDogdHJ1ZTtcbiAgICB0aGlzLmZpZGpTdG9yYWdlLnNldERlbW9Nb2RlKHRoaXMuaXNEZW1vKTtcbiAgfVxuXG4gIGdldCBkZWZhdWx0VXJsRm9yQVBJKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0KCdVcmxGb3JBUEknKTtcbiAgfVxuXG4gIHNldCBkZWZhdWx0VXJsRm9yQVBJKHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yYWdlLnNldCgnVXJsRm9yQVBJJywgdXJsKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hQcm9maWxlKCk6IFByb21pc2U8RmlkalN0b3JhZ2VOb2RlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubm9kZURhdGEgPSBhd2FpdCB0aGlzLmZpZGpTdG9yYWdlLmdldFJlZnJlc2hlZE5vZGVDb3B5KHRoaXMuZmlkalNlcnZpY2UpO1xuICAgICAgdGhpcy5zZXRSb2xlcyhhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLmdldFJvbGVzKCkpO1xuICAgICAgcmV0dXJuIHRoaXMubm9kZURhdGE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVtYWlsKCkge1xuICAgIGxldCBlbWFpbCA9IHRoaXMuZW1haWw7XG4gICAgZW1haWwgPSBlbWFpbCB8fCB0aGlzLnN0b3JhZ2UuZ2V0KCdlbWFpbCcpO1xuICAgIHJldHVybiBlbWFpbDtcbiAgfVxuXG4gIHNldEVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVtYWlsID0gZW1haWw7XG4gICAgdGhpcy5zdG9yYWdlLnNldCgnZW1haWwnLCB0aGlzLmVtYWlsKTtcbiAgfVxuXG4gIGFzeW5jIGxvZ291dChmaWRqS2V5OiBzdHJpbmcsIGZpZGpQcm9kOiBib29sZWFuKSB7XG5cbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlKCdlbWFpbCcpO1xuICAgIGF3YWl0IHRoaXMuZmlkalNlcnZpY2UubG9nb3V0KHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZmlkalNlcnZpY2UuaW5pdChmaWRqS2V5LFxuICAgICAgICB7XG4gICAgICAgICAgbG9nTGV2ZWw6IExvZ2dlckxldmVsRW51bS5JTkZPLFxuICAgICAgICAgIGNyeXB0bzogZmFsc2UsXG4gICAgICAgICAgcHJvZDogZmlkalByb2QsXG4gICAgICAgICAgdXNlREI6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgY29uc29sZS5sb2coJ2luaXRGaWRqIGRvbmUuJyk7XG4gICAgICB0aGlzLnJlYWR5Rm9yU3luYy5uZXh0KHRydWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignaW5pdEZpZGogY2F0Y2ggcGI6ICcsIGVycik7XG4gICAgfVxuXG4gIH1cblxuICBhc3luYyBjaGVja0Vycm9yKGVycm9yOiBFcnJvckludGVyZmFjZSkge1xuICAgIGNvbnNvbGUud2FybignY2hlY2tFcnJvcicsIGVycm9yKTtcbiAgICBpZiAoZXJyb3IuY29kZSA9PT0gNDAxKSB7XG4gICAgICBjb25zb2xlLmxvZygnbG9va3Mgbm90IGxvZ2dlZCBpbicpO1xuXG4gICAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJ2xvZ2luJykgPCAwKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qgc3luYyA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc3luYygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ290b0xvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdvdG9Mb3V0KCkge1xuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5kZXhPZignbG9naW4nKSA+IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9sb2dvdXQnLCB7c2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlfSk7XG4gICAgLy8gYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9nb3V0J10pO1xuICAgIC8vIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICB9XG5cbiAgYXN5bmMgZ290b0xvZ2luKCkge1xuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5kZXhPZignbG9naW4nKSA+IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7c2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlfSk7XG4gICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XG4gIH1cblxuICBpc0xvZ2dlZEluKCkge1xuICAgIHJldHVybiB0aGlzLmZpZGpTZXJ2aWNlLmlzTG9nZ2VkSW4oKTtcbiAgfVxuXG4gIGFzeW5jIHN0b3JlQWxsKCkge1xuICAgIHJldHVybiB0aGlzLmZpZGpTdG9yYWdlLnN0b3JlRGF0YSh0aGlzLmZpZGpTZXJ2aWNlLCB0aGlzLm5vZGVEYXRhKTtcbiAgfVxuXG4gIGlzQWRtaW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm9sZXMuaW5kZXhPZignYWRtaW4nKSA+IC0xO1xuICB9XG5cbiAgLy8gPT09IE5vdGlmaWNhdGlvbnMgPT09XG5cbiAgYXN5bmMgY3JlYXRlTm90aWZpY2F0aW9uKHJhaW5JZDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdub3RpZmljYXRpb25zJyxcbiAgICAgICAgdmVyYjogJ1BPU1QnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL25vdGlmaWNhdGlvbnMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmFpbjogcmFpbklkLFxuICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgRXZlbnROb2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZ2V0Tm90aWZpY2F0aW9ucyhyYWluSWQ6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcmdzID0gJz9yYWluPScgKyByYWluSWQ7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ25vdGlmaWNhdGlvbnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBhcmdzLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL25vdGlmaWNhdGlvbnMnLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXNwLmRhdGEubm90aWZpY2F0aW9ucy5tYXAobiA9PiBuZXcgRXZlbnROb2RlKG4pKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBnZXRBbGxOb3RpZmljYXRpb25zKCk6IFByb21pc2U8RXZlbnROb2RlW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdub3RpZmljYXRpb25zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvbm90aWZpY2F0aW9ucycsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3AuZGF0YS5ub3RpZmljYXRpb25zLm1hcChuID0+IG5ldyBFdmVudE5vZGUobikpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyA9PT0gVGVhbXMgPT09XG5cbiAgYXN5bmMgZ2V0VGVhbXMoKTogUHJvbWlzZTxBcnJheTxUZWFtTm9kZT4+IHtcbiAgICBjb25zdCB0ZWFtcyA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3RlYW1zX2FsbCcsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3RlYW1zX2FsbCdcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCB0ZWFtIG9mIHJlc3AuZGF0YS50ZWFtcykge1xuICAgICAgICB0ZWFtcy5wdXNoKG5ldyBUZWFtTm9kZSh0ZWFtKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGVhbXM7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtKHRlYW1JZDogc3RyaW5nKTogUHJvbWlzZTxUZWFtTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3RlYW1zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogdGVhbUlkLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3RlYW1zJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFRlYW1Ob2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gPT09IFJhZGFycyA9PT1cblxuICBhc3luYyBnZXRSYWRhcnModGVhbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFJhZGFyTm9kZT4+IHtcbiAgICBjb25zdCByYWRhcnMgPSBbXTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycycgKyAodGVhbUlkID8gJz90ZWFtSWQ9JyArIHRlYW1JZCA6ICcnKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWRhcnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdXJsLFxuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHIgb2YgcmVzcC5kYXRhLnJhZGFycykge1xuICAgICAgICBjb25zdCByYWRhciA9IG5ldyBSYWRhck5vZGUocik7XG4gICAgICAgIHJhZGFycy5wdXNoKHJhZGFyKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiByYWRhcnM7XG4gIH1cblxuICBhc3luYyBnZXRSYWRhcihpZDogc3RyaW5nKTogUHJvbWlzZTxSYWRhck5vZGU+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWRhcnMnLFxuICAgICAgICB2ZXJiOiAnR0VUJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBpZCxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWRhcnMnXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgUmFkYXJOb2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcHV0UmFkYXIocmFkYXJOb2RlOiBSYWRhck5vZGUsIGNvbmZpZ3VyYXRpb25Bc0pTT04/OiBhbnkpOiBQcm9taXNlPFJhZGFyTm9kZT4ge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBuYW1lOiByYWRhck5vZGUubmFtZSxcbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb25Bc0pTT04pIHtcbiAgICAgIGRhdGFbJ2NvbmZpZ3VyYXRpb25Bc0pTT04nXSA9IGNvbmZpZ3VyYXRpb25Bc0pTT047XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAncmFkYXJzJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiByYWRhck5vZGUuaWQsXG4gICAgICAgIHZlcmI6ICdQVVQnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycy8nXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG5ldyBSYWRhck5vZGUocmVzcC5kYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0TG9uZWx5UmFkYXJzKHJhaW5zOiBSYWluTm9kZVtdKTogUHJvbWlzZTxSYWRhck5vZGVbXT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhZGFycycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhZGFycydcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbG9uZWx5UmFkYXJzOiBSYWRhck5vZGVbXSA9IFtdO1xuICAgICAgY29uc3QgcmFkYXJzID0gcmVzcC5kYXRhLnJhZGFycztcbiAgICAgIHJhZGFycy5mb3JFYWNoKHJhZGFyID0+IHtcbiAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICAgIHJhaW5zLmZvckVhY2gocmFpbiA9PiB7XG4gICAgICAgICAgY29uc3QgcmRJZCA9IHJhaW4uZ2V0TGlua0lkKCdyYWRhcicsIDApO1xuICAgICAgICAgIGlmIChyZElkID09PSByYWRhci5pZCkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICBsb25lbHlSYWRhcnMucHVzaChyYWRhcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGxvbmVseVJhZGFycztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXJyb3IoZSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGFzeW5jIGdldFJhaW5UaW1lZnJhbWUocmFpbklkOiBzdHJpbmcsIGJlZ2luOiBEYXRlLCBlbmQ6IERhdGUsIGZvcmNlZCA9IGZhbHNlKTogUHJvbWlzZTxSYWluTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBsZXQgcXVlcnlQYXRoID0gJycgKyByYWluSWQgKyAnP2Zvcm1hdD10aW1lZnJhbWUnO1xuICAgICAgaWYgKGJlZ2luKSB7XG4gICAgICAgIHF1ZXJ5UGF0aCArPSAnJmJlZ2luPScgKyBiZWdpbi50b0lTT1N0cmluZygpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCkge1xuICAgICAgICBxdWVyeVBhdGggKz0gJyZlbmQ9JyArIGVuZC50b0lTT1N0cmluZygpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcmNlZCkge1xuICAgICAgICBxdWVyeVBhdGggKz0gJyZmb3JjZWQ9dHJ1ZSc7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogcXVlcnlQYXRoLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJ1xuICAgICAgfSk7XG4gICAgICBjb25zdCByYWluTm9kZSA9IG5ldyBSYWluTm9kZShyZXNwLmRhdGEudGltZWZyYW1lKTtcbiAgICAgIHJhaW5Ob2RlLm5hbWUgKz0gJy5yYWRhci50aW1lZnJhbWUnO1xuICAgICAgcmV0dXJuIHJhaW5Ob2RlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyA9PT0gUmFpbnMgPT09XG5cbiAgYXN5bmMgZ2V0UmFpbnModGVhbUlkOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFJhaW5Ob2RlPj4ge1xuICAgIGNvbnN0IHJhaW5zID0gW107XG4gICAgY29uc3QgdXJsID0gdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9yYWlucycgKyAodGVhbUlkID8gJz90ZWFtSWQ9JyArIHRlYW1JZCA6ICcnKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWlucycsXG4gICAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB1cmwsXG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgcmFpbiBvZiByZXNwLmRhdGEucmFpbnMpIHtcbiAgICAgICAgcmFpbnMucHVzaChuZXcgUmFpbk5vZGUocmFpbikpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhaW5zO1xuICB9XG5cbiAgYXN5bmMgZ2V0UmFpbihpZDogc3RyaW5nKTogUHJvbWlzZTxSYWluTm9kZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5maWRqU2VydmljZS5zZW5kT25FbmRwb2ludCh7XG4gICAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgICAgcmVsYXRpdmVQYXRoOiBpZCxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMvJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFJhaW5Ob2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vID09PSBDb3VudFxuXG4gIGFzeW5jIGdldENvdW50cyhyYWluSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgIHBlcmlvZEJlZ2luPzogRGF0ZSxcbiAgICAgICAgICAgICAgICAgIHBlcmlvZEVuZD86IERhdGUsXG4gICAgICAgICAgICAgICAgICB3aXRoUXVhbGl0aWVzPzogYm9vbGVhbik6IFByb21pc2U8e1xuICAgIHJhZGFyTWVhc3VyZXM6IFhZVHlwZVtdLFxuICAgIGdhdWdlTWVhc3VyZXM6IFhZVHlwZVtdLFxuICAgIGNvbXB1dGF0aW9uc0J5VGVhbTogWFlUeXBlW10sXG4gICAgY29tcHV0YXRpb25zSW50ZXJuYWw6IFhZVHlwZVtdLFxuICB9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgbGV0IGFyZ3MgPSAnJztcbiAgICAgIGlmIChwZXJpb2RCZWdpbiAmJiBwZXJpb2RFbmQpIHtcbiAgICAgICAgYXJncyA9ICc/cGVyaW9kQmVnaW49JyArIHBlcmlvZEJlZ2luLnRvSVNPU3RyaW5nKCkgKyAnJnBlcmlvZEVuZD0nICsgcGVyaW9kRW5kLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9XG4gICAgICBpZiAod2l0aFF1YWxpdGllcykge1xuICAgICAgICBhcmdzICs9ICcmd2l0aFF1YWxpdGllcz0nICsgd2l0aFF1YWxpdGllcztcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAgICBrZXk6ICdyYWlucycsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogcmFpbklkICsgJy9jb3VudHMnICsgYXJncyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMvJyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb3VudHMgPSByZXNwLmRhdGEuY291bnRzO1xuICAgICAgY29uc3QgcmFkYXJNZWFzdXJlczogWFlUeXBlW10gPSBbXSxcbiAgICAgICAgZ2F1Z2VNZWFzdXJlczogWFlUeXBlW10gPSBbXSxcbiAgICAgICAgY29tcHV0YXRpb25zQnlUZWFtOiBYWVR5cGVbXSA9IFtdLFxuICAgICAgICBjb21wdXRhdGlvbnNJbnRlcm5hbDogWFlUeXBlW10gPSBbXTtcblxuICAgICAgY291bnRzLmZvckVhY2goYyA9PiB7XG4gICAgICAgIHJhZGFyTWVhc3VyZXMucHVzaChuZXcgWFlUeXBlKDEsIE5hTiwgTmFOLCBjLl9pZCkpO1xuICAgICAgICBnYXVnZU1lYXN1cmVzLnB1c2gobmV3IFhZVHlwZShjLmdhdWdlTWVhc3VyZXMsIE5hTiwgTmFOLCBjLl9pZCkpO1xuICAgICAgICBjb21wdXRhdGlvbnNCeVRlYW0ucHVzaChuZXcgWFlUeXBlKGMuY29tcHV0YXRpb25zQnlUZWFtLCBOYU4sIE5hTiwgYy5faWQpKTtcbiAgICAgICAgY29tcHV0YXRpb25zSW50ZXJuYWwucHVzaChuZXcgWFlUeXBlKGMuY29tcHV0YXRpb25zSW50ZXJuYWwsIE5hTiwgTmFOLCBjLl9pZCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJhZGFyTWVhc3VyZXMsXG4gICAgICAgIGdhdWdlTWVhc3VyZXMsXG4gICAgICAgIGNvbXB1dGF0aW9uc0J5VGVhbSxcbiAgICAgICAgY29tcHV0YXRpb25zSW50ZXJuYWwsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyA9PT0gQ29tcHV0aW5nID09PVxuXG4gIGFzeW5jIGxhdW5jaFJhaW5Db21wdXRhdGlvbihyYWluSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6IERhdGUpOiBQcm9taXNlPFJhaW5Db21wdXRhdGlvbltdPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgIHZlcmI6ICdQT1NUJyxcbiAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgIHJlbGF0aXZlUGF0aDogJycgKyByYWluSWQgKyAnL2NvbXB1dGF0aW9ucycsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGRhdGU6IGRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJ1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuY29tcHV0YXRpb25zPy5tYXAoYyA9PiBuZXcgUmFpbkNvbXB1dGF0aW9uKGMpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFJhaW5Db21wdXRhdGlvbkNhcnRlc2lhbk1hcEJ5SWQocmFpbklkOiBzdHJpbmcsIHJhaW5Db21wdXRhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJhaW5Db21wdXRhdGlvbk1hcD4ge1xuICAgIGNvbnN0IHF1ZXJ5UGF0aCA9ICcnICsgcmFpbklkICsgJy9jb21wdXRhdGlvbnMvJyArIHJhaW5Db21wdXRhdGlvbklkICsgJz9mb3JtYXQ9Y2FydGVzaWFuLW1hcCc7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJ1xuICAgIH0pO1xuICAgIGlmICghcmVzcG9uc2UuZGF0YVsnY2FydGVzaWFuLW1hcCddKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByYWluQ29tcHV0YXRpb25NYXAgPSBuZXcgUmFpbkNvbXB1dGF0aW9uTWFwKHJlc3BvbnNlLmRhdGFbJ2NhcnRlc2lhbi1tYXAnXSk7XG4gICAgcmFpbkNvbXB1dGF0aW9uTWFwLm5hbWUgPSByYWluSWQgKyAnLnJhaW4uY2FydGVzaWFuLW1hcCc7XG4gICAgcmV0dXJuIHJhaW5Db21wdXRhdGlvbk1hcDtcbiAgfVxuXG4gIGFzeW5jIGdldFJhaW5Db21wYXJlcyhyYWluSWQ6IHN0cmluZywgcmFpbkNvbXB1dGF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8eyBpZDogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcgfVtdPiB7XG4gICAgY29uc3QgcXVlcnlQYXRoID0gJycgKyByYWluSWQgKyAnL2NvbXB1dGF0aW9ucy8nICsgcmFpbkNvbXB1dGF0aW9uSWQ7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgIGtleTogJ3JhaW5zJyxcbiAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL3JhaW5zJyxcbiAgICAgIC8vIHRpbWVvdXQ6IDIwMDAwMCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJhaW5Db21wdXRhdGlvbiA9IG5ldyBSYWluQ29tcHV0YXRpb24ocmVzcG9uc2UuZGF0YSk7XG4gICAgY29uc3QgbGlua3MgPSByYWluQ29tcHV0YXRpb24uZ2V0TGlua3MoKTtcbiAgICBjb25zdCByYWluQ29tcHV0YXRpb25RdWFsaXRpZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgIGlmIChsaW5rLnJlbCA9PT0gJ3JhaW4tY29tcHV0YXRpb24tcXVhbGl0eScpIHtcbiAgICAgICAgY29uc3QgaWQgPSBsaW5rLmdldElkKCk7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBsaW5rLmhyZWYuc3Vic3RyaW5nKGxpbmsuaHJlZi5pbmRleE9mKCd2ZXJzaW9uLycpICsgOCwgbGluay5ocmVmLmluZGV4T2YoJy8nICsgaWQpKTtcbiAgICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzLnB1c2goe2lkLCB2ZXJzaW9ufSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByYWluQ29tcHV0YXRpb25RdWFsaXRpZXM7XG4gIH1cblxuICBhc3luYyBnZXRSYWluQ29tcGFyZUJ5SWQocmFpbklkOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25JZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eUlkOiBzdHJpbmcpOiBQcm9taXNlPFJhaW5Db21wdXRhdGlvblF1YWxpdHk+IHtcbiAgICBjb25zdCBxdWVyeVBhdGggPSAnJyArIHJhaW5JZCArICcvY29tcHV0YXRpb25zLycgKyByYWluQ29tcHV0YXRpb25JZCArICcvY29tcGFyZXMvJyArIHJhaW5Db21wdXRhdGlvblF1YWxpdHlJZDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAga2V5OiAncmFpbnMnLFxuICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICByZWxhdGl2ZVBhdGg6IHF1ZXJ5UGF0aCxcbiAgICAgIGRlZmF1bHRLZXlVcmw6IHRoaXMuZGVmYXVsdFVybEZvckFQSSArICcvcmFpbnMnLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmFpbkNvbXB1dGF0aW9uUXVhbGl0eSA9IG5ldyBSYWluQ29tcHV0YXRpb25RdWFsaXR5KHJlc3BvbnNlLmRhdGEpO1xuICAgIHJhaW5Db21wdXRhdGlvblF1YWxpdHkucXVhbGl0eVNwZWVkTWF0cml4Q29udGFpbmVyID0gU3BlZWRNYXRyaXhDb250YWluZXJcbiAgICAgIC5DcmVhdGVGcm9tSnNvbihyYWluQ29tcHV0YXRpb25RdWFsaXR5LnF1YWxpdHlTcGVlZE1hdHJpeENvbnRhaW5lcik7XG4gICAgcmV0dXJuIHJhaW5Db21wdXRhdGlvblF1YWxpdHk7XG4gIH1cblxuICAvLyA9PT0gR2F1Z2VzID09PVxuXG4gIGFzeW5jIGdldEdhdWdlKGdhdWdlSWQ6IHN0cmluZyk6IFByb21pc2U8R2F1Z2VOb2RlPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAnZ2F1Z2VzJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogZ2F1Z2VJZCxcbiAgICAgICAgZGVmYXVsdEtleVVybDogdGhpcy5kZWZhdWx0VXJsRm9yQVBJICsgJy9nYXVnZXMnXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgR2F1Z2VOb2RlKHJlc3AuZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5jaGVja0Vycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldEdhdWdlcyhyYWluSWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PEdhdWdlTm9kZUZpbHRlcj4+IHtcbiAgICBsZXQgcXVlcnlQYXRoID0gJyc7XG4gICAgaWYgKHRoaXMuYXNUZWFtSWQpIHtcbiAgICAgIHF1ZXJ5UGF0aCArPSAnP3RlYW1JZD0nICsgdGhpcy5hc1RlYW1JZDtcbiAgICB9XG4gICAgaWYgKHJhaW5JZCkge1xuICAgICAgaWYgKHF1ZXJ5UGF0aCkge1xuICAgICAgICBxdWVyeVBhdGggKz0gJyYnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlQYXRoICs9ICc/JztcbiAgICAgIH1cbiAgICAgIHF1ZXJ5UGF0aCArPSAncmFpbklkPScgKyByYWluSWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZ2F1Z2VzID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmZpZGpTZXJ2aWNlLnNlbmRPbkVuZHBvaW50KHtcbiAgICAgICAga2V5OiAnZ2F1Z2VzJyxcbiAgICAgICAgdmVyYjogJ0dFVCcsXG4gICAgICAgIHJlbGF0aXZlUGF0aDogcXVlcnlQYXRoLFxuICAgICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL2dhdWdlcydcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGNvbnN0IGdhdWdlIG9mIHJlc3AuZGF0YS5nYXVnZXMpIHtcbiAgICAgICAgZ2F1Z2VzLnB1c2gobmV3IEdhdWdlTm9kZUZpbHRlcihnYXVnZSkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIGdhdWdlcztcbiAgfVxuXG4gIGFzeW5jIGdldEdhdWdlTWVhc3VyZXMoZ2F1Z2VJZDogc3RyaW5nLCBiZWdpbjogRGF0ZSwgZW5kOiBEYXRlKTogUHJvbWlzZTxHYXVnZU1lYXN1cmVbXT4ge1xuICAgIGNvbnN0IHF1ZXJ5UGF0aCA9ICcnICsgZ2F1Z2VJZCArICcvbWVhc3VyZXM/YmVnaW49JyArIGJlZ2luLnRvSVNPU3RyaW5nKCkgKyAnJmVuZD0nICsgZW5kLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuZmlkalNlcnZpY2Uuc2VuZE9uRW5kcG9pbnQoe1xuICAgICAga2V5OiAnZ2F1Z2VzJyxcbiAgICAgIHZlcmI6ICdHRVQnLFxuICAgICAgcmVsYXRpdmVQYXRoOiBxdWVyeVBhdGgsXG4gICAgICBkZWZhdWx0S2V5VXJsOiB0aGlzLmRlZmF1bHRVcmxGb3JBUEkgKyAnL2dhdWdlcydcbiAgICB9KTtcblxuICAgIGNvbnN0IGdhdWdlTWVhc3VyZXM6IEdhdWdlTWVhc3VyZVtdID0gW107XG4gICAgZm9yIChjb25zdCBnYXVnZU1lYXN1cmUgb2YgcmVzcC5kYXRhLmdhdWdlTWVhc3VyZXMpIHtcbiAgICAgIGdhdWdlTWVhc3VyZXMucHVzaChuZXcgR2F1Z2VNZWFzdXJlKGdhdWdlTWVhc3VyZSkpO1xuICAgIH1cbiAgICByZXR1cm4gZ2F1Z2VNZWFzdXJlcztcbiAgfVxuXG4gIC8vID09PSBQcml2YXRlID09PVxuXG4gIHByb3RlY3RlZCBzZXRSb2xlcyhyb2xlczogQXJyYXk8c3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMucm9sZXMgPSByb2xlcztcbiAgfVxuXG59XG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb21wYXJlLXN0YWNrL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29tcGFyZS1zdGFjay9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUzdFLE1BQU0sT0FBTywwQkFBMEI7SUFlckMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOM0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBMkMsQ0FBQztJQU9uRixDQUFDO0lBRVMsT0FBTyxDQUFDLENBQTBDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O3dIQXBCVSwwQkFBMEI7NEdBQTFCLDBCQUEwQixnTkNUdkMsdXdHQXNGQTs0RkQ3RWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQjs2RkFPeEIsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4uL3Rvb2xzL0NvbXBhcmVNYW5hZ2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncmFhaW4tY29tcGFyZS1zdGFjaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkNvbXBhcmVTdGFja0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVNYW5hZ2VyOiBDb21wYXJlTWFuYWdlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9PigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdW11bGF0aXZlOiBib29sZWFuO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xpY2soZTogeyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFBvaW50LmVtaXQoe3BvaW50OiBlLnBvaW50LCBjb21wYXJlSW5kZXg6IGUuY29tcGFyZUluZGV4fSk7XG4gIH1cblxuXG59XG4iLCI8aW9uLWdyaWQ+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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb21wYXJlLXN0YWNrL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29tcGFyZS1zdGFjay9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUzdFLE1BQU0sT0FBTywwQkFBMEI7SUFlckMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOM0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBMkMsQ0FBQztJQU9uRixDQUFDO0lBRVMsT0FBTyxDQUFDLENBQTBDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O3dIQXBCVSwwQkFBMEI7NEdBQTFCLDBCQUEwQixnTkNUdkMsdXdHQXNGQTs0RkQ3RWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQjs2RkFPeEIsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7Q29tcGFyZU1hbmFnZXJ9IGZyb20gJy4uL3Rvb2xzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncmFhaW4tY29tcGFyZS1zdGFjaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkNvbXBhcmVTdGFja0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVNYW5hZ2VyOiBDb21wYXJlTWFuYWdlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9PigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdW11bGF0aXZlOiBib29sZWFuO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xpY2soZTogeyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFBvaW50LmVtaXQoe3BvaW50OiBlLnBvaW50LCBjb21wYXJlSW5kZXg6IGUuY29tcGFyZUluZGV4fSk7XG4gIH1cblxuXG59XG4iLCI8aW9uLWdyaWQ+XG4gIDxpb24tcm93ICpuZ0lmPVwiY3VtdWxhdGl2ZVwiPlxuICAgIDxpb24tY29sIHNpemU9XCIxMlwiPlxuICAgICAgPGlvbi1jYXJkIGNsYXNzPVwiY2FyZC1jb21wYXJlXCI+XG4gICAgICAgIDxpb24tY2FyZC1oZWFkZXI+Q3VtdWxhdGl2ZTwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICA8cmFhaW4tY29tcGFyZVxuICAgICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjb21wYXJlSW5kZXhdPVwiMFwiXG4gICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCI1MDBcIlxuICAgICAgICAgICAgW3BvaW50TWF4XT1cImNvbXBhcmVNYW5hZ2VyLmdsb2JhbENvbXBhcmVQb2ludHNNYXhcIlxuICAgICAgICAgICAgW3BvaW50c109XCJjb21wYXJlTWFuYWdlci5nbG9iYWxDb21wYXJlUG9pbnRzXCI+PC9yYWFpbi1jb21wYXJlPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L2lvbi1jYXJkPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93ICpuZ0lmPVwiIWN1bXVsYXRpdmVcIj5cblxuICAgIDwhLS1cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxpb24tY2FyZCBpZD1cImNhcmQtbWF0cml4XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb21wYXJlTWFuYWdlcj8uY29tcGFyZU5hbWVzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8cmFhaW4tc3BlZWQgW2NvbXBhcmVTcGVlZE1hdHJpeF09XCJjb21wYXJlTWFuYWdlci5jb21wYXJlU3BlZWRNYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JdPVwiY29tcGFyZU1hbmFnZXIuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgID48L3JhYWluLXNwZWVkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAge3sgY29tcGFyZU1hbmFnZXI/LmNvbXBhcmVWZXJzaW9uIH19XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgIDwvaW9uLWNhcmQ+XG4gICAgPC9pb24tY29sPiAtLT5cblxuICAgIDxpb24tY29sICpuZ0Zvcj1cImxldCBjb21wYXJlIG9mICBjb21wYXJlTWFuYWdlcj8udWlDb21wYXJlczsgaW5kZXggYXMgY29tcGFyZUluZGV4XCIgc2l6ZT1cIjEyXCIgc2l6ZS1tZD1cIjZcIj5cbiAgICAgIDxpb24tY2FyZCBjbGFzcz1cImNhcmQtY29tcGFyZVwiPlxuICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPnt7IGNvbXBhcmUubmFtZSB9fSB7eyBjb21wYXJlLnJlbWFya3MgfX1cbiAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50ICpuZ0lmPVwiY29tcGFyZS5jb21wYXJlUG9pbnRzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8cmFhaW4tY29tcGFyZVxuICAgICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjb21wYXJlSW5kZXhdPVwiY29tcGFyZUluZGV4XCJcbiAgICAgICAgICAgIFtjdXJyZW50SGVpZ2h0XT1cIjUwMFwiXG4gICAgICAgICAgICBbcG9pbnRNYXhdPVwiY29tcGFyZS5jb21wYXJlUG9pbnRzTWF4XCJcbiAgICAgICAgICAgIFtwb2ludHNdPVwiY29tcGFyZS5jb21wYXJlUG9pbnRzXCI+PC9yYWFpbi1jb21wYXJlPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L2lvbi1jYXJkPlxuICAgIDwvaW9uLWNvbD5cblxuICAgIDwhLS1cbiAgICA8aW9uLWNhcmQgIGlkPVwiY2FyZC1zZWxlY3RlZC1nYXVnZVwiIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8aW9uLWFjY29yZGlvbi1ncm91cD5cblxuICAgICAgICAgIDxpb24tYWNjb3JkaW9uIHZhbHVlPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgIDxpb24taXRlbSBjb2xvcj1cImxpZ2h0XCIgc2xvdD1cImhlYWRlclwiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsPmRlYnVnPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIiBzbG90PVwiY29udGVudFwiPlxuICAgICAgICAgICAgICBkYXRlOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LmRhdGUgfCAgZGF0ZToneXl5eS1NTS1kZCBISDptbTpzcycgfX08YnI+XG4gICAgICAgICAgICAgIHJhZGFyTWVhc3VyZUlkOiB7eyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0LnJhZGFyTWVhc3VyZUlkIH19PGJyPlxuICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25JZDoge3sgY3VycmVudFRpbWVmcmFtZVRhcmdldC5yYWluQ29tcHV0YXRpb25JZCB9fTxicj5cbiAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uVmVyc2lvbjoge3sgY3VycmVudFRpbWVmcmFtZVRhcmdldC5yYWluQ29tcHV0YXRpb25WZXJzaW9uIH19PGJyPlxuICAgICAgICAgICAgICByYWluQ29tcHV0YXRpb25RdWFsaXRpZXNQZXJEYXRlIDpcbiAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcmNxIG9mIGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzUGVyRGF0ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmNxLnZlcnNpb24gfX0gLSB7eyByY3EuaWQgfX1cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2lvbi1hY2NvcmRpb24+XG4gICAgICAgICAgPGlvbi1hY2NvcmRpb24gKm5nSWY9XCJzZWxlY3RlZEdhdWdlXCIgdmFsdWU9XCJjb250ZXh0XCI+XG4gICAgICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyBzZWxlY3RlZEdhdWdlSW5Qb2ludHNEZXRhaWwgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZm9ybWF0TGFiZWxPZlNlbGVjdGVkR2F1Z2Uoc2VsZWN0ZWRHYXVnZUluUG9pbnRzKVwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgICAgICBzbG90PVwiY29udGVudFwiPjwvZGl2PlxuICAgICAgICAgIDwvaW9uLWFjY29yZGlvbj5cbiAgICAgICAgPC9pb24tYWNjb3JkaW9uLWdyb3VwPlxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG4gICAgLS0+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWdyaWQ+XG4iXX0=
@@ -1,7 +1,8 @@
1
1
  import { Component, HostListener, Input, ViewChild } from '@angular/core';
2
2
  import { DateRange, DateStatusElementInput, ElementsFactory } from 'raain-ui';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@ionic/angular";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@ionic/angular";
5
6
  export class RaainDateFocusComponent {
6
7
  constructor(ngZone) {
7
8
  this.ngZone = ngZone;
@@ -72,16 +73,18 @@ export class RaainDateFocusComponent {
72
73
  }
73
74
  }
74
75
  RaainDateFocusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainDateFocusComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
75
- RaainDateFocusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainDateFocusComponent, selector: "raain-date-focus", inputs: { points: "points", focusDate: "focusDate", focusRange: "focusRange", currentHeight: "currentHeight" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-grid>\n\n <ion-row>\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusReset()\">\n View all dates\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-end\">\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusPrevious()\">\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col id=\"col-container\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n <ion-col class=\"ion-text-left\">\n <ion-button (click)=\"focusNext()\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#col-container{height:100%}#canvas-container{position:relative;min-width:600px;height:100%}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.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: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }] });
76
+ RaainDateFocusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainDateFocusComponent, selector: "raain-date-focus", inputs: { points: "points", focusDate: "focusDate", focusRange: "focusRange", withoutAll: "withoutAll", currentHeight: "currentHeight" }, 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 *ngIf=\"!withoutAll\" class=\"ion-text-center\" size-sm=\"2\">\n <ion-button (click)=\"focusReset()\">\n View all dates\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-end\">\n <ion-col class=\"ion-text-right\" size-sm=\"1\">\n <ion-button (click)=\"focusPrevious()\">\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusNext()\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col id=\"col-container\" size-sm=\"10\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#col-container{height:100%}#canvas-container{position:relative;min-width:600px;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { 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.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }] });
76
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainDateFocusComponent, decorators: [{
77
78
  type: Component,
78
- args: [{ selector: 'raain-date-focus', template: "<ion-grid>\n\n <ion-row>\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusReset()\">\n View all dates\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-end\">\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusPrevious()\">\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col id=\"col-container\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n <ion-col class=\"ion-text-left\">\n <ion-button (click)=\"focusNext()\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#col-container{height:100%}#canvas-container{position:relative;min-width:600px;height:100%}\n"] }]
79
+ args: [{ selector: 'raain-date-focus', template: "<ion-grid>\n <ion-row>\n <ion-col *ngIf=\"!withoutAll\" class=\"ion-text-center\" size-sm=\"2\">\n <ion-button (click)=\"focusReset()\">\n View all dates\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-end\">\n <ion-col class=\"ion-text-right\" size-sm=\"1\">\n <ion-button (click)=\"focusPrevious()\">\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusNext()\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col id=\"col-container\" size-sm=\"10\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#col-container{height:100%}#canvas-container{position:relative;min-width:600px;height:100%}\n"] }]
79
80
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { points: [{
80
81
  type: Input
81
82
  }], focusDate: [{
82
83
  type: Input
83
84
  }], focusRange: [{
84
85
  type: Input
86
+ }], withoutAll: [{
87
+ type: Input
85
88
  }], currentHeight: [{
86
89
  type: Input
87
90
  }], canvasElement: [{
@@ -91,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
91
94
  type: HostListener,
92
95
  args: ['window:resize', ['$event']]
93
96
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGF0ZS1mb2N1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1kYXRlLWZvY3VzL3JhYWluLWRhdGUtZm9jdXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tZGF0ZS1mb2N1cy9yYWFpbi1kYXRlLWZvY3VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFLTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBcUIsc0JBQXNCLEVBQUUsZUFBZSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7QUFPL0YsTUFBTSxPQUFPLHVCQUF1QjtJQXlCbEMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFHTyxRQUFRLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsd0NBQXdDO1FBQ3hDLHNCQUFzQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLElBQUk7WUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUNoRixJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUM3RTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN6QztRQUNELFdBQVc7UUFDWCxNQUFNO0lBRVIsQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFzQjtRQUN6QyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLGFBQWE7UUFFbkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxZQUFZLEdBQUcsV0FBVztZQUM1QixDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYTtZQUN0QyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RixZQUFZLElBQUksT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEExR1UsdUJBQXVCO3lHQUF2Qix1QkFBdUIsMldDbkJwQyxzMkJBMkJBOzRGRFJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0I7NkZBT3JCLE1BQU07c0JBRFosS0FBSztnQkFRQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUtJLGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsZUFBZTtnQkF1Q2xCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZVJhbmdlLCBEYXRlU3RhdHVzRWxlbWVudCwgRGF0ZVN0YXR1c0VsZW1lbnRJbnB1dCwgRWxlbWVudHNGYWN0b3J5fSBmcm9tICdyYWFpbi11aSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JhYWluLWRhdGUtZm9jdXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFhaW4tZGF0ZS1mb2N1cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhYWluLWRhdGUtZm9jdXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmFhaW5EYXRlRm9jdXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvaW50czoge1xuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgc3R5bGU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgZGF0ZTogRGF0ZSwgdmFsdWU6IG51bWJlciB9W10sXG4gIH1bXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9jdXNEYXRlOiBEYXRlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9jdXNSYW5nZTogRGF0ZVJhbmdlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBjdXJyZW50V2lkdGg6IG51bWJlcjtcblxuICBAVmlld0NoaWxkKCdjYW52YXNFbGVtZW50JylcbiAgcHJvdGVjdGVkIGNhbnZhc0VsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBkYXRlU3RhdHVzRWxlbWVudDogRGF0ZVN0YXR1c0VsZW1lbnQ7XG4gIHByaXZhdGUgb25TaXplQ2hhbmdlZDtcbiAgcHJpdmF0ZSBjcmVhdGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICB0aGlzLmZvY3VzRGF0ZSA9IG5ldyBEYXRlKClcbiAgICB0aGlzLmZvY3VzUmFuZ2UgPSBEYXRlUmFuZ2UuQ0VOVFVSWTtcbiAgICB0aGlzLm9uU2l6ZUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UoY2hhbmdlcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGUoKTtcbiAgfVxuXG4gIGZvY3VzUHJldmlvdXMoKSB7XG4gICAgdGhpcy5kYXRlU3RhdHVzRWxlbWVudC5mb2N1c1ByZXZpb3VzKCk7XG4gIH1cblxuICBmb2N1c1Jlc2V0KCkge1xuICAgIHRoaXMuZGF0ZVN0YXR1c0VsZW1lbnQuZm9jdXNSZXNldCgpO1xuICB9XG5cbiAgZm9jdXNOZXh0KCkge1xuICAgIHRoaXMuZGF0ZVN0YXR1c0VsZW1lbnQuZm9jdXNOZXh0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvblJlc2l6ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNYXBTaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZSgpIHtcbiAgICBpZiAodGhpcy5jcmVhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlZCA9IHRydWU7XG5cbiAgICAvLyB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgLy8gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgRWxlbWVudHNGYWN0b3J5KCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGF0ZVN0YXR1c0VsZW1lbnQgPSBmYWN0b3J5LmNyZWF0ZURhdGVTdGF0dXModGhpcy5jYW52YXNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIG5ldyBEYXRlU3RhdHVzRWxlbWVudElucHV0KHRoaXMucG9pbnRzLCB0aGlzLmZvY3VzRGF0ZSwgdGhpcy5mb2N1c1JhbmdlKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdmb2N1cyBjcmVhdGlvbiBpc3N1ZScsIGUpO1xuICAgIH1cbiAgICAvLyAgfSwgNTApO1xuICAgIC8vIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZSgpIHtcbiAgICBhd2FpdCB0aGlzLmRhdGVTdGF0dXNFbGVtZW50Py5jaGFydD8uZGVzdHJveSgpO1xuICAgIHRoaXMuY3JlYXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlKCk7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFwU2l6ZSgpOiB2b2lkIHtcblxuICAgIGNvbnN0IG1hcERpdldpZHRoID0gdGhpcy5jYW52YXNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZT8ucGFyZW50Tm9kZVsnY2xpZW50V2lkdGgnXTtcbiAgICBjb25zdCBwYWRkaW5nID0gMjA7XG4gICAgbGV0IGN1cnJlbnRXaWR0aCA9IG1hcERpdldpZHRoIHx8XG4gICAgICAod2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB0aGlzLmN1cnJlbnRIZWlnaHQgfHxcbiAgICAgICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCk7XG4gICAgY3VycmVudFdpZHRoIC09IHBhZGRpbmc7XG4gICAgdGhpcy5jdXJyZW50V2lkdGggPSBjdXJyZW50V2lkdGg7XG4gICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gY3VycmVudEhlaWdodDtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm9uU2l6ZUNoYW5nZWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGlvbi1ncmlkPlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIHNpemUtc209XCIxXCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZm9jdXNSZXNldCgpXCI+XG4gICAgICAgIFZpZXcgYWxsIGRhdGVzXG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWVuZFwiPlxuICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIHNpemUtc209XCIxXCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZm9jdXNQcmV2aW91cygpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBpZD1cImNvbC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJjdXJyZW50SGVpZ2h0XCIgW3N0eWxlLndpZHRoLnB4XT1cImN1cnJlbnRXaWR0aFwiIGlkPVwiY2FudmFzLWNvbnRhaW5lclwiPlxuICAgICAgICA8Y2FudmFzICNjYW52YXNFbGVtZW50PjwvY2FudmFzPlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29sPlxuICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImZvY3VzTmV4dCgpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuPC9pb24tZ3JpZD5cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGF0ZS1mb2N1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1kYXRlLWZvY3VzL3JhYWluLWRhdGUtZm9jdXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tZGF0ZS1mb2N1cy9yYWFpbi1kYXRlLWZvY3VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFLTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBcUIsc0JBQXNCLEVBQUUsZUFBZSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7O0FBTy9GLE1BQU0sT0FBTyx1QkFBdUI7SUEyQmxDLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQTtRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7UUFDMUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBR08sUUFBUSxDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXBCLHdDQUF3QztRQUN4QyxzQkFBc0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN0QyxJQUFJO1lBQ0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFDaEYsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDN0U7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxXQUFXO1FBQ1gsTUFBTTtJQUVSLENBQUM7SUFFTyxLQUFLLENBQUMsTUFBTTtRQUNsQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBc0I7UUFDekMsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxhQUFhO1FBRW5CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0YsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksWUFBWSxHQUFHLFdBQVc7WUFDNUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWE7WUFDdEMsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUYsWUFBWSxJQUFJLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7cUhBNUdVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLHFZQ25CcEMsMDVCQTBCQTs0RkRQYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usa0JBQWtCOzZGQU9yQixNQUFNO3NCQURaLEtBQUs7Z0JBUUMsU0FBUztzQkFEZixLQUFLO2dCQUdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUtJLGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsZUFBZTtnQkF1Q2xCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZVJhbmdlLCBEYXRlU3RhdHVzRWxlbWVudCwgRGF0ZVN0YXR1c0VsZW1lbnRJbnB1dCwgRWxlbWVudHNGYWN0b3J5fSBmcm9tICdyYWFpbi11aSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JhYWluLWRhdGUtZm9jdXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFhaW4tZGF0ZS1mb2N1cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhYWluLWRhdGUtZm9jdXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmFhaW5EYXRlRm9jdXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvaW50czoge1xuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgc3R5bGU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgZGF0ZTogRGF0ZSwgdmFsdWU6IG51bWJlciB9W10sXG4gIH1bXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9jdXNEYXRlOiBEYXRlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9jdXNSYW5nZTogRGF0ZVJhbmdlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgd2l0aG91dEFsbDogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VycmVudEhlaWdodDogbnVtYmVyO1xuICBwdWJsaWMgY3VycmVudFdpZHRoOiBudW1iZXI7XG5cbiAgQFZpZXdDaGlsZCgnY2FudmFzRWxlbWVudCcpXG4gIHByb3RlY3RlZCBjYW52YXNFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgZGF0ZVN0YXR1c0VsZW1lbnQ6IERhdGVTdGF0dXNFbGVtZW50O1xuICBwcml2YXRlIG9uU2l6ZUNoYW5nZWQ7XG4gIHByaXZhdGUgY3JlYXRlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgdGhpcy5mb2N1c0RhdGUgPSBuZXcgRGF0ZSgpXG4gICAgdGhpcy5mb2N1c1JhbmdlID0gRGF0ZVJhbmdlLkNFTlRVUlk7XG4gICAgdGhpcy5vblNpemVDaGFuZ2VkID0gKCkgPT4ge1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlKGNoYW5nZXMpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlKCk7XG4gIH1cblxuICBmb2N1c1ByZXZpb3VzKCkge1xuICAgIHRoaXMuZGF0ZVN0YXR1c0VsZW1lbnQuZm9jdXNQcmV2aW91cygpO1xuICB9XG5cbiAgZm9jdXNSZXNldCgpIHtcbiAgICB0aGlzLmRhdGVTdGF0dXNFbGVtZW50LmZvY3VzUmVzZXQoKTtcbiAgfVxuXG4gIGZvY3VzTmV4dCgpIHtcbiAgICB0aGlzLmRhdGVTdGF0dXNFbGVtZW50LmZvY3VzTmV4dCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFwU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGUoKSB7XG4gICAgaWYgKHRoaXMuY3JlYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZWQgPSB0cnVlO1xuXG4gICAgLy8gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgIC8vICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gbmV3IEVsZW1lbnRzRmFjdG9yeSgpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmRhdGVTdGF0dXNFbGVtZW50ID0gZmFjdG9yeS5jcmVhdGVEYXRlU3RhdHVzKHRoaXMuY2FudmFzRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICBuZXcgRGF0ZVN0YXR1c0VsZW1lbnRJbnB1dCh0aGlzLnBvaW50cywgdGhpcy5mb2N1c0RhdGUsIHRoaXMuZm9jdXNSYW5nZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignZm9jdXMgY3JlYXRpb24gaXNzdWUnLCBlKTtcbiAgICB9XG4gICAgLy8gIH0sIDUwKTtcbiAgICAvLyB9KTtcblxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWxldGUoKSB7XG4gICAgYXdhaXQgdGhpcy5kYXRlU3RhdHVzRWxlbWVudD8uY2hhcnQ/LmRlc3Ryb3koKTtcbiAgICB0aGlzLmNyZWF0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hhbmdlKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZSgpO1xuICAgIHRoaXMuY3JlYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1hcFNpemUoKTogdm9pZCB7XG5cbiAgICBjb25zdCBtYXBEaXZXaWR0aCA9IHRoaXMuY2FudmFzRWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU/LnBhcmVudE5vZGVbJ2NsaWVudFdpZHRoJ107XG4gICAgY29uc3QgcGFkZGluZyA9IDIwO1xuICAgIGxldCBjdXJyZW50V2lkdGggPSBtYXBEaXZXaWR0aCB8fFxuICAgICAgKHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKTtcbiAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gdGhpcy5jdXJyZW50SGVpZ2h0IHx8XG4gICAgICAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQpO1xuICAgIGN1cnJlbnRXaWR0aCAtPSBwYWRkaW5nO1xuICAgIHRoaXMuY3VycmVudFdpZHRoID0gY3VycmVudFdpZHRoO1xuICAgIHRoaXMuY3VycmVudEhlaWdodCA9IGN1cnJlbnRIZWlnaHQ7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5vblNpemVDaGFuZ2VkKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxpb24tZ3JpZD5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2wgKm5nSWY9XCIhd2l0aG91dEFsbFwiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgc2l6ZS1zbT1cIjJcIj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJmb2N1c1Jlc2V0KClcIj5cbiAgICAgICAgVmlldyBhbGwgZGF0ZXNcbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtZW5kXCI+XG4gICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHNpemUtc209XCIxXCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZm9jdXNQcmV2aW91cygpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBzaXplLXNtPVwiMVwiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImZvY3VzTmV4dCgpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBpZD1cImNvbC1jb250YWluZXJcIiBzaXplLXNtPVwiMTBcIj5cbiAgICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJjdXJyZW50SGVpZ2h0XCIgW3N0eWxlLndpZHRoLnB4XT1cImN1cnJlbnRXaWR0aFwiIGlkPVwiY2FudmFzLWNvbnRhaW5lclwiPlxuICAgICAgICA8Y2FudmFzICNjYW52YXNFbGVtZW50PjwvY2FudmFzPlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG48L2lvbi1ncmlkPlxuIl19
@@ -240,7 +240,9 @@ export class RaainMapComponent {
240
240
  }
241
241
  }
242
242
  this.ngZone.run(() => {
243
- this.mcText = `Latitude: ${lat} &nbsp; &nbsp; Longitude: ${lng} &nbsp; &nbsp; Value: [${valueLat} ${valueLng} | ${valueLat2} ${valueLng2}] ${value}`;
243
+ // this.mcText = `Latitude: ${lat} &nbsp; &nbsp; Longitude: ${lng} &nbsp; &nbsp;
244
+ // Value: [${valueLat} ${valueLng} | ${valueLat2} ${valueLng2}] ${value}`;
245
+ this.mcText = `Latitude: ${lat} &nbsp; &nbsp; Longitude: ${lng} &nbsp; &nbsp; Value: ${value}`;
244
246
  });
245
247
  }
246
248
  onMapClick(evt) {
@@ -300,4 +302,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
300
302
  type: HostListener,
301
303
  args: ['window:resize', ['$event']]
302
304
  }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3JhYWluLW1hcC9yYWFpbi1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tbWFwL3JhYWluLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFvQixlQUFlLEVBQThCLFNBQVMsRUFBc0IsTUFBTSxVQUFVLENBQUM7Ozs7O0FBT3hILE1BQU0sT0FBTyxpQkFBaUI7SUFnRTVCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBaEQzQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBTW5CLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBVzVCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUcvQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUEyQjVDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLGNBQWM7UUFDZCxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQUM5QyxNQUFNLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRDtRQUM1RixNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQixNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUs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LEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQVVDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFHQyxhQUFhO3NCQURuQixLQUFLO2dCQUtDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsV0FBVztzQkFEakIsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsS0FBSztzQkFEWCxLQUFLO2dCQUtDLGNBQWM7c0JBRHBCLE1BQU07Z0JBSUEsV0FBVztzQkFEakIsTUFBTTtnQkFhRyxTQUFTO3NCQURsQixTQUFTO3VCQUFDLFlBQVk7Z0JBMFNmLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ljb25PcHRpb25zfSBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7Q2FydGVzaWFuTWFwVmFsdWUsIEVsZW1lbnRzRmFjdG9yeSwgRnJhbWVDb250YWluZXIsIE1hcEVsZW1lbnQsIE1hcExhdExuZywgVGltZWZyYW1lQ29udGFpbmVyc30gZnJvbSAncmFhaW4tdWknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyYWFpbi1tYXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFhaW4tbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFhaW4tbWFwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJhYWluTWFwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb29yZGluYXRlczogTWFwTGF0TG5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWFya2Vyczoge1xuICAgIGdhdWdlczogTWFwTGF0TG5nW10sXG4gICAgc2VsZWN0ZWRHYXVnZXM6IE1hcExhdExuZ1tdLFxuICAgIHBpeGVsczogTWFwTGF0TG5nW10sXG4gICAgYm9yZGVyczogTWFwTGF0TG5nW10sXG4gICAgZ2F1Z2VzSW5Db21wYXJlOiBNYXBMYXRMbmdbXSxcbiAgICBwaXhlbHNTb2x1dGlvbjogTWFwTGF0TG5nW10sXG4gIH07XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aW1lZnJhbWVDb250YWluZXJzOiBUaW1lZnJhbWVDb250YWluZXJzO1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b3BsYXkgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dNYXJrZXJzID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGN1cnJlbnRIZWlnaHQ6IG51bWJlcjtcbiAgcHVibGljIGN1cnJlbnRXaWR0aDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aW1lZnJhbWVEYXRlczogRGF0ZVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWZhdWx0RGF0ZTogRGF0ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3VtVmFsdWVzOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdW1GbjogYW55O1xuICBwdWJsaWMgc3VtUmVzdWx0OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZE1hcmtlciA9IG5ldyBFdmVudEVtaXR0ZXI8TWFwTGF0TG5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2hhbmdlZERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgcHVibGljIG1jVGV4dDtcbiAgcHVibGljIG5leHREYXRlOiBEYXRlO1xuICBwdWJsaWMgcG9zc2libGVOYW1lczogc3RyaW5nW107XG4gIHB1YmxpYyBwb3NzaWJsZURhdGVzOiBEYXRlW107XG4gIHB1YmxpYyBkYXRlVG9TaG93OiBEYXRlO1xuICBwdWJsaWMgZGF0ZVRvU2hvd0FzU3RyaW5nOiBzdHJpbmc7XG4gIHB1YmxpYyB0aW1lZnJhbWVOYW1lVG9TaG93OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBjdXJyZW50RnJhbWVDb250YWluZXI6IEZyYW1lQ29udGFpbmVyO1xuXG4gIEBWaWV3Q2hpbGQoJ3ByaW1hcnlNYXAnKVxuICBwcm90ZWN0ZWQgbWFwRGl2UmVmOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgbWFwRWxlbWVudDogTWFwRWxlbWVudDtcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2VkO1xuICBwcml2YXRlIGNyZWF0ZWQ7XG4gIHByaXZhdGUgaWNvbk9wdGlvbnM6IHtcbiAgICBnYXVnZXM6IEljb25PcHRpb25zLFxuICAgIHNlbGVjdGVkR2F1Z2VzOiBJY29uT3B0aW9ucyxcbiAgICBwaXhlbHM6IEljb25PcHRpb25zLFxuICAgIGJvcmRlcnM6IEljb25PcHRpb25zLFxuICAgIGdhdWdlc0luQ29tcGFyZTogSWNvbk9wdGlvbnMsXG4gICAgcGl4ZWxzU29sdXRpb246IEljb25PcHRpb25zLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICB0aGlzLmRlbGV0ZSgpO1xuXG4gICAgLy8gc2hhZG93VXJsID9cbiAgICBjb25zdCBpY29uU2l6ZSA9IFs0MCwgNDBdOyAvLyBzaXplIG9mIHRoZSBpY29uXG4gICAgY29uc3QgaWNvbkFuY2hvciA9IFsyMCwgMjBdOyAvLyBwb2ludCBvZiB0aGUgaWNvbiB3aGljaCB3aWxsIGNvcnJlc3BvbmQgdG8gbWFya2VyJ3MgbG9jYXRpb25cbiAgICBjb25zdCBwaXhlbFNpemUgPSBbNDEsIDQxXTtcbiAgICBjb25zdCBwaXhlbEFuY2hvciA9IFsyMCwgMjBdO1xuICAgIGNvbnN0IHBvcHVwQW5jaG9yID0gWzAsIC0yMF07IC8vIHBvaW50IGZyb20gd2hpY2ggdGhlIHBvcHVwIHNob3VsZCBvcGVuIHJlbGF0aXZlIHRvIHRoZSBpY29uQW5jaG9yXG4gICAgdGhpcy5pY29uT3B0aW9ucyA9IHtcbiAgICAgIGdhdWdlczoge2ljb25Vcmw6ICcuL2Fzc2V0cy9tYXBzL21hcmtlci1wbHV2aW8ucG5nJywgaWNvblNpemUsIGljb25BbmNob3IsIHBvcHVwQW5jaG9yfSxcbiAgICAgIGdhdWdlc0luQ29tcGFyZToge2ljb25Vcmw6ICcuL2Fzc2V0cy9tYXBzL21hcmtlci1wbHV2aW8tZGlhZy5wbmcnLCBpY29uU2l6ZSwgaWNvbkFuY2hvciwgcG9wdXBBbmNob3J9LFxuICAgICAgc2VsZWN0ZWRHYXVnZXM6IHtpY29uVXJsOiAnLi9hc3NldHMvbWFwcy9tYXJrZXItcGx1dmlvLWRpYWctc2VsZWN0LnBuZycsIGljb25TaXplLCBpY29uQW5jaG9yLCBwb3B1cEFuY2hvcn0sXG4gICAgICBwaXhlbHM6IHtpY29uVXJsOiAnLi9hc3NldHMvbWFwcy9tYXJrZXItcmFpbi5wbmcnLCBpY29uU2l6ZSwgaWNvbkFuY2hvciwgcG9wdXBBbmNob3J9LFxuICAgICAgcGl4ZWxzU29sdXRpb246IHtpY29uVXJsOiAnLi9hc3NldHMvbWFwcy9tYXJrZXItcmFpbjIucG5nJywgaWNvblNpemU6IHBpeGVsU2l6ZSwgaWNvbkFuY2hvcjogcGl4ZWxBbmNob3IsIHBvcHVwQW5jaG9yfSxcbiAgICAgIGJvcmRlcnM6IHtpY29uVXJsOiAnLi9hc3NldHMvbWFwcy9tYXJrZXItc2hhZG93LnBuZycsIGljb25TaXplLCBpY29uQW5jaG9yLCBwb3B1cEFuY2hvcn0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UoY2hhbmdlcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93VGltZWZyYW1lKGZvcmNlID0gZmFsc2UpIHtcblxuICAgIC8vIGNvbnN0IHtmcmFtZUNvbnRhaW5lciwgbGF5ZXJ9ID0gdGhpcy50aW1lZnJhbWVDb250YWluZXJzLnNob3dUaW1lZnJhbWUodGhpcy50aW1lZnJhbWVOYW1lVG9TaG93KTtcbiAgICAvLyB0aGlzLmN1cnJlbnRGcmFtZUNvbnRhaW5lciA9IGZyYW1lQ29udGFpbmVyO1xuXG4gICAgaWYgKCF0aGlzLmRhdGVUb1Nob3dBc1N0cmluZ1xuICAgICAgfHwgKCFmb3JjZSAmJiBuZXcgRGF0ZSh0aGlzLmRhdGVUb1Nob3dBc1N0cmluZykuZ2V0VGltZSgpID09PSB0aGlzLmRhdGVUb1Nob3c/LmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGVUb1Nob3cgPSBuZXcgRGF0ZSh0aGlzLmRhdGVUb1Nob3dBc1N0cmluZyk7XG4gICAgdGhpcy5jaGFuZ2VkRGF0ZS5lbWl0KHRoaXMuZGF0ZVRvU2hvdyk7XG4gIH1cblxuICBwdWJsaWMgbmV4dCgpIHtcbiAgICBpZiAoIXRoaXMucG9zc2libGVEYXRlcyB8fCB0aGlzLnBvc3NpYmxlRGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldERhdGVUb1Nob3dJbmRleCgpO1xuICAgIHRoaXMuZGF0ZVRvU2hvdyA9IChpbmRleCArIDEpIDwgdGhpcy5wb3NzaWJsZURhdGVzLmxlbmd0aCA/IHRoaXMucG9zc2libGVEYXRlc1tpbmRleCArIDFdIDogdGhpcy5wb3NzaWJsZURhdGVzWzBdO1xuICAgIHRoaXMuZGF0ZVRvU2hvd0FzU3RyaW5nID0gdGhpcy5kYXRlVG9TaG93LnRvSVNPU3RyaW5nKCk7XG5cbiAgICB0aGlzLnNob3dUaW1lZnJhbWUodHJ1ZSk7XG4gICAgaWYgKHRoaXMuYXV0b3BsYXkpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMubmV4dCgpLCAyMDAwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJldmlvdXMoKSB7XG4gICAgdGhpcy5zdG9wKCk7XG4gICAgaWYgKCF0aGlzLnBvc3NpYmxlRGF0ZXMgfHwgdGhpcy5wb3NzaWJsZURhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXREYXRlVG9TaG93SW5kZXgoKTtcbiAgICB0aGlzLmRhdGVUb1Nob3cgPSBpbmRleCA+IDAgPyB0aGlzLnBvc3NpYmxlRGF0ZXNbaW5kZXggLSAxXSA6IHRoaXMucG9zc2libGVEYXRlc1swXTtcbiAgICB0aGlzLmRhdGVUb1Nob3dBc1N0cmluZyA9IHRoaXMuZGF0ZVRvU2hvdy50b0lTT1N0cmluZygpO1xuXG4gICAgdGhpcy5zaG93VGltZWZyYW1lKHRydWUpO1xuICB9XG5cbiAgcHVibGljIHBsYXkoKSB7XG4gICAgdGhpcy5hdXRvcGxheSA9IHRydWU7XG4gICAgdGhpcy5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgc3RvcCgpIHtcbiAgICB0aGlzLmF1dG9wbGF5ID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlU2hvd01hcmtlcnMoKSB7XG4gICAgaWYgKCF0aGlzLm1hcEVsZW1lbnQ/Lm1hcmtlcnNMYXllciB8fCAhdGhpcy5tYXBFbGVtZW50Py5tYXBMZWFmbGV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd01hcmtlcnMpIHtcbiAgICAgIHRoaXMubWFwRWxlbWVudC5tYXJrZXJzTGF5ZXIuYWRkVG9NYXAodGhpcy5tYXBFbGVtZW50Lm1hcExlYWZsZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcEVsZW1lbnQubWFya2Vyc0xheWVyLnJlbW92ZUZyb21NYXAodGhpcy5tYXBFbGVtZW50Lm1hcExlYWZsZXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlKCkge1xuXG4gICAgY29uc3QgY3JlYXRlZCA9IHRoaXMuY3JlYXRlZDtcbiAgICBpZiAoY3JlYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZWQgPSB0cnVlO1xuICAgIGNvbnN0IG1hcmtlcnMgPSBbXG4gICAgICB7aWNvbnNMYXRMbmc6IHRoaXMubWFya2Vycy5nYXVnZXMsIGljb25zT3B0aW9uczogdGhpcy5pY29uT3B0aW9ucy5nYXVnZXN9LFxuICAgICAge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMuc2VsZWN0ZWRHYXVnZXMsIGljb25zT3B0aW9uczogdGhpcy5pY29uT3B0aW9ucy5zZWxlY3RlZEdhdWdlc30sXG4gICAgICB7aWNvbnNMYXRMbmc6IHRoaXMubWFya2Vycy5nYXVnZXNJbkNvbXBhcmUsIGljb25zT3B0aW9uczogdGhpcy5pY29uT3B0aW9ucy5nYXVnZXNJbkNvbXBhcmV9LFxuICAgICAge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMucGl4ZWxzLCBpY29uc09wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMucGl4ZWxzfSxcbiAgICAgIHtpY29uc0xhdExuZzogdGhpcy5tYXJrZXJzLnBpeGVsc1NvbHV0aW9uLCBpY29uc09wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMucGl4ZWxzU29sdXRpb259LFxuICAgICAgLy8ge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMuYm9yZGVycywgaWNvbnNPcHRpb25zOiB0aGlzLmljb25PcHRpb25zLmJvcmRlcnN9LFxuICAgIF07XG5cbiAgICBjb25zdCBmYWN0b3J5ID0gbmV3IEVsZW1lbnRzRmFjdG9yeSh0aGlzLmNvb3JkaW5hdGVzLCB0cnVlKTtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgICBjb25zdCBjcmVhdGVkT3V0c2lkZSA9IHRoaXMuY3JlYXRlZDtcbiAgICAgICAgaWYgKCFjcmVhdGVkT3V0c2lkZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWFwRWxlbWVudCA9IGZhY3RvcnkuY3JlYXRlTWFwKHRoaXMubWFwRGl2UmVmLm5hdGl2ZUVsZW1lbnQsIHt0aW1lZnJhbWVDb250YWluZXJzOiB0aGlzLnRpbWVmcmFtZUNvbnRhaW5lcnMsIG1hcmtlcnN9KTtcblxuICAgICAgICB0aGlzLm1hcEVsZW1lbnQubWFwTGVhZmxldD8ub24oJ21vdXNlbW92ZScsIChldnQpID0+IHRoaXMub25NYXBNb3VzZU1vdmUoZXZ0KSk7XG4gICAgICAgIHRoaXMubWFwRWxlbWVudC5tYXJrZXJzUHJvZHVjZWQ/LmZvckVhY2gobSA9PiBtLm9uKCdjbGljaycsIGV2dCA9PiB0aGlzLm9uTWFwQ2xpY2soZXZ0KSkpO1xuICAgICAgICB0aGlzLm9uU2l6ZUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXBFbGVtZW50Lm1hcmtlcnNMYXllcj8uc2V0Q3VycmVudFdpZHRoKHRoaXMuY3VycmVudFdpZHRoKTtcbiAgICAgICAgICB0aGlzLm1hcEVsZW1lbnQubWFya2Vyc0xheWVyPy5zZXRDdXJyZW50SGVpZ2h0KHRoaXMuY3VycmVudEhlaWdodCk7XG4gICAgICAgICAgdGhpcy5tYXBFbGVtZW50LmNvbXBvc2l0ZUxheWVyPy5zZXRDdXJyZW50V2lkdGgodGhpcy5jdXJyZW50V2lkdGgpO1xuICAgICAgICAgIHRoaXMubWFwRWxlbWVudC5jb21wb3NpdGVMYXllcj8uc2V0Q3VycmVudEhlaWdodCh0aGlzLmN1cnJlbnRIZWlnaHQpO1xuICAgICAgICAgIHRoaXMubWFwRWxlbWVudC5tYXBMZWFmbGV0Py5pbnZhbGlkYXRlU2l6ZSh7YW5pbWF0ZTogdHJ1ZX0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlTWFwU2l6ZSgpO1xuICAgICAgICAvLyB0aGlzLnRpbWVmcmFtZU5hbWVUb1Nob3cgPSB0aGlzLnBvc3NpYmxlTmFtZXMubGVuZ3RoID4gMCA/IHRoaXMucG9zc2libGVOYW1lc1swXSA6IG51bGw7XG4gICAgICAgIC8vIHRoaXMudG9nZ2xlSGlkZU1hcmtlcnMoIXRoaXMuaGlkZU1hcmtlcnMpO1xuICAgICAgICB0aGlzLmNoYW5nZU5hdmlnYXRpb24odGhpcy5kZWZhdWx0RGF0ZSk7XG4gICAgICB9LCAxMDApO1xuICAgIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZSgpIHtcbiAgICB0aGlzLm1hcEVsZW1lbnQ/Lm1hcExlYWZsZXQ/LnJlbW92ZSgpO1xuICAgIHRoaXMubWFwRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1jVGV4dCA9ICcnO1xuICAgIHRoaXMubmV4dERhdGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wb3NzaWJsZU5hbWVzID0gW107XG4gICAgdGhpcy5wb3NzaWJsZURhdGVzID0gW107XG4gICAgdGhpcy50aW1lZnJhbWVOYW1lVG9TaG93ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGF0ZVRvU2hvdyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRhdGVUb1Nob3dBc1N0cmluZyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9uU2l6ZUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgfTtcbiAgICB0aGlzLmN1cnJlbnRGcmFtZUNvbnRhaW5lciA9IG51bGw7XG5cbiAgICB0aGlzLmNyZWF0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnbWFwIGNoYW5nZXMnLCBjaGFuZ2VzKTtcblxuICAgIGxldCBwb3NzaWJsZU5ld0RlZmF1bHREYXRlOiBEYXRlO1xuICAgIGlmIChjaGFuZ2VzLmRlZmF1bHREYXRlKSB7XG4gICAgICBpZiAobmV3IERhdGUoY2hhbmdlcy5kZWZhdWx0RGF0ZS5jdXJyZW50VmFsdWUpLmdldFRpbWUoKSA9PT0gbmV3IERhdGUoY2hhbmdlcy5kZWZhdWx0RGF0ZS5wcmV2aW91c1ZhbHVlKS5nZXRUaW1lKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcG9zc2libGVOZXdEZWZhdWx0RGF0ZSA9IHRoaXMuZGVmYXVsdERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMubWFya2VycyAmJiB0aGlzLm1hcEVsZW1lbnQ/Lm1hcmtlcnNMYXllcikge1xuXG4gICAgICBjb25zdCBtYXJrZXJzID0gW1xuICAgICAgICB7aWNvbnNMYXRMbmc6IHRoaXMubWFya2Vycy5nYXVnZXMsIGljb25PcHRpb25zOiB0aGlzLmljb25PcHRpb25zLmdhdWdlc30sXG4gICAgICAgIHtpY29uc0xhdExuZzogdGhpcy5tYXJrZXJzLnNlbGVjdGVkR2F1Z2VzLCBpY29uT3B0aW9uczogdGhpcy5pY29uT3B0aW9ucy5zZWxlY3RlZEdhdWdlc30sXG4gICAgICAgIHtpY29uc0xhdExuZzogdGhpcy5tYXJrZXJzLmdhdWdlc0luQ29tcGFyZSwgaWNvbk9wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMuZ2F1Z2VzSW5Db21wYXJlfSxcbiAgICAgICAge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMucGl4ZWxzLCBpY29uT3B0aW9uczogdGhpcy5pY29uT3B0aW9ucy5waXhlbHN9LFxuICAgICAgICB7aWNvbnNMYXRMbmc6IHRoaXMubWFya2Vycy5waXhlbHNTb2x1dGlvbiwgaWNvbk9wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMucGl4ZWxzU29sdXRpb259LFxuICAgICAgICAvLyAge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMuYm9yZGVycywgaWNvbk9wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMuYm9yZGVyc30sXG4gICAgICBdO1xuICAgICAgY29uc3QgbWFya2Vyc1Byb2R1Y2VkID0gdGhpcy5tYXBFbGVtZW50Lm1hcmtlcnNMYXllci5yZW5kZXIobWFya2VycykubWFya2VycztcbiAgICAgIGlmIChtYXJrZXJzUHJvZHVjZWQpIHtcbiAgICAgICAgbWFya2Vyc1Byb2R1Y2VkLmZvckVhY2gobSA9PiBtLm9uKCdjbGljaycsIGV2dCA9PiB0aGlzLm9uTWFwQ2xpY2soZXZ0KSkpO1xuICAgICAgICBpZiAodGhpcy5zaG93TWFya2Vycykge1xuICAgICAgICAgIHRoaXMubWFwRWxlbWVudC5tYXJrZXJzTGF5ZXIucmVtb3ZlRnJvbU1hcCh0aGlzLm1hcEVsZW1lbnQubWFwTGVhZmxldCk7XG4gICAgICAgICAgdGhpcy5tYXBFbGVtZW50Lm1hcmtlcnNMYXllci5hZGRUb01hcCh0aGlzLm1hcEVsZW1lbnQubWFwTGVhZmxldCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5tYXJrZXJzICYmIHRoaXMubWFya2Vycy5zZWxlY3RlZEdhdWdlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkR2F1Z2UgPSB0aGlzLm1hcmtlcnMuc2VsZWN0ZWRHYXVnZXNbMF07XG4gICAgICB0aGlzLm1hcEVsZW1lbnQubWFwTGVhZmxldC5zZXRWaWV3KHNlbGVjdGVkR2F1Z2UsIDEwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXBFbGVtZW50ICYmIGNoYW5nZXMudGltZWZyYW1lQ29udGFpbmVycykge1xuICAgICAgdGhpcy5tYXBFbGVtZW50LnVwZGF0ZU1hcFRpbWVmcmFtZSh0aGlzLnRpbWVmcmFtZUNvbnRhaW5lcnMpO1xuICAgICAgdGhpcy5jdXJyZW50RnJhbWVDb250YWluZXIgPSB0aGlzLnRpbWVmcmFtZUNvbnRhaW5lcnM/LmNvbnRhaW5lcnNbMF0/LnRpbWVmcmFtZVswXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXBFbGVtZW50Py5jb21wb3NpdGVMYXllciAmJiBjaGFuZ2VzLnN1bVZhbHVlcykge1xuICAgICAgY29uc3QgZHJhd2VyID0gdGhpcy5tYXBFbGVtZW50LmNvbXBvc2l0ZUxheWVyLmdldEZpcnN0RHJhd2VyKCk7XG4gICAgICB0aGlzLnN1bVJlc3VsdCA9IGRyYXdlcj8uZ2V0RXhlY09mVmlzaWJsZVBvaW50cyh0aGlzLnN1bVZhbHVlcywgdGhpcy5zdW1Gbik7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VOYXZpZ2F0aW9uKHBvc3NpYmxlTmV3RGVmYXVsdERhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VOYXZpZ2F0aW9uKGRlZmF1bHREYXRlPzogRGF0ZSkge1xuICAgIC8vIHVwZGF0ZSBwb3NzaWJsZSBuYW1lc1xuICAgIGlmICh0aGlzLnRpbWVmcmFtZUNvbnRhaW5lcnMgJiYgdGhpcy50aW1lZnJhbWVDb250YWluZXJzLmNvbnRhaW5lcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBvc3NpYmxlTmFtZXMgPSBbXTtcbiAgICAgIHRoaXMudGltZWZyYW1lQ29udGFpbmVycz8uY29udGFpbmVycy5mb3JFYWNoKGMgPT4ge1xuICAgICAgICBpZiAodGhpcy5wb3NzaWJsZU5hbWVzLmluZGV4T2YoYy5uYW1lKSA8IDApIHtcbiAgICAgICAgICB0aGlzLnBvc3NpYmxlTmFtZXMucHVzaChjLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMudGltZWZyYW1lTmFtZVRvU2hvdyA9IHRoaXMucG9zc2libGVOYW1lcy5sZW5ndGggPiAwID8gdGhpcy5wb3NzaWJsZU5hbWVzWzBdIDogbnVsbDtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgcG9zc2libGUgZGF0ZXNcbiAgICB0aGlzLnBvc3NpYmxlRGF0ZXMgPSB0aGlzLnRpbWVmcmFtZURhdGVzO1xuICAgIGlmICghdGhpcy5wb3NzaWJsZURhdGVzIHx8IHRoaXMucG9zc2libGVEYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgZGF0ZVRvU2hvd1xuICAgIGlmIChkZWZhdWx0RGF0ZSAmJiB0aGlzLnBvc3NpYmxlRGF0ZXMuZmlsdGVyKGQgPT4gZC5nZXRUaW1lKCkgPT09IGRlZmF1bHREYXRlLmdldFRpbWUoKSkubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmRhdGVUb1Nob3cgPSBkZWZhdWx0RGF0ZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRhdGVUb1Nob3cgJiYgdGhpcy5wb3NzaWJsZURhdGVzLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMucG9zc2libGVEYXRlcy5maWx0ZXIoZCA9PiBkLmdldFRpbWUoKSA9PT0gdGhpcy5kYXRlVG9TaG93Py5nZXRUaW1lKCkpLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhpcy5kYXRlVG9TaG93ID0gdGhpcy5wb3NzaWJsZURhdGVzWzBdO1xuICAgIH1cbiAgICB0aGlzLmRhdGVUb1Nob3dBc1N0cmluZyA9IHRoaXMuZGF0ZVRvU2hvdy50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXRlVG9TaG93SW5kZXgoKTogbnVtYmVyIHtcblxuICAgIGxldCBpbmRleCA9IDA7XG4gICAgZm9yIChjb25zdCBkYXRlIG9mIHRoaXMucG9zc2libGVEYXRlcykge1xuICAgICAgaWYgKGRhdGUudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTkpID09PSB0aGlzLmRhdGVUb1Nob3dBc1N0cmluZy5zdWJzdHJpbmcoMCwgMTkpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1hcE1vdXNlTW92ZShldnQ6IHsgbGF0bG5nOiB7IGxhdDogbnVtYmVyLCBsbmc6IG51bWJlciB9IH0pOiB2b2lkIHtcblxuICAgIGNvbnN0IGxhdDogc3RyaW5nID0gZXZ0LmxhdGxuZy5sYXQudG9GaXhlZCgzKTtcbiAgICBjb25zdCBsbmc6IHN0cmluZyA9IGV2dC5sYXRsbmcubG5nLnRvRml4ZWQoMyk7XG5cbiAgICBsZXQgdmFsdWUgPSBOYU47XG4gICAgbGV0IHZhbHVlTGF0ID0gTmFOLCB2YWx1ZUxuZyA9IE5hTiwgdmFsdWVMYXQyID0gTmFOLCB2YWx1ZUxuZzIgPSBOYU47XG4gICAgaWYgKHRoaXMuY3VycmVudEZyYW1lQ29udGFpbmVyKSB7XG4gICAgICBjb25zdCB2YWx1ZVNlbGVjdGVkID0gKHRoaXMuY3VycmVudEZyYW1lQ29udGFpbmVyLnZhbHVlcyBhcyBDYXJ0ZXNpYW5NYXBWYWx1ZVtdKVxuICAgICAgICAuZmlsdGVyKCh2OiBDYXJ0ZXNpYW5NYXBWYWx1ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiB2LmxhdCA8PSBldnQubGF0bG5nLmxhdCAmJiBldnQubGF0bG5nLmxhdCA8IHYubGF0MiAmJlxuICAgICAgICAgICAgdi5sbmcgPD0gZXZ0LmxhdGxuZy5sbmcgJiYgZXZ0LmxhdGxuZy5sbmcgPCB2LmxuZzI7XG4gICAgICAgIH0pO1xuXG4gICAgICBpZiAodmFsdWVTZWxlY3RlZC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLnJvdW5kKHZhbHVlU2VsZWN0ZWRbMF0udmFsdWUgKiAxMDAwKSAvIDEwMDA7XG4gICAgICAgIHZhbHVlTGF0ID0gTWF0aC5yb3VuZCh2YWx1ZVNlbGVjdGVkWzBdLmxhdCAqIDEwMDApIC8gMTAwMDtcbiAgICAgICAgdmFsdWVMbmcgPSBNYXRoLnJvdW5kKHZhbHVlU2VsZWN0ZWRbMF0ubG5nICogMTAwMCkgLyAxMDAwO1xuICAgICAgICB2YWx1ZUxhdDIgPSBNYXRoLnJvdW5kKHZhbHVlU2VsZWN0ZWRbMF0ubGF0MiAqIDEwMDApIC8gMTAwMDtcbiAgICAgICAgdmFsdWVMbmcyID0gTWF0aC5yb3VuZCh2YWx1ZVNlbGVjdGVkWzBdLmxuZzIgKiAxMDAwKSAvIDEwMDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLndhcm4oJ3ZhbHVlU2VsZWN0ZWQgaXNzdWUgPycsIHZhbHVlU2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm1jVGV4dCA9IGBMYXRpdHVkZTogJHtsYXR9ICZuYnNwOyAmbmJzcDsgTG9uZ2l0dWRlOiAke2xuZ30gJm5ic3A7ICZuYnNwOyBWYWx1ZTogWyR7dmFsdWVMYXR9ICR7dmFsdWVMbmd9IHwgJHt2YWx1ZUxhdDJ9ICR7dmFsdWVMbmcyfV0gJHt2YWx1ZX1gO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1hcENsaWNrKGV2dDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE1hcmtlci5lbWl0KG5ldyBNYXBMYXRMbmcoXG4gICAgICBldnQubGF0bG5nPy5sYXQsIGV2dC5sYXRsbmc/LmxuZywgdW5kZWZpbmVkLFxuICAgICAgZXZ0LmlkLCBldnQubmFtZSkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFwU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNYXBTaXplKCk6IHZvaWQge1xuXG4gICAgY29uc3QgbWFwRGl2V2lkdGggPSB0aGlzLm1hcERpdlJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU/LnBhcmVudE5vZGVbJ2NsaWVudFdpZHRoJ107XG4gICAgY29uc3QgcGFkZGluZyA9IDIxO1xuICAgIGxldCBjdXJyZW50V2lkdGggPSBtYXBEaXZXaWR0aCB8fFxuICAgICAgKHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKTtcbiAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gdGhpcy5jdXJyZW50SGVpZ2h0IHx8XG4gICAgICAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQpO1xuICAgIGN1cnJlbnRXaWR0aCAtPSBwYWRkaW5nO1xuICAgIHRoaXMuY3VycmVudFdpZHRoID0gY3VycmVudFdpZHRoO1xuICAgIHRoaXMuY3VycmVudEhlaWdodCA9IGN1cnJlbnRIZWlnaHQ7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5vblNpemVDaGFuZ2VkKCk7XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPGlvbi1ncmlkPlxuXG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWVuZFwiPlxuICAgIDxpb24tY29sIGlkPVwibWFwLWJ1dHRvbnNcIiBzaXplLXNtPVwiM1wiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInByZXZpb3VzKClcIiBjb2xvcj1cIm1lZGl1bVwiIGZpbGw9XCJvdXRsaW5lXCIgc2hhcGU9XCJyb3VuZFwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cInBsYXktYmFja1wiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPCEtLVxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInBsYXkoKVwiIFtoaWRkZW5dPVwiYXV0b3BsYXlcIiBjb2xvcj1cIm1lZGl1bVwiIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwbGF5XCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICAtLT5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJzdG9wKClcIiBbaGlkZGVuXT1cIiFhdXRvcGxheVwiIGNvbG9yPVwibWVkaXVtXCIgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cInN0b3BcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm5leHQoKVwiIGNvbG9yPVwibWVkaXVtXCIgZmlsbD1cIm91dGxpbmVcIiBzaGFwZT1cInJvdW5kXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwicGxheS1mb3J3YXJkXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPCEtLVxuICAgIDxpb24tY29sIGlkPVwibWFwLXRpbWVmcmFtZVwiIHNpemUtc209XCI0XCI+XG4gICAgICA8aW9uLXNlbGVjdCAoaW9uQ2hhbmdlKT1cInNob3dUaW1lZnJhbWUoKVwiIFsobmdNb2RlbCldPVwidGltZWZyYW1lTmFtZVRvU2hvd1wiIFt2YWx1ZV09XCJ0aW1lZnJhbWVOYW1lVG9TaG93XCJcbiAgICAgICAgICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIiBwbGFjZWhvbGRlcj1cIk5hbWVcIj5cbiAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBuYW1lIG9mIHBvc3NpYmxlTmFtZXNcIiBbdmFsdWVdPVwibmFtZVwiPnt7IG5hbWUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgPC9pb24tc2VsZWN0PlxuICAgIDwvaW9uLWNvbD4gLS0+XG5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXN0YXJ0XCIgaWQ9XCJtYXAtZGF0ZVwiPlxuICAgICAgPGlvbi1zZWxlY3QgKGlvbkRpc21pc3MpPVwic2hvd1RpbWVmcmFtZSgpXCIgWyhuZ01vZGVsKV09XCJkYXRlVG9TaG93QXNTdHJpbmdcIiBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGVyaW9kXCIgdmFsdWU9XCJ7e2RhdGVUb1Nob3dBc1N0cmluZ319XCI+XG4gICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF0ZVRvU2VsZWN0IG9mIHBvc3NpYmxlRGF0ZXNcIiB2YWx1ZT1cInt7ZGF0ZVRvU2VsZWN0LnRvSVNPU3RyaW5nKCl9fVwiPlxuICAgICAgICAgIHt7IGRhdGVUb1NlbGVjdCB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW0nIH19XG4gICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgPC9pb24tY29sPlxuICAgIDxpb24tY29sPlxuICAgICAgPGlvbi10b2dnbGUgKGlvbkNoYW5nZSk9XCJjaGFuZ2VTaG93TWFya2VycygpXCIgWyhuZ01vZGVsKV09XCJzaG93TWFya2Vyc1wiIFtjaGVja2VkXT1cInNob3dNYXJrZXJzXCI+PC9pb24tdG9nZ2xlPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sPlxuICAgICAgPGRpdiBpZD1cIm1hcC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiAjcHJpbWFyeU1hcCBpZD1cIm1hcC1kaXZcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1oaWRlLXhsLWRvd25cIj5cbiAgICAgIDxpb24taW1nIGlkPVwibWFwLXJhbmdlXCIgc3JjPVwiYXNzZXRzL3Iycl9yYW5nZS5zdmdcIi8+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2wgc2l6ZS1zbT1cIjhcIj5cbiAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibWNUZXh0XCI+PC9zcGFuPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBzaXplLXNtPVwiMVwiPlxuICAgICAgPGlvbi1idXR0b24gZGlzYWJsZWQ9XCJ0cnVlXCIgZmlsbD1cImNsZWFyXCI+e3sgc3VtUmVzdWx0IH19PC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBzaXplLXNtPVwiM1wiPlxuICAgICAgPGlvbi1idXR0b24gZGlzYWJsZWQ9XCJ0cnVlXCIgZmlsbD1cImNsZWFyXCI+e3sgZGF0ZVRvU2hvdz8udG9JU09TdHJpbmcoKSB9fTwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cblxuPC9pb24tZ3JpZD5cbiJdfQ==
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3JhYWluLW1hcC9yYWFpbi1tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tbWFwL3JhYWluLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFvQixlQUFlLEVBQThCLFNBQVMsRUFBc0IsTUFBTSxVQUFVLENBQUM7Ozs7O0FBT3hILE1BQU0sT0FBTyxpQkFBaUI7SUFnRTVCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBaEQzQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBTW5CLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBVzVCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUcvQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUEyQjVDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLGNBQWM7UUFDZCxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQUM5QyxNQUFNLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRDtRQUM1RixNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQixNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0VBQW9FO1FBQ2xHLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsTUFBTSxFQUFFLEVBQUMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFDO1lBQ3ZGLGVBQWUsRUFBRSxFQUFDLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQztZQUNyRyxjQUFjLEVBQUUsRUFBQyxPQUFPLEVBQUUsNkNBQTZDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUM7WUFDM0csTUFBTSxFQUFFLEVBQUMsT0FBTyxFQUFFLCtCQUErQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFDO1lBQ3JGLGNBQWMsRUFBRSxFQUFDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFDO1lBQ3RILE9BQU8sRUFBRSxFQUFDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQztTQUN6RixDQUFDO0lBQ0osQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFLO1FBRWhDLG9HQUFvRztRQUNwRywrQ0FBK0M7UUFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7ZUFDdkIsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7WUFDM0YsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUQsT0FBTztTQUNSO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxRCxPQUFPO1NBQ1I7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXhELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUU7WUFDbEUsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFTyxNQUFNO1FBRVosTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFDO1lBQ3pFLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBQztZQUN6RixFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUM7WUFDM0YsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFDO1lBQ3pFLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBQztZQUN6RiwrRUFBK0U7U0FDaEYsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFFZCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUNuQixPQUFPO2lCQUNSO2dCQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO2dCQUU1SCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFGLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO29CQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDckUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7Z0JBQzlELENBQUMsQ0FBQTtnQkFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLDJGQUEyRjtnQkFDM0YsNkNBQTZDO2dCQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7UUFDMUIsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUVsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU8sTUFBTSxDQUFDLE9BQXNCO1FBQ25DLHVDQUF1QztRQUV2QyxJQUFJLHNCQUE0QixDQUFDO1FBQ2pDLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN2QixJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDbEgsT0FBTzthQUNSO1lBQ0Qsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMzQztRQUVELElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRTtZQUVwRCxNQUFNLE9BQU8sR0FBRztnQkFDZCxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUM7Z0JBQ3hFLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBQztnQkFDeEYsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFDO2dCQUMxRixFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUM7Z0JBQ3hFLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBQztnQkFDeEYsK0VBQStFO2FBQ2hGLENBQUM7WUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzdFLElBQUksZUFBZSxFQUFFO2dCQUNuQixlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ25FO2FBQ0Y7U0FDRjtRQUVELElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDdkQ7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLG1CQUFtQixFQUFFO1lBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BGO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdFO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFdBQWtCO1FBQ3pDLHdCQUF3QjtRQUN4QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUMxRSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0MsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDekY7UUFFRCx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxRCxPQUFPO1NBQ1I7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyRyxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVPLGtCQUFrQjtRQUV4QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFDcEYsTUFBTTthQUNQO1lBQ0QsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUE2QztRQUVsRSxNQUFNLEdBQUcsR0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxHQUFHLEdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLFFBQVEsR0FBRyxHQUFHLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxTQUFTLEdBQUcsR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDckUsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDOUIsTUFBTSxhQUFhLEdBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQThCO2lCQUM3RSxNQUFNLENBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUU7Z0JBQy9CLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSTtvQkFDdkQsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxDQUFDO1lBRUwsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDOUIsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3pELFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMxRCxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDMUQsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQzVELFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQzdEO2lCQUFNO2dCQUNMLHdEQUF3RDthQUN6RDtTQUNGO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ25CLGdGQUFnRjtZQUNoRiw2RUFBNkU7WUFDN0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLEdBQUcsNkJBQTZCLEdBQUcseUJBQXlCLEtBQUssRUFBRSxDQUFDO1FBQ2pHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFRO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUNwQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQzNDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUdPLFFBQVEsQ0FBQyxLQUFVO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYTtRQUVuQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLFlBQVksR0FBRyxXQUFXO1lBQzVCLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhO1lBQ3RDLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlGLFlBQVksSUFBSSxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFFbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQWhYVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix3bEJDdEI5Qiw4bUZBb0VBOzRGRDlDYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsV0FBVzs2RkFPZCxXQUFXO3NCQURqQixLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFVQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsS0FBSztnQkFLQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFLQyxjQUFjO3NCQURwQixNQUFNO2dCQUlBLFdBQVc7c0JBRGpCLE1BQU07Z0JBYUcsU0FBUztzQkFEbEIsU0FBUzt1QkFBQyxZQUFZO2dCQTRTZixRQUFRO3NCQURmLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJY29uT3B0aW9uc30gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQge0NhcnRlc2lhbk1hcFZhbHVlLCBFbGVtZW50c0ZhY3RvcnksIEZyYW1lQ29udGFpbmVyLCBNYXBFbGVtZW50LCBNYXBMYXRMbmcsIFRpbWVmcmFtZUNvbnRhaW5lcnN9IGZyb20gJ3JhYWluLXVpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncmFhaW4tbWFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhYWluLW1hcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhYWluLW1hcC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbk1hcENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29vcmRpbmF0ZXM6IE1hcExhdExuZztcbiAgQElucHV0KClcbiAgcHVibGljIG1hcmtlcnM6IHtcbiAgICBnYXVnZXM6IE1hcExhdExuZ1tdLFxuICAgIHNlbGVjdGVkR2F1Z2VzOiBNYXBMYXRMbmdbXSxcbiAgICBwaXhlbHM6IE1hcExhdExuZ1tdLFxuICAgIGJvcmRlcnM6IE1hcExhdExuZ1tdLFxuICAgIGdhdWdlc0luQ29tcGFyZTogTWFwTGF0TG5nW10sXG4gICAgcGl4ZWxzU29sdXRpb246IE1hcExhdExuZ1tdLFxuICB9O1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycztcbiAgQElucHV0KClcbiAgcHVibGljIGF1dG9wbGF5ID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93TWFya2VycyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBjdXJyZW50V2lkdGg6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdGltZWZyYW1lRGF0ZXM6IERhdGVbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVmYXVsdERhdGU6IERhdGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN1bVZhbHVlczogYW55O1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3VtRm46IGFueTtcbiAgcHVibGljIHN1bVJlc3VsdDogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRNYXJrZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1hcExhdExuZz4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNoYW5nZWREYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHB1YmxpYyBtY1RleHQ7XG4gIHB1YmxpYyBuZXh0RGF0ZTogRGF0ZTtcbiAgcHVibGljIHBvc3NpYmxlTmFtZXM6IHN0cmluZ1tdO1xuICBwdWJsaWMgcG9zc2libGVEYXRlczogRGF0ZVtdO1xuICBwdWJsaWMgZGF0ZVRvU2hvdzogRGF0ZTtcbiAgcHVibGljIGRhdGVUb1Nob3dBc1N0cmluZzogc3RyaW5nO1xuICBwdWJsaWMgdGltZWZyYW1lTmFtZVRvU2hvdzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY3VycmVudEZyYW1lQ29udGFpbmVyOiBGcmFtZUNvbnRhaW5lcjtcblxuICBAVmlld0NoaWxkKCdwcmltYXJ5TWFwJylcbiAgcHJvdGVjdGVkIG1hcERpdlJlZjogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIG1hcEVsZW1lbnQ6IE1hcEVsZW1lbnQ7XG4gIHByaXZhdGUgb25TaXplQ2hhbmdlZDtcbiAgcHJpdmF0ZSBjcmVhdGVkO1xuICBwcml2YXRlIGljb25PcHRpb25zOiB7XG4gICAgZ2F1Z2VzOiBJY29uT3B0aW9ucyxcbiAgICBzZWxlY3RlZEdhdWdlczogSWNvbk9wdGlvbnMsXG4gICAgcGl4ZWxzOiBJY29uT3B0aW9ucyxcbiAgICBib3JkZXJzOiBJY29uT3B0aW9ucyxcbiAgICBnYXVnZXNJbkNvbXBhcmU6IEljb25PcHRpb25zLFxuICAgIHBpeGVsc1NvbHV0aW9uOiBJY29uT3B0aW9ucyxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgdGhpcy5kZWxldGUoKTtcblxuICAgIC8vIHNoYWRvd1VybCA/XG4gICAgY29uc3QgaWNvblNpemUgPSBbNDAsIDQwXTsgLy8gc2l6ZSBvZiB0aGUgaWNvblxuICAgIGNvbnN0IGljb25BbmNob3IgPSBbMjAsIDIwXTsgLy8gcG9pbnQgb2YgdGhlIGljb24gd2hpY2ggd2lsbCBjb3JyZXNwb25kIHRvIG1hcmtlcidzIGxvY2F0aW9uXG4gICAgY29uc3QgcGl4ZWxTaXplID0gWzQxLCA0MV07XG4gICAgY29uc3QgcGl4ZWxBbmNob3IgPSBbMjAsIDIwXTtcbiAgICBjb25zdCBwb3B1cEFuY2hvciA9IFswLCAtMjBdOyAvLyBwb2ludCBmcm9tIHdoaWNoIHRoZSBwb3B1cCBzaG91bGQgb3BlbiByZWxhdGl2ZSB0byB0aGUgaWNvbkFuY2hvclxuICAgIHRoaXMuaWNvbk9wdGlvbnMgPSB7XG4gICAgICBnYXVnZXM6IHtpY29uVXJsOiAnLi9hc3NldHMvbWFwcy9tYXJrZXItcGx1dmlvLnBuZycsIGljb25TaXplLCBpY29uQW5jaG9yLCBwb3B1cEFuY2hvcn0sXG4gICAgICBnYXVnZXNJbkNvbXBhcmU6IHtpY29uVXJsOiAnLi9hc3NldHMvbWFwcy9tYXJrZXItcGx1dmlvLWRpYWcucG5nJywgaWNvblNpemUsIGljb25BbmNob3IsIHBvcHVwQW5jaG9yfSxcbiAgICAgIHNlbGVjdGVkR2F1Z2VzOiB7aWNvblVybDogJy4vYXNzZXRzL21hcHMvbWFya2VyLXBsdXZpby1kaWFnLXNlbGVjdC5wbmcnLCBpY29uU2l6ZSwgaWNvbkFuY2hvciwgcG9wdXBBbmNob3J9LFxuICAgICAgcGl4ZWxzOiB7aWNvblVybDogJy4vYXNzZXRzL21hcHMvbWFya2VyLXJhaW4ucG5nJywgaWNvblNpemUsIGljb25BbmNob3IsIHBvcHVwQW5jaG9yfSxcbiAgICAgIHBpeGVsc1NvbHV0aW9uOiB7aWNvblVybDogJy4vYXNzZXRzL21hcHMvbWFya2VyLXJhaW4yLnBuZycsIGljb25TaXplOiBwaXhlbFNpemUsIGljb25BbmNob3I6IHBpeGVsQW5jaG9yLCBwb3B1cEFuY2hvcn0sXG4gICAgICBib3JkZXJzOiB7aWNvblVybDogJy4vYXNzZXRzL21hcHMvbWFya2VyLXNoYWRvdy5wbmcnLCBpY29uU2l6ZSwgaWNvbkFuY2hvciwgcG9wdXBBbmNob3J9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlKGNoYW5nZXMpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd1RpbWVmcmFtZShmb3JjZSA9IGZhbHNlKSB7XG5cbiAgICAvLyBjb25zdCB7ZnJhbWVDb250YWluZXIsIGxheWVyfSA9IHRoaXMudGltZWZyYW1lQ29udGFpbmVycy5zaG93VGltZWZyYW1lKHRoaXMudGltZWZyYW1lTmFtZVRvU2hvdyk7XG4gICAgLy8gdGhpcy5jdXJyZW50RnJhbWVDb250YWluZXIgPSBmcmFtZUNvbnRhaW5lcjtcblxuICAgIGlmICghdGhpcy5kYXRlVG9TaG93QXNTdHJpbmdcbiAgICAgIHx8ICghZm9yY2UgJiYgbmV3IERhdGUodGhpcy5kYXRlVG9TaG93QXNTdHJpbmcpLmdldFRpbWUoKSA9PT0gdGhpcy5kYXRlVG9TaG93Py5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlVG9TaG93ID0gbmV3IERhdGUodGhpcy5kYXRlVG9TaG93QXNTdHJpbmcpO1xuICAgIHRoaXMuY2hhbmdlZERhdGUuZW1pdCh0aGlzLmRhdGVUb1Nob3cpO1xuICB9XG5cbiAgcHVibGljIG5leHQoKSB7XG4gICAgaWYgKCF0aGlzLnBvc3NpYmxlRGF0ZXMgfHwgdGhpcy5wb3NzaWJsZURhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXREYXRlVG9TaG93SW5kZXgoKTtcbiAgICB0aGlzLmRhdGVUb1Nob3cgPSAoaW5kZXggKyAxKSA8IHRoaXMucG9zc2libGVEYXRlcy5sZW5ndGggPyB0aGlzLnBvc3NpYmxlRGF0ZXNbaW5kZXggKyAxXSA6IHRoaXMucG9zc2libGVEYXRlc1swXTtcbiAgICB0aGlzLmRhdGVUb1Nob3dBc1N0cmluZyA9IHRoaXMuZGF0ZVRvU2hvdy50b0lTT1N0cmluZygpO1xuXG4gICAgdGhpcy5zaG93VGltZWZyYW1lKHRydWUpO1xuICAgIGlmICh0aGlzLmF1dG9wbGF5KSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLm5leHQoKSwgMjAwMCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByZXZpb3VzKCkge1xuICAgIHRoaXMuc3RvcCgpO1xuICAgIGlmICghdGhpcy5wb3NzaWJsZURhdGVzIHx8IHRoaXMucG9zc2libGVEYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0RGF0ZVRvU2hvd0luZGV4KCk7XG4gICAgdGhpcy5kYXRlVG9TaG93ID0gaW5kZXggPiAwID8gdGhpcy5wb3NzaWJsZURhdGVzW2luZGV4IC0gMV0gOiB0aGlzLnBvc3NpYmxlRGF0ZXNbMF07XG4gICAgdGhpcy5kYXRlVG9TaG93QXNTdHJpbmcgPSB0aGlzLmRhdGVUb1Nob3cudG9JU09TdHJpbmcoKTtcblxuICAgIHRoaXMuc2hvd1RpbWVmcmFtZSh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBwbGF5KCkge1xuICAgIHRoaXMuYXV0b3BsYXkgPSB0cnVlO1xuICAgIHRoaXMubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHN0b3AoKSB7XG4gICAgdGhpcy5hdXRvcGxheSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVNob3dNYXJrZXJzKCkge1xuICAgIGlmICghdGhpcy5tYXBFbGVtZW50Py5tYXJrZXJzTGF5ZXIgfHwgIXRoaXMubWFwRWxlbWVudD8ubWFwTGVhZmxldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3dNYXJrZXJzKSB7XG4gICAgICB0aGlzLm1hcEVsZW1lbnQubWFya2Vyc0xheWVyLmFkZFRvTWFwKHRoaXMubWFwRWxlbWVudC5tYXBMZWFmbGV0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXBFbGVtZW50Lm1hcmtlcnNMYXllci5yZW1vdmVGcm9tTWFwKHRoaXMubWFwRWxlbWVudC5tYXBMZWFmbGV0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZSgpIHtcblxuICAgIGNvbnN0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQ7XG4gICAgaWYgKGNyZWF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVkID0gdHJ1ZTtcbiAgICBjb25zdCBtYXJrZXJzID0gW1xuICAgICAge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMuZ2F1Z2VzLCBpY29uc09wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMuZ2F1Z2VzfSxcbiAgICAgIHtpY29uc0xhdExuZzogdGhpcy5tYXJrZXJzLnNlbGVjdGVkR2F1Z2VzLCBpY29uc09wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMuc2VsZWN0ZWRHYXVnZXN9LFxuICAgICAge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMuZ2F1Z2VzSW5Db21wYXJlLCBpY29uc09wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMuZ2F1Z2VzSW5Db21wYXJlfSxcbiAgICAgIHtpY29uc0xhdExuZzogdGhpcy5tYXJrZXJzLnBpeGVscywgaWNvbnNPcHRpb25zOiB0aGlzLmljb25PcHRpb25zLnBpeGVsc30sXG4gICAgICB7aWNvbnNMYXRMbmc6IHRoaXMubWFya2Vycy5waXhlbHNTb2x1dGlvbiwgaWNvbnNPcHRpb25zOiB0aGlzLmljb25PcHRpb25zLnBpeGVsc1NvbHV0aW9ufSxcbiAgICAgIC8vIHtpY29uc0xhdExuZzogdGhpcy5tYXJrZXJzLmJvcmRlcnMsIGljb25zT3B0aW9uczogdGhpcy5pY29uT3B0aW9ucy5ib3JkZXJzfSxcbiAgICBdO1xuXG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBFbGVtZW50c0ZhY3RvcnkodGhpcy5jb29yZGluYXRlcywgdHJ1ZSk7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgICAgY29uc3QgY3JlYXRlZE91dHNpZGUgPSB0aGlzLmNyZWF0ZWQ7XG4gICAgICAgIGlmICghY3JlYXRlZE91dHNpZGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1hcEVsZW1lbnQgPSBmYWN0b3J5LmNyZWF0ZU1hcCh0aGlzLm1hcERpdlJlZi5uYXRpdmVFbGVtZW50LCB7dGltZWZyYW1lQ29udGFpbmVyczogdGhpcy50aW1lZnJhbWVDb250YWluZXJzLCBtYXJrZXJzfSk7XG5cbiAgICAgICAgdGhpcy5tYXBFbGVtZW50Lm1hcExlYWZsZXQ/Lm9uKCdtb3VzZW1vdmUnLCAoZXZ0KSA9PiB0aGlzLm9uTWFwTW91c2VNb3ZlKGV2dCkpO1xuICAgICAgICB0aGlzLm1hcEVsZW1lbnQubWFya2Vyc1Byb2R1Y2VkPy5mb3JFYWNoKG0gPT4gbS5vbignY2xpY2snLCBldnQgPT4gdGhpcy5vbk1hcENsaWNrKGV2dCkpKTtcbiAgICAgICAgdGhpcy5vblNpemVDaGFuZ2VkID0gKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWFwRWxlbWVudC5tYXJrZXJzTGF5ZXI/LnNldEN1cnJlbnRXaWR0aCh0aGlzLmN1cnJlbnRXaWR0aCk7XG4gICAgICAgICAgdGhpcy5tYXBFbGVtZW50Lm1hcmtlcnNMYXllcj8uc2V0Q3VycmVudEhlaWdodCh0aGlzLmN1cnJlbnRIZWlnaHQpO1xuICAgICAgICAgIHRoaXMubWFwRWxlbWVudC5jb21wb3NpdGVMYXllcj8uc2V0Q3VycmVudFdpZHRoKHRoaXMuY3VycmVudFdpZHRoKTtcbiAgICAgICAgICB0aGlzLm1hcEVsZW1lbnQuY29tcG9zaXRlTGF5ZXI/LnNldEN1cnJlbnRIZWlnaHQodGhpcy5jdXJyZW50SGVpZ2h0KTtcbiAgICAgICAgICB0aGlzLm1hcEVsZW1lbnQubWFwTGVhZmxldD8uaW52YWxpZGF0ZVNpemUoe2FuaW1hdGU6IHRydWV9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZU1hcFNpemUoKTtcbiAgICAgICAgLy8gdGhpcy50aW1lZnJhbWVOYW1lVG9TaG93ID0gdGhpcy5wb3NzaWJsZU5hbWVzLmxlbmd0aCA+IDAgPyB0aGlzLnBvc3NpYmxlTmFtZXNbMF0gOiBudWxsO1xuICAgICAgICAvLyB0aGlzLnRvZ2dsZUhpZGVNYXJrZXJzKCF0aGlzLmhpZGVNYXJrZXJzKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VOYXZpZ2F0aW9uKHRoaXMuZGVmYXVsdERhdGUpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9KTtcblxuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGUoKSB7XG4gICAgdGhpcy5tYXBFbGVtZW50Py5tYXBMZWFmbGV0Py5yZW1vdmUoKTtcbiAgICB0aGlzLm1hcEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tY1RleHQgPSAnJztcbiAgICB0aGlzLm5leHREYXRlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucG9zc2libGVOYW1lcyA9IFtdO1xuICAgIHRoaXMucG9zc2libGVEYXRlcyA9IFtdO1xuICAgIHRoaXMudGltZWZyYW1lTmFtZVRvU2hvdyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRhdGVUb1Nob3cgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kYXRlVG9TaG93QXNTdHJpbmcgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vblNpemVDaGFuZ2VkID0gKCkgPT4ge1xuICAgIH07XG4gICAgdGhpcy5jdXJyZW50RnJhbWVDb250YWluZXIgPSBudWxsO1xuXG4gICAgdGhpcy5jcmVhdGVkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ21hcCBjaGFuZ2VzJywgY2hhbmdlcyk7XG5cbiAgICBsZXQgcG9zc2libGVOZXdEZWZhdWx0RGF0ZTogRGF0ZTtcbiAgICBpZiAoY2hhbmdlcy5kZWZhdWx0RGF0ZSkge1xuICAgICAgaWYgKG5ldyBEYXRlKGNoYW5nZXMuZGVmYXVsdERhdGUuY3VycmVudFZhbHVlKS5nZXRUaW1lKCkgPT09IG5ldyBEYXRlKGNoYW5nZXMuZGVmYXVsdERhdGUucHJldmlvdXNWYWx1ZSkuZ2V0VGltZSgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHBvc3NpYmxlTmV3RGVmYXVsdERhdGUgPSB0aGlzLmRlZmF1bHREYXRlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLm1hcmtlcnMgJiYgdGhpcy5tYXBFbGVtZW50Py5tYXJrZXJzTGF5ZXIpIHtcblxuICAgICAgY29uc3QgbWFya2VycyA9IFtcbiAgICAgICAge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMuZ2F1Z2VzLCBpY29uT3B0aW9uczogdGhpcy5pY29uT3B0aW9ucy5nYXVnZXN9LFxuICAgICAgICB7aWNvbnNMYXRMbmc6IHRoaXMubWFya2Vycy5zZWxlY3RlZEdhdWdlcywgaWNvbk9wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMuc2VsZWN0ZWRHYXVnZXN9LFxuICAgICAgICB7aWNvbnNMYXRMbmc6IHRoaXMubWFya2Vycy5nYXVnZXNJbkNvbXBhcmUsIGljb25PcHRpb25zOiB0aGlzLmljb25PcHRpb25zLmdhdWdlc0luQ29tcGFyZX0sXG4gICAgICAgIHtpY29uc0xhdExuZzogdGhpcy5tYXJrZXJzLnBpeGVscywgaWNvbk9wdGlvbnM6IHRoaXMuaWNvbk9wdGlvbnMucGl4ZWxzfSxcbiAgICAgICAge2ljb25zTGF0TG5nOiB0aGlzLm1hcmtlcnMucGl4ZWxzU29sdXRpb24sIGljb25PcHRpb25zOiB0aGlzLmljb25PcHRpb25zLnBpeGVsc1NvbHV0aW9ufSxcbiAgICAgICAgLy8gIHtpY29uc0xhdExuZzogdGhpcy5tYXJrZXJzLmJvcmRlcnMsIGljb25PcHRpb25zOiB0aGlzLmljb25PcHRpb25zLmJvcmRlcnN9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IG1hcmtlcnNQcm9kdWNlZCA9IHRoaXMubWFwRWxlbWVudC5tYXJrZXJzTGF5ZXIucmVuZGVyKG1hcmtlcnMpLm1hcmtlcnM7XG4gICAgICBpZiAobWFya2Vyc1Byb2R1Y2VkKSB7XG4gICAgICAgIG1hcmtlcnNQcm9kdWNlZC5mb3JFYWNoKG0gPT4gbS5vbignY2xpY2snLCBldnQgPT4gdGhpcy5vbk1hcENsaWNrKGV2dCkpKTtcbiAgICAgICAgaWYgKHRoaXMuc2hvd01hcmtlcnMpIHtcbiAgICAgICAgICB0aGlzLm1hcEVsZW1lbnQubWFya2Vyc0xheWVyLnJlbW92ZUZyb21NYXAodGhpcy5tYXBFbGVtZW50Lm1hcExlYWZsZXQpO1xuICAgICAgICAgIHRoaXMubWFwRWxlbWVudC5tYXJrZXJzTGF5ZXIuYWRkVG9NYXAodGhpcy5tYXBFbGVtZW50Lm1hcExlYWZsZXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMubWFya2VycyAmJiB0aGlzLm1hcmtlcnMuc2VsZWN0ZWRHYXVnZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEdhdWdlID0gdGhpcy5tYXJrZXJzLnNlbGVjdGVkR2F1Z2VzWzBdO1xuICAgICAgdGhpcy5tYXBFbGVtZW50Lm1hcExlYWZsZXQuc2V0VmlldyhzZWxlY3RlZEdhdWdlLCAxMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWFwRWxlbWVudCAmJiBjaGFuZ2VzLnRpbWVmcmFtZUNvbnRhaW5lcnMpIHtcbiAgICAgIHRoaXMubWFwRWxlbWVudC51cGRhdGVNYXBUaW1lZnJhbWUodGhpcy50aW1lZnJhbWVDb250YWluZXJzKTtcbiAgICAgIHRoaXMuY3VycmVudEZyYW1lQ29udGFpbmVyID0gdGhpcy50aW1lZnJhbWVDb250YWluZXJzPy5jb250YWluZXJzWzBdPy50aW1lZnJhbWVbMF07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWFwRWxlbWVudD8uY29tcG9zaXRlTGF5ZXIgJiYgY2hhbmdlcy5zdW1WYWx1ZXMpIHtcbiAgICAgIGNvbnN0IGRyYXdlciA9IHRoaXMubWFwRWxlbWVudC5jb21wb3NpdGVMYXllci5nZXRGaXJzdERyYXdlcigpO1xuICAgICAgdGhpcy5zdW1SZXN1bHQgPSBkcmF3ZXI/LmdldEV4ZWNPZlZpc2libGVQb2ludHModGhpcy5zdW1WYWx1ZXMsIHRoaXMuc3VtRm4pO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlTmF2aWdhdGlvbihwb3NzaWJsZU5ld0RlZmF1bHREYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlTmF2aWdhdGlvbihkZWZhdWx0RGF0ZT86IERhdGUpIHtcbiAgICAvLyB1cGRhdGUgcG9zc2libGUgbmFtZXNcbiAgICBpZiAodGhpcy50aW1lZnJhbWVDb250YWluZXJzICYmIHRoaXMudGltZWZyYW1lQ29udGFpbmVycy5jb250YWluZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5wb3NzaWJsZU5hbWVzID0gW107XG4gICAgICB0aGlzLnRpbWVmcmFtZUNvbnRhaW5lcnM/LmNvbnRhaW5lcnMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgaWYgKHRoaXMucG9zc2libGVOYW1lcy5pbmRleE9mKGMubmFtZSkgPCAwKSB7XG4gICAgICAgICAgdGhpcy5wb3NzaWJsZU5hbWVzLnB1c2goYy5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnRpbWVmcmFtZU5hbWVUb1Nob3cgPSB0aGlzLnBvc3NpYmxlTmFtZXMubGVuZ3RoID4gMCA/IHRoaXMucG9zc2libGVOYW1lc1swXSA6IG51bGw7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHBvc3NpYmxlIGRhdGVzXG4gICAgdGhpcy5wb3NzaWJsZURhdGVzID0gdGhpcy50aW1lZnJhbWVEYXRlcztcbiAgICBpZiAoIXRoaXMucG9zc2libGVEYXRlcyB8fCB0aGlzLnBvc3NpYmxlRGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIGRhdGVUb1Nob3dcbiAgICBpZiAoZGVmYXVsdERhdGUgJiYgdGhpcy5wb3NzaWJsZURhdGVzLmZpbHRlcihkID0+IGQuZ2V0VGltZSgpID09PSBkZWZhdWx0RGF0ZS5nZXRUaW1lKCkpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5kYXRlVG9TaG93ID0gZGVmYXVsdERhdGU7XG4gICAgfVxuICAgIGlmICghdGhpcy5kYXRlVG9TaG93ICYmIHRoaXMucG9zc2libGVEYXRlcy5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLnBvc3NpYmxlRGF0ZXMuZmlsdGVyKGQgPT4gZC5nZXRUaW1lKCkgPT09IHRoaXMuZGF0ZVRvU2hvdz8uZ2V0VGltZSgpKS5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRoaXMuZGF0ZVRvU2hvdyA9IHRoaXMucG9zc2libGVEYXRlc1swXTtcbiAgICB9XG4gICAgdGhpcy5kYXRlVG9TaG93QXNTdHJpbmcgPSB0aGlzLmRhdGVUb1Nob3cudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGF0ZVRvU2hvd0luZGV4KCk6IG51bWJlciB7XG5cbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGZvciAoY29uc3QgZGF0ZSBvZiB0aGlzLnBvc3NpYmxlRGF0ZXMpIHtcbiAgICAgIGlmIChkYXRlLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE5KSA9PT0gdGhpcy5kYXRlVG9TaG93QXNTdHJpbmcuc3Vic3RyaW5nKDAsIDE5KSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgb25NYXBNb3VzZU1vdmUoZXZ0OiB7IGxhdGxuZzogeyBsYXQ6IG51bWJlciwgbG5nOiBudW1iZXIgfSB9KTogdm9pZCB7XG5cbiAgICBjb25zdCBsYXQ6IHN0cmluZyA9IGV2dC5sYXRsbmcubGF0LnRvRml4ZWQoMyk7XG4gICAgY29uc3QgbG5nOiBzdHJpbmcgPSBldnQubGF0bG5nLmxuZy50b0ZpeGVkKDMpO1xuXG4gICAgbGV0IHZhbHVlID0gTmFOO1xuICAgIGxldCB2YWx1ZUxhdCA9IE5hTiwgdmFsdWVMbmcgPSBOYU4sIHZhbHVlTGF0MiA9IE5hTiwgdmFsdWVMbmcyID0gTmFOO1xuICAgIGlmICh0aGlzLmN1cnJlbnRGcmFtZUNvbnRhaW5lcikge1xuICAgICAgY29uc3QgdmFsdWVTZWxlY3RlZCA9ICh0aGlzLmN1cnJlbnRGcmFtZUNvbnRhaW5lci52YWx1ZXMgYXMgQ2FydGVzaWFuTWFwVmFsdWVbXSlcbiAgICAgICAgLmZpbHRlcigodjogQ2FydGVzaWFuTWFwVmFsdWUpID0+IHtcbiAgICAgICAgICByZXR1cm4gdi5sYXQgPD0gZXZ0LmxhdGxuZy5sYXQgJiYgZXZ0LmxhdGxuZy5sYXQgPCB2LmxhdDIgJiZcbiAgICAgICAgICAgIHYubG5nIDw9IGV2dC5sYXRsbmcubG5nICYmIGV2dC5sYXRsbmcubG5nIDwgdi5sbmcyO1xuICAgICAgICB9KTtcblxuICAgICAgaWYgKHZhbHVlU2VsZWN0ZWQubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZVNlbGVjdGVkWzBdLnZhbHVlICogMTAwMCkgLyAxMDAwO1xuICAgICAgICB2YWx1ZUxhdCA9IE1hdGgucm91bmQodmFsdWVTZWxlY3RlZFswXS5sYXQgKiAxMDAwKSAvIDEwMDA7XG4gICAgICAgIHZhbHVlTG5nID0gTWF0aC5yb3VuZCh2YWx1ZVNlbGVjdGVkWzBdLmxuZyAqIDEwMDApIC8gMTAwMDtcbiAgICAgICAgdmFsdWVMYXQyID0gTWF0aC5yb3VuZCh2YWx1ZVNlbGVjdGVkWzBdLmxhdDIgKiAxMDAwKSAvIDEwMDA7XG4gICAgICAgIHZhbHVlTG5nMiA9IE1hdGgucm91bmQodmFsdWVTZWxlY3RlZFswXS5sbmcyICogMTAwMCkgLyAxMDAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS53YXJuKCd2YWx1ZVNlbGVjdGVkIGlzc3VlID8nLCB2YWx1ZVNlbGVjdGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgLy8gdGhpcy5tY1RleHQgPSBgTGF0aXR1ZGU6ICR7bGF0fSAmbmJzcDsgJm5ic3A7IExvbmdpdHVkZTogJHtsbmd9ICZuYnNwOyAmbmJzcDtcbiAgICAgIC8vICAgIFZhbHVlOiBbJHt2YWx1ZUxhdH0gJHt2YWx1ZUxuZ30gfCAke3ZhbHVlTGF0Mn0gJHt2YWx1ZUxuZzJ9XSAke3ZhbHVlfWA7XG4gICAgICB0aGlzLm1jVGV4dCA9IGBMYXRpdHVkZTogJHtsYXR9ICZuYnNwOyAmbmJzcDsgTG9uZ2l0dWRlOiAke2xuZ30gJm5ic3A7ICZuYnNwOyBWYWx1ZTogJHt2YWx1ZX1gO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1hcENsaWNrKGV2dDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE1hcmtlci5lbWl0KG5ldyBNYXBMYXRMbmcoXG4gICAgICBldnQubGF0bG5nPy5sYXQsIGV2dC5sYXRsbmc/LmxuZywgdW5kZWZpbmVkLFxuICAgICAgZXZ0LmlkLCBldnQubmFtZSkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFwU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNYXBTaXplKCk6IHZvaWQge1xuXG4gICAgY29uc3QgbWFwRGl2V2lkdGggPSB0aGlzLm1hcERpdlJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU/LnBhcmVudE5vZGVbJ2NsaWVudFdpZHRoJ107XG4gICAgY29uc3QgcGFkZGluZyA9IDIxO1xuICAgIGxldCBjdXJyZW50V2lkdGggPSBtYXBEaXZXaWR0aCB8fFxuICAgICAgKHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKTtcbiAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gdGhpcy5jdXJyZW50SGVpZ2h0IHx8XG4gICAgICAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQpO1xuICAgIGN1cnJlbnRXaWR0aCAtPSBwYWRkaW5nO1xuICAgIHRoaXMuY3VycmVudFdpZHRoID0gY3VycmVudFdpZHRoO1xuICAgIHRoaXMuY3VycmVudEhlaWdodCA9IGN1cnJlbnRIZWlnaHQ7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5vblNpemVDaGFuZ2VkKCk7XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPGlvbi1ncmlkPlxuXG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWVuZFwiPlxuICAgIDxpb24tY29sIGlkPVwibWFwLWJ1dHRvbnNcIiBzaXplLXNtPVwiM1wiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInByZXZpb3VzKClcIiBjb2xvcj1cIm1lZGl1bVwiIGZpbGw9XCJvdXRsaW5lXCIgc2hhcGU9XCJyb3VuZFwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cInBsYXktYmFja1wiIHNsb3Q9XCJpY29uLW9ubHlcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPCEtLVxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInBsYXkoKVwiIFtoaWRkZW5dPVwiYXV0b3BsYXlcIiBjb2xvcj1cIm1lZGl1bVwiIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwbGF5XCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgICAtLT5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJzdG9wKClcIiBbaGlkZGVuXT1cIiFhdXRvcGxheVwiIGNvbG9yPVwibWVkaXVtXCIgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cInN0b3BcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm5leHQoKVwiIGNvbG9yPVwibWVkaXVtXCIgZmlsbD1cIm91dGxpbmVcIiBzaGFwZT1cInJvdW5kXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwicGxheS1mb3J3YXJkXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPCEtLVxuICAgIDxpb24tY29sIGlkPVwibWFwLXRpbWVmcmFtZVwiIHNpemUtc209XCI0XCI+XG4gICAgICA8aW9uLXNlbGVjdCAoaW9uQ2hhbmdlKT1cInNob3dUaW1lZnJhbWUoKVwiIFsobmdNb2RlbCldPVwidGltZWZyYW1lTmFtZVRvU2hvd1wiIFt2YWx1ZV09XCJ0aW1lZnJhbWVOYW1lVG9TaG93XCJcbiAgICAgICAgICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIiBwbGFjZWhvbGRlcj1cIk5hbWVcIj5cbiAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBuYW1lIG9mIHBvc3NpYmxlTmFtZXNcIiBbdmFsdWVdPVwibmFtZVwiPnt7IG5hbWUgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgPC9pb24tc2VsZWN0PlxuICAgIDwvaW9uLWNvbD4gLS0+XG5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXN0YXJ0XCIgaWQ9XCJtYXAtZGF0ZVwiPlxuICAgICAgPGlvbi1zZWxlY3QgKGlvbkRpc21pc3MpPVwic2hvd1RpbWVmcmFtZSgpXCIgWyhuZ01vZGVsKV09XCJkYXRlVG9TaG93QXNTdHJpbmdcIiBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGVyaW9kXCIgdmFsdWU9XCJ7e2RhdGVUb1Nob3dBc1N0cmluZ319XCI+XG4gICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF0ZVRvU2VsZWN0IG9mIHBvc3NpYmxlRGF0ZXNcIiB2YWx1ZT1cInt7ZGF0ZVRvU2VsZWN0LnRvSVNPU3RyaW5nKCl9fVwiPlxuICAgICAgICAgIHt7IGRhdGVUb1NlbGVjdCB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW0nIH19XG4gICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgPC9pb24tY29sPlxuICAgIDxpb24tY29sPlxuICAgICAgPGlvbi10b2dnbGUgKGlvbkNoYW5nZSk9XCJjaGFuZ2VTaG93TWFya2VycygpXCIgWyhuZ01vZGVsKV09XCJzaG93TWFya2Vyc1wiIFtjaGVja2VkXT1cInNob3dNYXJrZXJzXCI+PC9pb24tdG9nZ2xlPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sPlxuICAgICAgPGRpdiBpZD1cIm1hcC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiAjcHJpbWFyeU1hcCBpZD1cIm1hcC1kaXZcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1oaWRlLXhsLWRvd25cIj5cbiAgICAgIDxpb24taW1nIGlkPVwibWFwLXJhbmdlXCIgc3JjPVwiYXNzZXRzL3Iycl9yYW5nZS5zdmdcIi8+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2wgc2l6ZS1zbT1cIjhcIj5cbiAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibWNUZXh0XCI+PC9zcGFuPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBzaXplLXNtPVwiMVwiPlxuICAgICAgPGlvbi1idXR0b24gZGlzYWJsZWQ9XCJ0cnVlXCIgZmlsbD1cImNsZWFyXCI+e3sgc3VtUmVzdWx0IH19PC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBzaXplLXNtPVwiM1wiPlxuICAgICAgPGlvbi1idXR0b24gZGlzYWJsZWQ9XCJ0cnVlXCIgZmlsbD1cImNsZWFyXCI+e3sgZGF0ZVRvU2hvdz8udG9JU09TdHJpbmcoKSB9fTwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cblxuPC9pb24tZ3JpZD5cbiJdfQ==