ax-common-ui-lib 1.0.1-beta.34.8 → 1.0.1-beta.34.9-testing01
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.
- package/esm2020/lib/enlighten-lib/report/report-filter/report-filter.component.mjs +4 -7
- package/esm2020/lib/enlighten-lib/report/tabular-report/tabular/column-group-view/column-group-view.component.mjs +2 -2
- package/esm2020/lib/enlighten-lib/report/tabular-report/tabular/detail-group-view/detail-group-view.component.mjs +2 -2
- package/esm2020/lib/enlighten-lib/report/tabular-report/tabular/tabular.component.mjs +6 -6
- package/esm2020/lib/enlighten-lib/report/tabular-report/tabular-report.mjs +3 -1
- package/esm2020/lib/filters/common-filter/common-filter.component.mjs +5 -1
- package/esm2020/lib/form-object/form-object-list/formObjectWidgetValue/formobject-choicelist-value/formobject-choicelist-value.component.mjs +4 -4
- package/esm2020/lib/form-object/form-object-view/form-object-widgets/choice-list-widget-view/choice-list-widget-view.component.mjs +3 -3
- package/fesm2015/ax-common-ui-lib.mjs +25 -21
- package/fesm2015/ax-common-ui-lib.mjs.map +1 -1
- package/fesm2020/ax-common-ui-lib.mjs +504 -500
- package/fesm2020/ax-common-ui-lib.mjs.map +1 -1
- package/lib/enlighten-lib/report/report-filter/report-filter.component.d.ts +1 -3
- package/lib/enlighten-lib/report/tabular-report/tabular-report.d.ts +1 -0
- package/package.json +1 -1
|
@@ -11,7 +11,6 @@ import { CategoryService } from '../../../filters/category-filter/category.servi
|
|
|
11
11
|
import { ScopeType, ScreenType } from '../../filters/condition-type';
|
|
12
12
|
import { MultiSelectFilterService } from '../../../../lib/filters/multi-select-filter/multi-select-filter.service';
|
|
13
13
|
import { MatMenuTrigger } from '@angular/material/menu';
|
|
14
|
-
import { TabularReport } from '../tabular-report/tabular-report';
|
|
15
14
|
import * as i0 from "@angular/core";
|
|
16
15
|
import * as i1 from "./report-filter.service";
|
|
17
16
|
import * as i2 from "@angular/router";
|
|
@@ -262,7 +261,7 @@ ReportFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Repor
|
|
|
262
261
|
} if (rf & 2) {
|
|
263
262
|
let _t;
|
|
264
263
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.trigger = _t.first);
|
|
265
|
-
} }, inputs: { filters: "filters", categories: "categories", reportId: "reportId", chartType: "chartType",
|
|
264
|
+
} }, inputs: { filters: "filters", categories: "categories", reportId: "reportId", chartType: "chartType", filterScopeType: "filterScopeType", appVersion: "appVersion", isEditable: "isEditable", screenType: "screenType" }, outputs: { sendFilterToDashboard: "sendFilterToDashboard", filterCategorySendOnDashboardEvent: "filterCategorySendOnDashboardEvent", dirtyFlowCheckEvent: "dirtyFlowCheckEvent", applyFilterEvent: "applyFilterEvent" }, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 14, consts: [["class", "report-filter", "style", "position: relative;", 3, "ngClass", 4, "ngIf"], [1, "filter-component", 3, "ngClass"], [1, "flex", "gap-x-2", "items-center", 3, "scopeType", "filters", "categories", "screenType", "commonFilterArray", "reportId", "showApplyFilterEvent", "sendFilterToDashboardEvent", "sendFilterCategoryToDashboardEvent", "dirtyFlowCheckEvent", "applyFilterEmit", "deleteFilterEmit"], [1, "report-filter", 2, "position", "relative", 3, "ngClass"], ["mat-icon-button", "", 1, "light-blue-btn", "axo-font", 3, "matMenuTriggerFor", "ngClass"], ["svgIcon", "axo_filter"], [4, "ngIf"], ["yPosition", "below", "backdropClass", "report-filter-menu-backdrop-class", 1, "filter-field-list"], ["menu", "matMenu"], [1, "h-full", 3, "click"], [3, "dataModel", "displayMode", "categories", "attributeSelected", "attributeDeselected", "categorySelected", "categoryDeselected"]], template: function ReportFilterComponent_Template(rf, ctx) { if (rf & 1) {
|
|
266
265
|
i0.ɵɵtemplate(0, ReportFilterComponent_div_0_Template, 8, 11, "div", 0);
|
|
267
266
|
i0.ɵɵelementStart(1, "div", 1);
|
|
268
267
|
i0.ɵɵelementStart(2, "filters", 2);
|
|
@@ -270,7 +269,7 @@ ReportFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Repor
|
|
|
270
269
|
i0.ɵɵelementEnd();
|
|
271
270
|
i0.ɵɵelementEnd();
|
|
272
271
|
} if (rf & 2) {
|
|
273
|
-
i0.ɵɵproperty("ngIf", ctx.isEditable
|
|
272
|
+
i0.ɵɵproperty("ngIf", ctx.isEditable);
|
|
274
273
|
i0.ɵɵadvance(1);
|
|
275
274
|
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(10, _c2, ctx.scopeType.global === ctx.filterScopeType, ctx.scopeType.global !== ctx.filterScopeType, !ctx.isEditable && ctx.scopeType.global !== ctx.filterScopeType));
|
|
276
275
|
i0.ɵɵadvance(1);
|
|
@@ -278,7 +277,7 @@ ReportFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Repor
|
|
|
278
277
|
} }, styles: ["lib-report-filter{display:flex;column-gap:.8rem;align-items:center;width:100%}lib-report-filter .report-filter .mat-menu-panel{min-width:112px;max-width:215px}lib-report-filter .filter-component{height:4rem;line-height:4rem;cursor:default}lib-report-filter .global-filter{width:calc(100% - 118px);max-width:calc(100% - 118px);min-width:calc(100% - 118px)}lib-report-filter .global-filter .dash-reset,lib-report-filter .global-filter .reset-section,lib-report-filter .global-filter .reset-btn{border-left:1px solid #c9c9c9c9;white-space:nowrap;width:144px;display:flex;height:2rem;align-items:center;align-self:center;padding-left:.4rem}lib-report-filter .global-filter .dash-reset .reset,lib-report-filter .global-filter .reset-section .reset,lib-report-filter .global-filter .reset-btn .reset{margin:0;font-size:11px}lib-report-filter .global-filter .filter-wrapper{position:inherit;display:inline-block;gap:25px;max-width:calc(100% - 154px);height:2.7rem;line-height:2.7rem;align-items:center!important;overflow-y:hidden;align-self:center}lib-report-filter .global-filter .filter-wrapper .reset{margin:0!important}lib-report-filter .global-filter .global-filter-width{max-width:calc(100% - 222px)!important}lib-report-filter .local-filter{max-width:calc(100% - 40px)}lib-report-filter .local-filter .filter-wrapper{position:inherit;display:inline-block;gap:25px;height:2.7rem;line-height:2.7rem;align-items:center!important;overflow-y:hidden;align-self:center;max-width:calc(100% - 58px);font-size:12px;cursor:default}lib-report-filter .local-filter .filter-wrapper .reset{margin:0!important}lib-report-filter .local-filter .reset-section,lib-report-filter .local-filter .reset-btn{border-left:1px solid #c9c9c9c9;white-space:nowrap;width:144px;display:flex;height:2rem;align-items:start;align-self:start;padding-left:.4rem;margin-top:1rem}lib-report-filter .dashboard-local-filter{width:100%!important;max-width:100%!important}lib-report-filter .mat-form-field-flex{padding:0!important;border:none!important;min-width:unset!important}lib-report-filter .local-filter-btn{height:24px!important;max-height:24px!important;min-height:24px!important;min-width:24px!important;max-width:24px!important;width:24px!important;padding:0!important;display:flex;align-items:center;justify-content:center;font-size:16px!important}lib-report-filter .border-seperator{border-right:1px solid #c9c9c9c9;padding-right:12px}.mat-menu-panel .mat-menu-content .mat-menu-item{font-size:13px}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{font-size:12px;display:flex!important}.list-field{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block;margin-top:2px}.list-field .mat-icon{max-height:20px;min-height:20px;font-size:21px;vertical-align:middle}.global-border{border-bottom:1px solid #dcdcdc}.global-border .search-icon{margin-right:16px}.report-filter-menu-backdrop-class+.cdk-overlay-connected-position-bounding-box .mat-menu-content:not(:empty){padding-top:0}.report-filter-menu-backdrop-class+.cdk-overlay-connected-position-bounding-box .cdk-overlay-pane{max-height:70%!important}.report-filter-menu-backdrop-class+.cdk-overlay-connected-position-bounding-box .mat-menu-panel{min-width:280px!important}.report-filter-menu-backdrop-class+.cdk-overlay-connected-position-bounding-box .mat-menu-panel .mat-menu-content{height:100%}\n"], encapsulation: 2 });
|
|
279
278
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReportFilterComponent, [{
|
|
280
279
|
type: Component,
|
|
281
|
-
args: [{ selector: 'lib-report-filter', encapsulation: ViewEncapsulation.None, template: " <!-- To add filter filter -->\n <div class=\"report-filter\" style=\"position: relative;\" *ngIf = \"isEditable
|
|
280
|
+
args: [{ selector: 'lib-report-filter', encapsulation: ViewEncapsulation.None, template: " <!-- To add filter filter -->\n <div class=\"report-filter\" style=\"position: relative;\" *ngIf = \"isEditable\" [ngClass]=\"{'border-seperator': getFiltersCount()}\">\n <!-- Add Filter Button -->\n <button class=\"light-blue-btn axo-font\" mat-icon-button [matMenuTriggerFor]=\"menu\" [ngClass]=\"{'local-filter-btn':scopeType.local === filterScopeType}\">\n <mat-icon svgIcon=\"axo_filter\"></mat-icon>\n <span *ngIf=\"scopeType.global === filterScopeType\"> Add Filter</span></button>\n <!-- Mat Menu -->\n <mat-menu #menu=\"matMenu\" yPosition=\"below\" class=\"filter-field-list\" backdropClass=\"report-filter-menu-backdrop-class\">\n <!-- <div class=\"sticky top-0 bg-white flex justify-end items-center h-10 z-10\">\n <button class=\"light-btn min-w-8 px-2 py-0 max-h-5 h-5 min-h-5 leading-5 axo-font\" mat-icon-button (click)=\"closeMatMenu()\" >\n Close\n </button>\n </div> -->\n <!-- Date Model Tree -->\n <div (click)=\"$event.stopPropagation();\" class=\"h-full\">\n <lib-data-model-tree [dataModel]=\"dataModel\" [displayMode]=\"dataModelTreeDisplayType.selectionList\"[categories]=\"categoryList\"\n (attributeSelected)=\"addFilter($event)\" (attributeDeselected)=\"removeFilter($event)\"\n (categorySelected)=\"addCategory($event)\"\n (categoryDeselected)=\"deleteCategory($event)\">\n </lib-data-model-tree>\n </div>\n </mat-menu>\n</div>\n\n <!-- Filter rendering -->\n<div class=\"filter-component\" [ngClass]=\"{'global-filter':scopeType.global === filterScopeType,'local-filter':scopeType.global !== filterScopeType, 'dashboard-local-filter':!isEditable && scopeType.global !== filterScopeType}\">\n <filters\n class=\"flex gap-x-2 items-center\"\n [scopeType]=\"filterScopeType\"\n [filters]=\"filters\"\n [categories]=\"categories\"\n [screenType]=\"screenType\"\n [commonFilterArray]=\"commonFilterArray\"\n [categories]=\"categories\"\n [reportId]=\"reportId\"\n [showApplyFilterEvent]=\"showApplyFilterEvent\"\n (sendFilterToDashboardEvent)=\"sendFilterToDashboardEvent($event)\"\n (sendFilterCategoryToDashboardEvent)=\"filterCategorySendOnDashboard($event)\"\n (dirtyFlowCheckEvent)=\"dirtyFlowCheck()\"\n (applyFilterEmit)= \"applyFilter()\"\n (deleteFilterEmit)=\"filterDeleted($event)\"\n >\n </filters>\n</div>\n", styles: ["lib-report-filter{display:flex;column-gap:.8rem;align-items:center;width:100%}lib-report-filter .report-filter .mat-menu-panel{min-width:112px;max-width:215px}lib-report-filter .filter-component{height:4rem;line-height:4rem;cursor:default}lib-report-filter .global-filter{width:calc(100% - 118px);max-width:calc(100% - 118px);min-width:calc(100% - 118px)}lib-report-filter .global-filter .dash-reset,lib-report-filter .global-filter .reset-section,lib-report-filter .global-filter .reset-btn{border-left:1px solid #c9c9c9c9;white-space:nowrap;width:144px;display:flex;height:2rem;align-items:center;align-self:center;padding-left:.4rem}lib-report-filter .global-filter .dash-reset .reset,lib-report-filter .global-filter .reset-section .reset,lib-report-filter .global-filter .reset-btn .reset{margin:0;font-size:11px}lib-report-filter .global-filter .filter-wrapper{position:inherit;display:inline-block;gap:25px;max-width:calc(100% - 154px);height:2.7rem;line-height:2.7rem;align-items:center!important;overflow-y:hidden;align-self:center}lib-report-filter .global-filter .filter-wrapper .reset{margin:0!important}lib-report-filter .global-filter .global-filter-width{max-width:calc(100% - 222px)!important}lib-report-filter .local-filter{max-width:calc(100% - 40px)}lib-report-filter .local-filter .filter-wrapper{position:inherit;display:inline-block;gap:25px;height:2.7rem;line-height:2.7rem;align-items:center!important;overflow-y:hidden;align-self:center;max-width:calc(100% - 58px);font-size:12px;cursor:default}lib-report-filter .local-filter .filter-wrapper .reset{margin:0!important}lib-report-filter .local-filter .reset-section,lib-report-filter .local-filter .reset-btn{border-left:1px solid #c9c9c9c9;white-space:nowrap;width:144px;display:flex;height:2rem;align-items:start;align-self:start;padding-left:.4rem;margin-top:1rem}lib-report-filter .dashboard-local-filter{width:100%!important;max-width:100%!important}lib-report-filter .mat-form-field-flex{padding:0!important;border:none!important;min-width:unset!important}lib-report-filter .local-filter-btn{height:24px!important;max-height:24px!important;min-height:24px!important;min-width:24px!important;max-width:24px!important;width:24px!important;padding:0!important;display:flex;align-items:center;justify-content:center;font-size:16px!important}lib-report-filter .border-seperator{border-right:1px solid #c9c9c9c9;padding-right:12px}.mat-menu-panel .mat-menu-content .mat-menu-item{font-size:13px}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{font-size:12px;display:flex!important}.list-field{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block;margin-top:2px}.list-field .mat-icon{max-height:20px;min-height:20px;font-size:21px;vertical-align:middle}.global-border{border-bottom:1px solid #dcdcdc}.global-border .search-icon{margin-right:16px}.report-filter-menu-backdrop-class+.cdk-overlay-connected-position-bounding-box .mat-menu-content:not(:empty){padding-top:0}.report-filter-menu-backdrop-class+.cdk-overlay-connected-position-bounding-box .cdk-overlay-pane{max-height:70%!important}.report-filter-menu-backdrop-class+.cdk-overlay-connected-position-bounding-box .mat-menu-panel{min-width:280px!important}.report-filter-menu-backdrop-class+.cdk-overlay-connected-position-bounding-box .mat-menu-panel .mat-menu-content{height:100%}\n"] }]
|
|
282
281
|
}], function () { return [{ type: i1.ReportFilterService }, { type: i2.ActivatedRoute }, { type: i3.FieldsListService }, { type: i4.ElementService }, { type: i5.CategoryService }, { type: i6.MultiSelectFilterService }]; }, { trigger: [{
|
|
283
282
|
type: ViewChild,
|
|
284
283
|
args: [MatMenuTrigger]
|
|
@@ -290,8 +289,6 @@ ReportFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Repor
|
|
|
290
289
|
type: Input
|
|
291
290
|
}], chartType: [{
|
|
292
291
|
type: Input
|
|
293
|
-
}], tabularReport: [{
|
|
294
|
-
type: Input
|
|
295
292
|
}], filterScopeType: [{
|
|
296
293
|
type: Input
|
|
297
294
|
}], appVersion: [{
|
|
@@ -309,4 +306,4 @@ ReportFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Repor
|
|
|
309
306
|
}], applyFilterEvent: [{
|
|
310
307
|
type: Output
|
|
311
308
|
}] }); })();
|
|
312
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2VubGlnaHRlbi1saWIvcmVwb3J0L3JlcG9ydC1maWx0ZXIvcmVwb3J0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2VubGlnaHRlbi1saWIvcmVwb3J0L3JlcG9ydC1maWx0ZXIvcmVwb3J0LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0lDdEJ6RCw0QkFBbUQ7SUFBQywyQkFBVTtJQUFBLGlCQUFPOzs7Ozs7SUFKNUUsOEJBQTRLO0lBRXpLLGlDQUF3SjtJQUNwSiw4QkFBMEM7SUFDMUMsOEVBQXFFO0lBQUEsaUJBQVM7SUFFaEYsc0NBQXdIO0lBT3RILDhCQUF3RDtJQUFuRCwyR0FBUyx3QkFBd0IsSUFBRTtJQUNwQywrQ0FHK0M7SUFGOUMsNk1BQXFCLHdCQUFpQixJQUFDLG9NQUF3QiwyQkFBb0IsSUFBNUMsOExBQ25CLDBCQUFtQixJQURBLGtNQUVqQiw2QkFBc0IsSUFGTDtJQUd4QyxpQkFBc0I7SUFDMUIsaUJBQU07SUFDUixpQkFBVztJQUNqQixpQkFBTTs7OztJQXJCbUgsOEVBQW1EO0lBRWhILGVBQTBCO0lBQTFCLHVDQUEwQiwwRkFBQTtJQUV2RSxlQUEwQztJQUExQyx5RUFBMEM7SUFVeEIsZUFBdUI7SUFBdkIsNENBQXVCLDhEQUFBLG1DQUFBOzs7QURvQnhELE1BQU0sT0FBTyxxQkFBcUI7SUFpQzlCOzs7T0FHRztJQUNILFlBQ1ksb0JBQXlDLEVBQ3pDLGVBQStCLEVBQy9CLGtCQUFxQyxFQUNyQyxlQUErQixFQUMvQixnQkFBaUMsRUFDakMseUJBQW1EO1FBTG5ELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQWxDdEQsb0JBQWUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBRWxDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsZUFBVSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFFL0Msb0RBQW9EO1FBQzFDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDaEQsdUNBQWtDLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUM3RCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzlDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFckQsb0RBQW9EO1FBQ3BELHNCQUFpQixHQUFPLEVBQUUsQ0FBQztRQUMzQixpQkFBWSxHQUEwQixFQUFFLENBQUM7UUFFekMseUJBQW9CLEdBQVksSUFBSSxDQUFDO1FBQ3JDLDZCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBQ3BELGNBQVMsR0FBRyxTQUFTLENBQUM7UUFFdEI7O1dBRUc7UUFDSyxvQkFBZSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO0lBYXhELENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUM7WUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFDRDs7T0FFRztJQUNILFFBQVE7SUFFUixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBRUgsMkJBQTJCO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhO2FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3hCLElBQUcsWUFBWSxFQUFDO2dCQUNaLE1BQU0sT0FBTyxHQUEwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUMvRCxPQUFPLEVBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQzthQUNMO1lBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRVAsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTO2FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3JCLElBQUcsU0FBUyxFQUFDO2dCQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FDN0QsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsT0FBTyxDQUNmLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBR0QsdUVBQXVFO0lBRXJFLGFBQWE7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzVCLGdDQUFnQztZQUNoQyxJQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDM0M7Z0JBQ0ksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdEMsSUFBRyxRQUFRLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUM7b0JBQzdELFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztpQkFDdkM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDL0IsSUFBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQzdDO2dCQUNJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDekM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlJLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsMEJBQTBCLENBQUMsTUFBZ0I7UUFDdkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILDZCQUE2QixDQUFDLGNBQThCO1FBQ3hELElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNEOztPQUVHO0lBQ0gsY0FBYztRQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxtRUFBbUU7SUFDbkUsV0FBVztRQUNQLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNQLElBQUcsSUFBSSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFDO1lBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUM3QztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsU0FBb0I7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsZUFBZSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2SSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUN2RCxXQUFXO1FBQ1gsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUMzQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLENBQzNDLENBQUM7UUFDRixJQUFJLENBQUMseUJBQXlCLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLFNBQW9CO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUN2RCxJQUFJLENBQUMseUJBQXlCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RyxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDekIsZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQzNDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixLQUFLLENBQUMsQ0FDM0MsQ0FBQztRQUNGLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxRQUF3QjtRQUNoQyxNQUFNLGlCQUFpQixHQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FDbEUsUUFBUSxFQUNSLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FDaEMsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDM0QsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsTUFBaUI7UUFDM0IsSUFBRyxNQUFNLFlBQVksY0FBYyxFQUFDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFFO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUM7OzBGQXZQTSxxQkFBcUI7d0VBQXJCLHFCQUFxQjt1QkFFbkIsY0FBYzs7Ozs7UUNwQzVCLHVFQXFCSztRQUdOLDhCQUFtTztRQUMvTixrQ0FlSztRQUxELG1KQUE4QixzQ0FBa0MsSUFBQyxzSkFDM0IseUNBQXFDLElBRFYsa0hBRTFDLG9CQUFnQixJQUYwQiwwR0FHN0MsaUJBQWEsSUFIZ0Msa0hBSTdDLHlCQUFxQixJQUp3QjtRQU1yRSxpQkFBVTtRQUNkLGlCQUFNOztRQTFDbUQsdUZBQThEO1FBd0J6RixlQUFvTTtRQUFwTSxrTkFBb007UUFHMU4sZUFBNkI7UUFBN0IsK0NBQTZCLHdCQUFBLDhCQUFBLDhCQUFBLDRDQUFBLDhCQUFBLDBCQUFBLGtEQUFBOzt1RkRPeEIscUJBQXFCO2NBTmpDLFNBQVM7MkJBQ0ksbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUk7cU9BSVYsT0FBTztrQkFBakMsU0FBUzttQkFBQyxjQUFjO1lBRWhCLE9BQU87a0JBQWYsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBR0kscUJBQXFCO2tCQUE5QixNQUFNO1lBQ0csa0NBQWtDO2tCQUEzQyxNQUFNO1lBQ0csbUJBQW1CO2tCQUE1QixNQUFNO1lBQ0csZ0JBQWdCO2tCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUF4RmlsdGVyIH0gZnJvbSAnLi8uLi8uLi9maWx0ZXJzL2lheC1maWx0ZXInO1xuaW1wb3J0IHsgRGF0YU1vZGVsVHJlZURpc3BsYXlUeXBlIH0gZnJvbSAnLi8uLi8uLi9kYXRhLW1vZGVsLXRyZWUvZGF0YS1tb2RlbC10cmVlLWVudW1zJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL2RhdGEtbW9kZWwvYXR0cmlidXRlJztcbmltcG9ydCB7IERhdGFNb2RlbCB9IGZyb20gJy4uLy4uL2RhdGEtbW9kZWwvZGF0YS1tb2RlbCc7XG5pbXBvcnQgeyBBeEZpbHRlciB9IGZyb20gJy4uLy4uL2ZpbHRlcnMvYXgtZmlsdGVyJztcbmltcG9ydCB7IEZpbHRlckNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vZmlsdGVycy9maWx0ZXItY2F0ZWdvcnknO1xuaW1wb3J0IHsgUmVwb3J0RmlsdGVyU2VydmljZSB9IGZyb20gJy4vcmVwb3J0LWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZpZWxkc0xpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZmllbGQtbGlzdC1saWIvZmllbGRzLWxpc3Quc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbGVtZW50U2VydmljZSB9IGZyb20gJy4uL2VsZW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDYXRlZ29yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9maWx0ZXJzL2NhdGVnb3J5LWZpbHRlci9jYXRlZ29yeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjb3BlVHlwZSwgU2NyZWVuVHlwZSB9IGZyb20gJy4uLy4uL2ZpbHRlcnMvY29uZGl0aW9uLXR5cGUnO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2ZpbHRlcnMvbXVsdGktc2VsZWN0LWZpbHRlci9tdWx0aS1zZWxlY3QtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IFRhYnVsYXJSZXBvcnQgfSBmcm9tICcuLi90YWJ1bGFyLXJlcG9ydC90YWJ1bGFyLXJlcG9ydCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXJlcG9ydC1maWx0ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnQtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZXBvcnQtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tPFZpZXcgQ2hpbGQgcmVmZXJlbmNlPiAtLS0tLS0tLS0tLVxuICAgIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuICAgIC8vIC0tLS0tLS0tLS0tLS08IElucHV0cz4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgIEBJbnB1dCgpIGZpbHRlcnM6IEFycmF5PEF4RmlsdGVyPjtcbiAgICBASW5wdXQoKSBjYXRlZ29yaWVzOiBBcnJheTxGaWx0ZXJDYXRlZ29yeT47XG4gICAgQElucHV0KCkgcmVwb3J0SWQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBjaGFydFR5cGU6IG51bWJlcjtcbiAgICBASW5wdXQoKSB0YWJ1bGFyUmVwb3J0OlRhYnVsYXJSZXBvcnQ7XG4gICAgQElucHV0KCkgZmlsdGVyU2NvcGVUeXBlID0gU2NvcGVUeXBlLmxvY2FsO1xuICAgIEBJbnB1dCgpIGFwcFZlcnNpb246IG51bWJlcjtcbiAgICBASW5wdXQoKSBpc0VkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2NyZWVuVHlwZSA9IFNjcmVlblR5cGUucmVwb3J0QnVpbGRlcjtcblxuICAgIC8vPC0tLS0tLS0tLS0tLS08IE91dHB1dHM+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBAT3V0cHV0KCkgc2VuZEZpbHRlclRvRGFzaGJvYXJkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIGZpbHRlckNhdGVnb3J5U2VuZE9uRGFzaGJvYXJkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZGlydHlGbG93Q2hlY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBhcHBseUZpbHRlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvLyA8LS0tLS0tLS0tLS0tLTwgQ29tcG9uZW50IFZhcmlhYmxlPi0tLS0tLS0tLS0tLS0+XG4gICAgY29tbW9uRmlsdGVyQXJyYXk6IGFueSA9W107XG4gICAgY2F0ZWdvcnlMaXN0OiBBcnJheTxGaWx0ZXJDYXRlZ29yeT4gPSBbXTtcbiAgICBkYXRhTW9kZWw6IERhdGFNb2RlbDtcbiAgICBzaG93QXBwbHlGaWx0ZXJFdmVudDogYm9vbGVhbiA9IHRydWU7XG4gICAgZGF0YU1vZGVsVHJlZURpc3BsYXlUeXBlID0gRGF0YU1vZGVsVHJlZURpc3BsYXlUeXBlO1xuICAgIHNjb3BlVHlwZSA9IFNjb3BlVHlwZTtcblxuICAgIC8qXG4gICAgICogU3ViamVjdCBvYmplY3Qgd2hpY2ggaGVscHMgdW5zdWJzY3JpYmUgYWxsIHRoZSBzdWJzY3JpYmVkIG9iamVjdHMgaW4gdGhlIGNvbXBvbmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBjb25zdHJ1Y3RvclxuICAgICAqXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3JlcG9ydEZpbHRlclNlcnZpY2U6IFJlcG9ydEZpbHRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBfZmllbGRzTGlzdFNlcnZpY2U6IEZpZWxkc0xpc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50U2VydmljZTogRWxlbWVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NhdGVnb3J5U2VydmljZTogQ2F0ZWdvcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9tdWx0aVNlbGVjdEZpbHRlclNlcnZpY2U6IE11bHRpU2VsZWN0RmlsdGVyU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYodGhpcy5maWx0ZXJzIHx8IHRoaXMuY2F0ZWdvcmllcyl7XG4gICAgICAgICAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5ID0gW107XG4gICAgICAgICAgICB0aGlzLmdldEFuZFNldEZpbHRlckNhdGVnb3J5RGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE9uIEluaXQgbGlmZSBjeWNsZSBob29rXG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSBNYXQgTWVudVxuICAgICAqL1xuICAgIGNsb3NlTWF0TWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgIH1cblxuICAgIC8qKipcbiAgICAgKiBmb2xsb3dpbmcgbWV0aG9kIGlzIHVzZWQgdG8gZ2V0IGZpbHRlciBhbmQgZmlsdGVyIGNhdGVnb3JpZXMgaW4gYWRkIGZpbHRlciBsaXN0XG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG5cbiAgICBnZXRBbmRTZXRGaWx0ZXJDYXRlZ29yeURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhdGVnb3J5U2VydmljZS5jYXRlZ29yeUxpc3QkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY2F0ZWdvcnlMaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoY2F0ZWdvcnlMaXN0KXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2F0TGlzdDogQXJyYXk8RmlsdGVyQ2F0ZWdvcnk+ID0gdGhpcy5fcmVwb3J0RmlsdGVyU2VydmljZS5jcmVhdGVGaWx0ZXJDYXRlZ29yeU9iamVjdChjYXRlZ29yeUxpc3QpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHRoaXMuX3JlcG9ydEZpbHRlclNlcnZpY2UuY2hlY2tTZWxlY3RlZENhdGVnb3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0TGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmdldEFsbEZpbHRlcnMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGdldCBhdHRyaWJ1dGUgd2l0aCBzZWxlY3RlZCBhdHRyaWJ1dGVcbiAgICAgICAgdGhpcy5fZmllbGRzTGlzdFNlcnZpY2UuZW50aXRpZXMkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YU1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoZGF0YU1vZGVsKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhTW9kZWwgPSB0aGlzLl9maWVsZHNMaXN0U2VydmljZS5jcmVhdGVEYXRhTW9kZWxPYmplY3QoZGF0YU1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhTW9kZWwgPSB0aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmNoZWNrU2VsZWN0ZWRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFNb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbEZpbHRlcnMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIC8vdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHB1c2ggZmlsdGVycyBhbmQgY2F0ZWdvcnkgaW50byBhIGNvbW1vbkFycmF5XG5cbiAgICAgIGdldEFsbEZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIC8vIGZpbHRlci5nZW5lcmFsRmlsdGVyVHlwZSA9IDE7XG4gICAgICAgICAgICBpZighdGhpcy5jb21tb25GaWx0ZXJBcnJheS5pbmNsdWRlcyhmaWx0ZXIpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uRmlsdGVyQXJyYXkucHVzaChmaWx0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmKGNhdGVnb3J5LmlkID09PSBsaXN0LmlkICYmIGxpc3QuaXNTZWxlY3RlZCAmJiAhbGlzdC5pc0RlbGV0ZWQpe1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3RbaW5kZXhdID0gY2F0ZWdvcnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXRlZ29yeS5nZW5lcmFsRmlsdGVyVHlwZSA9IDI7XG4gICAgICAgICAgICBpZighdGhpcy5jb21tb25GaWx0ZXJBcnJheS5pbmNsdWRlcyhjYXRlZ29yeSkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25GaWx0ZXJBcnJheS5wdXNoKGNhdGVnb3J5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb21tb25GaWx0ZXJBcnJheS5zb3J0KChhLGIpPT4gKGEuZ3JpZFByb3BlcnRpZXMueCA+IGIuZ3JpZFByb3BlcnRpZXMueCkgPyAxIDogKChiLmdyaWRQcm9wZXJ0aWVzLnggPiBhLmdyaWRQcm9wZXJ0aWVzLngpID8gLTEgOiAwKSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBTZW5kIEZJbHRlciBvbiBEYXNoYm9hcmRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJcbiAgICAgKi9cbiAgICBzZW5kRmlsdGVyVG9EYXNoYm9hcmRFdmVudChmaWx0ZXI6IEF4RmlsdGVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VuZEZpbHRlclRvRGFzaGJvYXJkLmVtaXQoZmlsdGVyKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2VuZCBmaWx0ZXIgY2F0ZWdvcnkgb24gRGFzaGJvYXJkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyQ2F0ZWdvcnlcbiAgICAgKi9cbiAgICBmaWx0ZXJDYXRlZ29yeVNlbmRPbkRhc2hib2FyZChmaWx0ZXJDYXRlZ29yeTogRmlsdGVyQ2F0ZWdvcnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJDYXRlZ29yeVNlbmRPbkRhc2hib2FyZEV2ZW50LmVtaXQoZmlsdGVyQ2F0ZWdvcnkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsIGRpcnR5IGZsb3cgZXZlbnQgZW1pdFxuICAgICAqL1xuICAgIGRpcnR5Rmxvd0NoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcnR5Rmxvd0NoZWNrRXZlbnQuZW1pdCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBPbiBkZXN0cm95XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC91c2UtbGlmZWN5Y2xlLWludGVyZmFjZVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxsIHdoZW4gdGhlIGdsb2JhbCBmaWx0ZXJzIGZpZWxkcyB2YWx1ZXMgYXJlIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIGFwcGx5RmlsdGVyKCk6IHZvaWQge1xuICAgICAgICBpZih0aGlzLmZpbHRlclNjb3BlVHlwZSA9PT0gU2NvcGVUeXBlLmdsb2JhbCl7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50U2VydmljZS5yZWZyZXNoRWxlbWVudERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyRXZlbnQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBmaWx0ZXIgb24gQXR0cmlidXRlIFNlbGVjdC5cbiAgICAgKi9cbiAgICBhZGRGaWx0ZXIoYXR0cmlidXRlOiBBdHRyaWJ1dGUpOiB2b2lke1xuICAgICAgICBjb25zdCBuZXdGaWx0ZXIgPSB0aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlcih0aGlzLmFwcFZlcnNpb24sYXR0cmlidXRlLHRoaXMuZmlsdGVyU2NvcGVUeXBlLHRoaXMuY29tbW9uRmlsdGVyQXJyYXkubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJzLnB1c2gobmV3RmlsdGVyKTtcbiAgICAgICAgdGhpcy5nZXRBbGxGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZGlydHlGbG93Q2hlY2tFdmVudC5lbWl0KCk7XG4gICAgICAgIHRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQgPSAhdGhpcy5zaG93QXBwbHlGaWx0ZXJFdmVudDtcbiAgICAgICAgLy8gbmVlZCBSJkRcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlLnJlZnJlc2hGaWx0ZXJQcm9wZXJ0eSh0aGlzLmNvbW1vbkZpbHRlckFycmF5W3RoaXMuY29tbW9uRmlsdGVyQXJyYXkubGVuZ3RoLTFdKTtcbiAgICAgICAgbGV0IHBhcmVudEZpbHRlckFyciA9IFtdO1xuICAgICAgICBwYXJlbnRGaWx0ZXJBcnIgPSB0aGlzLmNvbW1vbkZpbHRlckFycmF5LmZpbHRlcihcbiAgICAgICAgICAgIGZpbHRlciA9PiBmaWx0ZXIuZ2VuZXJhbEZpbHRlclR5cGUgPT09IDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlLnJlZnJlc2hGaWx0ZXJMaXN0UHJvcGVydHkocGFyZW50RmlsdGVyQXJyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgRmlsdGVyIG9uIGF0dHJpYnV0ZSBkZXNlbGVjdC5cbiAgICAgKi9cbiAgICByZW1vdmVGaWx0ZXIoYXR0cmlidXRlOiBBdHRyaWJ1dGUpOiB2b2lke1xuICAgICAgICB0aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmRlbGV0ZUZpbHRlcihhdHRyaWJ1dGUsdGhpcy5maWx0ZXJzKTtcbiAgICAgICAgdGhpcy5nZXRBbGxGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZGlydHlGbG93Q2hlY2tFdmVudC5lbWl0KCk7XG4gICAgICAgIHRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQgPSAhdGhpcy5zaG93QXBwbHlGaWx0ZXJFdmVudDtcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlLnJlZnJlc2hGaWx0ZXJQcm9wZXJ0eSh0aGlzLmNvbW1vbkZpbHRlckFycmF5W3RoaXMuY29tbW9uRmlsdGVyQXJyYXkubGVuZ3RoLTFdKTtcbiAgICAgICAgbGV0IHBhcmVudEZpbHRlckFyciA9IFtdO1xuICAgICAgICBwYXJlbnRGaWx0ZXJBcnIgPSB0aGlzLmNvbW1vbkZpbHRlckFycmF5LmZpbHRlcihcbiAgICAgICAgICAgIGZpbHRlciA9PiBmaWx0ZXIuZ2VuZXJhbEZpbHRlclR5cGUgPT09IDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlLnJlZnJlc2hGaWx0ZXJMaXN0UHJvcGVydHkocGFyZW50RmlsdGVyQXJyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgQ2F0ZWdvcnkgRmlsdGVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlcbiAgICAgKi9cbiAgICBhZGRDYXRlZ29yeShjYXRlZ29yeTogRmlsdGVyQ2F0ZWdvcnkpOiB2b2lke1xuICAgICAgICBjb25zdCBuZXdDYXRlZ29yeUZpbHRlcj10aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlckNhdGVnb3J5KFxuICAgICAgICAgICAgY2F0ZWdvcnksXG4gICAgICAgICAgICB0aGlzLmFwcFZlcnNpb24sXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5Lmxlbmd0aFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMucHVzaChuZXdDYXRlZ29yeUZpbHRlcik7XG4gICAgICAgIHRoaXMuZ2V0QWxsRmlsdGVycygpO1xuICAgICAgICB0aGlzLmRpcnR5Rmxvd0NoZWNrRXZlbnQuZW1pdCgpO1xuICAgICAgICB0aGlzLnNob3dBcHBseUZpbHRlckV2ZW50ID0gIXRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIENhdGVnb3J5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlcbiAgICAgKi9cbiAgICBkZWxldGVDYXRlZ29yeShjYXRlZ29yeTogRmlsdGVyQ2F0ZWdvcnkpOiB2b2lke1xuICAgICAgICB0aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmRlbGV0ZUZpbHRlckNhdGVnb3J5KGNhdGVnb3J5LHRoaXMuY2F0ZWdvcmllcyk7XG4gICAgICAgIHRoaXMuZ2V0QWxsRmlsdGVycygpO1xuICAgICAgICB0aGlzLmRpcnR5Rmxvd0NoZWNrRXZlbnQuZW1pdCgpO1xuICAgICAgICB0aGlzLnNob3dBcHBseUZpbHRlckV2ZW50ID0gIXRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBDYWxsZWQgb24gRmlsdGVyIGRlbGV0ZSAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGV2ZW50XG4gICAgICovXG4gICAgZmlsdGVyRGVsZXRlZChmaWx0ZXI6IElBeEZpbHRlcik6IHZvaWR7XG4gICAgICAgIGlmKGZpbHRlciBpbnN0YW5jZW9mIEZpbHRlckNhdGVnb3J5KXtcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydEZpbHRlclNlcnZpY2UuZGVsZXRlRmlsdGVyQ2F0ZWdvcnkoZmlsdGVyLHRoaXMuY2F0ZWdvcmllcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRBbGxGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZGlydHlGbG93Q2hlY2tFdmVudC5lbWl0KCk7XG4gICAgfVxuICAgIGdldEZpbHRlcnNDb3VudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycy5maWx0ZXIoZmwgPT4gIWZsLmlzRGVsZXRlZCkubGVuZ3RoID4gMDtcbiAgICAgIH1cbn1cblxuIiwiIDwhLS0gVG8gYWRkIGZpbHRlciBmaWx0ZXIgLS0+XG4gPGRpdiBjbGFzcz1cInJlcG9ydC1maWx0ZXJcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiAqbmdJZiA9IFwiaXNFZGl0YWJsZSAmJiB0YWJ1bGFyUmVwb3J0Lm1hdHJpeC5hdHRyaWJ1dGVzLmxlbmd0aD4wXCIgW25nQ2xhc3NdPVwieydib3JkZXItc2VwZXJhdG9yJzogZ2V0RmlsdGVyc0NvdW50KCl9XCI+XG4gICAgPCEtLSBBZGQgRmlsdGVyIEJ1dHRvbiAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwibGlnaHQtYmx1ZS1idG4gYXhvLWZvbnRcIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbbmdDbGFzc109XCJ7J2xvY2FsLWZpbHRlci1idG4nOnNjb3BlVHlwZS5sb2NhbCA9PT0gZmlsdGVyU2NvcGVUeXBlfVwiPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImF4b19maWx0ZXJcIj48L21hdC1pY29uPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInNjb3BlVHlwZS5nbG9iYWwgPT09IGZpbHRlclNjb3BlVHlwZVwiPiBBZGQgRmlsdGVyPC9zcGFuPjwvYnV0dG9uPlxuICAgICAgICA8IS0tIE1hdCBNZW51ICAtLT5cbiAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiB5UG9zaXRpb249XCJiZWxvd1wiIGNsYXNzPVwiZmlsdGVyLWZpZWxkLWxpc3RcIiBiYWNrZHJvcENsYXNzPVwicmVwb3J0LWZpbHRlci1tZW51LWJhY2tkcm9wLWNsYXNzXCI+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInN0aWNreSB0b3AtMCBiZy13aGl0ZSBmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBoLTEwIHotMTBcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJsaWdodC1idG4gbWluLXctOCBweC0yIHB5LTAgbWF4LWgtNSBoLTUgbWluLWgtNSBsZWFkaW5nLTUgYXhvLWZvbnRcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsb3NlTWF0TWVudSgpXCIgPlxuICAgICAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8IS0tIERhdGUgTW9kZWwgVHJlZSAtLT5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIGNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgICAgICA8bGliLWRhdGEtbW9kZWwtdHJlZSBbZGF0YU1vZGVsXT1cImRhdGFNb2RlbFwiIFtkaXNwbGF5TW9kZV09XCJkYXRhTW9kZWxUcmVlRGlzcGxheVR5cGUuc2VsZWN0aW9uTGlzdFwiW2NhdGVnb3JpZXNdPVwiY2F0ZWdvcnlMaXN0XCJcbiAgICAgICAgICAgICAoYXR0cmlidXRlU2VsZWN0ZWQpPVwiYWRkRmlsdGVyKCRldmVudClcIiAoYXR0cmlidXRlRGVzZWxlY3RlZCk9XCJyZW1vdmVGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGNhdGVnb3J5U2VsZWN0ZWQpPVwiYWRkQ2F0ZWdvcnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGNhdGVnb3J5RGVzZWxlY3RlZCk9XCJkZWxldGVDYXRlZ29yeSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2xpYi1kYXRhLW1vZGVsLXRyZWU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtbWVudT5cbjwvZGl2PlxuXG4gPCEtLSBGaWx0ZXIgcmVuZGVyaW5nIC0tPlxuPGRpdiBjbGFzcz1cImZpbHRlci1jb21wb25lbnRcIiBbbmdDbGFzc109XCJ7J2dsb2JhbC1maWx0ZXInOnNjb3BlVHlwZS5nbG9iYWwgPT09IGZpbHRlclNjb3BlVHlwZSwnbG9jYWwtZmlsdGVyJzpzY29wZVR5cGUuZ2xvYmFsICE9PSBmaWx0ZXJTY29wZVR5cGUsICdkYXNoYm9hcmQtbG9jYWwtZmlsdGVyJzohaXNFZGl0YWJsZSAmJiBzY29wZVR5cGUuZ2xvYmFsICE9PSBmaWx0ZXJTY29wZVR5cGV9XCI+XG4gICAgPGZpbHRlcnNcbiAgICAgICAgY2xhc3M9XCJmbGV4IGdhcC14LTIgaXRlbXMtY2VudGVyXCJcbiAgICAgICAgW3Njb3BlVHlwZV09XCJmaWx0ZXJTY29wZVR5cGVcIlxuICAgICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAgICAgW2NhdGVnb3JpZXNdPVwiY2F0ZWdvcmllc1wiXG4gICAgICAgIFtzY3JlZW5UeXBlXT1cInNjcmVlblR5cGVcIlxuICAgICAgICBbY29tbW9uRmlsdGVyQXJyYXldPVwiY29tbW9uRmlsdGVyQXJyYXlcIlxuICAgICAgICBbY2F0ZWdvcmllc109XCJjYXRlZ29yaWVzXCJcbiAgICAgICAgW3JlcG9ydElkXT1cInJlcG9ydElkXCJcbiAgICAgICAgW3Nob3dBcHBseUZpbHRlckV2ZW50XT1cInNob3dBcHBseUZpbHRlckV2ZW50XCJcbiAgICAgICAgKHNlbmRGaWx0ZXJUb0Rhc2hib2FyZEV2ZW50KT1cInNlbmRGaWx0ZXJUb0Rhc2hib2FyZEV2ZW50KCRldmVudClcIlxuICAgICAgICAoc2VuZEZpbHRlckNhdGVnb3J5VG9EYXNoYm9hcmRFdmVudCk9XCJmaWx0ZXJDYXRlZ29yeVNlbmRPbkRhc2hib2FyZCgkZXZlbnQpXCJcbiAgICAgICAgKGRpcnR5Rmxvd0NoZWNrRXZlbnQpPVwiZGlydHlGbG93Q2hlY2soKVwiXG4gICAgICAgIChhcHBseUZpbHRlckVtaXQpPSBcImFwcGx5RmlsdGVyKClcIlxuICAgICAgICAoZGVsZXRlRmlsdGVyRW1pdCk9XCJmaWx0ZXJEZWxldGVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgPC9maWx0ZXJzPlxuPC9kaXY+XG4iXX0=
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2VubGlnaHRlbi1saWIvcmVwb3J0L3JlcG9ydC1maWx0ZXIvcmVwb3J0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2VubGlnaHRlbi1saWIvcmVwb3J0L3JlcG9ydC1maWx0ZXIvcmVwb3J0LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0s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QkFBYSxJQUhnQyxrSEFJN0MseUJBQXFCLElBSndCO1FBTXJFLGlCQUFVO1FBQ2QsaUJBQU07O1FBMUNtRCxxQ0FBa0I7UUF3QjdDLGVBQW9NO1FBQXBNLGtOQUFvTTtRQUcxTixlQUE2QjtRQUE3QiwrQ0FBNkIsd0JBQUEsOEJBQUEsOEJBQUEsNENBQUEsOEJBQUEsMEJBQUEsa0RBQUE7O3VGRE94QixxQkFBcUI7Y0FOakMsU0FBUzsyQkFDSSxtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSTtxT0FJVixPQUFPO2tCQUFqQyxTQUFTO21CQUFDLGNBQWM7WUFFaEIsT0FBTztrQkFBZixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUdJLHFCQUFxQjtrQkFBOUIsTUFBTTtZQUNHLGtDQUFrQztrQkFBM0MsTUFBTTtZQUNHLG1CQUFtQjtrQkFBNUIsTUFBTTtZQUNHLGdCQUFnQjtrQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBeEZpbHRlciB9IGZyb20gJy4vLi4vLi4vZmlsdGVycy9pYXgtZmlsdGVyJztcbmltcG9ydCB7IERhdGFNb2RlbFRyZWVEaXNwbGF5VHlwZSB9IGZyb20gJy4vLi4vLi4vZGF0YS1tb2RlbC10cmVlL2RhdGEtbW9kZWwtdHJlZS1lbnVtcyc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9kYXRhLW1vZGVsL2F0dHJpYnV0ZSc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9kYXRhLW1vZGVsL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgQXhGaWx0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXJzL2F4LWZpbHRlcic7XG5pbXBvcnQgeyBGaWx0ZXJDYXRlZ29yeSB9IGZyb20gJy4uLy4uL2ZpbHRlcnMvZmlsdGVyLWNhdGVnb3J5JztcbmltcG9ydCB7IFJlcG9ydEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3JlcG9ydC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGaWVsZHNMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2ZpZWxkLWxpc3QtbGliL2ZpZWxkcy1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2UgfSBmcm9tICcuLi9lbGVtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVycy9jYXRlZ29yeS1maWx0ZXIvY2F0ZWdvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBTY29wZVR5cGUsIFNjcmVlblR5cGUgfSBmcm9tICcuLi8uLi9maWx0ZXJzL2NvbmRpdGlvbi10eXBlJztcbmltcG9ydCB7IE11bHRpU2VsZWN0RmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9maWx0ZXJzL211bHRpLXNlbGVjdC1maWx0ZXIvbXVsdGktc2VsZWN0LWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBUYWJ1bGFyUmVwb3J0IH0gZnJvbSAnLi4vdGFidWxhci1yZXBvcnQvdGFidWxhci1yZXBvcnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1yZXBvcnQtZmlsdGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0LWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLTxWaWV3IENoaWxkIHJlZmVyZW5jZT4gLS0tLS0tLS0tLS1cbiAgICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKSB0cmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcbiAgICAvLyAtLS0tLS0tLS0tLS0tPCBJbnB1dHM+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBASW5wdXQoKSBmaWx0ZXJzOiBBcnJheTxBeEZpbHRlcj47XG4gICAgQElucHV0KCkgY2F0ZWdvcmllczogQXJyYXk8RmlsdGVyQ2F0ZWdvcnk+O1xuICAgIEBJbnB1dCgpIHJlcG9ydElkOiBudW1iZXI7XG4gICAgQElucHV0KCkgY2hhcnRUeXBlOiBudW1iZXI7XG4gICAgQElucHV0KCkgZmlsdGVyU2NvcGVUeXBlID0gU2NvcGVUeXBlLmxvY2FsO1xuICAgIEBJbnB1dCgpIGFwcFZlcnNpb246IG51bWJlcjtcbiAgICBASW5wdXQoKSBpc0VkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2NyZWVuVHlwZSA9IFNjcmVlblR5cGUucmVwb3J0QnVpbGRlcjtcblxuICAgIC8vPC0tLS0tLS0tLS0tLS08IE91dHB1dHM+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBAT3V0cHV0KCkgc2VuZEZpbHRlclRvRGFzaGJvYXJkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIGZpbHRlckNhdGVnb3J5U2VuZE9uRGFzaGJvYXJkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZGlydHlGbG93Q2hlY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBhcHBseUZpbHRlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvLyA8LS0tLS0tLS0tLS0tLTwgQ29tcG9uZW50IFZhcmlhYmxlPi0tLS0tLS0tLS0tLS0+XG4gICAgY29tbW9uRmlsdGVyQXJyYXk6IGFueSA9W107XG4gICAgY2F0ZWdvcnlMaXN0OiBBcnJheTxGaWx0ZXJDYXRlZ29yeT4gPSBbXTtcbiAgICBkYXRhTW9kZWw6IERhdGFNb2RlbDtcbiAgICBzaG93QXBwbHlGaWx0ZXJFdmVudDogYm9vbGVhbiA9IHRydWU7XG4gICAgZGF0YU1vZGVsVHJlZURpc3BsYXlUeXBlID0gRGF0YU1vZGVsVHJlZURpc3BsYXlUeXBlO1xuICAgIHNjb3BlVHlwZSA9IFNjb3BlVHlwZTtcblxuICAgIC8qXG4gICAgICogU3ViamVjdCBvYmplY3Qgd2hpY2ggaGVscHMgdW5zdWJzY3JpYmUgYWxsIHRoZSBzdWJzY3JpYmVkIG9iamVjdHMgaW4gdGhlIGNvbXBvbmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBjb25zdHJ1Y3RvclxuICAgICAqXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3JlcG9ydEZpbHRlclNlcnZpY2U6IFJlcG9ydEZpbHRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBfZmllbGRzTGlzdFNlcnZpY2U6IEZpZWxkc0xpc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50U2VydmljZTogRWxlbWVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NhdGVnb3J5U2VydmljZTogQ2F0ZWdvcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9tdWx0aVNlbGVjdEZpbHRlclNlcnZpY2U6IE11bHRpU2VsZWN0RmlsdGVyU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYodGhpcy5maWx0ZXJzIHx8IHRoaXMuY2F0ZWdvcmllcyl7XG4gICAgICAgICAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5ID0gW107XG4gICAgICAgICAgICB0aGlzLmdldEFuZFNldEZpbHRlckNhdGVnb3J5RGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE9uIEluaXQgbGlmZSBjeWNsZSBob29rXG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSBNYXQgTWVudVxuICAgICAqL1xuICAgIGNsb3NlTWF0TWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgIH1cblxuICAgIC8qKipcbiAgICAgKiBmb2xsb3dpbmcgbWV0aG9kIGlzIHVzZWQgdG8gZ2V0IGZpbHRlciBhbmQgZmlsdGVyIGNhdGVnb3JpZXMgaW4gYWRkIGZpbHRlciBsaXN0XG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG5cbiAgICBnZXRBbmRTZXRGaWx0ZXJDYXRlZ29yeURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhdGVnb3J5U2VydmljZS5jYXRlZ29yeUxpc3QkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY2F0ZWdvcnlMaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoY2F0ZWdvcnlMaXN0KXtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2F0TGlzdDogQXJyYXk8RmlsdGVyQ2F0ZWdvcnk+ID0gdGhpcy5fcmVwb3J0RmlsdGVyU2VydmljZS5jcmVhdGVGaWx0ZXJDYXRlZ29yeU9iamVjdChjYXRlZ29yeUxpc3QpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHRoaXMuX3JlcG9ydEZpbHRlclNlcnZpY2UuY2hlY2tTZWxlY3RlZENhdGVnb3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0TGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmdldEFsbEZpbHRlcnMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGdldCBhdHRyaWJ1dGUgd2l0aCBzZWxlY3RlZCBhdHRyaWJ1dGVcbiAgICAgICAgdGhpcy5fZmllbGRzTGlzdFNlcnZpY2UuZW50aXRpZXMkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YU1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYoZGF0YU1vZGVsKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhTW9kZWwgPSB0aGlzLl9maWVsZHNMaXN0U2VydmljZS5jcmVhdGVEYXRhTW9kZWxPYmplY3QoZGF0YU1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhTW9kZWwgPSB0aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmNoZWNrU2VsZWN0ZWRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFNb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbEZpbHRlcnMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIC8vdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHB1c2ggZmlsdGVycyBhbmQgY2F0ZWdvcnkgaW50byBhIGNvbW1vbkFycmF5XG5cbiAgICAgIGdldEFsbEZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIC8vIGZpbHRlci5nZW5lcmFsRmlsdGVyVHlwZSA9IDE7XG4gICAgICAgICAgICBpZighdGhpcy5jb21tb25GaWx0ZXJBcnJheS5pbmNsdWRlcyhmaWx0ZXIpKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uRmlsdGVyQXJyYXkucHVzaChmaWx0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5mb3JFYWNoKChsaXN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmKGNhdGVnb3J5LmlkID09PSBsaXN0LmlkICYmIGxpc3QuaXNTZWxlY3RlZCAmJiAhbGlzdC5pc0RlbGV0ZWQpe1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3RbaW5kZXhdID0gY2F0ZWdvcnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjYXRlZ29yeS5nZW5lcmFsRmlsdGVyVHlwZSA9IDI7XG4gICAgICAgICAgICBpZighdGhpcy5jb21tb25GaWx0ZXJBcnJheS5pbmNsdWRlcyhjYXRlZ29yeSkpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25GaWx0ZXJBcnJheS5wdXNoKGNhdGVnb3J5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb21tb25GaWx0ZXJBcnJheS5zb3J0KChhLGIpPT4gKGEuZ3JpZFByb3BlcnRpZXMueCA+IGIuZ3JpZFByb3BlcnRpZXMueCkgPyAxIDogKChiLmdyaWRQcm9wZXJ0aWVzLnggPiBhLmdyaWRQcm9wZXJ0aWVzLngpID8gLTEgOiAwKSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBTZW5kIEZJbHRlciBvbiBEYXNoYm9hcmRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJcbiAgICAgKi9cbiAgICBzZW5kRmlsdGVyVG9EYXNoYm9hcmRFdmVudChmaWx0ZXI6IEF4RmlsdGVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VuZEZpbHRlclRvRGFzaGJvYXJkLmVtaXQoZmlsdGVyKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2VuZCBmaWx0ZXIgY2F0ZWdvcnkgb24gRGFzaGJvYXJkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyQ2F0ZWdvcnlcbiAgICAgKi9cbiAgICBmaWx0ZXJDYXRlZ29yeVNlbmRPbkRhc2hib2FyZChmaWx0ZXJDYXRlZ29yeTogRmlsdGVyQ2F0ZWdvcnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJDYXRlZ29yeVNlbmRPbkRhc2hib2FyZEV2ZW50LmVtaXQoZmlsdGVyQ2F0ZWdvcnkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsIGRpcnR5IGZsb3cgZXZlbnQgZW1pdFxuICAgICAqL1xuICAgIGRpcnR5Rmxvd0NoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcnR5Rmxvd0NoZWNrRXZlbnQuZW1pdCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBPbiBkZXN0cm95XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC91c2UtbGlmZWN5Y2xlLWludGVyZmFjZVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxsIHdoZW4gdGhlIGdsb2JhbCBmaWx0ZXJzIGZpZWxkcyB2YWx1ZXMgYXJlIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIGFwcGx5RmlsdGVyKCk6IHZvaWQge1xuICAgICAgICBpZih0aGlzLmZpbHRlclNjb3BlVHlwZSA9PT0gU2NvcGVUeXBlLmdsb2JhbCl7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50U2VydmljZS5yZWZyZXNoRWxlbWVudERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyRXZlbnQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBmaWx0ZXIgb24gQXR0cmlidXRlIFNlbGVjdC5cbiAgICAgKi9cbiAgICBhZGRGaWx0ZXIoYXR0cmlidXRlOiBBdHRyaWJ1dGUpOiB2b2lke1xuICAgICAgICBjb25zdCBuZXdGaWx0ZXIgPSB0aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlcih0aGlzLmFwcFZlcnNpb24sYXR0cmlidXRlLHRoaXMuZmlsdGVyU2NvcGVUeXBlLHRoaXMuY29tbW9uRmlsdGVyQXJyYXkubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJzLnB1c2gobmV3RmlsdGVyKTtcbiAgICAgICAgdGhpcy5nZXRBbGxGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZGlydHlGbG93Q2hlY2tFdmVudC5lbWl0KCk7XG4gICAgICAgIHRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQgPSAhdGhpcy5zaG93QXBwbHlGaWx0ZXJFdmVudDtcbiAgICAgICAgLy8gbmVlZCBSJkRcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlLnJlZnJlc2hGaWx0ZXJQcm9wZXJ0eSh0aGlzLmNvbW1vbkZpbHRlckFycmF5W3RoaXMuY29tbW9uRmlsdGVyQXJyYXkubGVuZ3RoLTFdKTtcbiAgICAgICAgbGV0IHBhcmVudEZpbHRlckFyciA9IFtdO1xuICAgICAgICBwYXJlbnRGaWx0ZXJBcnIgPSB0aGlzLmNvbW1vbkZpbHRlckFycmF5LmZpbHRlcihcbiAgICAgICAgICAgIGZpbHRlciA9PiBmaWx0ZXIuZ2VuZXJhbEZpbHRlclR5cGUgPT09IDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlLnJlZnJlc2hGaWx0ZXJMaXN0UHJvcGVydHkocGFyZW50RmlsdGVyQXJyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgRmlsdGVyIG9uIGF0dHJpYnV0ZSBkZXNlbGVjdC5cbiAgICAgKi9cbiAgICByZW1vdmVGaWx0ZXIoYXR0cmlidXRlOiBBdHRyaWJ1dGUpOiB2b2lke1xuICAgICAgICB0aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmRlbGV0ZUZpbHRlcihhdHRyaWJ1dGUsdGhpcy5maWx0ZXJzKTtcbiAgICAgICAgdGhpcy5nZXRBbGxGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZGlydHlGbG93Q2hlY2tFdmVudC5lbWl0KCk7XG4gICAgICAgIHRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQgPSAhdGhpcy5zaG93QXBwbHlGaWx0ZXJFdmVudDtcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlLnJlZnJlc2hGaWx0ZXJQcm9wZXJ0eSh0aGlzLmNvbW1vbkZpbHRlckFycmF5W3RoaXMuY29tbW9uRmlsdGVyQXJyYXkubGVuZ3RoLTFdKTtcbiAgICAgICAgbGV0IHBhcmVudEZpbHRlckFyciA9IFtdO1xuICAgICAgICBwYXJlbnRGaWx0ZXJBcnIgPSB0aGlzLmNvbW1vbkZpbHRlckFycmF5LmZpbHRlcihcbiAgICAgICAgICAgIGZpbHRlciA9PiBmaWx0ZXIuZ2VuZXJhbEZpbHRlclR5cGUgPT09IDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbXVsdGlTZWxlY3RGaWx0ZXJTZXJ2aWNlLnJlZnJlc2hGaWx0ZXJMaXN0UHJvcGVydHkocGFyZW50RmlsdGVyQXJyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgQ2F0ZWdvcnkgRmlsdGVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlcbiAgICAgKi9cbiAgICBhZGRDYXRlZ29yeShjYXRlZ29yeTogRmlsdGVyQ2F0ZWdvcnkpOiB2b2lke1xuICAgICAgICBjb25zdCBuZXdDYXRlZ29yeUZpbHRlcj10aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlckNhdGVnb3J5KFxuICAgICAgICAgICAgY2F0ZWdvcnksXG4gICAgICAgICAgICB0aGlzLmFwcFZlcnNpb24sXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkZpbHRlckFycmF5Lmxlbmd0aFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMucHVzaChuZXdDYXRlZ29yeUZpbHRlcik7XG4gICAgICAgIHRoaXMuZ2V0QWxsRmlsdGVycygpO1xuICAgICAgICB0aGlzLmRpcnR5Rmxvd0NoZWNrRXZlbnQuZW1pdCgpO1xuICAgICAgICB0aGlzLnNob3dBcHBseUZpbHRlckV2ZW50ID0gIXRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIENhdGVnb3J5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlcbiAgICAgKi9cbiAgICBkZWxldGVDYXRlZ29yeShjYXRlZ29yeTogRmlsdGVyQ2F0ZWdvcnkpOiB2b2lke1xuICAgICAgICB0aGlzLl9yZXBvcnRGaWx0ZXJTZXJ2aWNlLmRlbGV0ZUZpbHRlckNhdGVnb3J5KGNhdGVnb3J5LHRoaXMuY2F0ZWdvcmllcyk7XG4gICAgICAgIHRoaXMuZ2V0QWxsRmlsdGVycygpO1xuICAgICAgICB0aGlzLmRpcnR5Rmxvd0NoZWNrRXZlbnQuZW1pdCgpO1xuICAgICAgICB0aGlzLnNob3dBcHBseUZpbHRlckV2ZW50ID0gIXRoaXMuc2hvd0FwcGx5RmlsdGVyRXZlbnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBDYWxsZWQgb24gRmlsdGVyIGRlbGV0ZSAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGV2ZW50XG4gICAgICovXG4gICAgZmlsdGVyRGVsZXRlZChmaWx0ZXI6IElBeEZpbHRlcik6IHZvaWR7XG4gICAgICAgIGlmKGZpbHRlciBpbnN0YW5jZW9mIEZpbHRlckNhdGVnb3J5KXtcbiAgICAgICAgICAgIHRoaXMuX3JlcG9ydEZpbHRlclNlcnZpY2UuZGVsZXRlRmlsdGVyQ2F0ZWdvcnkoZmlsdGVyLHRoaXMuY2F0ZWdvcmllcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRBbGxGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZGlydHlGbG93Q2hlY2tFdmVudC5lbWl0KCk7XG4gICAgfVxuICAgIGdldEZpbHRlcnNDb3VudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVycy5maWx0ZXIoZmwgPT4gIWZsLmlzRGVsZXRlZCkubGVuZ3RoID4gMDtcbiAgICAgIH1cbn1cblxuIiwiIDwhLS0gVG8gYWRkIGZpbHRlciBmaWx0ZXIgLS0+XG4gPGRpdiBjbGFzcz1cInJlcG9ydC1maWx0ZXJcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiAqbmdJZiA9IFwiaXNFZGl0YWJsZVwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyLXNlcGVyYXRvcic6IGdldEZpbHRlcnNDb3VudCgpfVwiPlxuICAgIDwhLS0gQWRkIEZpbHRlciBCdXR0b24gLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImxpZ2h0LWJsdWUtYnRuIGF4by1mb250XCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgW25nQ2xhc3NdPVwieydsb2NhbC1maWx0ZXItYnRuJzpzY29wZVR5cGUubG9jYWwgPT09IGZpbHRlclNjb3BlVHlwZX1cIj5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJheG9fZmlsdGVyXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzY29wZVR5cGUuZ2xvYmFsID09PSBmaWx0ZXJTY29wZVR5cGVcIj4gQWRkIEZpbHRlcjwvc3Bhbj48L2J1dHRvbj5cbiAgICAgICAgPCEtLSBNYXQgTWVudSAgLS0+XG4gICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeVBvc2l0aW9uPVwiYmVsb3dcIiBjbGFzcz1cImZpbHRlci1maWVsZC1saXN0XCIgYmFja2Ryb3BDbGFzcz1cInJlcG9ydC1maWx0ZXItbWVudS1iYWNrZHJvcC1jbGFzc1wiPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzdGlja3kgdG9wLTAgYmctd2hpdGUgZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgaC0xMCB6LTEwXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibGlnaHQtYnRuIG1pbi13LTggcHgtMiBweS0wIG1heC1oLTUgaC01IG1pbi1oLTUgbGVhZGluZy01IGF4by1mb250XCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbG9zZU1hdE1lbnUoKVwiID5cbiAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPCEtLSBEYXRlIE1vZGVsIFRyZWUgLS0+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiBjbGFzcz1cImgtZnVsbFwiPlxuICAgICAgICAgICAgPGxpYi1kYXRhLW1vZGVsLXRyZWUgW2RhdGFNb2RlbF09XCJkYXRhTW9kZWxcIiBbZGlzcGxheU1vZGVdPVwiZGF0YU1vZGVsVHJlZURpc3BsYXlUeXBlLnNlbGVjdGlvbkxpc3RcIltjYXRlZ29yaWVzXT1cImNhdGVnb3J5TGlzdFwiXG4gICAgICAgICAgICAgKGF0dHJpYnV0ZVNlbGVjdGVkKT1cImFkZEZpbHRlcigkZXZlbnQpXCIgKGF0dHJpYnV0ZURlc2VsZWN0ZWQpPVwicmVtb3ZlRmlsdGVyKCRldmVudClcIlxuICAgICAgICAgICAgIChjYXRlZ29yeVNlbGVjdGVkKT1cImFkZENhdGVnb3J5KCRldmVudClcIlxuICAgICAgICAgICAgIChjYXRlZ29yeURlc2VsZWN0ZWQpPVwiZGVsZXRlQ2F0ZWdvcnkoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9saWItZGF0YS1tb2RlbC10cmVlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LW1lbnU+XG48L2Rpdj5cblxuIDwhLS0gRmlsdGVyIHJlbmRlcmluZyAtLT5cbjxkaXYgY2xhc3M9XCJmaWx0ZXItY29tcG9uZW50XCIgW25nQ2xhc3NdPVwieydnbG9iYWwtZmlsdGVyJzpzY29wZVR5cGUuZ2xvYmFsID09PSBmaWx0ZXJTY29wZVR5cGUsJ2xvY2FsLWZpbHRlcic6c2NvcGVUeXBlLmdsb2JhbCAhPT0gZmlsdGVyU2NvcGVUeXBlLCAnZGFzaGJvYXJkLWxvY2FsLWZpbHRlcic6IWlzRWRpdGFibGUgJiYgc2NvcGVUeXBlLmdsb2JhbCAhPT0gZmlsdGVyU2NvcGVUeXBlfVwiPlxuICAgIDxmaWx0ZXJzXG4gICAgICAgIGNsYXNzPVwiZmxleCBnYXAteC0yIGl0ZW1zLWNlbnRlclwiXG4gICAgICAgIFtzY29wZVR5cGVdPVwiZmlsdGVyU2NvcGVUeXBlXCJcbiAgICAgICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgICAgIFtjYXRlZ29yaWVzXT1cImNhdGVnb3JpZXNcIlxuICAgICAgICBbc2NyZWVuVHlwZV09XCJzY3JlZW5UeXBlXCJcbiAgICAgICAgW2NvbW1vbkZpbHRlckFycmF5XT1cImNvbW1vbkZpbHRlckFycmF5XCJcbiAgICAgICAgW2NhdGVnb3JpZXNdPVwiY2F0ZWdvcmllc1wiXG4gICAgICAgIFtyZXBvcnRJZF09XCJyZXBvcnRJZFwiXG4gICAgICAgIFtzaG93QXBwbHlGaWx0ZXJFdmVudF09XCJzaG93QXBwbHlGaWx0ZXJFdmVudFwiXG4gICAgICAgIChzZW5kRmlsdGVyVG9EYXNoYm9hcmRFdmVudCk9XCJzZW5kRmlsdGVyVG9EYXNoYm9hcmRFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgKHNlbmRGaWx0ZXJDYXRlZ29yeVRvRGFzaGJvYXJkRXZlbnQpPVwiZmlsdGVyQ2F0ZWdvcnlTZW5kT25EYXNoYm9hcmQoJGV2ZW50KVwiXG4gICAgICAgIChkaXJ0eUZsb3dDaGVja0V2ZW50KT1cImRpcnR5Rmxvd0NoZWNrKClcIlxuICAgICAgICAoYXBwbHlGaWx0ZXJFbWl0KT0gXCJhcHBseUZpbHRlcigpXCJcbiAgICAgICAgKGRlbGV0ZUZpbHRlckVtaXQpPVwiZmlsdGVyRGVsZXRlZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgIDwvZmlsdGVycz5cbjwvZGl2PlxuIl19
|