nuxeo-development-framework 5.0.3 → 5.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -59,11 +59,18 @@ export class DynamicTableComponent {
59
59
  this.onMultiRowSelected = new EventEmitter();
60
60
  /** event t emit when start getting data and when finish */
61
61
  this.onLoading = new EventEmitter();
62
+ /**
63
+ * @deprecated Use `onPage` instead.
64
+ * @see onPage
65
+ */
62
66
  this.onPageChange = new EventEmitter();
67
+ this.onPage = new EventEmitter();
63
68
  this.onLoad = new EventEmitter();
64
69
  this.onInitialize = new EventEmitter();
65
70
  /** Translations prefix */
66
71
  this.prefix = '';
72
+ /** Controls number of items per page in table */
73
+ this.pageSize = 10;
67
74
  this.isLegacyMode = true;
68
75
  this.showTotalRecord = false;
69
76
  this._pageNumber = 1;
@@ -92,7 +99,7 @@ export class DynamicTableComponent {
92
99
  this.initialized = false;
93
100
  }
94
101
  set pageNumber(value) {
95
- this._pageNumber = +value;
102
+ this._pageNumber = isNaN(+value) ? 1 : +value;
96
103
  }
97
104
  get pageNum() {
98
105
  return this._pageNumber;
@@ -133,6 +140,11 @@ export class DynamicTableComponent {
133
140
  _resetPageNumber() {
134
141
  this._pageNumber = 1;
135
142
  this.onPageChange.emit(this._pageNumber);
143
+ this.onPage.emit({
144
+ pageIndex: this._pageNumber,
145
+ pageSize: this.pageSize,
146
+ length: this.totalRecords
147
+ });
136
148
  }
137
149
  getData(payload = {}, headers = {}) {
138
150
  var _a, _b, _c, _d;
@@ -214,19 +226,24 @@ export class DynamicTableComponent {
214
226
  onMultiRowSelectValue(event) {
215
227
  this.onMultiRowSelected.emit(event);
216
228
  }
217
- PaginationChange(event) {
229
+ paginationChange(event) {
218
230
  this._pageNumber = event;
219
231
  this.onPageChange.emit(event);
232
+ this.onPage.emit({
233
+ pageIndex: this._pageNumber,
234
+ pageSize: this.pageSize,
235
+ length: this.totalRecords
236
+ });
220
237
  this.getData({}, this.skipAggregation === 'onPageChange' ? { skipAggregates: 'true' } : {});
221
238
  }
222
239
  onChangePageSize(pageSize) {
223
- this._resetPageNumber();
224
240
  this.pageSize = pageSize;
241
+ this._resetPageNumber();
225
242
  this.getData({}, this.skipAggregation === 'onPageChange' ? { skipAggregates: 'true' } : {});
226
243
  }
227
244
  }
228
245
  DynamicTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTableComponent, deps: [{ token: i1.AdapterService }, { token: i2.CallApiService }, { token: i3.DynamicTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
229
- DynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicTableComponent, selector: "cts-dynamic-table", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", isLegacyMode: "isLegacyMode", showTotalRecord: "showTotalRecord", pageNumber: "pageNumber", sortingBy: "sortingBy", queryParam: "queryParam", customFilters: "customFilters", quickFilter: "quickFilter", report: "report", rowCursor: "rowCursor", fullWidth: "fullWidth", tableMode: "tableMode", componentName: "componentName", tableActions: "tableActions", defultSort: "defultSort", range: "range", isSearchPage: "isSearchPage", multiSelectRows: "multiSelectRows", customFirstRow: "customFirstRow", highlightSelectedCard: "highlightSelectedCard", showActionsAsMenu: "showActionsAsMenu", filterParams: "filterParams", skipAggregation: "skipAggregation", customUrl: "customUrl", format: "format", pageSizes: "pageSizes" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", onPageChange: "onPageChange", onLoad: "onLoad", onInitialize: "onInitialize" }, host: { properties: { "class.loading-results": "loading", "class.no-data": "rows.length <= 0" } }, queries: [{ propertyName: "emptyTemplate", first: true, predicate: EMPTY_TEMPLATE, descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"wrapping table-wrapping\">\r\n\t<ng-container *ngIf=\"isLegacyMode\">\r\n\t\t<div class=\"table-reposition\">\r\n\t\t\t<ng-container *ngIf=\"rows.length\" [ngTemplateOutlet]=\"table\"></ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngIf=\"loading\">\r\n\t\t\t<cts-spinner></cts-spinner>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<div class=\"table-reposition\" *ngIf=\"!isLegacyMode\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"table\"></ng-container>\r\n\t\t<ng-container\r\n\t\t\t*ngIf=\"!initialized\"\r\n\t\t\t[ngTemplateOutlet]=\"skeleton\"\r\n\t\t\t[ngTemplateOutletContext]=\"{ $implicit: 10 }\"\r\n\t\t></ng-container>\r\n\t</div>\r\n\r\n\t<div\r\n\t\tclass=\"pagination-iner-wraper d-flex justify-content-center align-items-center my-3\"\r\n\t\t[ngClass]=\"{ relative: pageSizes?.length }\"\r\n\t\t*ngIf=\"rows.length\"\r\n\t>\r\n\t\t<cts-pagination\r\n\t\t\t[page]=\"pageNum\"\r\n\t\t\t(change)=\"PaginationChange($event)\"\r\n\t\t\t[size]=\"pageSize\"\r\n\t\t\t[count]=\"totalRecords\"\r\n\t\t></cts-pagination>\r\n\t\t<div class=\"absolute ndfPageSizes flex gap-x-3 items-center mt-2\">\r\n\t\t\t<ndf-page-sizes-list\r\n\t\t\t\t*ngIf=\"pageSizes?.length\"\r\n\t\t\t\t[pageSizes]=\"pageSizes\"\r\n\t\t\t\t[selectedPageSize]=\"pageSize\"\r\n\t\t\t\t(onChangePageSize)=\"onChangePageSize($event)\"\r\n\t\t\t>\r\n\t\t\t</ndf-page-sizes-list>\r\n\r\n\t\t\t<span *ngIf=\"showTotalRecord\">{{ 'TABLE.totalRecords' | translate: { count: totalRecords } }}</span>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ng-container\r\n\t\t*ngIf=\"isLegacyMode\"\r\n\t\t[ngTemplateOutlet]=\"emptyTemplate || legacyDefaultEmptyState\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: loading, rows: rows, initialized: initialized }\"\r\n\t></ng-container>\r\n\r\n\t<ng-container\r\n\t\t*ngIf=\"!isLegacyMode\"\r\n\t\t[ngTemplateOutlet]=\"emptyTemplate || defaultEmptyState\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: loading, rows: rows, initialized: initialized }\"\r\n\t></ng-container>\r\n</div>\r\n\r\n<ng-template #table>\r\n\t<cts-table\r\n\t\t[rows]=\"rows\"\r\n\t\t[columns]=\"columns\"\r\n\t\t[responsiveColumns]=\"responsiveColumns\"\r\n\t\t[rowCursor]=\"rowCursor\"\r\n\t\t[fullWidth]=\"fullWidth\"\r\n\t\t[entityType]=\"entityType\"\r\n\t\t[prefix]=\"prefix\"\r\n\t\t[totalRecords]=\"totalRecords\"\r\n\t\t[tableMode]=\"tableMode\"\r\n\t\t[componentName]=\"componentName\"\r\n\t\t[multiSelectRows]=\"multiSelectRows\"\r\n\t\t[tableActions]=\"tableActions\"\r\n\t\t[showActionsAsMenu]=\"showActionsAsMenu\"\r\n\t\t[defultSort]=\"defultSort\"\r\n\t\t[format]=\"format\"\r\n\t\t[highlightSelectedCard]=\"highlightSelectedCard\"\r\n\t\t[customFirstRow]=\"customFirstRow\"\r\n\t\t(onRowSelected)=\"rowDetails($event)\"\r\n\t\t(onRowIndexSelected)=\"indexDetails($event)\"\r\n\t\t(onMultiRowSelected)=\"onMultiRowSelectValue($event)\"\r\n\t\t(actionOnRow)=\"performAction($event)\"\r\n\t\t(onSorting)=\"onSort($event)\"\r\n\t></cts-table>\r\n</ng-template>\r\n\r\n<ng-template #legacyDefaultEmptyState>\r\n\t<div class=\"empty-state\" *ngIf=\"!loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'noData' : 'noData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"empty-state\" *ngIf=\"loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'gettingData' : 'gettingData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyState>\r\n\t<div class=\"empty-state\" *ngIf=\"!loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'noData' : 'noData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n\t<div *ngIf=\"loading && initialized\" class=\"loading-content\">\r\n\t\t<mat-spinner [diameter]=\"100\"></mat-spinner>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #skeleton let-rows>\r\n\t<table class=\"w-full\">\r\n\t\t<thead *ngIf=\"false\">\r\n\t\t\t<tr class=\"border-b border-green-900\">\r\n\t\t\t\t<th *ngIf=\"multiSelectRows\" class=\"p-3 py-4\" style=\"width: 60px\">\r\n\t\t\t\t\t<app-skeleton width=\"60px\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</th>\r\n\t\t\t\t<th *ngFor=\"let num of [].constructor(columns?.length || 4); let i = index\" class=\"px-3 py-4\">\r\n\t\t\t\t\t<app-skeleton [randomWidth]=\"true\" height=\"1.7rem\"></app-skeleton>\r\n\t\t\t\t</th>\r\n\t\t\t</tr>\r\n\t\t</thead>\r\n\t\t<tbody>\r\n\t\t\t<tr *ngFor=\"let row of [].constructor(rows || 10); let index = index\" class=\"border-b border-gray-200\">\r\n\t\t\t\t<td *ngIf=\"multiSelectRows\" class=\"p-3 py-4\" style=\"width: 50px\">\r\n\t\t\t\t\t<app-skeleton width=\"50px\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td *ngFor=\"let col of [].constructor(columns?.length || 4); let i = index\" class=\"p-3 py-4\">\r\n\t\t\t\t\t<app-skeleton [randomWidth]=\"true\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t</tbody>\r\n\t</table>\r\n</ng-template>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.wrapping{position:relative}.wrapping .table-reposition{overflow-y:var(--table-reposition-overflow-y, hidden);scrollbar-color:#b4bac6 transparent!important;scrollbar-width:thin!important;overflow-x:auto}.empty-state{padding:200px;display:flex;justify-content:center;align-items:center;font-size:20px;font-weight:bold}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#b4bac6}.dark-scroll::-webkit-scrollbar-thumb{background:#8f98aa}.ndfPageSizes{right:0;left:unset}.rtl .ndfPageSizes{right:unset;left:0}.loading-content{position:absolute;inset:0;display:grid;place-items:center;background:var(--loading-content-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-content-backdrop-filter, blur(3px));backdrop-filter:var(--loading-content-backdrop-filter, blur(3px))}\n"], components: [{ type: i4.SpinnerComponent, selector: "cts-spinner" }, { type: i5.PaginationComponent, selector: "cts-pagination", inputs: ["size", "count", "page"], outputs: ["change"] }, { type: i6.PageSizesListComponent, selector: "ndf-page-sizes-list", inputs: ["pageSizes", "selectedPageSize"], outputs: ["onChangePageSize"] }, { type: i7.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }, { type: i8.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i9.SkeletonComponent, selector: "app-skeleton", inputs: ["styleClass", "style", "shape", "animation", "radius", "size", "width", "height", "randomWidth"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i11.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
246
+ DynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicTableComponent, selector: "cts-dynamic-table", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", isLegacyMode: "isLegacyMode", showTotalRecord: "showTotalRecord", pageNumber: "pageNumber", sortingBy: "sortingBy", queryParam: "queryParam", customFilters: "customFilters", quickFilter: "quickFilter", report: "report", rowCursor: "rowCursor", fullWidth: "fullWidth", tableMode: "tableMode", componentName: "componentName", tableActions: "tableActions", defultSort: "defultSort", range: "range", isSearchPage: "isSearchPage", multiSelectRows: "multiSelectRows", customFirstRow: "customFirstRow", highlightSelectedCard: "highlightSelectedCard", showActionsAsMenu: "showActionsAsMenu", filterParams: "filterParams", skipAggregation: "skipAggregation", customUrl: "customUrl", format: "format", pageSizes: "pageSizes" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", onPageChange: "onPageChange", onPage: "onPage", onLoad: "onLoad", onInitialize: "onInitialize" }, host: { properties: { "class.loading-results": "loading", "class.no-data": "rows.length <= 0" } }, queries: [{ propertyName: "emptyTemplate", first: true, predicate: EMPTY_TEMPLATE, descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"wrapping table-wrapping\">\r\n\t<ng-container *ngIf=\"isLegacyMode\">\r\n\t\t<div class=\"table-reposition\">\r\n\t\t\t<ng-container *ngIf=\"rows.length\" [ngTemplateOutlet]=\"table\"></ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngIf=\"loading\">\r\n\t\t\t<cts-spinner></cts-spinner>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<div class=\"table-reposition\" *ngIf=\"!isLegacyMode\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"table\"></ng-container>\r\n\t\t<ng-container\r\n\t\t\t*ngIf=\"!initialized\"\r\n\t\t\t[ngTemplateOutlet]=\"skeleton\"\r\n\t\t\t[ngTemplateOutletContext]=\"{ $implicit: 10 }\"\r\n\t\t></ng-container>\r\n\t</div>\r\n\r\n\t<div\r\n\t\tclass=\"pagination-iner-wraper d-flex justify-content-center align-items-center my-3\"\r\n\t\t[ngClass]=\"{ relative: pageSizes?.length }\"\r\n\t\t*ngIf=\"rows.length\"\r\n\t>\r\n\t\t<cts-pagination\r\n\t\t\t[page]=\"pageNum\"\r\n\t\t\t(change)=\"paginationChange($event)\"\r\n\t\t\t[size]=\"pageSize\"\r\n\t\t\t[count]=\"totalRecords\"\r\n\t\t></cts-pagination>\r\n\t\t<div class=\"absolute ndfPageSizes flex gap-x-3 items-center mt-2\">\r\n\t\t\t<ndf-page-sizes-list\r\n\t\t\t\t*ngIf=\"pageSizes?.length\"\r\n\t\t\t\t[pageSizes]=\"pageSizes\"\r\n\t\t\t\t[selectedPageSize]=\"pageSize\"\r\n\t\t\t\t(onChangePageSize)=\"onChangePageSize($event)\"\r\n\t\t\t>\r\n\t\t\t</ndf-page-sizes-list>\r\n\r\n\t\t\t<span *ngIf=\"showTotalRecord\">{{ 'TABLE.totalRecords' | translate: { count: totalRecords } }}</span>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ng-container\r\n\t\t*ngIf=\"isLegacyMode\"\r\n\t\t[ngTemplateOutlet]=\"emptyTemplate || legacyDefaultEmptyState\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: loading, rows: rows, initialized: initialized }\"\r\n\t></ng-container>\r\n\r\n\t<ng-container\r\n\t\t*ngIf=\"!isLegacyMode\"\r\n\t\t[ngTemplateOutlet]=\"emptyTemplate || defaultEmptyState\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: loading, rows: rows, initialized: initialized }\"\r\n\t></ng-container>\r\n</div>\r\n\r\n<ng-template #table>\r\n\t<cts-table\r\n\t\t[rows]=\"rows\"\r\n\t\t[columns]=\"columns\"\r\n\t\t[responsiveColumns]=\"responsiveColumns\"\r\n\t\t[rowCursor]=\"rowCursor\"\r\n\t\t[fullWidth]=\"fullWidth\"\r\n\t\t[entityType]=\"entityType\"\r\n\t\t[prefix]=\"prefix\"\r\n\t\t[totalRecords]=\"totalRecords\"\r\n\t\t[tableMode]=\"tableMode\"\r\n\t\t[componentName]=\"componentName\"\r\n\t\t[multiSelectRows]=\"multiSelectRows\"\r\n\t\t[tableActions]=\"tableActions\"\r\n\t\t[showActionsAsMenu]=\"showActionsAsMenu\"\r\n\t\t[defultSort]=\"defultSort\"\r\n\t\t[format]=\"format\"\r\n\t\t[highlightSelectedCard]=\"highlightSelectedCard\"\r\n\t\t[customFirstRow]=\"customFirstRow\"\r\n\t\t(onRowSelected)=\"rowDetails($event)\"\r\n\t\t(onRowIndexSelected)=\"indexDetails($event)\"\r\n\t\t(onMultiRowSelected)=\"onMultiRowSelectValue($event)\"\r\n\t\t(actionOnRow)=\"performAction($event)\"\r\n\t\t(onSorting)=\"onSort($event)\"\r\n\t></cts-table>\r\n</ng-template>\r\n\r\n<ng-template #legacyDefaultEmptyState>\r\n\t<div class=\"empty-state\" *ngIf=\"!loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'noData' : 'noData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"empty-state\" *ngIf=\"loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'gettingData' : 'gettingData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyState>\r\n\t<div class=\"empty-state\" *ngIf=\"!loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'noData' : 'noData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n\t<div *ngIf=\"loading && initialized\" class=\"loading-content\">\r\n\t\t<mat-spinner [diameter]=\"100\"></mat-spinner>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #skeleton let-rows>\r\n\t<table class=\"w-full\">\r\n\t\t<thead *ngIf=\"false\">\r\n\t\t\t<tr class=\"border-b border-green-900\">\r\n\t\t\t\t<th *ngIf=\"multiSelectRows\" class=\"p-3 py-4\" style=\"width: 60px\">\r\n\t\t\t\t\t<app-skeleton width=\"60px\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</th>\r\n\t\t\t\t<th *ngFor=\"let num of [].constructor(columns?.length || 4); let i = index\" class=\"px-3 py-4\">\r\n\t\t\t\t\t<app-skeleton [randomWidth]=\"true\" height=\"1.7rem\"></app-skeleton>\r\n\t\t\t\t</th>\r\n\t\t\t</tr>\r\n\t\t</thead>\r\n\t\t<tbody>\r\n\t\t\t<tr *ngFor=\"let row of [].constructor(rows || 10); let index = index\" class=\"border-b border-gray-200\">\r\n\t\t\t\t<td *ngIf=\"multiSelectRows\" class=\"p-3 py-4\" style=\"width: 50px\">\r\n\t\t\t\t\t<app-skeleton width=\"50px\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td *ngFor=\"let col of [].constructor(columns?.length || 4); let i = index\" class=\"p-3 py-4\">\r\n\t\t\t\t\t<app-skeleton [randomWidth]=\"true\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t</tbody>\r\n\t</table>\r\n</ng-template>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.wrapping{position:relative}.wrapping .table-reposition{overflow-y:var(--table-reposition-overflow-y, hidden);scrollbar-color:#b4bac6 transparent!important;scrollbar-width:thin!important;overflow-x:auto}.empty-state{padding:200px;display:flex;justify-content:center;align-items:center;font-size:20px;font-weight:bold}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#b4bac6}.dark-scroll::-webkit-scrollbar-thumb{background:#8f98aa}.ndfPageSizes{right:0;left:unset}.rtl .ndfPageSizes{right:unset;left:0}.loading-content{position:absolute;inset:0;display:grid;place-items:center;background:var(--loading-content-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-content-backdrop-filter, blur(3px));backdrop-filter:var(--loading-content-backdrop-filter, blur(3px))}\n"], components: [{ type: i4.SpinnerComponent, selector: "cts-spinner" }, { type: i5.PaginationComponent, selector: "cts-pagination", inputs: ["size", "count", "page"], outputs: ["change"] }, { type: i6.PageSizesListComponent, selector: "ndf-page-sizes-list", inputs: ["pageSizes", "selectedPageSize"], outputs: ["onChangePageSize"] }, { type: i7.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }, { type: i8.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i9.SkeletonComponent, selector: "app-skeleton", inputs: ["styleClass", "style", "shape", "animation", "radius", "size", "width", "height", "randomWidth"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i11.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
230
247
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTableComponent, decorators: [{
231
248
  type: Component,
232
249
  args: [{
@@ -253,6 +270,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
253
270
  type: Output
254
271
  }], onPageChange: [{
255
272
  type: Output
273
+ }], onPage: [{
274
+ type: Output
256
275
  }], onLoad: [{
257
276
  type: Output
258
277
  }], onInitialize: [{
@@ -327,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
327
346
  }], pageSizes: [{
328
347
  type: Input
329
348
  }] } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBR3JFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQVdILE1BQU0sT0FBTyxxQkFBcUI7SUFrR2pDLFlBQ1MsT0FBdUIsRUFDdkIsT0FBdUIsRUFDdkIsbUJBQXdDLEVBQ3hDLEdBQXNCO1FBSHRCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFyRy9CLCtDQUErQztRQUNyQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7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S0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFHTixhQUFhO3NCQURaLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlwRCxVQUFVO3NCQUF0QixLQUFLO2dCQVNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVOLFlBQVk7c0JBRFgsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRDb250ZW50Q2hpbGQsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0VGVtcGxhdGVSZWYsXHJcblx0Vmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYWRhcHRlcnMvYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FsbEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2NhbGxBcGkvY2FsbC1hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVNUFRZX1RFTVBMQVRFIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9lbXB0eS1zdGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEeW5hbWljVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHluYW1pYy10YWJsZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiB0aGlzIGNvbXBvbmVudCBpcyBhbiBhZGRpdGlvbmFsIGxheWVyIHRoYXQgdXNlcyBbVGFibGUgQ29tcG9uZW50XXtAbGluayBUYWJsZUNvbXBvbmVudH0gaW50ZXJuYWxseSxcclxuICogeW91IGNhbiB1c2UgdGhpcyBjb21wb25lbnQgdG8gY29uZmlndXJlIGEgcGFnZSBwcm92aWRlciBsaXN0aW5nIG91dCBvZiB0aGUgYm94IGVhc2lseSxcclxuICogYW5kIGl0IHdpbGwgaGFuZGxlIGFsbCBvZiB0aGUgYmFzaWMgZmVhdHVyZXMgc3VjaCBhcyBnZXR0aW5nIGRhdGEgZnJvbSBBUEksIExpc3RpbmcsIFBhZ2luYXRpb24sIHNvcnRpbmcgYW5kIGZpbHRlcmluZ1xyXG4gKiAhW1NjcmVlbnNob3QtMV0oLi4vc2NyZWVuc2hvdHMvZHluYW1pY1RhYmxlLnBuZylcclxuICogQHRpdGxlXHJcbiAqIER5bmFtaWMgVGFibGVcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGN0cy1keW5hbWljLXRhYmxlXHJcbiAqICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gKiAgICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNcIlxyXG4gKiAgICBbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXHJcbiAqICAgIFtwYWdlU2l6ZV09XCJQYWdlU2l6ZVwiXHJcbiAqICAgIFtwYWdlUHJvdmlkZXJdPVwicGFnZVByb3ZpZGVyXCJcclxuICogICAgW3F1aWNrRmlsdGVyXT1cImZpbHRlclwiXHJcbiAqICAgIFtzb3J0aW5nQnldPVwic29ydGluZ0J5XCJcclxuICogICAgW2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG4gKiAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAqICAgIFtwcmVmaXhdPVwicHJlZml4XCJcclxuICogICAgW3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuICogICAgW3F1ZXJ5UGFyYW1dPVwicXVlcnlQYXJhbVwiXHJcbiAqICAgIFtoZWFkZXJzXT1cImhlYWRlcnNcIlxyXG4gKiAgICAob25Sb3dTZWxlY3RlZCk9XCJvcGVuVmlld2VyKCRldmVudClcIlxyXG4gKiAgICAoYWN0aW9uT25Sb3cpPVwicGVyZm9ybUFjdGlvbigkZXZlbnQpXCI+XHJcbiAqIDwvY3RzLWR5bmFtaWMtdGFibGU+XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2N0cy1keW5hbWljLXRhYmxlJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcblx0aG9zdDoge1xyXG5cdFx0J1tjbGFzcy5sb2FkaW5nLXJlc3VsdHNdJzogJ2xvYWRpbmcnLFxyXG5cdFx0J1tjbGFzcy5uby1kYXRhXSc6ICdyb3dzLmxlbmd0aCA8PSAwJ1xyXG5cdH1cclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHQvKiogZXZlbnQgdG8gZW1pdCB3aGVuIHNlbGVjdGluZyBzaW5nbGUgcm93ICAqL1xyXG5cdEBPdXRwdXQoKSBvblJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gc2VsZWN0aW5nIHNpbmdsZSByb3cgdG8gY2F0Y2ggaW5kZXgqL1xyXG5cdEBPdXRwdXQoKSBvblJvd0luZGV4U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBwZXJmb3JtIGFjdGlvbiBvbiByb3cgKGRlbHRlLCBlZGl0LCAuLi4gKSAqL1xyXG5cdEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogZXZlbnQgdG8gZW1pdCB0byB0aGUgaGlnaGVyIGxldmVsICB3aGVuIGdldHRpbmcgZGF0YSBmcm9tIGFwaSBpcyBmaW5pc2hlZCAqL1xyXG5cdEBPdXRwdXQoKSBvbkdldHRpbmdEYXRhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0IGVtaXQgd2hlbiBzZWxlY3RpbmcgbXVsdGlwbGUgcm93ICovXHJcblx0QE91dHB1dCgpIG9uTXVsdGlSb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogZXZlbnQgdCBlbWl0IHdoZW4gc3RhcnQgZ2V0dGluZyBkYXRhIGFuZCB3aGVuIGZpbmlzaCAqL1xyXG5cdEBPdXRwdXQoKSBvbkxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblx0QE91dHB1dCgpIG9uTG9hZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25Jbml0aWFsaXplID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBBcnJheSBvZiBjb2x1bW5zICovXHJcblx0QElucHV0KCkgY29sdW1ucztcclxuXHQvKiogQXJyYXkgb2YgY29sdW1ucyBvbiBzbWFsbGVyIHNjcmVlbnMgKi9cclxuXHRASW5wdXQoKSByZXNwb25zaXZlQ29sdW1ucz87XHJcblx0LyoqIERlZmluZXMgdGhlIHBhZ2UgaW4gd2hpY2ggdGFibGUgaXMgYmVpbmcgdXNlZCAqL1xyXG5cdEBJbnB1dCgpIGVudGl0eVR5cGU6IHN0cmluZztcclxuXHQvKiogVHJhbnNsYXRpb25zIHByZWZpeCAqL1xyXG5cdEBJbnB1dCgpIHByZWZpeCA9ICcnO1xyXG5cdC8qKiBIZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCBBUEkgUmVxdWVzdCAqL1xyXG5cdEBJbnB1dCgpIGhlYWRlcnM7XHJcblx0LyoqIEZpZWxkcyBrZXltYXAgdG8gYmUgbWFwcGVkIGluIHRoZSBhZGFwdGVyICovXHJcblx0QElucHV0KCkgZmllbGRzO1xyXG5cdC8qKiBQYWdlIFByb3ZpZGVyIG5hbWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmV0cmlldmUgZGF0YSAqL1xyXG5cdEBJbnB1dCgpIHBhZ2VQcm92aWRlcjtcclxuXHQvKiogQ29udHJvbHMgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGluIHRhYmxlICovXHJcblx0QElucHV0KCkgcGFnZVNpemU7XHJcblxyXG5cdEBJbnB1dCgpIGlzTGVnYWN5TW9kZSA9IHRydWU7XHJcblx0QElucHV0KCkgc2hvd1RvdGFsUmVjb3JkID0gZmFsc2U7XHJcblxyXG5cdEBDb250ZW50Q2hpbGQoRU1QVFlfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG5cdGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG5cdHByaXZhdGUgX3BhZ2VOdW1iZXIgPSAxO1xyXG5cdEBJbnB1dCgpIHNldCBwYWdlTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuXHRcdHRoaXMuX3BhZ2VOdW1iZXIgPSArdmFsdWU7XHJcblx0fVxyXG5cclxuXHRnZXQgcGFnZU51bSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wYWdlTnVtYmVyO1xyXG5cdH1cclxuXHJcblx0LyoqIFNvcnRpbmcgY29sdW1uICovXHJcblx0QElucHV0KCkgc29ydGluZ0J5OiB7XHJcblx0XHRzb3J0Qnk/OiBzdHJpbmc7XHJcblx0XHRzb3J0T3JkZXI/OiBzdHJpbmc7XHJcblx0fSA9IHt9O1xyXG5cdEBJbnB1dCgpIHF1ZXJ5UGFyYW0/ID0ge307XHJcblxyXG5cdEBJbnB1dCgpIGN1c3RvbUZpbHRlcnM6IHtcclxuXHRcdHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0XHRwYXlsb2FkPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHR9ID0ge307XHJcblxyXG5cdEBJbnB1dCgpIHF1aWNrRmlsdGVyPztcclxuXHQvKiogQ29udHJvbHMgaWYgaXQgcmVwb3J0IHBhZ2UgKi9cclxuXHRASW5wdXQoKSByZXBvcnQ7XHJcblx0LyoqIHRvIG1ha2UgY3Vyc29yIHdoZW4gaG92ZXIgb24gcm93IG9yIG5vdCAqL1xyXG5cdEBJbnB1dCgpIHJvd0N1cnNvcj87XHJcblx0QElucHV0KCkgZnVsbFdpZHRoPyA9ICdhdXRvJztcclxuXHQvKiogJ2xpc3QnIGZvciBub3JhbWwgdGFibGUgJ2NhcmQnIGZvciBjYXJkcyBtb2RlIGxpa2UgaW4gbWVtb3MgKi9cclxuXHRASW5wdXQoKSB0YWJsZU1vZGUgPSAnbGlzdCc7XHJcblxyXG5cdEBJbnB1dCgpIGNvbXBvbmVudE5hbWU6IHN0cmluZztcclxuXHQvKiogYWN0aW9uIHRvIGJlIHVzZWQgaW4gY2FzZSBvZiBjYXJkIG1vZGUgKi9cclxuXHRASW5wdXQoKSB0YWJsZUFjdGlvbnM7XHJcblx0QElucHV0KCkgZGVmdWx0U29ydDogYW55ID0gW3sgcHJvcDogJ3Byb3BlcnRpZXMuY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfV07XHJcblx0QElucHV0KCkgcmFuZ2U7XHJcblx0QElucHV0KCkgaXNTZWFyY2hQYWdlID0gZmFsc2U7XHJcblx0LyoqIGFsbG93IG11bHRpc2VsZWN0IHJvd3Mgd2l0aCBjaGVja2JveCAqL1xyXG5cdEBJbnB1dCgpIG11bHRpU2VsZWN0Um93cyA9IGZhbHNlO1xyXG5cdC8qKiB0byBzaG93IDFzdCByb3cgd2l0aCBjdXN0b20gdGVtcGxhdGUgaW4gdGhlIHRhYmxlKi9cclxuXHRASW5wdXQoKSBjdXN0b21GaXJzdFJvdyA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIGhpZ2hsaWdodFNlbGVjdGVkQ2FyZCA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNob3dBY3Rpb25zQXNNZW51ID0gZmFsc2U7IC8vIGZsYWdlIHRvIHNob3cgYWN0aW9uIGluIG1lbnUgb3Igc2lkZSBieSBzaWRlXHJcblx0QElucHV0KClcclxuXHRmaWx0ZXJQYXJhbXMgPSB7fTtcclxuXHJcblx0QElucHV0KCkgc2tpcEFnZ3JlZ2F0aW9uOiAnbmV2ZXInIHwgJ29uUGFnZUNoYW5nZScgPSAnb25QYWdlQ2hhbmdlJztcclxuXHRASW5wdXQoKSBjdXN0b21Vcmw6IHsgdXJsOiBzdHJpbmc7IG1ldGhvZDogJ1BPU1QnIHwgJ0dFVCcgfTtcclxuXHRASW5wdXQoKSBmb3JtYXQgPSAnTU1NTSBkLCB5JztcclxuXHJcblx0cm93cyA9IFtdO1xyXG5cdHRvdGFsUmVjb3JkcyA9IDA7XHJcblx0bXlEYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblx0bG9hZGluZztcclxuXHRzb3J0aW5nID0gZmFsc2U7XHJcblx0QElucHV0KCkgcGFnZVNpemVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHNpemU6IG51bWJlciB9PiA9IFtdO1xyXG5cclxuXHRpbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgYWRhcHRlcjogQWRhcHRlclNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGNhbGxBcGk6IENhbGxBcGlTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBkeW5hbWljVGFibGVTZXJ2aWNlOiBEeW5hbWljVGFibGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMubXlEYXRhU3Vic2NyaXB0aW9uID0gdGhpcy5keW5hbWljVGFibGVTZXJ2aWNlLnJlZnJlc2hEYXRhLnBpcGUoc3RhcnRXaXRoKG51bGwpKS5zdWJzY3JpYmUoKGZpbHRlckRhdGEpID0+IHtcclxuXHRcdFx0aWYgKGZpbHRlckRhdGEpIHtcclxuXHRcdFx0XHR0aGlzLmZpbHRlclBhcmFtcyA9IHsgLi4uZmlsdGVyRGF0YSB9O1xyXG5cdFx0XHRcdC8vIHJlc2V0IHBhZ2UgbnVtYmVyIHdoZW4gc3RhcnQgbmV3IGZpbHRlcmluZ1xyXG5cdFx0XHRcdHRoaXMuX3Jlc2V0UGFnZU51bWJlcigpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuZ2V0RGF0YSgpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMubXlEYXRhU3Vic2NyaXB0aW9uID8gdGhpcy5teURhdGFTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG5cdH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0Y29uc3QgaXNGaXJzdENoYW5nZSA9IE9iamVjdC52YWx1ZXMoY2hhbmdlcykuc29tZSgoYykgPT4gYy5pc0ZpcnN0Q2hhbmdlKCkpO1xyXG5cdFx0aWYgKGlzRmlyc3RDaGFuZ2UpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGhhc0NoYW5nZWQgPSAoaXRlbXM6IHN0cmluZ1tdKSA9PlxyXG5cdFx0XHRpdGVtcy5zb21lKChrZXkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBpc0VxdWFsID0gXy5pc0VxdWFsKGNoYW5nZXNba2V5XT8ucHJldmlvdXNWYWx1ZSB8fCBudWxsLCBjaGFuZ2VzW2tleV0/LmN1cnJlbnRWYWx1ZSB8fCBudWxsKTtcclxuXHRcdFx0XHRyZXR1cm4gIWlzRXF1YWw7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdGlmIChoYXNDaGFuZ2VkKFsncXVlcnlQYXJhbScsICdxdWlja0ZpbHRlcicsICdjdXN0b21GaWx0ZXJzJ10pKSB7XHJcblx0XHRcdGlmICh0aGlzLmluaXRpYWxpemVkKSB7XHJcblx0XHRcdFx0dGhpcy5fcmVzZXRQYWdlTnVtYmVyKCk7IC8vIFJlc2V0IHBhZ2UgbnVtYmVyIGJlZm9yZSByZWNhbGxpbmcgQVBJIHdpdGggZmlsdGVyc1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuZ2V0RGF0YSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChoYXNDaGFuZ2VkKFsnc29ydGluZ0J5J10pKSB7XHJcblx0XHRcdHRoaXMuZ2V0RGF0YSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfcmVzZXRQYWdlTnVtYmVyKCkge1xyXG5cdFx0dGhpcy5fcGFnZU51bWJlciA9IDE7XHJcblx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMuX3BhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0Z2V0RGF0YShwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sIGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSkge1xyXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTsgLy8gaW50ZXJuYWwgbG9hZGluZ1xyXG5cdFx0dGhpcy5vbkxvYWRpbmcuZW1pdCh0cnVlKTsgLy8gZXh0ZXJuYWwgbG9hZGluZ1xyXG5cdFx0bGV0IHBhcmFtcyA9IHtcclxuXHRcdFx0Li4uKHRoaXMucmFuZ2UgPyB7IGR1YmxpbmNvcmVfY3JlYXRlZF9hZ2c6IHRoaXMucmFuZ2UgfSA6IHt9KSxcclxuXHRcdFx0Li4udGhpcy5maWx0ZXJQYXJhbXMsIC8vIHVzZWQgdG8gZ2V0IGZpbHRlciBkYXRhIGFuZCBzZXQgaXQgaW4gb3VyIHBhcmFtc1xyXG5cdFx0XHQuLi50aGlzLnF1ZXJ5UGFyYW0sIC8vIHVzZWQgdG8gZ2V0IHBhcmFtcyBmcm9tIG91ciBjb25maWdcclxuXHRcdFx0Li4udGhpcy5xdWlja0ZpbHRlcixcclxuXHRcdFx0Li4uKE9iamVjdC5rZXlzKHRoaXMuc29ydGluZ0J5IHx8IHt9KS5sZW5ndGhcclxuXHRcdFx0XHQ/IHtcclxuXHRcdFx0XHRcdFx0c29ydEJ5OiB0aGlzLnNvcnRpbmdCeT8uc29ydEJ5LFxyXG5cdFx0XHRcdFx0XHRzb3J0T3JkZXI6IHRoaXMuc29ydGluZ0J5Py5zb3J0T3JkZXJcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ6IHt9KSxcclxuXHRcdFx0Y3VycmVudFBhZ2VJbmRleDogK3RoaXMucGFnZU51bSAtIDEsXHJcblx0XHRcdC4uLih0aGlzLnBhZ2VTaXplID8geyBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSB9IDoge30pLFxyXG5cdFx0XHRvZmZzZXQ6IDAsXHJcblx0XHRcdC4uLnBheWxvYWRcclxuXHRcdH07XHJcblxyXG5cdFx0Ly8gZG9uJ3QgcmVmcmVzaCBhbGwgdGFibGUgaW4gY2FzZSBvZiBzb3J0aW5nIG9ubHlcclxuXHRcdGlmICghdGhpcy5zb3J0aW5nICYmIHRoaXMuaXNMZWdhY3lNb2RlKSB7XHJcblx0XHRcdC8vIHVzZWQgdG8gbm90IHJlZnJlc2hpbmcgYWxsIHRhYmxlIGluIGNhc2Ugb2Ygc29ydGluZyBzaW5jZSB0YWJsZSBsb3NlIHNvcnRpbmcgc3RhdGUgd2hlbiByZWZyZXNoIGFsbCB0YWJsZVxyXG5cdFx0XHR0aGlzLnJvd3MgPSBbXTsgLy8gdXNlZCB0byByZWZyZXNoIHRhYmxlIHRvIGZlZWwgY2hhbmdlcyBpbiBhY3Rpb25zIHdoZW4gcGVyZm9ybSBhY3Rpb24gYW5kIG5lZWQgdG8gcmVmcmVzaCBhY3Rpb25zXHJcblx0XHR9XHJcblx0XHR0aGlzLnNvcnRpbmcgPSBmYWxzZTsgLy8gcmVzZXQgc29ydGluZyBzdGF0dXMgdG8gZmFsc2UgYW5kIGZvciBuZXh0IHNvcnRpbmcgZnVuYyBzb3J0aW5nIHNldCBpdCB0byB0cnVlIGFnYWluXHJcblxyXG5cdFx0Y29uc3QgX3F1ZXJ5ID0ge1xyXG5cdFx0XHRwYWdlUHJvdmlkZXI6IHRoaXMucGFnZVByb3ZpZGVyLFxyXG5cdFx0XHQuLi5wYXJhbXNcclxuXHRcdH07XHJcblx0XHRjb25zdCBfb3B0aW9ucyA9IHtcclxuXHRcdFx0aGVhZGVyczoge1xyXG5cdFx0XHRcdC4uLnRoaXMuaGVhZGVycyxcclxuXHRcdFx0XHQuLi5oZWFkZXJzXHJcblx0XHRcdH1cclxuXHRcdH07XHJcblxyXG5cdFx0Y29uc3QgcXVlcnkkID0gdGhpcy5jdXN0b21VcmxcclxuXHRcdFx0PyB0aGlzLmNhbGxBcGkuY3VzdG9tUXVlcnkoXHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbVVybCxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0Li4ucGFyYW1zLFxyXG5cdFx0XHRcdFx0XHQuLi4odGhpcy5jdXN0b21GaWx0ZXJzPy5wYXJhbXMgfHwge30pXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0X29wdGlvbnMuaGVhZGVycyxcclxuXHRcdFx0XHRcdHRoaXMuY3VzdG9tRmlsdGVycz8ucGF5bG9hZCB8fCB7fVxyXG5cdFx0XHRcdClcclxuXHRcdFx0OiB0aGlzLmNhbGxBcGkucXVlcnkoX3F1ZXJ5LCBfb3B0aW9ucyk7XHJcblxyXG5cdFx0cXVlcnkkXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdG1hcCgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRkYXRhLmVudHJpZXMubWFwKChpdGVtKSA9PiB0aGlzLmFkYXB0ZXIuYWRhcHRJbihpdGVtLCB0aGlzLmZpZWxkcykpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHR0aHJvdyBlcnI7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLm9uTG9hZGluZy5lbWl0KGZhbHNlKTtcclxuXHRcdFx0XHR0aGlzLm9uTG9hZC5lbWl0KHJlcyk7XHJcblx0XHRcdFx0aWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XHJcblx0XHRcdFx0XHR0aGlzLm9uSW5pdGlhbGl6ZS5lbWl0KHJlcyk7XHJcblx0XHRcdFx0XHR0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmVzLmVudHJpZXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQucHJvcGVydGllcyAmJiBlbGVtZW50LnByb3BlcnRpZXM/LmNyZWF0b3IgJiYgZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3I/LnByb3BlcnRpZXMpIHtcclxuXHRcdFx0XHRcdFx0ZWxlbWVudC5wcm9wZXJ0aWVzWydjcmVhdG9yRnVsbE9iamVjdCddID0geyAuLi5lbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvciB9O1xyXG5cdFx0XHRcdFx0XHRlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvciA9XHJcblx0XHRcdFx0XHRcdFx0ZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3I/LnByb3BlcnRpZXM/LmZpcnN0TmFtZSArXHJcblx0XHRcdFx0XHRcdFx0JyAnICtcclxuXHRcdFx0XHRcdFx0XHRlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvcj8ucHJvcGVydGllcz8ubGFzdE5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAoZWxlbWVudC5wcm9wZXJ0aWVzICYmIGVsZW1lbnQucHJvcGVydGllcz8uYXNzaWduZWUpIHtcclxuXHRcdFx0XHRcdFx0ZWxlbWVudC5wcm9wZXJ0aWVzLmFzc2lnbmVlID0gZWxlbWVudC5wcm9wZXJ0aWVzPy5hc3NpZ25lZS5mdWxsTmFtZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcy5yZXN1bHRzQ291bnQ7XHJcblx0XHRcdFx0dGhpcy5yb3dzID0gcmVzLmVudHJpZXM7XHJcblx0XHRcdFx0dGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdC8vIGVtaXQgZGF0YSB0byBvdXRzaWRlIGluIGNhc2Ugb2Ygc2VhcmNoIHBhZ2UgZm9yIHRoZSBmaXJzdCB0aW1lIG9ubHkgdG8gcHJldmVudCByZWZyZXNoaW5nIGFnZ3JlZ2F0aW9uIHdpdGggZXZlcnkgcGFnZSBjaGFuZ2VcclxuXHRcdFx0XHQvLyBhbmQgZm9yIGFueSBvdGhlciBwYWdlIHR5cGUgZW1pdCBkYXRhIGRpcmVjdGx5IGluIGFsbCBwYWdlIG51bWJlcnNcclxuXHRcdFx0XHRpZiAoKHRoaXMuaXNTZWFyY2hQYWdlICYmIHRoaXMucGFnZU51bSA9PT0gMSkgfHwgIXRoaXMuaXNTZWFyY2hQYWdlKSB0aGlzLm9uR2V0dGluZ0RhdGEuZW1pdChyZXMpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8vIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gc2luZ2xlIHJvd1xyXG5cdHJvd0RldGFpbHMoZXZlbnQpIHtcclxuXHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KGV2ZW50KTtcclxuXHR9XHJcblxyXG5cdGluZGV4RGV0YWlscyhldmVudCkge1xyXG5cdFx0dGhpcy5vblJvd0luZGV4U2VsZWN0ZWQuZW1pdChldmVudCk7XHJcblx0fVxyXG5cclxuXHQvL2Z1bmN0aW9uIHRvIGhhbmRsZSBhbGwgb3BlcmF0aW9ucyBvbiBzaW5nbGUgcm93IChkZWxldGUgLCBlZGl0ICwgLi4uKVxyXG5cdHBlcmZvcm1BY3Rpb24oYWN0aW9uKSB7XHJcblx0XHR0aGlzLmFjdGlvbk9uUm93LmVtaXQoYWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdC8vIGhhbmRsZSBzb3J0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlXHJcblx0b25Tb3J0KHNvcnRPYmplY3QpIHtcclxuXHRcdHRoaXMuc29ydGluZ0J5ID0gc29ydE9iamVjdDtcclxuXHRcdHRoaXMuc29ydGluZyA9IHRydWU7XHJcblx0XHR0aGlzLmdldERhdGEoe30sIHRoaXMuc2tpcEFnZ3JlZ2F0aW9uID09PSAnb25QYWdlQ2hhbmdlJyA/IHsgc2tpcEFnZ3JlZ2F0ZXM6ICd0cnVlJyB9IDoge30pO1xyXG5cdH1cclxuXHJcblx0b25NdWx0aVJvd1NlbGVjdFZhbHVlKGV2ZW50KSB7XHJcblx0XHR0aGlzLm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KGV2ZW50KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBQYWdpbmF0aW9uQ2hhbmdlKGV2ZW50KSB7XHJcblx0XHR0aGlzLl9wYWdlTnVtYmVyID0gZXZlbnQ7XHJcblx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KGV2ZW50KTtcclxuXHRcdHRoaXMuZ2V0RGF0YSh7fSwgdGhpcy5za2lwQWdncmVnYXRpb24gPT09ICdvblBhZ2VDaGFuZ2UnID8geyBza2lwQWdncmVnYXRlczogJ3RydWUnIH0gOiB7fSk7XHJcblx0fVxyXG5cclxuXHRvbkNoYW5nZVBhZ2VTaXplKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuXHRcdHRoaXMuX3Jlc2V0UGFnZU51bWJlcigpO1xyXG5cdFx0dGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG5cdFx0dGhpcy5nZXREYXRhKHt9LCB0aGlzLnNraXBBZ2dyZWdhdGlvbiA9PT0gJ29uUGFnZUNoYW5nZScgPyB7IHNraXBBZ2dyZWdhdGVzOiAndHJ1ZScgfSA6IHt9KTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndyYXBwaW5nIHRhYmxlLXdyYXBwaW5nXCI+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGVnYWN5TW9kZVwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRhYmxlLXJlcG9zaXRpb25cIj5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd3MubGVuZ3RoXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVcIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cclxuXHRcdFx0PGN0cy1zcGlubmVyPjwvY3RzLXNwaW5uZXI+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0PGRpdiBjbGFzcz1cInRhYmxlLXJlcG9zaXRpb25cIiAqbmdJZj1cIiFpc0xlZ2FjeU1vZGVcIj5cclxuXHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVcIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdDxuZy1jb250YWluZXJcclxuXHRcdFx0Km5nSWY9XCIhaW5pdGlhbGl6ZWRcIlxyXG5cdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJza2VsZXRvblwiXHJcblx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogMTAgfVwiXHJcblx0XHQ+PC9uZy1jb250YWluZXI+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXZcclxuXHRcdGNsYXNzPVwicGFnaW5hdGlvbi1pbmVyLXdyYXBlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXktM1wiXHJcblx0XHRbbmdDbGFzc109XCJ7IHJlbGF0aXZlOiBwYWdlU2l6ZXM/Lmxlbmd0aCB9XCJcclxuXHRcdCpuZ0lmPVwicm93cy5sZW5ndGhcIlxyXG5cdD5cclxuXHRcdDxjdHMtcGFnaW5hdGlvblxyXG5cdFx0XHRbcGFnZV09XCJwYWdlTnVtXCJcclxuXHRcdFx0KGNoYW5nZSk9XCJQYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRbc2l6ZV09XCJwYWdlU2l6ZVwiXHJcblx0XHRcdFtjb3VudF09XCJ0b3RhbFJlY29yZHNcIlxyXG5cdFx0PjwvY3RzLXBhZ2luYXRpb24+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbmRmUGFnZVNpemVzIGZsZXggZ2FwLXgtMyBpdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG5cdFx0XHQ8bmRmLXBhZ2Utc2l6ZXMtbGlzdFxyXG5cdFx0XHRcdCpuZ0lmPVwicGFnZVNpemVzPy5sZW5ndGhcIlxyXG5cdFx0XHRcdFtwYWdlU2l6ZXNdPVwicGFnZVNpemVzXCJcclxuXHRcdFx0XHRbc2VsZWN0ZWRQYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcblx0XHRcdFx0KG9uQ2hhbmdlUGFnZVNpemUpPVwib25DaGFuZ2VQYWdlU2l6ZSgkZXZlbnQpXCJcclxuXHRcdFx0PlxyXG5cdFx0XHQ8L25kZi1wYWdlLXNpemVzLWxpc3Q+XHJcblxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cInNob3dUb3RhbFJlY29yZFwiPnt7ICdUQUJMRS50b3RhbFJlY29yZHMnIHwgdHJhbnNsYXRlOiB7IGNvdW50OiB0b3RhbFJlY29yZHMgfSB9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8bmctY29udGFpbmVyXHJcblx0XHQqbmdJZj1cImlzTGVnYWN5TW9kZVwiXHJcblx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVRlbXBsYXRlIHx8IGxlZ2FjeURlZmF1bHRFbXB0eVN0YXRlXCJcclxuXHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbG9hZGluZywgcm93czogcm93cywgaW5pdGlhbGl6ZWQ6IGluaXRpYWxpemVkIH1cIlxyXG5cdD48L25nLWNvbnRhaW5lcj5cclxuXHJcblx0PG5nLWNvbnRhaW5lclxyXG5cdFx0Km5nSWY9XCIhaXNMZWdhY3lNb2RlXCJcclxuXHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5VGVtcGxhdGUgfHwgZGVmYXVsdEVtcHR5U3RhdGVcIlxyXG5cdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBsb2FkaW5nLCByb3dzOiByb3dzLCBpbml0aWFsaXplZDogaW5pdGlhbGl6ZWQgfVwiXHJcblx0PjwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFibGU+XHJcblx0PGN0cy10YWJsZVxyXG5cdFx0W3Jvd3NdPVwicm93c1wiXHJcblx0XHRbY29sdW1uc109XCJjb2x1bW5zXCJcclxuXHRcdFtyZXNwb25zaXZlQ29sdW1uc109XCJyZXNwb25zaXZlQ29sdW1uc1wiXHJcblx0XHRbcm93Q3Vyc29yXT1cInJvd0N1cnNvclwiXHJcblx0XHRbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXHJcblx0XHRbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCJcclxuXHRcdFtwcmVmaXhdPVwicHJlZml4XCJcclxuXHRcdFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuXHRcdFt0YWJsZU1vZGVdPVwidGFibGVNb2RlXCJcclxuXHRcdFtjb21wb25lbnROYW1lXT1cImNvbXBvbmVudE5hbWVcIlxyXG5cdFx0W211bHRpU2VsZWN0Um93c109XCJtdWx0aVNlbGVjdFJvd3NcIlxyXG5cdFx0W3RhYmxlQWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxyXG5cdFx0W3Nob3dBY3Rpb25zQXNNZW51XT1cInNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFtkZWZ1bHRTb3J0XT1cImRlZnVsdFNvcnRcIlxyXG5cdFx0W2Zvcm1hdF09XCJmb3JtYXRcIlxyXG5cdFx0W2hpZ2hsaWdodFNlbGVjdGVkQ2FyZF09XCJoaWdobGlnaHRTZWxlY3RlZENhcmRcIlxyXG5cdFx0W2N1c3RvbUZpcnN0Um93XT1cImN1c3RvbUZpcnN0Um93XCJcclxuXHRcdChvblJvd1NlbGVjdGVkKT1cInJvd0RldGFpbHMoJGV2ZW50KVwiXHJcblx0XHQob25Sb3dJbmRleFNlbGVjdGVkKT1cImluZGV4RGV0YWlscygkZXZlbnQpXCJcclxuXHRcdChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdFZhbHVlKCRldmVudClcIlxyXG5cdFx0KGFjdGlvbk9uUm93KT1cInBlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXHJcblx0XHQob25Tb3J0aW5nKT1cIm9uU29ydCgkZXZlbnQpXCJcclxuXHQ+PC9jdHMtdGFibGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xlZ2FjeURlZmF1bHRFbXB0eVN0YXRlPlxyXG5cdDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgcm93cy5sZW5ndGggPT09IDBcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcblx0XHRcdHt7IChwcmVmaXggPyBwcmVmaXggKyAnbm9EYXRhJyA6ICdub0RhdGEnKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCIgKm5nSWY9XCJsb2FkaW5nICYmIHJvd3MubGVuZ3RoID09PSAwXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwidGV4dFwiPlxyXG5cdFx0XHR7eyAocHJlZml4ID8gcHJlZml4ICsgJ2dldHRpbmdEYXRhJyA6ICdnZXR0aW5nRGF0YScpIHwgdHJhbnNsYXRlIH19XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5U3RhdGU+XHJcblx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCIgKm5nSWY9XCIhbG9hZGluZyAmJiByb3dzLmxlbmd0aCA9PT0gMFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRleHRcIj5cclxuXHRcdFx0e3sgKHByZWZpeCA/IHByZWZpeCArICdub0RhdGEnIDogJ25vRGF0YScpIHwgdHJhbnNsYXRlIH19XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2ICpuZ0lmPVwibG9hZGluZyAmJiBpbml0aWFsaXplZFwiIGNsYXNzPVwibG9hZGluZy1jb250ZW50XCI+XHJcblx0XHQ8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjEwMFwiPjwvbWF0LXNwaW5uZXI+XHJcblx0PC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NrZWxldG9uIGxldC1yb3dzPlxyXG5cdDx0YWJsZSBjbGFzcz1cInctZnVsbFwiPlxyXG5cdFx0PHRoZWFkICpuZ0lmPVwiZmFsc2VcIj5cclxuXHRcdFx0PHRyIGNsYXNzPVwiYm9yZGVyLWIgYm9yZGVyLWdyZWVuLTkwMFwiPlxyXG5cdFx0XHRcdDx0aCAqbmdJZj1cIm11bHRpU2VsZWN0Um93c1wiIGNsYXNzPVwicC0zIHB5LTRcIiBzdHlsZT1cIndpZHRoOiA2MHB4XCI+XHJcblx0XHRcdFx0XHQ8YXBwLXNrZWxldG9uIHdpZHRoPVwiNjBweFwiIGhlaWdodD1cIjEuM3JlbVwiPjwvYXBwLXNrZWxldG9uPlxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0PHRoICpuZ0Zvcj1cImxldCBudW0gb2YgW10uY29uc3RydWN0b3IoY29sdW1ucz8ubGVuZ3RoIHx8IDQpOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJweC0zIHB5LTRcIj5cclxuXHRcdFx0XHRcdDxhcHAtc2tlbGV0b24gW3JhbmRvbVdpZHRoXT1cInRydWVcIiBoZWlnaHQ9XCIxLjdyZW1cIj48L2FwcC1za2VsZXRvbj5cclxuXHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHQ8L3RyPlxyXG5cdFx0PC90aGVhZD5cclxuXHRcdDx0Ym9keT5cclxuXHRcdFx0PHRyICpuZ0Zvcj1cImxldCByb3cgb2YgW10uY29uc3RydWN0b3Iocm93cyB8fCAxMCk7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cclxuXHRcdFx0XHQ8dGQgKm5nSWY9XCJtdWx0aVNlbGVjdFJvd3NcIiBjbGFzcz1cInAtMyBweS00XCIgc3R5bGU9XCJ3aWR0aDogNTBweFwiPlxyXG5cdFx0XHRcdFx0PGFwcC1za2VsZXRvbiB3aWR0aD1cIjUwcHhcIiBoZWlnaHQ9XCIxLjNyZW1cIj48L2FwcC1za2VsZXRvbj5cclxuXHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIFtdLmNvbnN0cnVjdG9yKGNvbHVtbnM/Lmxlbmd0aCB8fCA0KTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwicC0zIHB5LTRcIj5cclxuXHRcdFx0XHRcdDxhcHAtc2tlbGV0b24gW3JhbmRvbVdpZHRoXT1cInRydWVcIiBoZWlnaHQ9XCIxLjNyZW1cIj48L2FwcC1za2VsZXRvbj5cclxuXHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHQ8L3RyPlxyXG5cdFx0PC90Ym9keT5cclxuXHQ8L3RhYmxlPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBSXJFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQVdILE1BQU0sT0FBTyxxQkFBcUI7SUF3R2pDLFlBQ1MsT0FBdUIsRUFDdkIsT0FBdUIsRUFDdkIsbUJBQXdDLEVBQ3hDLEdBQXNCO1FBSHRCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzRy9CLCtDQUErQztRQUNyQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7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c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFTixZQUFZO3NCQURYLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRDb21wb25lbnQsXHJcblx0Q29udGVudENoaWxkLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbnB1dCxcclxuXHRPbkRlc3Ryb3ksXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFRlbXBsYXRlUmVmLFxyXG5cdFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2FkYXB0ZXJzL2FkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENhbGxBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9jYWxsQXBpL2NhbGwtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFTVBUWV9URU1QTEFURSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZW1wdHktc3RhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRHluYW1pY1RhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2R5bmFtaWMtdGFibGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvci9wYWdpbmF0b3InO1xyXG5cclxuLyoqXHJcbiAqIHRoaXMgY29tcG9uZW50IGlzIGFuIGFkZGl0aW9uYWwgbGF5ZXIgdGhhdCB1c2VzIFtUYWJsZSBDb21wb25lbnRde0BsaW5rIFRhYmxlQ29tcG9uZW50fSBpbnRlcm5hbGx5LFxyXG4gKiB5b3UgY2FuIHVzZSB0aGlzIGNvbXBvbmVudCB0byBjb25maWd1cmUgYSBwYWdlIHByb3ZpZGVyIGxpc3Rpbmcgb3V0IG9mIHRoZSBib3ggZWFzaWx5LFxyXG4gKiBhbmQgaXQgd2lsbCBoYW5kbGUgYWxsIG9mIHRoZSBiYXNpYyBmZWF0dXJlcyBzdWNoIGFzIGdldHRpbmcgZGF0YSBmcm9tIEFQSSwgTGlzdGluZywgUGFnaW5hdGlvbiwgc29ydGluZyBhbmQgZmlsdGVyaW5nXHJcbiAqICFbU2NyZWVuc2hvdC0xXSguLi9zY3JlZW5zaG90cy9keW5hbWljVGFibGUucG5nKVxyXG4gKiBAdGl0bGVcclxuICogRHluYW1pYyBUYWJsZVxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiA8Y3RzLWR5bmFtaWMtdGFibGVcclxuICogICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAqICAgIFtyZXNwb25zaXZlQ29sdW1uc109XCJyZXNwb25zaXZlQ29sdW1uc1wiXHJcbiAqICAgIFtmdWxsV2lkdGhdPVwiZnVsbFdpZHRoXCJcclxuICogICAgW3BhZ2VTaXplXT1cIlBhZ2VTaXplXCJcclxuICogICAgW3BhZ2VQcm92aWRlcl09XCJwYWdlUHJvdmlkZXJcIlxyXG4gKiAgICBbcXVpY2tGaWx0ZXJdPVwiZmlsdGVyXCJcclxuICogICAgW3NvcnRpbmdCeV09XCJzb3J0aW5nQnlcIlxyXG4gKiAgICBbZW50aXR5VHlwZV09XCInYWxsJ1wiXHJcbiAqICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcclxuICogICAgW3ByZWZpeF09XCJwcmVmaXhcIlxyXG4gKiAgICBbcm93Q3Vyc29yXT1cInRydWVcIlxyXG4gKiAgICBbcXVlcnlQYXJhbV09XCJxdWVyeVBhcmFtXCJcclxuICogICAgW2hlYWRlcnNdPVwiaGVhZGVyc1wiXHJcbiAqICAgIChvblJvd1NlbGVjdGVkKT1cIm9wZW5WaWV3ZXIoJGV2ZW50KVwiXHJcbiAqICAgIChhY3Rpb25PblJvdyk9XCJwZXJmb3JtQWN0aW9uKCRldmVudClcIj5cclxuICogPC9jdHMtZHluYW1pYy10YWJsZT5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY3RzLWR5bmFtaWMtdGFibGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9keW5hbWljLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuXHRob3N0OiB7XHJcblx0XHQnW2NsYXNzLmxvYWRpbmctcmVzdWx0c10nOiAnbG9hZGluZycsXHJcblx0XHQnW2NsYXNzLm5vLWRhdGFdJzogJ3Jvd3MubGVuZ3RoIDw9IDAnXHJcblx0fVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gc2VsZWN0aW5nIHNpbmdsZSByb3cgICovXHJcblx0QE91dHB1dCgpIG9uUm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyB0byBjYXRjaCBpbmRleCovXHJcblx0QE91dHB1dCgpIG9uUm93SW5kZXhTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogZXZlbnQgdG8gZW1pdCB3aGVuIHBlcmZvcm0gYWN0aW9uIG9uIHJvdyAoZGVsdGUsIGVkaXQsIC4uLiApICovXHJcblx0QE91dHB1dCgpIGFjdGlvbk9uUm93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHRvIHRoZSBoaWdoZXIgbGV2ZWwgIHdoZW4gZ2V0dGluZyBkYXRhIGZyb20gYXBpIGlzIGZpbmlzaGVkICovXHJcblx0QE91dHB1dCgpIG9uR2V0dGluZ0RhdGEgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHQgZW1pdCB3aGVuIHNlbGVjdGluZyBtdWx0aXBsZSByb3cgKi9cclxuXHRAT3V0cHV0KCkgb25NdWx0aVJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0IGVtaXQgd2hlbiBzdGFydCBnZXR0aW5nIGRhdGEgYW5kIHdoZW4gZmluaXNoICovXHJcblx0QE91dHB1dCgpIG9uTG9hZGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKipcclxuXHQgKiBAZGVwcmVjYXRlZCBVc2UgYG9uUGFnZWAgaW5zdGVhZC5cclxuXHQgKiBAc2VlIG9uUGFnZVxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKSBvblBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cdEBPdXRwdXQoKSBvblBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuXHJcblx0QE91dHB1dCgpIG9uTG9hZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25Jbml0aWFsaXplID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBBcnJheSBvZiBjb2x1bW5zICovXHJcblx0QElucHV0KCkgY29sdW1ucztcclxuXHQvKiogQXJyYXkgb2YgY29sdW1ucyBvbiBzbWFsbGVyIHNjcmVlbnMgKi9cclxuXHRASW5wdXQoKSByZXNwb25zaXZlQ29sdW1ucz87XHJcblx0LyoqIERlZmluZXMgdGhlIHBhZ2UgaW4gd2hpY2ggdGFibGUgaXMgYmVpbmcgdXNlZCAqL1xyXG5cdEBJbnB1dCgpIGVudGl0eVR5cGU6IHN0cmluZztcclxuXHQvKiogVHJhbnNsYXRpb25zIHByZWZpeCAqL1xyXG5cdEBJbnB1dCgpIHByZWZpeCA9ICcnO1xyXG5cdC8qKiBIZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCBBUEkgUmVxdWVzdCAqL1xyXG5cdEBJbnB1dCgpIGhlYWRlcnM7XHJcblx0LyoqIEZpZWxkcyBrZXltYXAgdG8gYmUgbWFwcGVkIGluIHRoZSBhZGFwdGVyICovXHJcblx0QElucHV0KCkgZmllbGRzO1xyXG5cdC8qKiBQYWdlIFByb3ZpZGVyIG5hbWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmV0cmlldmUgZGF0YSAqL1xyXG5cdEBJbnB1dCgpIHBhZ2VQcm92aWRlcjtcclxuXHQvKiogQ29udHJvbHMgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGluIHRhYmxlICovXHJcblx0QElucHV0KCkgcGFnZVNpemUgPSAxMDtcclxuXHJcblx0QElucHV0KCkgaXNMZWdhY3lNb2RlID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBzaG93VG90YWxSZWNvcmQgPSBmYWxzZTtcclxuXHJcblx0QENvbnRlbnRDaGlsZChFTVBUWV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXHJcblx0ZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcblx0cHJpdmF0ZSBfcGFnZU51bWJlciA9IDE7XHJcblx0QElucHV0KCkgc2V0IHBhZ2VOdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcikge1xyXG5cdFx0dGhpcy5fcGFnZU51bWJlciA9IGlzTmFOKCt2YWx1ZSkgPyAxIDogK3ZhbHVlO1xyXG5cdH1cclxuXHJcblx0Z2V0IHBhZ2VOdW0oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcGFnZU51bWJlcjtcclxuXHR9XHJcblxyXG5cdC8qKiBTb3J0aW5nIGNvbHVtbiAqL1xyXG5cdEBJbnB1dCgpIHNvcnRpbmdCeToge1xyXG5cdFx0c29ydEJ5Pzogc3RyaW5nO1xyXG5cdFx0c29ydE9yZGVyPzogc3RyaW5nO1xyXG5cdH0gPSB7fTtcclxuXHRASW5wdXQoKSBxdWVyeVBhcmFtPyA9IHt9O1xyXG5cclxuXHRASW5wdXQoKSBjdXN0b21GaWx0ZXJzOiB7XHJcblx0XHRwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0cGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0fSA9IHt9O1xyXG5cclxuXHRASW5wdXQoKSBxdWlja0ZpbHRlcj87XHJcblx0LyoqIENvbnRyb2xzIGlmIGl0IHJlcG9ydCBwYWdlICovXHJcblx0QElucHV0KCkgcmVwb3J0O1xyXG5cdC8qKiB0byBtYWtlIGN1cnNvciB3aGVuIGhvdmVyIG9uIHJvdyBvciBub3QgKi9cclxuXHRASW5wdXQoKSByb3dDdXJzb3I/O1xyXG5cdEBJbnB1dCgpIGZ1bGxXaWR0aD8gPSAnYXV0byc7XHJcblx0LyoqICdsaXN0JyBmb3Igbm9yYW1sIHRhYmxlICdjYXJkJyBmb3IgY2FyZHMgbW9kZSBsaWtlIGluIG1lbW9zICovXHJcblx0QElucHV0KCkgdGFibGVNb2RlID0gJ2xpc3QnO1xyXG5cclxuXHRASW5wdXQoKSBjb21wb25lbnROYW1lOiBzdHJpbmc7XHJcblx0LyoqIGFjdGlvbiB0byBiZSB1c2VkIGluIGNhc2Ugb2YgY2FyZCBtb2RlICovXHJcblx0QElucHV0KCkgdGFibGVBY3Rpb25zO1xyXG5cdEBJbnB1dCgpIGRlZnVsdFNvcnQ6IGFueSA9IFt7IHByb3A6ICdwcm9wZXJ0aWVzLmNyZWF0ZWRBdCcsIGRpcjogJ2Rlc2MnIH1dO1xyXG5cdEBJbnB1dCgpIHJhbmdlO1xyXG5cdEBJbnB1dCgpIGlzU2VhcmNoUGFnZSA9IGZhbHNlO1xyXG5cdC8qKiBhbGxvdyBtdWx0aXNlbGVjdCByb3dzIHdpdGggY2hlY2tib3ggKi9cclxuXHRASW5wdXQoKSBtdWx0aVNlbGVjdFJvd3MgPSBmYWxzZTtcclxuXHQvKiogdG8gc2hvdyAxc3Qgcm93IHdpdGggY3VzdG9tIHRlbXBsYXRlIGluIHRoZSB0YWJsZSovXHJcblx0QElucHV0KCkgY3VzdG9tRmlyc3RSb3cgPSBmYWxzZTtcclxuXHRASW5wdXQoKSBoaWdobGlnaHRTZWxlY3RlZENhcmQgPSBmYWxzZTtcclxuXHRASW5wdXQoKSBzaG93QWN0aW9uc0FzTWVudSA9IGZhbHNlOyAvLyBmbGFnZSB0byBzaG93IGFjdGlvbiBpbiBtZW51IG9yIHNpZGUgYnkgc2lkZVxyXG5cdEBJbnB1dCgpXHJcblx0ZmlsdGVyUGFyYW1zID0ge307XHJcblxyXG5cdEBJbnB1dCgpIHNraXBBZ2dyZWdhdGlvbjogJ25ldmVyJyB8ICdvblBhZ2VDaGFuZ2UnID0gJ29uUGFnZUNoYW5nZSc7XHJcblx0QElucHV0KCkgY3VzdG9tVXJsOiB7IHVybDogc3RyaW5nOyBtZXRob2Q6ICdQT1NUJyB8ICdHRVQnIH07XHJcblx0QElucHV0KCkgZm9ybWF0ID0gJ01NTU0gZCwgeSc7XHJcblxyXG5cdHJvd3MgPSBbXTtcclxuXHR0b3RhbFJlY29yZHMgPSAwO1xyXG5cdG15RGF0YVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cdGxvYWRpbmc7XHJcblx0c29ydGluZyA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHBhZ2VTaXplczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyBzaXplOiBudW1iZXIgfT4gPSBbXTtcclxuXHJcblx0aW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGFkYXB0ZXI6IEFkYXB0ZXJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjYWxsQXBpOiBDYWxsQXBpU2VydmljZSxcclxuXHRcdHByaXZhdGUgZHluYW1pY1RhYmxlU2VydmljZTogRHluYW1pY1RhYmxlU2VydmljZSxcclxuXHRcdHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLm15RGF0YVN1YnNjcmlwdGlvbiA9IHRoaXMuZHluYW1pY1RhYmxlU2VydmljZS5yZWZyZXNoRGF0YS5waXBlKHN0YXJ0V2l0aChudWxsKSkuc3Vic2NyaWJlKChmaWx0ZXJEYXRhKSA9PiB7XHJcblx0XHRcdGlmIChmaWx0ZXJEYXRhKSB7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlckRhdGEgfTtcclxuXHRcdFx0XHQvLyByZXNldCBwYWdlIG51bWJlciB3aGVuIHN0YXJ0IG5ldyBmaWx0ZXJpbmdcclxuXHRcdFx0XHR0aGlzLl9yZXNldFBhZ2VOdW1iZXIoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLm15RGF0YVN1YnNjcmlwdGlvbiA/IHRoaXMubXlEYXRhU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHRcdGNvbnN0IGlzRmlyc3RDaGFuZ2UgPSBPYmplY3QudmFsdWVzKGNoYW5nZXMpLnNvbWUoKGMpID0+IGMuaXNGaXJzdENoYW5nZSgpKTtcclxuXHRcdGlmIChpc0ZpcnN0Q2hhbmdlKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBoYXNDaGFuZ2VkID0gKGl0ZW1zOiBzdHJpbmdbXSkgPT5cclxuXHRcdFx0aXRlbXMuc29tZSgoa2V5KSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgaXNFcXVhbCA9IF8uaXNFcXVhbChjaGFuZ2VzW2tleV0/LnByZXZpb3VzVmFsdWUgfHwgbnVsbCwgY2hhbmdlc1trZXldPy5jdXJyZW50VmFsdWUgfHwgbnVsbCk7XHJcblx0XHRcdFx0cmV0dXJuICFpc0VxdWFsO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRpZiAoaGFzQ2hhbmdlZChbJ3F1ZXJ5UGFyYW0nLCAncXVpY2tGaWx0ZXInLCAnY3VzdG9tRmlsdGVycyddKSkge1xyXG5cdFx0XHRpZiAodGhpcy5pbml0aWFsaXplZCkge1xyXG5cdFx0XHRcdHRoaXMuX3Jlc2V0UGFnZU51bWJlcigpOyAvLyBSZXNldCBwYWdlIG51bWJlciBiZWZvcmUgcmVjYWxsaW5nIEFQSSB3aXRoIGZpbHRlcnNcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaGFzQ2hhbmdlZChbJ3NvcnRpbmdCeSddKSkge1xyXG5cdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3Jlc2V0UGFnZU51bWJlcigpIHtcclxuXHRcdHRoaXMuX3BhZ2VOdW1iZXIgPSAxO1xyXG5cdFx0dGhpcy5vblBhZ2VDaGFuZ2UuZW1pdCh0aGlzLl9wYWdlTnVtYmVyKTtcclxuXHRcdHRoaXMub25QYWdlLmVtaXQoe1xyXG5cdFx0XHRwYWdlSW5kZXg6IHRoaXMuX3BhZ2VOdW1iZXIsXHJcblx0XHRcdHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG5cdFx0XHRsZW5ndGg6IHRoaXMudG90YWxSZWNvcmRzXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldERhdGEocGF5bG9hZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pIHtcclxuXHRcdHRoaXMubG9hZGluZyA9IHRydWU7IC8vIGludGVybmFsIGxvYWRpbmdcclxuXHRcdHRoaXMub25Mb2FkaW5nLmVtaXQodHJ1ZSk7IC8vIGV4dGVybmFsIGxvYWRpbmdcclxuXHRcdGxldCBwYXJhbXMgPSB7XHJcblx0XHRcdC4uLih0aGlzLnJhbmdlID8geyBkdWJsaW5jb3JlX2NyZWF0ZWRfYWdnOiB0aGlzLnJhbmdlIH0gOiB7fSksXHJcblx0XHRcdC4uLnRoaXMuZmlsdGVyUGFyYW1zLCAvLyB1c2VkIHRvIGdldCBmaWx0ZXIgZGF0YSBhbmQgc2V0IGl0IGluIG91ciBwYXJhbXNcclxuXHRcdFx0Li4udGhpcy5xdWVyeVBhcmFtLCAvLyB1c2VkIHRvIGdldCBwYXJhbXMgZnJvbSBvdXIgY29uZmlnXHJcblx0XHRcdC4uLnRoaXMucXVpY2tGaWx0ZXIsXHJcblx0XHRcdC4uLihPYmplY3Qua2V5cyh0aGlzLnNvcnRpbmdCeSB8fCB7fSkubGVuZ3RoXHJcblx0XHRcdFx0PyB7XHJcblx0XHRcdFx0XHRcdHNvcnRCeTogdGhpcy5zb3J0aW5nQnk/LnNvcnRCeSxcclxuXHRcdFx0XHRcdFx0c29ydE9yZGVyOiB0aGlzLnNvcnRpbmdCeT8uc29ydE9yZGVyXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0OiB7fSksXHJcblx0XHRcdGN1cnJlbnRQYWdlSW5kZXg6ICt0aGlzLnBhZ2VOdW0gLSAxLFxyXG5cdFx0XHQuLi4odGhpcy5wYWdlU2l6ZSA/IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSA6IHt9KSxcclxuXHRcdFx0b2Zmc2V0OiAwLFxyXG5cdFx0XHQuLi5wYXlsb2FkXHJcblx0XHR9O1xyXG5cclxuXHRcdC8vIGRvbid0IHJlZnJlc2ggYWxsIHRhYmxlIGluIGNhc2Ugb2Ygc29ydGluZyBvbmx5XHJcblx0XHRpZiAoIXRoaXMuc29ydGluZyAmJiB0aGlzLmlzTGVnYWN5TW9kZSkge1xyXG5cdFx0XHQvLyB1c2VkIHRvIG5vdCByZWZyZXNoaW5nIGFsbCB0YWJsZSBpbiBjYXNlIG9mIHNvcnRpbmcgc2luY2UgdGFibGUgbG9zZSBzb3J0aW5nIHN0YXRlIHdoZW4gcmVmcmVzaCBhbGwgdGFibGVcclxuXHRcdFx0dGhpcy5yb3dzID0gW107IC8vIHVzZWQgdG8gcmVmcmVzaCB0YWJsZSB0byBmZWVsIGNoYW5nZXMgaW4gYWN0aW9ucyB3aGVuIHBlcmZvcm0gYWN0aW9uIGFuZCBuZWVkIHRvIHJlZnJlc2ggYWN0aW9uc1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zb3J0aW5nID0gZmFsc2U7IC8vIHJlc2V0IHNvcnRpbmcgc3RhdHVzIHRvIGZhbHNlIGFuZCBmb3IgbmV4dCBzb3J0aW5nIGZ1bmMgc29ydGluZyBzZXQgaXQgdG8gdHJ1ZSBhZ2FpblxyXG5cclxuXHRcdGNvbnN0IF9xdWVyeSA9IHtcclxuXHRcdFx0cGFnZVByb3ZpZGVyOiB0aGlzLnBhZ2VQcm92aWRlcixcclxuXHRcdFx0Li4ucGFyYW1zXHJcblx0XHR9O1xyXG5cdFx0Y29uc3QgX29wdGlvbnMgPSB7XHJcblx0XHRcdGhlYWRlcnM6IHtcclxuXHRcdFx0XHQuLi50aGlzLmhlYWRlcnMsXHJcblx0XHRcdFx0Li4uaGVhZGVyc1xyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdGNvbnN0IHF1ZXJ5JCA9IHRoaXMuY3VzdG9tVXJsXHJcblx0XHRcdD8gdGhpcy5jYWxsQXBpLmN1c3RvbVF1ZXJ5KFxyXG5cdFx0XHRcdFx0dGhpcy5jdXN0b21VcmwsXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdC4uLnBhcmFtcyxcclxuXHRcdFx0XHRcdFx0Li4uKHRoaXMuY3VzdG9tRmlsdGVycz8ucGFyYW1zIHx8IHt9KVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdF9vcHRpb25zLmhlYWRlcnMsXHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUZpbHRlcnM/LnBheWxvYWQgfHwge31cclxuXHRcdFx0XHQpXHJcblx0XHRcdDogdGhpcy5jYWxsQXBpLnF1ZXJ5KF9xdWVyeSwgX29wdGlvbnMpO1xyXG5cclxuXHRcdHF1ZXJ5JFxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRtYXAoKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0ZGF0YS5lbnRyaWVzLm1hcCgoaXRlbSkgPT4gdGhpcy5hZGFwdGVyLmFkYXB0SW4oaXRlbSwgdGhpcy5maWVsZHMpKTtcclxuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0dGhyb3cgZXJyO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy5vbkxvYWRpbmcuZW1pdChmYWxzZSk7XHJcblx0XHRcdFx0dGhpcy5vbkxvYWQuZW1pdChyZXMpO1xyXG5cdFx0XHRcdGlmICghdGhpcy5pbml0aWFsaXplZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5vbkluaXRpYWxpemUuZW1pdChyZXMpO1xyXG5cdFx0XHRcdFx0dGhpcy5pbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlcy5lbnRyaWVzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHRcdGlmIChlbGVtZW50LnByb3BlcnRpZXMgJiYgZWxlbWVudC5wcm9wZXJ0aWVzPy5jcmVhdG9yICYmIGVsZW1lbnQucHJvcGVydGllcy5jcmVhdG9yPy5wcm9wZXJ0aWVzKSB7XHJcblx0XHRcdFx0XHRcdGVsZW1lbnQucHJvcGVydGllc1snY3JlYXRvckZ1bGxPYmplY3QnXSA9IHsgLi4uZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3IgfTtcclxuXHRcdFx0XHRcdFx0ZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3IgPVxyXG5cdFx0XHRcdFx0XHRcdGVsZW1lbnQucHJvcGVydGllcy5jcmVhdG9yPy5wcm9wZXJ0aWVzPy5maXJzdE5hbWUgK1xyXG5cdFx0XHRcdFx0XHRcdCcgJyArXHJcblx0XHRcdFx0XHRcdFx0ZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3I/LnByb3BlcnRpZXM/Lmxhc3ROYW1lO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQucHJvcGVydGllcyAmJiBlbGVtZW50LnByb3BlcnRpZXM/LmFzc2lnbmVlKSB7XHJcblx0XHRcdFx0XHRcdGVsZW1lbnQucHJvcGVydGllcy5hc3NpZ25lZSA9IGVsZW1lbnQucHJvcGVydGllcz8uYXNzaWduZWUuZnVsbE5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50b3RhbFJlY29yZHMgPSByZXMucmVzdWx0c0NvdW50O1xyXG5cdFx0XHRcdHRoaXMucm93cyA9IHJlcy5lbnRyaWVzO1xyXG5cdFx0XHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHQvLyBlbWl0IGRhdGEgdG8gb3V0c2lkZSBpbiBjYXNlIG9mIHNlYXJjaCBwYWdlIGZvciB0aGUgZmlyc3QgdGltZSBvbmx5IHRvIHByZXZlbnQgcmVmcmVzaGluZyBhZ2dyZWdhdGlvbiB3aXRoIGV2ZXJ5IHBhZ2UgY2hhbmdlXHJcblx0XHRcdFx0Ly8gYW5kIGZvciBhbnkgb3RoZXIgcGFnZSB0eXBlIGVtaXQgZGF0YSBkaXJlY3RseSBpbiBhbGwgcGFnZSBudW1iZXJzXHJcblx0XHRcdFx0aWYgKCh0aGlzLmlzU2VhcmNoUGFnZSAmJiB0aGlzLnBhZ2VOdW0gPT09IDEpIHx8ICF0aGlzLmlzU2VhcmNoUGFnZSkgdGhpcy5vbkdldHRpbmdEYXRhLmVtaXQocmVzKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCB3aGVuIGNsaWNraW5nIG9uIHNpbmdsZSByb3dcclxuXHRyb3dEZXRhaWxzKGV2ZW50KSB7XHJcblx0XHR0aGlzLm9uUm93U2VsZWN0ZWQuZW1pdChldmVudCk7XHJcblx0fVxyXG5cclxuXHRpbmRleERldGFpbHMoZXZlbnQpIHtcclxuXHRcdHRoaXMub25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0Ly9mdW5jdGlvbiB0byBoYW5kbGUgYWxsIG9wZXJhdGlvbnMgb24gc2luZ2xlIHJvdyAoZGVsZXRlICwgZWRpdCAsIC4uLilcclxuXHRwZXJmb3JtQWN0aW9uKGFjdGlvbikge1xyXG5cdFx0dGhpcy5hY3Rpb25PblJvdy5lbWl0KGFjdGlvbik7XHJcblx0fVxyXG5cclxuXHQvLyBoYW5kbGUgc29ydGluZyBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZVxyXG5cdG9uU29ydChzb3J0T2JqZWN0KSB7XHJcblx0XHR0aGlzLnNvcnRpbmdCeSA9IHNvcnRPYmplY3Q7XHJcblx0XHR0aGlzLnNvcnRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5nZXREYXRhKHt9LCB0aGlzLnNraXBBZ2dyZWdhdGlvbiA9PT0gJ29uUGFnZUNoYW5nZScgPyB7IHNraXBBZ2dyZWdhdGVzOiAndHJ1ZScgfSA6IHt9KTtcclxuXHR9XHJcblxyXG5cdG9uTXVsdGlSb3dTZWxlY3RWYWx1ZShldmVudCkge1xyXG5cdFx0dGhpcy5vbk11bHRpUm93U2VsZWN0ZWQuZW1pdChldmVudCk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgcGFnaW5hdGlvbkNoYW5nZShldmVudCkge1xyXG5cdFx0dGhpcy5fcGFnZU51bWJlciA9IGV2ZW50O1xyXG5cdFx0dGhpcy5vblBhZ2VDaGFuZ2UuZW1pdChldmVudCk7XHJcblx0XHR0aGlzLm9uUGFnZS5lbWl0KHtcclxuXHRcdFx0cGFnZUluZGV4OiB0aGlzLl9wYWdlTnVtYmVyLFxyXG5cdFx0XHRwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSxcclxuXHRcdFx0bGVuZ3RoOiB0aGlzLnRvdGFsUmVjb3Jkc1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmdldERhdGEoe30sIHRoaXMuc2tpcEFnZ3JlZ2F0aW9uID09PSAnb25QYWdlQ2hhbmdlJyA/IHsgc2tpcEFnZ3JlZ2F0ZXM6ICd0cnVlJyB9IDoge30pO1xyXG5cdH1cclxuXHJcblx0b25DaGFuZ2VQYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcblx0XHR0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcblx0XHR0aGlzLl9yZXNldFBhZ2VOdW1iZXIoKTtcclxuXHRcdHRoaXMuZ2V0RGF0YSh7fSwgdGhpcy5za2lwQWdncmVnYXRpb24gPT09ICdvblBhZ2VDaGFuZ2UnID8geyBza2lwQWdncmVnYXRlczogJ3RydWUnIH0gOiB7fSk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ3cmFwcGluZyB0YWJsZS13cmFwcGluZ1wiPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xlZ2FjeU1vZGVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXBvc2l0aW9uXCI+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dzLmxlbmd0aFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlXCI+PC9uZy1jb250YWluZXI+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcblx0XHRcdDxjdHMtc3Bpbm5lcj48L2N0cy1zcGlubmVyPlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXBvc2l0aW9uXCIgKm5nSWY9XCIhaXNMZWdhY3lNb2RlXCI+XHJcblx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlXCI+PC9uZy1jb250YWluZXI+XHJcblx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdCpuZ0lmPVwiIWluaXRpYWxpemVkXCJcclxuXHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwic2tlbGV0b25cIlxyXG5cdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IDEwIH1cIlxyXG5cdFx0PjwvbmctY29udGFpbmVyPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2XHJcblx0XHRjbGFzcz1cInBhZ2luYXRpb24taW5lci13cmFwZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG15LTNcIlxyXG5cdFx0W25nQ2xhc3NdPVwieyByZWxhdGl2ZTogcGFnZVNpemVzPy5sZW5ndGggfVwiXHJcblx0XHQqbmdJZj1cInJvd3MubGVuZ3RoXCJcclxuXHQ+XHJcblx0XHQ8Y3RzLXBhZ2luYXRpb25cclxuXHRcdFx0W3BhZ2VdPVwicGFnZU51bVwiXHJcblx0XHRcdChjaGFuZ2UpPVwicGFnaW5hdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuXHRcdFx0W3NpemVdPVwicGFnZVNpemVcIlxyXG5cdFx0XHRbY291bnRdPVwidG90YWxSZWNvcmRzXCJcclxuXHRcdD48L2N0cy1wYWdpbmF0aW9uPlxyXG5cdFx0PGRpdiBjbGFzcz1cImFic29sdXRlIG5kZlBhZ2VTaXplcyBmbGV4IGdhcC14LTMgaXRlbXMtY2VudGVyIG10LTJcIj5cclxuXHRcdFx0PG5kZi1wYWdlLXNpemVzLWxpc3RcclxuXHRcdFx0XHQqbmdJZj1cInBhZ2VTaXplcz8ubGVuZ3RoXCJcclxuXHRcdFx0XHRbcGFnZVNpemVzXT1cInBhZ2VTaXplc1wiXHJcblx0XHRcdFx0W3NlbGVjdGVkUGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG5cdFx0XHRcdChvbkNoYW5nZVBhZ2VTaXplKT1cIm9uQ2hhbmdlUGFnZVNpemUoJGV2ZW50KVwiXHJcblx0XHRcdD5cclxuXHRcdFx0PC9uZGYtcGFnZS1zaXplcy1saXN0PlxyXG5cclxuXHRcdFx0PHNwYW4gKm5nSWY9XCJzaG93VG90YWxSZWNvcmRcIj57eyAnVEFCTEUudG90YWxSZWNvcmRzJyB8IHRyYW5zbGF0ZTogeyBjb3VudDogdG90YWxSZWNvcmRzIH0gfX08L3NwYW4+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PG5nLWNvbnRhaW5lclxyXG5cdFx0Km5nSWY9XCJpc0xlZ2FjeU1vZGVcIlxyXG5cdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZSB8fCBsZWdhY3lEZWZhdWx0RW1wdHlTdGF0ZVwiXHJcblx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGxvYWRpbmcsIHJvd3M6IHJvd3MsIGluaXRpYWxpemVkOiBpbml0aWFsaXplZCB9XCJcclxuXHQ+PC9uZy1jb250YWluZXI+XHJcblxyXG5cdDxuZy1jb250YWluZXJcclxuXHRcdCpuZ0lmPVwiIWlzTGVnYWN5TW9kZVwiXHJcblx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVRlbXBsYXRlIHx8IGRlZmF1bHRFbXB0eVN0YXRlXCJcclxuXHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbG9hZGluZywgcm93czogcm93cywgaW5pdGlhbGl6ZWQ6IGluaXRpYWxpemVkIH1cIlxyXG5cdD48L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYmxlPlxyXG5cdDxjdHMtdGFibGVcclxuXHRcdFtyb3dzXT1cInJvd3NcIlxyXG5cdFx0W2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcblx0XHRbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNcIlxyXG5cdFx0W3Jvd0N1cnNvcl09XCJyb3dDdXJzb3JcIlxyXG5cdFx0W2Z1bGxXaWR0aF09XCJmdWxsV2lkdGhcIlxyXG5cdFx0W2VudGl0eVR5cGVdPVwiZW50aXR5VHlwZVwiXHJcblx0XHRbcHJlZml4XT1cInByZWZpeFwiXHJcblx0XHRbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcblx0XHRbdGFibGVNb2RlXT1cInRhYmxlTW9kZVwiXHJcblx0XHRbY29tcG9uZW50TmFtZV09XCJjb21wb25lbnROYW1lXCJcclxuXHRcdFttdWx0aVNlbGVjdFJvd3NdPVwibXVsdGlTZWxlY3RSb3dzXCJcclxuXHRcdFt0YWJsZUFjdGlvbnNdPVwidGFibGVBY3Rpb25zXCJcclxuXHRcdFtzaG93QWN0aW9uc0FzTWVudV09XCJzaG93QWN0aW9uc0FzTWVudVwiXHJcblx0XHRbZGVmdWx0U29ydF09XCJkZWZ1bHRTb3J0XCJcclxuXHRcdFtmb3JtYXRdPVwiZm9ybWF0XCJcclxuXHRcdFtoaWdobGlnaHRTZWxlY3RlZENhcmRdPVwiaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuXHRcdFtjdXN0b21GaXJzdFJvd109XCJjdXN0b21GaXJzdFJvd1wiXHJcblx0XHQob25Sb3dTZWxlY3RlZCk9XCJyb3dEZXRhaWxzKCRldmVudClcIlxyXG5cdFx0KG9uUm93SW5kZXhTZWxlY3RlZCk9XCJpbmRleERldGFpbHMoJGV2ZW50KVwiXHJcblx0XHQob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RWYWx1ZSgkZXZlbnQpXCJcclxuXHRcdChhY3Rpb25PblJvdyk9XCJwZXJmb3JtQWN0aW9uKCRldmVudClcIlxyXG5cdFx0KG9uU29ydGluZyk9XCJvblNvcnQoJGV2ZW50KVwiXHJcblx0PjwvY3RzLXRhYmxlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsZWdhY3lEZWZhdWx0RW1wdHlTdGF0ZT5cclxuXHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIiAqbmdJZj1cIiFsb2FkaW5nICYmIHJvd3MubGVuZ3RoID09PSAwXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwidGV4dFwiPlxyXG5cdFx0XHR7eyAocHJlZml4ID8gcHJlZml4ICsgJ25vRGF0YScgOiAnbm9EYXRhJykgfCB0cmFuc2xhdGUgfX1cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiICpuZ0lmPVwibG9hZGluZyAmJiByb3dzLmxlbmd0aCA9PT0gMFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRleHRcIj5cclxuXHRcdFx0e3sgKHByZWZpeCA/IHByZWZpeCArICdnZXR0aW5nRGF0YScgOiAnZ2V0dGluZ0RhdGEnKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eVN0YXRlPlxyXG5cdDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgcm93cy5sZW5ndGggPT09IDBcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcblx0XHRcdHt7IChwcmVmaXggPyBwcmVmaXggKyAnbm9EYXRhJyA6ICdub0RhdGEnKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0PGRpdiAqbmdJZj1cImxvYWRpbmcgJiYgaW5pdGlhbGl6ZWRcIiBjbGFzcz1cImxvYWRpbmctY29udGVudFwiPlxyXG5cdFx0PG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIxMDBcIj48L21hdC1zcGlubmVyPlxyXG5cdDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNza2VsZXRvbiBsZXQtcm93cz5cclxuXHQ8dGFibGUgY2xhc3M9XCJ3LWZ1bGxcIj5cclxuXHRcdDx0aGVhZCAqbmdJZj1cImZhbHNlXCI+XHJcblx0XHRcdDx0ciBjbGFzcz1cImJvcmRlci1iIGJvcmRlci1ncmVlbi05MDBcIj5cclxuXHRcdFx0XHQ8dGggKm5nSWY9XCJtdWx0aVNlbGVjdFJvd3NcIiBjbGFzcz1cInAtMyBweS00XCIgc3R5bGU9XCJ3aWR0aDogNjBweFwiPlxyXG5cdFx0XHRcdFx0PGFwcC1za2VsZXRvbiB3aWR0aD1cIjYwcHhcIiBoZWlnaHQ9XCIxLjNyZW1cIj48L2FwcC1za2VsZXRvbj5cclxuXHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdDx0aCAqbmdGb3I9XCJsZXQgbnVtIG9mIFtdLmNvbnN0cnVjdG9yKGNvbHVtbnM/Lmxlbmd0aCB8fCA0KTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwicHgtMyBweS00XCI+XHJcblx0XHRcdFx0XHQ8YXBwLXNrZWxldG9uIFtyYW5kb21XaWR0aF09XCJ0cnVlXCIgaGVpZ2h0PVwiMS43cmVtXCI+PC9hcHAtc2tlbGV0b24+XHJcblx0XHRcdFx0PC90aD5cclxuXHRcdFx0PC90cj5cclxuXHRcdDwvdGhlYWQ+XHJcblx0XHQ8dGJvZHk+XHJcblx0XHRcdDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIFtdLmNvbnN0cnVjdG9yKHJvd3MgfHwgMTApOyBsZXQgaW5kZXggPSBpbmRleFwiIGNsYXNzPVwiYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCI+XHJcblx0XHRcdFx0PHRkICpuZ0lmPVwibXVsdGlTZWxlY3RSb3dzXCIgY2xhc3M9XCJwLTMgcHktNFwiIHN0eWxlPVwid2lkdGg6IDUwcHhcIj5cclxuXHRcdFx0XHRcdDxhcHAtc2tlbGV0b24gd2lkdGg9XCI1MHB4XCIgaGVpZ2h0PVwiMS4zcmVtXCI+PC9hcHAtc2tlbGV0b24+XHJcblx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHQ8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBbXS5jb25zdHJ1Y3Rvcihjb2x1bW5zPy5sZW5ndGggfHwgNCk7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInAtMyBweS00XCI+XHJcblx0XHRcdFx0XHQ8YXBwLXNrZWxldG9uIFtyYW5kb21XaWR0aF09XCJ0cnVlXCIgaGVpZ2h0PVwiMS4zcmVtXCI+PC9hcHAtc2tlbGV0b24+XHJcblx0XHRcdFx0PC90ZD5cclxuXHRcdFx0PC90cj5cclxuXHRcdDwvdGJvZHk+XHJcblx0PC90YWJsZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -73,6 +73,8 @@ export class TableComponent {
73
73
  this.onSorting = new EventEmitter();
74
74
  /** event t emit when selecting multiple row */
75
75
  this.onMultiRowSelected = new EventEmitter();
76
+ /** aray of rows passed from out side the component */
77
+ this._rows = [];
76
78
  /** to define the page in which table is being used */
77
79
  this.entityType = '';
78
80
  /** static path for translation passed from out side according to each page translation path */
@@ -110,6 +112,12 @@ export class TableComponent {
110
112
  this.isArabic = res;
111
113
  });
112
114
  }
115
+ set rows(rows) {
116
+ this._rows = rows;
117
+ }
118
+ get rows() {
119
+ return this._rows;
120
+ }
113
121
  get tableColumns() {
114
122
  return this.tableColumnsSub.getValue();
115
123
  }
@@ -257,4 +265,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
257
265
  }], messages: [{
258
266
  type: Input
259
267
  }] } });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNckQsTUFBTSxVQUFVLEdBQUc7SUFDbEIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLFdBQVcsRUFBRSxhQUFhO0lBQzFCLE1BQU0sRUFBRSxRQUFRO0NBQ1AsQ0FBQztBQUVYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDRztBQU9ILE1BQU0sT0FBTyxjQUFjO0lBeUUxQixZQUNRLFlBQTBCLEVBQ3pCLFNBQTJCLEVBQzNCLFdBQStCO1FBRmhDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQTNFeEMsOENBQThDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3Qyw0REFBNEQ7UUFDbEQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsRCxtREFBbUQ7UUFDekMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFB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QUFDLENBQUM7SUFDckMsQ0FBQzs7NEdBM0tXLGNBQWM7Z0dBQWQsY0FBYyxpM0JDOUQzQix5aXZCQW9nQkE7NEZEdGNhLGNBQWM7a0JBTjFCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUNyQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDckM7bUtBR1UsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVFLElBQUk7c0JBQVosS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE9uSW5pdCxcclxuXHRPdXRwdXQsXHJcblx0U2ltcGxlQ2hhbmdlcyxcclxuXHRWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3VyYXRpb24vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IFRBQkxFX01PREUgPSB7XHJcblx0bGlzdDogJ2xpc3QnLFxyXG5cdGNhcmQ6ICdjYXJkJyxcclxuXHRkeW5hbWljQ2FyZDogJ2R5bmFtaWNDYXJkJyxcclxuXHRjdXN0b206ICdjdXN0b20nXHJcbn0gYXMgY29uc3Q7XHJcblxyXG4vKipcclxuICogdGhpcyBjb21wb25lbnQgaXMgYSBtdWx0aS1wdXJwb3NlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBkdW1iIGRhdGEgdGFibGUgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB0byBzaG93IGFueSBsaXN0IG9mIGRhdGEsXHJcbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSB0YWJsZVxyXG4gKiBhbmQgdGhlIGpzb24gc3RydWN0dXJlIGZvciB0aGUgaW5wdXRzIHBsZWFzZSBjaGVjayBbQ29uZmlndXJhdGlvbiBGaWxlXXtAbGluayAuLi9hZGRpdGlvbmFsLWRvY3VtZW50YXRpb24vY29uZmlnLWZpbGUuaHRtbH1cclxuICogIVtTY3JlZW5zaG90LTFdKC4uL3NjcmVlbnNob3RzL2R5bmFtaWNUYWJsZS5wbmcpXHJcbiAqXHJcbiAqICMjIyByZWxhdGVkIExpbmtzOlxyXG4gKiAtIFtQYWdpbmF0aW9uIENvbXBvbmVudF17QGxpbmsgUGFnaW5hdGlvbkNvbXBvbmVudH1cclxuICogLSBbRHluYW1pYyBUYWJsZV17QGxpbmsgRHluYW1pY1RhYmxlQ29tcG9uZW50fVxyXG4gKiAtIFtDb25maWd1cmF0aW9uIEZpbGVde0BsaW5rIC4uL2FkZGl0aW9uYWwtZG9jdW1lbnRhdGlvbi9jb25maWctZmlsZS5odG1sfVxyXG4gKlxyXG4gKiBAdGl0bGVcclxuICogRGF0YSBUYWJsZVxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiA8Y3RzLXRhYmxlXHJcbiAqICAgICBbcm93c109XCJyb3dzXCJcclxuICogICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gKiAgICAgW3Jlc3BvbnNpdmVDb2x1bW5zXT1cInJlc3BvbnNpdmVDb2x1bW5zXCJcclxuICogICAgIFtyb3dDdXJzb3JdPVwicm93Q3Vyc29yXCJcclxuICogICAgIFtmdWxsV2lkdGhdPVwiZnVsbFdpZHRoXCJcclxuICogICAgIFtlbnRpdHlUeXBlXT1cImVudGl0eVR5cGVcIlxyXG4gKiAgICAgW3ByZWZpeF09XCJwcmVmaXhcIlxyXG4gKiAgICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4gKiAgICAgW3RhYmxlTW9kZV09XCJ0YWJsZU1vZGVcIlxyXG4gKiAgICAgW3RhYmxlQWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxyXG4gKiAgICAgKG9uUm93U2VsZWN0ZWQpPVwicm93RGV0YWlscygkZXZlbnQpXCJcclxuICogICAgIChhY3Rpb25PblJvdyk9XCJwZXJmb3JtQWN0aW9uKCRldmVudClcIlxyXG4gKiAgICAgKG9uU29ydGluZyk9XCJvblNvcnQoJGV2ZW50KVwiXHJcbiAqICA+PC9jdHMtdGFibGU+XHJcbiAqXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2N0cy10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gc2VsZWN0aW5nIHNpbmdsZSByb3cgKi9cclxuXHRAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogZXZlbnQgdG8gZW1pdCB3aGVuIHNlbGVjdGluZyBzaW5nbGUgcm93IHRvIGNhdGNoIGluZGV4Ki9cclxuXHRAT3V0cHV0KCkgb25Sb3dJbmRleFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gc2VsZWN0aW5nIHNpbmdsZSByb3cgSWNvbiAqL1xyXG5cdEBPdXRwdXQoKSBvbkljb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogZXZlbnQgdG8gZW1pdCB3aGVuIHBlcmZvcm0gYWN0aW9uIG9uIHJvdyAoZGVsdGUsIGVkaXQsIC4uLiApICovXHJcblx0QE91dHB1dCgpIGFjdGlvbk9uUm93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0IGVtaXQgd2hlbiBzb3J0aW5nIHRhYmxlICovXHJcblx0QE91dHB1dCgpIG9uU29ydGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogZXZlbnQgdCBlbWl0IHdoZW4gc2VsZWN0aW5nIG11bHRpcGxlIHJvdyAqL1xyXG5cdEBPdXRwdXQoKSBvbk11bHRpUm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGFyYXkgb2Ygcm93cyBwYXNzZWQgZnJvbSBvdXQgc2lkZSB0aGUgY29tcG9uZW50ICovXHJcblx0QElucHV0KCkgcm93cztcclxuXHQvKiogYXJyYXkgb2YgY29sdW1ucyBwYWFzZWQgZnJvbSBvdXQgc2lkZSB0aGUgY29tcG9uZW50ICovXHJcblx0QElucHV0KCkgY29sdW1ucztcclxuXHQvKiogYXJyYXkgb2YgY29sdW1ucyBwYWFzZWQgZnJvbSBvdXQgc2lkZSB0aGUgY29tcG9uZW50IGZvciBzbWFsbGVyIHNjcmVlbnMgKi9cclxuXHRASW5wdXQoKSByZXNwb25zaXZlQ29sdW1ucztcclxuXHQvKiogdG8gZGVmaW5lIHRoZSBwYWdlIGluIHdoaWNoIHRhYmxlIGlzIGJlaW5nIHVzZWQgKi9cclxuXHRASW5wdXQoKSBlbnRpdHlUeXBlOiBzdHJpbmcgPSAnJztcclxuXHQvKiogc3RhdGljICBwYXRoIGZvciB0cmFuc2xhdGlvbiBwYXNzZWQgZnJvbSBvdXQgc2lkZSBhY2NvcmRpbmcgdG8gZWFjaCBwYWdlIHRyYW5zbGF0aW9uIHBhdGggKi9cclxuXHRASW5wdXQoKSBwcmVmaXggPSAnJztcclxuXHQvKiogQGRlcHJlY2F0ZWQgKi9cclxuXHRASW5wdXQoKSBwYWdlQ291bnQ7XHJcblx0LyoqIFRvdGFsIFJlY29yZHNjb3VudCAqL1xyXG5cdEBJbnB1dCgpIHRvdGFsUmVjb3JkcztcclxuXHQvKiogQGRlcHJlY2F0ZWQgKi9cclxuXHRASW5wdXQoKSByb3dDdXJzb3IgPSBmYWxzZTtcclxuXHQvKiogTWF4IGZ1bGwgd2lkdGggaW4gUFggfCBhdXRvICovXHJcblx0QElucHV0KCkgZnVsbFdpZHRoID0gJ2F1dG8nO1xyXG5cdC8qKiBWb2NhYnVsYXJ5IFRyYW5zbGF0aW9uIHByZWZpeCAqL1xyXG5cdEBJbnB1dCgpIHZvY0l0ZW1UcmFuc2xhdGlvblByZWZpeDtcclxuXHJcblx0dGFibGVNb2RlcyA9IFRBQkxFX01PREU7XHJcblxyXG5cdEBJbnB1dCgpIHRhYmxlTW9kZTogc3RyaW5nID0gVEFCTEVfTU9ERS5saXN0O1xyXG5cclxuXHRASW5wdXQoKSBjb21wb25lbnROYW1lOiBzdHJpbmc7XHJcblxyXG5cdC8qKiBhY3Rpb24gdG8gYmUgaW4gY2FyZCBtb2RlICovXHJcblx0QElucHV0KCkgdGFibGVBY3Rpb25zO1xyXG5cdEBJbnB1dCgpIGZvcm1hdCA9ICdNTU1NIGQsIHknO1xyXG5cdEBJbnB1dCgpIGRlZnVsdFNvcnQgPSBudWxsO1xyXG5cdGxhbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHRASW5wdXQoKSBoaWdobGlnaHRTZWxlY3RlZENhcmQgPSBmYWxzZTtcclxuXHJcblx0LyoqIGFsbG93IG11bHRpc2VsZWN0IHJvd3Mgd2l0aCBjaGVja2JveCAqL1xyXG5cdEBJbnB1dCgpIG11bHRpU2VsZWN0Um93cyA9IGZhbHNlO1xyXG5cclxuXHQvKiogdG8gc2hvdyAxc3Qgcm93IHdpdGggY3VzdG9tIHRlbXBsYXRlIGluIHRoZSB0YWJsZSovXHJcblx0QElucHV0KCkgY3VzdG9tRmlyc3RSb3cgPSBmYWxzZTtcclxuXHQvKiogZmxhZ2UgdXNlZCB0byBkaXNhYmxlIGFjdGlvbnMgaWYgdGhlcmUgd2FzIG11bHRpIHNlbGVjdGVkIHJvd3MgKi9cclxuXHJcblx0QElucHV0KCkgc2hvd0FjdGlvbnNBc01lbnUgPSBmYWxzZTsgLy8gZmxhZ2UgdG8gc2hvdyBhY3Rpb24gaW4gbWVudSBvciBzaWRlIGJ5IHNpZGVcclxuXHJcblx0QElucHV0KCkgbWVzc2FnZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IGVtcHR5TWVzc2FnZTogJycgfTtcclxuXHJcblx0ZGlzYWJsZWRBY3Rpb25zID0gZmFsc2U7XHJcblx0aXNBcmFiaWMgPSBmYWxzZTtcclxuXHR0YWJsZVdpZHRoID0gJ2F1dG8nO1xyXG5cdHRhYmxlQ29sdW1uc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xyXG5cdHRhYmxlQ29sdW1ucyQgPSB0aGlzLnRhYmxlQ29sdW1uc1N1Yi5hc09ic2VydmFibGUoKTtcclxuXHJcblx0Z2V0IHRhYmxlQ29sdW1ucygpIHtcclxuXHRcdHJldHVybiB0aGlzLnRhYmxlQ29sdW1uc1N1Yi5nZXRWYWx1ZSgpO1xyXG5cdH1cclxuXHRjdXJyZW50Um93O1xyXG5cdHNlbGVjdGVkID0gW107XHJcblx0cGFnZU51bWJlciA9IDE7XHJcblx0cmVzcG9uc2l2ZVZpZXcgPSBmYWxzZTtcclxuXHRzdGF0dXNJY29ucyA9IHt9OyAvLyBvYmplY3QgdG8gY29udGFpbnMgYWxsIHN0YXR1cyBpY29ucyBpZiBleGlzdFxyXG5cdGRpcmVjdGlvbkljb25zID0ge307IC8vIG9iamVjdCB0byBjb250YWlucyBhbGwgZGlyZWN0aW9uIGljb25zIGlmIGV4aXN0XHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwdWJsaWMgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5mb3JtYXQgPSB0aGlzLmFwcENvbmZpZy5teUNvbmZpZ3VyYXRpb25bJ2RhdGVGb3JtYXRlJ107XHJcblx0XHR0aGlzLnN0YXR1c0ljb25zID0gdGhpcy5hcHBDb25maWcubXlDb25maWd1cmF0aW9uWydzdGF0dXNJY29ucyddO1xyXG5cdFx0dGhpcy5kaXJlY3Rpb25JY29ucyA9IHRoaXMuYXBwQ29uZmlnLm15Q29uZmlndXJhdGlvblsnZGlyZWN0aW9uSWNvbnMnXTtcclxuXHRcdHRoaXMubGFuZ1N1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRpb24uaXNBcmFiaWMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5pc0FyYWJpYyA9IHJlcztcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cdFx0aWYgKGNoYW5nZXMuY29sdW1ucyAmJiAhY2hhbmdlcz8uY29sdW1ucz8uaXNGaXJzdENoYW5nZSgpKSB7XHJcblx0XHRcdHRoaXMudGFibGVDb2x1bW5zU3ViLm5leHQoY2hhbmdlcy5jb2x1bW5zPy5jdXJyZW50VmFsdWUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLm9uUmVzaXplKHdpbmRvdy5pbm5lcldpZHRoKTtcclxuXHR9XHJcblxyXG5cdC8vIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gc2luZ2xlIHJvd1xyXG5cdHJvd0RldGFpbHMoZXZlbnQpIHtcclxuXHRcdGlmIChldmVudC50eXBlICE9PSAnbW91c2VlbnRlcicpIHtcclxuXHRcdFx0aWYgKGV2ZW50LnR5cGUgPT09ICdjbGljaycgJiYgZXZlbnQuY29sdW1uLnByb3AgIT09ICcnKSB7XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50Um93ID0gZXZlbnQucm93O1xyXG5cdFx0XHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KHRoaXMuY3VycmVudFJvdyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0aWNvblNlbGVjdGVkKGV2ZW50OiBNb3VzZUV2ZW50LCByb3cpIHtcclxuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0dGhpcy5vbkljb25TZWxlY3RlZC5lbWl0KHJvdyk7XHJcblx0fVxyXG5cclxuXHQvL2Z1bmN0aW9uIHRvIGhhbmRsZSBhbGwgb3BlcmF0aW9ucyBvbiBzaW5nbGUgcm93IChkZWxldGUgLCBlZGl0ICwgLi4uKVxyXG5cdHBlcmZvcm1BY3Rpb24oc2luZ2xlUm93LCBhY3Rpb25UeXBlKSB7XHJcblx0XHRpZiAoIXRoaXMuZGlzYWJsZWRBY3Rpb25zKVxyXG5cdFx0XHR0aGlzLmFjdGlvbk9uUm93LmVtaXQoe1xyXG5cdFx0XHRcdHR5cGU6IGFjdGlvblR5cGUsXHJcblx0XHRcdFx0cm93OiBzaW5nbGVSb3dcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBoYW5kbGUgY2hlY2tib3ggaWYgdGFibGUgaGFzIG9uZXNcclxuXHRvblNlbGVjdChldmVudCkge1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ29uIHNlbGVjdCByb3cgY2xpY2snKTtcclxuXHRcdHRoaXMub25NdWx0aVJvd1NlbGVjdGVkLmVtaXQoZXZlbnQuc2VsZWN0ZWQpO1xyXG5cdFx0aWYgKHRoaXMubXVsdGlTZWxlY3RSb3dzICYmIGV2ZW50LnNlbGVjdGVkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5kaXNhYmxlZEFjdGlvbnMgPSB0cnVlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5kaXNhYmxlZEFjdGlvbnMgPSBmYWxzZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIGhhbmRsZSBzb3J0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlXHJcblx0b25Tb3J0KGV2ZW50KSB7XHJcblx0XHRsZXQgc29ydCA9IHtcclxuXHRcdFx0c29ydEJ5OiBldmVudC5jb2x1bW4uaGVhZGVyQ2xhc3MsXHJcblx0XHRcdHNvcnRPcmRlcjogZXZlbnQubmV3VmFsdWVcclxuXHRcdH07XHJcblx0XHR0aGlzLm9uU29ydGluZy5lbWl0KHNvcnQpO1xyXG5cdH1cclxuXHJcblx0YXNzaWduVGFibGVDb2x1bW5zKGV2ZW50KSB7XHJcblx0XHR0aGlzLm9uUmVzaXplKGV2ZW50LnRhcmdldC5pbm5lcldpZHRoKTtcclxuXHR9XHJcblxyXG5cdG9uUmVzaXplKHdpZHRoKSB7XHJcblx0XHRpZiAod2lkdGggPiAxNDAwKSB7XHJcblx0XHRcdHRoaXMudGFibGVXaWR0aCA9ICdhdXRvJztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMudGFibGVXaWR0aCA9IHRoaXMuZnVsbFdpZHRoO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHdpZHRoIDwgNzY4KSB7XHJcblx0XHRcdHRoaXMudGFibGVDb2x1bW5zU3ViLm5leHQodGhpcy5yZXNwb25zaXZlQ29sdW1ucyk7XHJcblx0XHRcdHRoaXMucmVzcG9uc2l2ZVZpZXcgPSB0cnVlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5yZXNwb25zaXZlVmlldyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0dGhpcy50YWJsZUNvbHVtbnNTdWIubmV4dCh0aGlzLmNvbHVtbnMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y2FyZFNlbGVjdGVkKGNhcmQpIHtcclxuXHRcdGlmICh0aGlzLmhpZ2hsaWdodFNlbGVjdGVkQ2FyZCkge1xyXG5cdFx0XHR0aGlzLnJvd3MubWFwKChyb3cpID0+IHtcclxuXHRcdFx0XHRyb3dbJ2lzU2VsZWN0ZWQnXSA9IGZhbHNlO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0Y2FyZFsnaXNTZWxlY3RlZCddID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KGNhcmQpO1xyXG5cdH1cclxuXHJcblx0Y2FyZEZvY3VzZWQoaW5kZXgpIHtcclxuXHRcdHRoaXMub25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoaW5kZXgpO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2XHJcblx0Y2xhc3M9XCJpbmVyLXRhYmxlLWNvbnRhaW5lclwiXHJcblx0W3N0eWxlXT1cIid3aWR0aDonICsgdGFibGVXaWR0aFwiXHJcblx0Km5nSWY9XCJ0YWJsZU1vZGUgPT09IHRhYmxlTW9kZXMubGlzdCAmJiAhcmVzcG9uc2l2ZVZpZXdcIlxyXG4+XHJcblx0PG5neC1kYXRhdGFibGVcclxuXHRcdFtuZ0NsYXNzXT1cInsgb3ZlcmZsb3dWaXNpYmxlOiBjdXN0b21GaXJzdFJvdyB9XCJcclxuXHRcdGNsYXNzPVwibGFyZ2UtdGFibGVcIlxyXG5cdFx0W3Jvd3NdPVwicm93c1wiXHJcblx0XHRbc3VtbWFyeVJvd109XCJjdXN0b21GaXJzdFJvd1wiXHJcblx0XHRbY29sdW1uTW9kZV09XCInZm9yY2UnXCJcclxuXHRcdFtleHRlcm5hbFNvcnRpbmddPVwidHJ1ZVwiXHJcblx0XHQoYWN0aXZhdGUpPVwicm93RGV0YWlscygkZXZlbnQpXCJcclxuXHRcdChzZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXHJcblx0XHQoc29ydCk9XCJvblNvcnQoJGV2ZW50KVwiXHJcblx0XHQod2luZG93OnJlc2l6ZSk9XCJhc3NpZ25UYWJsZUNvbHVtbnMoJGV2ZW50KVwiXHJcblx0XHRbcm93SGVpZ2h0XT1cIidhdXRvJ1wiXHJcblx0XHRbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxyXG5cdFx0W3NlbGVjdGlvblR5cGVdPVwibXVsdGlTZWxlY3RSb3dzID8gJ2NoZWNrYm94JyA6ICdzaW5nbGUnXCJcclxuXHRcdFtzb3J0c109XCJbeyBwcm9wOiBkZWZ1bHRTb3J0Py5uYW1lLCBkaXI6IGRlZnVsdFNvcnQ/LmRpciB9XVwiXHJcblx0XHRbbWVzc2FnZXNdPVwibWVzc2FnZXNcIlxyXG5cdD5cclxuXHRcdDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxyXG5cdFx0XHQqbmdJZj1cIm11bHRpU2VsZWN0Um93c1wiXHJcblx0XHRcdFt3aWR0aF09XCIzMFwiXHJcblx0XHRcdFtzb3J0YWJsZV09XCJmYWxzZVwiXHJcblx0XHRcdFtwcm9wXT1cIicnXCJcclxuXHRcdFx0W2NhbkF1dG9SZXNpemVdPVwiZmFsc2VcIlxyXG5cdFx0XHRbZHJhZ2dhYmxlXT1cImZhbHNlXCJcclxuXHRcdFx0W3Jlc2l6ZWFibGVdPVwiZmFsc2VcIlxyXG5cdFx0PlxyXG5cdFx0XHQ8bmctdGVtcGxhdGVcclxuXHRcdFx0XHRuZ3gtZGF0YXRhYmxlLWhlYWRlci10ZW1wbGF0ZVxyXG5cdFx0XHRcdGxldC12YWx1ZT1cInZhbHVlXCJcclxuXHRcdFx0XHRsZXQtYWxsUm93c1NlbGVjdGVkPVwiYWxsUm93c1NlbGVjdGVkXCJcclxuXHRcdFx0XHRsZXQtc2VsZWN0Rm49XCJzZWxlY3RGblwiXHJcblx0XHRcdD5cclxuXHRcdFx0XHQ8IS0tIDxpbnB1dCBjbGFzcz1cImNoZWNrYm94LWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiYWxsUm93c1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJzZWxlY3RGbighYWxsUm93c1NlbGVjdGVkKVwiIC8+IC0tPlxyXG5cdFx0XHRcdDxtYXQtY2hlY2tib3ggY29sb3I9XCJwcmltYXJ5XCIgW2NoZWNrZWRdPVwiYWxsUm93c1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJzZWxlY3RGbighYWxsUm93c1NlbGVjdGVkKVwiPiA8L21hdC1jaGVja2JveD5cclxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0PG5nLXRlbXBsYXRlXHJcblx0XHRcdFx0bmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlXHJcblx0XHRcdFx0bGV0LXZhbHVlPVwidmFsdWVcIlxyXG5cdFx0XHRcdGxldC1pc1NlbGVjdGVkPVwiaXNTZWxlY3RlZFwiXHJcblx0XHRcdFx0bGV0LW9uQ2hlY2tib3hDaGFuZ2VGbj1cIm9uQ2hlY2tib3hDaGFuZ2VGblwiXHJcblx0XHRcdD5cclxuXHRcdFx0XHQ8IS0tIDxpbnB1dCBjbGFzcz1cImNoZWNrYm94LWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZFwiIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZUZuKCRldmVudClcIiAvPiAtLT5cclxuXHRcdFx0XHQ8bWF0LWNoZWNrYm94IGNvbG9yPVwicHJpbWFyeVwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2VGbighYWxsUm93c1NlbGVjdGVkKVwiPlxyXG5cdFx0XHRcdDwvbWF0LWNoZWNrYm94PlxyXG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0PC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuXHRcdDwhLS0gfCB0cmFuc2xhdGUgLS0+XHJcblx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zJCB8IGFzeW5jOyBsZXQgaSA9IGluZGV4XCI+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKnBlcm1pc3Npb249XCJ7IG5hbWU6IGNvbHVtbi5wZXJtaXNzaW9uIH1cIj5cclxuXHRcdFx0XHQ8bmd4LWRhdGF0YWJsZS1jb2x1bW5cclxuXHRcdFx0XHRcdCpuZ0lmPVwiY29sdW1uLmRpc3BsYXlcIlxyXG5cdFx0XHRcdFx0W3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXHJcblx0XHRcdFx0XHRbbmFtZV09XCJwcmVmaXggKyBjb2x1bW4ubmFtZSB8IHRyYW5zbGF0ZVwiXHJcblx0XHRcdFx0XHRbcHJvcF09XCJjb2x1bW4ucHJvcFwiXHJcblx0XHRcdFx0XHRbcmVzaXplYWJsZV09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRbZHJhZ2dhYmxlXT1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFttYXhXaWR0aF09XCJjb2x1bW4/LnNpemVcIlxyXG5cdFx0XHRcdFx0W2hlYWRlckNsYXNzXT1cImNvbHVtbi5oZWFkZXJDbGFzcyA/IGNvbHVtbi5oZWFkZXJDbGFzcyA6ICcnXCJcclxuXHRcdFx0XHRcdFtzdW1tYXJ5VGVtcGxhdGVdPVwiY3VzdG9tRmlyc3RSb3cgPyBjdXN0b21Sb3dUZW1wbGF0ZSA6IG51bGxcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtaW5kZXg9XCJpbmRleFwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndGV4dCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIiAqbmdJZj1cIiFjb2x1bW4ud2l0aFRvb2x0aXBcIj5cclxuXHRcdFx0XHRcdFx0XHRcdHt7IHZhbHVlID8gdmFsdWUgOiAnLS0nIH19XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCIgbWF0VG9vbHRpcD1cInt7IHZhbHVlID8gdmFsdWUgOiAnLS0nIH19XCIgKm5nSWY9XCJjb2x1bW4ud2l0aFRvb2x0aXBcIj5cclxuXHRcdFx0XHRcdFx0XHRcdHt7IHZhbHVlID8gdmFsdWUgOiAnLS0nIH19XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndm9jYWJ1bGFyeSdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxjdHMtZHJvcGRvd24tdmlld2VyIFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIFtkcm9wZG93bklkXT1cImNvbHVtbi52b2NhYnVsYXJ5SWRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvY3RzLWRyb3Bkb3duLXZpZXdlcj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdWb2NDZWxsJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZWxsLXRleHQtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0e3sgKHZhbHVlID8gY29sdW1uLnZvY2FidWxhcnlJZCArICcuJyArIHZhbHVlIDogJy0tJykgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdWb2NJdGVtJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZWxsLXRleHQtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0e3sgdm9jSXRlbVRyYW5zbGF0aW9uUHJlZml4ICsgdmFsdWUgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RlcGFydG1lbnQnXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y3RzLWRlcGFydG1lbnQtdmlld2VyIFtub1N0eWxlXT1cInRydWVcIiBbdmFsdWVdPVwidmFsdWVcIj4gPC9jdHMtZGVwYXJ0bWVudC12aWV3ZXI+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnc3RhdHVzJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJzdGF0dXMtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ2YWx1ZSB7eyB2YWx1ZSB9fVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cInN0YXR1c0ljb25zICYmIHN0YXR1c0ljb25zICE9PSB7fVwiIGNsYXNzPVwic3RhdHVzLWljb24ge3sgc3RhdHVzSWNvbnNbdmFsdWVdIH19XCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR7eyAnU1RBVFMuJyArIHZhbHVlIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncm9sZSdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdHt7ICdyb2xlLicgKyAodmFsdWUgPyB2YWx1ZSA6ICctLScpIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnYWN0aW9ucycgJiYgcm93cy5sZW5ndGggIT09IDBcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJkaXNhYmxlZEFjdGlvbnMgPyAnZGlzYWJsZWQtYWN0aW9ucy13cmFwcGVyJyA6ICdhY3Rpb25zLXdyYXBwZXInXCJcclxuXHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiIXNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIDxzcGFuIGNsYXNzPVwiYmkgYmktdHJhc2ggZGVsZXRlLWljb25cIiAoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3cgLCAnZGVsZXRlJylcIj48L3NwYW4+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJiaSBiaS1wZW5jaWwtc3F1YXJlIGVkaXQtaWNvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdG1hdFRvb2x0aXA9XCJ7eyAnVVBEQVRFJyB8IHRyYW5zbGF0ZSB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2VkaXQnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZW50aXR5VHlwZSA9PT0gJ3ZvYy10YWJsZSdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiYmkgYmktdHJhc2hcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXRUb29sdGlwPVwie3sgJ2RlbGV0ZScgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdkZWxldGUnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZW50aXR5VHlwZSA9PT0gJ3ZvYy10YWJsZScgfHwgZW50aXR5VHlwZSA9PT0gJ2RlcGFydG1lbnQnIHx8IGVudGl0eVR5cGUgPT09ICdzaWduZXJzJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHQ+PC9pPlxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiYmkgYmktcGx1cy1zcXVhcmVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXRUb29sdGlwPVwie3sgJ1VTRVJfTUFOR01FTlQuYWRkVG9EZXBhcnRtZW50JyB8IHRyYW5zbGF0ZSB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2RlbGV0ZScpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJlbnRpdHlUeXBlID09PSAndXNlcnMnICYmIHJvdy5pc0luaXRpYWxcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHJcblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbHVtbi5hY3Rpb25zXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBhY3Rpb24ucGVybWlzc2lvbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInt7IGFjdGlvbi5pY29uIH19XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtYXRUb29sdGlwPVwie3sgYWN0aW9uLnRvb2x0aXAgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgYWN0aW9uLmFjdGlvbk5hbWUpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIDxpXHJcbiAgICAgICAgICAgICAgICAqcGVybWlzc2lvbj1cInsgbmFtZTogJ3JlZ2lzdGVyQ29ycmVzcG9uZGFuY2UnLCBlbnRpdHk6IHJvdyB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmkgYmktYm94LWFycm93LWluLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnTElTVElORy5SRUdJU1RFUicgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCAncmVnaXN0ZXInKVwiXHJcbiAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKnBlcm1pc3Npb249XCJ7IG5hbWU6ICdzZW5kQ29ycmVzcG9uZGFuY2UnLCBlbnRpdHk6IHJvdyB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmkgYmktZW52ZWxvcGVcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdMSVNUSU5HLlNFTkQnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ3NlbmQnKVwiXHJcbiAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKnBlcm1pc3Npb249XCJ7IG5hbWU6ICdjbG9zZUNvcnJlc3BvbmRhbmNlJywgZW50aXR5OiByb3cgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLXgtY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnTElTVElORy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCAnY2xvc2UnKVwiXHJcbiAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgKnBlcm1pc3Npb249XCJ7IG5hbWU6ICdhcmNoaXZlQ29ycmVzcG9uZGFuY2UnLCBlbnRpdHk6IHJvdyB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmkgYmktZm9sZGVyLXN5bWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdMSVNUSU5HLkFSQ0hJVkUnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2FyY2hpdmUnKVwiXHJcbiAgICAgICAgICAgICAgPjwvaT4gLS0+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwiZGlzYWJsZWRBY3Rpb25zID8gJ2Rpc2FibGVkLWFjdGlvbnMtd3JhcHBlcicgOiAnYWN0aW9ucy13cmFwcGVyJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cInNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLW1lbnUtdHJpZ2dlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkQWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXRocmVlLWRvdHMtdmVydGljYWxcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImRhdGF0YWJsZS1hY3Rpb25zLW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2VkaXQnKVwiICpuZ0lmPVwiZW50aXR5VHlwZSA9PT0gJ3ZvYy10YWJsZSdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXBlbmNpbC1zcXVhcmUgZWRpdC1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiYWN0aW9uLXRleHRcIj57eyAnVVBEQVRFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtYXQtbWVudS1pdGVtXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCAnZGVsZXRlJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZW50aXR5VHlwZSA9PT0gJ3ZvYy10YWJsZScgfHwgZW50aXR5VHlwZSA9PT0gJ2RlcGFydG1lbnQnIHx8IGVudGl0eVR5cGUgPT09ICdzaWduZXJzJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXRyYXNoXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiYWN0aW9uLXRleHRcIj57eyAnZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtYXQtbWVudS1pdGVtXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCAnZGVsZXRlJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZW50aXR5VHlwZSA9PT0gJ3VzZXJzJyAmJiByb3cuaXNJbml0aWFsXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiYmkgYmktcGx1cy1zcXVhcmVcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJhY3Rpb24tdGV4dFwiPnt7ICdVU0VSX01BTkdNRU5ULmFkZFRvRGVwYXJ0bWVudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bmctY29udHRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbHVtbi5hY3Rpb25zXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCBhY3Rpb24uYWN0aW9uTmFtZSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IGFjdGlvbi5wZXJtaXNzaW9uLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwie3sgYWN0aW9uLmljb24gfX1cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvbi10ZXh0XCI+e3sgYWN0aW9uLnRvb2x0aXAgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvbmctY29udHRhaW5lcj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvbWF0LW1lbnU+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZGF0ZSdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxjdHMtZGF0ZS12aWV3ZXIgW3dpdGhPdXRMYWJlbF09XCJ0cnVlXCIgW3ZhbHVlXT1cInZhbHVlXCI+PC9jdHMtZGF0ZS12aWV3ZXI+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdjdXN0b20nXCI+XHJcblx0XHRcdFx0XHRcdFx0PGN0cy1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uLnRlbXBsYXRlXCIgW2NvbHVtbl09XCJjb2x1bW5cIiBbY29udGV4dF09XCJyb3dcIj4gPC9jdHMtZHluYW1pYy1jb2x1bW4+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnZGlyZWN0aW9uJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgKGNsaWNrKT1cImljb25TZWxlY3RlZCgkZXZlbnQsIHJvdylcIiBjbGFzcz1cInN0YXR1cy13cmFwcGVyIHt7IHZhbHVlIH19IHt7IHJvdy5zdGF0ZSB9fVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpbmVyLXN0YXR1cy13cmFwcGVyXCIgbWF0VG9vbHRpcD1cInt7ICdTVEFUUy4nICsgcm93LnN0YXRlIHwgdHJhbnNsYXRlIH19XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKnBlcm1pc3Npb249XCJ7IG5hbWU6ICdpc0Zhdm9yaXRlJywgZW50aXR5OiByb3cgfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZmF2LWljb24taW5kaWNhdG9yIGJpIGJpLXN0YXItZmlsbFwiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBkaXJlY3Rpb25JY29ucyA/IGRpcmVjdGlvbkljb25zWydpbmNvbWluZyddIDogJ2JpIGJpLWJveC1hcnJvdy1kb3duJyB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJyb3cudHlwZSA9PT0gJ0luY29taW5nQ29ycmVzcG9uZGVuY2UnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInt7IGRpcmVjdGlvbkljb25zID8gZGlyZWN0aW9uSWNvbnNbJ291dGdvaW5nJ10gOiAnYmkgYmktYm94LWFycm93LXVwIG91dGdvaW5nJyB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJyb3cudHlwZSA9PT0gJ091dGdvaW5nQ29ycmVzcG9uZGVuY2UnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInt7IGRpcmVjdGlvbkljb25zID8gZGlyZWN0aW9uSWNvbnNbJ2ludGVybmFsJ10gOiAnYmkgYmktYm94LWFycm93LXJpZ2h0IGludGVybmFsJyB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJyb3cudHlwZSA9PT0gJ0ludGVybmFsQ29ycmVzcG9uZGVuY2UnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0gPHNwYW4gY2xhc3M9XCJ2YWx1ZSB7eyB2YWx1ZSB9fVwiPnt7IFwiU1RBVFMuXCIgKyB2YWx1ZSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj4gLS0+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAjY3VzdG9tUm93VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG92ZXJmbG93LXZpc2libGVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8Y3RzLWR5bmFtaWMtY29sdW1uIFtpZF09XCJjb2x1bW4uY3VzdG9tMXN0Q2VsbFRlbXBsYXRlXCIgW2NvbHVtbl09XCJjb2x1bW5cIiBbY29udGV4dF09XCJyb3dcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L2N0cy1keW5hbWljLWNvbHVtbj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0PC9uZ3gtZGF0YXRhYmxlPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJyZXNwb25zaXZlVmlldyAmJiB0YWJsZU1vZGUgIT09IHRhYmxlTW9kZXMuY2FyZFwiICh3aW5kb3c6cmVzaXplKT1cImFzc2lnblRhYmxlQ29sdW1ucygkZXZlbnQpXCI+XHJcblx0PGRpdiBjbGFzcz1cImR5bmFtaWMtY2FyZHMtY29udGFpbmVyXCI+XHJcblx0XHQ8ZGl2XHJcblx0XHRcdGNsYXNzPVwic2luZ2xlLWNhcmRcIlxyXG5cdFx0XHRbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1jYXJkJzogaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkICYmIHJvdz8uaXNTZWxlY3RlZCB9XCJcclxuXHRcdFx0Km5nRm9yPVwibGV0IHJvdyBvZiByb3dzXCJcclxuXHRcdD5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm1lbW8tdGl0bGVcIj5cclxuXHRcdFx0XHQ8c3Bhbj5cclxuXHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzLnJlZmVyZW5jZU51bWJlciB9fVxyXG5cdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvbi13cmFwXCI+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvblwiICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFibGVBY3Rpb25zXCI+XHJcblx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBhY3Rpb24ucGVybWlzc2lvbixcclxuXHRcdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cInt7IGFjdGlvbi5pY29uIH19XCJcclxuXHRcdFx0XHRcdFx0XHRtYXRUb29sdGlwPVwie3sgYWN0aW9uLnRvb2x0aXAgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgYWN0aW9uLmFjdGlvbk5hbWUpXCJcclxuXHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2ICpuZ0lmPVwidGFibGVDb2x1bW5zLmxlbmd0aCA+IDFcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWVtby1ib2R5XCIgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHRhYmxlQ29sdW1ucyQgfCBhc3luY1wiIChjbGljayk9XCJjYXJkU2VsZWN0ZWQocm93KVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImtleVwiPnt7IHByZWZpeCArIHByb3BlcnR5LmtleSB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInZhbHVlXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAndGV4dCdcIj5cclxuXHRcdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfX1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnb3duZXInXCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgcm93LnByb3BlcnRpZXNbcHJvcGVydHkub3duZXJdPy5bcHJvcGVydHkudmFsdWVdIH19XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dFwiICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2RhdGUnXCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgcm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdIHwgbG9jYWxpemVkRGF0ZTogZm9ybWF0IDogKGlzQXJhYmljID8gJ2FyLUFSJyA6ICdlbi1VUycpIH19XHJcblx0XHRcdFx0XHRcdFx0PCEtLSA8Y3RzLWRhdGUtdmlld2VyIFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiIFt2YWx1ZV09XCJyb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV1cIiA+PC9jdHMtZGF0ZS12aWV3ZXI+IC0tPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdzdGF0dXMnXCIgY2xhc3M9XCJ2YWx1ZSB7eyByb3dbcHJvcGVydHkudmFsdWVdIH19XCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgJ1NUQVRTLicgKyByb3dbcHJvcGVydHkudmFsdWVdIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2RlcGFydG1lbnQnXCI+XHJcblx0XHRcdFx0XHRcdFx0PGN0cy1kZXBhcnRtZW50LXZpZXdlciBbbm9TdHlsZV09XCJ0cnVlXCIgW3ZhbHVlXT1cInJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXVwiPiA8L2N0cy1kZXBhcnRtZW50LXZpZXdlcj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAndm9jYWJ1bGFyeSdcIiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0PGN0cy1kcm9wZG93bi12aWV3ZXJcclxuXHRcdFx0XHRcdFx0XHRcdFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbdmFsdWVdPVwicm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtkcm9wZG93bklkXT1cInByb3BlcnR5LnZvY2FidWxhcnlJZFwiXHJcblx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDwvY3RzLWRyb3Bkb3duLXZpZXdlcj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHQqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdkaXJlY3Rpb24nXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiaWNvblNlbGVjdGVkKCRldmVudCwgcm93KVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzdGF0dXMtd3JhcHBlciB7eyBwcm9wZXJ0eS52YWx1ZSB9fSB7eyByb3cuc3RhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpbmVyLXN0YXR1cy13cmFwcGVyXCIgbWF0VG9vbHRpcD1cInt7ICdTVEFUUy4nICsgcm93LnN0YXRlIHwgdHJhbnNsYXRlIH19XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnaXNGYXZvcml0ZScsIGVudGl0eTogcm93IH1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmYXYtaWNvbi1pbmRpY2F0b3IgYmkgYmktc3Rhci1maWxsXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLWJveC1hcnJvdy1kb3duXCIgKm5nSWY9XCJyb3cudHlwZSA9PT0gJ0luY29taW5nQ29ycmVzcG9uZGVuY2UnXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS1ib3gtYXJyb3ctdXAgb3V0Z29pbmdcIiAqbmdJZj1cInJvdy50eXBlID09PSAnT3V0Z29pbmdDb3JyZXNwb25kZW5jZSdcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLWJveC1hcnJvdy1yaWdodCBpbnRlcm5hbFwiICpuZ0lmPVwicm93LnR5cGUgPT09ICdJbnRlcm5hbENvcnJlc3BvbmRlbmNlJ1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2N1c3RvbSdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8Y3RzLWR5bmFtaWMtY29sdW1uIFtpZF09XCJwcm9wZXJ0eS50ZW1wbGF0ZVwiIFtjb2x1bW5dPVwicHJvcGVydHlcIiBbY29udGV4dF09XCJyb3dcIj4gPC9jdHMtZHluYW1pYy1jb2x1bW4+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVDb2x1bW5zLmxlbmd0aCA9PT0gMVwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaW5lci1jYXJkLWNvbnRhaW5lciB7eyBlbnRpdHlUeXBlIH19XCIgKGNsaWNrKT1cImNhcmRTZWxlY3RlZChyb3cpXCIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzXCI+XHJcblx0XHRcdFx0PGN0cy1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uc1swXS50ZW1wbGF0ZVwiIFtjb2x1bW5dPVwiY29sdW1uc1swXVwiIFtjb250ZXh0XT1cInJvd1wiPiA8L2N0cy1keW5hbWljLWNvbHVtbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0lmPVwidGFibGVNb2RlID09PSB0YWJsZU1vZGVzLmNhcmRcIj5cclxuXHQ8ZGl2IGNsYXNzPVwiY2FyZHMtY29udGFpbmVyXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwic2luZ2xlLWNhcmRcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCBpID0gaW5kZXhcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm1lbW8tdGl0bGVcIj5cclxuXHRcdFx0XHQ8c3Bhbj5cclxuXHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzLnJlZmVyZW5jZU51bWJlciB9fVxyXG5cdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvbi13cmFwXCI+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvblwiICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFibGVBY3Rpb25zXCI+XHJcblx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBhY3Rpb24ucGVybWlzc2lvbixcclxuXHRcdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cInt7IGFjdGlvbi5pY29uIH19XCJcclxuXHRcdFx0XHRcdFx0XHRtYXRUb29sdGlwPVwie3sgYWN0aW9uLnRvb2x0aXAgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgYWN0aW9uLmFjdGlvbk5hbWUpXCJcclxuXHRcdFx0XHRcdFx0PjwvaT5cclxuXHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGV0ZU1lbW8nLFxyXG5cdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdkZWxldGVNZW1vJylcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXRyYXNoXCIgbWF0VG9vbHRpcD1cInt7ICdMSVNUSU5HLk9OTFlfREVMRVRFJyB8IHRyYW5zbGF0ZSB9fVwiPjwvaT5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdFx0XHQqcGVybWlzc2lvbj1cIntcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiAndGVybWluYXRlRGVsZWdhdGlvbicsXHJcblx0XHRcdFx0XHRcdFx0ZW50aXR5OiByb3csXHJcblx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ3Rlcm1pbmF0ZURlbGVnYXRpb24nKVwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiYmkgYmktdHJhc2hcIiBtYXRUb29sdGlwPVwie3sgJ0xJU1RJTkcuQ0FOQ0VMJyB8IHRyYW5zbGF0ZSB9fVwiPjwvaT5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PHNwYW5cclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJwdWJsaXNoLXN0YXRlXCJcclxuXHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogJ21lbW9QdWJsaXNoZWQnLFxyXG5cdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7eyAnTUVNT1MuUFVCTElTSEVEJyB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0PHNwYW5cclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJwdWJsaXNoLXN0YXRlXCJcclxuXHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2RlbGVnYXRpb25GaW5pc2hlZCcsXHJcblx0XHRcdFx0XHRcdFx0ZW50aXR5OiByb3csXHJcblx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7ICdkZWxlZ2F0aW9ucy5maW5pc2hlZCcgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdDxzcGFuXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwicHVibGlzaC1zdGF0ZVwiXHJcblx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxlZ2F0aW9uQWN0aXZlJyxcclxuXHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHR1c2VyOiBudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlclxyXG5cdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0e3sgJ2RlbGVnYXRpb25zLmFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWVtby1ib2R5XCIgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHRhYmxlQ29sdW1ucyQgfCBhc3luY1wiIChjbGljayk9XCJjYXJkU2VsZWN0ZWQocm93KTsgY2FyZEZvY3VzZWQoaSlcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwia2V5XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlICE9PSAnZGVmYXVsdCdcIj5cclxuXHRcdFx0XHRcdHt7IHByZWZpeCArIHByb3BlcnR5LmtleSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnZGVmYXVsdCdcIj5cclxuXHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJrZXlcIlxyXG5cdFx0XHRcdFx0XHQqcGVybWlzc2lvbj1cIntcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnaW50ZXJuYWxJc0VuYWJsZWQnLFxyXG5cdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7eyBwcmVmaXggKyBwcm9wZXJ0eS5rZXkgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICd0ZXh0J1wiPlxyXG5cdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfX1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICd1c2VyJ1wiPlxyXG5cdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0uZnVsbE5hbWUgfX1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdkYXRlJ1wiPlxyXG5cdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfCBsb2NhbGl6ZWREYXRlOiBmb3JtYXQgOiAoaXNBcmFiaWMgPyAnYXItQVInIDogJ2VuLVVTJykgfX1cclxuXHRcdFx0XHRcdFx0PCEtLSA8Y3RzLWRhdGUtdmlld2VyIFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiIFt2YWx1ZV09XCJyb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV1cIiA+PC9jdHMtZGF0ZS12aWV3ZXI+IC0tPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dFwiICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2Jvb2xlYW4nXCI+XHJcblx0XHRcdFx0XHRcdHt7IChyb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gPyAnWWVzJyA6ICdObycpIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnZGVmYXVsdCdcIj5cclxuXHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwidGV4dFwiXHJcblx0XHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiAnaW50ZXJuYWxJc0VuYWJsZWQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZW50aXR5OiByb3csXHJcblx0XHRcdFx0XHRcdFx0XHR1c2VyOiBudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlclxyXG5cdFx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0e3sgcm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdIH19XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2N1c3RvbSdcIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV1cIj5cclxuXHRcdFx0XHRcdFx0XHR7eyBpdGVtIHwgdHJhbnNsYXRlIH19IHt7ICcsICcgfX1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0lmPVwidGFibGVNb2RlID09PSB0YWJsZU1vZGVzLmR5bmFtaWNDYXJkXCI+XHJcblx0PGRpdiBjbGFzcz1cImNhcmRzLWNvbnRhaW5lclwiPlxyXG5cdFx0PGRpdlxyXG5cdFx0XHRjbGFzcz1cInNpbmdsZS1jYXJkXCJcclxuXHRcdFx0W25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtY2FyZCc6IGhpZ2hsaWdodFNlbGVjdGVkQ2FyZCAmJiByb3c/LmlzU2VsZWN0ZWQgfVwiXHJcblx0XHRcdCpuZ0Zvcj1cImxldCByb3cgb2Ygcm93c1wiXHJcblx0XHQ+XHJcblx0XHRcdDxkaXYgKm5nSWY9XCJ0YWJsZUNvbHVtbnMubGVuZ3RoID4gMVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtZW1vLWJvZHlcIiAqbmdGb3I9XCJsZXQgcHJvcGVydHkgb2YgdGFibGVDb2x1bW5zJCB8IGFzeW5jXCIgKGNsaWNrKT1cImNhcmRTZWxlY3RlZChyb3cpXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwia2V5XCI+e3sgcHJlZml4ICsgcHJvcGVydHkua2V5IHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidmFsdWVcIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICd0ZXh0J1wiPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdkYXRlJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXSB8IGxvY2FsaXplZERhdGU6IGZvcm1hdCA6IChpc0FyYWJpYyA/ICdhci1BUicgOiAnZW4tVVMnKSB9fVxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPGN0cy1kYXRlLXZpZXdlciBbd2l0aE91dExhYmVsXT1cInRydWVcIiBbdmFsdWVdPVwicm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdXCIgPjwvY3RzLWRhdGUtdmlld2VyPiAtLT5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJpbmVyLWNhcmQtY29udGFpbmVyIHt7IGVudGl0eVR5cGUgfX1cIiAoY2xpY2spPVwiY2FyZFNlbGVjdGVkKHJvdylcIiAqbmdJZj1cInRhYmxlQ29sdW1ucy5sZW5ndGggPT09IDFcIj5cclxuXHRcdFx0XHQ8Y3RzLWR5bmFtaWMtY29sdW1uIFtpZF09XCJ0YWJsZUNvbHVtbnNbMF0udGVtcGxhdGVcIiBbY29sdW1uXT1cInRhYmxlQ29sdW1uc1swXVwiIFtjb250ZXh0XT1cInJvd1wiPlxyXG5cdFx0XHRcdDwvY3RzLWR5bmFtaWMtY29sdW1uPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJ0YWJsZU1vZGUgPT09IHRhYmxlTW9kZXMuY3VzdG9tXCIgY2xhc3M9XCJ0YWJsZS1jdXN0b20tdmlld1wiPlxyXG5cdDxhcHAtZHluYW1pYy1jb21wb25lbnRcclxuXHRcdGNsYXNzPVwidGFibGUtY3VzdG9tLXZpZXdfX2NvbXBvbmVudFwiXHJcblx0XHQqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3NcIlxyXG5cdFx0W2NvbXBvbmVudE5hbWVdPVwiY29tcG9uZW50TmFtZVwiXHJcblx0XHRbcm93XT1cInJvd1wiXHJcblx0XHRbcm93QWN0aW9uXT1cImFjdGlvbk9uUm93XCJcclxuXHRcdFtvbkNsaWNrXT1cIm9uUm93U2VsZWN0ZWRcIlxyXG5cdFx0KGNsaWNrKT1cImNhcmRTZWxlY3RlZChyb3cpXCJcclxuXHRcdFtjbGFzcy5keW5hbWljLXNlbGVjdGVkLWNhcmRdPVwiaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkICYmIHJvdz8uaXNTZWxlY3RlZFwiXHJcblx0PjwvYXBwLWR5bmFtaWMtY29tcG9uZW50PlxyXG48L2Rpdj5cclxuIl19
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNckQsTUFBTSxVQUFVLEdBQUc7SUFDbEIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLFdBQVcsRUFBRSxhQUFhO0lBQzFCLE1BQU0sRUFBRSxRQUFRO0NBQ1AsQ0FBQztBQUVYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDRztBQU9ILE1BQU0sT0FBTyxjQUFjO0lBaUYxQixZQUNRLFlBQTBCLEVBQ3pCLFNBQTJCLEVBQzNCLFdBQStCO1FBRmhDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQW5GeEMsOENBQThDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3Qyw0REFBNEQ7UUFDbEQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsRCxtREFBbUQ7UUFDekMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFB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LGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRJbnB1dCxcclxuXHRPbkNoYW5nZXMsXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5cclxuY29uc3QgVEFCTEVfTU9ERSA9IHtcclxuXHRsaXN0OiAnbGlzdCcsXHJcblx0Y2FyZDogJ2NhcmQnLFxyXG5cdGR5bmFtaWNDYXJkOiAnZHluYW1pY0NhcmQnLFxyXG5cdGN1c3RvbTogJ2N1c3RvbSdcclxufSBhcyBjb25zdDtcclxuXHJcbi8qKlxyXG4gKiB0aGlzIGNvbXBvbmVudCBpcyBhIG11bHRpLXB1cnBvc2UgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGR1bWIgZGF0YSB0YWJsZSB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHRvIHNob3cgYW55IGxpc3Qgb2YgZGF0YSxcclxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIHRhYmxlXHJcbiAqIGFuZCB0aGUganNvbiBzdHJ1Y3R1cmUgZm9yIHRoZSBpbnB1dHMgcGxlYXNlIGNoZWNrIFtDb25maWd1cmF0aW9uIEZpbGVde0BsaW5rIC4uL2FkZGl0aW9uYWwtZG9jdW1lbnRhdGlvbi9jb25maWctZmlsZS5odG1sfVxyXG4gKiAhW1NjcmVlbnNob3QtMV0oLi4vc2NyZWVuc2hvdHMvZHluYW1pY1RhYmxlLnBuZylcclxuICpcclxuICogIyMjIHJlbGF0ZWQgTGlua3M6XHJcbiAqIC0gW1BhZ2luYXRpb24gQ29tcG9uZW50XXtAbGluayBQYWdpbmF0aW9uQ29tcG9uZW50fVxyXG4gKiAtIFtEeW5hbWljIFRhYmxlXXtAbGluayBEeW5hbWljVGFibGVDb21wb25lbnR9XHJcbiAqIC0gW0NvbmZpZ3VyYXRpb24gRmlsZV17QGxpbmsgLi4vYWRkaXRpb25hbC1kb2N1bWVudGF0aW9uL2NvbmZpZy1maWxlLmh0bWx9XHJcbiAqXHJcbiAqIEB0aXRsZVxyXG4gKiBEYXRhIFRhYmxlXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIDxjdHMtdGFibGVcclxuICogICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gKiAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAqICAgICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwicmVzcG9uc2l2ZUNvbHVtbnNcIlxyXG4gKiAgICAgW3Jvd0N1cnNvcl09XCJyb3dDdXJzb3JcIlxyXG4gKiAgICAgW2Z1bGxXaWR0aF09XCJmdWxsV2lkdGhcIlxyXG4gKiAgICAgW2VudGl0eVR5cGVdPVwiZW50aXR5VHlwZVwiXHJcbiAqICAgICBbcHJlZml4XT1cInByZWZpeFwiXHJcbiAqICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAqICAgICBbdGFibGVNb2RlXT1cInRhYmxlTW9kZVwiXHJcbiAqICAgICBbdGFibGVBY3Rpb25zXT1cInRhYmxlQWN0aW9uc1wiXHJcbiAqICAgICAob25Sb3dTZWxlY3RlZCk9XCJyb3dEZXRhaWxzKCRldmVudClcIlxyXG4gKiAgICAgKGFjdGlvbk9uUm93KT1cInBlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXHJcbiAqICAgICAob25Tb3J0aW5nKT1cIm9uU29ydCgkZXZlbnQpXCJcclxuICogID48L2N0cy10YWJsZT5cclxuICpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnY3RzLXRhYmxlJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblx0LyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyAqL1xyXG5cdEBPdXRwdXQoKSBvblJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gc2VsZWN0aW5nIHNpbmdsZSByb3cgdG8gY2F0Y2ggaW5kZXgqL1xyXG5cdEBPdXRwdXQoKSBvblJvd0luZGV4U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyBJY29uICovXHJcblx0QE91dHB1dCgpIG9uSWNvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gcGVyZm9ybSBhY3Rpb24gb24gcm93IChkZWx0ZSwgZWRpdCwgLi4uICkgKi9cclxuXHRAT3V0cHV0KCkgYWN0aW9uT25Sb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHQgZW1pdCB3aGVuIHNvcnRpbmcgdGFibGUgKi9cclxuXHRAT3V0cHV0KCkgb25Tb3J0aW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0IGVtaXQgd2hlbiBzZWxlY3RpbmcgbXVsdGlwbGUgcm93ICovXHJcblx0QE91dHB1dCgpIG9uTXVsdGlSb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogYXJheSBvZiByb3dzIHBhc3NlZCBmcm9tIG91dCBzaWRlIHRoZSBjb21wb25lbnQgKi9cclxuXHJcblx0cHJpdmF0ZSBfcm93czogQXJyYXk8YW55PiA9IFtdO1xyXG5cdEBJbnB1dCgpIHNldCByb3dzKHJvd3M6IEFycmF5PGFueT4pIHtcclxuXHRcdHRoaXMuX3Jvd3MgPSByb3dzO1xyXG5cdH1cclxuXHJcblx0Z2V0IHJvd3MoKTogQXJyYXk8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcm93cztcclxuXHR9XHJcblx0LyoqIGFycmF5IG9mIGNvbHVtbnMgcGFhc2VkIGZyb20gb3V0IHNpZGUgdGhlIGNvbXBvbmVudCAqL1xyXG5cdEBJbnB1dCgpIGNvbHVtbnM7XHJcblx0LyoqIGFycmF5IG9mIGNvbHVtbnMgcGFhc2VkIGZyb20gb3V0IHNpZGUgdGhlIGNvbXBvbmVudCBmb3Igc21hbGxlciBzY3JlZW5zICovXHJcblx0QElucHV0KCkgcmVzcG9uc2l2ZUNvbHVtbnM7XHJcblx0LyoqIHRvIGRlZmluZSB0aGUgcGFnZSBpbiB3aGljaCB0YWJsZSBpcyBiZWluZyB1c2VkICovXHJcblx0QElucHV0KCkgZW50aXR5VHlwZTogc3RyaW5nID0gJyc7XHJcblx0LyoqIHN0YXRpYyAgcGF0aCBmb3IgdHJhbnNsYXRpb24gcGFzc2VkIGZyb20gb3V0IHNpZGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFnZSB0cmFuc2xhdGlvbiBwYXRoICovXHJcblx0QElucHV0KCkgcHJlZml4ID0gJyc7XHJcblx0LyoqIEBkZXByZWNhdGVkICovXHJcblx0QElucHV0KCkgcGFnZUNvdW50O1xyXG5cdC8qKiBUb3RhbCBSZWNvcmRzY291bnQgKi9cclxuXHRASW5wdXQoKSB0b3RhbFJlY29yZHM7XHJcblx0LyoqIEBkZXByZWNhdGVkICovXHJcblx0QElucHV0KCkgcm93Q3Vyc29yID0gZmFsc2U7XHJcblx0LyoqIE1heCBmdWxsIHdpZHRoIGluIFBYIHwgYXV0byAqL1xyXG5cdEBJbnB1dCgpIGZ1bGxXaWR0aCA9ICdhdXRvJztcclxuXHQvKiogVm9jYWJ1bGFyeSBUcmFuc2xhdGlvbiBwcmVmaXggKi9cclxuXHRASW5wdXQoKSB2b2NJdGVtVHJhbnNsYXRpb25QcmVmaXg7XHJcblxyXG5cdHRhYmxlTW9kZXMgPSBUQUJMRV9NT0RFO1xyXG5cclxuXHRASW5wdXQoKSB0YWJsZU1vZGU6IHN0cmluZyA9IFRBQkxFX01PREUubGlzdDtcclxuXHJcblx0QElucHV0KCkgY29tcG9uZW50TmFtZTogc3RyaW5nO1xyXG5cclxuXHQvKiogYWN0aW9uIHRvIGJlIGluIGNhcmQgbW9kZSAqL1xyXG5cdEBJbnB1dCgpIHRhYmxlQWN0aW9ucztcclxuXHRASW5wdXQoKSBmb3JtYXQgPSAnTU1NTSBkLCB5JztcclxuXHRASW5wdXQoKSBkZWZ1bHRTb3J0ID0gbnVsbDtcclxuXHRsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblx0QElucHV0KCkgaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkID0gZmFsc2U7XHJcblxyXG5cdC8qKiBhbGxvdyBtdWx0aXNlbGVjdCByb3dzIHdpdGggY2hlY2tib3ggKi9cclxuXHRASW5wdXQoKSBtdWx0aVNlbGVjdFJvd3MgPSBmYWxzZTtcclxuXHJcblx0LyoqIHRvIHNob3cgMXN0IHJvdyB3aXRoIGN1c3RvbSB0ZW1wbGF0ZSBpbiB0aGUgdGFibGUqL1xyXG5cdEBJbnB1dCgpIGN1c3RvbUZpcnN0Um93ID0gZmFsc2U7XHJcblx0LyoqIGZsYWdlIHVzZWQgdG8gZGlzYWJsZSBhY3Rpb25zIGlmIHRoZXJlIHdhcyBtdWx0aSBzZWxlY3RlZCByb3dzICovXHJcblxyXG5cdEBJbnB1dCgpIHNob3dBY3Rpb25zQXNNZW51ID0gZmFsc2U7IC8vIGZsYWdlIHRvIHNob3cgYWN0aW9uIGluIG1lbnUgb3Igc2lkZSBieSBzaWRlXHJcblxyXG5cdEBJbnB1dCgpIG1lc3NhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBlbXB0eU1lc3NhZ2U6ICcnIH07XHJcblxyXG5cdGRpc2FibGVkQWN0aW9ucyA9IGZhbHNlO1xyXG5cdGlzQXJhYmljID0gZmFsc2U7XHJcblx0dGFibGVXaWR0aCA9ICdhdXRvJztcclxuXHR0YWJsZUNvbHVtbnNTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuXHR0YWJsZUNvbHVtbnMkID0gdGhpcy50YWJsZUNvbHVtbnNTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdGdldCB0YWJsZUNvbHVtbnMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy50YWJsZUNvbHVtbnNTdWIuZ2V0VmFsdWUoKTtcclxuXHR9XHJcblx0Y3VycmVudFJvdztcclxuXHRzZWxlY3RlZCA9IFtdO1xyXG5cdHBhZ2VOdW1iZXIgPSAxO1xyXG5cdHJlc3BvbnNpdmVWaWV3ID0gZmFsc2U7XHJcblx0c3RhdHVzSWNvbnMgPSB7fTsgLy8gb2JqZWN0IHRvIGNvbnRhaW5zIGFsbCBzdGF0dXMgaWNvbnMgaWYgZXhpc3RcclxuXHRkaXJlY3Rpb25JY29ucyA9IHt9OyAvLyBvYmplY3QgdG8gY29udGFpbnMgYWxsIGRpcmVjdGlvbiBpY29ucyBpZiBleGlzdFxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIG51eGVvU2VydmljZTogTnV4ZW9TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvblNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuZm9ybWF0ID0gdGhpcy5hcHBDb25maWcubXlDb25maWd1cmF0aW9uWydkYXRlRm9ybWF0ZSddO1xyXG5cdFx0dGhpcy5zdGF0dXNJY29ucyA9IHRoaXMuYXBwQ29uZmlnLm15Q29uZmlndXJhdGlvblsnc3RhdHVzSWNvbnMnXTtcclxuXHRcdHRoaXMuZGlyZWN0aW9uSWNvbnMgPSB0aGlzLmFwcENvbmZpZy5teUNvbmZpZ3VyYXRpb25bJ2RpcmVjdGlvbkljb25zJ107XHJcblx0XHR0aGlzLmxhbmdTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0aW9uLmlzQXJhYmljLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdHRoaXMuaXNBcmFiaWMgPSByZXM7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzLmNvbHVtbnMgJiYgIWNoYW5nZXM/LmNvbHVtbnM/LmlzRmlyc3RDaGFuZ2UoKSkge1xyXG5cdFx0XHR0aGlzLnRhYmxlQ29sdW1uc1N1Yi5uZXh0KGNoYW5nZXMuY29sdW1ucz8uY3VycmVudFZhbHVlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5vblJlc2l6ZSh3aW5kb3cuaW5uZXJXaWR0aCk7XHJcblx0fVxyXG5cclxuXHQvLyBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCB3aGVuIGNsaWNraW5nIG9uIHNpbmdsZSByb3dcclxuXHRyb3dEZXRhaWxzKGV2ZW50KSB7XHJcblx0XHRpZiAoZXZlbnQudHlwZSAhPT0gJ21vdXNlZW50ZXInKSB7XHJcblx0XHRcdGlmIChldmVudC50eXBlID09PSAnY2xpY2snICYmIGV2ZW50LmNvbHVtbi5wcm9wICE9PSAnJykge1xyXG5cdFx0XHRcdHRoaXMuY3VycmVudFJvdyA9IGV2ZW50LnJvdztcclxuXHRcdFx0XHR0aGlzLm9uUm93U2VsZWN0ZWQuZW1pdCh0aGlzLmN1cnJlbnRSb3cpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdGljb25TZWxlY3RlZChldmVudDogTW91c2VFdmVudCwgcm93KSB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdHRoaXMub25JY29uU2VsZWN0ZWQuZW1pdChyb3cpO1xyXG5cdH1cclxuXHJcblx0Ly9mdW5jdGlvbiB0byBoYW5kbGUgYWxsIG9wZXJhdGlvbnMgb24gc2luZ2xlIHJvdyAoZGVsZXRlICwgZWRpdCAsIC4uLilcclxuXHRwZXJmb3JtQWN0aW9uKHNpbmdsZVJvdywgYWN0aW9uVHlwZSkge1xyXG5cdFx0aWYgKCF0aGlzLmRpc2FibGVkQWN0aW9ucylcclxuXHRcdFx0dGhpcy5hY3Rpb25PblJvdy5lbWl0KHtcclxuXHRcdFx0XHR0eXBlOiBhY3Rpb25UeXBlLFxyXG5cdFx0XHRcdHJvdzogc2luZ2xlUm93XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8gaGFuZGxlIGNoZWNrYm94IGlmIHRhYmxlIGhhcyBvbmVzXHJcblx0b25TZWxlY3QoZXZlbnQpIHtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdvbiBzZWxlY3Qgcm93IGNsaWNrJyk7XHJcblx0XHR0aGlzLm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KGV2ZW50LnNlbGVjdGVkKTtcclxuXHRcdGlmICh0aGlzLm11bHRpU2VsZWN0Um93cyAmJiBldmVudC5zZWxlY3RlZC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuZGlzYWJsZWRBY3Rpb25zID0gdHJ1ZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZGlzYWJsZWRBY3Rpb25zID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBoYW5kbGUgc29ydGluZyBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZVxyXG5cdG9uU29ydChldmVudCkge1xyXG5cdFx0bGV0IHNvcnQgPSB7XHJcblx0XHRcdHNvcnRCeTogZXZlbnQuY29sdW1uLmhlYWRlckNsYXNzLFxyXG5cdFx0XHRzb3J0T3JkZXI6IGV2ZW50Lm5ld1ZhbHVlXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5vblNvcnRpbmcuZW1pdChzb3J0KTtcclxuXHR9XHJcblxyXG5cdGFzc2lnblRhYmxlQ29sdW1ucyhldmVudCkge1xyXG5cdFx0dGhpcy5vblJlc2l6ZShldmVudC50YXJnZXQuaW5uZXJXaWR0aCk7XHJcblx0fVxyXG5cclxuXHRvblJlc2l6ZSh3aWR0aCkge1xyXG5cdFx0aWYgKHdpZHRoID4gMTQwMCkge1xyXG5cdFx0XHR0aGlzLnRhYmxlV2lkdGggPSAnYXV0byc7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnRhYmxlV2lkdGggPSB0aGlzLmZ1bGxXaWR0aDtcclxuXHRcdH1cclxuXHRcdGlmICh3aWR0aCA8IDc2OCkge1xyXG5cdFx0XHR0aGlzLnRhYmxlQ29sdW1uc1N1Yi5uZXh0KHRoaXMucmVzcG9uc2l2ZUNvbHVtbnMpO1xyXG5cdFx0XHR0aGlzLnJlc3BvbnNpdmVWaWV3ID0gdHJ1ZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMucmVzcG9uc2l2ZVZpZXcgPSBmYWxzZTtcclxuXHJcblx0XHRcdHRoaXMudGFibGVDb2x1bW5zU3ViLm5leHQodGhpcy5jb2x1bW5zKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNhcmRTZWxlY3RlZChjYXJkKSB7XHJcblx0XHRpZiAodGhpcy5oaWdobGlnaHRTZWxlY3RlZENhcmQpIHtcclxuXHRcdFx0dGhpcy5yb3dzLm1hcCgocm93KSA9PiB7XHJcblx0XHRcdFx0cm93Wydpc1NlbGVjdGVkJ10gPSBmYWxzZTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdGNhcmRbJ2lzU2VsZWN0ZWQnXSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHR0aGlzLm9uUm93U2VsZWN0ZWQuZW1pdChjYXJkKTtcclxuXHR9XHJcblxyXG5cdGNhcmRGb2N1c2VkKGluZGV4KSB7XHJcblx0XHR0aGlzLm9uUm93SW5kZXhTZWxlY3RlZC5lbWl0KGluZGV4KTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdlxyXG5cdGNsYXNzPVwiaW5lci10YWJsZS1jb250YWluZXJcIlxyXG5cdFtzdHlsZV09XCInd2lkdGg6JyArIHRhYmxlV2lkdGhcIlxyXG5cdCpuZ0lmPVwidGFibGVNb2RlID09PSB0YWJsZU1vZGVzLmxpc3QgJiYgIXJlc3BvbnNpdmVWaWV3XCJcclxuPlxyXG5cdDxuZ3gtZGF0YXRhYmxlXHJcblx0XHRbbmdDbGFzc109XCJ7IG92ZXJmbG93VmlzaWJsZTogY3VzdG9tRmlyc3RSb3cgfVwiXHJcblx0XHRjbGFzcz1cImxhcmdlLXRhYmxlXCJcclxuXHRcdFtyb3dzXT1cInJvd3NcIlxyXG5cdFx0W3N1bW1hcnlSb3ddPVwiY3VzdG9tRmlyc3RSb3dcIlxyXG5cdFx0W2NvbHVtbk1vZGVdPVwiJ2ZvcmNlJ1wiXHJcblx0XHRbZXh0ZXJuYWxTb3J0aW5nXT1cInRydWVcIlxyXG5cdFx0KGFjdGl2YXRlKT1cInJvd0RldGFpbHMoJGV2ZW50KVwiXHJcblx0XHQoc2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxyXG5cdFx0KHNvcnQpPVwib25Tb3J0KCRldmVudClcIlxyXG5cdFx0KHdpbmRvdzpyZXNpemUpPVwiYXNzaWduVGFibGVDb2x1bW5zKCRldmVudClcIlxyXG5cdFx0W3Jvd0hlaWdodF09XCInYXV0bydcIlxyXG5cdFx0W3NlbGVjdGVkXT1cInNlbGVjdGVkXCJcclxuXHRcdFtzZWxlY3Rpb25UeXBlXT1cIm11bHRpU2VsZWN0Um93cyA/ICdjaGVja2JveCcgOiAnc2luZ2xlJ1wiXHJcblx0XHRbc29ydHNdPVwiW3sgcHJvcDogZGVmdWx0U29ydD8ubmFtZSwgZGlyOiBkZWZ1bHRTb3J0Py5kaXIgfV1cIlxyXG5cdFx0W21lc3NhZ2VzXT1cIm1lc3NhZ2VzXCJcclxuXHQ+XHJcblx0XHQ8bmd4LWRhdGF0YWJsZS1jb2x1bW5cclxuXHRcdFx0Km5nSWY9XCJtdWx0aVNlbGVjdFJvd3NcIlxyXG5cdFx0XHRbd2lkdGhdPVwiMzBcIlxyXG5cdFx0XHRbc29ydGFibGVdPVwiZmFsc2VcIlxyXG5cdFx0XHRbcHJvcF09XCInJ1wiXHJcblx0XHRcdFtjYW5BdXRvUmVzaXplXT1cImZhbHNlXCJcclxuXHRcdFx0W2RyYWdnYWJsZV09XCJmYWxzZVwiXHJcblx0XHRcdFtyZXNpemVhYmxlXT1cImZhbHNlXCJcclxuXHRcdD5cclxuXHRcdFx0PG5nLXRlbXBsYXRlXHJcblx0XHRcdFx0bmd4LWRhdGF0YWJsZS1oZWFkZXItdGVtcGxhdGVcclxuXHRcdFx0XHRsZXQtdmFsdWU9XCJ2YWx1ZVwiXHJcblx0XHRcdFx0bGV0LWFsbFJvd3NTZWxlY3RlZD1cImFsbFJvd3NTZWxlY3RlZFwiXHJcblx0XHRcdFx0bGV0LXNlbGVjdEZuPVwic2VsZWN0Rm5cIlxyXG5cdFx0XHQ+XHJcblx0XHRcdFx0PCEtLSA8aW5wdXQgY2xhc3M9XCJjaGVja2JveC1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImFsbFJvd3NTZWxlY3RlZFwiIChjaGFuZ2UpPVwic2VsZWN0Rm4oIWFsbFJvd3NTZWxlY3RlZClcIiAvPiAtLT5cclxuXHRcdFx0XHQ8bWF0LWNoZWNrYm94IGNvbG9yPVwicHJpbWFyeVwiIFtjaGVja2VkXT1cImFsbFJvd3NTZWxlY3RlZFwiIChjaGFuZ2UpPVwic2VsZWN0Rm4oIWFsbFJvd3NTZWxlY3RlZClcIj4gPC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZVxyXG5cdFx0XHRcdG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZVxyXG5cdFx0XHRcdGxldC12YWx1ZT1cInZhbHVlXCJcclxuXHRcdFx0XHRsZXQtaXNTZWxlY3RlZD1cImlzU2VsZWN0ZWRcIlxyXG5cdFx0XHRcdGxldC1vbkNoZWNrYm94Q2hhbmdlRm49XCJvbkNoZWNrYm94Q2hhbmdlRm5cIlxyXG5cdFx0XHQ+XHJcblx0XHRcdFx0PCEtLSA8aW5wdXQgY2xhc3M9XCJjaGVja2JveC1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2VGbigkZXZlbnQpXCIgLz4gLS0+XHJcblx0XHRcdFx0PG1hdC1jaGVja2JveCBjb2xvcj1cInByaW1hcnlcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlRm4oIWFsbFJvd3NTZWxlY3RlZClcIj5cclxuXHRcdFx0XHQ8L21hdC1jaGVja2JveD5cclxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcblx0XHQ8IS0tIHwgdHJhbnNsYXRlIC0tPlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29sdW1ucyQgfCBhc3luYzsgbGV0IGkgPSBpbmRleFwiPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyICpwZXJtaXNzaW9uPVwieyBuYW1lOiBjb2x1bW4ucGVybWlzc2lvbiB9XCI+XHJcblx0XHRcdFx0PG5neC1kYXRhdGFibGUtY29sdW1uXHJcblx0XHRcdFx0XHQqbmdJZj1cImNvbHVtbi5kaXNwbGF5XCJcclxuXHRcdFx0XHRcdFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxyXG5cdFx0XHRcdFx0W25hbWVdPVwicHJlZml4ICsgY29sdW1uLm5hbWUgfCB0cmFuc2xhdGVcIlxyXG5cdFx0XHRcdFx0W3Byb3BdPVwiY29sdW1uLnByb3BcIlxyXG5cdFx0XHRcdFx0W3Jlc2l6ZWFibGVdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0W2RyYWdnYWJsZV09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRbbWF4V2lkdGhdPVwiY29sdW1uPy5zaXplXCJcclxuXHRcdFx0XHRcdFtoZWFkZXJDbGFzc109XCJjb2x1bW4uaGVhZGVyQ2xhc3MgPyBjb2x1bW4uaGVhZGVyQ2xhc3MgOiAnJ1wiXHJcblx0XHRcdFx0XHRbc3VtbWFyeVRlbXBsYXRlXT1cImN1c3RvbUZpcnN0Um93ID8gY3VzdG9tUm93VGVtcGxhdGUgOiBudWxsXCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHQnXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCIgKm5nSWY9XCIhY29sdW1uLndpdGhUb29sdGlwXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyB2YWx1ZSA/IHZhbHVlIDogJy0tJyB9fVxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZWxsLXRleHQtd3JhcHBlclwiIG1hdFRvb2x0aXA9XCJ7eyB2YWx1ZSA/IHZhbHVlIDogJy0tJyB9fVwiICpuZ0lmPVwiY29sdW1uLndpdGhUb29sdGlwXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyB2YWx1ZSA/IHZhbHVlIDogJy0tJyB9fVxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3ZvY2FidWxhcnknXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y3RzLWRyb3Bkb3duLXZpZXdlciBbd2l0aE91dExhYmVsXT1cInRydWVcIiBbdmFsdWVdPVwidmFsdWVcIiBbZHJvcGRvd25JZF09XCJjb2x1bW4udm9jYWJ1bGFyeUlkXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2N0cy1kcm9wZG93bi12aWV3ZXI+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnVm9jQ2VsbCdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdHt7ICh2YWx1ZSA/IGNvbHVtbi52b2NhYnVsYXJ5SWQgKyAnLicgKyB2YWx1ZSA6ICctLScpIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnVm9jSXRlbSdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2VsbC10ZXh0LXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdHt7IHZvY0l0ZW1UcmFuc2xhdGlvblByZWZpeCArIHZhbHVlIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdkZXBhcnRtZW50J1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZWxsLXRleHQtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGN0cy1kZXBhcnRtZW50LXZpZXdlciBbbm9TdHlsZV09XCJ0cnVlXCIgW3ZhbHVlXT1cInZhbHVlXCI+IDwvY3RzLWRlcGFydG1lbnQtdmlld2VyPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3N0YXR1cydcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwic3RhdHVzLXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidmFsdWUge3sgdmFsdWUgfX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nSWY9XCJzdGF0dXNJY29ucyAmJiBzdGF0dXNJY29ucyAhPT0ge31cIiBjbGFzcz1cInN0YXR1cy1pY29uIHt7IHN0YXR1c0ljb25zW3ZhbHVlXSB9fVwiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0e3sgJ1NUQVRTLicgKyB2YWx1ZSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3JvbGUnXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyAncm9sZS4nICsgKHZhbHVlID8gdmFsdWUgOiAnLS0nKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2FjdGlvbnMnICYmIHJvd3MubGVuZ3RoICE9PSAwXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwiZGlzYWJsZWRBY3Rpb25zID8gJ2Rpc2FibGVkLWFjdGlvbnMtd3JhcHBlcicgOiAnYWN0aW9ucy13cmFwcGVyJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cIiFzaG93QWN0aW9uc0FzTWVudVwiXHJcblx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSA8c3BhbiBjbGFzcz1cImJpIGJpLXRyYXNoIGRlbGV0ZS1pY29uXCIgKGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93ICwgJ2RlbGV0ZScpXCI+PC9zcGFuPiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiYmkgYmktcGVuY2lsLXNxdWFyZSBlZGl0LWljb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXRUb29sdGlwPVwie3sgJ1VQREFURScgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdlZGl0JylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cImVudGl0eVR5cGUgPT09ICd2b2MtdGFibGUnXCJcclxuXHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImJpIGJpLXRyYXNoXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cInt7ICdkZWxldGUnIHwgdHJhbnNsYXRlIH19XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCAnZGVsZXRlJylcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cImVudGl0eVR5cGUgPT09ICd2b2MtdGFibGUnIHx8IGVudGl0eVR5cGUgPT09ICdkZXBhcnRtZW50JyB8fCBlbnRpdHlUeXBlID09PSAnc2lnbmVycydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PjwvaT5cclxuXHJcblx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImJpIGJpLXBsdXMtc3F1YXJlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cInt7ICdVU0VSX01BTkdNRU5ULmFkZFRvRGVwYXJ0bWVudCcgfCB0cmFuc2xhdGUgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdkZWxldGUnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiZW50aXR5VHlwZSA9PT0gJ3VzZXJzJyAmJiByb3cuaXNJbml0aWFsXCJcclxuXHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb2x1bW4uYWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogYWN0aW9uLnBlcm1pc3Npb24sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBhY3Rpb24uaWNvbiB9fVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cInt7IGFjdGlvbi50b29sdGlwIHwgdHJhbnNsYXRlIH19XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csIGFjdGlvbi5hY3Rpb25OYW1lKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSA8aVxyXG4gICAgICAgICAgICAgICAgKnBlcm1pc3Npb249XCJ7IG5hbWU6ICdyZWdpc3RlckNvcnJlc3BvbmRhbmNlJywgZW50aXR5OiByb3cgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWJveC1hcnJvdy1pbi1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ0xJU1RJTkcuUkVHSVNURVInIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ3JlZ2lzdGVyJylcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnc2VuZENvcnJlc3BvbmRhbmNlJywgZW50aXR5OiByb3cgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWVudmVsb3BlXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnTElTVElORy5TRU5EJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdzZW5kJylcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnY2xvc2VDb3JyZXNwb25kYW5jZScsIGVudGl0eTogcm93IH1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiaSBiaS14LWNpcmNsZVwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ0xJU1RJTkcuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2Nsb3NlJylcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnYXJjaGl2ZUNvcnJlc3BvbmRhbmNlJywgZW50aXR5OiByb3cgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWZvbGRlci1zeW1saW5rXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnTElTVElORy5BUkNISVZFJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdhcmNoaXZlJylcIlxyXG4gICAgICAgICAgICAgID48L2k+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cImRpc2FibGVkQWN0aW9ucyA/ICdkaXNhYmxlZC1hY3Rpb25zLXdyYXBwZXInIDogJ2FjdGlvbnMtd3JhcHBlcidcIlxyXG5cdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJzaG93QWN0aW9uc0FzTWVudVwiXHJcblx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1tZW51LXRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZEFjdGlvbnNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS10aHJlZS1kb3RzLXZlcnRpY2FsXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJkYXRhdGFibGUtYWN0aW9ucy1tZW51XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICdlZGl0JylcIiAqbmdJZj1cImVudGl0eVR5cGUgPT09ICd2b2MtdGFibGUnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS1wZW5jaWwtc3F1YXJlIGVkaXQtaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvbi10ZXh0XCI+e3sgJ1VQREFURScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWF0LW1lbnUtaXRlbVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2RlbGV0ZScpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cImVudGl0eVR5cGUgPT09ICd2b2MtdGFibGUnIHx8IGVudGl0eVR5cGUgPT09ICdkZXBhcnRtZW50JyB8fCBlbnRpdHlUeXBlID09PSAnc2lnbmVycydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS10cmFzaFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImFjdGlvbi10ZXh0XCI+e3sgJ2RlbGV0ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWF0LW1lbnUtaXRlbVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgJ2RlbGV0ZScpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cImVudGl0eVR5cGUgPT09ICd1c2VycycgJiYgcm93LmlzSW5pdGlhbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXBsdXMtc3F1YXJlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiYWN0aW9uLXRleHRcIj57eyAnVVNFUl9NQU5HTUVOVC5hZGRUb0RlcGFydG1lbnQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnR0YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb2x1bW4uYWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGljayk9XCJwZXJmb3JtQWN0aW9uKHJvdywgYWN0aW9uLmFjdGlvbk5hbWUpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBhY3Rpb24ucGVybWlzc2lvbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5OiByb3csXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInt7IGFjdGlvbi5pY29uIH19XCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJhY3Rpb24tdGV4dFwiPnt7IGFjdGlvbi50b29sdGlwIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L25nLWNvbnR0YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1tZW51PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RhdGUnXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNlbGwtdGV4dC13cmFwcGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y3RzLWRhdGUtdmlld2VyIFt3aXRoT3V0TGFiZWxdPVwidHJ1ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiPjwvY3RzLWRhdGUtdmlld2VyPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnY3VzdG9tJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxjdHMtZHluYW1pYy1jb2x1bW4gW2lkXT1cImNvbHVtbi50ZW1wbGF0ZVwiIFtjb2x1bW5dPVwiY29sdW1uXCIgW2NvbnRleHRdPVwicm93XCI+IDwvY3RzLWR5bmFtaWMtY29sdW1uPlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RpcmVjdGlvbidcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IChjbGljayk9XCJpY29uU2VsZWN0ZWQoJGV2ZW50LCByb3cpXCIgY2xhc3M9XCJzdGF0dXMtd3JhcHBlciB7eyB2YWx1ZSB9fSB7eyByb3cuc3RhdGUgfX1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiaW5lci1zdGF0dXMtd3JhcHBlclwiIG1hdFRvb2x0aXA9XCJ7eyAnU1RBVFMuJyArIHJvdy5zdGF0ZSB8IHRyYW5zbGF0ZSB9fVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpwZXJtaXNzaW9uPVwieyBuYW1lOiAnaXNGYXZvcml0ZScsIGVudGl0eTogcm93IH1cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhdi1pY29uLWluZGljYXRvciBiaSBiaS1zdGFyLWZpbGxcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwie3sgZGlyZWN0aW9uSWNvbnMgPyBkaXJlY3Rpb25JY29uc1snaW5jb21pbmcnXSA6ICdiaSBiaS1ib3gtYXJyb3ctZG93bicgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwicm93LnR5cGUgPT09ICdJbmNvbWluZ0NvcnJlc3BvbmRlbmNlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBkaXJlY3Rpb25JY29ucyA/IGRpcmVjdGlvbkljb25zWydvdXRnb2luZyddIDogJ2JpIGJpLWJveC1hcnJvdy11cCBvdXRnb2luZycgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwicm93LnR5cGUgPT09ICdPdXRnb2luZ0NvcnJlc3BvbmRlbmNlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBkaXJlY3Rpb25JY29ucyA/IGRpcmVjdGlvbkljb25zWydpbnRlcm5hbCddIDogJ2JpIGJpLWJveC1hcnJvdy1yaWdodCBpbnRlcm5hbCcgfX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwicm93LnR5cGUgPT09ICdJbnRlcm5hbENvcnJlc3BvbmRlbmNlJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIDxzcGFuIGNsYXNzPVwidmFsdWUge3sgdmFsdWUgfX1cIj57eyBcIlNUQVRTLlwiICsgdmFsdWUgfCB0cmFuc2xhdGUgfX08L3NwYW4+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgI2N1c3RvbVJvd1RlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy12aXNpYmxlXCI+XHJcblx0XHRcdFx0XHRcdFx0PGN0cy1keW5hbWljLWNvbHVtbiBbaWRdPVwiY29sdW1uLmN1c3RvbTFzdENlbGxUZW1wbGF0ZVwiIFtjb2x1bW5dPVwiY29sdW1uXCIgW2NvbnRleHRdPVwicm93XCI+XHJcblx0XHRcdFx0XHRcdFx0PC9jdHMtZHluYW1pYy1jb2x1bW4+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHQ8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cdDwvbmd4LWRhdGF0YWJsZT5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0lmPVwicmVzcG9uc2l2ZVZpZXcgJiYgdGFibGVNb2RlICE9PSB0YWJsZU1vZGVzLmNhcmRcIiAod2luZG93OnJlc2l6ZSk9XCJhc3NpZ25UYWJsZUNvbHVtbnMoJGV2ZW50KVwiPlxyXG5cdDxkaXYgY2xhc3M9XCJkeW5hbWljLWNhcmRzLWNvbnRhaW5lclwiPlxyXG5cdFx0PGRpdlxyXG5cdFx0XHRjbGFzcz1cInNpbmdsZS1jYXJkXCJcclxuXHRcdFx0W25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtY2FyZCc6IGhpZ2hsaWdodFNlbGVjdGVkQ2FyZCAmJiByb3c/LmlzU2VsZWN0ZWQgfVwiXHJcblx0XHRcdCpuZ0Zvcj1cImxldCByb3cgb2Ygcm93c1wiXHJcblx0XHQ+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtZW1vLXRpdGxlXCI+XHJcblx0XHRcdFx0PHNwYW4+XHJcblx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllcy5yZWZlcmVuY2VOdW1iZXIgfX1cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJhY3Rpb24td3JhcFwiPlxyXG5cdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJhY3Rpb25cIiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRhYmxlQWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogYWN0aW9uLnBlcm1pc3Npb24sXHJcblx0XHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBhY3Rpb24uaWNvbiB9fVwiXHJcblx0XHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cInt7IGFjdGlvbi50b29sdGlwIHwgdHJhbnNsYXRlIH19XCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csIGFjdGlvbi5hY3Rpb25OYW1lKVwiXHJcblx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiAqbmdJZj1cInRhYmxlQ29sdW1ucy5sZW5ndGggPiAxXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cIm1lbW8tYm9keVwiICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiB0YWJsZUNvbHVtbnMkIHwgYXN5bmNcIiAoY2xpY2spPVwiY2FyZFNlbGVjdGVkKHJvdylcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJrZXlcIj57eyBwcmVmaXggKyBwcm9wZXJ0eS5rZXkgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dFwiICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ3RleHQnXCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgcm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdIH19XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dFwiICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ293bmVyJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5Lm93bmVyXT8uW3Byb3BlcnR5LnZhbHVlXSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdkYXRlJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXSB8IGxvY2FsaXplZERhdGU6IGZvcm1hdCA6IChpc0FyYWJpYyA/ICdhci1BUicgOiAnZW4tVVMnKSB9fVxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPGN0cy1kYXRlLXZpZXdlciBbd2l0aE91dExhYmVsXT1cInRydWVcIiBbdmFsdWVdPVwicm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdXCIgPjwvY3RzLWRhdGUtdmlld2VyPiAtLT5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnc3RhdHVzJ1wiIGNsYXNzPVwidmFsdWUge3sgcm93W3Byb3BlcnR5LnZhbHVlXSB9fVwiPlxyXG5cdFx0XHRcdFx0XHRcdHt7ICdTVEFUUy4nICsgcm93W3Byb3BlcnR5LnZhbHVlXSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdkZXBhcnRtZW50J1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxjdHMtZGVwYXJ0bWVudC12aWV3ZXIgW25vU3R5bGVdPVwidHJ1ZVwiIFt2YWx1ZV09XCJyb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV1cIj4gPC9jdHMtZGVwYXJ0bWVudC12aWV3ZXI+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ3ZvY2FidWxhcnknXCIgY2xhc3M9XCJjZWxsLXRleHQtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0XHRcdDxjdHMtZHJvcGRvd24tdmlld2VyXHJcblx0XHRcdFx0XHRcdFx0XHRbd2l0aE91dExhYmVsXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0W3ZhbHVlXT1cInJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbZHJvcGRvd25JZF09XCJwcm9wZXJ0eS52b2NhYnVsYXJ5SWRcIlxyXG5cdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8L2N0cy1kcm9wZG93bi12aWV3ZXI+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnZGlyZWN0aW9uJ1wiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImljb25TZWxlY3RlZCgkZXZlbnQsIHJvdylcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwic3RhdHVzLXdyYXBwZXIge3sgcHJvcGVydHkudmFsdWUgfX0ge3sgcm93LnN0YXRlIH19XCJcclxuXHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiaW5lci1zdGF0dXMtd3JhcHBlclwiIG1hdFRvb2x0aXA9XCJ7eyAnU1RBVFMuJyArIHJvdy5zdGF0ZSB8IHRyYW5zbGF0ZSB9fVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqcGVybWlzc2lvbj1cInsgbmFtZTogJ2lzRmF2b3JpdGUnLCBlbnRpdHk6IHJvdyB9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZmF2LWljb24taW5kaWNhdG9yIGJpIGJpLXN0YXItZmlsbFwiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS1ib3gtYXJyb3ctZG93blwiICpuZ0lmPVwicm93LnR5cGUgPT09ICdJbmNvbWluZ0NvcnJlc3BvbmRlbmNlJ1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiYmkgYmktYm94LWFycm93LXVwIG91dGdvaW5nXCIgKm5nSWY9XCJyb3cudHlwZSA9PT0gJ091dGdvaW5nQ29ycmVzcG9uZGVuY2UnXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS1ib3gtYXJyb3ctcmlnaHQgaW50ZXJuYWxcIiAqbmdJZj1cInJvdy50eXBlID09PSAnSW50ZXJuYWxDb3JyZXNwb25kZW5jZSdcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdjdXN0b20nXCI+XHJcblx0XHRcdFx0XHRcdFx0PGN0cy1keW5hbWljLWNvbHVtbiBbaWRdPVwicHJvcGVydHkudGVtcGxhdGVcIiBbY29sdW1uXT1cInByb3BlcnR5XCIgW2NvbnRleHRdPVwicm93XCI+IDwvY3RzLWR5bmFtaWMtY29sdW1uPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29sdW1ucy5sZW5ndGggPT09IDFcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImluZXItY2FyZC1jb250YWluZXIge3sgZW50aXR5VHlwZSB9fVwiIChjbGljayk9XCJjYXJkU2VsZWN0ZWQocm93KVwiICpuZ0Zvcj1cImxldCByb3cgb2Ygcm93c1wiPlxyXG5cdFx0XHRcdDxjdHMtZHluYW1pYy1jb2x1bW4gW2lkXT1cImNvbHVtbnNbMF0udGVtcGxhdGVcIiBbY29sdW1uXT1cImNvbHVtbnNbMF1cIiBbY29udGV4dF09XCJyb3dcIj4gPC9jdHMtZHluYW1pYy1jb2x1bW4+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cInRhYmxlTW9kZSA9PT0gdGFibGVNb2Rlcy5jYXJkXCI+XHJcblx0PGRpdiBjbGFzcz1cImNhcmRzLWNvbnRhaW5lclwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInNpbmdsZS1jYXJkXCIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaSA9IGluZGV4XCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtZW1vLXRpdGxlXCI+XHJcblx0XHRcdFx0PHNwYW4+XHJcblx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllcy5yZWZlcmVuY2VOdW1iZXIgfX1cclxuXHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJhY3Rpb24td3JhcFwiPlxyXG5cdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJhY3Rpb25cIiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRhYmxlQWN0aW9uc1wiPlxyXG5cdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogYWN0aW9uLnBlcm1pc3Npb24sXHJcblx0XHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ7eyBhY3Rpb24uaWNvbiB9fVwiXHJcblx0XHRcdFx0XHRcdFx0bWF0VG9vbHRpcD1cInt7IGFjdGlvbi50b29sdGlwIHwgdHJhbnNsYXRlIH19XCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csIGFjdGlvbi5hY3Rpb25OYW1lKVwiXHJcblx0XHRcdFx0XHRcdD48L2k+XHJcblx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxldGVNZW1vJyxcclxuXHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHR1c2VyOiBudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlclxyXG5cdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cInBlcmZvcm1BY3Rpb24ocm93LCAnZGVsZXRlTWVtbycpXCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJiaSBiaS10cmFzaFwiIG1hdFRvb2x0aXA9XCJ7eyAnTElTVElORy5PTkxZX0RFTEVURScgfCB0cmFuc2xhdGUgfX1cIj48L2k+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogJ3Rlcm1pbmF0ZURlbGVnYXRpb24nLFxyXG5cdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwicGVyZm9ybUFjdGlvbihyb3csICd0ZXJtaW5hdGVEZWxlZ2F0aW9uJylcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImJpIGJpLXRyYXNoXCIgbWF0VG9vbHRpcD1cInt7ICdMSVNUSU5HLkNBTkNFTCcgfCB0cmFuc2xhdGUgfX1cIj48L2k+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxzcGFuXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwicHVibGlzaC1zdGF0ZVwiXHJcblx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdtZW1vUHVibGlzaGVkJyxcclxuXHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHR1c2VyOiBudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlclxyXG5cdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0e3sgJ01FTU9TLlBVQkxJU0hFRCcgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHRcdDxzcGFuXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwicHVibGlzaC1zdGF0ZVwiXHJcblx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdkZWxlZ2F0aW9uRmluaXNoZWQnLFxyXG5cdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdHVzZXI6IG51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyXHJcblx0XHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHR7eyAnZGVsZWdhdGlvbnMuZmluaXNoZWQnIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0XHQ8c3BhblxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cInB1Ymxpc2gtc3RhdGVcIlxyXG5cdFx0XHRcdFx0XHQqcGVybWlzc2lvbj1cIntcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiAnZGVsZWdhdGlvbkFjdGl2ZScsXHJcblx0XHRcdFx0XHRcdFx0ZW50aXR5OiByb3csXHJcblx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdHt7ICdkZWxlZ2F0aW9ucy5hY3RpdmUnIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHQ8L3NwYW4+XHJcblx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm1lbW8tYm9keVwiICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiB0YWJsZUNvbHVtbnMkIHwgYXN5bmNcIiAoY2xpY2spPVwiY2FyZFNlbGVjdGVkKHJvdyk7IGNhcmRGb2N1c2VkKGkpXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImtleVwiICpuZ0lmPVwicHJvcGVydHkudHlwZSAhPT0gJ2RlZmF1bHQnXCI+XHJcblx0XHRcdFx0XHR7eyBwcmVmaXggKyBwcm9wZXJ0eS5rZXkgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2RlZmF1bHQnXCI+XHJcblx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdGNsYXNzPVwia2V5XCJcclxuXHRcdFx0XHRcdFx0KnBlcm1pc3Npb249XCJ7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogJ2ludGVybmFsSXNFbmFibGVkJyxcclxuXHRcdFx0XHRcdFx0XHRlbnRpdHk6IHJvdyxcclxuXHRcdFx0XHRcdFx0XHR1c2VyOiBudXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlclxyXG5cdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0e3sgcHJlZml4ICsgcHJvcGVydHkua2V5IHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidmFsdWVcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAndGV4dCdcIj5cclxuXHRcdFx0XHRcdFx0e3sgcm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdIH19XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAndXNlcidcIj5cclxuXHRcdFx0XHRcdFx0e3sgcm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdLmZ1bGxOYW1lIH19XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnZGF0ZSdcIj5cclxuXHRcdFx0XHRcdFx0e3sgcm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdIHwgbG9jYWxpemVkRGF0ZTogZm9ybWF0IDogKGlzQXJhYmljID8gJ2FyLUFSJyA6ICdlbi1VUycpIH19XHJcblx0XHRcdFx0XHRcdDwhLS0gPGN0cy1kYXRlLXZpZXdlciBbd2l0aE91dExhYmVsXT1cInRydWVcIiBbdmFsdWVdPVwicm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdXCIgPjwvY3RzLWRhdGUtdmlld2VyPiAtLT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdib29sZWFuJ1wiPlxyXG5cdFx0XHRcdFx0XHR7eyAocm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdID8gJ1llcycgOiAnTm8nKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcGVydHkudHlwZSA9PT0gJ2RlZmF1bHQnXCI+XHJcblx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cInRleHRcIlxyXG5cdFx0XHRcdFx0XHRcdCpwZXJtaXNzaW9uPVwie1xyXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogJ2ludGVybmFsSXNFbmFibGVkJyxcclxuXHRcdFx0XHRcdFx0XHRcdGVudGl0eTogcm93LFxyXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogbnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50LnVzZXJcclxuXHRcdFx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdHt7IHJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BlcnR5LnR5cGUgPT09ICdjdXN0b20nXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93LnByb3BlcnRpZXNbcHJvcGVydHkudmFsdWVdXCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgaXRlbSB8IHRyYW5zbGF0ZSB9fSB7eyAnLCAnIH19XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cInRhYmxlTW9kZSA9PT0gdGFibGVNb2Rlcy5keW5hbWljQ2FyZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJjYXJkcy1jb250YWluZXJcIj5cclxuXHRcdDxkaXZcclxuXHRcdFx0Y2xhc3M9XCJzaW5nbGUtY2FyZFwiXHJcblx0XHRcdFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLWNhcmQnOiBoaWdobGlnaHRTZWxlY3RlZENhcmQgJiYgcm93Py5pc1NlbGVjdGVkIH1cIlxyXG5cdFx0XHQqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3NcIlxyXG5cdFx0PlxyXG5cdFx0XHQ8ZGl2ICpuZ0lmPVwidGFibGVDb2x1bW5zLmxlbmd0aCA+IDFcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWVtby1ib2R5XCIgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHRhYmxlQ29sdW1ucyQgfCBhc3luY1wiIChjbGljayk9XCJjYXJkU2VsZWN0ZWQocm93KVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImtleVwiPnt7IHByZWZpeCArIHByb3BlcnR5LmtleSB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInZhbHVlXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAndGV4dCdcIj5cclxuXHRcdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfX1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJwcm9wZXJ0eS50eXBlID09PSAnZGF0ZSdcIj5cclxuXHRcdFx0XHRcdFx0XHR7eyByb3cucHJvcGVydGllc1twcm9wZXJ0eS52YWx1ZV0gfCBsb2NhbGl6ZWREYXRlOiBmb3JtYXQgOiAoaXNBcmFiaWMgPyAnYXItQVInIDogJ2VuLVVTJykgfX1cclxuXHRcdFx0XHRcdFx0XHQ8IS0tIDxjdHMtZGF0ZS12aWV3ZXIgW3dpdGhPdXRMYWJlbF09XCJ0cnVlXCIgW3ZhbHVlXT1cInJvdy5wcm9wZXJ0aWVzW3Byb3BlcnR5LnZhbHVlXVwiID48L2N0cy1kYXRlLXZpZXdlcj4gLS0+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaW5lci1jYXJkLWNvbnRhaW5lciB7eyBlbnRpdHlUeXBlIH19XCIgKGNsaWNrKT1cImNhcmRTZWxlY3RlZChyb3cpXCIgKm5nSWY9XCJ0YWJsZUNvbHVtbnMubGVuZ3RoID09PSAxXCI+XHJcblx0XHRcdFx0PGN0cy1keW5hbWljLWNvbHVtbiBbaWRdPVwidGFibGVDb2x1bW5zWzBdLnRlbXBsYXRlXCIgW2NvbHVtbl09XCJ0YWJsZUNvbHVtbnNbMF1cIiBbY29udGV4dF09XCJyb3dcIj5cclxuXHRcdFx0XHQ8L2N0cy1keW5hbWljLWNvbHVtbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0lmPVwidGFibGVNb2RlID09PSB0YWJsZU1vZGVzLmN1c3RvbVwiIGNsYXNzPVwidGFibGUtY3VzdG9tLXZpZXdcIj5cclxuXHQ8YXBwLWR5bmFtaWMtY29tcG9uZW50XHJcblx0XHRjbGFzcz1cInRhYmxlLWN1c3RvbS12aWV3X19jb21wb25lbnRcIlxyXG5cdFx0Km5nRm9yPVwibGV0IHJvdyBvZiByb3dzXCJcclxuXHRcdFtjb21wb25lbnROYW1lXT1cImNvbXBvbmVudE5hbWVcIlxyXG5cdFx0W3Jvd109XCJyb3dcIlxyXG5cdFx0W3Jvd0FjdGlvbl09XCJhY3Rpb25PblJvd1wiXHJcblx0XHRbb25DbGlja109XCJvblJvd1NlbGVjdGVkXCJcclxuXHRcdChjbGljayk9XCJjYXJkU2VsZWN0ZWQocm93KVwiXHJcblx0XHRbY2xhc3MuZHluYW1pYy1zZWxlY3RlZC1jYXJkXT1cImhpZ2hsaWdodFNlbGVjdGVkQ2FyZCAmJiByb3c/LmlzU2VsZWN0ZWRcIlxyXG5cdD48L2FwcC1keW5hbWljLWNvbXBvbmVudD5cclxuPC9kaXY+XHJcbiJdfQ==