ezlibrary_v2 0.0.74 → 0.0.76

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.
@@ -9,18 +9,24 @@ export class AdminServiceService {
9
9
  this.http = http;
10
10
  this.glbEnv = glbEnv;
11
11
  }
12
- getMenuRights(reqObj, headers) {
13
- return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), headers)
12
+ getMenuRights(reqObj, options) {
13
+ return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), options = {
14
+ params: options,
15
+ })
14
16
  .toPromise()
15
17
  .then((response) => response);
16
18
  }
17
- saveUserMenuRights(reqObj, headers) {
18
- return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), headers)
19
+ saveUserMenuRights(reqObj, options) {
20
+ return this.http.post(this.glbEnv.baseUrl + 'admin/menuRights', JSON.stringify(reqObj), options = {
21
+ params: options,
22
+ })
19
23
  .toPromise()
20
24
  .then((response) => response);
21
25
  }
22
- load(reqObj, headers, url) {
23
- return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), headers)
26
+ load(reqObj, options, url) {
27
+ return this.http.post(this.glbEnv.baseUrl + url, JSON.stringify(reqObj), options = {
28
+ params: options,
29
+ })
24
30
  .toPromise()
25
31
  .then((response) => response);
26
32
  }
@@ -33,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
33
39
  providedIn: 'root'
34
40
  }]
35
41
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.GlobleEnvService }]; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tc2VydmljZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXpsaWIvc3JjL2xpYi9hZG1pbi1zZXJ2aWNlL2FkbWluLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUtoRSxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFlBQ1UsSUFBZ0IsRUFDakIsTUFBd0I7UUFEdkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUM3QixDQUFDO0lBR0osYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPO1FBQzVCLE9BQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7YUFDOUYsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE9BQU87UUFDaEMsT0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQzthQUNoRyxTQUFTLEVBQUU7YUFDWCxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxHQUFHO1FBQ3RCLE9BQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDO2FBQy9FLFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7bUlBeEJVLG1CQUFtQjt1SUFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgR2xvYmxlRW52U2VydmljZSB9IGZyb20gJy4uL2dsb2JsZS9nbG9ibGUtZW52LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRtaW5TZXJ2aWNlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHVibGljIGdsYkVudjogR2xvYmxlRW52U2VydmljZSxcclxuICApIHsgfVxyXG5cclxuXHJcbiAgIGdldE1lbnVSaWdodHMocmVxT2JqLCBoZWFkZXJzKSB7XHJcbiAgICByZXR1cm4gIHRoaXMuaHR0cC5wb3N0KHRoaXMuZ2xiRW52LmJhc2VVcmwgKyAnYWRtaW4vbWVudVJpZ2h0cycsIEpTT04uc3RyaW5naWZ5KHJlcU9iaiksIGhlYWRlcnMpXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHNhdmVVc2VyTWVudVJpZ2h0cyhyZXFPYmosIGhlYWRlcnMpe1xyXG4gICAgcmV0dXJuICB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgJ2FkbWluL21lbnVSaWdodHMnLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBoZWFkZXJzKVxyXG4gICAgLnRvUHJvbWlzZSgpXHJcbiAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIGxvYWQocmVxT2JqLCBoZWFkZXJzLHVybCkge1xyXG4gICAgcmV0dXJuICB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgdXJsLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBoZWFkZXJzKVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG59XHJcbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tc2VydmljZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXpsaWIvc3JjL2xpYi9hZG1pbi1zZXJ2aWNlL2FkbWluLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUtoRSxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFlBQ1UsSUFBZ0IsRUFDakIsTUFBd0I7UUFEdkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUM3QixDQUFDO0lBR0osYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFZO1FBQ2pDLE9BQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEdBQUM7WUFDOUYsTUFBTSxFQUFFLE9BQU87U0FDaEIsQ0FBQzthQUNDLFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFZO1FBQ3JDLE9BQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEdBQUM7WUFDOUYsTUFBTSxFQUFFLE9BQU87U0FDaEIsQ0FBQzthQUNELFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBWSxFQUFDLEdBQUc7UUFDM0IsT0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEdBQUM7WUFDaEYsTUFBTSxFQUFFLE9BQU87U0FDaEIsQ0FBQzthQUNDLFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7bUlBOUJVLG1CQUFtQjt1SUFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgR2xvYmxlRW52U2VydmljZSB9IGZyb20gJy4uL2dsb2JsZS9nbG9ibGUtZW52LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRtaW5TZXJ2aWNlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHVibGljIGdsYkVudjogR2xvYmxlRW52U2VydmljZSxcclxuICApIHsgfVxyXG5cclxuXHJcbiAgIGdldE1lbnVSaWdodHMocmVxT2JqLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIHJldHVybiAgdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdhZG1pbi9tZW51UmlnaHRzJywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSxvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVVzZXJNZW51UmlnaHRzKHJlcU9iaiwgb3B0aW9uczogYW55KXtcclxuICAgIHJldHVybiAgdGhpcy5odHRwLnBvc3QodGhpcy5nbGJFbnYuYmFzZVVybCArICdhZG1pbi9tZW51UmlnaHRzJywgSlNPTi5zdHJpbmdpZnkocmVxT2JqKSxvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgIC50b1Byb21pc2UoKVxyXG4gICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBsb2FkKHJlcU9iaiwgb3B0aW9uczogYW55LHVybCkge1xyXG4gICAgcmV0dXJuICB0aGlzLmh0dHAucG9zdCh0aGlzLmdsYkVudi5iYXNlVXJsICsgdXJsLCBKU09OLnN0cmluZ2lmeShyZXFPYmopLCBvcHRpb25zPXtcclxuICAgICAgcGFyYW1zOiBvcHRpb25zLFxyXG4gICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iXX0=
@@ -1,5 +1,4 @@
1
1
  import { Component, ElementRef, ViewChild } from '@angular/core';
2
- import { HttpHeaders } from '@angular/common/http';
3
2
  import { Router, ActivatedRoute } from '@angular/router';
4
3
  import { ToastrService } from 'ngx-toastr';
5
4
  import { Cookie } from 'ng2-cookies/ng2-cookies';
@@ -110,7 +109,10 @@ export class ContactSearchComponent {
110
109
  let reqObj = {};
111
110
  reqObj['formNme'] = this.route.snapshot.params['frm']; //'contactSearchForm';//;
112
111
  this.header['method'] = 'load';
113
- let options = ({ headers: new HttpHeaders(this.header) });
112
+ // let options = ({ headers: new HttpHeaders(this.header) });
113
+ let options = {
114
+ method: this.header['method']
115
+ };
114
116
  console.log(JSON.stringify(reqObj));
115
117
  this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
116
118
  if (response.status == 'SUCCESS') {
@@ -148,7 +150,10 @@ export class ContactSearchComponent {
148
150
  reqObj['likeStr'] = searchTerm;
149
151
  reqObj['typ'] = 'All';
150
152
  this.header['method'] = 'loadBuyer';
151
- let options = ({ headers: new HttpHeaders(this.header) });
153
+ // let options = ({ headers: new HttpHeaders(this.header) });
154
+ let options = {
155
+ method: this.header["method"]
156
+ };
152
157
  this.ss.load(reqObj, options, 'marketing/search').then((response) => {
153
158
  if (response.status == 'SUCCESS') {
154
159
  let result = response.result;
@@ -173,7 +178,10 @@ export class ContactSearchComponent {
173
178
  reqObj['likeStr'] = searchTerm;
174
179
  reqObj['typ'] = 'employee';
175
180
  this.header['method'] = 'loadBuyer';
176
- let options = ({ headers: new HttpHeaders(this.header) });
181
+ // let options = ({ headers: new HttpHeaders(this.header) });
182
+ let options = {
183
+ method: this.header["method"]
184
+ };
177
185
  this.ss.load(reqObj, options, 'marketing/search').then((response) => {
178
186
  if (response.status == 'SUCCESS') {
179
187
  let result = response.result;
@@ -200,7 +208,10 @@ export class ContactSearchComponent {
200
208
  reqObj['formNme'] = this.route.snapshot.params['frm'];
201
209
  reqObj['countryIdn'] = counrytId;
202
210
  this.header['method'] = 'getCityBasedOnCountry';
203
- let options = ({ headers: new HttpHeaders(this.header) });
211
+ // let options = ({ headers: new HttpHeaders(this.header) });
212
+ let options = {
213
+ method: this.header["method"]
214
+ };
204
215
  this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
205
216
  if (response.status == 'SUCCESS') {
206
217
  this.cityList = [];
@@ -313,7 +324,10 @@ export class ContactSearchComponent {
313
324
  }
314
325
  this.header['method'] = 'searchContact';
315
326
  console.log(JSON.stringify(reqObj));
316
- let options = ({ headers: new HttpHeaders(this.header) });
327
+ // let options = ({ headers: new HttpHeaders(this.header) });
328
+ let options = {
329
+ method: this.header["method"]
330
+ };
317
331
  this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
318
332
  if (response.status == 'SUCCESS') {
319
333
  console.log(response);
@@ -364,7 +378,10 @@ export class ContactSearchComponent {
364
378
  let reqObj = {};
365
379
  reqObj['formNme'] = this.route.snapshot.params['frm'];
366
380
  this.header['method'] = 'loadNotification';
367
- let options = ({ headers: new HttpHeaders(this.header) });
381
+ // let options = ({ headers: new HttpHeaders(this.header) });
382
+ let options = {
383
+ method: this.header["method"]
384
+ };
368
385
  this.cs.load(reqObj, options, 'contact/notification').then((response) => {
369
386
  if (response.status == 'SUCCESS') {
370
387
  let result = response.result || {};
@@ -407,7 +424,10 @@ export class ContactSearchComponent {
407
424
  reqObj['action'] = 'add';
408
425
  console.log(JSON.stringify(reqObj));
409
426
  this.header['method'] = 'saveNotification';
410
- let options = ({ headers: new HttpHeaders(this.header) });
427
+ // let options = ({ headers: new HttpHeaders(this.header) });
428
+ let options = {
429
+ method: this.header["method"]
430
+ };
411
431
  this.cs.load(reqObj, options, 'contact/notification').then((response) => {
412
432
  if (response.status == 'SUCCESS') {
413
433
  let result = response.result || {};
@@ -464,7 +484,10 @@ export class ContactSearchComponent {
464
484
  reqObj['emp_idn'] = this.saleExcute;
465
485
  console.log(JSON.stringify(reqObj));
466
486
  this.header['method'] = 'assignSaleExecutive';
467
- let options = ({ headers: new HttpHeaders(this.header) });
487
+ // let options = ({ headers: new HttpHeaders(this.header) });
488
+ let options = {
489
+ method: this.header["method"]
490
+ };
468
491
  this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
469
492
  if (response.status == 'SUCCESS') {
470
493
  this.saleExcute = "";
@@ -549,7 +572,10 @@ export class ContactSearchComponent {
549
572
  reqObj['mailBody'] = htmlcontent;
550
573
  console.log(JSON.stringify(reqObj));
551
574
  this.header['method'] = 'sendBulkMail';
552
- let options = ({ headers: new HttpHeaders(this.header) });
575
+ // let options = ({ headers: new HttpHeaders(this.header) });
576
+ let options = {
577
+ method: this.header["method"]
578
+ };
553
579
  this.cs.load(reqObj, options, 'contact/loadContact').then((response) => {
554
580
  if (response.status == 'SUCCESS') {
555
581
  this.myFormmm = this.fb.group({
@@ -676,4 +702,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
676
702
  type: ViewChild,
677
703
  args: ['notificlosebtn']
678
704
  }] } });
679
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXpsaWIvc3JjL2xpYi9jb250YWN0LXNlYXJjaC9jb250YWN0LXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2NvbnRhY3Qtc2VhcmNoL2NvbnRhY3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLFNBQVMsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWhGLDJKQUEySjtBQUMzSixxRUFBcUU7QUFDckUsT0FBTyxFQUFhLFdBQVcsRUFBQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVNuRSxNQUFNLE9BQU8sc0JBQXNCO0lBS2pDLFlBQ1MsTUFBYyxFQUNiLEtBQXFCLEVBQ3JCLE1BQXFCLEVBQ3JCLEVBQXlCLEVBQ3pCLEVBQXVCLEVBQ3ZCLGNBQWlDLEVBQ2pDLEtBQTJCLEVBQzNCLEVBQWU7UUFQaEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBdUI7UUFDekIsT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFDdkIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFRcEIsV0FBTSxHQUFHO1lBQ2QsUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsT0FBTztZQUNmLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsU0FBUyxFQUFFLElBQUk7WUFDZix5QkFBeUIsRUFBRSxHQUFHO1lBQzlCLGVBQWUsRUFBRSxPQUFPO1NBRXpCLENBQUM7UUFFSyxlQUFVLEdBQUc7WUFDbEIsUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsU0FBUyxFQUFFLElBQUk7WUFDZix5QkFBeUIsRUFBRSxFQUFFO1lBQzdCLGVBQWUsRUFBRSxFQUFFO1lBQ25CLG9CQUFvQixFQUFFO2dCQUNwQjtvQkFDRSxNQUFNO29CQUNOLFFBQVE7b0JBQ1IsV0FBVztvQkFDWCxlQUFlO29CQUNmLFdBQVc7b0JBQ1gsYUFBYTtvQkFDYixhQUFhO29CQUNiLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxhQUFhO29CQUNiLFFBQVE7b0JBQ1IsU0FBUztvQkFDVCxxQkFBcUI7b0JBQ3JCLG1CQUFtQjtvQkFDbkIsU0FBUztvQkFDVCxVQUFVO2lCQUNYO2dCQUNEO29CQUNFLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCxpQkFBaUI7b0JBQ2pCLGVBQWU7b0JBQ2YsYUFBYTtvQkFDYixhQUFhO29CQUNiLHNCQUFzQjtvQkFDdEIsY0FBYztvQkFDZCxrQkFBa0I7aUJBQ25CO2FBQ0Y7U0FDRixDQUFDO1FBS0EsUUFBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFVakIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2QixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUdiLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWQsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVWLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQVdkLHdCQUFtQixHQUFDLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQUMsRUFBRSxDQUFDO1FBQ2QsZUFBVSxHQUFDLEVBQUUsQ0FBQztRQW1FZCxpQkFBWSxHQUFDLEVBQUUsQ0FBQztRQTRjaEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBeG5CbEIsQ0FBQztJQXdHTCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBQyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtRQUNoRixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQzFFLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDMUMsd0NBQXdDO2dCQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2pFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDZixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUUsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFFLEVBQUUsQ0FBQTtnQkFDN0MsSUFBSSxDQUFDLFlBQVksR0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksSUFBRSxFQUFFLENBQUM7YUFDNUQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsYUFBYSxDQUFDLEdBQUc7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUlELFNBQVMsQ0FBQyxVQUFVO1FBRWxCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDL0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsQ0FBQztRQUNwQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3ZFLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDSixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELGdCQUFnQixDQUFDLFVBQVU7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdkUsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2xELEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDZixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLFNBQVM7UUFDZixJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLEVBQUU7WUFBRSxPQUFNO1FBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLHVCQUF1QixDQUFDO1FBQ2hELElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDMUUsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQzthQUNuQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU07UUFFdEIsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNKLDZDQUE2QztJQUM5QyxDQUFDO0lBRUQsYUFBYTtRQUNYLFFBQVEsQ0FBQTtRQUNSLHNCQUFzQjtRQUN0QixpQ0FBaUM7UUFDakMsOERBQThEO1FBQzlELGdFQUFnRTtRQUNoRSx5QkFBeUI7UUFDekIsMERBQTBEO1FBQzFELDJDQUEyQztRQUMzQyw0QkFBNEI7UUFFNUIsK0JBQStCO1FBQy9CLDhCQUE4QjtRQUM5QiwrQkFBK0I7UUFDL0Isa0JBQWtCO1FBQ2xCLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0IscUJBQXFCO1FBRXJCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFM0IsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRTtZQUM5RSxZQUFZLElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQztZQUNsQyxhQUFhLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUNsQyxPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNyQixPQUFPLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUM1QixTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7WUFDakMsV0FBVyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7U0FDMUI7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFO1lBQ3ZGLFlBQVksSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO1lBQzlCLGFBQWEsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQzdCLE9BQU8sSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQ3ZCLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFFLEdBQUcsQ0FBQztZQUNuQyxXQUFXLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztTQUMxQjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLEVBQUU7WUFDckUsWUFBWSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDOUIsYUFBYSxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDakMsT0FBTyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDckIsT0FBTyxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFDM0IsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQzlCLFdBQVcsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVMsRUFBRTtZQUNyRSxZQUFZLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUM5QixhQUFhLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUNqQyxPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNyQixPQUFPLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUMzQixTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDOUIsV0FBVyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7U0FDMUI7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxFQUFFO1lBQ3JFLFlBQVksSUFBSSxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQ3BDLGFBQWEsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDO1lBQ25DLE9BQU8sSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDO1lBQzdCLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUM5QixXQUFXLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztTQUMxQjtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7WUFDOUUsWUFBWSxJQUFJLGFBQWEsR0FBRyxHQUFHLENBQUM7WUFDcEMsYUFBYSxJQUFJLGNBQWMsR0FBRyxHQUFHLENBQUM7WUFDdEMsT0FBTyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDckIsT0FBTyxJQUFJLGNBQWMsR0FBRyxHQUFHLENBQUM7WUFDaEMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1lBQ2pDLFdBQVcsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQzFCO1FBSUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLFVBQVU7UUFDN0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxRQUFRO1FBQzdELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsTUFBTTtRQUMvQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLFFBQVE7UUFDakQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7UUFDaEYsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxNQUFNO1FBQ3ZELElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDdkYsSUFBSSxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMzRCxJQUFJLGNBQWMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN0RCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNqRDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXBDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDMUUsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFDLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBQyxFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFO29CQUN6RCxJQUFJLFNBQVMsR0FBRyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQzFELENBQUMsQ0FBQyxDQUFDO2FBRUo7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQixRQUFRLENBQUE7UUFDUixJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksU0FBUyxFQUFFO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQztJQUNELFdBQVcsQ0FBQyxHQUFHO1FBRVgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEMsUUFBUSxHQUFHLENBQUMsVUFBVSxFQUFFO1lBRXRCLEtBQUssaUJBQWlCLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLE1BQU07YUFDUDtZQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDOUIsTUFBTTthQUNQO1NBQ0Y7SUFHTCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUM7WUFDM0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO1lBQzNDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQzNFLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7b0JBQ2hDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUUsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixJQUFFLEVBQUUsQ0FBQztvQkFDMUQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3JDO1lBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUdIO2FBQUk7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBRTdDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFO1lBQy9CLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ3pDLElBQUksU0FBUyxHQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUEsRUFBRTtnQkFDaEMsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBRSxFQUFFLENBQUM7Z0JBQ2xDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUE7WUFDRixRQUFRLENBQUE7WUFDUixJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUMsR0FBRyxHQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBQyxHQUFHLEdBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFDLEtBQUssQ0FBQztZQUNqRixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUUsVUFBVSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUU7WUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztZQUMzQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUMzRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO29CQUNoQyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFFLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUMsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQztpQkFDekQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNyQztZQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFJO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztTQUV4RDtJQUVELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFDO1lBQzVCLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDL0M7YUFBSTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FFN0M7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFDO1lBQzdCLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDNUM7YUFBSTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FFN0M7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksVUFBVSxHQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUEsRUFBRTtZQUNoQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFFLEVBQUUsQ0FBQztZQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBQyxJQUFJLENBQUMsVUFBVSxJQUFFLEVBQUUsQ0FBQztRQUNwQyxJQUFHLElBQUksQ0FBQyxVQUFVLElBQUUsRUFBRSxFQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFDLFVBQVUsQ0FBQztZQUNoQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO1lBQzlDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQzFFLElBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUMsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDMUI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNyQztZQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFJO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUVwRDtJQUVELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDdkMsUUFBUSxDQUFBO1FBQ0osSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksT0FBTyxHQUFDLEVBQUUsQ0FBQztRQUNmLElBQUksV0FBVyxHQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBRSxFQUFFLENBQUM7UUFDN0MsSUFBSSxPQUFPLEdBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFFLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFVBQVUsR0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUUsRUFBRSxDQUFDO1FBQzFDLElBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUUsQ0FBQyxFQUFDO1lBQzVCLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDaEIsT0FBTyxHQUFDLGlDQUFpQyxDQUFDO1NBRTNDO1FBQ0QsSUFBRyxPQUFPLElBQUUsRUFBRSxFQUFDO1lBQ2IsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNoQixPQUFPLEdBQUMsd0JBQXdCLENBQUM7U0FFbEM7UUFDRCxJQUFHLFdBQVcsSUFBRSxFQUFFLEVBQUM7WUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNoQixPQUFPLEdBQUMsMEJBQTBCLENBQUM7U0FFcEM7UUFFRCxJQUFHLFVBQVUsSUFBRSxFQUFFLEVBQUM7WUFDaEIsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNoQixPQUFPLEdBQUMsNEJBQTRCLENBQUM7U0FFdEM7UUFFRCxJQUFHLE9BQU8sRUFBQztZQUNYLElBQUksS0FBSyxHQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBRyxFQUFFLENBQUM7WUFDL0IsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLEVBQUUsR0FBQyxFQUFFLENBQUM7WUFDVixJQUFJLEdBQUcsR0FBQyxFQUFFLENBQUM7WUFFWCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRzNCLElBQUcsS0FBSyxJQUFFLEVBQUUsRUFBQztnQkFDZCxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxjQUFjLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RELEVBQUUsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBRyxNQUFNLElBQUUsRUFBRSxFQUFDO2dCQUNmLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLGNBQWMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDckQsR0FBRyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDaEM7WUFDRCxJQUFJLFlBQVksR0FBQyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFBLEVBQUU7Z0JBQ2hDLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUUsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLE9BQU8sR0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUM1QixJQUFJLE9BQU8sR0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUM1QixJQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFDO29CQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDO3dCQUNoQixRQUFRLEVBQUMsU0FBUzt3QkFDbEIsU0FBUyxFQUFDLE9BQU87d0JBQ2pCLFNBQVMsRUFBQyxPQUFPO3FCQUNsQixDQUFDLENBQUE7aUJBQ0Q7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUNGLFFBQVEsQ0FBQTtZQUVSLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsaUJBQWlCLENBQUM7WUFDdEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFDLFVBQVUsQ0FBQztZQUNoQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUMsT0FBTyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBQyxZQUFZLENBQUM7WUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFDLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUMsR0FBRyxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBQyxXQUFXLENBQUM7WUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDdkMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDMUUsSUFBRyxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzt3QkFDNUIsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7d0JBQ3JDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO3dCQUNsQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ3hDLEVBQUUsRUFBRSxFQUFFO3dCQUNOLEdBQUcsRUFBQyxFQUFFO3FCQUNSLENBQUMsQ0FBQztvQkFDSixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUMxQjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3JDO1lBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQUk7WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO0lBRUQsQ0FBQztJQUdELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFPO1FBQ2YsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUNELFNBQVMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBLEVBQUU7WUFDekIsUUFBUSxDQUFBO1lBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFFTixDQUFDO0lBS0QsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPO1FBQ3RCLFFBQVEsQ0FBQTtRQUNSLElBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUMsT0FBTyxDQUFTLENBQUMsT0FBTyxJQUFJLEtBQUssRUFBRTtZQUNwRSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBLE9BQU87WUFDNUQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNwRSxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzFDLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDbkM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBLE9BQU87WUFDNUQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0I7UUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUU1QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFFNUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUM5QixjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQy9CLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDNUIsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDckMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsRUFBRSxFQUFFO1lBQ04sR0FBRyxFQUFDLEVBQUU7U0FDVCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFDLEVBQUUsQ0FBQztRQUNuQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsRUFBRSxFQUFDLENBQUMsRUFBRSxFQUFDO1lBQ25CLElBQUcsQ0FBQyxHQUFDLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxDQUFDOztnQkFFNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBQyxFQUFFLENBQUM7UUFDbkIsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUUsRUFBQztZQUNuQixJQUFHLENBQUMsR0FBQyxFQUFFO2dCQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsQ0FBQzs7Z0JBRTVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUVDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEMsT0FBTyxFQUFFLEtBQUs7WUFDZCxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM5QixHQUFHLEVBQUMsSUFBSTtZQUNSLEVBQUUsRUFBQyxJQUFJO1lBQ1AsRUFBRSxFQUFDLElBQUk7WUFDUCxPQUFPLEVBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNqQyxNQUFNLEVBQUMsR0FBRztTQUNULENBQUMsQ0FBQztJQUNQLENBQUM7O3NJQS9zQlUsc0JBQXNCOzBIQUF0QixzQkFBc0IsbWNDckJuQyw2MG5CQTBZQTsyRkRyWGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjt5VEFvQk4sU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDRSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0ksY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBQaXBlLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzICB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbmltcG9ydCB7IE5neFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSBcIm5neC1zcGlubmVyXCI7XHJcbmltcG9ydCB7IENvbnRhY3RTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2NvbnRhY3Qtc2VydmljZS9jb250YWN0LXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b2NrU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9jay1zZXJ2aWNlL3N0b2NrLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuLy9pbXBvcnQgeyBUb29sYmFyU2VydmljZSwgTGlua1NlcnZpY2UsIEltYWdlU2VydmljZSwgSHRtbEVkaXRvclNlcnZpY2UsIFRhYmxlU2VydmljZSwgUXVpY2tUb29sYmFyU2VydmljZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLXJpY2h0ZXh0ZWRpdG9yJztcclxuLy9pbXBvcnQgKiBhcyBDbGFzc2ljRWRpdG9yIGZyb20gJ0Bja2VkaXRvci9ja2VkaXRvcjUtYnVpbGQtY2xhc3NpYyc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29udGFjdC1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250YWN0LXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29udGFjdC1zZWFyY2guY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250YWN0U2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjczogQ29udGFjdFNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzczogU3RvY2tTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgc3Bpbm5lclNlcnZpY2U6IE5neFNwaW5uZXJTZXJ2aWNlICxcclxuICAgIHByaXZhdGUgY21uY3M6IENvbW1hblNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcclxuICApIHsgfVxyXG5cclxuICBAVmlld0NoaWxkKCdzdWJtaXRCdG4nKSBzdWJtaXRidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnc2xleGNsb3NlYnRuJykgc2xleGNsb3NlYnRuOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ21haWxjbG9zZWJ0bicpIG1haWxjbG9zZWJ0bjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdub3RpZmljbG9zZWJ0bicpIG5vdGlmaWNsb3NlYnRuOiBFbGVtZW50UmVmO1xyXG5cclxucHVibGljIGNvbmZpZyA9IHtcclxuICBlZGl0YWJsZTogdHJ1ZSxcclxuICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gIGhlaWdodDogJzE1cmVtJyxcclxuICBtaW5IZWlnaHQ6ICc1cmVtJyxcclxuICBwbGFjZWhvbGRlcjogJ0VudGVyIHRleHQgaGVyZS4uLicsXHJcbiAgdHJhbnNsYXRlOiAnbm8nLFxyXG4gIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICdwJyxcclxuICBkZWZhdWx0Rm9udE5hbWU6ICdBcmlhbCdcclxuICBcclxufTtcclxuXHJcbnB1YmxpYyBub3RpY29uZmlnID0ge1xyXG4gIGVkaXRhYmxlOiB0cnVlLFxyXG4gIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgaGVpZ2h0OiAnNXJlbScsXHJcbiAgbWluSGVpZ2h0OiAnM3JlbScsXHJcbiAgcGxhY2Vob2xkZXI6ICdFbnRlciB0ZXh0IGhlcmUuLi4nLFxyXG4gIHRyYW5zbGF0ZTogJ25vJyxcclxuICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICBkZWZhdWx0Rm9udE5hbWU6ICcnLFxyXG4gIHRvb2xiYXJIaWRkZW5CdXR0b25zOiBbXHJcbiAgICBbXHJcbiAgICAgICdib2xkJyxcclxuICAgICAgJ2l0YWxpYycsXHJcbiAgICAgICd1bmRlcmxpbmUnLFxyXG4gICAgICAnc3RyaWtlVGhyb3VnaCcsXHJcbiAgICAgICdzdWJzY3JpcHQnLFxyXG4gICAgICAnc3VwZXJzY3JpcHQnLFxyXG4gICAgICAnanVzdGlmeUxlZnQnLFxyXG4gICAgICAnanVzdGlmeUNlbnRlcicsXHJcbiAgICAgICdqdXN0aWZ5UmlnaHQnLFxyXG4gICAgICAnanVzdGlmeUZ1bGwnLFxyXG4gICAgICAnaW5kZW50JyxcclxuICAgICAgJ291dGRlbnQnLFxyXG4gICAgICAnaW5zZXJ0VW5vcmRlcmVkTGlzdCcsXHJcbiAgICAgICdpbnNlcnRPcmRlcmVkTGlzdCcsXHJcbiAgICAgICdoZWFkaW5nJyxcclxuICAgICAgJ2ZvbnROYW1lJ1xyXG4gICAgXSxcclxuICAgIFtcclxuICAgICAgJ2ZvbnRTaXplJyxcclxuICAgICAgJ3RleHRDb2xvcicsXHJcbiAgICAgICdiYWNrZ3JvdW5kQ29sb3InLFxyXG4gICAgICAnY3VzdG9tQ2xhc3NlcycsXHJcbiAgICAgICdpbnNlcnRJbWFnZScsXHJcbiAgICAgICdpbnNlcnRWaWRlbycsXHJcbiAgICAgICdpbnNlcnRIb3Jpem9udGFsUnVsZScsXHJcbiAgICAgICdyZW1vdmVGb3JtYXQnLFxyXG4gICAgICAndG9nZ2xlRWRpdG9yTW9kZSdcclxuICAgIF1cclxuICBdXHJcbn07XHJcblxyXG5cclxuICBjVXJsO1xyXG4gIGhlYWRlcjtcclxuICBjRHQgPSBuZXcgRGF0ZSgpO1xyXG4gIGVkaXRvckNvbmZpZztcclxuXHJcbiAgY29udGFjdFR5cGVMaXN0O1xyXG4gIGN1cnJlbmN5TGlzdDtcclxuICB0ZXJtc0xpc3Q7XHJcbiAgcGFnZURlZmluYXRpb247XHJcbiAgaHRtbGNvbnRlbnQ7XHJcbiAgc2VhcmNoRjtcclxuXHJcbiAgZW1wbG95ZWVMaXN0ID0gW107XHJcbiAgY291bnRyeUxpc3QgPSBbXTtcclxuICBidXllckxpc3QgPSBbXTtcclxuICBzYWxlRXhlY3V0aXZlTGlzdCA9IFtdO1xyXG4gIGNpdHlMaXN0ID0gW107XHJcbiAgY29udGFjdFR5cGUgPSAnJztcclxuICBhY3Rpb25zID0gW107XHJcbiAgYnV5ZXJTdWdnO1xyXG4gIGVtcElkO1xyXG4gIFRlcm1zID0gJyc7XHJcbiAgY3VycmVuY3kgPSAnJztcclxuICB1c2VyTmFtZTtcclxuICBDaXR5ID0gJyc7XHJcbiAgdHJuc19idXR0b25zO1xyXG4gIGRhdGFIZWFkZXIgPSBbXTtcclxuICBkYXRhTGlzdCA9IFtdO1xyXG4gIGRhdGFIZWFkZXJQcmludDtcclxuICBidXR0b25zO1xyXG4gIHRhYnM7XHJcbiAgc3RhdHVzO1xyXG5cclxuICBNYWlsTXNnO1xyXG4gIHNhbGVFeGN1dGU7XHJcbiAgbmFtZUlkbkxpc3Q7XHJcbiAgbXlGb3JtbW06IEZvcm1Hcm91cDtcclxuICBteU5vdGlmaWNhdGlvbjogRm9ybUdyb3VwO1xyXG4gIG5vdGlmaWNhdGlvbk1kbExpc3Q9W107XHJcbiAgYnV5ZXI7XHJcbiAgbW10aW1lTGlzdD1bXTtcclxuICBoaHRpbWVMaXN0PVtdO1xyXG4gIGxvYWRQcm9jZXNzKCkge1xyXG4gICAgdGhpcy5zdGF0dXM9XCIwXCI7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybSddOyAvLydjb250YWN0U2VhcmNoRm9ybSc7Ly87XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnbG9hZCc7XHJcbiAgICBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdjb250YWN0L2xvYWRDb250YWN0JykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmNvbnRhY3RUeXBlTGlzdCA9IHJlc3BvbnNlLmNvbnRhY3RUeXBlTGlzdDtcclxuICAgICAgICB0aGlzLmN1cnJlbmN5TGlzdCA9IHJlc3BvbnNlLmN1cnJlbmN5TGlzdDtcclxuICAgICAgICB0aGlzLnRlcm1zTGlzdCA9IHJlc3BvbnNlLnRlcm1zTGlzdDtcclxuICAgICAgICB0aGlzLmNvdW50cnlMaXN0ID0gcmVzcG9uc2UuY291bnRyeUxpc3Q7XHJcbiAgICAgIC8vICB0aGlzLmJ1eWVyTGlzdCA9IHJlc3BvbnNlLmJ1eWVyTGlzdDtcclxuICAgICAgICB0aGlzLnNhbGVFeGVjdXRpdmVMaXN0ID0gcmVzcG9uc2Uuc2FsZUV4ZWN1dGl2ZUxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IHJlc3BvbnNlLnBhZ2VEZWZpbmF0aW9uLmFjdGlvbnx8W107XHJcbiAgICAgICAgdGhpcy50YWJzICA9IHJlc3BvbnNlLnBhZ2VEZWZpbmF0aW9uLnRhYnN8fFtdXHJcbiAgICAgICAgdGhpcy50cm5zX2J1dHRvbnM9cmVzcG9uc2UucGFnZURlZmluYXRpb24udHJuc19idXR0b25zfHxbXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYWRkTmV3Q29udGFjdChkdGwpe1xyXG4gICAgY29uc29sZS5sb2coZHRsKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtkdGwubG92X3FyeV0pO1xyXG4gIH1cclxuXHJcbiBcclxuXHJcbiAgbG9hZEJ1eWVyKHNlYXJjaFRlcm0pIHtcclxuICAgXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnbGlrZVN0ciddID0gc2VhcmNoVGVybTtcclxuICAgIHJlcU9ialsndHlwJ10gPSAnQWxsJztcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdsb2FkQnV5ZXInO1xyXG4gICAgbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgdGhpcy5zcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ21hcmtldGluZy9zZWFyY2gnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICB0aGlzLmJ1eWVyTGlzdCA9IHJlc3VsdC5idXllckxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgRW1wbG95ZWVMaXN0PVtdO1xyXG4gIGxvYWRTYWxlRXhjdXRpdmUoc2VhcmNoVGVybSkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2xpa2VTdHInXSA9IHNlYXJjaFRlcm07XHJcbiAgICByZXFPYmpbJ3R5cCddID0gJ2VtcGxveWVlJztcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdsb2FkQnV5ZXInO1xyXG4gICAgbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgdGhpcy5zcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ21hcmtldGluZy9zZWFyY2gnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICB0aGlzLkVtcGxveWVlTGlzdCA9IHJlc3VsdC5idXllckxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2l0eShjb3Vucnl0SWQpIHtcclxuICAgIGlmIChjb3Vucnl0SWQgPT0gdW5kZWZpbmVkIHx8IGNvdW5yeXRJZCA9PSAnJykgcmV0dXJuXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm0nXTsgXHJcbiAgICByZXFPYmpbJ2NvdW50cnlJZG4nXSA9IGNvdW5yeXRJZDtcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdnZXRDaXR5QmFzZWRPbkNvdW50cnknO1xyXG4gICAgbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3QvbG9hZENvbnRhY3QnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5jaXR5TGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuQ2l0eSA9ICcnO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmNpdHlMaXN0ID0gcmVzcG9uc2UuY2l0eUxpc3Q7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdChmb3JtVmFsLCBzdWJCdG4pIHtcclxuICAgIFxyXG4gICAgdmFyIHQgPSBPYmplY3Qua2V5cyhmb3JtVmFsLmZvcm0uY29udHJvbHMpLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybVZhbC5mb3JtLmdldChmaWVsZCk7XHJcbiAgICB9KTtcclxuICAgLy8gdGhpcy5zZWFyY2hDb250YWN0KGZvcm1WYWwudmFsdWUsIHN1YkJ0bik7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hDb250YWN0KCkge1xyXG4gICAgZGVidWdnZXJcclxuICAgIC8vY29uc29sZS5sb2coZnJtRmxkKTtcclxuICAgIC8vIFwiZm9ybU5tZVwiOlwiY29udGFjdFNlYXJjaEZvcm1cIixcclxuICAgIC8vIFwidGFibGVOYW1lVmFyXCI6XCJubWVfbSNubWVfbSNubWVfbSNidXllcl90ZXJtcyNidXllcl90ZXJtc1wiLFxyXG4gICAgLy8gXCJ0YWJsZUZpZWxkVmFyXCI6XCJlbXBfaWRuI25tZV9pZG4jdHlwI2N1cnJlbmN5X2lkbiN0ZXJtc19pZG5cIixcclxuICAgIC8vIFwidHlwZVZhclwiOlwibiNuI24jbiNuXCIsXHJcbiAgICAvLyBcImF0dHJWYXJcIjpcImVtcF9pZG4jbm1lX2lkbiN0eXAjY3VycmVuY3lfaWRuI3Rlcm1zX2lkblwiLFxyXG4gICAgLy8gXCJ2YWx1ZXNWYXJcIjpcIjI3NTg4IzI4MTczI2J1eWVyIzIwNiMyNDZcIixcclxuICAgIC8vIFwiZGF0YVR5cGVWYXJcIjpcIm4jbiNjI24jblwiXHJcblxyXG4gICAgLy8qKioqKmZvciB1c2VybmFtZSoqKioqKioqIC8vL1xyXG4gICAgLy8gXCJ0YWJsZU5hbWVWYXJcIjpcImFwcGxfdXNlclwiLFxyXG4gICAgLy8gIFwidGFibGVGaWVsZFZhclwiOlwidXNlcm5hbWVcIixcclxuICAgIC8vICBcInR5cGVWYXJcIjpcIm5cIixcclxuICAgIC8vICBcImF0dHJWYXJcIjpcInVzZXJuYW1lXCIsXHJcbiAgICAvLyAgXCJ2YWx1ZXNWYXJcIjpcIm5pbGFtd2ViXCIsXHJcbiAgICAvLyAgXCJkYXRhVHlwZVZhclwiOlwiY1wiXHJcblxyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcblxyXG4gICAgbGV0IHRhYmxlTmFtZVZhciA9ICcnO1xyXG4gICAgbGV0IHRhYmxlRmllbGRWYXIgPSAnJztcclxuICAgIGxldCB0eXBlVmFyID0gJyc7XHJcbiAgICBsZXQgYXR0clZhciA9ICcnO1xyXG4gICAgbGV0IHZhbHVlc1ZhciA9ICcnO1xyXG4gICAgbGV0IGRhdGFUeXBlVmFyID0gJyc7XHJcbiAgICBpZiAodGhpcy51c2VyTmFtZSAhPSBudWxsICYmIHRoaXMudXNlck5hbWUgIT0gXCJcIiAmJiB0aGlzLnVzZXJOYW1lICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0YWJsZU5hbWVWYXIgKz0gJ2FwcGxfdXNlcicgKyAnIyc7XHJcbiAgICAgIHRhYmxlRmllbGRWYXIgKz0gJ3VzZXJuYW1lJyArICcjJztcclxuICAgICAgdHlwZVZhciArPSAnbicgKyAnIyc7XHJcbiAgICAgIGF0dHJWYXIgKz0gJ3VzZXJuYW1lJyArICcjJztcclxuICAgICAgdmFsdWVzVmFyICs9IHRoaXMudXNlck5hbWUgKyAnIyc7XHJcbiAgICAgIGRhdGFUeXBlVmFyICs9ICdjJyArICcjJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb250YWN0VHlwZSAhPSBudWxsICYmIHRoaXMuY29udGFjdFR5cGUgIT0gXCJcIiAmJiB0aGlzLmNvbnRhY3RUeXBlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0YWJsZU5hbWVWYXIgKz0gJ25tZV9tJyArICcjJztcclxuICAgICAgdGFibGVGaWVsZFZhciArPSAndHlwJyArICcjJztcclxuICAgICAgdHlwZVZhciArPSAnbicgKyAnIyc7XHJcbiAgICAgIGF0dHJWYXIgKz0gJ3R5cCcgKyAnIyc7XHJcbiAgICAgIHZhbHVlc1ZhciArPSB0aGlzLmNvbnRhY3RUeXBlKyAnIyc7XHJcbiAgICAgIGRhdGFUeXBlVmFyICs9ICdjJyArICcjJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5idXllciAhPSBudWxsICYmIHRoaXMuYnV5ZXIgIT0gXCJcIiAmJiB0aGlzLmJ1eWVyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0YWJsZU5hbWVWYXIgKz0gJ25tZV9tJyArICcjJztcclxuICAgICAgdGFibGVGaWVsZFZhciArPSAnbm1lX2lkbicgKyAnIyc7XHJcbiAgICAgIHR5cGVWYXIgKz0gJ24nICsgJyMnO1xyXG4gICAgICBhdHRyVmFyICs9ICdubWVfaWRuJyArICcjJztcclxuICAgICAgdmFsdWVzVmFyICs9IHRoaXMuYnV5ZXIgKyAnIyc7XHJcbiAgICAgIGRhdGFUeXBlVmFyICs9ICduJyArICcjJztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVtcElkICE9IG51bGwgJiYgdGhpcy5lbXBJZCAhPSBcIlwiICYmIHRoaXMuZW1wSWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRhYmxlTmFtZVZhciArPSAnbm1lX20nICsgJyMnO1xyXG4gICAgICB0YWJsZUZpZWxkVmFyICs9ICdlbXBfaWRuJyArICcjJztcclxuICAgICAgdHlwZVZhciArPSAnbicgKyAnIyc7XHJcbiAgICAgIGF0dHJWYXIgKz0gJ2VtcF9pZG4nICsgJyMnO1xyXG4gICAgICB2YWx1ZXNWYXIgKz0gdGhpcy5lbXBJZCArICcjJztcclxuICAgICAgZGF0YVR5cGVWYXIgKz0gJ24nICsgJyMnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlRlcm1zICE9IG51bGwgJiYgdGhpcy5UZXJtcyAhPSBcIlwiICYmIHRoaXMuVGVybXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRhYmxlTmFtZVZhciArPSAnYnV5ZXJfdGVybXMnICsgJyMnO1xyXG4gICAgICB0YWJsZUZpZWxkVmFyICs9ICd0ZXJtc19pZG4nICsgJyMnO1xyXG4gICAgICB0eXBlVmFyICs9ICduJyArICcjJztcclxuICAgICAgYXR0clZhciArPSAndGVybXNfaWRuJyArICcjJztcclxuICAgICAgdmFsdWVzVmFyICs9IHRoaXMuVGVybXMgKyAnIyc7XHJcbiAgICAgIGRhdGFUeXBlVmFyICs9ICduJyArICcjJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW5jeSAhPSBudWxsICYmIHRoaXMuY3VycmVuY3kgIT0gXCJcIiAmJiB0aGlzLmN1cnJlbmN5ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0YWJsZU5hbWVWYXIgKz0gJ2J1eWVyX3Rlcm1zJyArICcjJztcclxuICAgICAgdGFibGVGaWVsZFZhciArPSAnY3VycmVuY3lfaWRuJyArICcjJztcclxuICAgICAgdHlwZVZhciArPSAnbicgKyAnIyc7XHJcbiAgICAgIGF0dHJWYXIgKz0gJ2N1cnJlbmN5X2lkbicgKyAnIyc7XHJcbiAgICAgIHZhbHVlc1ZhciArPSB0aGlzLmN1cnJlbmN5ICsgJyMnO1xyXG4gICAgICBkYXRhVHlwZVZhciArPSAnbicgKyAnIyc7XHJcbiAgICB9XHJcblxyXG4gICBcclxuXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm0nXTsgXHJcbiAgICByZXFPYmpbJ3RhYmxlTmFtZVZhciddID0gdGFibGVOYW1lVmFyLnNsaWNlKDAsIC0xKTsvLydubWVfbSc7XHJcbiAgICByZXFPYmpbJ3RhYmxlRmllbGRWYXInXSA9IHRhYmxlRmllbGRWYXIuc2xpY2UoMCwgLTEpOy8vJ3R5cCc7XHJcbiAgICByZXFPYmpbJ3R5cGVWYXInXSA9IHR5cGVWYXIuc2xpY2UoMCwgLTEpOy8vJ24nO1xyXG4gICAgcmVxT2JqWydhdHRyVmFyJ10gPSBhdHRyVmFyLnNsaWNlKDAsIC0xKTsvLyd0eXAnO1xyXG4gICAgcmVxT2JqWyd2YWx1ZXNWYXInXSA9IHZhbHVlc1Zhci5zbGljZSgwLCAtMSk7IC8vY29udGFjdFR5cGUucHJpbnQudG9Mb3dlckNhc2UoKTtcclxuICAgIHJlcU9ialsnZGF0YVR5cGVWYXInXSA9IGRhdGFUeXBlVmFyLnNsaWNlKDAsIC0xKTsvLydjJztcclxuICAgIGlmICh0aGlzLm5hbWVJZG5MaXN0ICE9IFwiXCIgJiYgdGhpcy5uYW1lSWRuTGlzdCAhPSB1bmRlZmluZWQgJiYgdGhpcy5uYW1lSWRuTGlzdCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmFtZUlkbkxpc3Q9dGhpcy5uYW1lSWRuTGlzdC50cmltKCk7XHJcbiAgICAgIGxldCBzcGFjZVRvY29tbWEgPSB0aGlzLm5hbWVJZG5MaXN0LnJlcGxhY2UoL1sgLF0rL2csIFwiLFwiKTtcclxuICAgICAgbGV0IG5ld0xpbmVUb0NvbW1hID0gc3BhY2VUb2NvbW1hLnJlcGxhY2UoL1xcbi9nLCBcIixcIik7XHJcbiAgICAgIHJlcU9ialsnbm1lSWRuTGlzdCddPSBuZXdMaW5lVG9Db21tYS5zcGxpdCgnLCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ3NlYXJjaENvbnRhY3QnO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICBcclxuICAgIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdjb250YWN0L2xvYWRDb250YWN0JykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRhdGFIZWFkZXIgPSByZXNwb25zZS5kYXRhSGVhZGVyO1xyXG4gICAgICAgIHRoaXMuZGF0YUxpc3QgPSByZXNwb25zZS5kYXRhTGlzdDtcclxuICAgICAgICB0aGlzLmRhdGFIZWFkZXJQcmludCA9IHJlc3BvbnNlLmRhdGFIZWFkZXJQcmludDtcclxuICAgICAgICB0aGlzLnBhZ2VEZWZpbmF0aW9uID0gcmVzcG9uc2UucGFnZURlZmluYXRpb247XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0bT1bXTtcclxuICAgICAgICB0aGlzLm5hbWVJZG5MaXN0PVwiXCI7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3cmFwXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IFwidHJhbnNsYXRlKDAsXCIgKyB0aGlzLnNjcm9sbFRvcCArIFwicHgpXCI7XHJcbiAgICAgICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IoXCJ0aGVhZFwiKS5zdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2xhdGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVzZXJBY3Rpb24odWEsIGMsIGEpIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAodWEgJiYgYy50cmltKCkgPT0gJ3N1YmZvcm0nKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFthLmxvdl9xcnkudHJpbSgpLCBhLmNvbHVtbl9rZXksIHVhLm5tZV9pZG5dKTtcclxuICAgIH1cclxuICB9XHJcbiAgdG9vbGFjdGlvbnModGFiKXtcclxuICBcclxuICAgICAgY29uc29sZS5sb2coXCJwcm9jZXNzXCIsIHByb2Nlc3MpO1xyXG4gICAgICBzd2l0Y2ggKHRhYi5mb3JtX2ZpZWxkKSB7XHJcblxyXG4gICAgICAgIGNhc2UgXCJhZGRub3RpZmljYXRpb25cIjoge1xyXG4gICAgICAgICAgdGhpcy5Ob3RpZmljYXRpb25Qb3B1cCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBkZWZhdWx0OiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkludmFsaWQgY2hvaWNlXCIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBcclxuICBcclxuICB9XHJcblxyXG4gIE5vdGlmaWNhdGlvblBvcHVwKCl7XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkSXRtLmxlbmd0aD4wKXtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25Gb3JtcmVzZXQoKTtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybSddO1xyXG4gICAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnbG9hZE5vdGlmaWNhdGlvbic7XHJcbiAgICAgIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3Qvbm90aWZpY2F0aW9uJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0fHx7fTtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uTWRsTGlzdCA9IHJlc3VsdC5ub3RpZmljYXRpb25NZGxMaXN0fHxbXTtcclxuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5Ob3RpZmljYXRpb24nKS5jbGljaygpO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgXHJcbiAgICAgfWVsc2V7XHJcbiAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlBsZWFzZSBzZWxlY3QgY29udGFjdHNcIik7XHJcbiBcclxuICAgICB9XHJcbiAgfVxyXG5cclxuICBBZGROb3RpZmljYXRpb24oKXtcclxuICAgIGlmICh0aGlzLm15Tm90aWZpY2F0aW9uLnZhbGlkKSB7XHJcbiAgICBsZXQgZm9ybXNWYWwgPSB0aGlzLm15Tm90aWZpY2F0aW9uLnZhbHVlO1xyXG4gICAgbGV0IGJ1eWVyTGlzdD1bXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdG0uZm9yRWFjaChlbGVtZW50PT57XHJcbiAgICAgIGxldCBubWVfaWRuID0gZWxlbWVudC5ubWVfaWRufHxbXTtcclxuICAgICAgYnV5ZXJMaXN0LnB1c2gobm1lX2lkbik7XHJcbiAgICB9KVxyXG4gICAgZGVidWdnZXJcclxuICAgIGxldCBkYXRlU3RyaW5nID0gZm9ybXNWYWxbJ2xvZ2RhdGUnXSsnICcrZm9ybXNWYWxbJ2hoJ10rJzonK2Zvcm1zVmFsWydtbSddKyc6MDAnO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybSddO1xyXG4gICAgcmVxT2JqWydsb2dfdHMnXSA9ZGF0ZVN0cmluZztcclxuICAgIHJlcU9ialsncHViX3B2dCddID0gZm9ybXNWYWxbJ3B1Yl9wdnQnXTtcclxuICAgIHJlcU9ialsnbWRsJ10gPSBmb3Jtc1ZhbFsnbWRsJ107XHJcbiAgICByZXFPYmpbJ3NyYyddID0gZm9ybXNWYWxbJ3NyYyddO1xyXG4gICAgcmVxT2JqWydtc2cnXSA9IGZvcm1zVmFsWydtYXNzYWdlJ107XHJcbiAgICByZXFPYmpbJ3N0YXR1cyddID0gZm9ybXNWYWxbJ3N0YXR1cyddO1xyXG4gICAgcmVxT2JqWydidXllckxpc3QnXSA9IGJ1eWVyTGlzdDtcclxuICAgIHJlcU9ialsnYWN0aW9uJ10gPSAnYWRkJyA7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdzYXZlTm90aWZpY2F0aW9uJztcclxuICAgIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdjb250YWN0L25vdGlmaWNhdGlvbicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0fHx7fTtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkZvcm1yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdG09W107XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljbG9zZWJ0bi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIk5vdGlmaWNhdGlvbiBhZGRlZCBzdWNjZXNzZnVsbHkuXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gIH1lbHNle1xyXG4gICAgdGhpcy50b2FzdHIuZXJyb3IoXCJQbGVhc2Ugc3BlY2lmeSBhbGwgcmVxdWlyZWQgZmllbGRcIik7XHJcblxyXG4gIH1cclxuXHJcbiAgfVxyXG5cclxuICBleHBvcnRFeGNlbCgpIHtcclxuICAgIHRoaXMuY21uY3MuQ1NWQ29udmVydG9yKHRoaXMuZGF0YUxpc3QsICdDb250YWN0X1NlYXJjaF8nLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIE1haWxQb3B1cCgpe1xyXG4gICAgaWYodGhpcy5zZWxlY3RlZEl0bS5sZW5ndGg+MCl7XHJcbiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bnNlbmRNYWlsJykuY2xpY2soKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlBsZWFzZSBzZWxlY3QgY29udGFjdHNcIik7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgVXBkYXRlU2FsZUV4ZWN1dGl2ZVBvcCgpe1xyXG4gICAgaWYodGhpcy5zZWxlY3RlZEl0bS5sZW5ndGg+MCl7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuc2FsZWV4JykuY2xpY2soKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlBsZWFzZSBzZWxlY3QgY29udGFjdHNcIik7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgVXBkYXRlU2FsZUV4ZWN1dGl2ZSgpe1xyXG4gICAgbGV0IG5tZUlkbkxpc3Q9W107XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRtLmZvckVhY2goZWxlbWVudD0+e1xyXG4gICAgICBsZXQgbm1lX2lkbiA9IGVsZW1lbnQubm1lX2lkbnx8W107XHJcbiAgICAgICAgbm1lSWRuTGlzdC5wdXNoKG5tZV9pZG4pO1xyXG4gICAgfSlcclxuICAgIHRoaXMuc2FsZUV4Y3V0ZT10aGlzLnNhbGVFeGN1dGV8fFwiXCI7XHJcbiAgICBpZih0aGlzLnNhbGVFeGN1dGUhPVwiXCIpe1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm0nXTsgXHJcbiAgICByZXFPYmpbJ25tZUlkbkxpc3QnXT1ubWVJZG5MaXN0O1xyXG4gICAgcmVxT2JqWydlbXBfaWRuJ109dGhpcy5zYWxlRXhjdXRlO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnYXNzaWduU2FsZUV4ZWN1dGl2ZSc7XHJcbiAgICBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICB0aGlzLmNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnY29udGFjdC9sb2FkQ29udGFjdCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMuc2FsZUV4Y3V0ZT1cIlwiO1xyXG4gICAgICAgIHRoaXMuc2xleGNsb3NlYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIlVwZGF0ZSBkb25lIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfWVsc2V7XHJcbiAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlBsZWFzZSBTcGVjaWZ5IFNhbGUgRXhlY3V0aXZlXCIpO1xyXG5cclxuICB9XHJcbiAgXHJcbiAgfVxyXG5cclxuICBTZW5kTWFpbCgpe1xyXG4gICAgbGV0IGZvcm1zVmFsID0gdGhpcy5teUZvcm1tbS52YWx1ZTtcclxuZGVidWdnZXJcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGxldCBtYXNzYWdlPVwiXCI7XHJcbiAgICBsZXQgaHRtbGNvbnRlbnQgPWZvcm1zVmFsWydodG1sY29udGVudCddfHwnJztcclxuICAgIGxldCBzdWJqZWN0PWZvcm1zVmFsWydzdWJqZWN0J118fCcnO1xyXG4gICAgbGV0IHNlbmRlck5hbWU9Zm9ybXNWYWxbJ3NlbmRlck5hbWUnXXx8Jyc7XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkSXRtLmxlbmd0aD09MCl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgbWFzc2FnZT1cIlBsZWFzZSBzZWxlY3QgY29udGFjdHMgZm9yIG1haWxcIjtcclxuXHJcbiAgICB9XHJcbiAgICBpZihzdWJqZWN0PT0nJyl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgbWFzc2FnZT1cIlBsZWFzZSBTcGVjaWZ5IFN1YmplY3RcIjtcclxuXHJcbiAgICB9XHJcbiAgICBpZihodG1sY29udGVudD09Jycpe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIG1hc3NhZ2U9XCJQbGVhc2UgU3BlY2lmeSBNYWlsIEJvZHlcIjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYoc2VuZGVyTmFtZT09Jycpe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIG1hc3NhZ2U9XCJQbGVhc2UgU3BlY2lmeSBTZW5kZXIgTmFtZVwiO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZihpc1ZhbGlkKXtcclxuICAgIGxldCBDQ2xzdCA9Zm9ybXNWYWxbJ0NDJ10gfHwnJztcclxuICAgIGxldCBCQ0Nsc3QgPSBmb3Jtc1ZhbFsnQkNDJ118fCcnO1xyXG4gICAgbGV0IGNjPVtdO1xyXG4gICAgbGV0IGJjYz1bXTtcclxuXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgXHJcblxyXG4gICAgaWYoQ0Nsc3QhPScnKXtcclxuICAgbGV0IHNwYWNlVG9jb21tYSA9IENDbHN0LnJlcGxhY2UoL1sgLF0rL2csIFwiLFwiKTtcclxuICAgICBsZXQgbmV3TGluZVRvQ29tbWEgPSBzcGFjZVRvY29tbWEucmVwbGFjZSgvXFxuL2csIFwiLFwiKTtcclxuICAgICBjYyA9IG5ld0xpbmVUb0NvbW1hLnNwbGl0KCcsJyk7XHJcbiAgICB9XHJcbiAgICBpZihCQ0Nsc3QhPScnKXtcclxuICAgbGV0IHNwYWNlVG9jb21tYSA9IEJDQ2xzdC5yZXBsYWNlKC9bICxdKy9nLCBcIixcIik7XHJcbiAgICBsZXQgbmV3TGluZVRvQ29tbWEgPSBzcGFjZVRvY29tbWEucmVwbGFjZSgvXFxuL2csIFwiLFwiKTtcclxuICAgICBiY2MgPSBuZXdMaW5lVG9Db21tYS5zcGxpdCgnLCcpO1xyXG4gICAgfVxyXG4gICAgbGV0IGVtYWlsRGV0YWlscz1bXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdG0uZm9yRWFjaChlbGVtZW50PT57XHJcbiAgICAgIGxldCBlbWFpbElkbnMgPSBlbGVtZW50LmVtYWlsSWRuc3x8W107XHJcbiAgICAgIGxldCBubWVfaWRuPWVsZW1lbnQubm1lX2lkbjtcclxuICAgICAgbGV0IGVtcF9pZG49ZWxlbWVudC5lbXBfaWRuO1xyXG4gICAgICBpZihlbWFpbElkbnMubGVuZ3RoPjApe1xyXG4gICAgICBlbWFpbERldGFpbHMucHVzaCh7XHJcbiAgICAgICAgXCJlbWFpbHNcIjplbWFpbElkbnMsXHJcbiAgICAgICAgXCJubWVfaWRuXCI6bm1lX2lkbixcclxuICAgICAgICBcImVtcF9pZG5cIjplbXBfaWRuXHJcbiAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBkZWJ1Z2dlclxyXG4gICBcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gXCJDb250YWN0TWFzc01haWxcIjtcclxuICAgIHJlcU9ialsnc2VuZGVybmFtZSddPXNlbmRlck5hbWU7XHJcbiAgICByZXFPYmpbJ3N1YmplY3QnXT1zdWJqZWN0O1xyXG4gICAgcmVxT2JqWydtYWlsZGV0YWlscyddPWVtYWlsRGV0YWlscztcclxuICAgIHJlcU9ialsnY2MnXT1jYztcclxuICAgIHJlcU9ialsnYmNjJ109YmNjO1xyXG4gICAgcmVxT2JqWydtYWlsQm9keSddPWh0bWxjb250ZW50O1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnc2VuZEJ1bGtNYWlsJztcclxuICAgIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdjb250YWN0L2xvYWRDb250YWN0JykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5teUZvcm1tbSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgc2VuZGVyTmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHN1YmplY3Q6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBodG1sY29udGVudDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgICAgQ0M6IFwiXCIsXHJcbiAgICAgICAgICBCQ0M6XCJcIlxyXG4gICAgICAgfSk7XHJcbiAgICAgIHRoaXMubWFpbGNsb3NlYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gIH1lbHNle1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB0aGlzLnRvYXN0ci5lcnJvcihtYXNzYWdlKTtcclxuICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGdldCBub3RpZmljYXRpb25Db250cm9sKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubXlOb3RpZmljYXRpb24uY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RSb3cobm1lX2lkbikge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiXycrbm1lX2lkbikuY2xpY2soKTtcclxuICB9XHJcbiAgc2VsZWN0QWxsKGUpIHtcclxuICAgICAgdGhpcy5kYXRhTGlzdC5mb3JFYWNoKGVsZT0+e1xyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgdGhpcy5zZWxlY3RSb3coZWxlLm5tZV9pZG4pO1xyXG4gICAgICB9KVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZE9iaiA9IFtdO1xyXG4gIHNlbGVjdGVkSXRtID0gW107XHJcbiAgc2VsZWN0ZWRDcnRXZWlnaHQgPSAwO1xyXG4gIGNoZWNrZWRSb3coZGF0YSwgbm1lX2lkbikge1xyXG4gICAgZGVidWdnZXJcclxuICAgIGlmICgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiXycrbm1lX2lkbikgYXMgYW55KS5jaGVja2VkID09IGZhbHNlKSB7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiXycrbm1lX2lkbik7Ly9wa3RJZFxyXG4gICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwic2VsZWN0ZWRSb3dcIik7XHJcbiAgICAgIGVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJub3RzZWxlY3RlZFJvd1wiKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0bS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50Lm5tZV9pZG4gPT0gbm1lX2lkbikge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0bS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYl8nK25tZV9pZG4pOy8vcGt0SWRcclxuICAgICAgZWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcIm5vdHNlbGVjdGVkUm93XCIpO1xyXG4gICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwic2VsZWN0ZWRSb3dcIik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdG0ucHVzaChkYXRhKTtcclxuICAgIH1cclxuY29uc29sZS5sb2codGhpcy5zZWxlY3RlZEl0bSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVkaXRvckNvbmZpZyA9IHRoaXMuY21uY3MuZWRpdG9yQ29uZmlnO1xyXG5cclxuICAgIGxldCBtZGxrID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWRsS2V5JykpO1xyXG4gICAgdGhpcy5jVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5jVXJsLnNwbGl0KCcvJylbMV0pO1xyXG4gICAgdGhpcy5oZWFkZXIgPSB7XHJcbiAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ21vZHVsZWtleSc6IG1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgICAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfTtcclxuICAgXHJcbiAgICB0aGlzLm15Rm9ybW1tID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHNlbmRlck5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHN1YmplY3Q6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGh0bWxjb250ZW50OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIENDOiBcIlwiLFxyXG4gICAgICBCQ0M6XCJcIlxyXG4gIH0pO1xyXG4gIHRoaXMubW10aW1lTGlzdD1bXTtcclxuICBmb3IodmFyIGk9MDtpPDI0O2krKyl7XHJcbiAgICBpZihpPDEwKVxyXG4gICAgdGhpcy5tbXRpbWVMaXN0LnB1c2goXCIwXCIraSk7XHJcbiAgICBlbHNlXHJcbiAgICB0aGlzLm1tdGltZUxpc3QucHVzaChcIlwiK2kpO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5oaHRpbWVMaXN0PVtdO1xyXG4gIGZvcih2YXIgaT0wO2k8NjA7aSsrKXtcclxuICAgIGlmKGk8MTApXHJcbiAgICB0aGlzLmhodGltZUxpc3QucHVzaChcIjBcIitpKTtcclxuICAgIGVsc2VcclxuICAgIHRoaXMuaGh0aW1lTGlzdC5wdXNoKFwiXCIraSk7XHJcbiAgfVxyXG5cclxuICAgIHRoaXMubm90aWZpY2F0aW9uRm9ybXJlc2V0KCk7XHJcbiAgICB0aGlzLmxvYWRQcm9jZXNzKCk7XHJcbiAgfVxyXG4gIG5vdGlmaWNhdGlvbkZvcm1yZXNldCgpe1xyXG4gICAgdGhpcy5teU5vdGlmaWNhdGlvbiA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBsb2dkYXRlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBwdWJfcHZ0OiBcIlBWVFwiLFxyXG4gICAgICBtZGw6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHNyYzpcImV6XCIsXHJcbiAgICAgIGhoOlwiMDBcIixcclxuICAgICAgbW06XCIwMFwiLFxyXG4gICAgICBtYXNzYWdlOlsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHN0YXR1czpcIlBcIlxyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm10XCI+XHJcbiAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnQgY3BcIj4gQmFjazwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsgQ29udGFjdCBTZWFyY2gmbmJzcDsmbmJzcDsmbmJzcDtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImYtMTJcIj4oe3tjRHQgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICA8L2gzPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwidHJuc19idXR0b25zLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZE5ld0NvbnRhY3QodHJuc19idXR0b25zWzBdKVwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojM2M1OTk4O2JvcmRlci1jb2xvcjogIzNjNTk5ODtcIj5BZGQgTmV3IENvbnRhY3Q8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+IFxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZnJhbWVcIiBzdHlsZT1cImJhY2tncm91bmQ6ICNmZmY7aGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTAwcHgpO1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImlubmVyRFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbjogMTBweCAwO1wiPlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIHctMTAwXCIgbmFtZT1cImNvbnRhY3RUeXBlXCIgWyhuZ01vZGVsKV09XCJjb250YWN0VHlwZVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IENvbnRhY3RUeXBlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHR5cGUgb2YgY29udGFjdFR5cGVMaXN0XCIgW25nVmFsdWVdPVwidHlwZS52YWxcIj57e3R5cGUucHJpbnR9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxuZy1zZWxlY3QgW2l0ZW1zXT1cImJ1eWVyTGlzdFwiIFtzZWFyY2hhYmxlXT1cImZhbHNlXCIgbmFtZT1cImJ1eWVyU3VnZ1wiIFsobmdNb2RlbCldPVwiYnV5ZXJTdWdnXCJcclxuICAgICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJ2XCIgYmluZFZhbHVlPVwia1wiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJ1eWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWhlYWRlci10bXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbGluZS1oZWlnaHQ6IDI0cHhcIiAjYnV5ZXIgdHlwZT1cInRleHRcIiAoa2V5dXApPVwibG9hZEJ1eWVyKGJ1eWVyLnZhbHVlKTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2ZvY3VzXT1cInRlc3R0XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3Qgc3R5bGU9XCJ6LWluZGV4OiA1O1wiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJ1eWVyXCIgW29wdGlvbnNdPVwiYnV5ZXJMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJ1eWVyXCIgbmFtZT1cImJ1eWVyXCIgKGZpbHRlcklucHV0Q2hhbmdlZCk9XCJsb2FkQnV5ZXIoJGV2ZW50KVwiIFthbGxvd0NsZWFyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBlbXBsb3llZVwiIG5hbWU9XCJlbXBJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2FsZUV4ZWN1dGl2ZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW1wSWRcIiBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IFtpdGVtc109XCJzYWxlRXhlY3V0aXZlTGlzdFwiIFsobmdNb2RlbCldPVwiZW1wSWRcIiBiaW5kTGFiZWw9XCJ2XCIgbmFtZT1cImVtcElkXCIgYmluZFZhbHVlPVwia1wiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZW1wbG95ZWVcIiAjYnV5ZXJGaWw9XCJuZ01vZGVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWhlYWRlci10bXA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy0xMDBcIiBuYW1lPVwiVGVybXNcIiBbKG5nTW9kZWwpXT1cIlRlcm1zXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgVGVybXM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGVybSBvZiB0ZXJtc0xpc3RcIiB2YWx1ZT1cInt7dGVybS50ZXJtc19pZG59fVwiPnt7dGVybS5wcmludH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCB3LTEwMFwiIG5hbWU9XCJjdXJyZW5jeVwiIFsobmdNb2RlbCldPVwiY3VycmVuY3lcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBjdXJyZW5jeTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjdXJyZW5jeSBvZiBjdXJyZW5jeUxpc3RcIiB2YWx1ZT1cInt7Y3VycmVuY3kuY3VycmVuY3lfaWRufX1cIj57e2N1cnJlbmN5LnByaW50fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy0xMDBcIiBwbGFjZWhvbGRlcj1cIlVzZXIgTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInVzZXJOYW1lXCIgWyhuZ01vZGVsKV09XCJ1c2VyTmFtZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZTtcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiTmFtZUlkbiBMaXN0XCIgXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmFtZUlkbkxpc3RcIiAgaWQ9XCJuYW1lSWRuTGlzdFwiICBuYW1lPVwibmFtZUlkbkxpc3RcIiBjb2xzPVwiMzhcIiByb3dzPVwiM1wiICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiB3LTEwMFwiIHN0eWxlPVwicGFkZGluZy10b3A6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwic2F2ZWJ0blwiIChjbGljayk9XCJzZWFyY2hDb250YWN0KClcIiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiMzYzU5OTg7Ym9yZGVyLWNvbG9yOiAjM2M1OTk4XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1sZWZ0XCI+c3VibWl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8IS0tIChjbGljayk9XCJzZWFyY2hDb250YWN0KGNvbnRhY3RUeXBlLGJ1eWVyU3VnZyxlbXBJZCxUZXJtcyxjdXJyZW5jeSx1c2VyTmFtZSlcIiAtLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05IGN1c3RDbHNcIj5cclxuICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImRhdGFMaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xIHB1bGwtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwidG9ndHNsKCk7XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiMzYzU5OTg7Ym9yZGVyLWNvbG9yOiAjM2M1OTk4O21hcmdpbi10b3A6IDdweDttYXJnaW4tYm90dG9tOiA3cHhcIj50b29sczwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRsc2RycFwiICpuZ0lmPVwidHNsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInRsc3VsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7e2FjdGlvbj8uZm9ybV9maWVsZF9pY29ufX0gdHNsaWNvXCI+PC9zcGFuPnt7YWN0aW9uPy5mb3JtX2ZpZWxkX3RpdGxlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiMzYzU5OTg7Ym9yZGVyLWNvbG9yOiAjM2M1OTk4O21hcmdpbi10b3A6IDdweDttYXJnaW4tYm90dG9tOiA3cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIj50b29sc1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZXRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCIgIChjbGljayk9XCJ0b29sYWN0aW9ucyh0YWIpO1wiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3t0YWI/LmZvcm1fZmllbGRfaWNvbn19IHRzbGljb1wiPjwvc3Bhbj57e3RhYj8uZm9ybV9maWVsZF90aXRsZX19PC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwicGFkZGluZzogMTBweDtjdXJzb3I6IHBvaW50ZXI7XCIgKGNsaWNrKT1cImV4cG9ydEV4Y2VsKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIEV4Y2VsPC9saT5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cInBhZGRpbmc6IDEwcHg7Y3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJVcGRhdGVTYWxlRXhlY3V0aXZlUG9wKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgVXBkYXRlIFNhbGVzIEV4ZWN1dGl2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHVsbC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4YW1wbGVJbnB1dE5hbWUyXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogNXB4O1wiPlNlYXJjaCAmbmJzcDsmbmJzcDs8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImV4YW1wbGVJbnB1dE5hbWUyXCIgbmFtZT1cInNjaHR4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTAwcHgpO1wiIGlkPVwid3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZGlzcGxheVRhYmxlXCIgKm5nSWY9XCJkYXRhTGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwicG9zcmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGg+U1IgTm88aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNsaWNrKT1cInNlbGVjdEFsbCgkZXZlbnQpO1wiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGRyIG9mIGRhdGFIZWFkZXJcIj57e2RhdGFIZWFkZXJQcmludFtoZHJdfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRoPkFkZC5FbWFpbHM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0Ym9keSA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhdGFMaXN0IHwgQ29udGFjdFRhYmxlU3JjUGlwZTpzZWFyY2hGOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIHwgc2VhcmNoUGlwZTpzZWFyY2hGIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIChjbGljayk9XCJzZWxlY3RSb3coZGF0YS5ubWVfaWRuKVwiPnt7aSArIDF9fVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtoaWRkZW5dPVwidHJ1ZVwiIGlkPVwiY2Jfe3tkYXRhLm5tZV9pZG59fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoZWNrZWRSb3coZGF0YSxkYXRhLm5tZV9pZG4pXCIgdmFsdWU9XCJ7e2RhdGEubm1lX2lkbn19XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgKGNsaWNrKT1cInNlbGVjdFJvdyhkYXRhLm5tZV9pZG4pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBjbGFzcz1cImJ0biBidG4taW5mbyBkcm9wZG93bi10b2dnbGVcIj5BY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZXRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgcGFnZURlZmluYXRpb24uYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwidXNlckFjdGlvbihkYXRhLGFjdGlvbi5mb3JtX2ZpZWxkX3R5cCxhY3Rpb24pO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YWN0aW9uLmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgaGRyIG9mIGRhdGFIZWFkZXJcIiAoY2xpY2spPVwic2VsZWN0Um93KGRhdGEubm1lX2lkbilcIj57e2RhdGFbaGRyXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2RhdGFbJ2VtYWlsSWRucyddfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uRm9vdGVyIHB1bGwtcmlnaHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJtb2RlbFNhbGVFeFwiIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwibWFpbE1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJ0cnVlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1tZFwiID5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwibWFpbE1vZGFsSGVhZFwiPlVwZGF0ZSBTYWxlIEV4ZWN1dGl2ZTwvaDQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5TYWxlIEV4ZWN1dGl2ZVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc20gIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3Qgc3R5bGU9XCJ6LWluZGV4OiA1O1wiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJ1eWVyXCIgW29wdGlvbnNdPVwiRW1wbG95ZWVMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzYWxlRXhjdXRlXCIgbmFtZT1cInNhbGVFeGN1dGVcIiAoZmlsdGVySW5wdXRDaGFuZ2VkKT1cImxvYWRTYWxlRXhjdXRpdmUoJGV2ZW50KVwiIFthbGxvd0NsZWFyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgPCEtLSA8cD4gZGZmIHt7aHRtbENvbnRlbnR9fTwvcD4gLS0+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiVXBkYXRlU2FsZUV4ZWN1dGl2ZSgpXCIgICBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiPlVwZGF0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI3NsZXhjbG9zZWJ0biBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwibW9kZWxNYWlsXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJtYWlsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cInRydWVcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgc3R5bGU9XCJ3aWR0aDogNzA1cHhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiAgW2Zvcm1Hcm91cF09XCJteUZvcm1tbVwiICAgKG5nU3VibWl0KT1cIlNlbmRNYWlsKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPlxyXG4gICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJtYWlsTW9kYWxIZWFkXCI+U2VuZCBNYWlsPC9oND5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5TZW5kZXIgTmFtZVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNtICB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBvc3JlbFwiIGZvcm1Db250cm9sTmFtZT1cInNlbmRlck5hbWVcIiAgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5TdWJqZWN0XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwb3NyZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJzdWJqZWN0XCIgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+Q0NcclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBvc3JlbFwiIGZvcm1Db250cm9sTmFtZT1cIkNDXCIgbmFtZT1cIkNDXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbFwiPkJDQ1xyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcG9zcmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwiQkNDXCIgbmFtZT1cIkJDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhbmd1bGFyLWVkaXRvciBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyIHRleHQgaGVyZS4uLidcIiBbY29uZmlnXT1cImNvbmZpZ1wiIGZvcm1Db250cm9sTmFtZT1cImh0bWxjb250ZW50XCI+PC9hbmd1bGFyLWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8ZWpzLXJpY2h0ZXh0ZWRpdG9yIGlkPSdkZWZhdWx0UlRFJyBbKHZhbHVlKV09J3ZhbHVlJyA+PC9lanMtcmljaHRleHRlZGl0b3I+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8Y2tlZGl0b3IgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiID48L2NrZWRpdG9yPiAtLT5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8IS0tIDxwPiBkZmYge3todG1sQ29udGVudH19PC9wPiAtLT5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj5TZW5kPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI21haWxjbG9zZWJ0biBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwibW9kZWxOb3RpZmljYXRpb25cIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJ0cnVlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHN0eWxlPVwid2lkdGg6IDcwNXB4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgIFtmb3JtR3JvdXBdPVwibXlOb3RpZmljYXRpb25cIiAgIChuZ1N1Ym1pdCk9XCJBZGROb3RpZmljYXRpb24oKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cIm1haWxNb2RhbEhlYWRcIj5BZGQgTm90aWZpY2F0aW9uPC9oND5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWRcIj4qPC9zcGFuPiBEYXRlXHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zbSAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsb2dkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBvbmZvY3VzPVwiKHRoaXMudHlwZT0nZGF0ZScpXCJcclxuICAgICAgICAgICAgICAgICAgICBvbmJsdXI9XCIodGhpcy50eXBlPSd0ZXh0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImRkL21tL3l5eXlcIiBcclxuICAgICAgICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vdGlmaWNhdGlvbkNvbnRyb2wubG9nZGF0ZS5pbnZhbGlkICYmIChub3RpZmljYXRpb25Db250cm9sLmxvZ2RhdGUuZGlydHkgfHwgbm90aWZpY2F0aW9uQ29udHJvbC5sb2dkYXRlLnRvdWNoZWQpICYmIG5vdGlmaWNhdGlvbkNvbnRyb2wubG9nZGF0ZS5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+IDxzcGFuIHN0eWxlPVwiY29sb3I6cmVkXCI+Kjwvc3Bhbj5UaW1lKEhIOk1NKVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiIHN0eWxlPVwicGFkZGluZzoycHg7bWFyZ2luOjBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImhoXCIgc3R5bGU9XCJwYWRkaW5nOjVweCA1cHhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtbXQgb2YgbW10aW1lTGlzdFwiIFtuZ1ZhbHVlXT1cIm1tdFwiPnt7bW10fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCIgc3R5bGU9XCJwYWRkaW5nOjJweDttYXJnaW46MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibW1cIiBzdHlsZT1cInBhZGRpbmc6NXB4IDVweFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGhodCBvZiBoaHRpbWVMaXN0XCIgW25nVmFsdWVdPVwiaGh0XCI+e3toaHR9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWRcIj4qPC9zcGFuPk1vZHVsZVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtZGxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG5vdGlmaWNhdGUgb2Ygbm90aWZpY2F0aW9uTWRsTGlzdFwiIFtuZ1ZhbHVlXT1cIm5vdGlmaWNhdGUua1wiPnt7bm90aWZpY2F0ZVsndiddfX08L29wdGlvbj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub3RpZmljYXRpb25Db250cm9sLm1kbC5pbnZhbGlkICYmIChub3RpZmljYXRpb25Db250cm9sLm1kbC5kaXJ0eSB8fCBub3RpZmljYXRpb25Db250cm9sLm1kbC50b3VjaGVkKSAmJiBub3RpZmljYXRpb25Db250cm9sLm1kbC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICBNb2R1bGUgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjpyZWRcIj4qPC9zcGFuPk1hc3NhZ2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YW5ndWxhci1lZGl0b3IgW3BsYWNlaG9sZGVyXT1cIlwiIFtjb25maWddPVwibm90aWNvbmZpZ1wiIGZvcm1Db250cm9sTmFtZT1cIm1hc3NhZ2VcIj48L2FuZ3VsYXItZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub3RpZmljYXRpb25Db250cm9sLm1hc3NhZ2UuaW52YWxpZCAmJiAobm90aWZpY2F0aW9uQ29udHJvbC5tYXNzYWdlLmRpcnR5IHx8IG5vdGlmaWNhdGlvbkNvbnRyb2wubWFzc2FnZS50b3VjaGVkKSAmJiBub3RpZmljYXRpb25Db250cm9sLm1hc3NhZ2UuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBtYXNzYWdlIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgPCEtLSA8cD4gZGZmIHt7aHRtbENvbnRlbnR9fTwvcD4gLS0+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCI+QWRkPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI25vdGlmaWNsb3NlYnRuIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxidXR0b24gaWQ9XCJidG5Ob3RpZmljYXRpb25cIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjbW9kZWxOb3RpZmljYXRpb25cIj48L2J1dHRvbj5cclxuXHJcblxyXG48YnV0dG9uIGlkPVwiYnRuc2FsZWV4XCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI21vZGVsU2FsZUV4XCI+PC9idXR0b24+XHJcblxyXG48YnV0dG9uIGlkPVwiYnRuc2VuZE1haWxcIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjbW9kZWxNYWlsXCI+PC9idXR0b24+XHJcbiJdfQ==
705
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXpsaWIvc3JjL2xpYi9jb250YWN0LXNlYXJjaC9jb250YWN0LXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2NvbnRhY3Qtc2VhcmNoL2NvbnRhY3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLFNBQVMsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFaEYsMkpBQTJKO0FBQzNKLHFFQUFxRTtBQUNyRSxPQUFPLEVBQWEsV0FBVyxFQUFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBU25FLE1BQU0sT0FBTyxzQkFBc0I7SUFLakMsWUFDUyxNQUFjLEVBQ2IsS0FBcUIsRUFDckIsTUFBcUIsRUFDckIsRUFBeUIsRUFDekIsRUFBdUIsRUFDdkIsY0FBaUMsRUFDakMsS0FBMkIsRUFDM0IsRUFBZTtRQVBoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2IsVUFBSyxHQUFMLEtB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LElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsQ0FBQzs7Z0JBRTVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUVDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEMsT0FBTyxFQUFFLEtBQUs7WUFDZCxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM5QixHQUFHLEVBQUMsSUFBSTtZQUNSLEVBQUUsRUFBQyxJQUFJO1lBQ1AsRUFBRSxFQUFDLElBQUk7WUFDUCxPQUFPLEVBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNqQyxNQUFNLEVBQUMsR0FBRztTQUNULENBQUMsQ0FBQztJQUNQLENBQUM7O3NJQTF1QlUsc0JBQXNCOzBIQUF0QixzQkFBc0IsbWNDckJuQyw2MG5CQTBZQTsyRkRyWGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjt5VEFvQk4sU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDRSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0ksY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBQaXBlLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzICB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbmltcG9ydCB7IE5neFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSBcIm5neC1zcGlubmVyXCI7XHJcbmltcG9ydCB7IENvbnRhY3RTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2NvbnRhY3Qtc2VydmljZS9jb250YWN0LXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b2NrU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9jay1zZXJ2aWNlL3N0b2NrLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuLy9pbXBvcnQgeyBUb29sYmFyU2VydmljZSwgTGlua1NlcnZpY2UsIEltYWdlU2VydmljZSwgSHRtbEVkaXRvclNlcnZpY2UsIFRhYmxlU2VydmljZSwgUXVpY2tUb29sYmFyU2VydmljZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLXJpY2h0ZXh0ZWRpdG9yJztcclxuLy9pbXBvcnQgKiBhcyBDbGFzc2ljRWRpdG9yIGZyb20gJ0Bja2VkaXRvci9ja2VkaXRvcjUtYnVpbGQtY2xhc3NpYyc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29udGFjdC1zZWFyY2gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250YWN0LXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29udGFjdC1zZWFyY2guY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250YWN0U2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjczogQ29udGFjdFNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzczogU3RvY2tTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgc3Bpbm5lclNlcnZpY2U6IE5neFNwaW5uZXJTZXJ2aWNlICxcclxuICAgIHByaXZhdGUgY21uY3M6IENvbW1hblNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcclxuICApIHsgfVxyXG5cclxuICBAVmlld0NoaWxkKCdzdWJtaXRCdG4nKSBzdWJtaXRidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnc2xleGNsb3NlYnRuJykgc2xleGNsb3NlYnRuOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ21haWxjbG9zZWJ0bicpIG1haWxjbG9zZWJ0bjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdub3RpZmljbG9zZWJ0bicpIG5vdGlmaWNsb3NlYnRuOiBFbGVtZW50UmVmO1xyXG5cclxucHVibGljIGNvbmZpZyA9IHtcclxuICBlZGl0YWJsZTogdHJ1ZSxcclxuICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gIGhlaWdodDogJzE1cmVtJyxcclxuICBtaW5IZWlnaHQ6ICc1cmVtJyxcclxuICBwbGFjZWhvbGRlcjogJ0VudGVyIHRleHQgaGVyZS4uLicsXHJcbiAgdHJhbnNsYXRlOiAnbm8nLFxyXG4gIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICdwJyxcclxuICBkZWZhdWx0Rm9udE5hbWU6ICdBcmlhbCdcclxuICBcclxufTtcclxuXHJcbnB1YmxpYyBub3RpY29uZmlnID0ge1xyXG4gIGVkaXRhYmxlOiB0cnVlLFxyXG4gIHNwZWxsY2hlY2s6IHRydWUsXHJcbiAgaGVpZ2h0OiAnNXJlbScsXHJcbiAgbWluSGVpZ2h0OiAnM3JlbScsXHJcbiAgcGxhY2Vob2xkZXI6ICdFbnRlciB0ZXh0IGhlcmUuLi4nLFxyXG4gIHRyYW5zbGF0ZTogJ25vJyxcclxuICBkZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yOiAnJyxcclxuICBkZWZhdWx0Rm9udE5hbWU6ICcnLFxyXG4gIHRvb2xiYXJIaWRkZW5CdXR0b25zOiBbXHJcbiAgICBbXHJcbiAgICAgICdib2xkJyxcclxuICAgICAgJ2l0YWxpYycsXHJcbiAgICAgICd1bmRlcmxpbmUnLFxyXG4gICAgICAnc3RyaWtlVGhyb3VnaCcsXHJcbiAgICAgICdzdWJzY3JpcHQnLFxyXG4gICAgICAnc3VwZXJzY3JpcHQnLFxyXG4gICAgICAnanVzdGlmeUxlZnQnLFxyXG4gICAgICAnanVzdGlmeUNlbnRlcicsXHJcbiAgICAgICdqdXN0aWZ5UmlnaHQnLFxyXG4gICAgICAnanVzdGlmeUZ1bGwnLFxyXG4gICAgICAnaW5kZW50JyxcclxuICAgICAgJ291dGRlbnQnLFxyXG4gICAgICAnaW5zZXJ0VW5vcmRlcmVkTGlzdCcsXHJcbiAgICAgICdpbnNlcnRPcmRlcmVkTGlzdCcsXHJcbiAgICAgICdoZWFkaW5nJyxcclxuICAgICAgJ2ZvbnROYW1lJ1xyXG4gICAgXSxcclxuICAgIFtcclxuICAgICAgJ2ZvbnRTaXplJyxcclxuICAgICAgJ3RleHRDb2xvcicsXHJcbiAgICAgICdiYWNrZ3JvdW5kQ29sb3InLFxyXG4gICAgICAnY3VzdG9tQ2xhc3NlcycsXHJcbiAgICAgICdpbnNlcnRJbWFnZScsXHJcbiAgICAgICdpbnNlcnRWaWRlbycsXHJcbiAgICAgICdpbnNlcnRIb3Jpem9udGFsUnVsZScsXHJcbiAgICAgICdyZW1vdmVGb3JtYXQnLFxyXG4gICAgICAndG9nZ2xlRWRpdG9yTW9kZSdcclxuICAgIF1cclxuICBdXHJcbn07XHJcblxyXG5cclxuICBjVXJsO1xyXG4gIGhlYWRlcjtcclxuICBjRHQgPSBuZXcgRGF0ZSgpO1xyXG4gIGVkaXRvckNvbmZpZztcclxuXHJcbiAgY29udGFjdFR5cGVMaXN0O1xyXG4gIGN1cnJlbmN5TGlzdDtcclxuICB0ZXJtc0xpc3Q7XHJcbiAgcGFnZURlZmluYXRpb247XHJcbiAgaHRtbGNvbnRlbnQ7XHJcbiAgc2VhcmNoRjtcclxuXHJcbiAgZW1wbG95ZWVMaXN0ID0gW107XHJcbiAgY291bnRyeUxpc3QgPSBbXTtcclxuICBidXllckxpc3QgPSBbXTtcclxuICBzYWxlRXhlY3V0aXZlTGlzdCA9IFtdO1xyXG4gIGNpdHlMaXN0ID0gW107XHJcbiAgY29udGFjdFR5cGUgPSAnJztcclxuICBhY3Rpb25zID0gW107XHJcbiAgYnV5ZXJTdWdnO1xyXG4gIGVtcElkO1xyXG4gIFRlcm1zID0gJyc7XHJcbiAgY3VycmVuY3kgPSAnJztcclxuICB1c2VyTmFtZTtcclxuICBDaXR5ID0gJyc7XHJcbiAgdHJuc19idXR0b25zO1xyXG4gIGRhdGFIZWFkZXIgPSBbXTtcclxuICBkYXRhTGlzdCA9IFtdO1xyXG4gIGRhdGFIZWFkZXJQcmludDtcclxuICBidXR0b25zO1xyXG4gIHRhYnM7XHJcbiAgc3RhdHVzO1xyXG5cclxuICBNYWlsTXNnO1xyXG4gIHNhbGVFeGN1dGU7XHJcbiAgbmFtZUlkbkxpc3Q7XHJcbiAgbXlGb3JtbW06IEZvcm1Hcm91cDtcclxuICBteU5vdGlmaWNhdGlvbjogRm9ybUdyb3VwO1xyXG4gIG5vdGlmaWNhdGlvbk1kbExpc3Q9W107XHJcbiAgYnV5ZXI7XHJcbiAgbW10aW1lTGlzdD1bXTtcclxuICBoaHRpbWVMaXN0PVtdO1xyXG4gIGxvYWRQcm9jZXNzKCkge1xyXG4gICAgdGhpcy5zdGF0dXM9XCIwXCI7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybSddOyAvLydjb250YWN0U2VhcmNoRm9ybSc7Ly87XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnbG9hZCc7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlclsnbWV0aG9kJ11cclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3QvbG9hZENvbnRhY3QnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuY29udGFjdFR5cGVMaXN0ID0gcmVzcG9uc2UuY29udGFjdFR5cGVMaXN0O1xyXG4gICAgICAgIHRoaXMuY3VycmVuY3lMaXN0ID0gcmVzcG9uc2UuY3VycmVuY3lMaXN0O1xyXG4gICAgICAgIHRoaXMudGVybXNMaXN0ID0gcmVzcG9uc2UudGVybXNMaXN0O1xyXG4gICAgICAgIHRoaXMuY291bnRyeUxpc3QgPSByZXNwb25zZS5jb3VudHJ5TGlzdDtcclxuICAgICAgLy8gIHRoaXMuYnV5ZXJMaXN0ID0gcmVzcG9uc2UuYnV5ZXJMaXN0O1xyXG4gICAgICAgIHRoaXMuc2FsZUV4ZWN1dGl2ZUxpc3QgPSByZXNwb25zZS5zYWxlRXhlY3V0aXZlTGlzdC5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gcmVzcG9uc2UucGFnZURlZmluYXRpb24uYWN0aW9ufHxbXTtcclxuICAgICAgICB0aGlzLnRhYnMgID0gcmVzcG9uc2UucGFnZURlZmluYXRpb24udGFic3x8W11cclxuICAgICAgICB0aGlzLnRybnNfYnV0dG9ucz1yZXNwb25zZS5wYWdlRGVmaW5hdGlvbi50cm5zX2J1dHRvbnN8fFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBhZGROZXdDb250YWN0KGR0bCl7XHJcbiAgICBjb25zb2xlLmxvZyhkdGwpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2R0bC5sb3ZfcXJ5XSk7XHJcbiAgfVxyXG5cclxuIFxyXG5cclxuICBsb2FkQnV5ZXIoc2VhcmNoVGVybSkge1xyXG4gICBcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydsaWtlU3RyJ10gPSBzZWFyY2hUZXJtO1xyXG4gICAgcmVxT2JqWyd0eXAnXSA9ICdBbGwnO1xyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ2xvYWRCdXllcic7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ21hcmtldGluZy9zZWFyY2gnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICB0aGlzLmJ1eWVyTGlzdCA9IHJlc3VsdC5idXllckxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgRW1wbG95ZWVMaXN0PVtdO1xyXG4gIGxvYWRTYWxlRXhjdXRpdmUoc2VhcmNoVGVybSkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2xpa2VTdHInXSA9IHNlYXJjaFRlcm07XHJcbiAgICByZXFPYmpbJ3R5cCddID0gJ2VtcGxveWVlJztcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdsb2FkQnV5ZXInO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdtYXJrZXRpbmcvc2VhcmNoJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5FbXBsb3llZUxpc3QgPSByZXN1bHQuYnV5ZXJMaXN0Lm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICAgIHZhbHVlOiBvcHRpb24uayxcclxuICAgICAgICAgIGxhYmVsOiBvcHRpb24udlxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldENpdHkoY291bnJ5dElkKSB7XHJcbiAgICBpZiAoY291bnJ5dElkID09IHVuZGVmaW5lZCB8fCBjb3Vucnl0SWQgPT0gJycpIHJldHVyblxyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtJ107IFxyXG4gICAgcmVxT2JqWydjb3VudHJ5SWRuJ10gPSBjb3Vucnl0SWQ7XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnZ2V0Q2l0eUJhc2VkT25Db3VudHJ5JztcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnY29udGFjdC9sb2FkQ29udGFjdCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLmNpdHlMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5DaXR5ID0gJyc7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuY2l0eUxpc3QgPSByZXNwb25zZS5jaXR5TGlzdDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KGZvcm1WYWwsIHN1YkJ0bikge1xyXG4gICAgXHJcbiAgICB2YXIgdCA9IE9iamVjdC5rZXlzKGZvcm1WYWwuZm9ybS5jb250cm9scykuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtVmFsLmZvcm0uZ2V0KGZpZWxkKTtcclxuICAgIH0pO1xyXG4gICAvLyB0aGlzLnNlYXJjaENvbnRhY3QoZm9ybVZhbC52YWx1ZSwgc3ViQnRuKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaENvbnRhY3QoKSB7XHJcbiAgICBkZWJ1Z2dlclxyXG4gICAgLy9jb25zb2xlLmxvZyhmcm1GbGQpO1xyXG4gICAgLy8gXCJmb3JtTm1lXCI6XCJjb250YWN0U2VhcmNoRm9ybVwiLFxyXG4gICAgLy8gXCJ0YWJsZU5hbWVWYXJcIjpcIm5tZV9tI25tZV9tI25tZV9tI2J1eWVyX3Rlcm1zI2J1eWVyX3Rlcm1zXCIsXHJcbiAgICAvLyBcInRhYmxlRmllbGRWYXJcIjpcImVtcF9pZG4jbm1lX2lkbiN0eXAjY3VycmVuY3lfaWRuI3Rlcm1zX2lkblwiLFxyXG4gICAgLy8gXCJ0eXBlVmFyXCI6XCJuI24jbiNuI25cIixcclxuICAgIC8vIFwiYXR0clZhclwiOlwiZW1wX2lkbiNubWVfaWRuI3R5cCNjdXJyZW5jeV9pZG4jdGVybXNfaWRuXCIsXHJcbiAgICAvLyBcInZhbHVlc1ZhclwiOlwiMjc1ODgjMjgxNzMjYnV5ZXIjMjA2IzI0NlwiLFxyXG4gICAgLy8gXCJkYXRhVHlwZVZhclwiOlwibiNuI2MjbiNuXCJcclxuXHJcbiAgICAvLyoqKioqZm9yIHVzZXJuYW1lKioqKioqKiogLy8vXHJcbiAgICAvLyBcInRhYmxlTmFtZVZhclwiOlwiYXBwbF91c2VyXCIsXHJcbiAgICAvLyAgXCJ0YWJsZUZpZWxkVmFyXCI6XCJ1c2VybmFtZVwiLFxyXG4gICAgLy8gIFwidHlwZVZhclwiOlwiblwiLFxyXG4gICAgLy8gIFwiYXR0clZhclwiOlwidXNlcm5hbWVcIixcclxuICAgIC8vICBcInZhbHVlc1ZhclwiOlwibmlsYW13ZWJcIixcclxuICAgIC8vICBcImRhdGFUeXBlVmFyXCI6XCJjXCJcclxuXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuXHJcbiAgICBsZXQgdGFibGVOYW1lVmFyID0gJyc7XHJcbiAgICBsZXQgdGFibGVGaWVsZFZhciA9ICcnO1xyXG4gICAgbGV0IHR5cGVWYXIgPSAnJztcclxuICAgIGxldCBhdHRyVmFyID0gJyc7XHJcbiAgICBsZXQgdmFsdWVzVmFyID0gJyc7XHJcbiAgICBsZXQgZGF0YVR5cGVWYXIgPSAnJztcclxuICAgIGlmICh0aGlzLnVzZXJOYW1lICE9IG51bGwgJiYgdGhpcy51c2VyTmFtZSAhPSBcIlwiICYmIHRoaXMudXNlck5hbWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRhYmxlTmFtZVZhciArPSAnYXBwbF91c2VyJyArICcjJztcclxuICAgICAgdGFibGVGaWVsZFZhciArPSAndXNlcm5hbWUnICsgJyMnO1xyXG4gICAgICB0eXBlVmFyICs9ICduJyArICcjJztcclxuICAgICAgYXR0clZhciArPSAndXNlcm5hbWUnICsgJyMnO1xyXG4gICAgICB2YWx1ZXNWYXIgKz0gdGhpcy51c2VyTmFtZSArICcjJztcclxuICAgICAgZGF0YVR5cGVWYXIgKz0gJ2MnICsgJyMnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbnRhY3RUeXBlICE9IG51bGwgJiYgdGhpcy5jb250YWN0VHlwZSAhPSBcIlwiICYmIHRoaXMuY29udGFjdFR5cGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRhYmxlTmFtZVZhciArPSAnbm1lX20nICsgJyMnO1xyXG4gICAgICB0YWJsZUZpZWxkVmFyICs9ICd0eXAnICsgJyMnO1xyXG4gICAgICB0eXBlVmFyICs9ICduJyArICcjJztcclxuICAgICAgYXR0clZhciArPSAndHlwJyArICcjJztcclxuICAgICAgdmFsdWVzVmFyICs9IHRoaXMuY29udGFjdFR5cGUrICcjJztcclxuICAgICAgZGF0YVR5cGVWYXIgKz0gJ2MnICsgJyMnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmJ1eWVyICE9IG51bGwgJiYgdGhpcy5idXllciAhPSBcIlwiICYmIHRoaXMuYnV5ZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRhYmxlTmFtZVZhciArPSAnbm1lX20nICsgJyMnO1xyXG4gICAgICB0YWJsZUZpZWxkVmFyICs9ICdubWVfaWRuJyArICcjJztcclxuICAgICAgdHlwZVZhciArPSAnbicgKyAnIyc7XHJcbiAgICAgIGF0dHJWYXIgKz0gJ25tZV9pZG4nICsgJyMnO1xyXG4gICAgICB2YWx1ZXNWYXIgKz0gdGhpcy5idXllciArICcjJztcclxuICAgICAgZGF0YVR5cGVWYXIgKz0gJ24nICsgJyMnO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW1wSWQgIT0gbnVsbCAmJiB0aGlzLmVtcElkICE9IFwiXCIgJiYgdGhpcy5lbXBJZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGFibGVOYW1lVmFyICs9ICdubWVfbScgKyAnIyc7XHJcbiAgICAgIHRhYmxlRmllbGRWYXIgKz0gJ2VtcF9pZG4nICsgJyMnO1xyXG4gICAgICB0eXBlVmFyICs9ICduJyArICcjJztcclxuICAgICAgYXR0clZhciArPSAnZW1wX2lkbicgKyAnIyc7XHJcbiAgICAgIHZhbHVlc1ZhciArPSB0aGlzLmVtcElkICsgJyMnO1xyXG4gICAgICBkYXRhVHlwZVZhciArPSAnbicgKyAnIyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuVGVybXMgIT0gbnVsbCAmJiB0aGlzLlRlcm1zICE9IFwiXCIgJiYgdGhpcy5UZXJtcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGFibGVOYW1lVmFyICs9ICdidXllcl90ZXJtcycgKyAnIyc7XHJcbiAgICAgIHRhYmxlRmllbGRWYXIgKz0gJ3Rlcm1zX2lkbicgKyAnIyc7XHJcbiAgICAgIHR5cGVWYXIgKz0gJ24nICsgJyMnO1xyXG4gICAgICBhdHRyVmFyICs9ICd0ZXJtc19pZG4nICsgJyMnO1xyXG4gICAgICB2YWx1ZXNWYXIgKz0gdGhpcy5UZXJtcyArICcjJztcclxuICAgICAgZGF0YVR5cGVWYXIgKz0gJ24nICsgJyMnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmN1cnJlbmN5ICE9IG51bGwgJiYgdGhpcy5jdXJyZW5jeSAhPSBcIlwiICYmIHRoaXMuY3VycmVuY3kgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRhYmxlTmFtZVZhciArPSAnYnV5ZXJfdGVybXMnICsgJyMnO1xyXG4gICAgICB0YWJsZUZpZWxkVmFyICs9ICdjdXJyZW5jeV9pZG4nICsgJyMnO1xyXG4gICAgICB0eXBlVmFyICs9ICduJyArICcjJztcclxuICAgICAgYXR0clZhciArPSAnY3VycmVuY3lfaWRuJyArICcjJztcclxuICAgICAgdmFsdWVzVmFyICs9IHRoaXMuY3VycmVuY3kgKyAnIyc7XHJcbiAgICAgIGRhdGFUeXBlVmFyICs9ICduJyArICcjJztcclxuICAgIH1cclxuXHJcbiAgIFxyXG5cclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybSddOyBcclxuICAgIHJlcU9ialsndGFibGVOYW1lVmFyJ10gPSB0YWJsZU5hbWVWYXIuc2xpY2UoMCwgLTEpOy8vJ25tZV9tJztcclxuICAgIHJlcU9ialsndGFibGVGaWVsZFZhciddID0gdGFibGVGaWVsZFZhci5zbGljZSgwLCAtMSk7Ly8ndHlwJztcclxuICAgIHJlcU9ialsndHlwZVZhciddID0gdHlwZVZhci5zbGljZSgwLCAtMSk7Ly8nbic7XHJcbiAgICByZXFPYmpbJ2F0dHJWYXInXSA9IGF0dHJWYXIuc2xpY2UoMCwgLTEpOy8vJ3R5cCc7XHJcbiAgICByZXFPYmpbJ3ZhbHVlc1ZhciddID0gdmFsdWVzVmFyLnNsaWNlKDAsIC0xKTsgLy9jb250YWN0VHlwZS5wcmludC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmVxT2JqWydkYXRhVHlwZVZhciddID0gZGF0YVR5cGVWYXIuc2xpY2UoMCwgLTEpOy8vJ2MnO1xyXG4gICAgaWYgKHRoaXMubmFtZUlkbkxpc3QgIT0gXCJcIiAmJiB0aGlzLm5hbWVJZG5MaXN0ICE9IHVuZGVmaW5lZCAmJiB0aGlzLm5hbWVJZG5MaXN0ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uYW1lSWRuTGlzdD10aGlzLm5hbWVJZG5MaXN0LnRyaW0oKTtcclxuICAgICAgbGV0IHNwYWNlVG9jb21tYSA9IHRoaXMubmFtZUlkbkxpc3QucmVwbGFjZSgvWyAsXSsvZywgXCIsXCIpO1xyXG4gICAgICBsZXQgbmV3TGluZVRvQ29tbWEgPSBzcGFjZVRvY29tbWEucmVwbGFjZSgvXFxuL2csIFwiLFwiKTtcclxuICAgICAgcmVxT2JqWydubWVJZG5MaXN0J109IG5ld0xpbmVUb0NvbW1hLnNwbGl0KCcsJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnc2VhcmNoQ29udGFjdCc7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIFxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdjb250YWN0L2xvYWRDb250YWN0JykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRhdGFIZWFkZXIgPSByZXNwb25zZS5kYXRhSGVhZGVyO1xyXG4gICAgICAgIHRoaXMuZGF0YUxpc3QgPSByZXNwb25zZS5kYXRhTGlzdDtcclxuICAgICAgICB0aGlzLmRhdGFIZWFkZXJQcmludCA9IHJlc3BvbnNlLmRhdGFIZWFkZXJQcmludDtcclxuICAgICAgICB0aGlzLnBhZ2VEZWZpbmF0aW9uID0gcmVzcG9uc2UucGFnZURlZmluYXRpb247XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0bT1bXTtcclxuICAgICAgICB0aGlzLm5hbWVJZG5MaXN0PVwiXCI7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3cmFwXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IFwidHJhbnNsYXRlKDAsXCIgKyB0aGlzLnNjcm9sbFRvcCArIFwicHgpXCI7XHJcbiAgICAgICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IoXCJ0aGVhZFwiKS5zdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2xhdGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVzZXJBY3Rpb24odWEsIGMsIGEpIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAodWEgJiYgYy50cmltKCkgPT0gJ3N1YmZvcm0nKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFthLmxvdl9xcnkudHJpbSgpLCBhLmNvbHVtbl9rZXksIHVhLm5tZV9pZG5dKTtcclxuICAgIH1cclxuICB9XHJcbiAgdG9vbGFjdGlvbnModGFiKXtcclxuICBcclxuICAgICAgY29uc29sZS5sb2coXCJwcm9jZXNzXCIsIHByb2Nlc3MpO1xyXG4gICAgICBzd2l0Y2ggKHRhYi5mb3JtX2ZpZWxkKSB7XHJcblxyXG4gICAgICAgIGNhc2UgXCJhZGRub3RpZmljYXRpb25cIjoge1xyXG4gICAgICAgICAgdGhpcy5Ob3RpZmljYXRpb25Qb3B1cCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBkZWZhdWx0OiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkludmFsaWQgY2hvaWNlXCIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBcclxuICBcclxuICB9XHJcblxyXG4gIE5vdGlmaWNhdGlvblBvcHVwKCl7XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkSXRtLmxlbmd0aD4wKXtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25Gb3JtcmVzZXQoKTtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybSddO1xyXG4gICAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnbG9hZE5vdGlmaWNhdGlvbic7XHJcbiAgICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdjb250YWN0L25vdGlmaWNhdGlvbicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdHx8e307XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbk1kbExpc3QgPSByZXN1bHQubm90aWZpY2F0aW9uTWRsTGlzdHx8W107XHJcbiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuTm90aWZpY2F0aW9uJykuY2xpY2soKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIFxyXG4gICAgIH1lbHNle1xyXG4gICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJQbGVhc2Ugc2VsZWN0IGNvbnRhY3RzXCIpO1xyXG4gXHJcbiAgICAgfVxyXG4gIH1cclxuXHJcbiAgQWRkTm90aWZpY2F0aW9uKCl7XHJcbiAgICBpZiAodGhpcy5teU5vdGlmaWNhdGlvbi52YWxpZCkge1xyXG4gICAgbGV0IGZvcm1zVmFsID0gdGhpcy5teU5vdGlmaWNhdGlvbi52YWx1ZTtcclxuICAgIGxldCBidXllckxpc3Q9W107XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRtLmZvckVhY2goZWxlbWVudD0+e1xyXG4gICAgICBsZXQgbm1lX2lkbiA9IGVsZW1lbnQubm1lX2lkbnx8W107XHJcbiAgICAgIGJ1eWVyTGlzdC5wdXNoKG5tZV9pZG4pO1xyXG4gICAgfSlcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBsZXQgZGF0ZVN0cmluZyA9IGZvcm1zVmFsWydsb2dkYXRlJ10rJyAnK2Zvcm1zVmFsWydoaCddKyc6Jytmb3Jtc1ZhbFsnbW0nXSsnOjAwJztcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmcm0nXTtcclxuICAgIHJlcU9ialsnbG9nX3RzJ10gPWRhdGVTdHJpbmc7XHJcbiAgICByZXFPYmpbJ3B1Yl9wdnQnXSA9IGZvcm1zVmFsWydwdWJfcHZ0J107XHJcbiAgICByZXFPYmpbJ21kbCddID0gZm9ybXNWYWxbJ21kbCddO1xyXG4gICAgcmVxT2JqWydzcmMnXSA9IGZvcm1zVmFsWydzcmMnXTtcclxuICAgIHJlcU9ialsnbXNnJ10gPSBmb3Jtc1ZhbFsnbWFzc2FnZSddO1xyXG4gICAgcmVxT2JqWydzdGF0dXMnXSA9IGZvcm1zVmFsWydzdGF0dXMnXTtcclxuICAgIHJlcU9ialsnYnV5ZXJMaXN0J10gPSBidXllckxpc3Q7XHJcbiAgICByZXFPYmpbJ2FjdGlvbiddID0gJ2FkZCcgO1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnc2F2ZU5vdGlmaWNhdGlvbic7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3Qvbm90aWZpY2F0aW9uJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHR8fHt9O1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uRm9ybXJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0bT1bXTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLm5vdGlmaWNsb3NlYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiTm90aWZpY2F0aW9uIGFkZGVkIHN1Y2Nlc3NmdWxseS5cIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfWVsc2V7XHJcbiAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlBsZWFzZSBzcGVjaWZ5IGFsbCByZXF1aXJlZCBmaWVsZFwiKTtcclxuXHJcbiAgfVxyXG5cclxuICB9XHJcblxyXG4gIGV4cG9ydEV4Y2VsKCkge1xyXG4gICAgdGhpcy5jbW5jcy5DU1ZDb252ZXJ0b3IodGhpcy5kYXRhTGlzdCwgJ0NvbnRhY3RfU2VhcmNoXycsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgTWFpbFBvcHVwKCl7XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkSXRtLmxlbmd0aD4wKXtcclxuICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuc2VuZE1haWwnKS5jbGljaygpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiUGxlYXNlIHNlbGVjdCBjb250YWN0c1wiKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBVcGRhdGVTYWxlRXhlY3V0aXZlUG9wKCl7XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkSXRtLmxlbmd0aD4wKXtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5zYWxlZXgnKS5jbGljaygpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiUGxlYXNlIHNlbGVjdCBjb250YWN0c1wiKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBVcGRhdGVTYWxlRXhlY3V0aXZlKCl7XHJcbiAgICBsZXQgbm1lSWRuTGlzdD1bXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdG0uZm9yRWFjaChlbGVtZW50PT57XHJcbiAgICAgIGxldCBubWVfaWRuID0gZWxlbWVudC5ubWVfaWRufHxbXTtcclxuICAgICAgICBubWVJZG5MaXN0LnB1c2gobm1lX2lkbik7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5zYWxlRXhjdXRlPXRoaXMuc2FsZUV4Y3V0ZXx8XCJcIjtcclxuICAgIGlmKHRoaXMuc2FsZUV4Y3V0ZSE9XCJcIil7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybSddOyBcclxuICAgIHJlcU9ialsnbm1lSWRuTGlzdCddPW5tZUlkbkxpc3Q7XHJcbiAgICByZXFPYmpbJ2VtcF9pZG4nXT10aGlzLnNhbGVFeGN1dGU7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdhc3NpZ25TYWxlRXhlY3V0aXZlJztcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnY29udGFjdC9sb2FkQ29udGFjdCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMuc2FsZUV4Y3V0ZT1cIlwiO1xyXG4gICAgICAgIHRoaXMuc2xleGNsb3NlYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIlVwZGF0ZSBkb25lIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfWVsc2V7XHJcbiAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlBsZWFzZSBTcGVjaWZ5IFNhbGUgRXhlY3V0aXZlXCIpO1xyXG5cclxuICB9XHJcbiAgXHJcbiAgfVxyXG5cclxuICBTZW5kTWFpbCgpe1xyXG4gICAgbGV0IGZvcm1zVmFsID0gdGhpcy5teUZvcm1tbS52YWx1ZTtcclxuZGVidWdnZXJcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGxldCBtYXNzYWdlPVwiXCI7XHJcbiAgICBsZXQgaHRtbGNvbnRlbnQgPWZvcm1zVmFsWydodG1sY29udGVudCddfHwnJztcclxuICAgIGxldCBzdWJqZWN0PWZvcm1zVmFsWydzdWJqZWN0J118fCcnO1xyXG4gICAgbGV0IHNlbmRlck5hbWU9Zm9ybXNWYWxbJ3NlbmRlck5hbWUnXXx8Jyc7XHJcbiAgICBpZih0aGlzLnNlbGVjdGVkSXRtLmxlbmd0aD09MCl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgbWFzc2FnZT1cIlBsZWFzZSBzZWxlY3QgY29udGFjdHMgZm9yIG1haWxcIjtcclxuXHJcbiAgICB9XHJcbiAgICBpZihzdWJqZWN0PT0nJyl7XHJcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgbWFzc2FnZT1cIlBsZWFzZSBTcGVjaWZ5IFN1YmplY3RcIjtcclxuXHJcbiAgICB9XHJcbiAgICBpZihodG1sY29udGVudD09Jycpe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIG1hc3NhZ2U9XCJQbGVhc2UgU3BlY2lmeSBNYWlsIEJvZHlcIjtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYoc2VuZGVyTmFtZT09Jycpe1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIG1hc3NhZ2U9XCJQbGVhc2UgU3BlY2lmeSBTZW5kZXIgTmFtZVwiO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBpZihpc1ZhbGlkKXtcclxuICAgIGxldCBDQ2xzdCA9Zm9ybXNWYWxbJ0NDJ10gfHwnJztcclxuICAgIGxldCBCQ0Nsc3QgPSBmb3Jtc1ZhbFsnQkNDJ118fCcnO1xyXG4gICAgbGV0IGNjPVtdO1xyXG4gICAgbGV0IGJjYz1bXTtcclxuXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgXHJcblxyXG4gICAgaWYoQ0Nsc3QhPScnKXtcclxuICAgbGV0IHNwYWNlVG9jb21tYSA9IENDbHN0LnJlcGxhY2UoL1sgLF0rL2csIFwiLFwiKTtcclxuICAgICBsZXQgbmV3TGluZVRvQ29tbWEgPSBzcGFjZVRvY29tbWEucmVwbGFjZSgvXFxuL2csIFwiLFwiKTtcclxuICAgICBjYyA9IG5ld0xpbmVUb0NvbW1hLnNwbGl0KCcsJyk7XHJcbiAgICB9XHJcbiAgICBpZihCQ0Nsc3QhPScnKXtcclxuICAgbGV0IHNwYWNlVG9jb21tYSA9IEJDQ2xzdC5yZXBsYWNlKC9bICxdKy9nLCBcIixcIik7XHJcbiAgICBsZXQgbmV3TGluZVRvQ29tbWEgPSBzcGFjZVRvY29tbWEucmVwbGFjZSgvXFxuL2csIFwiLFwiKTtcclxuICAgICBiY2MgPSBuZXdMaW5lVG9Db21tYS5zcGxpdCgnLCcpO1xyXG4gICAgfVxyXG4gICAgbGV0IGVtYWlsRGV0YWlscz1bXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdG0uZm9yRWFjaChlbGVtZW50PT57XHJcbiAgICAgIGxldCBlbWFpbElkbnMgPSBlbGVtZW50LmVtYWlsSWRuc3x8W107XHJcbiAgICAgIGxldCBubWVfaWRuPWVsZW1lbnQubm1lX2lkbjtcclxuICAgICAgbGV0IGVtcF9pZG49ZWxlbWVudC5lbXBfaWRuO1xyXG4gICAgICBpZihlbWFpbElkbnMubGVuZ3RoPjApe1xyXG4gICAgICBlbWFpbERldGFpbHMucHVzaCh7XHJcbiAgICAgICAgXCJlbWFpbHNcIjplbWFpbElkbnMsXHJcbiAgICAgICAgXCJubWVfaWRuXCI6bm1lX2lkbixcclxuICAgICAgICBcImVtcF9pZG5cIjplbXBfaWRuXHJcbiAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBkZWJ1Z2dlclxyXG4gICBcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gXCJDb250YWN0TWFzc01haWxcIjtcclxuICAgIHJlcU9ialsnc2VuZGVybmFtZSddPXNlbmRlck5hbWU7XHJcbiAgICByZXFPYmpbJ3N1YmplY3QnXT1zdWJqZWN0O1xyXG4gICAgcmVxT2JqWydtYWlsZGV0YWlscyddPWVtYWlsRGV0YWlscztcclxuICAgIHJlcU9ialsnY2MnXT1jYztcclxuICAgIHJlcU9ialsnYmNjJ109YmNjO1xyXG4gICAgcmVxT2JqWydtYWlsQm9keSddPWh0bWxjb250ZW50O1xyXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVxT2JqKSk7XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnc2VuZEJ1bGtNYWlsJztcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnY29udGFjdC9sb2FkQ29udGFjdCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMubXlGb3JtbW0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIHNlbmRlck5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBzdWJqZWN0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgaHRtbGNvbnRlbnQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgIENDOiBcIlwiLFxyXG4gICAgICAgICAgQkNDOlwiXCJcclxuICAgICAgIH0pO1xyXG4gICAgICB0aGlzLm1haWxjbG9zZWJ0bi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICB9ZWxzZXtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgdGhpcy50b2FzdHIuZXJyb3IobWFzc2FnZSk7XHJcbiAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBnZXQgbm90aWZpY2F0aW9uQ29udHJvbCgpIHtcclxuICAgIHJldHVybiB0aGlzLm15Tm90aWZpY2F0aW9uLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Um93KG5tZV9pZG4pIHtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYl8nK25tZV9pZG4pLmNsaWNrKCk7XHJcbiAgfVxyXG4gIHNlbGVjdEFsbChlKSB7XHJcbiAgICAgIHRoaXMuZGF0YUxpc3QuZm9yRWFjaChlbGU9PntcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIHRoaXMuc2VsZWN0Um93KGVsZS5ubWVfaWRuKTtcclxuICAgICAgfSlcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRPYmogPSBbXTtcclxuICBzZWxlY3RlZEl0bSA9IFtdO1xyXG4gIHNlbGVjdGVkQ3J0V2VpZ2h0ID0gMDtcclxuICBjaGVja2VkUm93KGRhdGEsIG5tZV9pZG4pIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAoKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYl8nK25tZV9pZG4pIGFzIGFueSkuY2hlY2tlZCA9PSBmYWxzZSkge1xyXG4gICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYl8nK25tZV9pZG4pOy8vcGt0SWRcclxuICAgICAgZWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInNlbGVjdGVkUm93XCIpO1xyXG4gICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFwibm90c2VsZWN0ZWRSb3dcIik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdG0uZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5ubWVfaWRuID09IG5tZV9pZG4pIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdG0uc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2JfJytubWVfaWRuKTsvL3BrdElkXHJcbiAgICAgIGVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJub3RzZWxlY3RlZFJvd1wiKTtcclxuICAgICAgZWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkUm93XCIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRtLnB1c2goZGF0YSk7XHJcbiAgICB9XHJcbmNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRJdG0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5lZGl0b3JDb25maWcgPSB0aGlzLmNtbmNzLmVkaXRvckNvbmZpZztcclxuXHJcbiAgICBsZXQgbWRsayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21kbEtleScpKTtcclxuICAgIHRoaXMuY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuY1VybC5zcGxpdCgnLycpWzFdKTtcclxuICAgIHRoaXMuaGVhZGVyID0ge1xyXG4gICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdtb2R1bGVrZXknOiBtZGxrW3RoaXMuY1VybC5zcGxpdCgnLycpWzFdXSxcclxuICAgICAgJ2xvZ2luaWQnOiBDb29raWUuZ2V0KCdfbG9naWQnKSxcclxuICAgICAgJ3NvdXJjZSc6ICdxcydcclxuICAgIH07XHJcbiAgIFxyXG4gICAgdGhpcy5teUZvcm1tbSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzZW5kZXJOYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBzdWJqZWN0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBodG1sY29udGVudDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBDQzogXCJcIixcclxuICAgICAgQkNDOlwiXCJcclxuICB9KTtcclxuICB0aGlzLm1tdGltZUxpc3Q9W107XHJcbiAgZm9yKHZhciBpPTA7aTwyNDtpKyspe1xyXG4gICAgaWYoaTwxMClcclxuICAgIHRoaXMubW10aW1lTGlzdC5wdXNoKFwiMFwiK2kpO1xyXG4gICAgZWxzZVxyXG4gICAgdGhpcy5tbXRpbWVMaXN0LnB1c2goXCJcIitpKTtcclxuICB9XHJcblxyXG4gIHRoaXMuaGh0aW1lTGlzdD1bXTtcclxuICBmb3IodmFyIGk9MDtpPDYwO2krKyl7XHJcbiAgICBpZihpPDEwKVxyXG4gICAgdGhpcy5oaHRpbWVMaXN0LnB1c2goXCIwXCIraSk7XHJcbiAgICBlbHNlXHJcbiAgICB0aGlzLmhodGltZUxpc3QucHVzaChcIlwiK2kpO1xyXG4gIH1cclxuXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkZvcm1yZXNldCgpO1xyXG4gICAgdGhpcy5sb2FkUHJvY2VzcygpO1xyXG4gIH1cclxuICBub3RpZmljYXRpb25Gb3JtcmVzZXQoKXtcclxuICAgIHRoaXMubXlOb3RpZmljYXRpb24gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgbG9nZGF0ZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgcHViX3B2dDogXCJQVlRcIixcclxuICAgICAgbWRsOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBzcmM6XCJlelwiLFxyXG4gICAgICBoaDpcIjAwXCIsXHJcbiAgICAgIG1tOlwiMDBcIixcclxuICAgICAgbWFzc2FnZTpbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBzdGF0dXM6XCJQXCJcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtdFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0IGNwXCI+IEJhY2s8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7IENvbnRhY3QgU2VhcmNoJm5ic3A7Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmLTEyXCI+KHt7Y0R0IHwgZGF0ZTonbWVkaXVtJ319KTwvc3Bhbj5cclxuICAgICAgPC9oMz5cclxuICAgICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHRcIiAqbmdJZj1cInRybnNfYnV0dG9ucy5sZW5ndGg+MFwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGROZXdDb250YWN0KHRybnNfYnV0dG9uc1swXSlcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IzNjNTk5ODtib3JkZXItY29sb3I6ICMzYzU5OTg7XCI+QWRkIE5ldyBDb250YWN0PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PiBcclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50LWZyYW1lXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZmZmO2hlaWdodDogY2FsYygxMDB2aCAtIDEwMHB4KTtcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbm5lckRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW46IDEwcHggMDtcIj5cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCB3LTEwMFwiIG5hbWU9XCJjb250YWN0VHlwZVwiIFsobmdNb2RlbCldPVwiY29udGFjdFR5cGVcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBDb250YWN0VHlwZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIGNvbnRhY3RUeXBlTGlzdFwiIFtuZ1ZhbHVlXT1cInR5cGUudmFsXCI+e3t0eXBlLnByaW50fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IFtpdGVtc109XCJidXllckxpc3RcIiBbc2VhcmNoYWJsZV09XCJmYWxzZVwiIG5hbWU9XCJidXllclN1Z2dcIiBbKG5nTW9kZWwpXT1cImJ1eWVyU3VnZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwidlwiIGJpbmRWYWx1ZT1cImtcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBCdXllclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1oZWFkZXItdG1wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwid2lkdGg6IDEwMCU7IGxpbmUtaGVpZ2h0OiAyNHB4XCIgI2J1eWVyIHR5cGU9XCJ0ZXh0XCIgKGtleXVwKT1cImxvYWRCdXllcihidXllci52YWx1ZSk7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0ZXN0dFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IHN0eWxlPVwiei1pbmRleDogNTtcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBCdXllclwiIFtvcHRpb25zXT1cImJ1eWVyTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJidXllclwiIG5hbWU9XCJidXllclwiIChmaWx0ZXJJbnB1dENoYW5nZWQpPVwibG9hZEJ1eWVyKCRldmVudClcIiBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZW1wbG95ZWVcIiBuYW1lPVwiZW1wSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNhbGVFeGVjdXRpdmVMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtcElkXCIgW2FsbG93Q2xlYXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXNlbGVjdCBbaXRlbXNdPVwic2FsZUV4ZWN1dGl2ZUxpc3RcIiBbKG5nTW9kZWwpXT1cImVtcElkXCIgYmluZExhYmVsPVwidlwiIG5hbWU9XCJlbXBJZFwiIGJpbmRWYWx1ZT1cImtcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGVtcGxveWVlXCIgI2J1eWVyRmlsPVwibmdNb2RlbFwiIHJlcXVpcmVkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1oZWFkZXItdG1wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIHctMTAwXCIgbmFtZT1cIlRlcm1zXCIgWyhuZ01vZGVsKV09XCJUZXJtc1wiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IFRlcm1zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHRlcm0gb2YgdGVybXNMaXN0XCIgdmFsdWU9XCJ7e3Rlcm0udGVybXNfaWRufX1cIj57e3Rlcm0ucHJpbnR9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy0xMDBcIiBuYW1lPVwiY3VycmVuY3lcIiBbKG5nTW9kZWwpXT1cImN1cnJlbmN5XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgY3VycmVuY3k8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY3VycmVuY3kgb2YgY3VycmVuY3lMaXN0XCIgdmFsdWU9XCJ7e2N1cnJlbmN5LmN1cnJlbmN5X2lkbn19XCI+e3tjdXJyZW5jeS5wcmludH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIHctMTAwXCIgcGxhY2Vob2xkZXI9XCJVc2VyIE5hbWVcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJ1c2VyTmFtZVwiIFsobmdNb2RlbCldPVwidXNlck5hbWVcIiAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmU7XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIk5hbWVJZG4gTGlzdFwiIFxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5hbWVJZG5MaXN0XCIgIGlkPVwibmFtZUlkbkxpc3RcIiAgbmFtZT1cIm5hbWVJZG5MaXN0XCIgY29scz1cIjM4XCIgcm93cz1cIjNcIiAgPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgdy0xMDBcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInNhdmVidG5cIiAoY2xpY2spPVwic2VhcmNoQ29udGFjdCgpXCIgdHlwZT1cImJ1dHRvblwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojM2M1OTk4O2JvcmRlci1jb2xvcjogIzNjNTk5OFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHB1bGwtbGVmdFwiPnN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwic2VhcmNoQ29udGFjdChjb250YWN0VHlwZSxidXllclN1Z2csZW1wSWQsVGVybXMsY3VycmVuY3ksdXNlck5hbWUpXCIgLS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOSBjdXN0Q2xzXCI+XHJcbiAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJkYXRhTGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMSBwdWxsLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cInRvZ3RzbCgpO1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojM2M1OTk4O2JvcmRlci1jb2xvcjogIzNjNTk5ODttYXJnaW4tdG9wOiA3cHg7bWFyZ2luLWJvdHRvbTogN3B4XCI+dG9vbHM8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0bHNkcnBcIiAqbmdJZj1cInRzbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ0bHN1bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3thY3Rpb24/LmZvcm1fZmllbGRfaWNvbn19IHRzbGljb1wiPjwvc3Bhbj57e2FjdGlvbj8uZm9ybV9maWVsZF90aXRsZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojM2M1OTk4O2JvcmRlci1jb2xvcjogIzNjNTk5ODttYXJnaW4tdG9wOiA3cHg7bWFyZ2luLWJvdHRvbTogN3B4XCJcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCI+dG9vbHNcclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmV0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiICAoY2xpY2spPVwidG9vbGFjdGlvbnModGFiKTtcIiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7dGFiPy5mb3JtX2ZpZWxkX2ljb259fSB0c2xpY29cIj48L3NwYW4+e3t0YWI/LmZvcm1fZmllbGRfdGl0bGV9fTwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cInBhZGRpbmc6IDEwcHg7Y3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJleHBvcnRFeGNlbCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICBFeGNlbDwvbGk+XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O2N1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwiVXBkYXRlU2FsZUV4ZWN1dGl2ZVBvcCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFVwZGF0ZSBTYWxlcyBFeGVjdXRpdmVcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHB1bGwtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIHN0eWxlPVwicGFkZGluZy10b3A6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJleGFtcGxlSW5wdXROYW1lMlwiIHN0eWxlPVwicGFkZGluZy10b3A6IDVweDtcIj5TZWFyY2ggJm5ic3A7Jm5ic3A7PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJleGFtcGxlSW5wdXROYW1lMlwiIG5hbWU9XCJzY2h0eHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIiBzdHlsZT1cImhlaWdodDogY2FsYygxMDB2aCAtIDEwMHB4KTtcIiBpZD1cIndyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImRpc3BsYXlUYWJsZVwiICpuZ0lmPVwiZGF0YUxpc3Q/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInBvc3JlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRoPlNSIE5vPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCJzZWxlY3RBbGwoJGV2ZW50KTtcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGhkciBvZiBkYXRhSGVhZGVyXCI+e3tkYXRhSGVhZGVyUHJpbnRbaGRyXX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aD5BZGQuRW1haWxzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICA8dGJvZHkgPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkYXRhTGlzdCB8IENvbnRhY3RUYWJsZVNyY1BpcGU6c2VhcmNoRjsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSB8IHNlYXJjaFBpcGU6c2VhcmNoRiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCAoY2xpY2spPVwic2VsZWN0Um93KGRhdGEubm1lX2lkbilcIj57e2kgKyAxfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaGlkZGVuXT1cInRydWVcIiBpZD1cImNiX3t7ZGF0YS5ubWVfaWRufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGVja2VkUm93KGRhdGEsZGF0YS5ubWVfaWRuKVwiIHZhbHVlPVwie3tkYXRhLm5tZV9pZG59fVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIChjbGljayk9XCJzZWxlY3RSb3coZGF0YS5ubWVfaWRuKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgY2xhc3M9XCJidG4gYnRuLWluZm8gZHJvcGRvd24tdG9nZ2xlXCI+QWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmV0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHBhZ2VEZWZpbmF0aW9uLmFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInVzZXJBY3Rpb24oZGF0YSxhY3Rpb24uZm9ybV9maWVsZF90eXAsYWN0aW9uKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjdGlvbi5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGhkciBvZiBkYXRhSGVhZGVyXCIgKGNsaWNrKT1cInNlbGVjdFJvdyhkYXRhLm5tZV9pZG4pXCI+e3tkYXRhW2hkcl19fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tkYXRhWydlbWFpbElkbnMnXX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImFjdGlvbkZvb3RlciBwdWxsLXJpZ2h0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwibW9kZWxTYWxlRXhcIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cIm1haWxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwidHJ1ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbWRcIiA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cIm1haWxNb2RhbEhlYWRcIj5VcGRhdGUgU2FsZSBFeGVjdXRpdmU8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+U2FsZSBFeGVjdXRpdmVcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNtICB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IHN0eWxlPVwiei1pbmRleDogNTtcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBCdXllclwiIFtvcHRpb25zXT1cIkVtcGxveWVlTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2FsZUV4Y3V0ZVwiIG5hbWU9XCJzYWxlRXhjdXRlXCIgKGZpbHRlcklucHV0Q2hhbmdlZCk9XCJsb2FkU2FsZUV4Y3V0aXZlKCRldmVudClcIiBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgIDwhLS0gPHA+IGRmZiB7e2h0bWxDb250ZW50fX08L3A+IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIlVwZGF0ZVNhbGVFeGVjdXRpdmUoKVwiICAgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj5VcGRhdGU8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNzbGV4Y2xvc2VidG4gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cIm1vZGVsTWFpbFwiIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwibWFpbE1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJ0cnVlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHN0eWxlPVwid2lkdGg6IDcwNXB4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgIFtmb3JtR3JvdXBdPVwibXlGb3JtbW1cIiAgIChuZ1N1Ym1pdCk9XCJTZW5kTWFpbCgpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwibWFpbE1vZGFsSGVhZFwiPlNlbmQgTWFpbDwvaDQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+U2VuZGVyIE5hbWVcclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zbSAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwb3NyZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJzZW5kZXJOYW1lXCIgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+U3ViamVjdFxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcG9zcmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwic3ViamVjdFwiICAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbFwiPkNDXHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwb3NyZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJDQ1wiIG5hbWU9XCJDQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5CQ0NcclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBvc3JlbFwiIGZvcm1Db250cm9sTmFtZT1cIkJDQ1wiIG5hbWU9XCJCQ0NcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YW5ndWxhci1lZGl0b3IgW3BsYWNlaG9sZGVyXT1cIidFbnRlciB0ZXh0IGhlcmUuLi4nXCIgW2NvbmZpZ109XCJjb25maWdcIiBmb3JtQ29udHJvbE5hbWU9XCJodG1sY29udGVudFwiPjwvYW5ndWxhci1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGVqcy1yaWNodGV4dGVkaXRvciBpZD0nZGVmYXVsdFJURScgWyh2YWx1ZSldPSd2YWx1ZScgPjwvZWpzLXJpY2h0ZXh0ZWRpdG9yPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGNrZWRpdG9yIFsobmdNb2RlbCldPVwidmFsdWVcIiA+PC9ja2VkaXRvcj4gLS0+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgPCEtLSA8cD4gZGZmIHt7aHRtbENvbnRlbnR9fTwvcD4gLS0+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCI+U2VuZDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNtYWlsY2xvc2VidG4gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cIm1vZGVsTm90aWZpY2F0aW9uXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwidHJ1ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiBzdHlsZT1cIndpZHRoOiA3MDVweFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiICBbZm9ybUdyb3VwXT1cIm15Tm90aWZpY2F0aW9uXCIgICAobmdTdWJtaXQpPVwiQWRkTm90aWZpY2F0aW9uKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPlxyXG4gICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJtYWlsTW9kYWxIZWFkXCI+QWRkIE5vdGlmaWNhdGlvbjwvaDQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+IDxzcGFuIHN0eWxlPVwiY29sb3I6cmVkXCI+Kjwvc3Bhbj4gRGF0ZVxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc20gIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibG9nZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25mb2N1cz1cIih0aGlzLnR5cGU9J2RhdGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25ibHVyPVwiKHRoaXMudHlwZT0ndGV4dCcpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJkZC9tbS95eXl5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub3RpZmljYXRpb25Db250cm9sLmxvZ2RhdGUuaW52YWxpZCAmJiAobm90aWZpY2F0aW9uQ29udHJvbC5sb2dkYXRlLmRpcnR5IHx8IG5vdGlmaWNhdGlvbkNvbnRyb2wubG9nZGF0ZS50b3VjaGVkKSAmJiBub3RpZmljYXRpb25Db250cm9sLmxvZ2RhdGUuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbFwiPiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZFwiPio8L3NwYW4+VGltZShISDpNTSlcclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIiBzdHlsZT1cInBhZGRpbmc6MnB4O21hcmdpbjowcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJoaFwiIHN0eWxlPVwicGFkZGluZzo1cHggNXB4XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbW10IG9mIG1tdGltZUxpc3RcIiBbbmdWYWx1ZV09XCJtbXRcIj57e21tdH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiIHN0eWxlPVwicGFkZGluZzoycHg7bWFyZ2luOjBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1tXCIgc3R5bGU9XCJwYWRkaW5nOjVweCA1cHhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBoaHQgb2YgaGh0aW1lTGlzdFwiIFtuZ1ZhbHVlXT1cImhodFwiPnt7aGh0fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+IDxzcGFuIHN0eWxlPVwiY29sb3I6cmVkXCI+Kjwvc3Bhbj5Nb2R1bGVcclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWRsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBub3RpZmljYXRlIG9mIG5vdGlmaWNhdGlvbk1kbExpc3RcIiBbbmdWYWx1ZV09XCJub3RpZmljYXRlLmtcIj57e25vdGlmaWNhdGVbJ3YnXX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm90aWZpY2F0aW9uQ29udHJvbC5tZGwuaW52YWxpZCAmJiAobm90aWZpY2F0aW9uQ29udHJvbC5tZGwuZGlydHkgfHwgbm90aWZpY2F0aW9uQ29udHJvbC5tZGwudG91Y2hlZCkgJiYgbm90aWZpY2F0aW9uQ29udHJvbC5tZGwuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTW9kdWxlIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbFwiPjxzcGFuIHN0eWxlPVwiY29sb3I6cmVkXCI+Kjwvc3Bhbj5NYXNzYWdlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGFuZ3VsYXItZWRpdG9yIFtwbGFjZWhvbGRlcl09XCJcIiBbY29uZmlnXT1cIm5vdGljb25maWdcIiBmb3JtQ29udHJvbE5hbWU9XCJtYXNzYWdlXCI+PC9hbmd1bGFyLWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm90aWZpY2F0aW9uQ29udHJvbC5tYXNzYWdlLmludmFsaWQgJiYgKG5vdGlmaWNhdGlvbkNvbnRyb2wubWFzc2FnZS5kaXJ0eSB8fCBub3RpZmljYXRpb25Db250cm9sLm1hc3NhZ2UudG91Y2hlZCkgJiYgbm90aWZpY2F0aW9uQ29udHJvbC5tYXNzYWdlLmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbWFzc2FnZSBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgIDwhLS0gPHA+IGRmZiB7e2h0bWxDb250ZW50fX08L3A+IC0tPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiPkFkZDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNub3RpZmljbG9zZWJ0biBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48YnV0dG9uIGlkPVwiYnRuTm90aWZpY2F0aW9uXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI21vZGVsTm90aWZpY2F0aW9uXCI+PC9idXR0b24+XHJcblxyXG5cclxuPGJ1dHRvbiBpZD1cImJ0bnNhbGVleFwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNtb2RlbFNhbGVFeFwiPjwvYnV0dG9uPlxyXG5cclxuPGJ1dHRvbiBpZD1cImJ0bnNlbmRNYWlsXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI21vZGVsTWFpbFwiPjwvYnV0dG9uPlxyXG4iXX0=