@colijnit/sharedcomponents 259.1.10 → 259.1.12

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.
@@ -1,35 +1,38 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
- import { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
3
  import { FormQuestionType } from '@colijnit/mainapi/build/enum/form-question.type';
4
4
  import { TableName } from '@colijnit/mainapi/build/enum/table-name.enum';
5
5
  import { Form } from '@colijnit/mainapi/build/model/form.bo';
6
6
  import { FormResponse } from '@colijnit/mainapi/build/model/form-response.bo';
7
7
  import { InputBoolean } from '../../../decorator/input-boolean.decorator';
8
8
  import { NULL_FORM_FULL_OBJECT } from '../../../model/util/forms-null-object';
9
- import { PromptService } from '@colijnit/corecomponents_v12';
10
9
  import { ArrayUtils } from '../../../utils/array-utils';
11
10
  import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/service/business-object-factory';
12
11
  import { FormUtils } from '../../../utils/form-utils';
13
12
  import { Icon } from '../../../enum/icon.enum';
14
13
  import { IconCacheService } from '../../../service/icon-cache.service';
14
+ import { UserFormMode } from '../../../enum/user-form-mode.enum';
15
15
  import { SharedConnectorService } from '../../../service/shared-connector.service';
16
+ import { PromptService } from '@colijnit/corecomponents_v12';
16
17
  export class FormBuilderUserFormComponent {
17
- constructor(_detectorRef, _promptService, _boFactory, _changeDetectorRef, _sharedConnectorService, iconCacheService) {
18
+ constructor(_detectorRef, _boFactory, _changeDetectorRef, _sharedConnectorService, _promptService, iconCacheService) {
18
19
  this._detectorRef = _detectorRef;
19
- this._promptService = _promptService;
20
20
  this._boFactory = _boFactory;
21
21
  this._changeDetectorRef = _changeDetectorRef;
22
22
  this._sharedConnectorService = _sharedConnectorService;
23
+ this._promptService = _promptService;
23
24
  this.iconCacheService = iconCacheService;
24
25
  this.formQuestionType = FormQuestionType;
25
26
  this.TableName = TableName;
26
27
  this.icons = Icon;
27
- this.showPopup = false;
28
+ this.mode = UserFormMode.Create;
28
29
  this.documents = [];
30
+ this.showPopup = false;
29
31
  this.readonly = false;
30
32
  this.enableQuestions = true;
31
33
  this.cancelForm = new EventEmitter();
32
34
  this.saveForm = new EventEmitter();
35
+ this.createNewFormResponse = new EventEmitter();
33
36
  this.cloneForm = NULL_FORM_FULL_OBJECT;
34
37
  }
35
38
  set form(form) {
@@ -65,19 +68,6 @@ export class FormBuilderUserFormComponent {
65
68
  this.gotoQuestion = undefined;
66
69
  }
67
70
  }
68
- // public async openFormWriteable(formId: number, formResponseId: number): Promise<void> {
69
- //
70
- // const isLockedSuccesfully: boolean = await this._formRepo.lockFormResponse(formResponseId);
71
- //
72
- // if (!isLockedSuccesfully) {
73
- // this._promptService.showNotification("MESSAGE_RESOURCE_BUSY");
74
- // } else {
75
- // this.form = await this._formRepo.getForm(formId);
76
- // this.userForm = await this._formRepo.getFormResponse(formResponseId);
77
- // this._prepareExistingForm();
78
- // this.show();
79
- // }
80
- // }
81
71
  onValid() {
82
72
  this.saveForm.next(this.formResponse);
83
73
  }
@@ -106,14 +96,6 @@ export class FormBuilderUserFormComponent {
106
96
  changeTime(formResponse, time) {
107
97
  formResponse.timeResponse = time;
108
98
  }
109
- close() {
110
- this.showPopup = false;
111
- this._detectorRef.detectChanges();
112
- }
113
- show() {
114
- this.showPopup = true;
115
- this._detectorRef.detectChanges();
116
- }
117
99
  handleDocumentDeleted(doc) {
118
100
  ArrayUtils.RemoveElement(doc, this.formResponse.documents);
119
101
  }
@@ -135,6 +117,12 @@ export class FormBuilderUserFormComponent {
135
117
  this.formResponse.table = this.table;
136
118
  this.formResponse.key = this.key;
137
119
  }
120
+ else {
121
+ this.mode = UserFormMode.Edit;
122
+ // const isLockedSuccesfully: boolean = await this._formRepo.lockFormResponse(formResponseId);
123
+ this._loadDocs();
124
+ this._prepareExistingForm();
125
+ }
138
126
  FormUtils.MergeResponseWithForm(this.cloneForm, this.formResponse);
139
127
  if (this.enableQuestions) {
140
128
  this._enableQuestions();
@@ -148,7 +136,6 @@ export class FormBuilderUserFormComponent {
148
136
  if (this.enableQuestions) {
149
137
  this._enableQuestions();
150
138
  }
151
- // this._loadDocs();
152
139
  }
153
140
  _enableQuestions() {
154
141
  for (const currentIndex in this.cloneForm.questions) {
@@ -164,25 +151,54 @@ export class FormBuilderUserFormComponent {
164
151
  }
165
152
  }
166
153
  }
167
- // private _loadDocs(): void {
168
- // this.formResponse.documents.forEach((doc: CoDocument) => {
169
- // if (doc.documentId && !doc.documentBody) {
170
- // // this._generalRepo.getDocumentContent(doc).then((content: string) => {
171
- // // doc.documentBody = content;
172
- // // });
173
- // }
174
- // });
175
- // }
176
- merge() {
154
+ _loadDocs() {
155
+ this.formResponse.documents.forEach((doc) => {
156
+ if (doc.documentId && !doc.documentBody) {
157
+ this._sharedConnectorService.getDocumentContent(doc.documentId).then((content) => {
158
+ doc.documentBody = content;
159
+ });
160
+ }
161
+ });
162
+ this._changeDetectorRef.detectChanges();
163
+ }
164
+ handleDefinitiveChange(definitive) {
165
+ this.formResponse.isFinal = definitive;
166
+ }
167
+ commitUserForm() {
177
168
  FormUtils.MergeResponseWithForm(this.cloneForm, this.formResponse);
169
+ switch (this.mode) {
170
+ case UserFormMode.Create:
171
+ this._sharedConnectorService.insertFormResponse(this.formResponse).then((response) => {
172
+ if (response && response.responseId) {
173
+ this.saveForm.next(response);
174
+ }
175
+ else {
176
+ this._promptService.showError('ERROR_SAVING_FORM_RESPONSE', 'ERROR_SAVING_FORM_RESPONSE_TITLE');
177
+ }
178
+ });
179
+ this.createNewFormResponse.next(this.formResponse);
180
+ break;
181
+ case UserFormMode.Edit:
182
+ this._sharedConnectorService.updateFormResponse(this.formResponse).then((response) => {
183
+ if (response && response.responseId) {
184
+ this.saveForm.next(response);
185
+ }
186
+ else {
187
+ this._promptService.showError('ERROR_SAVING_FORM_RESPONSE', 'ERROR_SAVING_FORM_RESPONSE_TITLE');
188
+ }
189
+ });
190
+ break;
191
+ }
192
+ }
193
+ handleOpenFilesUpload() {
194
+ this.filesUploadComponent.openFileBrowser();
178
195
  }
179
196
  }
180
197
  FormBuilderUserFormComponent.decorators = [
181
198
  { type: Component, args: [{
182
199
  selector: 'co-form-builder-user-form',
183
200
  template: `
184
- <co-dialog [headerTemplate]="headerTemplate" [footerTemplate]="footerTemplate" (cancel)="handleCancelForm()">
185
-
201
+ <co-dialog [headerTemplate]="headerTemplate" [footerTemplate]="footerTemplate" (closeClick)="handleCancelForm()" >
186
202
  <div class="main-content-wrapper">
187
203
  <div class="section-wrapper mini-scrollbar" #sectionWrapper>
188
204
  <co-form #coForm (validSubmit)="onValid()" [keepInView]="sectionWrapper">
@@ -270,7 +286,7 @@ FormBuilderUserFormComponent.decorators = [
270
286
  </co-form>
271
287
  </div>
272
288
  <div class="section-wrapper mini-scrollbar" #sectionWrapper>
273
- <co-input-checkbox [(model)]="formResponse.isFinal" [label]="'DEFINITIVE' | sharedLocalize"></co-input-checkbox>
289
+ <co-input-checkbox [model]="formResponse?.isFinal" (modelChange)="handleDefinitiveChange($event)" [label]="'DEFINITIVE' | sharedLocalize"></co-input-checkbox>
274
290
  </div>
275
291
 
276
292
 
@@ -279,20 +295,21 @@ FormBuilderUserFormComponent.decorators = [
279
295
  </co-dialog>
280
296
  <ng-template #headerTemplate>
281
297
  <div class="header-wrapper">
282
- <span class="form-title" [textContent]="form.formName"></span>
298
+ <span class="form-title" [textContent]="form?.formName"></span>
283
299
  </div>
284
300
  </ng-template>
285
301
  <ng-template #footerTemplate>
286
302
  <div class="footer-wrapper">
287
303
  <div class="attachments-wrapper">
288
304
  <div class="row">
289
- <co-icon [iconData]="iconCacheService.getIcon(icons.PaperclipRegular)"></co-icon>
305
+ <co-icon [iconData]="iconCacheService.getIcon(icons.PaperclipRegular)" (click)="handleOpenFilesUpload()"></co-icon>
290
306
  <input type="file" accept="image/*" capture="environment">
307
+ <co-files-upload #filesUploadComponent [documents]="formResponse.documents" class="co-files-upload"></co-files-upload>
291
308
  </div>
292
309
  </div>
293
310
  <div class="row">
294
- <co-button class="save-button" (click)="merge()" [iconData]="iconCacheService.getIcon(icons.CheckDuotone)"></co-button>
295
- <co-button class="close-button" [iconData]="iconCacheService.getIcon(icons.CrossSkinny)"></co-button>
311
+ <co-button class="save-button" (click)="commitUserForm()" [iconData]="iconCacheService.getIcon(icons.CheckDuotone)"></co-button>
312
+ <co-button class="close-button" [iconData]="iconCacheService.getIcon(icons.CrossSkinny)" (click)="handleCancelForm()"></co-button>
296
313
  </div>
297
314
  </div>
298
315
 
@@ -304,13 +321,14 @@ FormBuilderUserFormComponent.decorators = [
304
321
  ];
305
322
  FormBuilderUserFormComponent.ctorParameters = () => [
306
323
  { type: ChangeDetectorRef },
307
- { type: PromptService },
308
324
  { type: BusinessObjectFactory },
309
325
  { type: ChangeDetectorRef },
310
326
  { type: SharedConnectorService },
327
+ { type: PromptService },
311
328
  { type: IconCacheService }
312
329
  ];
313
330
  FormBuilderUserFormComponent.propDecorators = {
331
+ filesUploadComponent: [{ type: ViewChild, args: ['filesUploadComponent',] }],
314
332
  showPopup: [{ type: Input }],
315
333
  form: [{ type: Input }],
316
334
  userForm: [{ type: Input }],
@@ -320,9 +338,11 @@ FormBuilderUserFormComponent.propDecorators = {
320
338
  enableQuestions: [{ type: Input }],
321
339
  cancelForm: [{ type: Output }],
322
340
  saveForm: [{ type: Output }],
341
+ createNewFormResponse: [{ type: Output }],
342
+ loadDocuments: [{ type: Output }],
323
343
  showClass: [{ type: HostBinding, args: ['class.co-form-builder-user-form',] }]
324
344
  };
325
345
  __decorate([
326
346
  InputBoolean()
327
347
  ], FormBuilderUserFormComponent.prototype, "readonly", void 0);
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLXVzZXItZm9ybS9mb3JtLWJ1aWxkZXItdXNlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzVFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV4RSxPQUFPLEVBQUMscUJBQXFCLEVBQTRCLE1BQU0sdUNBQXVDLENBQUM7QUFDdkcsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSTNELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxzQkFB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O29CQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO2lCQUMvQjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLCtEQUErRDtJQUMvRCxpREFBaUQ7SUFDakQsaUZBQWlGO0lBQ2pGLHlDQUF5QztJQUN6QyxlQUFlO0lBQ2YsUUFBUTtJQUNSLFFBQVE7SUFDUixJQUFJO0lBRUcsS0FBSztRQUNWLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs7WUEvVUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNIVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBN0lPLGlCQUFpQjtZQVFqQixhQUFhO1lBS2IscUJBQXFCO1lBYnJCLGlCQUFpQjtZQWlCakIsc0JBQXNCO1lBRHRCLGdCQUFnQjs7O3dCQW9JckIsS0FBSzttQkFPTCxLQUFLO3VCQVdMLEtBQUs7b0JBR0wsS0FBSztrQkFHTCxLQUFLO3VCQUdMLEtBQUs7OEJBSUwsS0FBSzt5QkFHTCxNQUFNO3VCQUdOLE1BQU07d0JBU04sV0FBVyxTQUFDLGlDQUFpQzs7QUFqQjlDO0lBREMsWUFBWSxFQUFFOzhEQUNrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtUXVlc3Rpb25UeXBlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2Zvcm0tcXVlc3Rpb24udHlwZSc7XHJcbmltcG9ydCB7VGFibGVOYW1lfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL3RhYmxlLW5hbWUuZW51bSc7XHJcbmltcG9ydCB7Rm9ybX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS5ibyc7XHJcbmltcG9ydCB7Rm9ybVJlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9mb3JtLXJlc3BvbnNlLmJvJztcclxuaW1wb3J0IHtJbnB1dEJvb2xlYW59IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvcic7XHJcbmltcG9ydCB7Rm9ybVF1ZXN0aW9ufSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9mb3JtLXF1ZXN0aW9uLmJvJztcclxuaW1wb3J0IHtOVUxMX0ZPUk1fRlVMTF9PQkpFQ1QsIE5VTExfRk9STV9SRVNQT05TRV9PQkpFQ1R9IGZyb20gJy4uLy4uLy4uL21vZGVsL3V0aWwvZm9ybXMtbnVsbC1vYmplY3QnO1xyXG5pbXBvcnQge1Byb21wdFNlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge0Zvcm1RdWVzdGlvbkFuc3dlcn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS1xdWVzdGlvbi1hbnN3ZXIuYm8nO1xyXG5pbXBvcnQge0Zvcm1RdWVzdGlvblJlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9mb3JtLXF1ZXN0aW9uLXJlc3BvbnNlLmJvJztcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudC5ibyc7XHJcbmltcG9ydCB7QXJyYXlVdGlsc30gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXktdXRpbHMnO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvc2VydmljZS9idXNpbmVzcy1vYmplY3QtZmFjdG9yeSc7XHJcbmltcG9ydCB7Rm9ybVV0aWxzfSBmcm9tICcuLi8uLi8uLi91dGlscy9mb3JtLXV0aWxzJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NoYXJlZENvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2Uvc2hhcmVkLWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tZm9ybS1idWlsZGVyLXVzZXItZm9ybScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGNvLWRpYWxvZyBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIiBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIiAoY2FuY2VsKT1cImhhbmRsZUNhbmNlbEZvcm0oKVwiPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXdyYXBwZXIgbWluaS1zY3JvbGxiYXJcIiAjc2VjdGlvbldyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1mb3JtICNjb0Zvcm0gKHZhbGlkU3VibWl0KT1cIm9uVmFsaWQoKVwiIFtrZWVwSW5WaWV3XT1cInNlY3Rpb25XcmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBjbG9uZUZvcm0ucXVlc3Rpb25zOyBsZXQgaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmFjdGl2ZV09XCJmb3JtLnF1ZXN0aW9ucy5pbmRleE9mKHF1ZXN0aW9uKSA9PT0gZm9ybS5xdWVzdGlvbnMuaW5kZXhPZihhY3RpdmVRdWVzdGlvbilcIiBjbGFzcz1cImhlYWRlcnMtcm93XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImVuYWJsZWROZXh0UXVlc3Rpb24ocXVlc3Rpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLXJ1YnJpYy1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJxdWVzdGlvbi5zZXF1ZW5jZSsgJy4gJyArIChxdWVzdGlvbi5xdWVzdGlvbilcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbnN3ZXItd3JhcHBlclwiIFtuZ1N3aXRjaF09XCJxdWVzdGlvbi5xdWVzdGlvblR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0ICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLlNob3J0QW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dGFyZWEgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuTG9uZ0Fuc3dlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLk11bHRpcGxlQ2hvaWNlU2luZ2xlT3B0aW9uXCJcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWZvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbi5mb3JtUXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYW5zd2VyLmFuc3dlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImFuc3dlci5hbnN3ZXJJZCA9PSBxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlID0gYW5zd2VyLmFuc3dlcklkICsgJyc7IGVuYWJsZWROZXh0UXVlc3Rpb24ocXVlc3Rpb24sIGFuc3dlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLk11bHRpcGxlQ2hvaWNlTXVsdGlwbGVPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94ICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2YgcXVlc3Rpb24uZm9ybVF1ZXN0aW9uQW5zd2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJhbnN3ZXIuYW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2UgPyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZS5pbmRleE9mKGFuc3dlci5hbnN3ZXJJZCkgPiAtMSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZU11bHRpcGxlT3B0aW9uKGFuc3dlci5hbnN3ZXJJZCwgcXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbiwgJGV2ZW50KTsgZW5hYmxlZE5leHRRdWVzdGlvbihxdWVzdGlvbiwgYW5zd2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlcyAqbmdTd2l0Y2hDYXNlPVwiZm9ybVF1ZXN0aW9uVHlwZS5Ecm9wRG93bkxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJxdWVzdGlvbi5mb3JtUXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidhbnN3ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZUxvdk9wdGlvbihxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLCAkZXZlbnQucmVzcG9uc2VJZCk7IGVuYWJsZWROZXh0UXVlc3Rpb24ocXVlc3Rpb24sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tdXNlci1mb3JtLWlucHV0LXNjYWxlICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLkxpbmVhclNjYWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInF1ZXN0aW9uLnF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ2Fuc3dlcklkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjYWxlTW9kZWxdPVwicXVlc3Rpb24uZm9ybVF1ZXN0aW9uQW5zd2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbkZpZWxkXT1cIidhbnN3ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZSA9ICRldmVudC5hbnN3ZXJJZCArICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLXVzZXItZm9ybS1pbnB1dC1zY2FsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLkRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5kYXRlUmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LWRhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGltZSAqbmdTd2l0Y2hDYXNlPVwiZm9ybVF1ZXN0aW9uVHlwZS5UaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uPy50aW1lUmVzcG9uc2UgPz8gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlVGltZShxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5tYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10aW1lPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ290by1xdWVzdGlvblwiICpuZ0lmPVwicXVlc3Rpb24gPT09IGFjdGl2ZVF1ZXN0aW9uICYmIGdvdG9RdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiKCdHT1RPX05FWFRfUVVFU1RJT04nIHwgc2hhcmVkTG9jYWxpemUpICsgJyAnICsgZ290b1F1ZXN0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9jby1mb3JtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXdyYXBwZXIgbWluaS1zY3JvbGxiYXJcIiAjc2VjdGlvbldyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBbKG1vZGVsKV09XCJmb3JtUmVzcG9uc2UuaXNGaW5hbFwiIFtsYWJlbF09XCInREVGSU5JVElWRScgfCBzaGFyZWRMb2NhbGl6ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9jby1kaWFsb2c+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwiZm9ybS5mb3JtTmFtZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QYXBlcmNsaXBSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLypcIiBjYXB0dXJlPVwiZW52aXJvbm1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIiAoY2xpY2spPVwibWVyZ2UoKVwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2hlY2tEdW90b25lKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5Dcm9zc1NraW5ueSlcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlclVzZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1RdWVzdGlvblR5cGU6IHR5cGVvZiBGb3JtUXVlc3Rpb25UeXBlID0gRm9ybVF1ZXN0aW9uVHlwZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgVGFibGVOYW1lOiB0eXBlb2YgVGFibGVOYW1lID0gVGFibGVOYW1lO1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93UG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGRvY3VtZW50czogQ29Eb2N1bWVudFtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2Zvcm06IEZvcm07XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmb3JtKGZvcm06IEZvcm0pIHtcclxuICAgIHRoaXMuX2Zvcm0gPSBmb3JtO1xyXG4gICAgdGhpcy5fcHJlcGFyZU5ld0Zvcm0oKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9ybSgpOiBGb3JtIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICB1c2VyRm9ybTogRm9ybVJlc3BvbnNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0YWJsZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBrZXk6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW5hYmxlUXVlc3Rpb25zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhbmNlbEZvcm06IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHNhdmVGb3JtOiBFdmVudEVtaXR0ZXI8Rm9ybVJlc3BvbnNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybVJlc3BvbnNlPigpO1xyXG5cclxuICBwdWJsaWMgY2xvbmVGb3JtOiBGb3JtID0gTlVMTF9GT1JNX0ZVTExfT0JKRUNUO1xyXG4gIHB1YmxpYyBmb3JtUmVzcG9uc2U6IEZvcm1SZXNwb25zZTtcclxuXHJcbiAgcHVibGljIGFjdGl2ZVF1ZXN0aW9uOiBGb3JtUXVlc3Rpb247XHJcbiAgcHVibGljIGdvdG9RdWVzdGlvbjogbnVtYmVyO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWZvcm0tYnVpbGRlci11c2VyLWZvcm0nKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfcHJvbXB0U2VydmljZTogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfc2hhcmVkQ29ubmVjdG9yU2VydmljZTogU2hhcmVkQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RldGVjdG9yUmVmID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuYWJsZWROZXh0UXVlc3Rpb24ocXVlc3Rpb246IEZvcm1RdWVzdGlvbiwgYW5zd2VyPzogRm9ybVF1ZXN0aW9uQW5zd2VyIHwgbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uID0gcXVlc3Rpb247XHJcbiAgICBpZiAodHlwZW9mIGFuc3dlciA9PT0gJ251bWJlcicpIHtcclxuICAgICAgYW5zd2VyID0gcXVlc3Rpb24uZm9ybVF1ZXN0aW9uQW5zd2Vycy5maW5kKGEgPT4gYS5hbnN3ZXJJZCA9PT0gYW5zd2VyKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGdvdG9RdWVzdGlvbjogbnVtYmVyID0gYW5zd2VyID8gYW5zd2VyLmdvdG9RdWVzdGlvbklkIDogcXVlc3Rpb24uZ290b1F1ZXN0aW9uSWQ7XHJcbiAgICBjb25zdCBjdXJyZW50SW5kZXg6IG51bWJlciA9IHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9ucy5maW5kSW5kZXgocSA9PiBxLnF1ZXN0aW9uSWQgPT09IHF1ZXN0aW9uLnF1ZXN0aW9uSWQpO1xyXG4gICAgbGV0IG5leHRRdWVzdGlvbjogRm9ybVF1ZXN0aW9uID0gdGhpcy5jbG9uZUZvcm0ucXVlc3Rpb25zW2N1cnJlbnRJbmRleCArIDFdO1xyXG4gICAgaWYgKGdvdG9RdWVzdGlvbikge1xyXG4gICAgICBuZXh0UXVlc3Rpb24gPSB0aGlzLmNsb25lRm9ybS5xdWVzdGlvbnMuZmluZChxID0+IHEucXVlc3Rpb25JZCA9PT0gZ290b1F1ZXN0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChuZXh0UXVlc3Rpb24pIHtcclxuICAgICAgbmV4dFF1ZXN0aW9uLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdvdG9RdWVzdGlvbiA9IG5leHRRdWVzdGlvbi5zZXF1ZW5jZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ290b1F1ZXN0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGFzeW5jIG9wZW5Gb3JtV3JpdGVhYmxlKGZvcm1JZDogbnVtYmVyLCBmb3JtUmVzcG9uc2VJZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgLy9cclxuICAvLyAgIGNvbnN0IGlzTG9ja2VkU3VjY2VzZnVsbHk6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLl9mb3JtUmVwby5sb2NrRm9ybVJlc3BvbnNlKGZvcm1SZXNwb25zZUlkKTtcclxuICAvL1xyXG4gIC8vICAgaWYgKCFpc0xvY2tlZFN1Y2Nlc2Z1bGx5KSB7XHJcbiAgLy8gICAgIHRoaXMuX3Byb21wdFNlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbihcIk1FU1NBR0VfUkVTT1VSQ0VfQlVTWVwiKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMuZm9ybSA9IGF3YWl0IHRoaXMuX2Zvcm1SZXBvLmdldEZvcm0oZm9ybUlkKTtcclxuICAvLyAgICAgdGhpcy51c2VyRm9ybSA9IGF3YWl0IHRoaXMuX2Zvcm1SZXBvLmdldEZvcm1SZXNwb25zZShmb3JtUmVzcG9uc2VJZCk7XHJcbiAgLy8gICAgIHRoaXMuX3ByZXBhcmVFeGlzdGluZ0Zvcm0oKTtcclxuICAvLyAgICAgdGhpcy5zaG93KCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgb25WYWxpZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2F2ZUZvcm0ubmV4dCh0aGlzLmZvcm1SZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2FuY2VsRm9ybSgpOiB2b2lkIHtcclxuICAgIC8vIGlmICh0aGlzLnVzZXJGb3JtICYmIHRoaXMudXNlckZvcm0ucmVzcG9uc2VJZCkge1xyXG4gICAgLy8gICB0aGlzLl9mb3JtUmVwby51bmxvY2tGb3JtUmVzcG9uc2UodGhpcy51c2VyRm9ybS5yZXNwb25zZUlkKTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMuZm9ybSA9IE5VTExfRk9STV9GVUxMX09CSkVDVDtcclxuICAgIHRoaXMuY2FuY2VsRm9ybS5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlTXVsdGlwbGVPcHRpb24oaWQ6IHN0cmluZywgZm9ybVJlc3BvbnNlOiBGb3JtUXVlc3Rpb25SZXNwb25zZSwgYWRkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXNwb25zZUxpc3Q6IHN0cmluZ1tdID0gZm9ybVJlc3BvbnNlLnJlc3BvbnNlID8gZm9ybVJlc3BvbnNlLnJlc3BvbnNlLnNwbGl0KCcsJykgOiBbXTtcclxuICAgIGlmIChhZGQpIHtcclxuICAgICAgcmVzcG9uc2VMaXN0LnB1c2goaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzcG9uc2VMaXN0LnNwbGljZShyZXNwb25zZUxpc3QuaW5kZXhPZihpZCksIDEpO1xyXG4gICAgfVxyXG4gICAgZm9ybVJlc3BvbnNlLnJlc3BvbnNlID0gcmVzcG9uc2VMaXN0LnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlTG92T3B0aW9uKGZvcm1SZXNwb25zZTogRm9ybVF1ZXN0aW9uUmVzcG9uc2UsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgZm9ybVJlc3BvbnNlLnJlc3BvbnNlID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VUaW1lKGZvcm1SZXNwb25zZTogRm9ybVF1ZXN0aW9uUmVzcG9uc2UsIHRpbWU6IERhdGUpOiB2b2lkIHtcclxuICAgIGZvcm1SZXNwb25zZS50aW1lUmVzcG9uc2UgPSB0aW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93UG9wdXAgPSBmYWxzZTtcclxuICAgIHRoaXMuX2RldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93UG9wdXAgPSB0cnVlO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURvY3VtZW50RGVsZXRlZChkb2M6IENvRG9jdW1lbnQpOiB2b2lkIHtcclxuICAgIEFycmF5VXRpbHMuUmVtb3ZlRWxlbWVudChkb2MsIHRoaXMuZm9ybVJlc3BvbnNlLmRvY3VtZW50cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRG9jdW1lbnRDaGFuZ2VkKGRvYzogQ29Eb2N1bWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtUmVzcG9uc2UuZG9jdW1lbnRzLnB1c2goZG9jKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEb2N1bWVudHNBZGRlZChkb2NzOiBDb0RvY3VtZW50W10pOiB2b2lkIHtcclxuICAgIGRvY3MuZm9yRWFjaCgoZG9jdW1lbnQ6IENvRG9jdW1lbnQpID0+IHtcclxuICAgICAgdGhpcy5mb3JtUmVzcG9uc2UuZG9jdW1lbnRzLnB1c2goZG9jdW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9wcmVwYXJlTmV3Rm9ybSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuY2xvbmVGb3JtID0gPEZvcm0+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoRm9ybSwgdGhpcy5mb3JtKTtcclxuICAgIGlmICghdGhpcy5mb3JtUmVzcG9uc2U/LmZvcm1JZCkge1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZSA9IDxGb3JtUmVzcG9uc2U+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoRm9ybVJlc3BvbnNlLCB0aGlzLnVzZXJGb3JtKTtcclxuICAgICAgdGhpcy5mb3JtUmVzcG9uc2UuZm9ybUlkID0gdGhpcy5mb3JtLmZvcm1JZDtcclxuICAgICAgdGhpcy5mb3JtUmVzcG9uc2UudGFibGUgPSB0aGlzLnRhYmxlO1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZS5rZXkgPSB0aGlzLmtleTtcclxuICAgIH1cclxuXHJcbiAgICBGb3JtVXRpbHMuTWVyZ2VSZXNwb25zZVdpdGhGb3JtKHRoaXMuY2xvbmVGb3JtLCB0aGlzLmZvcm1SZXNwb25zZSk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVRdWVzdGlvbnMpIHtcclxuICAgICAgdGhpcy5fZW5hYmxlUXVlc3Rpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlRXhpc3RpbmdGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9uZUZvcm0gPSA8Rm9ybT50aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShGb3JtLCB0aGlzLmZvcm0pO1xyXG4gICAgdGhpcy5mb3JtUmVzcG9uc2UgPSA8Rm9ybVJlc3BvbnNlPnRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEZvcm1SZXNwb25zZSwgdGhpcy51c2VyRm9ybSk7XHJcbiAgICBGb3JtVXRpbHMuTWVyZ2VSZXNwb25zZVdpdGhGb3JtKHRoaXMuY2xvbmVGb3JtLCB0aGlzLmZvcm1SZXNwb25zZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZW5hYmxlUXVlc3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuX2VuYWJsZVF1ZXN0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5fbG9hZERvY3MoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2VuYWJsZVF1ZXN0aW9ucygpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgY3VycmVudEluZGV4IGluIHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9ucykge1xyXG4gICAgICBpZiAodGhpcy5jbG9uZUZvcm0ucXVlc3Rpb25zW2N1cnJlbnRJbmRleF0pIHtcclxuICAgICAgICBjb25zdCBuZXh0UXVlc3Rpb246IEZvcm1RdWVzdGlvbiA9IHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9uc1tjdXJyZW50SW5kZXhdO1xyXG4gICAgICAgIGlmIChuZXh0UXVlc3Rpb24pIHtcclxuICAgICAgICAgIG5leHRRdWVzdGlvbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZ290b1F1ZXN0aW9uID0gbmV4dFF1ZXN0aW9uLnNlcXVlbmNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdvdG9RdWVzdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgX2xvYWREb2NzKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5mb3JtUmVzcG9uc2UuZG9jdW1lbnRzLmZvckVhY2goKGRvYzogQ29Eb2N1bWVudCkgPT4ge1xyXG4gIC8vICAgICBpZiAoZG9jLmRvY3VtZW50SWQgJiYgIWRvYy5kb2N1bWVudEJvZHkpIHtcclxuICAvLyAgICAgICAvLyB0aGlzLl9nZW5lcmFsUmVwby5nZXREb2N1bWVudENvbnRlbnQoZG9jKS50aGVuKChjb250ZW50OiBzdHJpbmcpID0+IHtcclxuICAvLyAgICAgICAvLyAgIGRvYy5kb2N1bWVudEJvZHkgPSBjb250ZW50O1xyXG4gIC8vICAgICAgIC8vIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBtZXJnZSgpIHtcclxuICAgIEZvcm1VdGlscy5NZXJnZVJlc3BvbnNlV2l0aEZvcm0odGhpcy5jbG9uZUZvcm0sIHRoaXMuZm9ybVJlc3BvbnNlKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLXVzZXItZm9ybS9mb3JtLWJ1aWxkZXItdXNlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzVFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV4RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUk1RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFakYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBNkgzRCxNQUFNLE9BQU8sNEJBQTRCO0lBbUV2QyxZQUNVLFlBQStCLEVBQy9CLFVBQWlDLEVBQ2pDLGtCQUFxQyxFQUNyQyx1QkFBK0MsRUFDL0MsY0FBNkIsRUFDOUIsZ0JBQWtDO1FBTGpDLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNqQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDL0MsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZFM0IscUJBQWdCLEdBQTRCLGdCQUFnQixDQUFDO1FBQzdELGNBQVMsR0FBcUIsU0FBUyxDQUFDO1FBQ3hDLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBRW5DLFNBQUksR0FBaUIsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUN6QyxjQUFTLEdBQWlCLEVBQUUsQ0FBQztRQVE3QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBd0IzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUcxRCxhQUFRLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBR3hFLDBCQUFxQixHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUs5RixjQUFTLEdBQVMscUJBQXFCLENBQUM7SUFtQi9DLENBQUM7SUExREQsSUFDVyxJQUFJLENBQUMsSUFBVTtRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQXFDTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBWUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxRQUFzQixFQUFFLE1BQW9DO1FBQ3JGLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQzlCLE1BQU0sR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQztTQUN4RTtRQUNELE1BQU0sWUFBWSxHQUFXLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUN0RixNQUFNLFlBQVksR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRyxJQUFJLFlBQVksR0FBaUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksWUFBWSxFQUFFO1lBQ2hCLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxLQUFLLFlBQVksQ0FBQyxDQUFDO1NBQ2xGO1FBQ0QsSUFBSSxZQUFZLEVBQUU7WUFDaEIsWUFBWSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1NBQzNDO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsbURBQW1EO1FBQ25ELGlFQUFpRTtRQUNqRSxJQUFJO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxFQUFVLEVBQUUsWUFBa0MsRUFBRSxHQUFZO1FBQ3RGLE1BQU0sWUFBWSxHQUFhLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0YsSUFBSSxHQUFHLEVBQUU7WUFDUCxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbEQ7UUFDRCxZQUFZLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRU0sZUFBZSxDQUFDLFlBQWtDLEVBQUUsS0FBYTtRQUN0RSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsWUFBWSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLFlBQWtDLEVBQUUsSUFBVTtRQUM5RCxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRU0scUJBQXFCLENBQUMsR0FBZTtRQUMxQyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxHQUFlO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sb0JBQW9CLENBQUMsSUFBa0I7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQW9CLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRWEsZUFBZTs7O1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQVMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsTUFBTSxDQUFBLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxZQUFZLEdBQWlCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUM5Qiw4RkFBOEY7Z0JBQzlGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7WUFFRCxTQUFTLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUN6Qjs7S0FDRjtJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsWUFBWSxHQUFpQixJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEcsU0FBUyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRW5FLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUNuRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUMxQyxNQUFNLFlBQVksR0FBaUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFFLElBQUksWUFBWSxFQUFFO29CQUNoQixZQUFZLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO2lCQUMzQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztpQkFDL0I7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFlLEVBQUUsRUFBRTtZQUN0RCxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFO29CQUN2RixHQUFHLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxVQUFtQjtRQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDekMsQ0FBQztJQUVNLGNBQWM7UUFDbkIsU0FBUyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRW5FLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLFlBQVksQ0FBQyxNQUFNO2dCQUN0QixJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQXNCLEVBQUUsRUFBRTtvQkFDakcsSUFBRyxRQUFRLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTt3QkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQzlCO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLDRCQUE0QixFQUFFLGtDQUFrQyxDQUFDLENBQUM7cUJBQ2pHO2dCQUNILENBQUMsQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuRCxNQUFLO1lBQ1AsS0FBSyxZQUFZLENBQUMsSUFBSTtnQkFDcEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFzQixFQUFFLEVBQUU7b0JBQ2pHLElBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7d0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUM5Qjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyw0QkFBNEIsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO3FCQUNqRztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFLO1NBQ1I7SUFDSCxDQUFDO0lBRU0scUJBQXFCO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzs7WUFwV0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNIVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBL0lPLGlCQUFpQjtZQVlqQixxQkFBcUI7WUFackIsaUJBQWlCO1lBaUJqQixzQkFBc0I7WUFFdEIsYUFBYTtZQUpiLGdCQUFnQjs7O21DQTRJckIsU0FBUyxTQUFDLHNCQUFzQjt3QkFHaEMsS0FBSzttQkFHTCxLQUFLO3VCQVdMLEtBQUs7b0JBR0wsS0FBSztrQkFHTCxLQUFLO3VCQUdMLEtBQUs7OEJBSUwsS0FBSzt5QkFHTCxNQUFNO3VCQUdOLE1BQU07b0NBR04sTUFBTTs0QkFHTixNQUFNO3dCQVNOLFdBQVcsU0FBQyxpQ0FBaUM7O0FBdkI5QztJQURDLFlBQVksRUFBRTs4REFDa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybVF1ZXN0aW9uVHlwZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9mb3JtLXF1ZXN0aW9uLnR5cGUnO1xyXG5pbXBvcnQge1RhYmxlTmFtZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS90YWJsZS1uYW1lLmVudW0nO1xyXG5pbXBvcnQge0Zvcm19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2Zvcm0uYm8nO1xyXG5pbXBvcnQge0Zvcm1SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFufSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3InO1xyXG5pbXBvcnQge0Zvcm1RdWVzdGlvbn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS1xdWVzdGlvbi5ibyc7XHJcbmltcG9ydCB7TlVMTF9GT1JNX0ZVTExfT0JKRUNUfSBmcm9tICcuLi8uLi8uLi9tb2RlbC91dGlsL2Zvcm1zLW51bGwtb2JqZWN0JztcclxuaW1wb3J0IHtGb3JtUXVlc3Rpb25BbnN3ZXJ9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2Zvcm0tcXVlc3Rpb24tYW5zd2VyLmJvJztcclxuaW1wb3J0IHtGb3JtUXVlc3Rpb25SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS1xdWVzdGlvbi1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnQuYm8nO1xyXG5pbXBvcnQge0FycmF5VXRpbHN9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5LXV0aWxzJztcclxuaW1wb3J0IHtCdXNpbmVzc09iamVjdEZhY3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3NlcnZpY2UvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnknO1xyXG5pbXBvcnQge0Zvcm1VdGlsc30gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZm9ybS11dGlscyc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtVc2VyRm9ybU1vZGV9IGZyb20gJy4uLy4uLy4uL2VudW0vdXNlci1mb3JtLW1vZGUuZW51bSc7XHJcbmltcG9ydCB7U2hhcmVkQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zaGFyZWQtY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ZpbGVzVXBsb2FkQ29tcG9uZW50fSBmcm9tICcuLi8uLi9maWxlcy11cGxvYWQvZmlsZXMtdXBsb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UHJvbXB0U2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWZvcm0tYnVpbGRlci11c2VyLWZvcm0nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxjby1kaWFsb2cgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCIgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCIgKGNsb3NlQ2xpY2spPVwiaGFuZGxlQ2FuY2VsRm9ybSgpXCIgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24td3JhcHBlciBtaW5pLXNjcm9sbGJhclwiICNzZWN0aW9uV3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWZvcm0gI2NvRm9ybSAodmFsaWRTdWJtaXQpPVwib25WYWxpZCgpXCIgW2tlZXBJblZpZXddPVwic2VjdGlvbldyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGNsb25lRm9ybS5xdWVzdGlvbnM7IGxldCBpbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWN0aXZlXT1cImZvcm0ucXVlc3Rpb25zLmluZGV4T2YocXVlc3Rpb24pID09PSBmb3JtLnF1ZXN0aW9ucy5pbmRleE9mKGFjdGl2ZVF1ZXN0aW9uKVwiIGNsYXNzPVwiaGVhZGVycy1yb3dcIiBmeExheW91dD1cImNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiZW5hYmxlZE5leHRRdWVzdGlvbihxdWVzdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tcnVicmljLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInF1ZXN0aW9uLnNlcXVlbmNlKyAnLiAnICsgKHF1ZXN0aW9uLnF1ZXN0aW9uKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci13cmFwcGVyXCIgW25nU3dpdGNoXT1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuU2hvcnRBbnN3ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0YXJlYSAqbmdTd2l0Y2hDYXNlPVwiZm9ybVF1ZXN0aW9uVHlwZS5Mb25nQW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuTXVsdGlwbGVDaG9pY2VTaW5nbGVPcHRpb25cIlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgYW5zd2VyIG9mIHF1ZXN0aW9uLmZvcm1RdWVzdGlvbkFuc3dlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJhbnN3ZXIuYW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiYW5zd2VyLmFuc3dlcklkID09IHF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2UgPSBhbnN3ZXIuYW5zd2VySWQgKyAnJzsgZW5hYmxlZE5leHRRdWVzdGlvbihxdWVzdGlvbiwgYW5zd2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWZvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuTXVsdGlwbGVDaG9pY2VNdWx0aXBsZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbi5mb3JtUXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImFuc3dlci5hbnN3ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZSA/IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlLmluZGV4T2YoYW5zd2VyLmFuc3dlcklkKSA+IC0xIDogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlTXVsdGlwbGVPcHRpb24oYW5zd2VyLmFuc3dlcklkLCBxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLCAkZXZlbnQpOyBlbmFibGVkTmV4dFF1ZXN0aW9uKHF1ZXN0aW9uLCBhbnN3ZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLkRyb3BEb3duTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cInF1ZXN0aW9uLmZvcm1RdWVzdGlvbkFuc3dlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Fuc3dlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5tYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlTG92T3B0aW9uKHF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24sICRldmVudC5yZXNwb25zZUlkKTsgZW5hYmxlZE5leHRRdWVzdGlvbihxdWVzdGlvbiwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby11c2VyLWZvcm0taW5wdXQtc2NhbGUgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuTGluZWFyU2NhbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwicXVlc3Rpb24ucXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInYW5zd2VySWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NhbGVNb2RlbF09XCJxdWVzdGlvbi5mb3JtUXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uRmllbGRdPVwiJ2Fuc3dlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlID0gJGV2ZW50LmFuc3dlcklkICsgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tdXNlci1mb3JtLWlucHV0LXNjYWxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLmRhdGVSZXNwb25zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10aW1lICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLlRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24/LnRpbWVSZXNwb25zZSA/PyAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VUaW1lKHF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXRpbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3RvLXF1ZXN0aW9uXCIgKm5nSWY9XCJxdWVzdGlvbiA9PT0gYWN0aXZlUXVlc3Rpb24gJiYgZ290b1F1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCIoJ0dPVE9fTkVYVF9RVUVTVElPTicgfCBzaGFyZWRMb2NhbGl6ZSkgKyAnICcgKyBnb3RvUXVlc3Rpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLWZvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24td3JhcHBlciBtaW5pLXNjcm9sbGJhclwiICNzZWN0aW9uV3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFttb2RlbF09XCJmb3JtUmVzcG9uc2U/LmlzRmluYWxcIiAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlRGVmaW5pdGl2ZUNoYW5nZSgkZXZlbnQpXCIgW2xhYmVsXT1cIidERUZJTklUSVZFJyB8IHNoYXJlZExvY2FsaXplXCI+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2NvLWRpYWxvZz5cclxuICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJmb3JtPy5mb3JtTmFtZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QYXBlcmNsaXBSZWd1bGFyKVwiIChjbGljayk9XCJoYW5kbGVPcGVuRmlsZXNVcGxvYWQoKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLypcIiBjYXB0dXJlPVwiZW52aXJvbm1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1maWxlcy11cGxvYWQgI2ZpbGVzVXBsb2FkQ29tcG9uZW50IFtkb2N1bWVudHNdPVwiZm9ybVJlc3BvbnNlLmRvY3VtZW50c1wiIGNsYXNzPVwiY28tZmlsZXMtdXBsb2FkXCI+PC9jby1maWxlcy11cGxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgKGNsaWNrKT1cImNvbW1pdFVzZXJGb3JtKClcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZWNrRHVvdG9uZSlcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ3Jvc3NTa2lubnkpXCIgKGNsaWNrKT1cImhhbmRsZUNhbmNlbEZvcm0oKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyVXNlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybVF1ZXN0aW9uVHlwZTogdHlwZW9mIEZvcm1RdWVzdGlvblR5cGUgPSBGb3JtUXVlc3Rpb25UeXBlO1xyXG4gIHB1YmxpYyByZWFkb25seSBUYWJsZU5hbWU6IHR5cGVvZiBUYWJsZU5hbWUgPSBUYWJsZU5hbWU7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIHB1YmxpYyBtb2RlOiBVc2VyRm9ybU1vZGUgPSBVc2VyRm9ybU1vZGUuQ3JlYXRlO1xyXG4gIHB1YmxpYyBkb2N1bWVudHM6IENvRG9jdW1lbnRbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9mb3JtOiBGb3JtO1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWxlc1VwbG9hZENvbXBvbmVudCcpXHJcbiAgcHVibGljIGZpbGVzVXBsb2FkQ29tcG9uZW50OiBGaWxlc1VwbG9hZENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1BvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmb3JtKGZvcm06IEZvcm0pIHtcclxuICAgIHRoaXMuX2Zvcm0gPSBmb3JtO1xyXG4gICAgdGhpcy5fcHJlcGFyZU5ld0Zvcm0oKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9ybSgpOiBGb3JtIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdXNlckZvcm06IEZvcm1SZXNwb25zZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGFibGU6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMga2V5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVuYWJsZVF1ZXN0aW9uczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBjYW5jZWxGb3JtOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBzYXZlRm9ybTogRXZlbnRFbWl0dGVyPEZvcm1SZXNwb25zZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1SZXNwb25zZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZU5ld0Zvcm1SZXNwb25zZTogRXZlbnRFbWl0dGVyPEZvcm1SZXNwb25zZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1SZXNwb25zZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGxvYWREb2N1bWVudHNcclxuXHJcbiAgcHVibGljIGNsb25lRm9ybTogRm9ybSA9IE5VTExfRk9STV9GVUxMX09CSkVDVDtcclxuICBwdWJsaWMgZm9ybVJlc3BvbnNlOiBGb3JtUmVzcG9uc2U7XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVRdWVzdGlvbjogRm9ybVF1ZXN0aW9uO1xyXG4gIHB1YmxpYyBnb3RvUXVlc3Rpb246IG51bWJlcjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1mb3JtLWJ1aWxkZXItdXNlci1mb3JtJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfc2hhcmVkQ29ubmVjdG9yU2VydmljZTogU2hhcmVkQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Byb21wdFNlcnZpY2U6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXRlY3RvclJlZiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmFibGVkTmV4dFF1ZXN0aW9uKHF1ZXN0aW9uOiBGb3JtUXVlc3Rpb24sIGFuc3dlcj86IEZvcm1RdWVzdGlvbkFuc3dlciB8IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbiA9IHF1ZXN0aW9uO1xyXG4gICAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIGFuc3dlciA9IHF1ZXN0aW9uLmZvcm1RdWVzdGlvbkFuc3dlcnMuZmluZChhID0+IGEuYW5zd2VySWQgPT09IGFuc3dlcik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBnb3RvUXVlc3Rpb246IG51bWJlciA9IGFuc3dlciA/IGFuc3dlci5nb3RvUXVlc3Rpb25JZCA6IHF1ZXN0aW9uLmdvdG9RdWVzdGlvbklkO1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4OiBudW1iZXIgPSB0aGlzLmNsb25lRm9ybS5xdWVzdGlvbnMuZmluZEluZGV4KHEgPT4gcS5xdWVzdGlvbklkID09PSBxdWVzdGlvbi5xdWVzdGlvbklkKTtcclxuICAgIGxldCBuZXh0UXVlc3Rpb246IEZvcm1RdWVzdGlvbiA9IHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9uc1tjdXJyZW50SW5kZXggKyAxXTtcclxuICAgIGlmIChnb3RvUXVlc3Rpb24pIHtcclxuICAgICAgbmV4dFF1ZXN0aW9uID0gdGhpcy5jbG9uZUZvcm0ucXVlc3Rpb25zLmZpbmQocSA9PiBxLnF1ZXN0aW9uSWQgPT09IGdvdG9RdWVzdGlvbik7XHJcbiAgICB9XHJcbiAgICBpZiAobmV4dFF1ZXN0aW9uKSB7XHJcbiAgICAgIG5leHRRdWVzdGlvbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5nb3RvUXVlc3Rpb24gPSBuZXh0UXVlc3Rpb24uc2VxdWVuY2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdvdG9RdWVzdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblZhbGlkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zYXZlRm9ybS5uZXh0KHRoaXMuZm9ybVJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYW5jZWxGb3JtKCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKHRoaXMudXNlckZvcm0gJiYgdGhpcy51c2VyRm9ybS5yZXNwb25zZUlkKSB7XHJcbiAgICAvLyAgIHRoaXMuX2Zvcm1SZXBvLnVubG9ja0Zvcm1SZXNwb25zZSh0aGlzLnVzZXJGb3JtLnJlc3BvbnNlSWQpO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5mb3JtID0gTlVMTF9GT1JNX0ZVTExfT0JKRUNUO1xyXG4gICAgdGhpcy5jYW5jZWxGb3JtLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VNdWx0aXBsZU9wdGlvbihpZDogc3RyaW5nLCBmb3JtUmVzcG9uc2U6IEZvcm1RdWVzdGlvblJlc3BvbnNlLCBhZGQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlc3BvbnNlTGlzdDogc3RyaW5nW10gPSBmb3JtUmVzcG9uc2UucmVzcG9uc2UgPyBmb3JtUmVzcG9uc2UucmVzcG9uc2Uuc3BsaXQoJywnKSA6IFtdO1xyXG4gICAgaWYgKGFkZCkge1xyXG4gICAgICByZXNwb25zZUxpc3QucHVzaChpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNwb25zZUxpc3Quc3BsaWNlKHJlc3BvbnNlTGlzdC5pbmRleE9mKGlkKSwgMSk7XHJcbiAgICB9XHJcbiAgICBmb3JtUmVzcG9uc2UucmVzcG9uc2UgPSByZXNwb25zZUxpc3QudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VMb3ZPcHRpb24oZm9ybVJlc3BvbnNlOiBGb3JtUXVlc3Rpb25SZXNwb25zZSwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICBmb3JtUmVzcG9uc2UucmVzcG9uc2UgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZVRpbWUoZm9ybVJlc3BvbnNlOiBGb3JtUXVlc3Rpb25SZXNwb25zZSwgdGltZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgZm9ybVJlc3BvbnNlLnRpbWVSZXNwb25zZSA9IHRpbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRG9jdW1lbnREZWxldGVkKGRvYzogQ29Eb2N1bWVudCk6IHZvaWQge1xyXG4gICAgQXJyYXlVdGlscy5SZW1vdmVFbGVtZW50KGRvYywgdGhpcy5mb3JtUmVzcG9uc2UuZG9jdW1lbnRzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEb2N1bWVudENoYW5nZWQoZG9jOiBDb0RvY3VtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1SZXNwb25zZS5kb2N1bWVudHMucHVzaChkb2MpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURvY3VtZW50c0FkZGVkKGRvY3M6IENvRG9jdW1lbnRbXSk6IHZvaWQge1xyXG4gICAgZG9jcy5mb3JFYWNoKChkb2N1bWVudDogQ29Eb2N1bWVudCkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZS5kb2N1bWVudHMucHVzaChkb2N1bWVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3ByZXBhcmVOZXdGb3JtKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5jbG9uZUZvcm0gPSA8Rm9ybT50aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShGb3JtLCB0aGlzLmZvcm0pO1xyXG4gICAgaWYgKCF0aGlzLmZvcm1SZXNwb25zZT8uZm9ybUlkKSB7XHJcbiAgICAgIHRoaXMuZm9ybVJlc3BvbnNlID0gPEZvcm1SZXNwb25zZT50aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShGb3JtUmVzcG9uc2UsIHRoaXMudXNlckZvcm0pO1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZS5mb3JtSWQgPSB0aGlzLmZvcm0uZm9ybUlkO1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZS50YWJsZSA9IHRoaXMudGFibGU7XHJcbiAgICAgIHRoaXMuZm9ybVJlc3BvbnNlLmtleSA9IHRoaXMua2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb2RlID0gVXNlckZvcm1Nb2RlLkVkaXQ7XHJcbiAgICAgIC8vIGNvbnN0IGlzTG9ja2VkU3VjY2VzZnVsbHk6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLl9mb3JtUmVwby5sb2NrRm9ybVJlc3BvbnNlKGZvcm1SZXNwb25zZUlkKTtcclxuICAgICAgdGhpcy5fbG9hZERvY3MoKTtcclxuICAgICAgdGhpcy5fcHJlcGFyZUV4aXN0aW5nRm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEZvcm1VdGlscy5NZXJnZVJlc3BvbnNlV2l0aEZvcm0odGhpcy5jbG9uZUZvcm0sIHRoaXMuZm9ybVJlc3BvbnNlKTtcclxuICAgIGlmICh0aGlzLmVuYWJsZVF1ZXN0aW9ucykge1xyXG4gICAgICB0aGlzLl9lbmFibGVRdWVzdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVFeGlzdGluZ0Zvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb25lRm9ybSA9IDxGb3JtPnRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEZvcm0sIHRoaXMuZm9ybSk7XHJcbiAgICB0aGlzLmZvcm1SZXNwb25zZSA9IDxGb3JtUmVzcG9uc2U+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoRm9ybVJlc3BvbnNlLCB0aGlzLnVzZXJGb3JtKTtcclxuICAgIEZvcm1VdGlscy5NZXJnZVJlc3BvbnNlV2l0aEZvcm0odGhpcy5jbG9uZUZvcm0sIHRoaXMuZm9ybVJlc3BvbnNlKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbmFibGVRdWVzdGlvbnMpIHtcclxuICAgICAgdGhpcy5fZW5hYmxlUXVlc3Rpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbmFibGVRdWVzdGlvbnMoKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRJbmRleCBpbiB0aGlzLmNsb25lRm9ybS5xdWVzdGlvbnMpIHtcclxuICAgICAgaWYgKHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9uc1tjdXJyZW50SW5kZXhdKSB7XHJcbiAgICAgICAgY29uc3QgbmV4dFF1ZXN0aW9uOiBGb3JtUXVlc3Rpb24gPSB0aGlzLmNsb25lRm9ybS5xdWVzdGlvbnNbY3VycmVudEluZGV4XTtcclxuICAgICAgICBpZiAobmV4dFF1ZXN0aW9uKSB7XHJcbiAgICAgICAgICBuZXh0UXVlc3Rpb24uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdvdG9RdWVzdGlvbiA9IG5leHRRdWVzdGlvbi5zZXF1ZW5jZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5nb3RvUXVlc3Rpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRG9jcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybVJlc3BvbnNlLmRvY3VtZW50cy5mb3JFYWNoKChkb2M6IENvRG9jdW1lbnQpID0+IHtcclxuICAgICAgaWYgKGRvYy5kb2N1bWVudElkICYmICFkb2MuZG9jdW1lbnRCb2R5KSB7XHJcbiAgICAgICAgdGhpcy5fc2hhcmVkQ29ubmVjdG9yU2VydmljZS5nZXREb2N1bWVudENvbnRlbnQoZG9jLmRvY3VtZW50SWQpLnRoZW4oKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgZG9jLmRvY3VtZW50Qm9keSA9IGNvbnRlbnQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURlZmluaXRpdmVDaGFuZ2UoZGVmaW5pdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5mb3JtUmVzcG9uc2UuaXNGaW5hbCA9IGRlZmluaXRpdmU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29tbWl0VXNlckZvcm0oKSB7XHJcbiAgICBGb3JtVXRpbHMuTWVyZ2VSZXNwb25zZVdpdGhGb3JtKHRoaXMuY2xvbmVGb3JtLCB0aGlzLmZvcm1SZXNwb25zZSk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcclxuICAgICAgY2FzZSBVc2VyRm9ybU1vZGUuQ3JlYXRlOlxyXG4gICAgICAgIHRoaXMuX3NoYXJlZENvbm5lY3RvclNlcnZpY2UuaW5zZXJ0Rm9ybVJlc3BvbnNlKHRoaXMuZm9ybVJlc3BvbnNlKS50aGVuKChyZXNwb25zZTogRm9ybVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZihyZXNwb25zZSAmJiByZXNwb25zZS5yZXNwb25zZUlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZUZvcm0ubmV4dChyZXNwb25zZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcignRVJST1JfU0FWSU5HX0ZPUk1fUkVTUE9OU0UnLCAnRVJST1JfU0FWSU5HX0ZPUk1fUkVTUE9OU0VfVElUTEUnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY3JlYXRlTmV3Rm9ybVJlc3BvbnNlLm5leHQodGhpcy5mb3JtUmVzcG9uc2UpO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgVXNlckZvcm1Nb2RlLkVkaXQ6XHJcbiAgICAgICAgdGhpcy5fc2hhcmVkQ29ubmVjdG9yU2VydmljZS51cGRhdGVGb3JtUmVzcG9uc2UodGhpcy5mb3JtUmVzcG9uc2UpLnRoZW4oKHJlc3BvbnNlOiBGb3JtUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmKHJlc3BvbnNlICYmIHJlc3BvbnNlLnJlc3BvbnNlSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXZlRm9ybS5uZXh0KHJlc3BvbnNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Byb21wdFNlcnZpY2Uuc2hvd0Vycm9yKCdFUlJPUl9TQVZJTkdfRk9STV9SRVNQT05TRScsICdFUlJPUl9TQVZJTkdfRk9STV9SRVNQT05TRV9USVRMRScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlT3BlbkZpbGVzVXBsb2FkKCkge1xyXG4gICAgdGhpcy5maWxlc1VwbG9hZENvbXBvbmVudC5vcGVuRmlsZUJyb3dzZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -4,6 +4,7 @@ import { IconCacheService } from "../../../../service/icon-cache.service";
4
4
  export class PdfPreviewComponent {
5
5
  constructor(iconCacheService) {
6
6
  this.iconCacheService = iconCacheService;
7
+ this._waitingToShowDialog = false;
7
8
  this.disablePdfPreview = false;
8
9
  this.showFilePreview = new EventEmitter();
9
10
  this.icons = Icon;
@@ -15,27 +16,35 @@ export class PdfPreviewComponent {
15
16
  set pdfDoc(value) {
16
17
  if (value !== this._pdfDoc) {
17
18
  this._pdfDoc = value;
19
+ if (this._waitingToShowDialog) {
20
+ this._waitingToShowDialog = false;
21
+ this.showDialog = true;
22
+ }
18
23
  }
19
24
  }
20
25
  get pdfDoc() {
21
26
  return this._pdfDoc;
22
27
  }
23
28
  ngOnInit() {
29
+ //this.showFilePreview.emit(0);
30
+ }
31
+ dialogRequested() {
24
32
  this.showFilePreview.emit(0);
33
+ this._waitingToShowDialog = true;
25
34
  }
26
35
  }
27
36
  PdfPreviewComponent.decorators = [
28
37
  { type: Component, args: [{
29
38
  selector: "co-pdf-preview",
30
- template: `
31
- <div class="pdf-preview-button" [class.disabled]="disablePdfPreview" (click)="showDialog = true">
32
- <co-icon [iconData]="iconCacheService.getIcon(icons.FileMagnifyingGlass)"></co-icon>
33
- </div>
34
- <co-preview-pdf-dialog
35
- *ngIf="showDialog"
36
- [pdfDoc]="pdfDoc"
37
- (closePDFDialog)="showDialog = false">
38
- </co-preview-pdf-dialog>
39
+ template: `
40
+ <div class="pdf-preview-button" [class.disabled]="disablePdfPreview" (click)="dialogRequested()">
41
+ <co-icon [iconData]="iconCacheService.getIcon(icons.FileMagnifyingGlass)"></co-icon>
42
+ </div>
43
+ <co-preview-pdf-dialog
44
+ *ngIf="showDialog"
45
+ [pdfDoc]="pdfDoc"
46
+ (closePDFDialog)="showDialog = false">
47
+ </co-preview-pdf-dialog>
39
48
  `,
40
49
  encapsulation: ViewEncapsulation.None
41
50
  },] }
@@ -49,4 +58,4 @@ PdfPreviewComponent.propDecorators = {
49
58
  disablePdfPreview: [{ type: Input }],
50
59
  showFilePreview: [{ type: Output }]
51
60
  };
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXByZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VuZC1tZXRob2QtZGlhbG9nL2NvbXBvbmVudHMvcGRmLXByZXZpZXcvcGRmLXByZXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQWdCeEUsTUFBTSxPQUFPLG1CQUFtQjtJQTRCOUIsWUFBbUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFSOUMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBR25DLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUQsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFDbkMsZUFBVSxHQUFZLEtBQUssQ0FBQztJQUVzQixDQUFDO0lBMUJuRCxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBSUQsSUFDSSxNQUFNLENBQUMsS0FBVTtRQUNuQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBYUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7OztZQTlDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7R0FTVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBZk8sZ0JBQWdCOzs7d0JBaUJyQixXQUFXLFNBQUMsc0JBQXNCO3FCQU9sQyxLQUFLO2dDQVdMLEtBQUs7OEJBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXBkZi1wcmV2aWV3XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cInBkZi1wcmV2aWV3LWJ1dHRvblwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlUGRmUHJldmlld1wiIChjbGljayk9XCJzaG93RGlhbG9nID0gdHJ1ZVwiPlxyXG4gICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5GaWxlTWFnbmlmeWluZ0dsYXNzKVwiPjwvY28taWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxjby1wcmV2aWV3LXBkZi1kaWFsb2dcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dEaWFsb2dcIlxyXG4gICAgICAgICAgICAgIFtwZGZEb2NdPVwicGRmRG9jXCJcclxuICAgICAgICAgICAgICAoY2xvc2VQREZEaWFsb2cpPVwic2hvd0RpYWxvZyA9IGZhbHNlXCI+XHJcbiAgICAgIDwvY28tcHJldmlldy1wZGYtZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tcGRmLXByZXZpZXdcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wZGZEb2M6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcGRmRG9jKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fcGRmRG9jKSB7XHJcbiAgICAgIHRoaXMuX3BkZkRvYyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHBkZkRvYygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BkZkRvYztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRpc2FibGVQZGZQcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzaG93RmlsZVByZXZpZXc6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG4gIHB1YmxpYyBzaG93RGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dGaWxlUHJldmlldy5lbWl0KDApO1xyXG4gIH1cclxufVxyXG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXByZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VuZC1tZXRob2QtZGlhbG9nL2NvbXBvbmVudHMvcGRmLXByZXZpZXcvcGRmLXByZXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQWdCeEUsTUFBTSxPQUFPLG1CQUFtQjtJQWlDOUIsWUFBbUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUExQjdDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQWtCdkMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBR25DLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUQsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFDbkMsZUFBVSxHQUFZLEtBQUssQ0FBQztJQUVzQixDQUFDO0lBL0JuRCxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsSUFDSSxNQUFNLENBQUMsS0FBVTtRQUNuQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUN4QjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBYUQsUUFBUTtRQUNOLCtCQUErQjtJQUNqQyxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7OztZQXhERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7R0FTVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBZk8sZ0JBQWdCOzs7d0JBaUJyQixXQUFXLFNBQUMsc0JBQXNCO3FCQVFsQyxLQUFLO2dDQWVMLEtBQUs7OEJBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY28tcGRmLXByZXZpZXdcIixcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgY2xhc3M9XCJwZGYtcHJldmlldy1idXR0b25cIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZVBkZlByZXZpZXdcIiAoY2xpY2spPVwiZGlhbG9nUmVxdWVzdGVkKClcIj5cbiAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkZpbGVNYWduaWZ5aW5nR2xhc3MpXCI+PC9jby1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8Y28tcHJldmlldy1wZGYtZGlhbG9nXG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0RpYWxvZ1wiXG4gICAgICAgICAgICAgIFtwZGZEb2NdPVwicGRmRG9jXCJcbiAgICAgICAgICAgICAgKGNsb3NlUERGRGlhbG9nKT1cInNob3dEaWFsb2cgPSBmYWxzZVwiPlxuICAgICAgPC9jby1wcmV2aWV3LXBkZi1kaWFsb2c+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUGRmUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXBkZi1wcmV2aWV3XCIpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIF9wZGZEb2M6IGFueTtcbiAgcHJpdmF0ZSBfd2FpdGluZ1RvU2hvd0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwZGZEb2ModmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fcGRmRG9jKSB7XG4gICAgICB0aGlzLl9wZGZEb2MgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLl93YWl0aW5nVG9TaG93RGlhbG9nKSB7XG4gICAgICAgIHRoaXMuX3dhaXRpbmdUb1Nob3dEaWFsb2cgPSBmYWxzZVxuICAgICAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBwZGZEb2MoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fcGRmRG9jO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVQZGZQcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzaG93RmlsZVByZXZpZXc6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XG4gIHB1YmxpYyBzaG93RGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vdGhpcy5zaG93RmlsZVByZXZpZXcuZW1pdCgwKTtcbiAgfVxuXG4gIHB1YmxpYyBkaWFsb2dSZXF1ZXN0ZWQoKSB7XG4gICAgdGhpcy5zaG93RmlsZVByZXZpZXcuZW1pdCgwKTtcbiAgICB0aGlzLl93YWl0aW5nVG9TaG93RGlhbG9nID0gdHJ1ZTtcbiAgfVxufVxuIl19