@tsi-developpement/tsi-shared-ui 1.10.2 → 1.10.4

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,6 +1,7 @@
1
1
  import { Component, EventEmitter, HostListener, inject, Input, Output, ViewChild } from '@angular/core';
2
2
  import { rtlModeKeys } from '../../../consts/locals.const';
3
3
  import { ButtonType, GridSelectionMode, InputTypes, ModalSizeEnum, TooltipPosition } from '../../../enums';
4
+ import { preciseAdd, preciseSum } from '../../../functions';
4
5
  import { CollectionChangeAction } from '../../../models/collection/observable-collection';
5
6
  import { EntityValidationsService } from '../../../services/validation/entity-validations.service';
6
7
  import { GenericValidationStateService } from '../../../services';
@@ -453,22 +454,12 @@ export class EditableGridComponent extends TsiInputBase {
453
454
  }
454
455
  getSummary(col) {
455
456
  if (col.haveSummary == true) {
456
- let sum = 0;
457
- this.gridData.forEach((row) => {
458
- sum += row[col.field];
459
- });
460
- return sum;
457
+ return preciseSum((this.gridData ?? []).map((row) => row[col.field]));
461
458
  }
462
459
  return 0;
463
460
  }
464
461
  rowSummary(row) {
465
- let sum = 0;
466
- this.columns.forEach(col => {
467
- if (col.rowSummary == true) {
468
- sum += row[col.field];
469
- }
470
- });
471
- return sum;
462
+ return preciseSum(this.columns.filter(col => col.rowSummary == true).map(col => row[col.field]));
472
463
  }
473
464
  onRowSelected(event) {
474
465
  this.selectedItem = event.data;
@@ -719,7 +710,7 @@ export class EditableGridComponent extends TsiInputBase {
719
710
  }
720
711
  _fusionRows(row1, row2) {
721
712
  this._sumAtFusionFields?.forEach(f => {
722
- row1[f] += row2[f];
713
+ row1[f] = preciseAdd(row1[f], row2[f]);
723
714
  });
724
715
  }
725
716
  _cancelPendingDuplicateEmit() {
@@ -896,4 +887,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
896
887
  type: HostListener,
897
888
  args: ['document:keydown', ['$event']]
898
889
  }] } });
899
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvaW5wdXQtY29tcG9uZW50cy9lZGl0YWJsZS1ncmlkL2VkaXRhYmxlLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvZWRpdGFibGUtZ3JpZC9lZGl0YWJsZS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0csT0FBTyxFQUFFLHNCQUFzQixFQUFnRCxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWpFLE1BQU0sT0FBTyxx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a0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFNTyx5QkFBeUI7c0JBQXJDLEtBQUs7Z0JBT0csV0FBVztzQkFBbkIsS0FBSztnQkFFRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQU1JLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFJRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUcsc0JBQXNCO3NCQUEvQixNQUFNO2dCQUVHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsc0JBQXNCO3NCQUEvQixNQUFNO2dCQUVHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFHb0MsRUFBRTtzQkFBNUMsU0FBUzt1QkFBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUV6QixFQUFFO3NCQUFWLEtBQUs7Z0JBMFpOLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlLCBTb3J0RXZlbnQsIFRhYmxlU3RhdGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVJvd1NlbGVjdEV2ZW50LCBUYWJsZVJvd1VuU2VsZWN0RXZlbnQgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHJ0bE1vZGVLZXlzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzL2xvY2Fscy5jb25zdCc7XHJcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEdyaWRTZWxlY3Rpb25Nb2RlLCBJbnB1dFR5cGVzLCBNb2RhbFNpemVFbnVtLCBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IENlbGxDaGFuZ2VkUmVzdWx0LCBHcmlkQ29sdW1uLCBJR3JpZENvbmZpZ3VyYXRpb24sIFJvd0FkZGVkUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uQ2hhbmdlQWN0aW9uLCBDb2xsZWN0aW9uQ2hhbmdlZEV2ZW50LCBPYnNlcnZhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2xsZWN0aW9uL29ic2VydmFibGUtY29sbGVjdGlvbic7XHJcbmltcG9ydCB7IEVudGl0eVZhbGlkYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24vZW50aXR5LXZhbGlkYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0vZm9ybS1zdGF0ZSc7XHJcbmltcG9ydCB7IFRzaUlucHV0QmFzZSB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL3RzaS1pbnB1dC1iYXNlL3RzaS1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbHVtbldpZHRoQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL3RzaS1oZWxwZXJzL2NvbHVtbi13aWR0aC5jb250cm9sbGVyJztcclxuaW1wb3J0IHsgR3JpZFNpemluZ01vZGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9ncmlkLXNpemluZy1tb2RlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRhYmxlLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRhYmxlLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtHZW5lcmljVmFsaWRhdGlvblN0YXRlU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRhYmxlR3JpZENvbXBvbmVudCBleHRlbmRzIFRzaUlucHV0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgLy8jcmVnaW9uIGxvY2FsIHZhcnNcclxuICAvLyNyZWdpb24gcHJpdmF0ZSBsb2NhbCB2YXJzXHJcbiAgcHJpdmF0ZSBzYXZlRXZlbnRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfaXNBdXRvUm93TnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfYXV0b1Jvd051bWJlckZpZWxkOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIF9jdXJyZW50Um93TnVtYmVyOiBudW1iZXIgPSAwO1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuICBpc0FyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZ3JpZERhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIF9lcXVhdGFibGVGaWVsZHM6IEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfc3VtQXRGdXNpb25GaWVsZHM6IEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfZXF1YWxpdHlDaGVja09uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZjZTb3VyY2VSb3c6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGVuZGluZ0R1cGxpY2F0ZUVtaXRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9wZW5kaW5nRHVwbGljYXRlUmVzdWx0OiBSb3dBZGRlZFJlc3VsdCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNFQVJDSF9MQUJFTF9QUkVGSVggPSAnX19zZWFyY2hfbGFiZWxfXyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgb2YgdGhlIGN1c3RvbSBQcmltZU5HIGZpbHRlciByZWdpc3RlcmVkIGZvciBnbG9iYWwgc2VhcmNoLlxyXG4gICAqIEV4dGVuZHMgdGhlIGJ1aWx0LWluICdjb250YWlucycgd2l0aCBsb2NhbGUtYXdhcmUgZGVjaW1hbCBtYXRjaGluZ1xyXG4gICAqIChjb21tYSB2cyBkb3Qgc2VwYXJhdG9yKSB3aGlsZSBrZWVwaW5nIGZ1bGwgcHJvdGVjdGlvbiBhZ2FpbnN0IGZhbHNlXHJcbiAgICogcG9zaXRpdmVzIG9uIHRleHQgY29sdW1ucy5cclxuICAgKiBAc2VlIF9yZWdpc3RlckdyaWRDb250YWluc0ZpbHRlclxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFQ0lNQUxfQVdBUkVfQ09OVEFJTlNfRklMVEVSID0gJ2dyaWQtY29udGFpbnMnO1xyXG4gIG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGUgPSBHcmlkU2VsZWN0aW9uTW9kZS5NdWx0aXBsZTtcclxuICBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgZ2xvYmFsRmlsdGVyRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG4gIGlucHV0VHlwZXMgPSBJbnB1dFR5cGVzO1xyXG4gIG1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uRXh0cmFMYXJnZTtcclxuICBAVmlld0NoaWxkKFwiZWRpdGFibGVUYWJsZVwiKSBlZGl0YWJsZVRhYmxlPzogVGFibGVcclxuXHJcbiAgYnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkSXRlbTogYW55O1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIElucHV0c1xyXG4gIEBJbnB1dCgnY29uZmlndXJhdGlvbicpIGNvbmZpZ3VyYXRpb24/OiBJR3JpZENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCdrZXknKSBrZXk6IHN0cmluZyA9ICd1aWQnO1xyXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgQElucHV0KCkgc2F2ZUV2ZW50PzogT2JzZXJ2YWJsZTx2b2lkPjtcclxuICAvKipcclxuICAgKiBDb250cm9scyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZ2xvYmFsIHNlYXJjaCBiYXIgaW4gdGhlIGdyaWQgY2FwdGlvbi5cclxuICAgKlxyXG4gICAqIFdoZW4gYHRydWVgLCBhIHNlYXJjaCBpbnB1dCBhbmQgYnV0dG9uIGFyZSBkaXNwbGF5ZWQsIGFsbG93aW5nIHVzZXJzIHRvXHJcbiAgICogZmlsdGVyIHJvd3MgYWNyb3NzIGFsbCB2aXNpYmxlIGNvbHVtbnMgc2ltdWx0YW5lb3VzbHkuIFN1cHBvcnRzIHBsYWluIHRleHQsXHJcbiAgICogZHJvcGRvd24gbGFiZWxzIChyZXNvbHZlZCB2aWEgc2hhZG93IGZpZWxkcyksIGFuZCBkZWNpbWFsIHZhbHVlcyB3aXRoXHJcbiAgICogbG9jYWxlLWF3YXJlIGNvbW1hL2RvdCBtYXRjaGluZy5cclxuICAgKlxyXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAgdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW91ciBmb3IgYWxsIGNvbnN1bWVyc1xyXG4gICAqIHRoYXQgZG8gbm90IGV4cGxpY2l0bHkgb3B0IGluIOKAlCBlbmFibGluZyBpdCBvbiBhIHNwZWNpZmljIGdyaWQgaXMgYXMgc2ltcGxlXHJcbiAgICogYXMgYWRkaW5nIGBbc2hvd0dsb2JhbFNlYXJjaF09XCJ0cnVlXCJgLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dHbG9iYWxTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0FkZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuICBASW5wdXQoKSBzaG93RGVsZXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTsvL1RPIERPIFNhdmUgQnV0dG9uIE9wdGlvblxyXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTsvL1RPIERPIFNhdmUgQnV0dG9uIE9wdGlvblxyXG4gIEBJbnB1dCgpIHNob3dSb3dTdW1tYXJ5OiBib29sZWFuID0gZmFsc2U7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuXHJcbiAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnNTAwcHgnO1xyXG5cclxuICAvKipcclxuICAgKiBGaWxsIChkZWZhdWx0KTogdGhlIHRhYmxlIHN0cmV0Y2hlcyB0byBmaWxsIGl0cyBjb250YWluZXIuIEh1ZzogdGhlIHRhYmxlIHNocmlua3MgdG9cclxuICAgKiBpdHMgY29sdW1ucycgc2l6ZSAobmV2ZXIgd2lkZXIgdGhhbiB0aGUgY29udGFpbmVyKSwgbGVhdmluZyBsZWZ0b3ZlciB3aWR0aCBlbXB0eS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzaXppbmdNb2RlOiBHcmlkU2l6aW5nTW9kZSA9IEdyaWRTaXppbmdNb2RlLkZpbGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNpemluZyBzdHlsZSBib3VuZCB0byB0aGUgcC10YWJsZSdzIGBbdGFibGVTdHlsZV1gIOKAlCB0aGUgc2luZ2xlIGxldmVyIHRoYXQgZGlzdGluZ3Vpc2hlc1xyXG4gICAqIEZpbGwgZnJvbSBIdWcgKHNlZSBHcmlkU2l6aW5nTW9kZSkuIEFwcGxpZWQgaW5saW5lIG9uIHRoZSBQcmltZU5HIHRhYmxlLCBzbyBpdCBiZWF0c1xyXG4gICAqIFByaW1lTkcncyBkZWZhdWx0IGAucC1kYXRhdGFibGUtdGFibGUgeyB3aWR0aDogMTAwJSB9YCB3aXRoIG5vIGAhaW1wb3J0YW50YC9gOjpuZy1kZWVwYC5cclxuICAgKiAtIEZpbGw6IGRlZmF1bHQgKG5vIGZvcmNlZCB3aWR0aDsgUHJpbWVORyBmaWxscyB0aGUgY29udGFpbmVyKS5cclxuICAgKiAtIEh1ZzogYHdpZHRoOmF1dG9gIHNocmlua3MgdGhlIHRhYmxlIHRvIGl0cyBjb2x1bW5zOyBgbWF4LXdpZHRoOjEwMCVgIGtlZXBzIGl0IGluc2lkZSB0aGVcclxuICAgKiAgIHBhZ2UgKG92ZXJmbG93IHNjcm9sbHMpOyBgbWluLXdpZHRoOjBgIGF2b2lkcyBhbnkgaW5oZXJpdGVkIGZsb29yLlxyXG4gICAqXHJcbiAgICogSHVnICsgYGNvbHVtblJlc2l6ZU1vZGU9XCJleHBhbmRcImA6IGRyYWdnaW5nIGEgY29sdW1uIHJlc2l6ZXMgdGhhdCBjb2x1bW4sIGJ1dCBgd2lkdGg6YXV0b2BcclxuICAgKiBpcyByZS1hc3NlcnRlZCBvbiBjaGFuZ2UgZGV0ZWN0aW9uLCBzbyB0aGUgdGFibGUgaXRzZWxmIHN0YXlzIGh1Z2dlZCBhbmQgbmV2ZXIgZXhwYW5kcy5cclxuICAgKi9cclxuICBnZXQgdGFibGVTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcclxuICAgIHJldHVybiB0aGlzLnNpemluZ01vZGUgPT09IEdyaWRTaXppbmdNb2RlLkh1Z1xyXG4gICAgICA/IHsgJ3dpZHRoJzogJ2F1dG8nLCAnbWluLXdpZHRoJzogJzAnLCAnbWF4LXdpZHRoJzogJzEwMCUnIH1cclxuICAgICAgOiB7fTtcclxuICB9XHJcbiAgQElucHV0KCkgcm93UGVyUGFnZTogbnVtYmVyW10gPSBbNSwgMTAsIDIwXTtcclxuICAvLyBASW5wdXQoKSBpc1BhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDVcclxuICBASW5wdXQoKSBlbnRpdHlQcmltYXJ5S2V5TmFtZSA6IHN0cmluZyA9ICd1aWQnXHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdGVkQ29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXTtcclxuXHJcbiAgZ2V0IHNlbGVjdGVkQ29sdW1ucygpOiBBcnJheTxHcmlkQ29sdW1uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgc2V0IHNlbGVjdGVkQ29sdW1ucyh2YWx1ZTogQXJyYXk8R3JpZENvbHVtbj4pIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkQ29sdW1ucyA9IHZhbHVlO1xyXG4gICAgdGhpcy5fc3luY0dsb2JhbEZpbHRlckZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXTtcclxuICBwcml2YXRlIF90ZW1wQ29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXTtcclxuICBwcml2YXRlIF9jb2x1bW5zQ2hhbmdlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZ2V0IGNvbHVtbnMoKTogQXJyYXk8R3JpZENvbHVtbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY29sdW1ucyh2YWx1ZTogQXJyYXk8R3JpZENvbHVtbj4gfCBPYnNlcnZhYmxlQ29sbGVjdGlvbjxHcmlkQ29sdW1uPikge1xyXG4gICAgdGhpcy5fY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgaXNPYnNlcnZhYmxlID0gKHZhbHVlIGFzIE9ic2VydmFibGVDb2xsZWN0aW9uPEdyaWRDb2x1bW4+KS5pc09ic2VydmFibGVDb2xsZWN0aW9uID09PSB0cnVlO1xyXG4gICAgY29uc3QgaXRlbXMgPSBpc09ic2VydmFibGUgPyAodmFsdWUgYXMgT2JzZXJ2YWJsZUNvbGxlY3Rpb248R3JpZENvbHVtbj4pLnRvQXJyYXkoKSA6IHZhbHVlIGFzIEFycmF5PEdyaWRDb2x1bW4+O1xyXG4gICAgaXRlbXMuZm9yRWFjaChlbCA9PiBlbC50cmFuc2xhdGVkSGVhZGVyID0gdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybShlbC5oZWFkZXIgPz8gXCJcIikpO1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IGl0ZW1zO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbLi4uaXRlbXNdO1xyXG5cclxuICAgIGlmIChpc09ic2VydmFibGUpIHtcclxuICAgICAgdGhpcy5fY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24gPSAodmFsdWUgYXMgT2JzZXJ2YWJsZUNvbGxlY3Rpb248R3JpZENvbHVtbj4pLmNoYW5nZWQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImV2ZW50IGNoYW5nZWQgPT4gXCIsIGV2ZW50KVxyXG4gICAgICAgIHRoaXMuX29uQ29sdW1uc0NoYW5nZWQoZXZlbnQpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3ZlcmlmeUdyaWRSZXF1aXJlbWVudHMoKTtcclxuICAgIHRoaXMuX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpO1xyXG4gIH1cclxuICBASW5wdXQoKSBzZXQgZ3JpZERhdGEoZGF0YTogQXJyYXk8YW55Pikge1xyXG4gICAgdGhpcy5fZ3JpZERhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5faW5pdEN1cnJlbnRSb3dOdW1iZXJBbmRPcmRlckJ5Um93TnVtYmVyKCk7XHJcbiAgfVxyXG4gIGdldCBncmlkRGF0YSgpIHsgcmV0dXJuIHRoaXMuX2dyaWREYXRhOyB9XHJcblxyXG4gIEBJbnB1dCgpIGlzVGFibGVMb2FkaW5nPzogYm9vbGVhbjtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHBhcmVudDogYW55O1xyXG5cclxuICBASW5wdXQoKSBzaG93U2F2ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuICBASW5wdXQoKSBzaG93QWN0aW9uQ29sdW1uOiBib29sZWFuID0gdHJ1ZTsvL1RPIERPIFNhdmUgQnV0dG9uIE9wdGlvblxyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlUm93RGlzYWJsaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHJvd1N1bW1hcnlDb25maWc6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBASW5wdXQoKSBzaG93SGF2ZVN1bWFyeT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Um93U3VtYXJ5PzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipzZWxlY3Rpb24gKi9cclxuICBASW5wdXQoKSBzZWxlY3RLZXlPbmx5OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBHcmlkU2VsZWN0aW9uTW9kZSB8IGFueSA9IEdyaWRTZWxlY3Rpb25Nb2RlLlNpbmdsZTtcclxuICBASW5wdXQoKSBzaG93Q29uc3VsdEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9lZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGdldCBlZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VkaXRhYmxlR3JpZEJ1c2luZXNzQ2xhc3M7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBlZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9lZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzID0gY2xhc3NOYW1lO1xyXG4gICAgdGhpcy5nZW5lcmljVmFsaWRhdGlvblN0YXRlU2VydmljZT8ubG9hZEVudGl0eVZhbGlkYXRpb25JbmZvcyh0aGlzLl9lZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzKTtcclxuICB9XHJcblxyXG5cclxuICAvKipvcmRlciAqL1xyXG4gIEBJbnB1dCgpIG9yZGVyQ29sdW1uOiBzdHJpbmcgPSAndWlkJztcclxuXHJcbiAgQElucHV0KCkgZGVsZXRlTGluZUJ1dHRvbkRpc2FibGVkITogKGl0ZW06IGFueSkgPT4gYW55XHJcblxyXG4gIEBJbnB1dCgpIHNob3dEdXBsaWNhdGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dHNcclxuXHJcbiAgQE91dHB1dCgpIHJlZnJlc2hFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvL0BPdXRwdXQoKSBhY3Rpb25FdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxHcmlkQWN0aW9uRW1pdFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRBY3Rpb25FbWl0UmVzdWx0PigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2F2ZURhdGFFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgcm93Q2hhbmdlZEV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFJvd0V2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBhZGRlZFJvd0V2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPFJvd0FkZGVkUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8Um93QWRkZWRSZXN1bHQ+KClcclxuXHJcbiAgQE91dHB1dCgpIGZvY3VzT3V0RXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBjZWxsQ2hhbmdlZDogRXZlbnRFbWl0dGVyPENlbGxDaGFuZ2VkUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENoYW5nZWRSZXN1bHQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSByb3dEZWxldGVkRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd1NlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZm9jdXNPdXRSb3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29uc3VsdENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0R1cGxpY2F0ZWRFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxSb3dBZGRlZFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0FkZGVkUmVzdWx0PigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkKFwiZHRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyBkdDogVGFibGUgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUcmFja3Mgcm93cyBieSB0aGVpciBidXNpbmVzcyBrZXkgKGBrZXlgIGlucHV0KSBzbyBQcmltZU5HIHJldXNlcyBleGlzdGluZyByb3cgdmlld3NcclxuICAgKiBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcvcmVjcmVhdGluZyB0aGVtIHdoZW4gdGhlIHJvdyBhcnJheSBpcyByZXBsYWNlZCB3aXRoIG9iamVjdHMgc2hhcmluZ1xyXG4gICAqIHRoZSBzYW1lIGtleSAoZS5nLiBhZnRlciBhIHJlY2FsY3VsYXRpb24gdGhhdCBjbG9uZXMgdGhlIGRhdGEpLiBXaXRob3V0IHRoaXMsIGV2ZXJ5IGNlbGxcclxuICAgKiBlZGl0b3Ig4oCUIGluY2x1ZGluZyBzZXJ2ZXItYmFja2VkIHNlYXJjaCBjb21ib3Mg4oCUIGlzIHJlLWluc3RhbnRpYXRlZCBhbmQgcmUtZmV0Y2hlcyBpdHMgZGF0YS5cclxuICAgKiBGYWxscyBiYWNrIHRvIHRoZSByb3cgaW5kZXggd2hlbiB0aGUga2V5IGlzIGFic2VudCAoZS5nLiBicmFuZC1uZXcgcm93cykuXHJcbiAgICogQXJyb3cgcHJvcGVydHkgc28gYHRoaXNgIGlzIHByZXNlcnZlZCB3aGVuIFByaW1lTkcgaW52b2tlcyBpdC5cclxuICAgKi9cclxuICByb3dUcmFja0J5ID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IGFueSA9PiBpdGVtPy5bdGhpcy5rZXldID8/IGluZGV4O1xyXG5cclxuICBwcml2YXRlIF9lbnRpdHlWYWxpZGF0aW9uc1NlcnZpY2UgPSBpbmplY3QoRW50aXR5VmFsaWRhdGlvbnNTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9jYWxpemVQaXBlOiBMb2NhbGl6ZVBpcGUsIHByaXZhdGUgX2ZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl9yZWdpc3RlckdyaWRDb250YWluc0ZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICB0aGlzLl9pbml0U2F2ZUV2ZW50U3Vic2NyaXB0aW9uKCk7XHJcbiAgICB0aGlzLl92ZXJpZnlHcmlkUmVxdWlyZW1lbnRzKCk7XHJcbiAgICB0aGlzLl9pbml0Q3VycmVudFJvd051bWJlckFuZE9yZGVyQnlSb3dOdW1iZXIoKTtcclxuICAgIHRoaXMuX2luaXRFcXVhdGFibGVGaWVsZHMoKTtcclxuICAgIHRoaXMuX2luaXRTdW1BdEZ1c2lvbkZpZWxkcygpO1xyXG4gICAgXHJcbiAgICBsZXQgbGFuZ3VlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0ocnRsTW9kZUtleXMucnRsTW9kZUVuYWJsZWQpO1xyXG4gICAgXHJcbiAgICBpZiAobGFuZ3VlICYmIEpTT04ucGFyc2UobGFuZ3VlKSkge1xyXG4gICAgICB0aGlzLmlzQXIgPSB0cnVlXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5pc0FyID0gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDb2x1bW5zIHx8IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdGVtcENvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBmaW5kQ29sdW1uQnlLZXkoa2V5OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgZm9yIChsZXQgY29sIG9mIHRoaXMuY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2wuaGVhZGVyID09PSBrZXkgfHwgY29sLmZpZWxkID09PSBrZXkpIHJldHVybiBjb2w7XHJcbiAgICAgICAgZWxzZSBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgcmVzdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgbGV0IHN0YXRlOiBUYWJsZVN0YXRlID0gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uKVxyXG4gICAgaWYgKHRoaXMuZHQpIHtcclxuICAgICAgdGhpcy5jb2x1bW5XaWR0aC5zZXRSZW1lbWJlcmVkKHN0YXRlLmNvbHVtbldpZHRocyk7XHJcbiAgICAgIHRoaXMuZHQuY29sdW1uV2lkdGhzU3RhdGUgPSBzdGF0ZS5jb2x1bW5XaWR0aHM7XHJcbiAgICAgIHRoaXMuZHQudGFibGVXaWR0aFN0YXRlID0gc3RhdGUudGFibGVXaWR0aDtcclxuXHJcbiAgICAgIGxldCBjb2x1bW5PcmRlciA9IHN0YXRlLmNvbHVtbk9yZGVyO1xyXG5cclxuICAgICAgaWYgKGNvbHVtbk9yZGVyKSB7XHJcbiAgICAgICAgbGV0IHJlb3JkZXJlZENvbHVtbnMgPSB0aGlzLmdldFJlb3JkZXJlZENvbHVtbnMoY29sdW1uT3JkZXIpO1xyXG4gICAgICAgIGlmIChyZW9yZGVyZWRDb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVvcmRlcmVkQ29sdW1ucztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFwcGx5IHRoZSByZW1lbWJlcmVkIGNvbHVtbiB3aWR0aHMgdG8gdGhlIERPTS4gQXNzaWduaW5nIGNvbHVtbldpZHRoc1N0YXRlXHJcbiAgICAgIC8vIGFsb25lIGlzIGEgbm8tb3AgaGVyZSBiZWNhdXNlIHRoZSBncmlkIGlzIG5vdCBQcmltZU5HLVwic3RhdGVmdWxcIiAobm8gc3RhdGVLZXkpLlxyXG4gICAgICB0aGlzLmR0LnJlc3RvcmVDb2x1bW5XaWR0aHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJlb3JkZXJlZENvbHVtbnMoY29sdW1uT3JkZXI6IHN0cmluZ1tdKTogYW55W10ge1xyXG4gICAgbGV0IHJlb3JkZXJlZENvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgY29sdW1uT3JkZXIubWFwKChrZXkpID0+IHtcclxuICAgICAgbGV0IGNvbCA9IHRoaXMuZmluZENvbHVtbkJ5S2V5KGtleSk7XHJcbiAgICAgIGlmIChjb2wpIHtcclxuICAgICAgICByZW9yZGVyZWRDb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlb3JkZXJlZENvbHVtbnM7XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uOiBzdHJpbmcpIHtcclxuICAgIGxldCBzdGF0ZTogVGFibGVTdGF0ZSA9IEpTT04ucGFyc2UoY29uZmlndXJhdGlvbilcclxuICAgIGlmICh0aGlzLmR0KSB7XHJcbiAgICAgIHRoaXMuY29sdW1uV2lkdGgucmVzZXQoKTtcclxuICAgICAgdGhpcy5jb2x1bW5XaWR0aC5zZXRSZW1lbWJlcmVkKHN0YXRlLmNvbHVtbldpZHRocyk7XHJcbiAgICAgIHRoaXMuZHQuY29sdW1uV2lkdGhzU3RhdGUgPSBzdGF0ZS5jb2x1bW5XaWR0aHM7XHJcbiAgICAgIHRoaXMuZHQudGFibGVXaWR0aFN0YXRlID0gc3RhdGUudGFibGVXaWR0aDtcclxuXHJcbiAgICAgIGxldCBjb2x1bW5PcmRlciA9IHN0YXRlLmNvbHVtbk9yZGVyO1xyXG5cclxuICAgICAgaWYgKGNvbHVtbk9yZGVyKSB7XHJcbiAgICAgICAgbGV0IHJlb3JkZXJlZENvbHVtbnMgPSB0aGlzLmdldFJlb3JkZXJlZENvbHVtbnMoY29sdW1uT3JkZXIpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVvcmRlcmVkQ29sdW1ucy5sZW5ndGggPiAwID8gcmVvcmRlcmVkQ29sdW1ucyA6IFsuLi50aGlzLl9jb2x1bW5zXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kdC5yZXN0b3JlQ29sdW1uV2lkdGhzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZSgpIHtcclxuICAgIGxldCBzdGF0ZTogVGFibGVTdGF0ZSA9IHt9O1xyXG5cclxuICAgIGlmICghdGhpcy5kdCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kdC5yZXNpemFibGVDb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuZHQuc2F2ZUNvbHVtbldpZHRocyhzdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kdC5zYXZlQ29sdW1uT3JkZXIoc3RhdGUpO1xyXG5cclxuICAgIHJldHVybiBzdGF0ZVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hhcmVkIG1vZGVsIGZvciB0aGUgZGV2ZWxvcGVyLXdpZHRoIC8gd3JhcHBpbmcgLyByZXNpemUtcHJpb3JpdHkgYmVoYXZpb3IuIEFjdGlvbi9idXR0b25cclxuICAgKiBjb2x1bW5zIGFuZCBmcm96ZW4gY29sdW1ucyBhcmUgZXhjbHVkZWQgKGZyb3plbiBjb2x1bW5zIG11c3Qga2VlcCB0aGVpciBzdGlja3ktb2Zmc2V0XHJcbiAgICogd2lkdGggb3IgbGF0ZXIgZnJvemVuIGNvbHVtbnMgbWlzYWxpZ24pOyBhbGwgb3RoZXIgY29sdW1ucyBhcmUgZWxpZ2libGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5XaWR0aCA9IG5ldyBDb2x1bW5XaWR0aENvbnRyb2xsZXIoKGNvbCkgPT4gIWNvbC5pc0J1dHRvbiAmJiAhY29sLmlzRnJvemVuKTtcclxuXHJcbiAgLyoqIFJlbWVtYmVyIHdoaWNoIGNvbHVtbiB0aGUgdXNlciByZXNpemVkIHNvIGl0cyBkZXZlbG9wZXItcHJlZmVycmVkIHdpZHRoIHlpZWxkcy4gKi9cclxuICBvbkNvbFJlc2l6ZShldmVudDogeyBlbGVtZW50PzogSFRNTEVsZW1lbnQ7IGRlbHRhPzogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1uV2lkdGgub25SZXNpemUoZXZlbnQ/LmVsZW1lbnQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1maWVsZCcpKTtcclxuICB9XHJcblxyXG4gIC8qKiBXaGV0aGVyIGEgY29sdW1uJ3MgY29udGVudCBzaG91bGQgd3JhcCB0byBzdGF5IGluc2lkZSBpdHMgY29uc3RyYWluZWQgd2lkdGguICovXHJcbiAgc2hvdWxkV3JhcENvbHVtbihjb2w6IEdyaWRDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtbldpZHRoLnNob3VsZFdyYXAoY29sKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldmVsb3BlciBzaXplIHN0eWxlIG9ubHksIGJvdW5kIHZpYSBgW25nU3R5bGVdYCBvbiB0aGUgaGVhZGVyL3N1bW1hcnkgY2VsbHMgYWxvbmdzaWRlXHJcbiAgICogdGhlaXIgdW50b3VjaGVkIGBbc3R5bGVdPVwiY29sLnN0eWxlXCJgIChzbyBhIHN0cmluZyBgY29sLnN0eWxlYCBpcyBuZXZlciBzcHJlYWQvYnJva2VuKS5cclxuICAgKi9cclxuICBnZXRDb2x1bW5TaXplU3R5bGUoY29sOiBHcmlkQ29sdW1uKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5XaWR0aC5zaXplU3R5bGUoY29sKTtcclxuICB9XHJcblxyXG4gIC8qKiBCb2R5IGA8dGQ+YCBzdHlsZTogUlRMIGFsaWdubWVudCArIHRvcC1hbGlnbiAoZWxpZ2libGUgY2VsbHMpICsgZGV2ZWxvcGVyIHNpemUgc3R5bGUuICovXHJcbiAgZ2V0Qm9keUNvbHVtblN0eWxlKGNvbDogR3JpZENvbHVtbik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xyXG4gICAgY29uc3QgYmFzZSA9IHRoaXMuaXNBciA/IHsgJ3RleHQtYWxpZ24nOiAnc3RhcnQnIH0gOiB7fTtcclxuICAgIHJldHVybiB7IC4uLmJhc2UsIC4uLnRoaXMuY29sdW1uV2lkdGgudmVydGljYWxBbGlnbihjb2wpLCAuLi50aGlzLmNvbHVtbldpZHRoLnNpemVTdHlsZShjb2wpIH07XHJcbiAgfVxyXG5cclxuICBpc0RlbGV0ZUJ1dHRvbkRpc2FibGVkKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGVsZXRlTGluZUJ1dHRvbkRpc2FibGVkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZWxldGVMaW5lQnV0dG9uRGlzYWJsZWQoaXRlbSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKVxyXG4gICAgdGhpcy5zYXZlRXZlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpO1xyXG4gICAgdGhpcy5fY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vbkNvbHVtbnNDaGFuZ2VkKGV2ZW50OiBDb2xsZWN0aW9uQ2hhbmdlZEV2ZW50PEdyaWRDb2x1bW4+KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmFjdGlvbikge1xyXG4gICAgICBjYXNlIENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uQWRkOiB7XHJcbiAgICAgICAgaWYgKGV2ZW50Lm5ld0l0ZW1zICYmIGV2ZW50Lm5ld1N0YXJ0aW5nSW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZXZlbnQubmV3SXRlbXMuZm9yRWFjaChjb2wgPT5cclxuICAgICAgICAgICAgY29sLnRyYW5zbGF0ZWRIZWFkZXIgPSB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKGNvbC5oZWFkZXIgPz8gXCJcIilcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBwcmV2U2VsZWN0ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcclxuICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbLi4udGhpcy5fY29sdW1uc107XHJcbiAgICAgICAgICBuZXdDb2x1bW5zLnNwbGljZShldmVudC5uZXdTdGFydGluZ0luZGV4LCAwLCAuLi5ldmVudC5uZXdJdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gbmV3Q29sdW1ucztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5fY29sdW1ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGMgPT4gcHJldlNlbGVjdGVkLmhhcyhjKSB8fCBldmVudC5uZXdJdGVtcyEuaW5jbHVkZXMoYylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ29sbGVjdGlvbkNoYW5nZUFjdGlvbi5SZW1vdmU6IHtcclxuICAgICAgICBpZiAoZXZlbnQub2xkSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBuZXcgU2V0KGV2ZW50Lm9sZEl0ZW1zKTtcclxuICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLl9jb2x1bW5zLmZpbHRlcihjID0+ICFyZW1vdmVkLmhhcyhjKSk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmZpbHRlcihjID0+ICFyZW1vdmVkLmhhcyhjKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ29sbGVjdGlvbkNoYW5nZUFjdGlvbi5SZXBsYWNlOiB7XHJcbiAgICAgICAgaWYgKGV2ZW50Lm5ld0l0ZW1zICYmIGV2ZW50Lm9sZEl0ZW1zICYmIGV2ZW50Lm5ld1N0YXJ0aW5nSW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZXZlbnQubmV3SXRlbXMuZm9yRWFjaChjb2wgPT5cclxuICAgICAgICAgICAgY29sLnRyYW5zbGF0ZWRIZWFkZXIgPSB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKGNvbC5oZWFkZXIgPz8gXCJcIilcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBwcmV2U2VsZWN0ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcclxuICAgICAgICAgIGNvbnN0IHJlbW92ZWRPbGQgPSBuZXcgU2V0KGV2ZW50Lm9sZEl0ZW1zKTtcclxuICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbLi4udGhpcy5fY29sdW1uc107XHJcbiAgICAgICAgICBuZXdDb2x1bW5zLnNwbGljZShldmVudC5uZXdTdGFydGluZ0luZGV4LCBldmVudC5vbGRJdGVtcy5sZW5ndGgsIC4uLmV2ZW50Lm5ld0l0ZW1zKTtcclxuICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSBuZXdDb2x1bW5zO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLl9jb2x1bW5zLmZpbHRlcihcclxuICAgICAgICAgICAgYyA9PiAocHJldlNlbGVjdGVkLmhhcyhjKSAmJiAhcmVtb3ZlZE9sZC5oYXMoYykpIHx8IGV2ZW50Lm5ld0l0ZW1zIS5pbmNsdWRlcyhjKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBDb2xsZWN0aW9uQ2hhbmdlQWN0aW9uLlJlc2V0OlxyXG4gICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgdGhpcy5fY29sdW1ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92ZXJpZnlHcmlkUmVxdWlyZW1lbnRzKCk7XHJcbiAgICB0aGlzLl9pbml0Q3VycmVudFJvd051bWJlckFuZE9yZGVyQnlSb3dOdW1iZXIoKTtcclxuICB9XHJcblxyXG4gIHNhdmVJdGVtcygpIHtcclxuICAgIGNvbnN0IGNsZWFuID0gdGhpcy5fY2xlYW5HcmlkRGF0YUZvckVtaXQoKTtcclxuICAgIHRoaXMuc2F2ZURhdGFFdmVudEVtaXR0ZXIuZW1pdChjbGVhbik7XHJcbiAgfVxyXG5cclxuICBhZGRSb3coKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZERhdGEpIHtcclxuICAgICAgdGhpcy5ncmlkRGF0YSA9IFtdO1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld1JvdyA9IHRoaXMuX2luaXRSb3coKVxyXG4gICAgdGhpcy5ncmlkRGF0YS5wdXNoKG5ld1JvdylcclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWVcclxuICAgIGxldCByb3dBZGRlZFJlc3VsdDogUm93QWRkZWRSZXN1bHQgPSB7XHJcbiAgICAgIHJvd051bWJlcjogdGhpcy5ncmlkRGF0YS5sZW5ndGggLSAxLFxyXG4gICAgICBkYXRhOiBuZXdSb3dcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRPcmRlcikge1xyXG4gICAgICB0aGlzLmVkaXRhYmxlVGFibGU/LnZhbHVlLnB1c2gobmV3Um93KVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoU29ydCgpXHJcbiAgICB0aGlzLmFkZGVkUm93RXZlbnRFbWl0dGVyLmVtaXQocm93QWRkZWRSZXN1bHQpXHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVSb3coaXRlbTogYW55LCB1cGRhdGVTZWxlY3Rpb246IGJvb2xlYW4gPSB0cnVlLCBza2lwRW1pdDogYm9vbGVhbiA9IGZhbHNlKTogUm93QWRkZWRSZXN1bHQgfCBudWxsIHtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgZHVwbGljYXRlZFJvdyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xyXG4gICAgZHVwbGljYXRlZFJvd1t0aGlzLmVudGl0eVByaW1hcnlLZXlOYW1lXSA9IHVuZGVmaW5lZDtcclxuICAgIFxyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2wuZXhjbHVkZU9uRHVwbGljYXRlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkdXBsaWNhdGVkUm93LCBjb2wuZmllbGQpKSB7XHJcbiAgICAgICAgZHVwbGljYXRlZFJvd1tjb2wuZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2lzQXV0b1Jvd051bWJlcikge1xyXG4gICAgICBkdXBsaWNhdGVkUm93W3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF0gPSB0aGlzLl9uZXh0Um93TnVtYmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ncmlkRGF0YS5wdXNoKGR1cGxpY2F0ZWRSb3cpO1xyXG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRPcmRlcikge1xyXG4gICAgICB0aGlzLmVkaXRhYmxlVGFibGU/LnZhbHVlLnB1c2goZHVwbGljYXRlZFJvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoU29ydCgpO1xyXG5cclxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBkdXBsaWNhdGVkUm93O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGlvbk1vZGUgPT0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGVcclxuICAgICAgICA/IFtkdXBsaWNhdGVkUm93XVxyXG4gICAgICAgIDogZHVwbGljYXRlZFJvdztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXN1bHQ6IFJvd0FkZGVkUmVzdWx0ID0ge1xyXG4gICAgICByb3dOdW1iZXI6IHRoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMSxcclxuICAgICAgZGF0YTogZHVwbGljYXRlZFJvd1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXNraXBFbWl0KSB7XHJcbiAgICAgIHRoaXMuYWRkZWRSb3dFdmVudEVtaXR0ZXIuZW1pdChyZXN1bHQpO1xyXG4gICAgICB0aGlzLnJvd0R1cGxpY2F0ZWRFdmVudEVtaXR0ZXIuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoU29ydCgpIHtcclxuICAgIGlmICh0aGlzLmVkaXRhYmxlVGFibGU/LnNvcnRGaWVsZCkge1xyXG4gICAgICBjb25zdCBzb3J0RmllbGQgPSB0aGlzLmVkaXRhYmxlVGFibGUuc29ydEZpZWxkO1xyXG4gICAgICBjb25zdCBzb3J0T3JkZXIgPSB0aGlzLmVkaXRhYmxlVGFibGUuc29ydE9yZGVyO1xyXG5cclxuICAgICAgdGhpcy5ncmlkRGF0YS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVBID0gYVtzb3J0RmllbGRdO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlQiA9IGJbc29ydEZpZWxkXTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlQSA8IHZhbHVlQikgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWVBID4gdmFsdWVCKSByZXN1bHQgPSAxO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0ICogc29ydE9yZGVyO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZ3JpZERhdGEgPSBbLi4udGhpcy5ncmlkRGF0YV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxldGUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRNb2RlKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLnNwbGljZShpbmRleCwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdyaWREYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLmdyaWREYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuaXNEaXJ0eSA9IHRydWVcclxuICAgICAgdGhpcy5fb25EZWxldGVSb3coaXRlbSk7XHJcbiAgICAgIHRoaXMucm93RGVsZXRlZEV2ZW50RW1pdHRlci5lbWl0KHRoaXMuX2NsZWFuR3JpZERhdGFGb3JFbWl0KCkpXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hTb3J0KClcclxuICB9XHJcblxyXG4gIGdldFN1bW1hcnkoY29sOiBHcmlkQ29sdW1uKTogbnVtYmVyIHtcclxuICAgIGlmIChjb2wuaGF2ZVN1bW1hcnkgPT0gdHJ1ZSkge1xyXG5cclxuICAgICAgbGV0IHN1bSA9IDA7XHJcbiAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICBzdW0gKz0gcm93W2NvbC5maWVsZF07XHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiBzdW07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIHJvd1N1bW1hcnkocm93OiBhbnkpOiBudW1iZXIge1xyXG4gICAgbGV0IHN1bSA9IDA7XHJcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICBpZiAoY29sLnJvd1N1bW1hcnkgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHN1bSArPSByb3dbY29sLmZpZWxkXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3VtO1xyXG5cclxuICB9XHJcblxyXG4gIG9uUm93U2VsZWN0ZWQoZXZlbnQ6IFRhYmxlUm93U2VsZWN0RXZlbnQpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZXZlbnQuZGF0YTtcclxuICAgIHRoaXMuX2Y2U291cmNlUm93ID0gbnVsbDtcclxuICAgIHRoaXMuX2NhbmNlbFBlbmRpbmdEdXBsaWNhdGVFbWl0KCk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RLZXlPbmx5ID09IHRydWUpIHtcclxuICAgICAgbGV0IHNlbGVjdGlvbktleTogYW55O1xyXG4gICAgICBzZWxlY3Rpb25LZXkgPSB0aGlzLnNlbGVjdGVkSXRlbVt0aGlzLmtleV07XHJcbiAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdChzZWxlY3Rpb25LZXkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub25Sb3dTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Sb3dVbnNlbGVjdChldmVudDogVGFibGVSb3dVblNlbGVjdEV2ZW50KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX2Y2U291cmNlUm93ID0gbnVsbDtcclxuICAgIHRoaXMuX2NhbmNlbFBlbmRpbmdEdXBsaWNhdGVFbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG5cclxuICAgIGxldCBzZWxlY3Rpb246IGFueVtdID0gW107XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PSBHcmlkU2VsZWN0aW9uTW9kZS5NdWx0aXBsZSkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0S2V5T25seSkge1xyXG4gICAgICAgICAgbGV0IGtleXM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKCh2OiBhbnkpID0+IHsga2V5cy5wdXNoKHZbdGhpcy5rZXldKSB9KTtcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IGtleXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBzZWxlY3Rpb24gPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09IEdyaWRTZWxlY3Rpb25Nb2RlLlNpbmdsZSkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RLZXlPbmx5KSB7XHJcbiAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZEl0ZW1zID8gW3RoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLmtleV1dIDogW107XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZEl0ZW1zID8gW3RoaXMuc2VsZWN0ZWRJdGVtc10gOiBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgIT0gR3JpZFNlbGVjdGlvbk1vZGUuTm9uZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdChzZWxlY3Rpb24pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ1NwYWNlJykge1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUdyaWRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRjYnKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLl9mNlNvdXJjZVJvdyA/PyB0aGlzLnNlbGVjdGVkSXRlbTtcclxuICAgICAgaWYgKCFzb3VyY2UpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGlzRmlyc3REdXBsaWNhdGUgPSAhdGhpcy5fZjZTb3VyY2VSb3c7XHJcbiAgICAgIHRoaXMuX2Y2U291cmNlUm93ID0gc291cmNlO1xyXG5cclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5kdXBsaWNhdGVSb3coc291cmNlLCBpc0ZpcnN0RHVwbGljYXRlLCB0cnVlKTtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgJiYgIXRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQpIHtcclxuICAgICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5fcGVuZGluZ0R1cGxpY2F0ZUVtaXRUaW1lcikge1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fcGVuZGluZ0R1cGxpY2F0ZUVtaXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmFkZGVkUm93RXZlbnRFbWl0dGVyLmVtaXQodGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCk7XHJcbiAgICAgICAgICB0aGlzLnJvd0R1cGxpY2F0ZWRFdmVudEVtaXR0ZXIuZW1pdCh0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0KTtcclxuICAgICAgICAgIHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9jdXNPdXRSb3coaXRlbTogYW55KSB7XHJcbiAgICB0aGlzLmZvY3VzT3V0Um93LmVtaXQoaXRlbSk7XHJcbiAgfVxyXG5cclxuICBjdXN0b21Tb3J0KGV2ZW50OiBTb3J0RXZlbnQpIHtcclxuICAgIGlmIChldmVudC5kYXRhICE9IG51bGwgJiYgZXZlbnQuZGF0YSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgZXZlbnQuZGF0YS5zb3J0KChkYXRhMSwgZGF0YTIpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQuZmllbGQgIT0gbnVsbCAmJiBldmVudC5maWVsZCAhPSB1bmRlZmluZWQgJiYgZXZlbnQub3JkZXIpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZTEgPSBkYXRhMVtldmVudC5maWVsZF07XHJcbiAgICAgICAgICBsZXQgdmFsdWUyID0gZGF0YTJbZXZlbnQuZmllbGRdO1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKVxyXG4gICAgICAgICAgICByZXN1bHQgPSAtMTtcclxuICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXN1bHQgPSAxO1xyXG4gICAgICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IDA7XHJcbiAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUyID09PSAnc3RyaW5nJylcclxuICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmVzdWx0ID0gKHZhbHVlMSA8IHZhbHVlMikgPyAtMSA6ICh2YWx1ZTEgPiB2YWx1ZTIpID8gMSA6IDA7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIChldmVudC5vcmRlciAqIHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN1bHQoa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub25Db25zdWx0Q2xpY2tlZC5lbWl0KGtleSk7XHJcbiAgfVxyXG5cclxuICBvbkNlbGxMYWJlbFJlc29sdmVkKGNvbDogR3JpZENvbHVtbiwgbGFiZWw6IHN0cmluZywgaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBpdGVtW3RoaXMuX2dldFNoYWRvd1NlYXJjaENvbHVtbkxhYmVsKGNvbCldID0gbGFiZWw7XHJcbiAgfVxyXG5cclxuICBvbkNlbGxWYWx1ZUNoYW5nZWQoY29sOiBHcmlkQ29sdW1uLCBuZXdWYWx1ZTogYW55LCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIE1hcmsgdGhlIGdyaWQgaXRzZWxmIGRpcnR5IG9uIGFueSBnZW51aW5lIGNlbGwgZWRpdC4gVGhlIGdyaWQgaW5zdGFuY2UgbGl2ZXNcclxuICAgIC8vIGZvciB0aGUgd2hvbGUgZm9ybSBsaWZldGltZSwgc28gdGhpcyBmbGFnIHN1cnZpdmVzIHJvdy1kYXRhIHJlYXNzaWdubWVudFxyXG4gICAgLy8gZHVyaW5nIHJlY2FsY3VsYXRpb24gKHdoZXJlIHRyYW5zaWVudCBjZWxsIGlucHV0cyBhcmUgcmVjcmVhdGVkIGFuZCBsb3NlXHJcbiAgICAvLyB0aGVpciBvd24gaXNEaXJ0eSksIGtlZXBpbmcgdGhlIHNhdmUtdGltZSBjaGFuZ2UgZGV0ZWN0aW9uIGFjY3VyYXRlLlxyXG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcclxuICAgIGlmIChjb2wudHlwZSA9PT0gSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8gJiYgbmV3VmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICBkZWxldGUgaXRlbVt0aGlzLl9nZXRTaGFkb3dTZWFyY2hDb2x1bW5MYWJlbChjb2wpXTtcclxuICAgIH1cclxuICAgIC8vIHNlbmQgZXZlbnRzXHJcbiAgICBpZiAoY29sLndhdGNoRm9yQ2hhbmdlcyA9PT0gdHJ1ZSkge1xyXG5cclxuICAgICAgbGV0IGNlbGxDaGFuZ2VkUmVzdWx0OiBDZWxsQ2hhbmdlZFJlc3VsdCA9IHtcclxuICAgICAgICBrZXk6IGl0ZW1bdGhpcy5rZXldLFxyXG4gICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXHJcbiAgICAgICAgbmV3VmFsdWU6IG5ld1ZhbHVlXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jZWxsQ2hhbmdlZC5lbWl0KGNlbGxDaGFuZ2VkUmVzdWx0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZWNhbGN1bGF0ZSBjdXJyZW50Um93TnVtYmVyXHJcbiAgICBpZiAoY29sLmZpZWxkID09PSB0aGlzLl9hdXRvUm93TnVtYmVyRmllbGQpIHtcclxuICAgICAgdGhpcy5fb3JkZXJCeVJvd051bWJlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNoZWNrIGZvciBkdXBsaWNhdGVkIHJvd3NcclxuICAgIC8vIGlmKHRoaXMuX2VxdWFsaXR5Q2hlY2tPbiAmJiBjb2wuaXNFcXVhdGFibGVDcml0ZXJpYSl7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCdmb3VuZCBlcXVhdGFibGUgOiBjb2w6JywgY29sLCAncm93IDogJywgaXRlbSk7XHJcbiAgICAvLyAgIHRoaXMuX3RyeUZpbmRFcXVhdGFibGUoaXRlbSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlRm9ybVN0YXRlKGZvcm1TdGF0ZTogRm9ybVN0YXRlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZ2VuZXJpY1ZhbGlkYXRpb25TdGF0ZVNlcnZpY2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2VuZXJpY1ZhbGlkYXRpb25TdGF0ZVNlcnZpY2UudXBkYXRlRm9ybVN0YXRlKGZvcm1TdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBhcHBseUdsb2JhbFNlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZHQ/LmZpbHRlckdsb2JhbCh0aGlzLnNlYXJjaFZhbHVlLCBFZGl0YWJsZUdyaWRDb21wb25lbnQuREVDSU1BTF9BV0FSRV9DT05UQUlOU19GSUxURVIpO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG5cclxuICBwcml2YXRlIF9pbml0Um93KCkge1xyXG4gICAgbGV0IG5ld1JvdzogYW55ID0ge307XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IElucHV0VHlwZXMuREVDSU1BTF9JTlBVVFxyXG4gICAgICAgICAgfHwgY29sLnR5cGUgPT0gSW5wdXRUeXBlcy5SQVRFX0lOUFVUXHJcbiAgICAgICAgICB8fCBjb2wudHlwZSA9PSBJbnB1dFR5cGVzLklOVEVHRVJcclxuICAgICAgICAgIHx8IGNvbC50eXBlID09IElucHV0VHlwZXMuQ1VSUkVOQ1lfU09DSUVURV9JTlBVVFxyXG4gICAgICAgICAgfHwgY29sLnR5cGUgPT0gSW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVCkge1xyXG4gICAgICAgICAgbmV3Um93W2NvbC5maWVsZF0gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb2wudHlwZSA9PSBJbnB1dFR5cGVzLkNIRUNLQk9YKSB7XHJcbiAgICAgICAgICBuZXdSb3dbY29sLmZpZWxkXSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIG5ld1Jvd1tjb2wuZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5faXNBdXRvUm93TnVtYmVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgbmV3Um93W3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF0gPSB0aGlzLl9uZXh0Um93TnVtYmVyKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ld1Jvd1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1JvdztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRTYXZlRXZlbnRTdWJzY3JpcHRpb24oKSB7XHJcbiAgICB0aGlzLnNhdmVFdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuc2F2ZUV2ZW50Py5zdWJzY3JpYmUoXHJcbiAgICAgICgpID0+IHRoaXMuc2F2ZUl0ZW1zKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF92ZXJpZnlHcmlkUmVxdWlyZW1lbnRzKCkge1xyXG4gICAgaWYgKHRoaXMuY29sdW1ucyA9PSBudWxsXHJcbiAgICAgIHx8IHRoaXMuY29sdW1ucyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdncmlkIGNvbHVtbnMgY2FuXFwndCBiZSBudWxsJylcclxuICAgIH1cclxuICAgIFxyXG4gICAgbGV0IHJvd051bWJlckNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5pc0F1dG9Sb3dOdW1iZXJDb2x1bW4gPT09IHRydWUpO1xyXG5cclxuICAgIGlmIChyb3dOdW1iZXJDb2x1bW5zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdncmlkIGNvbHVtbnMgY2FuXFwndCBoYXZlIG1vcmUgdGhhbiBvbmUgUm93TnVtYmVyQ29sdW1uJylcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHJvd051bWJlckNvbHVtbnMubGVuZ3RoID09IDEpIHtcclxuICAgICAgdGhpcy5faXNBdXRvUm93TnVtYmVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkID0gcm93TnVtYmVyQ29sdW1uc1swXS5maWVsZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc0F1dG9Sb3dOdW1iZXIgPT09IHRydWVcclxuICAgICAgJiYgdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkICE9IHVuZGVmaW5lZFxyXG4gICAgICAmJiB0aGlzLl9hdXRvUm93TnVtYmVyRmllbGQgIT0gbnVsbFxyXG4gICAgICAmJiB0aGlzLmdyaWREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5fb3JkZXJCeVJvd051bWJlcigpO1xyXG5cclxuICAgICAgdGhpcy5fY3VycmVudFJvd051bWJlciA9IHRoaXMuZ3JpZERhdGFbdGhpcy5ncmlkRGF0YS5sZW5ndGggLSAxXVt0aGlzLl9hdXRvUm93TnVtYmVyRmllbGRdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbmV4dFJvd051bWJlcigpOiBudW1iZXIge1xyXG4gICAgdGhpcy5fY3VycmVudFJvd051bWJlciA9IHRoaXMuZ3JpZERhdGEubGVuZ3RoICsgMTtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Um93TnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb25EZWxldGVSb3cocm93OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChyb3dbdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkXSA9PT0gdGhpcy5fY3VycmVudFJvd051bWJlcikge1xyXG4gICAgICB0aGlzLl9jdXJyZW50Um93TnVtYmVyLS07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vcmRlckJ5Um93TnVtYmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkRGF0YS5zb3J0KChhLCBiKSA9PiB7IHJldHVybiBhW3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF0gLSBiW3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF07IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdEVxdWF0YWJsZUZpZWxkcygpOiB2b2lkIHtcclxuICAgIGxldCBlcXVhdGFibGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+IGMuaXNFcXVhdGFibGVDcml0ZXJpYSA9PSB0cnVlKTtcclxuICAgIGlmIChlcXVhdGFibGVDb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuX2VxdWFsaXR5Q2hlY2tPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2VxdWF0YWJsZUZpZWxkcyA9IGVxdWF0YWJsZUNvbHVtbnMubWFwKGMgPT4gYy5maWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0U3VtQXRGdXNpb25GaWVsZHMoKTogdm9pZCB7XHJcbiAgICBsZXQgc3VtQXRGdXNpb25Db2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+IGMuaXNTdW1BdEZ1c2lvbiA9PSB0cnVlKTtcclxuICAgIGlmIChzdW1BdEZ1c2lvbkNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5fZXF1YWxpdHlDaGVja09uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fc3VtQXRGdXNpb25GaWVsZHMgPSBzdW1BdEZ1c2lvbkNvbHVtbnMubWFwKGMgPT4gYy5maWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cnlGaW5kRXF1YXRhYmxlKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgZm91bmRFcXVhbFJvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuZ3JpZERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc29sZS5sb2coJ3Byb2Mgcm93IDogJywgdGhpcy5ncmlkRGF0YVtpXSk7XHJcbiAgICAgIGxldCBpc0N1cnJlbnRSb3dFcXVhbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2VxdWF0YWJsZUZpZWxkcz8uZm9yRWFjaChmID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygncHJvYyBmaWVsZCA6ICcsIGYpO1xyXG4gICAgICAgIGlmICh0aGlzLmdyaWREYXRhW2ldW2ZdICE9IHJvd1tmXSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ25vdCBlcXVhbCAnLCByb3csIHRoaXMuZ3JpZERhdGFbaV0pO1xyXG4gICAgICAgICAgaXNDdXJyZW50Um93RXF1YWwgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoaXNDdXJyZW50Um93RXF1YWwpIHtcclxuICAgICAgICB0aGlzLl9mdXNpb25Sb3dzKHRoaXMuZ3JpZERhdGFbaV0sIHJvdyk7XHJcbiAgICAgICAgZm91bmRFcXVhbFJvdyA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChmb3VuZEVxdWFsUm93KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkZWxldGluZyA6ICcsIHJvdyk7XHJcbiAgICAgIHRoaXMuZGVsZXRlKHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mdXNpb25Sb3dzKHJvdzE6IGFueSwgcm93MjogYW55KSB7XHJcbiAgICB0aGlzLl9zdW1BdEZ1c2lvbkZpZWxkcz8uZm9yRWFjaChmID0+IHtcclxuICAgICAgcm93MVtmXSArPSByb3cyW2ZdO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpO1xyXG4gICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N5bmNHbG9iYWxGaWx0ZXJGaWVsZHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWVsZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiB0aGlzLnNlbGVjdGVkQ29sdW1ucykge1xyXG4gICAgICBpZiAoY29sLnR5cGUgPT09IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPKSB7XHJcbiAgICAgICAgZmllbGRzLnB1c2godGhpcy5fZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmllbGRzLnB1c2goY29sLmZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMgPSBmaWVsZHM7XHJcbiAgfVxyXG4gIFxyXG4gIHByaXZhdGUgX3JlZ2lzdGVyR3JpZENvbnRhaW5zRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgLy8gQ3VzdG9tIFByaW1lTkcgZmlsdGVyIHVzZWQgYnkgYXBwbHlHbG9iYWxTZWFyY2goKSBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiAnY29udGFpbnMnLlxyXG4gICAgLy8gRXh0ZW5kcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgd2l0aCBsb2NhbGUtYXdhcmUgZGVjaW1hbCBtYXRjaGluZzpcclxuICAgIC8vIGEgdXNlciBpbiBGUi9BUiBsb2NhbGUgdHlwZXMgXCIxMSwyNVwiIGJ1dCB0aGUgc3RvcmVkIEpTIG51bWJlciBzdHJpbmdpZmllcyBhcyBcIjExLjI1XCIsXHJcbiAgICAvLyBzbyBhIHBsYWluICdjb250YWlucycgY2hlY2sgd291bGQgbWlzcyBpdC5cclxuICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UucmVnaXN0ZXIoRWRpdGFibGVHcmlkQ29tcG9uZW50LkRFQ0lNQUxfQVdBUkVfQ09OVEFJTlNfRklMVEVSLCAodmFsdWU6IGFueSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKGZpbHRlciA9PSBudWxsIHx8IGZpbHRlci50cmltKCkgPT09ICcnKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGNvbnN0IHN0clZhbHVlID0gU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBjb25zdCBzdHJGaWx0ZXIgPSBmaWx0ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAvLyBTdGVwIDEg4oCUIGRpcmVjdCBtYXRjaCAoaGFuZGxlcyBhbGwgdGV4dCBjb2x1bW5zIGFuZCBleGFjdCBudW1lcmljIG1hdGNoZXMpXHJcbiAgICAgIGlmIChzdHJWYWx1ZS5pbmNsdWRlcyhzdHJGaWx0ZXIpKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIFN0ZXAgMiDigJQgZGVjaW1hbCBjb21tYeKGlGRvdCBub3JtYWxpemF0aW9uLlxyXG4gICAgICAvLyBUd28gZ3VhcmRzIG11c3QgYm90aCBwYXNzIGJlZm9yZSBub3JtYWxpemluZzpcclxuICAgICAgLy8gICDigKIgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAg4oaSIG9ubHkgcnVuIG9uIGFjdHVhbCBudW1lcmljIHZhbHVlczsgdGV4dCBjb2x1bW5zXHJcbiAgICAgIC8vICAgICBjb250YWluaW5nIGRvdHMgKGUuZy4gcHJvZHVjdCBjb2RlcyBsaWtlIFwiSFAuWFlaXCIpIGFyZSBuZXZlciB0b3VjaGVkLlxyXG4gICAgICAvLyAgIOKAoiAvXlxcZCtbLC5dXFxkKyQvICAgICAgICAgICAg4oaSIGZpbHRlciBtdXN0IGxvb2sgbGlrZSBhIGRlY2ltYWwgbnVtYmVyOlxyXG4gICAgICAvLyAgICAgICBeXFxkKyAgIG9uZSBvciBtb3JlIGRpZ2l0cyBiZWZvcmUgdGhlIHNlcGFyYXRvclxyXG4gICAgICAvLyAgICAgICBbLC5dICAgZXhhY3RseSBvbmUgc2VwYXJhdG9yLCBjb21tYSBvciBkb3RcclxuICAgICAgLy8gICAgICAgXFxkKyQgICBvbmUgb3IgbW9yZSBkaWdpdHMgYWZ0ZXIgdGhlIHNlcGFyYXRvclxyXG4gICAgICAvLyAgICAgVGhpcyByZWplY3RzIGZyZWUtdGV4dCBmaWx0ZXJzIHRoYXQgaGFwcGVuIHRvIGNvbnRhaW4gYSBjb21tYSAoXCJDYWlzc2UsIEZyYW5jZVwiKVxyXG4gICAgICAvLyAgICAgYW5kIGluY29tcGxldGUgaW5wdXRzIChcIjExLFwiIC8gXCIsMjVcIikuXHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIC9eXFxkK1ssLl1cXGQrJC8udGVzdChzdHJGaWx0ZXIpKSB7XHJcbiAgICAgICAgcmV0dXJuIHN0clZhbHVlLmluY2x1ZGVzKHN0ckZpbHRlci5yZXBsYWNlKCcsJywgJy4nKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYW5HcmlkRGF0YUZvckVtaXQoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZERhdGEubWFwKHJvdyA9PiB7XHJcbiAgICAgIGNvbnN0IGNsZWFuOiBhbnkgPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocm93KSkge1xyXG4gICAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoRWRpdGFibGVHcmlkQ29tcG9uZW50LlNFQVJDSF9MQUJFTF9QUkVGSVgpKSB7XHJcbiAgICAgICAgICBjbGVhbltrZXldID0gcm93W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjbGVhbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sdW1uOiBHcmlkQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtFZGl0YWJsZUdyaWRDb21wb25lbnQuU0VBUkNIX0xBQkVMX1BSRUZJWH0ke2NvbHVtbi5maWVsZH1gO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIDxwLXRhYmxlICNkdCBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCIgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbXNcIiBlZGl0TW9kZT1cInJvd1wiXHJcbiAgICBbcGFnaW5hdG9yXT1cImdyaWREYXRhLmxlbmd0aCA+IHBhZ2VTaXplXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dQZXJQYWdlXCIgW3Jvd3NdPVwicGFnZVNpemVcIlxyXG4gICAgKG9uUm93U2VsZWN0KT1cIm9uUm93U2VsZWN0ZWQoJGV2ZW50KVwiIChvblJvd1Vuc2VsZWN0KT1cIm9uUm93VW5zZWxlY3QoJGV2ZW50KVwiIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgKG9uQ29sUmVzaXplKT1cIm9uQ29sUmVzaXplKCRldmVudClcIlxyXG4gICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiIGNvbHVtblJlc2l6ZU1vZGU9XCJleHBhbmRcIiBhcHBlbmRUbz1cImJvZHlcIiBbdmFsdWVdPVwiZ3JpZERhdGFcIlxyXG4gICAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCIgW2RhdGFLZXldPVwia2V5XCIgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc20gcC1kYXRhdGFibGUtZ3JpZGxpbmVzXCJcclxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIiAjZWRpdGFibGVUYWJsZSBbdG90YWxSZWNvcmRzXT1cImdyaWREYXRhLmxlbmd0aFwiXHJcbiAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiIFtyb3dUcmFja0J5XT1cInJvd1RyYWNrQnlcIiBbdGFibGVTdHlsZV09XCJ0YWJsZVN0eWxlXCI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC01IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwiY29sdW1uc1wiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb2x1bW5zXCJcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cInswfSB7eyAnY29sdW1uc19zZWxlY3RlZCcgfCBsb2NhbGl6ZSB9fVwiIG9wdGlvbkxhYmVsPVwidHJhbnNsYXRlZEhlYWRlclwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieydtaW4td2lkdGgnOiAnMTgwcHgnfVwiIHBsYWNlaG9sZGVyPVwie3sgJ2Nob29zZV9jb2x1bW5zJyB8IGxvY2FsaXplIH19XCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW9wdGlvbiBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IG9wdGlvbi5oZWFkZXIgfCBsb2NhbGl6ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dHbG9iYWxTZWFyY2hcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHctOFwiPlxyXG4gICAgICAgICAgPGRpdiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJnbG9iYWxfc2VhcmNoXCIgY2xhc3M9XCJwLWlucHV0Z3JvdXAgcnRsLW1vZGUgaC0ycmVtIG5vLXBhZFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBwSW5wdXRUZXh0IGNsYXNzPVwiYm9yZGVyLXJvdW5kLWxnXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NoYXJlZF9lZGl0dGFibGVfc2VhcmNoX3BsYWNlaG9sZGVyJyB8IGxvY2FsaXplXCIgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlHbG9iYWxTZWFyY2goKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cInNlYXJjaF9idXR0b25cIj5cclxuICAgICAgICAgICAgPFRzaS1CdXR0b24gc3R5bGVDbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktc2VhcmNoXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfc2VhcmNoXCJcclxuICAgICAgICAgICAgICAob25DbGljayk9XCJhcHBseUdsb2JhbFNlYXJjaCgpXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj4gXHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uTW9kZSAhPSBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgICA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uIHN0eWxlPVwibWluLXdpZHRoOjJyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6MnJlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlID09IG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGVcIj5cclxuICAgICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJtaW4td2lkdGg6MnJlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDoycmVtICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggI3RhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcblxyXG4gICAgICAgIDwhLS0gPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCI+PC90aD4gLS0+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dEdXBsaWNhdGVCdXR0b25cIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RoPlxyXG4gICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcbiAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RoPlxyXG5cclxuICAgICAgICA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgW3N0eWxlXT1cImNvbC5zdHlsZVwiIFtuZ1N0eWxlXT1cImdldENvbHVtblNpemVTdHlsZShjb2wpXCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW2NsYXNzLnRzaS1jb2wtd3JhcF09XCJzaG91bGRXcmFwQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTtcIiBwU29ydGFibGVDb2x1bW49XCJ7e2NvbC5maWVsZH19XCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgIHBUb29sdGlwPVwie3tjb2wudG9vbFRpcFRleHQgfCBsb2NhbGl6ZSB9fVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIHBSZW9yZGVyYWJsZUNvbHVtbj57eyBjb2wuaGVhZGVyIHwgbG9jYWxpemVcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInt7Y29sLmZpZWxkfX1cIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICA8VHNpLUJ1YmJsZS1JbmZvIFtpbmZvVGV4dF09XCJjb2wuaW5mb1RleHQgfCBsb2NhbGl6ZVwiPjwvVHNpLUJ1YmJsZS1JbmZvPlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRoIHN0eWxlPVwibWluLXdpZHRoOjNyZW1cIiAqbmdJZj1cInNob3dSb3dTdW1tYXJ5XCIgc2NvcGU9XCJjb2xcIj57eydSb3dTdW1tYXJ5JyB8IGxvY2FsaXplfX08L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1pdGVtIGxldC1lZGl0aW5nPVwiZWRpdGluZ1wiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XHJcbiAgICAgIFxyXG4gICAgICA8dHIgW3BFZGl0YWJsZVJvd109XCJpdGVtXCJcclxuICAgICAgICAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZSB8fCBzZWxlY3Rpb25Nb2RlID09IHVuZGVmaW5lZDsgZWxzZSBzZWxlY3Rpb25Nb2RlQmxvY2tcIlxyXG4gICAgICAgIChmb2N1c091dCk9XCJvbkZvY3VzT3V0Um93KGl0ZW0pXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiaXRlbVwiID48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj4gLS0+XHJcblxyXG5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPC90ZD4gLS0+XHJcblxyXG4gICAgICAgIDwhLS0gPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RWRpdEJ1dHRvblwiIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBJbml0RWRpdGFibGVSb3cgaWNvbj1cInBpIHBpLXBlbmNpbFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0aW5nXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBwU2F2ZUVkaXRhYmxlUm93IGljb249XCJwaSBwaS1jaGVja1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcyAtbWwtMVwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBDYW5jZWxFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktdGltZXNcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciAtbWwtMlwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBzY29wZT1cImNvbFwiIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCI+PC90ZD5cclxuXHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RHVwbGljYXRlQnV0dG9uXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgPFRzaS1CdXR0b24gW2J1dHRvblR5cGVdPVwiYnV0dG9uVHlwZS5CdXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1jb3B5XCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfZHVwbGlxdWVyXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWluZm9cIiAoY2xpY2spPVwiZHVwbGljYXRlUm93KGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiIHN0eWxlPVwibGVmdDogLTFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICBjbGFzcz1cInAtMSBidG4tY29uc3VsdC1zdHlsZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICA8VHNpLUJ1dHRvbiBbYnV0dG9uVHlwZV09XCJidXR0b25UeXBlLkJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWV5ZVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgdG9vbHRpcFRleHQ9XCJzaGFyZWRfZWRpdHRhYmxlX2NvbnN1bHRlclwiXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY29uc3VsdChpdGVtKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0RlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICBjbGFzcz1cInAtMSBidG4tZGVsZXRlLXN0eWxlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgIDxUc2ktQnV0dG9uIFtkaXNhYmxlZF09XCJpc0RlbGV0ZUJ1dHRvbkRpc2FibGVkKGl0ZW0pXCIgdHlwZT1cImJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXRyYXNoXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfc3VwcHJpbWVyXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXIgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcblxyXG4gICAgICAgIDx0ZCBjbGFzcz1cInVpLXJlc2l6YWJsZS1jb2x1bW5cIiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgIFtjbGFzcy50c2ktY29sLXdyYXBdPVwic2hvdWxkV3JhcENvbHVtbihjb2wpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEJvZHlDb2x1bW5TdHlsZShjb2wpXCI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5kaXNwbGF5T25seSB8fCBkaXNhYmxlZDsgZWxzZSBvcmRpbmFyeUJsb2NcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk87IGVsc2UgY3VycmVuY3lTb2NpZXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2Rpc2FibGVkXT1cInRydWVcIiBbZWxlbWVudFNvdXJjZVVybF09XCJjb2wuZWxlbWVudFNvdXJjZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImNvbC5pc0ZpbHRlcmVkXCIgW2RhdGFzb3VyY2VdPVwiY29sLmRhdGFzb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImNvbC5zaG93U2VhcmNoQnV0dG9uID8/IHRydWVcIiBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd1VwZGF0ZUJ1dHRvbl09XCJjb2wuc2hvd1VwZGF0ZUJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cIm9uQ2VsbExhYmVsUmVzb2x2ZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9TT0NJRVRFX0lOUFVUOyBlbHNlIGN1cnJlbmN5T3RoZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVDsgZWxzZSBkYXRlUGlja2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURhdGUtRGlzcGxheSBbc2hvd1RpbWVdPVwiY29sLnNob3dUaW1lXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DaGVja0JveC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DSEVDS0JPWDsgZWxzZSBkZWNpbWFsT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrYm94LURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja2JveC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWNpbWFsT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuSU5URUdFUjsgZWxzZSByYXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5SQVRFX0lOUFVUOyBlbHNlIHRpbWVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1EaXNwbGF5IFtpc0ZyYWN0aW9uXT1cImNvbC5pc0ZyYWN0aW9uXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1UaW1lLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpbWVPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuVElNRTsgZWxzZSBmb3JtdWxhT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtZGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPjwvdHNpLXRpbWUtZGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUZvcm11bGEtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybXVsYU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tpdGVtW2NvbC5maWVsZF19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNvcmRpbmFyeUJsb2M+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlNFQVJDSF9DT01CTzsgZWxzZSBjdXJyZW5jeVNvY2lldGVJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2VsZW1lbnRTb3VyY2VVcmxdPVwiY29sLmVsZW1lbnRTb3VyY2VVcmxcIlxyXG4gICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbbGlzdFNvdXJjZVVybF09XCJjb2wubGlzdFNvdXJjZVVybFwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgIGlkLWZpZWxkPVwie3tjb2wuaWRGaWVsZH19XCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIiBbaXNGaWx0ZXJlZF09XCJjb2wuaXNGaWx0ZXJlZFwiXHJcbiAgICAgICAgICAgICAgICBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIChiaW5kQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhc291cmNlXT1cImNvbC5kYXRhc291cmNlXCIgW3Nob3dTZWFyY2hCdXR0b25dPVwiY29sLnNob3dTZWFyY2hCdXR0b24gPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCIgW3Nob3dVcGRhdGVCdXR0b25dPVwiY29sLnNob3dVcGRhdGVCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRMYWJlbENoYW5nZSk9XCJvbkNlbGxMYWJlbFJlc29sdmVkKGNvbCwgJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeVNvY2lldGVJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1Tb2NpZXRlLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQ7IGVsc2UgZGF0ZVBpY2tlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktRGF0ZS1QaWNrZXIgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuREFURTsgZWxzZSBjaGVja0JveElucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW3Nob3dUaW1lXT1cImNvbC5zaG93VGltZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIiBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLURhdGUtUGlja2VyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ2hlY2tCb3ggLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tCb3hJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNIRUNLQk9YOyBlbHNlIGRlY2ltYWxJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIiBcclxuICAgICAgICAgICAgICAgICAgW2lzQmluYXJ5XT1cImNvbC5pc0JpbmFyeSA/PyBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1EZWNpbWFsLUlucHV0IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktRGVjaW1hbC1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlciAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbnRlZ2VySW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5JTlRFR0VSOyBlbHNlIHJhdGVJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuUkFURV9JTlBVVDsgZWxzZSB0aW1lSW5wdXRCbG9jXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVJhdGUtSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW251bU9mRGVjaW1hbF09XCJjb2wubnVtT2ZEZWNpbWFsXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktUmF0ZS1JbnB1dD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVRpbWUtcGlja2VyIGJsb2MgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGltZUlucHV0QmxvYz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5USU1FOyBlbHNlIGZvcm11bGFJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8dHNpLXRpbWUtcGlja2VyIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvdHNpLXRpbWUtcGlja2VyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtdWxhSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0SW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLTxUc2ktQnViYmxlLUluZm9cclxuICAgICAgICAgICAgICAgICAgW2luZm9UZXh0XT1cIlsnZm9ybXVsYV9leHBsaWNhdGlvbicsXHJcbiAgICAgICAgICAgICAgICAgIF1cIj48L1RzaS1CdWJibGUtSW5mbz4gLS0+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPjwvVHNpLUZvcm11bGEtQm94PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktVGV4dC1Cb3ggLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHRJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkICpuZ0lmPVwic2hvd1Jvd1N1bW1hcnlcIiBjbGFzcz1cImZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAge3tyb3dTdW1tYXJ5KGl0ZW0pfX1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzZWxlY3Rpb25Nb2RlQmxvY2s+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDx0ciBbcEVkaXRhYmxlUm93XT1cIml0ZW1cIiBbcFNlbGVjdGFibGVSb3ddPVwiaXRlbVwiIFtwU2VsZWN0YWJsZVJvd0luZGV4XT1cInJvd0luZGV4XCJcclxuICAgICAgICAgICAgKGZvY3VzT3V0KT1cIm9uRm9jdXNPdXRSb3coaXRlbSlcIj5cclxuXHJcbiAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj4gLS0+XHJcblxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8IS0tIDx0ZCAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZVwiIHN0eWxlPVwid2lkdGg6IDJyZW07XCI+XHJcbiAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveCAjdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgPC90ZD4gLS0+XHJcblxyXG4gICAgICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0VkaXRCdXR0b25cIiBzdHlsZT1cIm1pbi13aWR0aDozcmVtO2xlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcEluaXRFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktcGVuY2lsXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBTYXZlRWRpdGFibGVSb3cgaWNvbj1cInBpIHBpLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcyAtbWwtMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcENhbmNlbEVkaXRhYmxlUm93IGljb249XCJwaSBwaS10aW1lc1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciAtbWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHNjb3BlPVwiY29sXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uIHBSZXNpemFibGVDb2x1bW4gKm5nSWY9XCJzaG93RHVwbGljYXRlQnV0dG9uXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gW2J1dHRvblR5cGVdPVwiYnV0dG9uVHlwZS5CdXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1jb3B5XCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgdG9vbHRpcFRleHQ9XCJzaGFyZWRfZWRpdHRhYmxlX2R1cGxpcXVlclwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24taW5mb1wiIChjbGljayk9XCJkdXBsaWNhdGVSb3coaXRlbSlcIj48L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBwUmVzaXphYmxlQ29sdW1uICpuZ0lmPVwic2hvd0NvbnN1bHRCdXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTEgYnRuLWNvbnN1bHQtc3R5bGVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUJ1dHRvbiBbYnV0dG9uVHlwZV09XCJidXR0b25UeXBlLkJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWV5ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9jb25zdWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeVwiIChjbGljayk9XCJjb25zdWx0KGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gcFJlc2l6YWJsZUNvbHVtbiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIiBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTEgYnRuLWRlbGV0ZS1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQnV0dG9uIHR5cGU9XCJidXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS10cmFzaFwiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9zdXBwcmltZXJcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXIgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShpdGVtKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInVpLXJlc2l6YWJsZS1jb2x1bW5cIiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICBbY2xhc3MudHNpLWNvbC13cmFwXT1cInNob3VsZFdyYXBDb2x1bW4oY29sKVwiIFtuZ1N0eWxlXT1cImdldEJvZHlDb2x1bW5TdHlsZShjb2wpXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wuZGlzcGxheU9ubHkgfHwgZGlzYWJsZWQ7IGVsc2Ugb3JkaW5hcnlCbG9jXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk87IGVsc2UgY3VycmVuY3lTb2NpZXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2Rpc2FibGVkXT1cInRydWVcIiBbZWxlbWVudFNvdXJjZVVybF09XCJjb2wuZWxlbWVudFNvdXJjZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImNvbC5pc0ZpbHRlcmVkXCIgW2RhdGFzb3VyY2VdPVwiY29sLmRhdGFzb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImNvbC5zaG93U2VhcmNoQnV0dG9uID8/IHRydWVcIiBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd1VwZGF0ZUJ1dHRvbl09XCJjb2wuc2hvd1VwZGF0ZUJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cIm9uQ2VsbExhYmVsUmVzb2x2ZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9TT0NJRVRFX0lOUFVUOyBlbHNlIGN1cnJlbmN5T3RoZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVDsgZWxzZSBkYXRlUGlja2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURhdGUtRGlzcGxheSBbc2hvd1RpbWVdPVwiY29sLnNob3dUaW1lXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DaGVja0JveC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DSEVDS0JPWDsgZWxzZSBkZWNpbWFsT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrYm94LURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja2JveC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWNpbWFsT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuSU5URUdFUjsgZWxzZSByYXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5SQVRFX0lOUFVUOyBlbHNlIHRpbWVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1EaXNwbGF5IFtpc0ZyYWN0aW9uXT1cImNvbC5pc0ZyYWN0aW9uXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1UaW1lLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpbWVPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuVElNRTsgZWxzZSBmb3JtdWxhT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtZGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPjwvdHNpLXRpbWUtZGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUZvcm11bGEtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybXVsYU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tpdGVtW2NvbC5maWVsZF19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3JkaW5hcnlCbG9jPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktU2VhcmNoLUNvbWJvIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuU0VBUkNIX0NPTUJPOyBlbHNlIGN1cnJlbmN5U29jaWV0ZUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2VsZW1lbnRTb3VyY2VVcmxdPVwiY29sLmVsZW1lbnRTb3VyY2VVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgWyhiaW5kKV09XCJpdGVtW2NvbC5maWVsZF1cIiBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIiBbaXNGaWx0ZXJlZF09XCJjb2wuaXNGaWx0ZXJlZFwiIFtidXNpbmVzc0NsYXNzXT1cImNvbC5idXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmluZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2N1cnJlbnRSb3dJdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhc291cmNlXT1cImNvbC5kYXRhc291cmNlXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiY29sLnNob3dTZWFyY2hCdXR0b24gPz8gdHJ1ZVwiIFtzaG93QWRkQnV0dG9uXT1cImNvbC5zaG93QWRkQnV0dG9uID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93VXBkYXRlQnV0dG9uXT1cImNvbC5zaG93VXBkYXRlQnV0dG9uID8/IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDb25zdWx0QnV0dG9uXT1cImNvbC5zaG93Q29uc3VsdEJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGFiZWxDaGFuZ2UpPVwib25DZWxsTGFiZWxSZXNvbHZlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX09USEVSX0lOUFVUOyBlbHNlIGRhdGVQaWNrZXJJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCIgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGF0ZS1QaWNrZXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RhdGVQaWNrZXJJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94SW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRGF0ZS1QaWNrZXIgW3Nob3dUaW1lXT1cImNvbC5zaG93VGltZVwiIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUNoZWNrQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNIRUNLQk9YOyBlbHNlIGRlY2ltYWxJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DaGVja0JveCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpc0JpbmFyeV09XCJjb2wuaXNCaW5hcnkgPz8gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURlY2ltYWwtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5ERUNJTUFMX0lOUFVUOyBlbHNlIGludGVnZXJJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLUlucHV0IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLUlucHV0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlciAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW50ZWdlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLklOVEVHRVI7IGVsc2UgcmF0ZUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgW2NsYXNzXT1cIidtYXgtdy00cmVtJ1wiIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1JbnRlZ2VyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlJBVEVfSU5QVVQ7IGVsc2UgdGltZUlucHV0QmxvY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktUmF0ZS1JbnB1dD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRpbWUtUGlja2VyIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0aW1lSW5wdXRCbG9jPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5USU1FIGVsc2UgZm9ybXVsYUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtcGlja2VyIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHNpLXRpbWUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtdWxhSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuRk9STVVMQV9URVhUX0JPWDsgZWxzZSBkZWZhdWx0VGV4dElucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd1Jvd1N1bW1hcnlcIiBjbGFzcz1cImZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAgICAgIHt7cm93U3VtbWFyeShpdGVtKX19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBwVGVtcGxhdGU9XCJmb290ZXJcIiBsZXQtY29sdW1ucz5cclxuXHJcbiAgICAgIDx0ciBjbGFzcz1cInRmb290ZXJcIj5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHNjb3BlPVwiY29sXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RkPiAtLT5cclxuICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlID09IG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6MnJlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDoycmVtICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94ICN0YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gc2NvcGU9XCJjb2xcIiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj5Ub3RhbDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RGVsZXRlQnV0dG9uXCIgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgIDwhLS08dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCIgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIGNsYXNzPVwicC0xXCI+IC0tPlxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0R1cGxpY2F0ZUJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gW2Zyb3plbl09XCJjb2wuaXNGcm96ZW5cIiBbc3R5bGVdPVwiY29sLnN0eWxlXCIgW25nU3R5bGVdPVwiZ2V0Q29sdW1uU2l6ZVN0eWxlKGNvbClcIiBzY29wZT1cImNvbFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICBbY2xhc3MudHNpLWNvbC13cmFwXT1cInNob3VsZFdyYXBDb2x1bW4oY29sKVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5oYXZlU3VtbWFyeVwiPlxyXG4gICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQ7IGVsc2UgZGVjaW1hbE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5ERUNJTUFMX0lOUFVUOyBlbHNlIGludGVnZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cImdldFN1bW1hcnkoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktRGVjaW1hbC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlci1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5JTlRFR0VSOyBlbHNlIHJhdGVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1JbnRlZ2VyLURpc3BsYXkgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXRlT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuUkFURV9JTlBVVDsgZWxzZSBkZWZhdWx0VGV4dE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaXNGcmFjdGlvbl09XCJjb2wuaXNGcmFjdGlvblwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIERlZmF1bHQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHRPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIHt7Z2V0U3VtbWFyeShjb2wpfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICB7eydUb3RhbFJlY29yZHNDb3VudCcgfCBsb2NhbGl6ZSB9fSB7e2dyaWREYXRhLmxlbmd0aH19XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJsZT5cclxuICA8ZGl2PlxyXG4gICAgPFRzaS1CdXR0b24gKm5nSWY9XCJzaG93QWRkQnV0dG9uXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7d2lkdGg6IDIwcHg7XCIgaWNvbj1cInAtYnV0dG9uLWljb24gcGkgcGktcGx1c1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfYWpvdXRlclwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tc20gcC1idXR0b24tc3VjY2VzcyBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seSBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgKGNsaWNrKT1cImFkZFJvdygpXCI+PC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
890
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvaW5wdXQtY29tcG9uZW50cy9lZGl0YWJsZS1ncmlkL2VkaXRhYmxlLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvZWRpdGFibGUtZ3JpZC9lZGl0YWJsZS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQWdELE1BQU0sa0RBQWtELENBQUM7QUFDeEksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDbkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMs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SztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU1PLHlCQUF5QjtzQkFBckMsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTUksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUlHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRUcsdUJBQXVCO3NCQUFoQyxNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRUcsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0cseUJBQXlCO3NCQUFsQyxNQUFNO2dCQUdvQyxFQUFFO3NCQUE1QyxTQUFTO3VCQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRXpCLEVBQUU7c0JBQVYsS0FBSztnQkE4WU4saUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UsIFNvcnRFdmVudCwgVGFibGVTdGF0ZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVGFibGUsIFRhYmxlUm93U2VsZWN0RXZlbnQsIFRhYmxlUm93VW5TZWxlY3RFdmVudCB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgcnRsTW9kZUtleXMgfSBmcm9tICcuLi8uLi8uLi9jb25zdHMvbG9jYWxzLmNvbnN0JztcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSwgR3JpZFNlbGVjdGlvbk1vZGUsIElucHV0VHlwZXMsIE1vZGFsU2l6ZUVudW0sIFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgcHJlY2lzZUFkZCwgcHJlY2lzZVN1bSB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IENlbGxDaGFuZ2VkUmVzdWx0LCBHcmlkQ29sdW1uLCBJR3JpZENvbmZpZ3VyYXRpb24sIFJvd0FkZGVkUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uQ2hhbmdlQWN0aW9uLCBDb2xsZWN0aW9uQ2hhbmdlZEV2ZW50LCBPYnNlcnZhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2xsZWN0aW9uL29ic2VydmFibGUtY29sbGVjdGlvbic7XHJcbmltcG9ydCB7IEVudGl0eVZhbGlkYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24vZW50aXR5LXZhbGlkYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0vZm9ybS1zdGF0ZSc7XHJcbmltcG9ydCB7IFRzaUlucHV0QmFzZSB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL3RzaS1pbnB1dC1iYXNlL3RzaS1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbHVtbldpZHRoQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL3RzaS1oZWxwZXJzL2NvbHVtbi13aWR0aC5jb250cm9sbGVyJztcclxuaW1wb3J0IHsgR3JpZFNpemluZ01vZGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9ncmlkLXNpemluZy1tb2RlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRhYmxlLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRhYmxlLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtHZW5lcmljVmFsaWRhdGlvblN0YXRlU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRhYmxlR3JpZENvbXBvbmVudCBleHRlbmRzIFRzaUlucHV0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgLy8jcmVnaW9uIGxvY2FsIHZhcnNcclxuICAvLyNyZWdpb24gcHJpdmF0ZSBsb2NhbCB2YXJzXHJcbiAgcHJpdmF0ZSBzYXZlRXZlbnRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfaXNBdXRvUm93TnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfYXV0b1Jvd051bWJlckZpZWxkOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIF9jdXJyZW50Um93TnVtYmVyOiBudW1iZXIgPSAwO1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuICBpc0FyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZ3JpZERhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIF9lcXVhdGFibGVGaWVsZHM6IEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfc3VtQXRGdXNpb25GaWVsZHM6IEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfZXF1YWxpdHlDaGVja09uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZjZTb3VyY2VSb3c6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGVuZGluZ0R1cGxpY2F0ZUVtaXRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9wZW5kaW5nRHVwbGljYXRlUmVzdWx0OiBSb3dBZGRlZFJlc3VsdCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNFQVJDSF9MQUJFTF9QUkVGSVggPSAnX19zZWFyY2hfbGFiZWxfXyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgb2YgdGhlIGN1c3RvbSBQcmltZU5HIGZpbHRlciByZWdpc3RlcmVkIGZvciBnbG9iYWwgc2VhcmNoLlxyXG4gICAqIEV4dGVuZHMgdGhlIGJ1aWx0LWluICdjb250YWlucycgd2l0aCBsb2NhbGUtYXdhcmUgZGVjaW1hbCBtYXRjaGluZ1xyXG4gICAqIChjb21tYSB2cyBkb3Qgc2VwYXJhdG9yKSB3aGlsZSBrZWVwaW5nIGZ1bGwgcHJvdGVjdGlvbiBhZ2FpbnN0IGZhbHNlXHJcbiAgICogcG9zaXRpdmVzIG9uIHRleHQgY29sdW1ucy5cclxuICAgKiBAc2VlIF9yZWdpc3RlckdyaWRDb250YWluc0ZpbHRlclxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFQ0lNQUxfQVdBUkVfQ09OVEFJTlNfRklMVEVSID0gJ2dyaWQtY29udGFpbnMnO1xyXG4gIG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGUgPSBHcmlkU2VsZWN0aW9uTW9kZS5NdWx0aXBsZTtcclxuICBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgZ2xvYmFsRmlsdGVyRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG4gIGlucHV0VHlwZXMgPSBJbnB1dFR5cGVzO1xyXG4gIG1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uRXh0cmFMYXJnZTtcclxuICBAVmlld0NoaWxkKFwiZWRpdGFibGVUYWJsZVwiKSBlZGl0YWJsZVRhYmxlPzogVGFibGVcclxuXHJcbiAgYnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkSXRlbTogYW55O1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIElucHV0c1xyXG4gIEBJbnB1dCgnY29uZmlndXJhdGlvbicpIGNvbmZpZ3VyYXRpb24/OiBJR3JpZENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCdrZXknKSBrZXk6IHN0cmluZyA9ICd1aWQnO1xyXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgQElucHV0KCkgc2F2ZUV2ZW50PzogT2JzZXJ2YWJsZTx2b2lkPjtcclxuICAvKipcclxuICAgKiBDb250cm9scyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZ2xvYmFsIHNlYXJjaCBiYXIgaW4gdGhlIGdyaWQgY2FwdGlvbi5cclxuICAgKlxyXG4gICAqIFdoZW4gYHRydWVgLCBhIHNlYXJjaCBpbnB1dCBhbmQgYnV0dG9uIGFyZSBkaXNwbGF5ZWQsIGFsbG93aW5nIHVzZXJzIHRvXHJcbiAgICogZmlsdGVyIHJvd3MgYWNyb3NzIGFsbCB2aXNpYmxlIGNvbHVtbnMgc2ltdWx0YW5lb3VzbHkuIFN1cHBvcnRzIHBsYWluIHRleHQsXHJcbiAgICogZHJvcGRvd24gbGFiZWxzIChyZXNvbHZlZCB2aWEgc2hhZG93IGZpZWxkcyksIGFuZCBkZWNpbWFsIHZhbHVlcyB3aXRoXHJcbiAgICogbG9jYWxlLWF3YXJlIGNvbW1hL2RvdCBtYXRjaGluZy5cclxuICAgKlxyXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAgdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW91ciBmb3IgYWxsIGNvbnN1bWVyc1xyXG4gICAqIHRoYXQgZG8gbm90IGV4cGxpY2l0bHkgb3B0IGluIOKAlCBlbmFibGluZyBpdCBvbiBhIHNwZWNpZmljIGdyaWQgaXMgYXMgc2ltcGxlXHJcbiAgICogYXMgYWRkaW5nIGBbc2hvd0dsb2JhbFNlYXJjaF09XCJ0cnVlXCJgLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dHbG9iYWxTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0FkZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuICBASW5wdXQoKSBzaG93RGVsZXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTsvL1RPIERPIFNhdmUgQnV0dG9uIE9wdGlvblxyXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTsvL1RPIERPIFNhdmUgQnV0dG9uIE9wdGlvblxyXG4gIEBJbnB1dCgpIHNob3dSb3dTdW1tYXJ5OiBib29sZWFuID0gZmFsc2U7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuXHJcbiAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnNTAwcHgnO1xyXG5cclxuICAvKipcclxuICAgKiBGaWxsIChkZWZhdWx0KTogdGhlIHRhYmxlIHN0cmV0Y2hlcyB0byBmaWxsIGl0cyBjb250YWluZXIuIEh1ZzogdGhlIHRhYmxlIHNocmlua3MgdG9cclxuICAgKiBpdHMgY29sdW1ucycgc2l6ZSAobmV2ZXIgd2lkZXIgdGhhbiB0aGUgY29udGFpbmVyKSwgbGVhdmluZyBsZWZ0b3ZlciB3aWR0aCBlbXB0eS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzaXppbmdNb2RlOiBHcmlkU2l6aW5nTW9kZSA9IEdyaWRTaXppbmdNb2RlLkZpbGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNpemluZyBzdHlsZSBib3VuZCB0byB0aGUgcC10YWJsZSdzIGBbdGFibGVTdHlsZV1gIOKAlCB0aGUgc2luZ2xlIGxldmVyIHRoYXQgZGlzdGluZ3Vpc2hlc1xyXG4gICAqIEZpbGwgZnJvbSBIdWcgKHNlZSBHcmlkU2l6aW5nTW9kZSkuIEFwcGxpZWQgaW5saW5lIG9uIHRoZSBQcmltZU5HIHRhYmxlLCBzbyBpdCBiZWF0c1xyXG4gICAqIFByaW1lTkcncyBkZWZhdWx0IGAucC1kYXRhdGFibGUtdGFibGUgeyB3aWR0aDogMTAwJSB9YCB3aXRoIG5vIGAhaW1wb3J0YW50YC9gOjpuZy1kZWVwYC5cclxuICAgKiAtIEZpbGw6IGRlZmF1bHQgKG5vIGZvcmNlZCB3aWR0aDsgUHJpbWVORyBmaWxscyB0aGUgY29udGFpbmVyKS5cclxuICAgKiAtIEh1ZzogYHdpZHRoOmF1dG9gIHNocmlua3MgdGhlIHRhYmxlIHRvIGl0cyBjb2x1bW5zOyBgbWF4LXdpZHRoOjEwMCVgIGtlZXBzIGl0IGluc2lkZSB0aGVcclxuICAgKiAgIHBhZ2UgKG92ZXJmbG93IHNjcm9sbHMpOyBgbWluLXdpZHRoOjBgIGF2b2lkcyBhbnkgaW5oZXJpdGVkIGZsb29yLlxyXG4gICAqXHJcbiAgICogSHVnICsgYGNvbHVtblJlc2l6ZU1vZGU9XCJleHBhbmRcImA6IGRyYWdnaW5nIGEgY29sdW1uIHJlc2l6ZXMgdGhhdCBjb2x1bW4sIGJ1dCBgd2lkdGg6YXV0b2BcclxuICAgKiBpcyByZS1hc3NlcnRlZCBvbiBjaGFuZ2UgZGV0ZWN0aW9uLCBzbyB0aGUgdGFibGUgaXRzZWxmIHN0YXlzIGh1Z2dlZCBhbmQgbmV2ZXIgZXhwYW5kcy5cclxuICAgKi9cclxuICBnZXQgdGFibGVTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcclxuICAgIHJldHVybiB0aGlzLnNpemluZ01vZGUgPT09IEdyaWRTaXppbmdNb2RlLkh1Z1xyXG4gICAgICA/IHsgJ3dpZHRoJzogJ2F1dG8nLCAnbWluLXdpZHRoJzogJzAnLCAnbWF4LXdpZHRoJzogJzEwMCUnIH1cclxuICAgICAgOiB7fTtcclxuICB9XHJcbiAgQElucHV0KCkgcm93UGVyUGFnZTogbnVtYmVyW10gPSBbNSwgMTAsIDIwXTtcclxuICAvLyBASW5wdXQoKSBpc1BhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDVcclxuICBASW5wdXQoKSBlbnRpdHlQcmltYXJ5S2V5TmFtZSA6IHN0cmluZyA9ICd1aWQnXHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdGVkQ29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXTtcclxuXHJcbiAgZ2V0IHNlbGVjdGVkQ29sdW1ucygpOiBBcnJheTxHcmlkQ29sdW1uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgc2V0IHNlbGVjdGVkQ29sdW1ucyh2YWx1ZTogQXJyYXk8R3JpZENvbHVtbj4pIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkQ29sdW1ucyA9IHZhbHVlO1xyXG4gICAgdGhpcy5fc3luY0dsb2JhbEZpbHRlckZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXTtcclxuICBwcml2YXRlIF90ZW1wQ29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXTtcclxuICBwcml2YXRlIF9jb2x1bW5zQ2hhbmdlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZ2V0IGNvbHVtbnMoKTogQXJyYXk8R3JpZENvbHVtbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY29sdW1ucyh2YWx1ZTogQXJyYXk8R3JpZENvbHVtbj4gfCBPYnNlcnZhYmxlQ29sbGVjdGlvbjxHcmlkQ29sdW1uPikge1xyXG4gICAgdGhpcy5fY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgaXNPYnNlcnZhYmxlID0gKHZhbHVlIGFzIE9ic2VydmFibGVDb2xsZWN0aW9uPEdyaWRDb2x1bW4+KS5pc09ic2VydmFibGVDb2xsZWN0aW9uID09PSB0cnVlO1xyXG4gICAgY29uc3QgaXRlbXMgPSBpc09ic2VydmFibGUgPyAodmFsdWUgYXMgT2JzZXJ2YWJsZUNvbGxlY3Rpb248R3JpZENvbHVtbj4pLnRvQXJyYXkoKSA6IHZhbHVlIGFzIEFycmF5PEdyaWRDb2x1bW4+O1xyXG4gICAgaXRlbXMuZm9yRWFjaChlbCA9PiBlbC50cmFuc2xhdGVkSGVhZGVyID0gdGhpcy5fbG9jYWxpemVQaXBlLnRyYW5zZm9ybShlbC5oZWFkZXIgPz8gXCJcIikpO1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IGl0ZW1zO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSBbLi4uaXRlbXNdO1xyXG5cclxuICAgIGlmIChpc09ic2VydmFibGUpIHtcclxuICAgICAgdGhpcy5fY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24gPSAodmFsdWUgYXMgT2JzZXJ2YWJsZUNvbGxlY3Rpb248R3JpZENvbHVtbj4pLmNoYW5nZWQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImV2ZW50IGNoYW5nZWQgPT4gXCIsIGV2ZW50KVxyXG4gICAgICAgIHRoaXMuX29uQ29sdW1uc0NoYW5nZWQoZXZlbnQpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3ZlcmlmeUdyaWRSZXF1aXJlbWVudHMoKTtcclxuICAgIHRoaXMuX2luaXRDdXJyZW50Um93TnVtYmVyQW5kT3JkZXJCeVJvd051bWJlcigpO1xyXG4gIH1cclxuICBASW5wdXQoKSBzZXQgZ3JpZERhdGEoZGF0YTogQXJyYXk8YW55Pikge1xyXG4gICAgdGhpcy5fZ3JpZERhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5faW5pdEN1cnJlbnRSb3dOdW1iZXJBbmRPcmRlckJ5Um93TnVtYmVyKCk7XHJcbiAgfVxyXG4gIGdldCBncmlkRGF0YSgpIHsgcmV0dXJuIHRoaXMuX2dyaWREYXRhOyB9XHJcblxyXG4gIEBJbnB1dCgpIGlzVGFibGVMb2FkaW5nPzogYm9vbGVhbjtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHBhcmVudDogYW55O1xyXG5cclxuICBASW5wdXQoKSBzaG93U2F2ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7Ly9UTyBETyBTYXZlIEJ1dHRvbiBPcHRpb25cclxuICBASW5wdXQoKSBzaG93QWN0aW9uQ29sdW1uOiBib29sZWFuID0gdHJ1ZTsvL1RPIERPIFNhdmUgQnV0dG9uIE9wdGlvblxyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlUm93RGlzYWJsaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHJvd1N1bW1hcnlDb25maWc6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBASW5wdXQoKSBzaG93SGF2ZVN1bWFyeT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Um93U3VtYXJ5PzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipzZWxlY3Rpb24gKi9cclxuICBASW5wdXQoKSBzZWxlY3RLZXlPbmx5OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBHcmlkU2VsZWN0aW9uTW9kZSB8IGFueSA9IEdyaWRTZWxlY3Rpb25Nb2RlLlNpbmdsZTtcclxuICBASW5wdXQoKSBzaG93Q29uc3VsdEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9lZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGdldCBlZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VkaXRhYmxlR3JpZEJ1c2luZXNzQ2xhc3M7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBlZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9lZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzID0gY2xhc3NOYW1lO1xyXG4gICAgdGhpcy5nZW5lcmljVmFsaWRhdGlvblN0YXRlU2VydmljZT8ubG9hZEVudGl0eVZhbGlkYXRpb25JbmZvcyh0aGlzLl9lZGl0YWJsZUdyaWRCdXNpbmVzc0NsYXNzKTtcclxuICB9XHJcblxyXG5cclxuICAvKipvcmRlciAqL1xyXG4gIEBJbnB1dCgpIG9yZGVyQ29sdW1uOiBzdHJpbmcgPSAndWlkJztcclxuXHJcbiAgQElucHV0KCkgZGVsZXRlTGluZUJ1dHRvbkRpc2FibGVkITogKGl0ZW06IGFueSkgPT4gYW55XHJcblxyXG4gIEBJbnB1dCgpIHNob3dEdXBsaWNhdGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dHNcclxuXHJcbiAgQE91dHB1dCgpIHJlZnJlc2hFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvL0BPdXRwdXQoKSBhY3Rpb25FdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxHcmlkQWN0aW9uRW1pdFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRBY3Rpb25FbWl0UmVzdWx0PigpO1xyXG5cclxuICBAT3V0cHV0KCkgc2F2ZURhdGFFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgcm93Q2hhbmdlZEV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFJvd0V2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBhZGRlZFJvd0V2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPFJvd0FkZGVkUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8Um93QWRkZWRSZXN1bHQ+KClcclxuXHJcbiAgQE91dHB1dCgpIGZvY3VzT3V0RXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBjZWxsQ2hhbmdlZDogRXZlbnRFbWl0dGVyPENlbGxDaGFuZ2VkUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENoYW5nZWRSZXN1bHQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSByb3dEZWxldGVkRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd1NlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZm9jdXNPdXRSb3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29uc3VsdENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJvd0R1cGxpY2F0ZWRFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxSb3dBZGRlZFJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0FkZGVkUmVzdWx0PigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkKFwiZHRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyBkdDogVGFibGUgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUcmFja3Mgcm93cyBieSB0aGVpciBidXNpbmVzcyBrZXkgKGBrZXlgIGlucHV0KSBzbyBQcmltZU5HIHJldXNlcyBleGlzdGluZyByb3cgdmlld3NcclxuICAgKiBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcvcmVjcmVhdGluZyB0aGVtIHdoZW4gdGhlIHJvdyBhcnJheSBpcyByZXBsYWNlZCB3aXRoIG9iamVjdHMgc2hhcmluZ1xyXG4gICAqIHRoZSBzYW1lIGtleSAoZS5nLiBhZnRlciBhIHJlY2FsY3VsYXRpb24gdGhhdCBjbG9uZXMgdGhlIGRhdGEpLiBXaXRob3V0IHRoaXMsIGV2ZXJ5IGNlbGxcclxuICAgKiBlZGl0b3Ig4oCUIGluY2x1ZGluZyBzZXJ2ZXItYmFja2VkIHNlYXJjaCBjb21ib3Mg4oCUIGlzIHJlLWluc3RhbnRpYXRlZCBhbmQgcmUtZmV0Y2hlcyBpdHMgZGF0YS5cclxuICAgKiBGYWxscyBiYWNrIHRvIHRoZSByb3cgaW5kZXggd2hlbiB0aGUga2V5IGlzIGFic2VudCAoZS5nLiBicmFuZC1uZXcgcm93cykuXHJcbiAgICogQXJyb3cgcHJvcGVydHkgc28gYHRoaXNgIGlzIHByZXNlcnZlZCB3aGVuIFByaW1lTkcgaW52b2tlcyBpdC5cclxuICAgKi9cclxuICByb3dUcmFja0J5ID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IGFueSA9PiBpdGVtPy5bdGhpcy5rZXldID8/IGluZGV4O1xyXG5cclxuICBwcml2YXRlIF9lbnRpdHlWYWxpZGF0aW9uc1NlcnZpY2UgPSBpbmplY3QoRW50aXR5VmFsaWRhdGlvbnNTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9jYWxpemVQaXBlOiBMb2NhbGl6ZVBpcGUsIHByaXZhdGUgX2ZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl9yZWdpc3RlckdyaWRDb250YWluc0ZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICB0aGlzLl9pbml0U2F2ZUV2ZW50U3Vic2NyaXB0aW9uKCk7XHJcbiAgICB0aGlzLl92ZXJpZnlHcmlkUmVxdWlyZW1lbnRzKCk7XHJcbiAgICB0aGlzLl9pbml0Q3VycmVudFJvd051bWJlckFuZE9yZGVyQnlSb3dOdW1iZXIoKTtcclxuICAgIHRoaXMuX2luaXRFcXVhdGFibGVGaWVsZHMoKTtcclxuICAgIHRoaXMuX2luaXRTdW1BdEZ1c2lvbkZpZWxkcygpO1xyXG4gICAgXHJcbiAgICBsZXQgbGFuZ3VlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0ocnRsTW9kZUtleXMucnRsTW9kZUVuYWJsZWQpO1xyXG4gICAgXHJcbiAgICBpZiAobGFuZ3VlICYmIEpTT04ucGFyc2UobGFuZ3VlKSkge1xyXG4gICAgICB0aGlzLmlzQXIgPSB0cnVlXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5pc0FyID0gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDb2x1bW5zIHx8IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdGVtcENvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBmaW5kQ29sdW1uQnlLZXkoa2V5OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgZm9yIChsZXQgY29sIG9mIHRoaXMuY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2wuaGVhZGVyID09PSBrZXkgfHwgY29sLmZpZWxkID09PSBrZXkpIHJldHVybiBjb2w7XHJcbiAgICAgICAgZWxzZSBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgcmVzdG9yZVN0YXRlKGNvbmZpZ3VyYXRpb246IHN0cmluZykge1xyXG4gICAgbGV0IHN0YXRlOiBUYWJsZVN0YXRlID0gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uKVxyXG4gICAgaWYgKHRoaXMuZHQpIHtcclxuICAgICAgdGhpcy5jb2x1bW5XaWR0aC5zZXRSZW1lbWJlcmVkKHN0YXRlLmNvbHVtbldpZHRocyk7XHJcbiAgICAgIHRoaXMuZHQuY29sdW1uV2lkdGhzU3RhdGUgPSBzdGF0ZS5jb2x1bW5XaWR0aHM7XHJcbiAgICAgIHRoaXMuZHQudGFibGVXaWR0aFN0YXRlID0gc3RhdGUudGFibGVXaWR0aDtcclxuXHJcbiAgICAgIGxldCBjb2x1bW5PcmRlciA9IHN0YXRlLmNvbHVtbk9yZGVyO1xyXG5cclxuICAgICAgaWYgKGNvbHVtbk9yZGVyKSB7XHJcbiAgICAgICAgbGV0IHJlb3JkZXJlZENvbHVtbnMgPSB0aGlzLmdldFJlb3JkZXJlZENvbHVtbnMoY29sdW1uT3JkZXIpO1xyXG4gICAgICAgIGlmIChyZW9yZGVyZWRDb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVvcmRlcmVkQ29sdW1ucztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFwcGx5IHRoZSByZW1lbWJlcmVkIGNvbHVtbiB3aWR0aHMgdG8gdGhlIERPTS4gQXNzaWduaW5nIGNvbHVtbldpZHRoc1N0YXRlXHJcbiAgICAgIC8vIGFsb25lIGlzIGEgbm8tb3AgaGVyZSBiZWNhdXNlIHRoZSBncmlkIGlzIG5vdCBQcmltZU5HLVwic3RhdGVmdWxcIiAobm8gc3RhdGVLZXkpLlxyXG4gICAgICB0aGlzLmR0LnJlc3RvcmVDb2x1bW5XaWR0aHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJlb3JkZXJlZENvbHVtbnMoY29sdW1uT3JkZXI6IHN0cmluZ1tdKTogYW55W10ge1xyXG4gICAgbGV0IHJlb3JkZXJlZENvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgY29sdW1uT3JkZXIubWFwKChrZXkpID0+IHtcclxuICAgICAgbGV0IGNvbCA9IHRoaXMuZmluZENvbHVtbkJ5S2V5KGtleSk7XHJcbiAgICAgIGlmIChjb2wpIHtcclxuICAgICAgICByZW9yZGVyZWRDb2x1bW5zLnB1c2goY29sKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlb3JkZXJlZENvbHVtbnM7XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkQ29sdW1ucyhjb25maWd1cmF0aW9uOiBzdHJpbmcpIHtcclxuICAgIGxldCBzdGF0ZTogVGFibGVTdGF0ZSA9IEpTT04ucGFyc2UoY29uZmlndXJhdGlvbilcclxuICAgIGlmICh0aGlzLmR0KSB7XHJcbiAgICAgIHRoaXMuY29sdW1uV2lkdGgucmVzZXQoKTtcclxuICAgICAgdGhpcy5jb2x1bW5XaWR0aC5zZXRSZW1lbWJlcmVkKHN0YXRlLmNvbHVtbldpZHRocyk7XHJcbiAgICAgIHRoaXMuZHQuY29sdW1uV2lkdGhzU3RhdGUgPSBzdGF0ZS5jb2x1bW5XaWR0aHM7XHJcbiAgICAgIHRoaXMuZHQudGFibGVXaWR0aFN0YXRlID0gc3RhdGUudGFibGVXaWR0aDtcclxuXHJcbiAgICAgIGxldCBjb2x1bW5PcmRlciA9IHN0YXRlLmNvbHVtbk9yZGVyO1xyXG5cclxuICAgICAgaWYgKGNvbHVtbk9yZGVyKSB7XHJcbiAgICAgICAgbGV0IHJlb3JkZXJlZENvbHVtbnMgPSB0aGlzLmdldFJlb3JkZXJlZENvbHVtbnMoY29sdW1uT3JkZXIpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVvcmRlcmVkQ29sdW1ucy5sZW5ndGggPiAwID8gcmVvcmRlcmVkQ29sdW1ucyA6IFsuLi50aGlzLl9jb2x1bW5zXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kdC5yZXN0b3JlQ29sdW1uV2lkdGhzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZSgpIHtcclxuICAgIGxldCBzdGF0ZTogVGFibGVTdGF0ZSA9IHt9O1xyXG5cclxuICAgIGlmICghdGhpcy5kdCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kdC5yZXNpemFibGVDb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuZHQuc2F2ZUNvbHVtbldpZHRocyhzdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kdC5zYXZlQ29sdW1uT3JkZXIoc3RhdGUpO1xyXG5cclxuICAgIHJldHVybiBzdGF0ZVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hhcmVkIG1vZGVsIGZvciB0aGUgZGV2ZWxvcGVyLXdpZHRoIC8gd3JhcHBpbmcgLyByZXNpemUtcHJpb3JpdHkgYmVoYXZpb3IuIEFjdGlvbi9idXR0b25cclxuICAgKiBjb2x1bW5zIGFuZCBmcm96ZW4gY29sdW1ucyBhcmUgZXhjbHVkZWQgKGZyb3plbiBjb2x1bW5zIG11c3Qga2VlcCB0aGVpciBzdGlja3ktb2Zmc2V0XHJcbiAgICogd2lkdGggb3IgbGF0ZXIgZnJvemVuIGNvbHVtbnMgbWlzYWxpZ24pOyBhbGwgb3RoZXIgY29sdW1ucyBhcmUgZWxpZ2libGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb2x1bW5XaWR0aCA9IG5ldyBDb2x1bW5XaWR0aENvbnRyb2xsZXIoKGNvbCkgPT4gIWNvbC5pc0J1dHRvbiAmJiAhY29sLmlzRnJvemVuKTtcclxuXHJcbiAgLyoqIFJlbWVtYmVyIHdoaWNoIGNvbHVtbiB0aGUgdXNlciByZXNpemVkIHNvIGl0cyBkZXZlbG9wZXItcHJlZmVycmVkIHdpZHRoIHlpZWxkcy4gKi9cclxuICBvbkNvbFJlc2l6ZShldmVudDogeyBlbGVtZW50PzogSFRNTEVsZW1lbnQ7IGRlbHRhPzogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1uV2lkdGgub25SZXNpemUoZXZlbnQ/LmVsZW1lbnQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1maWVsZCcpKTtcclxuICB9XHJcblxyXG4gIC8qKiBXaGV0aGVyIGEgY29sdW1uJ3MgY29udGVudCBzaG91bGQgd3JhcCB0byBzdGF5IGluc2lkZSBpdHMgY29uc3RyYWluZWQgd2lkdGguICovXHJcbiAgc2hvdWxkV3JhcENvbHVtbihjb2w6IEdyaWRDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbHVtbldpZHRoLnNob3VsZFdyYXAoY29sKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldmVsb3BlciBzaXplIHN0eWxlIG9ubHksIGJvdW5kIHZpYSBgW25nU3R5bGVdYCBvbiB0aGUgaGVhZGVyL3N1bW1hcnkgY2VsbHMgYWxvbmdzaWRlXHJcbiAgICogdGhlaXIgdW50b3VjaGVkIGBbc3R5bGVdPVwiY29sLnN0eWxlXCJgIChzbyBhIHN0cmluZyBgY29sLnN0eWxlYCBpcyBuZXZlciBzcHJlYWQvYnJva2VuKS5cclxuICAgKi9cclxuICBnZXRDb2x1bW5TaXplU3R5bGUoY29sOiBHcmlkQ29sdW1uKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5XaWR0aC5zaXplU3R5bGUoY29sKTtcclxuICB9XHJcblxyXG4gIC8qKiBCb2R5IGA8dGQ+YCBzdHlsZTogUlRMIGFsaWdubWVudCArIHRvcC1hbGlnbiAoZWxpZ2libGUgY2VsbHMpICsgZGV2ZWxvcGVyIHNpemUgc3R5bGUuICovXHJcbiAgZ2V0Qm9keUNvbHVtblN0eWxlKGNvbDogR3JpZENvbHVtbik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xyXG4gICAgY29uc3QgYmFzZSA9IHRoaXMuaXNBciA/IHsgJ3RleHQtYWxpZ24nOiAnc3RhcnQnIH0gOiB7fTtcclxuICAgIHJldHVybiB7IC4uLmJhc2UsIC4uLnRoaXMuY29sdW1uV2lkdGgudmVydGljYWxBbGlnbihjb2wpLCAuLi50aGlzLmNvbHVtbldpZHRoLnNpemVTdHlsZShjb2wpIH07XHJcbiAgfVxyXG5cclxuICBpc0RlbGV0ZUJ1dHRvbkRpc2FibGVkKGl0ZW06IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGVsZXRlTGluZUJ1dHRvbkRpc2FibGVkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZWxldGVMaW5lQnV0dG9uRGlzYWJsZWQoaXRlbSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKVxyXG4gICAgdGhpcy5zYXZlRXZlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpO1xyXG4gICAgdGhpcy5fY29sdW1uc0NoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vbkNvbHVtbnNDaGFuZ2VkKGV2ZW50OiBDb2xsZWN0aW9uQ2hhbmdlZEV2ZW50PEdyaWRDb2x1bW4+KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmFjdGlvbikge1xyXG4gICAgICBjYXNlIENvbGxlY3Rpb25DaGFuZ2VBY3Rpb24uQWRkOiB7XHJcbiAgICAgICAgaWYgKGV2ZW50Lm5ld0l0ZW1zICYmIGV2ZW50Lm5ld1N0YXJ0aW5nSW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZXZlbnQubmV3SXRlbXMuZm9yRWFjaChjb2wgPT5cclxuICAgICAgICAgICAgY29sLnRyYW5zbGF0ZWRIZWFkZXIgPSB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKGNvbC5oZWFkZXIgPz8gXCJcIilcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBwcmV2U2VsZWN0ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcclxuICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbLi4udGhpcy5fY29sdW1uc107XHJcbiAgICAgICAgICBuZXdDb2x1bW5zLnNwbGljZShldmVudC5uZXdTdGFydGluZ0luZGV4LCAwLCAuLi5ldmVudC5uZXdJdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLl9jb2x1bW5zID0gbmV3Q29sdW1ucztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5fY29sdW1ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGMgPT4gcHJldlNlbGVjdGVkLmhhcyhjKSB8fCBldmVudC5uZXdJdGVtcyEuaW5jbHVkZXMoYylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ29sbGVjdGlvbkNoYW5nZUFjdGlvbi5SZW1vdmU6IHtcclxuICAgICAgICBpZiAoZXZlbnQub2xkSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBuZXcgU2V0KGV2ZW50Lm9sZEl0ZW1zKTtcclxuICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLl9jb2x1bW5zLmZpbHRlcihjID0+ICFyZW1vdmVkLmhhcyhjKSk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmZpbHRlcihjID0+ICFyZW1vdmVkLmhhcyhjKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ29sbGVjdGlvbkNoYW5nZUFjdGlvbi5SZXBsYWNlOiB7XHJcbiAgICAgICAgaWYgKGV2ZW50Lm5ld0l0ZW1zICYmIGV2ZW50Lm9sZEl0ZW1zICYmIGV2ZW50Lm5ld1N0YXJ0aW5nSW5kZXggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZXZlbnQubmV3SXRlbXMuZm9yRWFjaChjb2wgPT5cclxuICAgICAgICAgICAgY29sLnRyYW5zbGF0ZWRIZWFkZXIgPSB0aGlzLl9sb2NhbGl6ZVBpcGUudHJhbnNmb3JtKGNvbC5oZWFkZXIgPz8gXCJcIilcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBwcmV2U2VsZWN0ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcclxuICAgICAgICAgIGNvbnN0IHJlbW92ZWRPbGQgPSBuZXcgU2V0KGV2ZW50Lm9sZEl0ZW1zKTtcclxuICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbLi4udGhpcy5fY29sdW1uc107XHJcbiAgICAgICAgICBuZXdDb2x1bW5zLnNwbGljZShldmVudC5uZXdTdGFydGluZ0luZGV4LCBldmVudC5vbGRJdGVtcy5sZW5ndGgsIC4uLmV2ZW50Lm5ld0l0ZW1zKTtcclxuICAgICAgICAgIHRoaXMuX2NvbHVtbnMgPSBuZXdDb2x1bW5zO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLl9jb2x1bW5zLmZpbHRlcihcclxuICAgICAgICAgICAgYyA9PiAocHJldlNlbGVjdGVkLmhhcyhjKSAmJiAhcmVtb3ZlZE9sZC5oYXMoYykpIHx8IGV2ZW50Lm5ld0l0ZW1zIS5pbmNsdWRlcyhjKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBDb2xsZWN0aW9uQ2hhbmdlQWN0aW9uLlJlc2V0OlxyXG4gICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgdGhpcy5fY29sdW1ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gW107XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92ZXJpZnlHcmlkUmVxdWlyZW1lbnRzKCk7XHJcbiAgICB0aGlzLl9pbml0Q3VycmVudFJvd051bWJlckFuZE9yZGVyQnlSb3dOdW1iZXIoKTtcclxuICB9XHJcblxyXG4gIHNhdmVJdGVtcygpIHtcclxuICAgIGNvbnN0IGNsZWFuID0gdGhpcy5fY2xlYW5HcmlkRGF0YUZvckVtaXQoKTtcclxuICAgIHRoaXMuc2F2ZURhdGFFdmVudEVtaXR0ZXIuZW1pdChjbGVhbik7XHJcbiAgfVxyXG5cclxuICBhZGRSb3coKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZERhdGEpIHtcclxuICAgICAgdGhpcy5ncmlkRGF0YSA9IFtdO1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld1JvdyA9IHRoaXMuX2luaXRSb3coKVxyXG4gICAgdGhpcy5ncmlkRGF0YS5wdXNoKG5ld1JvdylcclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWVcclxuICAgIGxldCByb3dBZGRlZFJlc3VsdDogUm93QWRkZWRSZXN1bHQgPSB7XHJcbiAgICAgIHJvd051bWJlcjogdGhpcy5ncmlkRGF0YS5sZW5ndGggLSAxLFxyXG4gICAgICBkYXRhOiBuZXdSb3dcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRPcmRlcikge1xyXG4gICAgICB0aGlzLmVkaXRhYmxlVGFibGU/LnZhbHVlLnB1c2gobmV3Um93KVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoU29ydCgpXHJcbiAgICB0aGlzLmFkZGVkUm93RXZlbnRFbWl0dGVyLmVtaXQocm93QWRkZWRSZXN1bHQpXHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVSb3coaXRlbTogYW55LCB1cGRhdGVTZWxlY3Rpb246IGJvb2xlYW4gPSB0cnVlLCBza2lwRW1pdDogYm9vbGVhbiA9IGZhbHNlKTogUm93QWRkZWRSZXN1bHQgfCBudWxsIHtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgZHVwbGljYXRlZFJvdyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xyXG4gICAgZHVwbGljYXRlZFJvd1t0aGlzLmVudGl0eVByaW1hcnlLZXlOYW1lXSA9IHVuZGVmaW5lZDtcclxuICAgIFxyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2wuZXhjbHVkZU9uRHVwbGljYXRlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkdXBsaWNhdGVkUm93LCBjb2wuZmllbGQpKSB7XHJcbiAgICAgICAgZHVwbGljYXRlZFJvd1tjb2wuZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2lzQXV0b1Jvd051bWJlcikge1xyXG4gICAgICBkdXBsaWNhdGVkUm93W3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF0gPSB0aGlzLl9uZXh0Um93TnVtYmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ncmlkRGF0YS5wdXNoKGR1cGxpY2F0ZWRSb3cpO1xyXG4gICAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRPcmRlcikge1xyXG4gICAgICB0aGlzLmVkaXRhYmxlVGFibGU/LnZhbHVlLnB1c2goZHVwbGljYXRlZFJvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoU29ydCgpO1xyXG5cclxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBkdXBsaWNhdGVkUm93O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGlvbk1vZGUgPT0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGVcclxuICAgICAgICA/IFtkdXBsaWNhdGVkUm93XVxyXG4gICAgICAgIDogZHVwbGljYXRlZFJvdztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXN1bHQ6IFJvd0FkZGVkUmVzdWx0ID0ge1xyXG4gICAgICByb3dOdW1iZXI6IHRoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMSxcclxuICAgICAgZGF0YTogZHVwbGljYXRlZFJvd1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXNraXBFbWl0KSB7XHJcbiAgICAgIHRoaXMuYWRkZWRSb3dFdmVudEVtaXR0ZXIuZW1pdChyZXN1bHQpO1xyXG4gICAgICB0aGlzLnJvd0R1cGxpY2F0ZWRFdmVudEVtaXR0ZXIuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoU29ydCgpIHtcclxuICAgIGlmICh0aGlzLmVkaXRhYmxlVGFibGU/LnNvcnRGaWVsZCkge1xyXG4gICAgICBjb25zdCBzb3J0RmllbGQgPSB0aGlzLmVkaXRhYmxlVGFibGUuc29ydEZpZWxkO1xyXG4gICAgICBjb25zdCBzb3J0T3JkZXIgPSB0aGlzLmVkaXRhYmxlVGFibGUuc29ydE9yZGVyO1xyXG5cclxuICAgICAgdGhpcy5ncmlkRGF0YS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVBID0gYVtzb3J0RmllbGRdO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlQiA9IGJbc29ydEZpZWxkXTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlQSA8IHZhbHVlQikgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWVBID4gdmFsdWVCKSByZXN1bHQgPSAxO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0ICogc29ydE9yZGVyO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZ3JpZERhdGEgPSBbLi4udGhpcy5ncmlkRGF0YV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxldGUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZVRhYmxlPy5zb3J0RmllbGQgJiYgdGhpcy5lZGl0YWJsZVRhYmxlLnNvcnRNb2RlKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZVRhYmxlLnZhbHVlLnNwbGljZShpbmRleCwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdyaWREYXRhLmluZGV4T2YoaXRlbSwgMCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLmdyaWREYXRhLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuaXNEaXJ0eSA9IHRydWVcclxuICAgICAgdGhpcy5fb25EZWxldGVSb3coaXRlbSk7XHJcbiAgICAgIHRoaXMucm93RGVsZXRlZEV2ZW50RW1pdHRlci5lbWl0KHRoaXMuX2NsZWFuR3JpZERhdGFGb3JFbWl0KCkpXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hTb3J0KClcclxuICB9XHJcblxyXG4gIGdldFN1bW1hcnkoY29sOiBHcmlkQ29sdW1uKTogbnVtYmVyIHtcclxuICAgIGlmIChjb2wuaGF2ZVN1bW1hcnkgPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gcHJlY2lzZVN1bSgodGhpcy5ncmlkRGF0YSA/PyBbXSkubWFwKChyb3c6IGFueSkgPT4gcm93W2NvbC5maWVsZF0pKTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgcm93U3VtbWFyeShyb3c6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gcHJlY2lzZVN1bSh0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wucm93U3VtbWFyeSA9PSB0cnVlKS5tYXAoY29sID0+IHJvd1tjb2wuZmllbGRdKSk7XHJcbiAgfVxyXG5cclxuICBvblJvd1NlbGVjdGVkKGV2ZW50OiBUYWJsZVJvd1NlbGVjdEV2ZW50KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGV2ZW50LmRhdGE7XHJcbiAgICB0aGlzLl9mNlNvdXJjZVJvdyA9IG51bGw7XHJcbiAgICB0aGlzLl9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0S2V5T25seSA9PSB0cnVlKSB7XHJcbiAgICAgIGxldCBzZWxlY3Rpb25LZXk6IGFueTtcclxuICAgICAgc2VsZWN0aW9uS2V5ID0gdGhpcy5zZWxlY3RlZEl0ZW1bdGhpcy5rZXldO1xyXG4gICAgICB0aGlzLm9uUm93U2VsZWN0LmVtaXQoc2VsZWN0aW9uS2V5KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9uUm93U2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUm93VW5zZWxlY3QoZXZlbnQ6IFRhYmxlUm93VW5TZWxlY3RFdmVudCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9mNlNvdXJjZVJvdyA9IG51bGw7XHJcbiAgICB0aGlzLl9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBsZXQgc2VsZWN0aW9uOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT0gR3JpZFNlbGVjdGlvbk1vZGUuTXVsdGlwbGUpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEtleU9ubHkpIHtcclxuICAgICAgICAgIGxldCBrZXlzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgodjogYW55KSA9PiB7IGtleXMucHVzaCh2W3RoaXMua2V5XSkgfSk7XHJcbiAgICAgICAgICBzZWxlY3Rpb24gPSBrZXlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0aW9uID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PSBHcmlkU2VsZWN0aW9uTW9kZS5TaW5nbGUpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0S2V5T25seSkge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtcyA/IFt0aGlzLnNlbGVjdGVkSXRlbXNbdGhpcy5rZXldXSA6IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtcyA/IFt0aGlzLnNlbGVjdGVkSXRlbXNdIDogW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9IEdyaWRTZWxlY3Rpb25Nb2RlLk5vbmUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQoc2VsZWN0aW9uKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdTcGFjZScpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVHcmlkS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Y2Jykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5fZjZTb3VyY2VSb3cgPz8gdGhpcy5zZWxlY3RlZEl0ZW07XHJcbiAgICAgIGlmICghc291cmNlKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBpc0ZpcnN0RHVwbGljYXRlID0gIXRoaXMuX2Y2U291cmNlUm93O1xyXG4gICAgICB0aGlzLl9mNlNvdXJjZVJvdyA9IHNvdXJjZTtcclxuXHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZHVwbGljYXRlUm93KHNvdXJjZSwgaXNGaXJzdER1cGxpY2F0ZSwgdHJ1ZSk7XHJcblxyXG4gICAgICBpZiAocmVzdWx0ICYmICF0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCA9IHJlc3VsdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fcGVuZGluZ0R1cGxpY2F0ZUVtaXRUaW1lcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5hZGRlZFJvd0V2ZW50RW1pdHRlci5lbWl0KHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQpO1xyXG4gICAgICAgICAgdGhpcy5yb3dEdXBsaWNhdGVkRXZlbnRFbWl0dGVyLmVtaXQodGhpcy5fcGVuZGluZ0R1cGxpY2F0ZVJlc3VsdCk7XHJcbiAgICAgICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzT3V0Um93KGl0ZW06IGFueSkge1xyXG4gICAgdGhpcy5mb2N1c091dFJvdy5lbWl0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tU29ydChldmVudDogU29ydEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSAhPSBudWxsICYmIGV2ZW50LmRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGV2ZW50LmRhdGEuc29ydCgoZGF0YTEsIGRhdGEyKSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmZpZWxkICE9IG51bGwgJiYgZXZlbnQuZmllbGQgIT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yZGVyKSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUxID0gZGF0YTFbZXZlbnQuZmllbGRdO1xyXG4gICAgICAgICAgbGV0IHZhbHVlMiA9IGRhdGEyW2V2ZW50LmZpZWxkXTtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbClcclxuICAgICAgICAgICAgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcclxuICAgICAgICAgICAgcmVzdWx0ID0gMTtcclxuICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXN1bHQgPSAwO1xyXG4gICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlMiA9PT0gJ3N0cmluZycpXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJlc3VsdCA9ICh2YWx1ZTEgPCB2YWx1ZTIpID8gLTEgOiAodmFsdWUxID4gdmFsdWUyKSA/IDEgOiAwO1xyXG5cclxuICAgICAgICAgIHJldHVybiAoZXZlbnQub3JkZXIgKiByZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdWx0KGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ29uc3VsdENsaWNrZWQuZW1pdChrZXkpO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsTGFiZWxSZXNvbHZlZChjb2w6IEdyaWRDb2x1bW4sIGxhYmVsOiBzdHJpbmcsIGl0ZW06IGFueSk6IHZvaWQge1xyXG4gICAgaXRlbVt0aGlzLl9nZXRTaGFkb3dTZWFyY2hDb2x1bW5MYWJlbChjb2wpXSA9IGxhYmVsO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsVmFsdWVDaGFuZ2VkKGNvbDogR3JpZENvbHVtbiwgbmV3VmFsdWU6IGFueSwgaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICAvLyBNYXJrIHRoZSBncmlkIGl0c2VsZiBkaXJ0eSBvbiBhbnkgZ2VudWluZSBjZWxsIGVkaXQuIFRoZSBncmlkIGluc3RhbmNlIGxpdmVzXHJcbiAgICAvLyBmb3IgdGhlIHdob2xlIGZvcm0gbGlmZXRpbWUsIHNvIHRoaXMgZmxhZyBzdXJ2aXZlcyByb3ctZGF0YSByZWFzc2lnbm1lbnRcclxuICAgIC8vIGR1cmluZyByZWNhbGN1bGF0aW9uICh3aGVyZSB0cmFuc2llbnQgY2VsbCBpbnB1dHMgYXJlIHJlY3JlYXRlZCBhbmQgbG9zZVxyXG4gICAgLy8gdGhlaXIgb3duIGlzRGlydHkpLCBrZWVwaW5nIHRoZSBzYXZlLXRpbWUgY2hhbmdlIGRldGVjdGlvbiBhY2N1cmF0ZS5cclxuICAgIHRoaXMuaXNEaXJ0eSA9IHRydWU7XHJcbiAgICBpZiAoY29sLnR5cGUgPT09IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPICYmIG5ld1ZhbHVlID09IG51bGwpIHtcclxuICAgICAgZGVsZXRlIGl0ZW1bdGhpcy5fZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sKV07XHJcbiAgICB9XHJcbiAgICAvLyBzZW5kIGV2ZW50c1xyXG4gICAgaWYgKGNvbC53YXRjaEZvckNoYW5nZXMgPT09IHRydWUpIHtcclxuXHJcbiAgICAgIGxldCBjZWxsQ2hhbmdlZFJlc3VsdDogQ2VsbENoYW5nZWRSZXN1bHQgPSB7XHJcbiAgICAgICAga2V5OiBpdGVtW3RoaXMua2V5XSxcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2VsbENoYW5nZWQuZW1pdChjZWxsQ2hhbmdlZFJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmVjYWxjdWxhdGUgY3VycmVudFJvd051bWJlclxyXG4gICAgaWYgKGNvbC5maWVsZCA9PT0gdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkKSB7XHJcbiAgICAgIHRoaXMuX29yZGVyQnlSb3dOdW1iZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayBmb3IgZHVwbGljYXRlZCByb3dzXHJcbiAgICAvLyBpZih0aGlzLl9lcXVhbGl0eUNoZWNrT24gJiYgY29sLmlzRXF1YXRhYmxlQ3JpdGVyaWEpe1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygnZm91bmQgZXF1YXRhYmxlIDogY29sOicsIGNvbCwgJ3JvdyA6ICcsIGl0ZW0pO1xyXG4gICAgLy8gICB0aGlzLl90cnlGaW5kRXF1YXRhYmxlKGl0ZW0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZUZvcm1TdGF0ZShmb3JtU3RhdGU6IEZvcm1TdGF0ZSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmdlbmVyaWNWYWxpZGF0aW9uU3RhdGVTZXJ2aWNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdlbmVyaWNWYWxpZGF0aW9uU3RhdGVTZXJ2aWNlLnVwZGF0ZUZvcm1TdGF0ZShmb3JtU3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlHbG9iYWxTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmR0Py5maWx0ZXJHbG9iYWwodGhpcy5zZWFyY2hWYWx1ZSwgRWRpdGFibGVHcmlkQ29tcG9uZW50LkRFQ0lNQUxfQVdBUkVfQ09OVEFJTlNfRklMVEVSKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBwcml2YXRlIG1ldGhvZHNcclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFJvdygpIHtcclxuICAgIGxldCBuZXdSb3c6IGFueSA9IHt9O1xyXG4gICAgaWYgKHRoaXMuY29sdW1ucykge1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBJbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVRcclxuICAgICAgICAgIHx8IGNvbC50eXBlID09IElucHV0VHlwZXMuUkFURV9JTlBVVFxyXG4gICAgICAgICAgfHwgY29sLnR5cGUgPT0gSW5wdXRUeXBlcy5JTlRFR0VSXHJcbiAgICAgICAgICB8fCBjb2wudHlwZSA9PSBJbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVRcclxuICAgICAgICAgIHx8IGNvbC50eXBlID09IElucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQpIHtcclxuICAgICAgICAgIG5ld1Jvd1tjb2wuZmllbGRdID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY29sLnR5cGUgPT0gSW5wdXRUeXBlcy5DSEVDS0JPWCkge1xyXG4gICAgICAgICAgbmV3Um93W2NvbC5maWVsZF0gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBuZXdSb3dbY29sLmZpZWxkXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX2lzQXV0b1Jvd051bWJlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIG5ld1Jvd1t0aGlzLl9hdXRvUm93TnVtYmVyRmllbGRdID0gdGhpcy5fbmV4dFJvd051bWJlcigpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdSb3dcclxuICAgIH1cclxuICAgIHJldHVybiBuZXdSb3c7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0U2F2ZUV2ZW50U3Vic2NyaXB0aW9uKCkge1xyXG4gICAgdGhpcy5zYXZlRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLnNhdmVFdmVudD8uc3Vic2NyaWJlKFxyXG4gICAgICAoKSA9PiB0aGlzLnNhdmVJdGVtcygpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmVyaWZ5R3JpZFJlcXVpcmVtZW50cygpIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMgPT0gbnVsbFxyXG4gICAgICB8fCB0aGlzLmNvbHVtbnMgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ3JpZCBjb2x1bW5zIGNhblxcJ3QgYmUgbnVsbCcpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGxldCByb3dOdW1iZXJDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+IGMuaXNBdXRvUm93TnVtYmVyQ29sdW1uID09PSB0cnVlKTtcclxuXHJcbiAgICBpZiAocm93TnVtYmVyQ29sdW1ucy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ3JpZCBjb2x1bW5zIGNhblxcJ3QgaGF2ZSBtb3JlIHRoYW4gb25lIFJvd051bWJlckNvbHVtbicpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmIChyb3dOdW1iZXJDb2x1bW5zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuX2lzQXV0b1Jvd051bWJlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZCA9IHJvd051bWJlckNvbHVtbnNbMF0uZmllbGQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0Q3VycmVudFJvd051bWJlckFuZE9yZGVyQnlSb3dOdW1iZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNBdXRvUm93TnVtYmVyID09PSB0cnVlXHJcbiAgICAgICYmIHRoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZCAhPSB1bmRlZmluZWRcclxuICAgICAgJiYgdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkICE9IG51bGxcclxuICAgICAgJiYgdGhpcy5ncmlkRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuX29yZGVyQnlSb3dOdW1iZXIoKTtcclxuXHJcbiAgICAgIHRoaXMuX2N1cnJlbnRSb3dOdW1iZXIgPSB0aGlzLmdyaWREYXRhW3RoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMV1bdGhpcy5fYXV0b1Jvd051bWJlckZpZWxkXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX25leHRSb3dOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgIHRoaXMuX2N1cnJlbnRSb3dOdW1iZXIgPSB0aGlzLmdyaWREYXRhLmxlbmd0aCArIDE7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJvd051bWJlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29uRGVsZXRlUm93KHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAocm93W3RoaXMuX2F1dG9Sb3dOdW1iZXJGaWVsZF0gPT09IHRoaXMuX2N1cnJlbnRSb3dOdW1iZXIpIHtcclxuICAgICAgdGhpcy5fY3VycmVudFJvd051bWJlci0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb3JkZXJCeVJvd051bWJlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JpZERhdGEuc29ydCgoYSwgYikgPT4geyByZXR1cm4gYVt0aGlzLl9hdXRvUm93TnVtYmVyRmllbGRdIC0gYlt0aGlzLl9hdXRvUm93TnVtYmVyRmllbGRdOyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRFcXVhdGFibGVGaWVsZHMoKTogdm9pZCB7XHJcbiAgICBsZXQgZXF1YXRhYmxlQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmlzRXF1YXRhYmxlQ3JpdGVyaWEgPT0gdHJ1ZSk7XHJcbiAgICBpZiAoZXF1YXRhYmxlQ29sdW1ucykge1xyXG4gICAgICB0aGlzLl9lcXVhbGl0eUNoZWNrT24gPSB0cnVlO1xyXG4gICAgICB0aGlzLl9lcXVhdGFibGVGaWVsZHMgPSBlcXVhdGFibGVDb2x1bW5zLm1hcChjID0+IGMuZmllbGQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFN1bUF0RnVzaW9uRmllbGRzKCk6IHZvaWQge1xyXG4gICAgbGV0IHN1bUF0RnVzaW9uQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmlzU3VtQXRGdXNpb24gPT0gdHJ1ZSk7XHJcbiAgICBpZiAoc3VtQXRGdXNpb25Db2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuX2VxdWFsaXR5Q2hlY2tPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuX3N1bUF0RnVzaW9uRmllbGRzID0gc3VtQXRGdXNpb25Db2x1bW5zLm1hcChjID0+IGMuZmllbGQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdHJ5RmluZEVxdWF0YWJsZShyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IGZvdW5kRXF1YWxSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLmdyaWREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdwcm9jIHJvdyA6ICcsIHRoaXMuZ3JpZERhdGFbaV0pO1xyXG4gICAgICBsZXQgaXNDdXJyZW50Um93RXF1YWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICB0aGlzLl9lcXVhdGFibGVGaWVsZHM/LmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3Byb2MgZmllbGQgOiAnLCBmKTtcclxuICAgICAgICBpZiAodGhpcy5ncmlkRGF0YVtpXVtmXSAhPSByb3dbZl0pIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdub3QgZXF1YWwgJywgcm93LCB0aGlzLmdyaWREYXRhW2ldKTtcclxuICAgICAgICAgIGlzQ3VycmVudFJvd0VxdWFsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGlzQ3VycmVudFJvd0VxdWFsKSB7XHJcbiAgICAgICAgdGhpcy5fZnVzaW9uUm93cyh0aGlzLmdyaWREYXRhW2ldLCByb3cpO1xyXG4gICAgICAgIGZvdW5kRXF1YWxSb3cgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZm91bmRFcXVhbFJvdykge1xyXG4gICAgICBjb25zb2xlLmxvZygnZGVsZXRpbmcgOiAnLCByb3cpO1xyXG4gICAgICB0aGlzLmRlbGV0ZShyb3cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZnVzaW9uUm93cyhyb3cxOiBhbnksIHJvdzI6IGFueSkge1xyXG4gICAgdGhpcy5fc3VtQXRGdXNpb25GaWVsZHM/LmZvckVhY2goZiA9PiB7XHJcbiAgICAgIHJvdzFbZl0gPSBwcmVjaXNlQWRkKHJvdzFbZl0sIHJvdzJbZl0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYW5jZWxQZW5kaW5nRHVwbGljYXRlRW1pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVSZXN1bHQgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3BlbmRpbmdEdXBsaWNhdGVFbWl0VGltZXIpO1xyXG4gICAgICB0aGlzLl9wZW5kaW5nRHVwbGljYXRlRW1pdFRpbWVyID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N5bmNHbG9iYWxGaWx0ZXJGaWVsZHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWVsZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiB0aGlzLnNlbGVjdGVkQ29sdW1ucykge1xyXG4gICAgICBpZiAoY29sLnR5cGUgPT09IElucHV0VHlwZXMuU0VBUkNIX0NPTUJPKSB7XHJcbiAgICAgICAgZmllbGRzLnB1c2godGhpcy5fZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmllbGRzLnB1c2goY29sLmZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMgPSBmaWVsZHM7XHJcbiAgfVxyXG4gIFxyXG4gIHByaXZhdGUgX3JlZ2lzdGVyR3JpZENvbnRhaW5zRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgLy8gQ3VzdG9tIFByaW1lTkcgZmlsdGVyIHVzZWQgYnkgYXBwbHlHbG9iYWxTZWFyY2goKSBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiAnY29udGFpbnMnLlxyXG4gICAgLy8gRXh0ZW5kcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgd2l0aCBsb2NhbGUtYXdhcmUgZGVjaW1hbCBtYXRjaGluZzpcclxuICAgIC8vIGEgdXNlciBpbiBGUi9BUiBsb2NhbGUgdHlwZXMgXCIxMSwyNVwiIGJ1dCB0aGUgc3RvcmVkIEpTIG51bWJlciBzdHJpbmdpZmllcyBhcyBcIjExLjI1XCIsXHJcbiAgICAvLyBzbyBhIHBsYWluICdjb250YWlucycgY2hlY2sgd291bGQgbWlzcyBpdC5cclxuICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UucmVnaXN0ZXIoRWRpdGFibGVHcmlkQ29tcG9uZW50LkRFQ0lNQUxfQVdBUkVfQ09OVEFJTlNfRklMVEVSLCAodmFsdWU6IGFueSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKGZpbHRlciA9PSBudWxsIHx8IGZpbHRlci50cmltKCkgPT09ICcnKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGNvbnN0IHN0clZhbHVlID0gU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBjb25zdCBzdHJGaWx0ZXIgPSBmaWx0ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAvLyBTdGVwIDEg4oCUIGRpcmVjdCBtYXRjaCAoaGFuZGxlcyBhbGwgdGV4dCBjb2x1bW5zIGFuZCBleGFjdCBudW1lcmljIG1hdGNoZXMpXHJcbiAgICAgIGlmIChzdHJWYWx1ZS5pbmNsdWRlcyhzdHJGaWx0ZXIpKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIFN0ZXAgMiDigJQgZGVjaW1hbCBjb21tYeKGlGRvdCBub3JtYWxpemF0aW9uLlxyXG4gICAgICAvLyBUd28gZ3VhcmRzIG11c3QgYm90aCBwYXNzIGJlZm9yZSBub3JtYWxpemluZzpcclxuICAgICAgLy8gICDigKIgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAg4oaSIG9ubHkgcnVuIG9uIGFjdHVhbCBudW1lcmljIHZhbHVlczsgdGV4dCBjb2x1bW5zXHJcbiAgICAgIC8vICAgICBjb250YWluaW5nIGRvdHMgKGUuZy4gcHJvZHVjdCBjb2RlcyBsaWtlIFwiSFAuWFlaXCIpIGFyZSBuZXZlciB0b3VjaGVkLlxyXG4gICAgICAvLyAgIOKAoiAvXlxcZCtbLC5dXFxkKyQvICAgICAgICAgICAg4oaSIGZpbHRlciBtdXN0IGxvb2sgbGlrZSBhIGRlY2ltYWwgbnVtYmVyOlxyXG4gICAgICAvLyAgICAgICBeXFxkKyAgIG9uZSBvciBtb3JlIGRpZ2l0cyBiZWZvcmUgdGhlIHNlcGFyYXRvclxyXG4gICAgICAvLyAgICAgICBbLC5dICAgZXhhY3RseSBvbmUgc2VwYXJhdG9yLCBjb21tYSBvciBkb3RcclxuICAgICAgLy8gICAgICAgXFxkKyQgICBvbmUgb3IgbW9yZSBkaWdpdHMgYWZ0ZXIgdGhlIHNlcGFyYXRvclxyXG4gICAgICAvLyAgICAgVGhpcyByZWplY3RzIGZyZWUtdGV4dCBmaWx0ZXJzIHRoYXQgaGFwcGVuIHRvIGNvbnRhaW4gYSBjb21tYSAoXCJDYWlzc2UsIEZyYW5jZVwiKVxyXG4gICAgICAvLyAgICAgYW5kIGluY29tcGxldGUgaW5wdXRzIChcIjExLFwiIC8gXCIsMjVcIikuXHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIC9eXFxkK1ssLl1cXGQrJC8udGVzdChzdHJGaWx0ZXIpKSB7XHJcbiAgICAgICAgcmV0dXJuIHN0clZhbHVlLmluY2x1ZGVzKHN0ckZpbHRlci5yZXBsYWNlKCcsJywgJy4nKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYW5HcmlkRGF0YUZvckVtaXQoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZERhdGEubWFwKHJvdyA9PiB7XHJcbiAgICAgIGNvbnN0IGNsZWFuOiBhbnkgPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocm93KSkge1xyXG4gICAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoRWRpdGFibGVHcmlkQ29tcG9uZW50LlNFQVJDSF9MQUJFTF9QUkVGSVgpKSB7XHJcbiAgICAgICAgICBjbGVhbltrZXldID0gcm93W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjbGVhbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0U2hhZG93U2VhcmNoQ29sdW1uTGFiZWwoY29sdW1uOiBHcmlkQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtFZGl0YWJsZUdyaWRDb21wb25lbnQuU0VBUkNIX0xBQkVMX1BSRUZJWH0ke2NvbHVtbi5maWVsZH1gO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gIDxwLXRhYmxlICNkdCBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCIgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkSXRlbXNcIiBlZGl0TW9kZT1cInJvd1wiXHJcbiAgICBbcGFnaW5hdG9yXT1cImdyaWREYXRhLmxlbmd0aCA+IHBhZ2VTaXplXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJyb3dQZXJQYWdlXCIgW3Jvd3NdPVwicGFnZVNpemVcIlxyXG4gICAgKG9uUm93U2VsZWN0KT1cIm9uUm93U2VsZWN0ZWQoJGV2ZW50KVwiIChvblJvd1Vuc2VsZWN0KT1cIm9uUm93VW5zZWxlY3QoJGV2ZW50KVwiIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgKG9uQ29sUmVzaXplKT1cIm9uQ29sUmVzaXplKCRldmVudClcIlxyXG4gICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiIGNvbHVtblJlc2l6ZU1vZGU9XCJleHBhbmRcIiBhcHBlbmRUbz1cImJvZHlcIiBbdmFsdWVdPVwiZ3JpZERhdGFcIlxyXG4gICAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCIgW2RhdGFLZXldPVwia2V5XCIgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc20gcC1kYXRhdGFibGUtZ3JpZGxpbmVzXCJcclxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIiAjZWRpdGFibGVUYWJsZSBbdG90YWxSZWNvcmRzXT1cImdyaWREYXRhLmxlbmd0aFwiXHJcbiAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiIFtyb3dUcmFja0J5XT1cInJvd1RyYWNrQnlcIiBbdGFibGVTdHlsZV09XCJ0YWJsZVN0eWxlXCI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC01IGZsZXgtcm93XCI+XHJcbiAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwiY29sdW1uc1wiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb2x1bW5zXCJcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cInswfSB7eyAnY29sdW1uc19zZWxlY3RlZCcgfCBsb2NhbGl6ZSB9fVwiIG9wdGlvbkxhYmVsPVwidHJhbnNsYXRlZEhlYWRlclwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieydtaW4td2lkdGgnOiAnMTgwcHgnfVwiIHBsYWNlaG9sZGVyPVwie3sgJ2Nob29zZV9jb2x1bW5zJyB8IGxvY2FsaXplIH19XCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LW9wdGlvbiBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IG9wdGlvbi5oZWFkZXIgfCBsb2NhbGl6ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dHbG9iYWxTZWFyY2hcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHctOFwiPlxyXG4gICAgICAgICAgPGRpdiBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJnbG9iYWxfc2VhcmNoXCIgY2xhc3M9XCJwLWlucHV0Z3JvdXAgcnRsLW1vZGUgaC0ycmVtIG5vLXBhZFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBwSW5wdXRUZXh0IGNsYXNzPVwiYm9yZGVyLXJvdW5kLWxnXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NoYXJlZF9lZGl0dGFibGVfc2VhcmNoX3BsYWNlaG9sZGVyJyB8IGxvY2FsaXplXCIgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlHbG9iYWxTZWFyY2goKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cInNlYXJjaF9idXR0b25cIj5cclxuICAgICAgICAgICAgPFRzaS1CdXR0b24gc3R5bGVDbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktc2VhcmNoXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfc2VhcmNoXCJcclxuICAgICAgICAgICAgICAob25DbGljayk9XCJhcHBseUdsb2JhbFNlYXJjaCgpXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj4gXHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uTW9kZSAhPSBtdWx0aXBsZUdyaWRTZWxlY3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgICA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uIHN0eWxlPVwibWluLXdpZHRoOjJyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6MnJlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlID09IG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGVcIj5cclxuICAgICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJtaW4td2lkdGg6MnJlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDoycmVtICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggI3RhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcblxyXG4gICAgICAgIDwhLS0gPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCI+PC90aD4gLS0+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dEdXBsaWNhdGVCdXR0b25cIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RoPlxyXG4gICAgICAgIDx0aCBwUmVzaXphYmxlQ29sdW1uIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiIHNjb3BlPVwiY29sXCJcclxuICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiPjwvdGg+XHJcbiAgICAgICAgPHRoIHBSZXNpemFibGVDb2x1bW4gcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIiBzY29wZT1cImNvbFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RoPlxyXG5cclxuICAgICAgICA8dGggcFJlc2l6YWJsZUNvbHVtbiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgW3N0eWxlXT1cImNvbC5zdHlsZVwiIFtuZ1N0eWxlXT1cImdldENvbHVtblNpemVTdHlsZShjb2wpXCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW2NsYXNzLnRzaS1jb2wtd3JhcF09XCJzaG91bGRXcmFwQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTtcIiBwU29ydGFibGVDb2x1bW49XCJ7e2NvbC5maWVsZH19XCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgIHBUb29sdGlwPVwie3tjb2wudG9vbFRpcFRleHQgfCBsb2NhbGl6ZSB9fVwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIHBSZW9yZGVyYWJsZUNvbHVtbj57eyBjb2wuaGVhZGVyIHwgbG9jYWxpemVcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInt7Y29sLmZpZWxkfX1cIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICA8VHNpLUJ1YmJsZS1JbmZvIFtpbmZvVGV4dF09XCJjb2wuaW5mb1RleHQgfCBsb2NhbGl6ZVwiPjwvVHNpLUJ1YmJsZS1JbmZvPlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgPHRoIHN0eWxlPVwibWluLXdpZHRoOjNyZW1cIiAqbmdJZj1cInNob3dSb3dTdW1tYXJ5XCIgc2NvcGU9XCJjb2xcIj57eydSb3dTdW1tYXJ5JyB8IGxvY2FsaXplfX08L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1pdGVtIGxldC1lZGl0aW5nPVwiZWRpdGluZ1wiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XHJcbiAgICAgIFxyXG4gICAgICA8dHIgW3BFZGl0YWJsZVJvd109XCJpdGVtXCJcclxuICAgICAgICAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZSB8fCBzZWxlY3Rpb25Nb2RlID09IHVuZGVmaW5lZDsgZWxzZSBzZWxlY3Rpb25Nb2RlQmxvY2tcIlxyXG4gICAgICAgIChmb2N1c091dCk9XCJvbkZvY3VzT3V0Um93KGl0ZW0pXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiaXRlbVwiID48L3AtdGFibGVDaGVja2JveD5cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj4gLS0+XHJcblxyXG5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPC90ZD4gLS0+XHJcblxyXG4gICAgICAgIDwhLS0gPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RWRpdEJ1dHRvblwiIHN0eWxlPVwibWluLXdpZHRoOjNyZW07IGxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBJbml0RWRpdGFibGVSb3cgaWNvbj1cInBpIHBpLXBlbmNpbFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0aW5nXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBwU2F2ZUVkaXRhYmxlUm93IGljb249XCJwaSBwaS1jaGVja1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcyAtbWwtMVwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBDYW5jZWxFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktdGltZXNcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciAtbWwtMlwiPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBzY29wZT1cImNvbFwiIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCI+PC90ZD5cclxuXHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RHVwbGljYXRlQnV0dG9uXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgPFRzaS1CdXR0b24gW2J1dHRvblR5cGVdPVwiYnV0dG9uVHlwZS5CdXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1jb3B5XCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfZHVwbGlxdWVyXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWluZm9cIiAoY2xpY2spPVwiZHVwbGljYXRlUm93KGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiIHN0eWxlPVwibGVmdDogLTFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICBjbGFzcz1cInAtMSBidG4tY29uc3VsdC1zdHlsZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICA8VHNpLUJ1dHRvbiBbYnV0dG9uVHlwZV09XCJidXR0b25UeXBlLkJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWV5ZVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgdG9vbHRpcFRleHQ9XCJzaGFyZWRfZWRpdHRhYmxlX2NvbnN1bHRlclwiXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY29uc3VsdChpdGVtKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0RlbGV0ZUJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICBjbGFzcz1cInAtMSBidG4tZGVsZXRlLXN0eWxlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgIDxUc2ktQnV0dG9uIFtkaXNhYmxlZF09XCJpc0RlbGV0ZUJ1dHRvbkRpc2FibGVkKGl0ZW0pXCIgdHlwZT1cImJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXRyYXNoXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfc3VwcHJpbWVyXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXIgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcblxyXG4gICAgICAgIDx0ZCBjbGFzcz1cInVpLXJlc2l6YWJsZS1jb2x1bW5cIiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgIFtjbGFzcy50c2ktY29sLXdyYXBdPVwic2hvdWxkV3JhcENvbHVtbihjb2wpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEJvZHlDb2x1bW5TdHlsZShjb2wpXCI+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5kaXNwbGF5T25seSB8fCBkaXNhYmxlZDsgZWxzZSBvcmRpbmFyeUJsb2NcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk87IGVsc2UgY3VycmVuY3lTb2NpZXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2Rpc2FibGVkXT1cInRydWVcIiBbZWxlbWVudFNvdXJjZVVybF09XCJjb2wuZWxlbWVudFNvdXJjZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImNvbC5pc0ZpbHRlcmVkXCIgW2RhdGFzb3VyY2VdPVwiY29sLmRhdGFzb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImNvbC5zaG93U2VhcmNoQnV0dG9uID8/IHRydWVcIiBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd1VwZGF0ZUJ1dHRvbl09XCJjb2wuc2hvd1VwZGF0ZUJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cIm9uQ2VsbExhYmVsUmVzb2x2ZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9TT0NJRVRFX0lOUFVUOyBlbHNlIGN1cnJlbmN5T3RoZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVDsgZWxzZSBkYXRlUGlja2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURhdGUtRGlzcGxheSBbc2hvd1RpbWVdPVwiY29sLnNob3dUaW1lXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DaGVja0JveC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DSEVDS0JPWDsgZWxzZSBkZWNpbWFsT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrYm94LURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja2JveC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWNpbWFsT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuSU5URUdFUjsgZWxzZSByYXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5SQVRFX0lOUFVUOyBlbHNlIHRpbWVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1EaXNwbGF5IFtpc0ZyYWN0aW9uXT1cImNvbC5pc0ZyYWN0aW9uXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1UaW1lLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpbWVPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuVElNRTsgZWxzZSBmb3JtdWxhT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtZGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPjwvdHNpLXRpbWUtZGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUZvcm11bGEtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybXVsYU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tpdGVtW2NvbC5maWVsZF19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNvcmRpbmFyeUJsb2M+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlNFQVJDSF9DT01CTzsgZWxzZSBjdXJyZW5jeVNvY2lldGVJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2VsZW1lbnRTb3VyY2VVcmxdPVwiY29sLmVsZW1lbnRTb3VyY2VVcmxcIlxyXG4gICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbbGlzdFNvdXJjZVVybF09XCJjb2wubGlzdFNvdXJjZVVybFwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgIGlkLWZpZWxkPVwie3tjb2wuaWRGaWVsZH19XCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIiBbaXNGaWx0ZXJlZF09XCJjb2wuaXNGaWx0ZXJlZFwiXHJcbiAgICAgICAgICAgICAgICBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIChiaW5kQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhc291cmNlXT1cImNvbC5kYXRhc291cmNlXCIgW3Nob3dTZWFyY2hCdXR0b25dPVwiY29sLnNob3dTZWFyY2hCdXR0b24gPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCIgW3Nob3dVcGRhdGVCdXR0b25dPVwiY29sLnNob3dVcGRhdGVCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRMYWJlbENoYW5nZSk9XCJvbkNlbGxMYWJlbFJlc29sdmVkKGNvbCwgJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeVNvY2lldGVJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1Tb2NpZXRlLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQ7IGVsc2UgZGF0ZVBpY2tlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktRGF0ZS1QaWNrZXIgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuREFURTsgZWxzZSBjaGVja0JveElucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktRGF0ZS1QaWNrZXIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW3Nob3dUaW1lXT1cImNvbC5zaG93VGltZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIiBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLURhdGUtUGlja2VyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ2hlY2tCb3ggLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hlY2tCb3hJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNIRUNLQk9YOyBlbHNlIGRlY2ltYWxJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIiBcclxuICAgICAgICAgICAgICAgICAgW2lzQmluYXJ5XT1cImNvbC5pc0JpbmFyeSA/PyBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFRzaS1EZWNpbWFsLUlucHV0IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktRGVjaW1hbC1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLUlucHV0PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlciAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbnRlZ2VySW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5JTlRFR0VSOyBlbHNlIHJhdGVJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktSW50ZWdlcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuUkFURV9JTlBVVDsgZWxzZSB0aW1lSW5wdXRCbG9jXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVJhdGUtSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW251bU9mRGVjaW1hbF09XCJjb2wubnVtT2ZEZWNpbWFsXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktUmF0ZS1JbnB1dD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVRpbWUtcGlja2VyIGJsb2MgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGltZUlucHV0QmxvYz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5USU1FOyBlbHNlIGZvcm11bGFJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8dHNpLXRpbWUtcGlja2VyIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvdHNpLXRpbWUtcGlja2VyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtdWxhSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0SW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLTxUc2ktQnViYmxlLUluZm9cclxuICAgICAgICAgICAgICAgICAgW2luZm9UZXh0XT1cIlsnZm9ybXVsYV9leHBsaWNhdGlvbicsXHJcbiAgICAgICAgICAgICAgICAgIF1cIj48L1RzaS1CdWJibGUtSW5mbz4gLS0+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPjwvVHNpLUZvcm11bGEtQm94PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktVGV4dC1Cb3ggLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHRJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPHRkICpuZ0lmPVwic2hvd1Jvd1N1bW1hcnlcIiBjbGFzcz1cImZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAge3tyb3dTdW1tYXJ5KGl0ZW0pfX1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzZWxlY3Rpb25Nb2RlQmxvY2s+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDx0ciBbcEVkaXRhYmxlUm93XT1cIml0ZW1cIiBbcFNlbGVjdGFibGVSb3ddPVwiaXRlbVwiIFtwU2VsZWN0YWJsZVJvd0luZGV4XT1cInJvd0luZGV4XCJcclxuICAgICAgICAgICAgKGZvY3VzT3V0KT1cIm9uRm9jdXNPdXRSb3coaXRlbSlcIj5cclxuXHJcbiAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj4gLS0+XHJcblxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8IS0tIDx0ZCAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gbXVsdGlwbGVHcmlkU2VsZWN0aW9uTW9kZVwiIHN0eWxlPVwid2lkdGg6IDJyZW07XCI+XHJcbiAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveCAjdGFibGVIZWFkZXJDaGVja2JveD48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgPC90ZD4gLS0+XHJcblxyXG4gICAgICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0VkaXRCdXR0b25cIiBzdHlsZT1cIm1pbi13aWR0aDozcmVtO2xlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcEluaXRFZGl0YWJsZVJvdyBpY29uPVwicGkgcGktcGVuY2lsXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRpbmdcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIHBTYXZlRWRpdGFibGVSb3cgaWNvbj1cInBpIHBpLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcyAtbWwtMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGluZ1wiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgcENhbmNlbEVkaXRhYmxlUm93IGljb249XCJwaSBwaS10aW1lc1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciAtbWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+IC0tPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93SGF2ZVN1bWFyeVwiIHNjb3BlPVwiY29sXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uIHBSZXNpemFibGVDb2x1bW4gKm5nSWY9XCJzaG93RHVwbGljYXRlQnV0dG9uXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1CdXR0b24gW2J1dHRvblR5cGVdPVwiYnV0dG9uVHlwZS5CdXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1jb3B5XCJcclxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCIgdG9vbHRpcFRleHQ9XCJzaGFyZWRfZWRpdHRhYmxlX2R1cGxpcXVlclwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24taW5mb1wiIChjbGljayk9XCJkdXBsaWNhdGVSb3coaXRlbSlcIj48L1RzaS1CdXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8dGQgcEZyb3plbkNvbHVtbiBwUmVzaXphYmxlQ29sdW1uICpuZ0lmPVwic2hvd0NvbnN1bHRCdXR0b25cIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwibGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTEgYnRuLWNvbnN1bHQtc3R5bGVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUJ1dHRvbiBbYnV0dG9uVHlwZV09XCJidXR0b25UeXBlLkJ1dHRvblwiIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLWV5ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9jb25zdWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeVwiIChjbGljayk9XCJjb25zdWx0KGl0ZW0pXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gcFJlc2l6YWJsZUNvbHVtbiAqbmdJZj1cInNob3dEZWxldGVCdXR0b25cIiBzdHlsZT1cImxlZnQ6IDFyZW0gIWltcG9ydGFudDsgd2lkdGg6M3JlbSAhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTEgYnRuLWRlbGV0ZS1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktQnV0dG9uIHR5cGU9XCJidXR0b25cIiBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS10cmFzaFwiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBUZXh0PVwic2hhcmVkX2VkaXR0YWJsZV9zdXBwcmltZXJcIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXIgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShpdGVtKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInVpLXJlc2l6YWJsZS1jb2x1bW5cIiBwRnJvemVuQ29sdW1uIFtmcm96ZW5dPVwiY29sLmlzRnJvemVuXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICBbY2xhc3MudHNpLWNvbC13cmFwXT1cInNob3VsZFdyYXBDb2x1bW4oY29sKVwiIFtuZ1N0eWxlXT1cImdldEJvZHlDb2x1bW5TdHlsZShjb2wpXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wuZGlzcGxheU9ubHkgfHwgZGlzYWJsZWQ7IGVsc2Ugb3JkaW5hcnlCbG9jXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1TZWFyY2gtQ29tYm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk87IGVsc2UgY3VycmVuY3lTb2NpZXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2Rpc2FibGVkXT1cInRydWVcIiBbZWxlbWVudFNvdXJjZVVybF09XCJjb2wuZWxlbWVudFNvdXJjZVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2J1c2luZXNzQ2xhc3NdPVwiY29sLmJ1c2luZXNzQ2xhc3NcIiBbY3VycmVudFJvd0l0ZW1dPVwiaXRlbVwiIFsoYmluZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlcmVkXT1cImNvbC5pc0ZpbHRlcmVkXCIgW2RhdGFzb3VyY2VdPVwiY29sLmRhdGFzb3VyY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93U2VhcmNoQnV0dG9uXT1cImNvbC5zaG93U2VhcmNoQnV0dG9uID8/IHRydWVcIiBbc2hvd0FkZEJ1dHRvbl09XCJjb2wuc2hvd0FkZEJ1dHRvbiA/PyB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvd1VwZGF0ZUJ1dHRvbl09XCJjb2wuc2hvd1VwZGF0ZUJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJjb2wuc2hvd0NvbnN1bHRCdXR0b24gPz8gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZExhYmVsQ2hhbmdlKT1cIm9uQ2VsbExhYmVsUmVzb2x2ZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIj48L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9TT0NJRVRFX0lOUFVUOyBlbHNlIGN1cnJlbmN5T3RoZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5IFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktU29jaWV0ZS1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DVVJSRU5DWV9PVEhFUl9JTlBVVDsgZWxzZSBkYXRlUGlja2VyT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiaXRlbVtjb2wuZmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlck91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLURhdGUtRGlzcGxheSBbc2hvd1RpbWVdPVwiY29sLnNob3dUaW1lXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DaGVja0JveC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5DSEVDS0JPWDsgZWxzZSBkZWNpbWFsT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUNoZWNrYm94LURpc3BsYXkgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja2JveC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWNpbWFsT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkRFQ0lNQUxfSU5QVVQ7IGVsc2UgaW50ZWdlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1JbnRlZ2VyLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuSU5URUdFUjsgZWxzZSByYXRlT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXItRGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5SQVRFX0lOUFVUOyBlbHNlIHRpbWVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1EaXNwbGF5IFtpc0ZyYWN0aW9uXT1cImNvbC5pc0ZyYWN0aW9uXCIgW2lucHV0RGF0YV09XCJpdGVtW2NvbC5maWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1UaW1lLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpbWVPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuVElNRTsgZWxzZSBmb3JtdWxhT3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtZGlzcGxheSBbaW5wdXREYXRhXT1cIml0ZW1bY29sLmZpZWxkXVwiPjwvdHNpLXRpbWUtZGlzcGxheT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUZvcm11bGEtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybXVsYU91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5GT1JNVUxBX1RFWFRfQk9YOyBlbHNlIGRlZmF1bHRUZXh0T3V0cHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dE91dHB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tpdGVtW2NvbC5maWVsZF19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3JkaW5hcnlCbG9jPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktU2VhcmNoLUNvbWJvIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuU0VBUkNIX0NPTUJPOyBlbHNlIGN1cnJlbmN5U29jaWV0ZUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gW2VsZW1lbnRTb3VyY2VVcmxdPVwiY29sLmVsZW1lbnRTb3VyY2VVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsaXN0U291cmNlVXJsXT1cImNvbC5saXN0U291cmNlVXJsXCIgWyhiaW5kKV09XCJpdGVtW2NvbC5maWVsZF1cIiBpZC1maWVsZD1cInt7Y29sLmlkRmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwtZmllbGQ9XCJ7e2NvbC5sYWJlbEZpZWxkfX1cIiBbaXNGaWx0ZXJlZF09XCJjb2wuaXNGaWx0ZXJlZFwiIFtidXNpbmVzc0NsYXNzXT1cImNvbC5idXNpbmVzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmluZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2N1cnJlbnRSb3dJdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhc291cmNlXT1cImNvbC5kYXRhc291cmNlXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWFyY2hCdXR0b25dPVwiY29sLnNob3dTZWFyY2hCdXR0b24gPz8gdHJ1ZVwiIFtzaG93QWRkQnV0dG9uXT1cImNvbC5zaG93QWRkQnV0dG9uID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG93VXBkYXRlQnV0dG9uXT1cImNvbC5zaG93VXBkYXRlQnV0dG9uID8/IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDb25zdWx0QnV0dG9uXT1cImNvbC5zaG93Q29uc3VsdEJ1dHRvbiA/PyB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTGFiZWxDaGFuZ2UpPVwib25DZWxsTGFiZWxSZXNvbHZlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiPjwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1cnJlbmN5U29jaWV0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlcklucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VycmVuY3lPdGhlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX09USEVSX0lOUFVUOyBlbHNlIGRhdGVQaWNrZXJJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCIgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNvbC5maWVsZFwiIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCIgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvVHNpLUN1cnJlbmN5LU90aGVyLUlucHV0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktRGF0ZS1QaWNrZXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RhdGVQaWNrZXJJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5EQVRFOyBlbHNlIGNoZWNrQm94SW5wdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktRGF0ZS1QaWNrZXIgW3Nob3dUaW1lXT1cImNvbC5zaG93VGltZVwiIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRGaWVsZENoYW5nZSk9XCJvbkNlbGxWYWx1ZUNoYW5nZWQoY29sLCAkZXZlbnQsIGl0ZW0pXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EYXRlLVBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLUNoZWNrQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjaGVja0JveElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNIRUNLQk9YOyBlbHNlIGRlY2ltYWxJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1DaGVja0JveCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpc0JpbmFyeV09XCJjb2wuaXNCaW5hcnkgPz8gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLURlY2ltYWwtSW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxJbnB1dEJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5ERUNJTUFMX0lOUFVUOyBlbHNlIGludGVnZXJJbnB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLUlucHV0IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIiBbbnVtT2ZEZWNpbWFsXT1cImNvbC5udW1PZkRlY2ltYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1EZWNpbWFsLUlucHV0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlciAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW50ZWdlcklucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLklOVEVHRVI7IGVsc2UgcmF0ZUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUludGVnZXIgW2NsYXNzXT1cIidtYXgtdy00cmVtJ1wiIFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFtpbnB1dElkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L1RzaS1JbnRlZ2VyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBUc2ktUmF0ZS1JbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmF0ZUlucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLlJBVEVfSU5QVVQ7IGVsc2UgdGltZUlucHV0QmxvY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxUc2ktUmF0ZS1JbnB1dCBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIiBbaW5wdXRJZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGlucHV0RmllbGRDaGFuZ2UpPVwib25DZWxsVmFsdWVDaGFuZ2VkKGNvbCwgJGV2ZW50LCBpdGVtKVwiIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktUmF0ZS1JbnB1dD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRpbWUtUGlja2VyIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0aW1lSW5wdXRCbG9jPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5USU1FIGVsc2UgZm9ybXVsYUlucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHNpLXRpbWUtcGlja2VyIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCJjb2wuaW5wdXROYW1lXCIgW2lucHV0SWRdPVwiY29sLmZpZWxkXCIgWyhpbnB1dEZpZWxkKV09XCJpdGVtW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiIFt2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NdPVwiY29sLnZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHNpLXRpbWUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtdWxhSW5wdXRCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuRk9STVVMQV9URVhUX0JPWDsgZWxzZSBkZWZhdWx0VGV4dElucHV0QmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8VHNpLUZvcm11bGEtQm94IFtpbnB1dE5hbWVdPVwiY29sLmlucHV0TmFtZVwiIFsodmFsdWUpXT1cIml0ZW1bY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXT1cImNvbC52YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3NcIj48L1RzaS1Gb3JtdWxhLUJveD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gVHNpLVRleHQtQm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dElucHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbaW5wdXRJZF09XCJjb2wuZmllbGRcIiBbZGlzYWJsZWRdPVwiY29sLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiaXRlbVtjb2wuZmllbGRdXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cIm9uQ2VsbFZhbHVlQ2hhbmdlZChjb2wsICRldmVudCwgaXRlbSlcIiBbaW5wdXROYW1lXT1cImNvbC5pbnB1dE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc109XCJjb2wudmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd1Jvd1N1bW1hcnlcIiBjbGFzcz1cImZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAgICAgIHt7cm93U3VtbWFyeShpdGVtKX19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwic2hvd0hhdmVTdW1hcnlcIiBwVGVtcGxhdGU9XCJmb290ZXJcIiBsZXQtY29sdW1ucz5cclxuXHJcbiAgICAgIDx0ciBjbGFzcz1cInRmb290ZXJcIj5cclxuICAgICAgICA8IS0tIDx0ZCBwRnJvemVuQ29sdW1uIHNjb3BlPVwiY29sXCIgc3R5bGU9XCJsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj48L3RkPiAtLT5cclxuICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlID09IG11bHRpcGxlR3JpZFNlbGVjdGlvbk1vZGVcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6MnJlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDoycmVtICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94ICN0YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gc2NvcGU9XCJjb2xcIiBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIj5Ub3RhbDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93RGVsZXRlQnV0dG9uXCIgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJwLTFcIj5cclxuICAgICAgICAgIDwhLS08dGQgcEZyb3plbkNvbHVtbiAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCIgc3R5bGU9XCJtaW4td2lkdGg6M3JlbTsgbGVmdDogMXJlbSAhaW1wb3J0YW50OyB3aWR0aDozcmVtICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgIGNsYXNzPVwicC0xXCI+IC0tPlxyXG4gICAgICAgIDx0ZCBwRnJvemVuQ29sdW1uICpuZ0lmPVwic2hvd0R1cGxpY2F0ZUJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gKm5nSWY9XCJzaG93Q29uc3VsdEJ1dHRvblwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDozcmVtOyBsZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IHdpZHRoOjNyZW0gIWltcG9ydGFudDtcIiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIHBGcm96ZW5Db2x1bW4gW2Zyb3plbl09XCJjb2wuaXNGcm96ZW5cIiBbc3R5bGVdPVwiY29sLnN0eWxlXCIgW25nU3R5bGVdPVwiZ2V0Q29sdW1uU2l6ZVN0eWxlKGNvbClcIiBzY29wZT1cImNvbFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXHJcbiAgICAgICAgICBbY2xhc3MudHNpLWNvbC13cmFwXT1cInNob3VsZFdyYXBDb2x1bW4oY29sKVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5oYXZlU3VtbWFyeVwiPlxyXG4gICAgICAgICAgICA8IS0tIFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wudHlwZSA9PSBpbnB1dFR5cGVzLkNVUlJFTkNZX1NPQ0lFVEVfSU5QVVQ7IGVsc2UgY3VycmVuY3lPdGhlck91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgPFRzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXkgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1Tb2NpZXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktQ3VycmVuY3ktT3RoZXItRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeU90aGVyT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuQ1VSUkVOQ1lfT1RIRVJfSU5QVVQ7IGVsc2UgZGVjaW1hbE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUN1cnJlbmN5LU90aGVyLURpc3BsYXkgW2N1cnJlbmN5XT1cImNvbC5jdXJyZW5jeU90aGVyQ29kZVwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1DdXJyZW5jeS1PdGhlci1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktRGVjaW1hbC1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlY2ltYWxPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5ERUNJTUFMX0lOUFVUOyBlbHNlIGludGVnZXJPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1EZWNpbWFsLURpc3BsYXkgW2Zvcm1hdERlY2ltYWxdPVwiY29sLmZvcm1hdERlY2ltYWxcIiBbaW5wdXREYXRhXT1cImdldFN1bW1hcnkoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtudW1PZkRlY2ltYWxdPVwiY29sLm51bU9mRGVjaW1hbFwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktRGVjaW1hbC1EaXNwbGF5PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUc2ktSW50ZWdlci1EaXNwbGF5IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludGVnZXJPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gaW5wdXRUeXBlcy5JTlRFR0VSOyBlbHNlIHJhdGVPdXRwdXRCbG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1JbnRlZ2VyLURpc3BsYXkgW2lucHV0RGF0YV09XCJnZXRTdW1tYXJ5KGNvbClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUludGVnZXItRGlzcGxheT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVHNpLVJhdGUtRGlzcGxheSAtLT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXRlT3V0cHV0QmxvY2s+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09IGlucHV0VHlwZXMuUkFURV9JTlBVVDsgZWxzZSBkZWZhdWx0VGV4dE91dHB1dEJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVJhdGUtRGlzcGxheSBbaXNGcmFjdGlvbl09XCJjb2wuaXNGcmFjdGlvblwiIFtpbnB1dERhdGFdPVwiZ2V0U3VtbWFyeShjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1SYXRlLURpc3BsYXk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8IS0tIERlZmF1bHQgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHRPdXRwdXRCbG9jaz5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIHt7Z2V0U3VtbWFyeShjb2wpfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICB7eydUb3RhbFJlY29yZHNDb3VudCcgfCBsb2NhbGl6ZSB9fSB7e2dyaWREYXRhLmxlbmd0aH19XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJsZT5cclxuICA8ZGl2PlxyXG4gICAgPFRzaS1CdXR0b24gKm5nSWY9XCJzaG93QWRkQnV0dG9uXCIgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7d2lkdGg6IDIwcHg7XCIgaWNvbj1cInAtYnV0dG9uLWljb24gcGkgcGktcGx1c1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIiB0b29sdGlwVGV4dD1cInNoYXJlZF9lZGl0dGFibGVfYWpvdXRlclwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tc20gcC1idXR0b24tc3VjY2VzcyBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWljb24tb25seSBuZy1zdGFyLWluc2VydGVkXCJcclxuICAgICAgKGNsaWNrKT1cImFkZFJvdygpXCI+PC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=