@openziti/ziti-console-lib 0.6.2 → 0.6.3
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/assets/fonts/zac.eot +0 -0
- package/assets/fonts/zac.svg +3 -1
- package/assets/fonts/zac.ttf +0 -0
- package/assets/fonts/zac.woff +0 -0
- package/assets/fonts/zac.woff2 +0 -0
- package/assets/styles/global.scss +38 -0
- package/assets/styles/icons.css +3 -0
- package/esm2022/lib/features/confirm/confirm.component.mjs +22 -5
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +1 -1
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +2 -2
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +3 -1
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +9 -3
- package/esm2022/lib/features/messaging/growler.component.mjs +2 -2
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +17 -11
- package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +115 -0
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +6 -3
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +8 -5
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +4 -3
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +1 -1
- package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +2 -1
- package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +8 -1
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +2 -2
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +2 -2
- package/esm2022/lib/pages/identities/identities-page.component.mjs +3 -3
- package/esm2022/lib/pages/services/services-page.component.mjs +103 -11
- package/esm2022/lib/pages/services/services-page.service.mjs +135 -8
- package/esm2022/lib/services/node-data.service.mjs +6 -2
- package/esm2022/lib/services/settings-service.class.mjs +2 -1
- package/esm2022/lib/services/settings.service.mjs +2 -1
- package/esm2022/lib/shared/list-page-component.class.mjs +5 -5
- package/esm2022/lib/shared/list-page-service.class.mjs +5 -2
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/lib/ziti-console-lib.module.mjs +6 -3
- package/fesm2022/openziti-ziti-console-lib.mjs +861 -494
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/confirm/confirm.component.d.ts +9 -0
- package/lib/features/confirm/confirm.component.d.ts.map +1 -1
- package/lib/features/data-table/data-table-filter.service.d.ts +1 -0
- package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -1
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +1 -0
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +1 -1
- package/lib/features/preview-list/preview-list.component.d.ts +1 -0
- package/lib/features/preview-list/preview-list.component.d.ts.map +1 -1
- package/lib/features/preview-selections/preview-selections.component.d.ts +39 -0
- package/lib/features/preview-selections/preview-selections.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +2 -1
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +1 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -1
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts.map +1 -1
- package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts +1 -1
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
- package/lib/pages/services/services-page.component.d.ts +9 -1
- package/lib/pages/services/services-page.component.d.ts.map +1 -1
- package/lib/pages/services/services-page.service.d.ts +15 -1
- package/lib/pages/services/services-page.service.d.ts.map +1 -1
- package/lib/services/node-data.service.d.ts.map +1 -1
- package/lib/services/settings-service.class.d.ts +1 -0
- package/lib/services/settings-service.class.d.ts.map +1 -1
- package/lib/services/settings.service.d.ts.map +1 -1
- package/lib/shared/list-page-component.class.d.ts +0 -1
- package/lib/shared/list-page-component.class.d.ts.map +1 -1
- package/lib/shared/list-page-service.class.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +19 -18
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -223,7 +223,7 @@ class TerminatorFormComponent extends ProjectableForm {
|
|
|
223
223
|
});
|
|
224
224
|
}
|
|
225
225
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TerminatorFormComponent, deps: [{ token: i1.TerminatorFormService }, { token: i2.SchemaService }, { token: i3.GrowlerService }, { token: SHAREDZ_EXTENSION }, { token: SETTINGS_SERVICE }, { token: ZITI_DATA_SERVICE }, { token: i4.Router }, { token: i4.ActivatedRoute }, { token: i5.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
226
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TerminatorFormComponent, selector: "lib-configuration", inputs: { formData: "formData", errors: "errors" }, outputs: { close: "close" }, usesInheritance: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n tabindex=\"0\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"(formData.id ? 'Terminator Details' : 'Create Terminator')\"\n [moreActions]=\"formData.moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [saveDisabled]=\"svc.saveDisabled || formDataInvalid\"\n ></lib-form-header>\n <div class=\"terminator-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" [hidden]=\"formView !== 'simple'\">\n <div class=\"form-group-column one-half\">\n <lib-form-field-container\n [title]=\"'Service'\"\n [contentStyle]=\"'z-index: 10003'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedServiceNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedServiceNamedAttributes\"\n [availableNamedAttributes]=\"svc.serviceNamedAttributes\"\n [placeholder]=\"'Select a service'\"\n (addNamedAttribute)=\"serviceAttributeChanged($event)\"\n (namedAttributeRemoved)=\"serviceAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Router'\"\n [contentStyle]=\"'z-index: 10002'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedRouterNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedRouterNamedAttributes\"\n [availableNamedAttributes]=\"svc.routerNamedAttributes\"\n [placeholder]=\"'Select a router'\"\n (addNamedAttribute)=\"routerAttributeChanged($event)\"\n (namedAttributeRemoved)=\"routerAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Identity'\"\n [contentStyle]=\"'z-index: 10001'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedIdentityNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedIdentityNamedAttributes\"\n [availableNamedAttributes]=\"svc.identityNamedAttributes\"\n [placeholder]=\"'Select an identity'\"\n (addNamedAttribute)=\"identityAttributeChanged($event)\"\n (namedAttributeRemoved)=\"identityAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column one-half\">\n <lib-form-field-container\n [title]=\"'Address'\"\n [contentStyle]=\"'z-index: 1001'\"\n >\n <input class=\"form-field-input read-only\" [disabled]=\"true\" [(ngModel)]=\"formData.address\"/>\n </lib-form-field-container>\n <lib-form-field-container\n [showHeader]=\"false\"\n [layout]=\"'row'\"\n [contentStyle]=\"'z-index: 1001'\"\n >\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Binding</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.binding\"/>\n </div>\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Identity Secret</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.identitySecret\"/>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [layout]=\"'row'\"\n [showHeader]=\"false\"\n >\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Hosting Cost</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.cost\" type=\"number\"/>\n </div>\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Precedence</span>\n <select\n [(ngModel)]=\"formData.precedence\"\n [disabled]=\"true\"\n id=\"hostingPrecedence\"\n class=\"form-field-dropdown read-only\"\n >\n <option value=\"default\">Default</option>\n <option value=\"required\">Required</option>\n <option value=\"failed\">Failed</option>\n </select>\n </div>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".terminator-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:var(--gapXL)}.config-type-select.disabled{opacity:.7;pointer-events:none}::ng-deep .terminator-form-container select:disabled,::ng-deep .terminator-form-container input:disabled{opacity:.75!important;cursor:text;background-color:var(--stroke)!important}@media (max-width: 1524px){.terminator-form-container .projectable-form-main-column{max-width:620px}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i8.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
|
|
226
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TerminatorFormComponent, selector: "lib-configuration", inputs: { formData: "formData", errors: "errors" }, outputs: { close: "close" }, usesInheritance: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n tabindex=\"0\"\n>\n <lib-form-header\n [data]=\"formData\"\n [title]=\"(formData.id ? 'Terminator Details' : 'Create Terminator')\"\n [moreActions]=\"formData.moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [saveDisabled]=\"svc.saveDisabled || formDataInvalid\"\n ></lib-form-header>\n <div class=\"terminator-form-container projectable-form-container\">\n <div class=\"projectable-form-main-column form-group-row\" [hidden]=\"formView !== 'simple'\">\n <div class=\"form-group-column one-half\">\n <lib-form-field-container\n [title]=\"'Service'\"\n [contentStyle]=\"'z-index: 10003'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedServiceNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedServiceNamedAttributes\"\n [availableNamedAttributes]=\"svc.serviceNamedAttributes\"\n [placeholder]=\"'Select a service'\"\n (addNamedAttribute)=\"serviceAttributeChanged($event)\"\n (namedAttributeRemoved)=\"serviceAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Router'\"\n [contentStyle]=\"'z-index: 10002'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedRouterNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedRouterNamedAttributes\"\n [availableNamedAttributes]=\"svc.routerNamedAttributes\"\n [placeholder]=\"'Select a router'\"\n (addNamedAttribute)=\"routerAttributeChanged($event)\"\n (namedAttributeRemoved)=\"routerAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Identity'\"\n [contentStyle]=\"'z-index: 10001'\"\n >\n <input class=\"form-field-input read-only\" [(ngModel)]=\"selectedIdentityNamedAttribute\" [disabled]=\"true\"/>\n <!--<lib-tag-selector\n [(selectedNamedAttributes)]=\"svc.selectedIdentityNamedAttributes\"\n [availableNamedAttributes]=\"svc.identityNamedAttributes\"\n [placeholder]=\"'Select an identity'\"\n (addNamedAttribute)=\"identityAttributeChanged($event)\"\n (namedAttributeRemoved)=\"identityAttributeChanged()\"\n ></lib-tag-selector>-->\n </lib-form-field-container>\n </div>\n <div class=\"form-group-column one-half\">\n <lib-form-field-container\n [title]=\"'Address'\"\n [contentStyle]=\"'z-index: 1001'\"\n >\n <input class=\"form-field-input read-only\" [disabled]=\"true\" [(ngModel)]=\"formData.address\"/>\n </lib-form-field-container>\n <lib-form-field-container\n [showHeader]=\"false\"\n [layout]=\"'row'\"\n [contentStyle]=\"'z-index: 1001'\"\n >\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Binding</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.binding\"/>\n </div>\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Identity Secret</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.identitySecret\"/>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [layout]=\"'row'\"\n [showHeader]=\"false\"\n >\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Hosting Cost</span>\n <input class=\"form-field-input\" [disabled]=\"true\" [(ngModel)]=\"formData.cost\" type=\"number\"/>\n </div>\n <div class=\"form-field-label-container\">\n <span class=\"form-field-title\">Precedence</span>\n <select\n [(ngModel)]=\"formData.precedence\"\n [disabled]=\"true\"\n id=\"hostingPrecedence\"\n class=\"form-field-dropdown read-only\"\n >\n <option value=\"default\">Default</option>\n <option value=\"required\">Required</option>\n <option value=\"failed\">Failed</option>\n </select>\n </div>\n </lib-form-field-container>\n </div>\n </div>\n <div class=\"form-group-column\" *ngIf=\"formView === 'raw'\">\n <lib-json-view *ngIf=\"formData\" [(data)]=\"formData\"></lib-json-view>\n </div>\n </div>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".terminator-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:var(--gapXL)}.config-type-select.disabled{opacity:.7;pointer-events:none}::ng-deep .terminator-form-container select:disabled,::ng-deep .terminator-form-container input:disabled{opacity:.75!important;cursor:text;background-color:var(--stroke)!important}@media (max-width: 1524px){.terminator-form-container .projectable-form-main-column{max-width:620px}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText"], outputs: ["formViewChange", "actionRequested"] }, { kind: "component", type: i8.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }, { kind: "component", type: i9.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: i10.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
|
|
227
227
|
}
|
|
228
228
|
export { TerminatorFormComponent };
|
|
229
229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TerminatorFormComponent, decorators: [{
|
|
@@ -44,6 +44,7 @@ class SideToolbarComponent {
|
|
|
44
44
|
this.zacService.initZac();
|
|
45
45
|
app.init();
|
|
46
46
|
this.zacService.initZACButtonListener();
|
|
47
|
+
this.settingsService.initApiVersions(this.settingsService?.settings?.selectedEdgeController);
|
|
47
48
|
this.settingsService.settingsChange.subscribe((results) => {
|
|
48
49
|
this.hideNav = results.hideNav;
|
|
49
50
|
this.initSideBar();
|
|
@@ -125,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
125
126
|
type: ViewChild,
|
|
126
127
|
args: ['identityqr']
|
|
127
128
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9zaWRlYmFycy9zaWRlLXRvb2xiYXIvc2lkZS10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9zaWRlYmFycy9zaWRlLXRvb2xiYXIvc2lkZS10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQU1yRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sdUNBQXVDLENBQUM7QUFFN0YsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7OztBQUc3QixhQUFhO0FBQ2IsTUFBTSxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFDakQsTUFLYSxvQkFBb0I7SUFRL0IsWUFDc0MsZUFBZ0MsRUFDMUQsTUFBYyxFQUNlLFVBQWtDLEVBQ3BDLFlBQStCLEVBQzFELGFBQW1DO1FBSlQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzFELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZSxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDMUQsa0JBQWEsR0FBYixhQUFh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QUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQztJQUMvRCxDQUFDOytHQXRGVSxvQkFBb0Isa0JBU25CLGdCQUFnQixtQ0FFaEIsbUJBQW1CLGFBQ25CLGlCQUFpQjttR0FabEIsb0JBQW9CLHVQQ3BDakMsK3BYQTZPTTs7U0R6TU8sb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkFhdkIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsaUJBQWlCOytFQU5QLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDSyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZXR0aW5nc1NlcnZpY2UsIFNFVFRJTkdTX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7Y2xvbmVEZWVwfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFphY1dyYXBwZXJTZXJ2aWNlQ2xhc3MgfSBmcm9tICcuLi8uLi93cmFwcGVycy96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge1pBQ19XUkFQUEVSX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi93cmFwcGVycy96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQgeyBaQUNfTE9HSU5fU0VSVklDRSwgTG9naW5TZXJ2aWNlQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sb2dpbi1zZXJ2aWNlLmNsYXNzJztcblxuaW1wb3J0IHtkZWZlcn0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtDb25zb2xlRXZlbnRzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2NvbnNvbGUtZXZlbnRzLnNlcnZpY2VcIjtcblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qge2hlYWRlciwgYXBwLCBjb21tYW5kcywgbW9kYWwsICR9ID0gd2luZG93O1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlVG9vbGJhckNvbXBvbmVudCB7XG4gIGhpZGVOYXY6Ym9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgbWVudU9wZW4gPSBmYWxzZTtcbiAgc2lkZUJhckluaXQgPSBmYWxzZTtcbiAgYWRkQW55T3BlbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2FwaWpzb24nKSBhcGlqc29uOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpZGVudGl0eXFyJykgaWRlbnRpdHlxcjogRWxlbWVudFJlZjtcbiAgY29uc3RydWN0b3IoXG4gICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgQEluamVjdChaQUNfV1JBUFBFUl9TRVJWSUNFKSBwcml2YXRlIHphY1NlcnZpY2U6IFphY1dyYXBwZXJTZXJ2aWNlQ2xhc3MsXG4gICAgICBASW5qZWN0KFpBQ19MT0dJTl9TRVJWSUNFKSBwcml2YXRlIGxvZ2luU2VydmljZTogTG9naW5TZXJ2aWNlQ2xhc3MsXG4gICAgICBwcml2YXRlIGNvbnNvbGVFdmVudHM6IENvbnNvbGVFdmVudHNTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy56YWNTZXJ2aWNlLmluaXRaYWMoKTtcbiAgICBhcHAuaW5pdCgpO1xuICAgIHRoaXMuemFjU2VydmljZS5pbml0WkFDQnV0dG9uTGlzdGVuZXIoKTtcbiAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZS5zdWJzY3JpYmUoKHJlc3VsdHM6YW55KSA9PiB7XG4gICAgICB0aGlzLmhpZGVOYXYgPSByZXN1bHRzLmhpZGVOYXY7XG4gICAgICB0aGlzLmluaXRTaWRlQmFyKCk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0U2lkZUJhcigpIHtcbiAgICBpZiAodGhpcy5zaWRlQmFySW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3dbJ2hlYWRlciddLmluaXQoKTtcbiAgICB3aW5kb3dbJ2xvY2FsZSddLmluaXQoKTtcbiAgICB3aW5kb3dbJ21vZGFsJ10uaW5pdCgpO1xuICAgIHRoaXMuc2lkZUJhckluaXQgPSB0cnVlO1xuICB9XG5cbiAgdG9nZ2xlTmF2KCkge1xuICAgIHRoaXMuaGlkZU5hdiA9ICF0aGlzLmhpZGVOYXY7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB7XG4gICAgICAuLi50aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncywgaGlkZU5hdjogdGhpcy5oaWRlTmF2XG4gICAgfVxuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldChzZXR0aW5ncyk7XG4gIH1cblxuICB0b2dnbGVNZW51KCkge1xuICAgIHRoaXMubWVudU9wZW4gPSAhdGhpcy5tZW51T3BlbjtcbiAgfVxuXG4gIGNsb3NlTWVudSgpIHtcbiAgICB0aGlzLm1lbnVPcGVuID0gZmFsc2U7XG4gIH1cblxuICBkb0xvZ291dCgpIHtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5sb2dvdXQoKTtcbiAgfVxuXG4gIGNsb3NlQWRkKCkge1xuICAgIHRoaXMuYWRkQW55T3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgc2hvd0FkZCgpIHtcbiAgICBtb2RhbD8uY2xvc2UoKTtcbiAgICB0aGlzLmFkZEFueU9wZW4gPSB0cnVlO1xuICAgIHRoaXMuY29uc29sZUV2ZW50cy5jbG9zZVNpZGVNb2RhbC5lbWl0KHRydWUpO1xuICAgIGhlYWRlci5zaG93QWRkKCk7XG4gICAgdGhpcy5hcGlqc29uLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gYDx0ZXh0YXJlYSBpZD1cIkFwaUpzb25cIj48L3RleHRhcmVhPmA7XG4gICAgdGhpcy5pZGVudGl0eXFyLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgJChcIiNJbmxpbmVBZGRJZGVudGl0eUJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgJChcIiNJbmxpbmVBZGRTZXJ2aWNlQnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAkKFwiI0NyZWF0ZUJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgJChcIiNDcmVhdGVJZEJ1dHRvblwiKS5vZmYoJ2NsaWNrJyk7XG4gICAgJChcIiNDcmVhdGVCdXR0b25cIikuY2xpY2sod2luZG93WydhcHAnXS5jcmVhdGVTU2VydmljZSk7XG4gICAgJChcIiNDcmVhdGVJZEJ1dHRvblwiKS5jbGljayh3aW5kb3dbJ2FwcCddLmNyZWF0ZUlkKTtcbiAgICAkKFwiI0lubGluZUFkZElkZW50aXR5QnV0dG9uXCIpLmNsaWNrKHdpbmRvd1snYXBwJ10uc2hvd0lubGluZUlkKTtcbiAgICAkKFwiI0lubGluZUFkZFNlcnZpY2VCdXR0b25cIikuY2xpY2sod2luZG93WydhcHAnXS5zaG93SW5saW5lU2VydmljZSk7XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgY29tbWFuZHMuaW5pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1haWxTdXBwb3J0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zdXBwb3J0ZWRGZWF0dXJlcz8ubWFpbGVyO1xuICB9XG5cbiAgZ2V0IG9yZ1N1cHBvcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnN1cHBvcnRlZEZlYXR1cmVzPy5vcmdhbml6YXRpb247XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzaWRlVG9vbGJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0b3BCdXR0b25zXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJOYXZpZ2F0aW9uQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGUgbWFpbiBBcmVhTmF2aWdhdGlvbiBzZWxlY3RlZFwiIChjbGljayk9XCJ0b2dnbGVOYXYoKTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24tZ2xvYmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJOZXR3b3JrSG92ZXJcIiBjbGFzcz1cImhvdmVyXCIgZGF0YS1pMThuPVwiTmV0d29ya1NldHRpbmdzXCI+TmV0d29yayBTZXR0aW5nczwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkFkZEJ1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlXCIgZGF0YS1ob3Zlcj1cIkFkZEhvdmVyXCIgKGNsaWNrKT1cInNob3dBZGQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJBZGRIb3ZlclwiIGNsYXNzPVwiaG92ZXJcIj5BZGQgTmV3PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YSBbcm91dGVyTGlua109XCInL2F0dHJpYnV0ZXMnXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiQXR0cmlidXRlc0J1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlXCIgZGF0YS1ob3Zlcj1cIkF0dHJpYnV0ZUhvdmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24taGFzaFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJBdHRyaWJ1dGVIb3ZlclwiIGNsYXNzPVwiaG92ZXJcIj5BdHRyaWJ1dGUgRXhwbG9yZXI8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2E+XG4gICAgICAgIDxkaXYgaWQ9XCJTZWFyY2hCdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZVwiIGRhdGEtaG92ZXI9XCJTZWFyY2hIb3ZlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2VkXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIlNlYXJjaEhvdmVyXCIgY2xhc3M9XCJob3ZlclwiIGRhdGEtaTE4bj1cIlNlYXJjaFwiPlNlYXJjaDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYm90dG9tQnV0dG9uc1wiPlxuICAgICAgICA8ZGl2IGlkPVwiQWxlcnRCdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJBbGFybUNvdW50XCIgY2xhc3M9XCJjb3VudFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkhlbHBCdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZSBBcmVhU3VwcG9ydFwiIGRhdGEtbW9kYWw9XCJBZGRNZXNzYWdlTW9kYWxcIiAqbmdJZj1cIm1haWxTdXBwb3J0ZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2VkXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIk9yZ0J1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlIEFyZWFPcmdhbml6YXRpb25cIiBkYXRhLW9wZW49XCJBcmVhT3JnYW5pemF0aW9uXCIgW3JvdXRlckxpbmtdPVwiJy9zZXJ2ZXJzJ1wiICpuZ0lmPVwib3JnU3VwcG9ydGVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xpY2tlZFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJQcm9maWxlQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGUgbWFpblwiIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlTWVudSgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJQcm9maWxlTWVudVwiIGNsYXNzPVwibWVudVwiIFtuZ0NsYXNzXT1cIntvcGVuOiBtZW51T3Blbn1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudXRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIlByb2ZpbGVCdXR0b25cIiBjbGFzcz1cImxpbmtcIiBkYXRhLWdvPVwiL3Byb2ZpbGVcIiBkYXRhLWkxOG49XCJFZGl0UHJvZmlsZVwiPkVkaXQgUHJvZmlsZTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJTZXR0aW5nc0J1dHRvblwiIGNsYXNzPVwibGlua1wiIGRhdGEtZ289XCIvc2V0dGluZ3NcIiBkYXRhLWkxOG49XCJQZXJzb25hbFNldHRpbmdzXCI+UGVyc29uYWxcbiAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3NcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiTG9nb3V0QnV0dG9uXCIgY2xhc3M9XCJsaW5rXCIgKGNsaWNrKT1cImRvTG9nb3V0KClcIj5Mb2dvdXQ8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIFN1Ym1pdCBCdWcgVUkgLS0+XG48ZGl2IGlkPVwiQWRkTWVzc2FnZU1vZGFsXCIgY2xhc3M9XCJtb2RhbCBib3ggZnVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzaXplZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiIChjbGljayk9XCJjbG9zZUFkZCgpXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VUaXRsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIiBkYXRhLWkxOG49XCJNZXNzYWdlU3ViVGl0bGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwbGl0IHVuc3BsaXRcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNlbmROYW1lXCIgZGF0YS1pMThuPVwiTWVzc2FnZU5hbWVcIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIlNlbmROYW1lXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCI1MDBcIiBkYXRhLWkxOG49XCJFbnRlck5hbWVcIi8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNlbmRFTWFpbFwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VFTWFpbFwiPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiU2VuZEVNYWlsXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCI1MDBcIiBkYXRhLWkxOG49XCJFbnRlckVNYWlsXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsIGRhdGEtaTE4bj1cIk1lc3NhZ2VcIj48L2xhYmVsPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwiU2VuZE1lc3NhZ2VcIiBkYXRhLWkxOG49XCJNZXNzYWdlUGxhY2Vob2xkZXJcIj48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsIGlkPVwiTWVzc2FnZVR5cGVcIiBkYXRhLWkxOG49XCJNZXNzYWdlVHlwZVwiPjwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIHF1YWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG9wdGlvblwiIGRhdGEtdHlwZT1cImJ1Z1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24tYnVnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRzXCIgZGF0YS1pMThuPVwiQnVnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94IGljb24tY2hlY2tcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgb3B0aW9uXCIgZGF0YS10eXBlPVwiZmVhdHVyZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24tYnVsYlwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50c1wiIGRhdGEtaTE4bj1cIkZlYXR1cmVSZXF1ZXN0XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94IGljb24tY2hlY2tcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgb3B0aW9uXCIgZGF0YS10eXBlPVwibG92ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24taGVhcnRzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRzXCIgZGF0YS1pMThuPVwiTG92ZUxldHRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveCBpY29uLWNoZWNrXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG9wdGlvblwiIGRhdGEtdHlwZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbiBpY29uLXF1ZXN0aW9uLXNpZ25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudHNcIiBkYXRhLWkxOG49XCJNZXNzYWdlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94IGljb24tY2hlY2tcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvdmVkXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua0J1dHRvbiBjbG9zZXJcIiBkYXRhLWkxOG49XCJPb3BzXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiU2VuZE1lc3NhZ2VCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIlNlbmRcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgaWQ9XCJOb3RpZmljYXRpb25zTWVudVwiPlxuICAgIDxkaXYgaWQ9XCJOb3RpZmljYXRpb25NZW51Q2xvc2VcIiBjbGFzcz1cImNsb3NlIGljb24tY2xvc2VcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIgdGl0bGVcIiBkYXRhLWkxOG49XCJSZWNlbnROb3RpZmljYXRpb25zXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJDbGVhck5vdGlmaWNhdGlvbnNCdXR0b25cIiBjbGFzcz1cInN1YkxpbmtcIiBkYXRhLWkxOG49XCJDbGVhck5vdGlmaWNhdGlvbnNcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaHJcIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwiTm90aWZpY2F0aW9uc0xpc3RcIj48L2Rpdj5cbjwvZGl2PlxuPGRpdiBpZD1cIk5vdGlmaWNhdGlvblRlbXBsYXRlXCIgY2xhc3M9XCJncm93bGVyIHJvdyB0ZW1wbGF0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiID57eyd7e2xldmVsfX0nfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIj57eyd7e3N1YnRpdGxlfX0nfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGltZVwiPnt7J3t7dGltZX19J319PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj57eyd7e21lc3NhZ2V9fSd9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpY29uXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoYXNzZXRzL2ltYWdlcy97eyd7e3R5cGV9fSd9fS5wbmcpXCI+PC9kaXY+XG48L2Rpdj5cbjxkaXYgaWQ9XCJBZGRBbnlNb2RhbFwiIGNsYXNzPVwibW9kYWwgYm94XCIgc3R5bGU9XCJoZWlnaHQ6IGZpdC1jb250ZW50OyB3aWR0aDogNjAwcHg7IHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24pO1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZSBpY29uLWNsb3NlXCI+PC9kaXY+XG4gICAgPGRpdiBpZD1cIlNlbGVjdDFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiQWRkVGl0bGVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNlbGVjdG9yXCIgY2xhc3M9XCJncmlkIGR1YWxcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJJbmxpbmVBZGRJZGVudGl0eUJ1dHRvblwiIGNsYXNzPVwiaWNvbkJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBpY29uLWlkZW50aXR5XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgZGF0YS1pMThuPVwiQWRkSWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklubGluZUFkZFNlcnZpY2VCdXR0b25cIiBjbGFzcz1cImljb25CdXR0b25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UgaWNvbi1zZXJ2aWNlc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIGRhdGEtaTE4bj1cIkFkZFNlcnZpY2VcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJJbmxpbmVJZGVudGl0eUFyZWFcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgY2xhc3M9XCJhbnlhZGRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiQWRkU2ltcGxlSWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5TG9hZGVyXCIgY2xhc3M9XCJjZW50ZXJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGRzLXJpcHBsZVwiPjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eTFcIiBjbGFzcz1cImFueWlkXCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiSWROYW1lXCIgZGF0YS1pMThuPVwiTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJJZE5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwXCIgZGF0YS1pMThuPVwiRW50ZXJOYW1lXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJJZFJvbGVzXCIgZGF0YS1pMThuPVwiUm9sZUF0dHJpYnV0ZXNcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIklkUm9sZXNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiQ3JlYXRlSWRCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIkNyZWF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHkyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGNsYXNzPVwiYW55aWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlRckNvZGVcIiAjaWRlbnRpdHlxcj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5RG93bmxvYWRcIiBjbGFzcz1cImxpbmtCdXR0b25cIiBkYXRhLWkxOG49XCJEb3dubG9hZEpXVFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJEb25lSWRCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIkRvbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJJbmxpbmVTZXJ2aWNlQXJlYVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBjbGFzcz1cImFueWFkZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRTaW1wbGVTZXJ2aWNlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTU2VydmljZUxvYWRlclwiIGNsYXNzPVwiY2VudGVyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxkcy1yaXBwbGVcIj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiU2VydmljZTFcIiBjbGFzcz1cImFueXNlcnZpY2VcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJTU2VydmljZU5hbWVcIiBkYXRhLWkxOG49XCJTZXJ2aWNlTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJTU2VydmljZU5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwXCIgZGF0YS1pMThuPVwiRW50ZXJOYW1lXCIgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJXaGVyZUhvc3RlZFwiIGRhdGEtaTE4bj1cIldoZXJlSG9zdGVkXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJXaGVyZUhvc3RlZFwiPjwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldoYXRJc0l0XCIgZGF0YS1pMThuPVwiV2hhdFNoYXJlXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFkZHJlc3NGdWxsXCI+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cIkhvc3RlZFByb3RvY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0Y3BcIj50Y3A8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInVkcFwiPnVkcDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkhvc3RlZEhvc3RcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiIHZhbHVlPVwibG9jYWxob3N0XCIgZGF0YS1pMThuPVwiRWdIb3N0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3N0ZWRQb3J0XCIgdHlwZT1cIm51bWJlclwiIG1heGxlbmd0aD1cIjEwXCIgdmFsdWU9XCI4MFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJXaG9BY2Nlc3Nlc1wiIGRhdGEtaTE4bj1cIldob0FjY2Vzc2VzXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJXaG9BY2Nlc3Nlc1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIklzRW5jcnlwdGlvblJlcXVpcmVkXCIgY2xhc3M9XCJmb3JtaW5mb1wiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgY2hlY2tMYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJTaW1wbGVFbmNyeXB0aW9uUmVxdWlyZWRcIiBjbGFzcz1cInRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGVMYWJlbFwiIGRhdGEtaTE4bj1cIlJlcXVpcmVFbmNyeXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJIb3dUb1wiIGRhdGEtaTE4bj1cIkhvd1NoYXJlXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGFkZHJlc3NQb3J0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG93VG9cIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiIGRhdGEtaTE4bj1cIkVnSG9zdFwiIC8+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG93VG9Qb3J0XCIgdHlwZT1cIm51bWJlclwiIG1heGxlbmd0aD1cIjEwXCIgdmFsdWU9XCI4MFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtCdXR0b24gY2xvc2VyXCIgZGF0YS1pMThuPVwiQ2FuY2VsXCIgc3R5bGU9XCJ3aWR0aDogZml0LWNvbnRlbnQ7XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkNyZWF0ZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiQ3JlYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlMlwiIGNsYXNzPVwiYW55c2VydmljZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJTZXJ2aWNlSGFwcGVuXCIgZGF0YS1pMThuPVwiU2VydmljZUhhcHBlblwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiU2VydmljZUhhcHBlblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJEb25lU2VydmljZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiRG9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIk9wZXJhdGlvbkNvbW1hbmRzXCIgY2xhc3M9XCJjb21tYW5kc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJFeGVjdXRpb25PcGVyYXRpb25zXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJFeGVjdXRpb25TdGVwc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWNvbkRvd25sb2FkXCIgY2xhc3M9XCJpY29uIGljb24tZG93bmxvYWRcIj48L2Rpdj5cbiAgICAgICAgPGxhYmVsIGRhdGEtaTE4bj1cIkNMSUNvbW1hbmRzXCI+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIkNMSUNvbW1hbmRzXCIgdHlwZT1cInRleHRcIiByZWFkb25seS8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiBkYXRhLWNvcHk9XCJDTElDb21tYW5kc1wiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxhYmVsIGRhdGEtaTE4bj1cIkFQSUNhbGxzXCI+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIkFwaUNhbGxcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiBkYXRhLWNvcHk9XCJBcGlDYWxsXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPGRpdiAjYXBpanNvbj48dGV4dGFyZWEgaWQ9XCJBcGlKc29uXCI+PC90ZXh0YXJlYT48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weSBzd2FwXCIgZGF0YS1jb3B5PVwiQXBpSnNvblwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+Il19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9zaWRlYmFycy9zaWRlLXRvb2xiYXIvc2lkZS10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9zaWRlYmFycy9zaWRlLXRvb2xiYXIvc2lkZS10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQU1yRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sdUNBQXVDLENBQUM7QUFFN0YsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7OztBQUc3QixhQUFhO0FBQ2IsTUFBTSxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFDakQsTUFLYSxvQkFBb0I7SUFRL0IsWUFDc0MsZUFBZ0MsRUFDMUQsTUFBYyxFQUNlLFVBQWtDLEVBQ3BDLFlBQStCLEVBQzFELGFBQW1DO1FBSlQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzFELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZSxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDMUQsa0JBQWEsR0FBYixhQUFh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QUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEUsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNULFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0lBQy9ELENBQUM7K0dBdkZVLG9CQUFvQixrQkFTbkIsZ0JBQWdCLG1DQUVoQixtQkFBbUIsYUFDbkIsaUJBQWlCO21HQVpsQixvQkFBb0IsdVBDcENqQywrcFhBNk9NOztTRHpNTyxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7OzBCQWF2QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxpQkFBaUI7K0VBTlAsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNLLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZSwgU0VUVElOR1NfU0VSVklDRX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtjbG9uZURlZXB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgWmFjV3JhcHBlclNlcnZpY2VDbGFzcyB9IGZyb20gJy4uLy4uL3dyYXBwZXJzL3phYy13cmFwcGVyLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7WkFDX1dSQVBQRVJfU0VSVklDRX0gZnJvbSBcIi4uLy4uL3dyYXBwZXJzL3phYy13cmFwcGVyLXNlcnZpY2UuY2xhc3NcIjtcbmltcG9ydCB7IFpBQ19MT0dJTl9TRVJWSUNFLCBMb2dpblNlcnZpY2VDbGFzcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvZ2luLXNlcnZpY2UuY2xhc3MnO1xuXG5pbXBvcnQge2RlZmVyfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0NvbnNvbGVFdmVudHNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvY29uc29sZS1ldmVudHMuc2VydmljZVwiO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7aGVhZGVyLCBhcHAsIGNvbW1hbmRzLCBtb2RhbCwgJH0gPSB3aW5kb3c7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc2lkZS10b29sYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZGUtdG9vbGJhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVUb29sYmFyQ29tcG9uZW50IHtcbiAgaGlkZU5hdjpib29sZWFuIHwgdW5kZWZpbmVkO1xuICBtZW51T3BlbiA9IGZhbHNlO1xuICBzaWRlQmFySW5pdCA9IGZhbHNlO1xuICBhZGRBbnlPcGVuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnYXBpanNvbicpIGFwaWpzb246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lkZW50aXR5cXInKSBpZGVudGl0eXFyOiBFbGVtZW50UmVmO1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHJpdmF0ZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICBASW5qZWN0KFpBQ19XUkFQUEVSX1NFUlZJQ0UpIHByaXZhdGUgemFjU2VydmljZTogWmFjV3JhcHBlclNlcnZpY2VDbGFzcyxcbiAgICAgIEBJbmplY3QoWkFDX0xPR0lOX1NFUlZJQ0UpIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2VDbGFzcyxcbiAgICAgIHByaXZhdGUgY29uc29sZUV2ZW50czogQ29uc29sZUV2ZW50c1NlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnphY1NlcnZpY2UuaW5pdFphYygpO1xuICAgIGFwcC5pbml0KCk7XG4gICAgdGhpcy56YWNTZXJ2aWNlLmluaXRaQUNCdXR0b25MaXN0ZW5lcigpO1xuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLmluaXRBcGlWZXJzaW9ucyh0aGlzLnNldHRpbmdzU2VydmljZT8uc2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIpO1xuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzQ2hhbmdlLnN1YnNjcmliZSgocmVzdWx0czphbnkpID0+IHtcbiAgICAgIHRoaXMuaGlkZU5hdiA9IHJlc3VsdHMuaGlkZU5hdjtcbiAgICAgIHRoaXMuaW5pdFNpZGVCYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRTaWRlQmFyKCkge1xuICAgIGlmICh0aGlzLnNpZGVCYXJJbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHdpbmRvd1snaGVhZGVyJ10uaW5pdCgpO1xuICAgIHdpbmRvd1snbG9jYWxlJ10uaW5pdCgpO1xuICAgIHdpbmRvd1snbW9kYWwnXS5pbml0KCk7XG4gICAgdGhpcy5zaWRlQmFySW5pdCA9IHRydWU7XG4gIH1cblxuICB0b2dnbGVOYXYoKSB7XG4gICAgdGhpcy5oaWRlTmF2ID0gIXRoaXMuaGlkZU5hdjtcbiAgICBjb25zdCBzZXR0aW5ncyA9IHtcbiAgICAgIC4uLnRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLCBoaWRlTmF2OiB0aGlzLmhpZGVOYXZcbiAgICB9XG4gICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0KHNldHRpbmdzKTtcbiAgfVxuXG4gIHRvZ2dsZU1lbnUoKSB7XG4gICAgdGhpcy5tZW51T3BlbiA9ICF0aGlzLm1lbnVPcGVuO1xuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMubWVudU9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGRvTG9nb3V0KCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLmxvZ291dCgpO1xuICB9XG5cbiAgY2xvc2VBZGQoKSB7XG4gICAgdGhpcy5hZGRBbnlPcGVuID0gZmFsc2U7XG4gIH1cblxuICBzaG93QWRkKCkge1xuICAgIG1vZGFsPy5jbG9zZSgpO1xuICAgIHRoaXMuYWRkQW55T3BlbiA9IHRydWU7XG4gICAgdGhpcy5jb25zb2xlRXZlbnRzLmNsb3NlU2lkZU1vZGFsLmVtaXQodHJ1ZSk7XG4gICAgaGVhZGVyLnNob3dBZGQoKTtcbiAgICB0aGlzLmFwaWpzb24ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBgPHRleHRhcmVhIGlkPVwiQXBpSnNvblwiPjwvdGV4dGFyZWE+YDtcbiAgICB0aGlzLmlkZW50aXR5cXIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAkKFwiI0lubGluZUFkZElkZW50aXR5QnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAkKFwiI0lubGluZUFkZFNlcnZpY2VCdXR0b25cIikub2ZmKCdjbGljaycpO1xuICAgICQoXCIjQ3JlYXRlQnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAkKFwiI0NyZWF0ZUlkQnV0dG9uXCIpLm9mZignY2xpY2snKTtcbiAgICAkKFwiI0NyZWF0ZUJ1dHRvblwiKS5jbGljayh3aW5kb3dbJ2FwcCddLmNyZWF0ZVNTZXJ2aWNlKTtcbiAgICAkKFwiI0NyZWF0ZUlkQnV0dG9uXCIpLmNsaWNrKHdpbmRvd1snYXBwJ10uY3JlYXRlSWQpO1xuICAgICQoXCIjSW5saW5lQWRkSWRlbnRpdHlCdXR0b25cIikuY2xpY2sod2luZG93WydhcHAnXS5zaG93SW5saW5lSWQpO1xuICAgICQoXCIjSW5saW5lQWRkU2VydmljZUJ1dHRvblwiKS5jbGljayh3aW5kb3dbJ2FwcCddLnNob3dJbmxpbmVTZXJ2aWNlKTtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICBjb21tYW5kcy5pbml0KCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWFpbFN1cHBvcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnN1cHBvcnRlZEZlYXR1cmVzPy5tYWlsZXI7XG4gIH1cblxuICBnZXQgb3JnU3VwcG9ydGVkKCkge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzU2VydmljZT8uc3VwcG9ydGVkRmVhdHVyZXM/Lm9yZ2FuaXphdGlvbjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNpZGVUb29sYmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cInRvcEJ1dHRvbnNcIj5cbiAgICAgICAgPGRpdiBpZD1cIk5hdmlnYXRpb25CdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZSBtYWluIEFyZWFOYXZpZ2F0aW9uIHNlbGVjdGVkXCIgKGNsaWNrKT1cInRvZ2dsZU5hdigpO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1nbG9iZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIk5ldHdvcmtIb3ZlclwiIGNsYXNzPVwiaG92ZXJcIiBkYXRhLWkxOG49XCJOZXR3b3JrU2V0dGluZ3NcIj5OZXR3b3JrIFNldHRpbmdzPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiQWRkQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGVcIiBkYXRhLWhvdmVyPVwiQWRkSG92ZXJcIiAoY2xpY2spPVwic2hvd0FkZCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIkFkZEhvdmVyXCIgY2xhc3M9XCJob3ZlclwiPkFkZCBOZXc8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIicvYXR0cmlidXRlcydcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJBdHRyaWJ1dGVzQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGVcIiBkYXRhLWhvdmVyPVwiQXR0cmlidXRlSG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1oYXNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkF0dHJpYnV0ZUhvdmVyXCIgY2xhc3M9XCJob3ZlclwiPkF0dHJpYnV0ZSBFeHBsb3JlcjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGRpdiBpZD1cIlNlYXJjaEJ1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlXCIgZGF0YS1ob3Zlcj1cIlNlYXJjaEhvdmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrZWRcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiU2VhcmNoSG92ZXJcIiBjbGFzcz1cImhvdmVyXCIgZGF0YS1pMThuPVwiU2VhcmNoXCI+U2VhcmNoPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3R0b21CdXR0b25zXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJBbGVydEJ1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIkFsYXJtQ291bnRcIiBjbGFzcz1cImNvdW50XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSGVscEJ1dHRvblwiIGNsYXNzPVwiY2xpY2thYmxlIEFyZWFTdXBwb3J0XCIgZGF0YS1tb2RhbD1cIkFkZE1lc3NhZ2VNb2RhbFwiICpuZ0lmPVwibWFpbFN1cHBvcnRlZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsaWNrZWRcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiT3JnQnV0dG9uXCIgY2xhc3M9XCJjbGlja2FibGUgQXJlYU9yZ2FuaXphdGlvblwiIGRhdGEtb3Blbj1cIkFyZWFPcmdhbml6YXRpb25cIiBbcm91dGVyTGlua109XCInL3NlcnZlcnMnXCIgKm5nSWY9XCJvcmdTdXBwb3J0ZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGlja2VkXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlByb2ZpbGVCdXR0b25cIiBjbGFzcz1cImNsaWNrYWJsZSBtYWluXCIgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIChjbGlja091dHNpZGUpPVwiY2xvc2VNZW51KClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBpZD1cIlByb2ZpbGVNZW51XCIgY2xhc3M9XCJtZW51XCIgW25nQ2xhc3NdPVwie29wZW46IG1lbnVPcGVufVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51dGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiUHJvZmlsZUJ1dHRvblwiIGNsYXNzPVwibGlua1wiIGRhdGEtZ289XCIvcHJvZmlsZVwiIGRhdGEtaTE4bj1cIkVkaXRQcm9maWxlXCI+RWRpdCBQcm9maWxlPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIlNldHRpbmdzQnV0dG9uXCIgY2xhc3M9XCJsaW5rXCIgZGF0YS1nbz1cIi9zZXR0aW5nc1wiIGRhdGEtaTE4bj1cIlBlcnNvbmFsU2V0dGluZ3NcIj5QZXJzb25hbFxuICAgICAgICAgICAgICAgICAgICBTZXR0aW5nc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJMb2dvdXRCdXR0b25cIiBjbGFzcz1cImxpbmtcIiAoY2xpY2spPVwiZG9Mb2dvdXQoKVwiPkxvZ291dDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gU3VibWl0IEJ1ZyBVSSAtLT5cbjxkaXYgaWQ9XCJBZGRNZXNzYWdlTW9kYWxcIiBjbGFzcz1cIm1vZGFsIGJveCBmdWxsXCI+XG4gICAgPGRpdiBjbGFzcz1cInNpemVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZSBpY29uLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlQWRkKClcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiTWVzc2FnZVRpdGxlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZVwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VTdWJUaXRsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BsaXQgdW5zcGxpdFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiU2VuZE5hbWVcIiBkYXRhLWkxOG49XCJNZXNzYWdlTmFtZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiU2VuZE5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwMFwiIGRhdGEtaTE4bj1cIkVudGVyTmFtZVwiLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiU2VuZEVNYWlsXCIgZGF0YS1pMThuPVwiTWVzc2FnZUVNYWlsXCI+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJTZW5kRU1haWxcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjUwMFwiIGRhdGEtaTE4bj1cIkVudGVyRU1haWxcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgZGF0YS1pMThuPVwiTWVzc2FnZVwiPjwvbGFiZWw+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJTZW5kTWVzc2FnZVwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VQbGFjZWhvbGRlclwiPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgaWQ9XCJNZXNzYWdlVHlwZVwiIGRhdGEtaTE4bj1cIk1lc3NhZ2VUeXBlXCI+PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgcXVhZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgb3B0aW9uXCIgZGF0YS10eXBlPVwiYnVnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1idWdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudHNcIiBkYXRhLWkxOG49XCJCdWdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3ggaWNvbi1jaGVja1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBvcHRpb25cIiBkYXRhLXR5cGU9XCJmZWF0dXJlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1idWxiXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRzXCIgZGF0YS1pMThuPVwiRmVhdHVyZVJlcXVlc3RcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3ggaWNvbi1jaGVja1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBvcHRpb25cIiBkYXRhLXR5cGU9XCJsb3ZlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24gaWNvbi1oZWFydHNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudHNcIiBkYXRhLWkxOG49XCJMb3ZlTGV0dGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94IGljb24tY2hlY2tcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgb3B0aW9uXCIgZGF0YS10eXBlPVwibWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGljb24tcXVlc3Rpb24tc2lnblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50c1wiIGRhdGEtaTE4bj1cIk1lc3NhZ2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3ggaWNvbi1jaGVja1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG92ZWRcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5rQnV0dG9uIGNsb3NlclwiIGRhdGEtaTE4bj1cIk9vcHNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJTZW5kTWVzc2FnZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiU2VuZFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBpZD1cIk5vdGlmaWNhdGlvbnNNZW51XCI+XG4gICAgPGRpdiBpZD1cIk5vdGlmaWNhdGlvbk1lbnVDbG9zZVwiIGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlciB0aXRsZVwiIGRhdGEtaTE4bj1cIlJlY2VudE5vdGlmaWNhdGlvbnNcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkNsZWFyTm90aWZpY2F0aW9uc0J1dHRvblwiIGNsYXNzPVwic3ViTGlua1wiIGRhdGEtaTE4bj1cIkNsZWFyTm90aWZpY2F0aW9uc1wiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJoclwiPjwvZGl2PlxuICAgIDxkaXYgaWQ9XCJOb3RpZmljYXRpb25zTGlzdFwiPjwvZGl2PlxuPC9kaXY+XG48ZGl2IGlkPVwiTm90aWZpY2F0aW9uVGVtcGxhdGVcIiBjbGFzcz1cImdyb3dsZXIgcm93IHRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgPnt7J3t7bGV2ZWx9fSd9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZVwiPnt7J3t7c3VidGl0bGV9fSd9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lXCI+e3sne3t0aW1lfX0nfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPnt7J3t7bWVzc2FnZX19J319PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImljb25cIiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybChhc3NldHMvaW1hZ2VzL3t7J3t7dHlwZX19J319LnBuZylcIj48L2Rpdj5cbjwvZGl2PlxuPGRpdiBpZD1cIkFkZEFueU1vZGFsXCIgY2xhc3M9XCJtb2RhbCBib3hcIiBzdHlsZT1cImhlaWdodDogZml0LWNvbnRlbnQ7IHdpZHRoOiA2MDBweDsgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbik7XCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlIGljb24tY2xvc2VcIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwiU2VsZWN0MVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRUaXRsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiU2VsZWN0b3JcIiBjbGFzcz1cImdyaWQgZHVhbFwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cIklubGluZUFkZElkZW50aXR5QnV0dG9uXCIgY2xhc3M9XCJpY29uQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlIGljb24taWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiBkYXRhLWkxOG49XCJBZGRJZGVudGl0eVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSW5saW5lQWRkU2VydmljZUJ1dHRvblwiIGNsYXNzPVwiaWNvbkJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBpY29uLXNlcnZpY2VzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgZGF0YS1pMThuPVwiQWRkU2VydmljZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIklubGluZUlkZW50aXR5QXJlYVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBjbGFzcz1cImFueWFkZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRTaW1wbGVJZGVudGl0eVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlMb2FkZXJcIiBjbGFzcz1cImNlbnRlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZHMtcmlwcGxlXCI+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5MVwiIGNsYXNzPVwiYW55aWRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJJZE5hbWVcIiBkYXRhLWkxOG49XCJOYW1lXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIklkTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiNTBcIiBkYXRhLWkxOG49XCJFbnRlck5hbWVcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIklkUm9sZXNcIiBkYXRhLWkxOG49XCJSb2xlQXR0cmlidXRlc1wiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSWRSb2xlc1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJDcmVhdGVJZEJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiQ3JlYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eTJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgY2xhc3M9XCJhbnlpZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eVFyQ29kZVwiICNpZGVudGl0eXFyPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlEb3dubG9hZFwiIGNsYXNzPVwibGlua0J1dHRvblwiIGRhdGEtaTE4bj1cIkRvd25sb2FkSldUXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkRvbmVJZEJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiRG9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIklubGluZVNlcnZpY2VBcmVhXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGNsYXNzPVwiYW55YWRkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIkFkZFNpbXBsZVNlcnZpY2VcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNTZXJ2aWNlTG9hZGVyXCIgY2xhc3M9XCJjZW50ZXJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGRzLXJpcHBsZVwiPjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlMVwiIGNsYXNzPVwiYW55c2VydmljZVwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNTZXJ2aWNlTmFtZVwiIGRhdGEtaTE4bj1cIlNlcnZpY2VOYW1lXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIlNTZXJ2aWNlTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiNTBcIiBkYXRhLWkxOG49XCJFbnRlck5hbWVcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldoZXJlSG9zdGVkXCIgZGF0YS1pMThuPVwiV2hlcmVIb3N0ZWRcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIldoZXJlSG9zdGVkXCI+PC9kaXY+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiV2hhdElzSXRcIiBkYXRhLWkxOG49XCJXaGF0U2hhcmVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWRkcmVzc0Z1bGxcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwiSG9zdGVkUHJvdG9jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInRjcFwiPnRjcDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidWRwXCI+dWRwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG9zdGVkSG9zdFwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTAwXCIgdmFsdWU9XCJsb2NhbGhvc3RcIiBkYXRhLWkxOG49XCJFZ0hvc3RcIiAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkhvc3RlZFBvcnRcIiB0eXBlPVwibnVtYmVyXCIgbWF4bGVuZ3RoPVwiMTBcIiB2YWx1ZT1cIjgwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldob0FjY2Vzc2VzXCIgZGF0YS1pMThuPVwiV2hvQWNjZXNzZXNcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIldob0FjY2Vzc2VzXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSXNFbmNyeXB0aW9uUmVxdWlyZWRcIiBjbGFzcz1cImZvcm1pbmZvXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBjaGVja0xhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIlNpbXBsZUVuY3J5cHRpb25SZXF1aXJlZFwiIGNsYXNzPVwidG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZUxhYmVsXCIgZGF0YS1pMThuPVwiUmVxdWlyZUVuY3J5cHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIkhvd1RvXCIgZGF0YS1pMThuPVwiSG93U2hhcmVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWRkcmVzc1BvcnRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3dUb1wiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTAwXCIgZGF0YS1pMThuPVwiRWdIb3N0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3dUb1BvcnRcIiB0eXBlPVwibnVtYmVyXCIgbWF4bGVuZ3RoPVwiMTBcIiB2YWx1ZT1cIjgwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua0J1dHRvbiBjbG9zZXJcIiBkYXRhLWkxOG49XCJDYW5jZWxcIiBzdHlsZT1cIndpZHRoOiBmaXQtY29udGVudDtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiQ3JlYXRlQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWkxOG49XCJDcmVhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNlcnZpY2UyXCIgY2xhc3M9XCJhbnlzZXJ2aWNlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNlcnZpY2VIYXBwZW5cIiBkYXRhLWkxOG49XCJTZXJ2aWNlSGFwcGVuXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlSGFwcGVuXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkRvbmVTZXJ2aWNlQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWkxOG49XCJEb25lXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGlkPVwiT3BlcmF0aW9uQ29tbWFuZHNcIiBjbGFzcz1cImNvbW1hbmRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIkV4ZWN1dGlvbk9wZXJhdGlvbnNcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkV4ZWN1dGlvblN0ZXBzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJY29uRG93bmxvYWRcIiBjbGFzcz1cImljb24gaWNvbi1kb3dubG9hZFwiPjwvZGl2PlxuICAgICAgICA8bGFiZWwgZGF0YS1pMThuPVwiQ0xJQ29tbWFuZHNcIj48L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiQ0xJQ29tbWFuZHNcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5Lz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIGRhdGEtY29weT1cIkNMSUNvbW1hbmRzXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgZGF0YS1pMThuPVwiQVBJQ2FsbHNcIj48L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiQXBpQ2FsbFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIGRhdGEtY29weT1cIkFwaUNhbGxcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkXCI+XG4gICAgICAgICAgICA8ZGl2ICNhcGlqc29uPjx0ZXh0YXJlYSBpZD1cIkFwaUpzb25cIj48L3RleHRhcmVhPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29weSBjb3B5IHN3YXBcIiBkYXRhLWNvcHk9XCJBcGlKc29uXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L2Rpdj4iXX0=
|