@gravitee/ui-policy-studio-angular 13.12.0 → 14.0.0
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/esm2022/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.mjs +3 -3
- package/esm2022/lib/components/flow-details/gio-ps-flow-details.component.mjs +5 -5
- package/esm2022/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +5 -5
- package/esm2022/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +5 -5
- package/esm2022/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +5 -5
- package/esm2022/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +8 -9
- package/esm2022/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +7 -8
- package/esm2022/lib/components/flow-form-dialog/flow-native-form-dialog/gio-ps-flow-native-form-dialog.component.mjs +5 -5
- package/esm2022/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.mjs +8 -9
- package/esm2022/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +5 -5
- package/esm2022/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +5 -5
- package/esm2022/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +5 -5
- package/esm2022/lib/components/step-form/gio-ps-step-form.component.mjs +5 -5
- package/esm2022/lib/policy-group-studio/gio-policy-group-studio.component.mjs +5 -5
- package/esm2022/lib/policy-studio/gio-policy-studio.component.mjs +5 -5
- package/esm2022/lib/policy-studio/gio-policy-studio.service.mjs +3 -3
- package/fesm2022/gravitee-ui-policy-studio-angular.mjs +69 -70
- package/fesm2022/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/package.json +7 -7
- package/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.d.ts +1 -1
|
@@ -30,10 +30,10 @@ export class GioFilterConnectorsByModePipe {
|
|
|
30
30
|
}
|
|
31
31
|
return [];
|
|
32
32
|
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
34
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFilterConnectorsByModePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
34
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: GioFilterConnectorsByModePipe, isStandalone: true, name: "gioFilterConnectorsByMode" }); }
|
|
35
35
|
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFilterConnectorsByModePipe, decorators: [{
|
|
37
37
|
type: Pipe,
|
|
38
38
|
args: [{
|
|
39
39
|
standalone: true,
|
|
@@ -141,12 +141,12 @@ export class GioPolicyStudioDetailsComponent {
|
|
|
141
141
|
_hasChanged: true,
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
145
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GioPolicyStudioDetailsComponent, isStandalone: true, selector: "gio-ps-flow-details", inputs: { readOnly: "readOnly", loading: "loading", apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies", genericPolicies: "genericPolicies", trialUrl: "trialUrl" }, outputs: { flowChange: "flowChange", deleteFlow: "deleteFlow" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<ng-container *ngIf=\"!loading; then flowDetailsTpl; else loadingTpl\"></ng-container>\n\n<ng-template #flowDetailsTpl>\n <ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">\n Flow details\n <div *ngIf=\"!flow.enabled\" class=\"gio-badge gio-badge-neutral\">Disabled</div>\n </div>\n <div class=\"header__configBtn\">\n <button\n [disabled]=\"readOnly\"\n class=\"header__configBtn__enableDisable\"\n mat-stroked-button\n [matTooltip]=\"flow.enabled ? 'Disable' : 'Enable'\"\n (click)=\"onEnableDisableFlow()\"\n >\n <mat-icon [svgIcon]=\"flow.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\" matTooltip=\"Edit\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\" matTooltip=\"Delete\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar\n class=\"infoBar\"\n [class.flowDisabled]=\"!flow.enabled\"\n [flow]=\"flow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n ></gio-ps-flow-details-info-bar>\n\n <div class=\"content\" [class.flowDisabled]=\"!flow.enabled\">\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Initial connection\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied to the response from the initial connection\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n\n <mat-tab-group *ngIf=\"apiType === 'NATIVE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Global\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Connect phase\"\n description=\"Policies will be applied when the client connects to the Gateway\"\n [disabledNotYetAvailable]=\"true\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [steps]=\"flow.connect ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"CONNECT\"\n (stepsChange)=\"onStepsChange('connect', $event)\"\n >\n </gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Interact phase\"\n description=\"Policies will be applied on all interactions between the client and the Gateway\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [steps]=\"flow.interact ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"INTERACT\"\n (stepsChange)=\"onStepsChange('interact', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied when publishing messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied when fetching messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n </div>\n </ng-container>\n\n <ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #loadingTpl>\n <div class=\"header loading\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button disabled>\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar loading\"></gio-ps-flow-details-info-bar>\n <div class=\"content loading\">\n <gio-loader></gio-loader>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;max-width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font-size:16px;font-weight:500;letter-spacing:.4px;line-height:24px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.infoBar.loading{min-height:52px}.infoBar.flowDisabled{opacity:.5}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content.flowDisabled{opacity:.5}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "genericPolicies", "policyFlowPhase", "trialUrl", "disabledNotYetAvailable"], outputs: ["stepsChange"] }, { kind: "pipe", type: GioFilterConnectorsByModePipe, name: "gioFilterConnectorsByMode" }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "component", type: GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: GioBannerModule }] }); }
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioPolicyStudioDetailsComponent, isStandalone: true, selector: "gio-ps-flow-details", inputs: { readOnly: "readOnly", loading: "loading", apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies", genericPolicies: "genericPolicies", trialUrl: "trialUrl" }, outputs: { flowChange: "flowChange", deleteFlow: "deleteFlow" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<ng-container *ngIf=\"!loading; then flowDetailsTpl; else loadingTpl\"></ng-container>\n\n<ng-template #flowDetailsTpl>\n <ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">\n Flow details\n <div *ngIf=\"!flow.enabled\" class=\"gio-badge gio-badge-neutral\">Disabled</div>\n </div>\n <div class=\"header__configBtn\">\n <button\n [disabled]=\"readOnly\"\n class=\"header__configBtn__enableDisable\"\n mat-stroked-button\n [matTooltip]=\"flow.enabled ? 'Disable' : 'Enable'\"\n (click)=\"onEnableDisableFlow()\"\n >\n <mat-icon [svgIcon]=\"flow.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\" matTooltip=\"Edit\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\" matTooltip=\"Delete\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar\n class=\"infoBar\"\n [class.flowDisabled]=\"!flow.enabled\"\n [flow]=\"flow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n ></gio-ps-flow-details-info-bar>\n\n <div class=\"content\" [class.flowDisabled]=\"!flow.enabled\">\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Initial connection\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied to the response from the initial connection\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n\n <mat-tab-group *ngIf=\"apiType === 'NATIVE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Global\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Connect phase\"\n description=\"Policies will be applied when the client connects to the Gateway\"\n [disabledNotYetAvailable]=\"true\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [steps]=\"flow.connect ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"CONNECT\"\n (stepsChange)=\"onStepsChange('connect', $event)\"\n >\n </gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Interact phase\"\n description=\"Policies will be applied on all interactions between the client and the Gateway\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [steps]=\"flow.interact ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"INTERACT\"\n (stepsChange)=\"onStepsChange('interact', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied when publishing messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied when fetching messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n </div>\n </ng-container>\n\n <ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #loadingTpl>\n <div class=\"header loading\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button disabled>\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar loading\"></gio-ps-flow-details-info-bar>\n <div class=\"content loading\">\n <gio-loader></gio-loader>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;max-width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font-size:16px;font-weight:500;letter-spacing:.4px;line-height:24px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.infoBar.loading{min-height:52px}.infoBar.flowDisabled{opacity:.5}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content.flowDisabled{opacity:.5}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "genericPolicies", "policyFlowPhase", "trialUrl", "disabledNotYetAvailable"], outputs: ["stepsChange"] }, { kind: "pipe", type: GioFilterConnectorsByModePipe, name: "gioFilterConnectorsByMode" }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "component", type: GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: GioBannerModule }] }); }
|
|
146
146
|
}
|
|
147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsComponent, decorators: [{
|
|
148
148
|
type: Component,
|
|
149
|
-
args: [{
|
|
149
|
+
args: [{ imports: [
|
|
150
150
|
CommonModule,
|
|
151
151
|
MatTabsModule,
|
|
152
152
|
MatButtonModule,
|
|
@@ -181,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
181
181
|
}], deleteFlow: [{
|
|
182
182
|
type: Output
|
|
183
183
|
}] } });
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc3RCxPQUFPLEVBQ0wsNkNBQTZDLEdBRTlDLE1BQU0sd0ZBQXdGLENBQUM7QUFFaEcsT0FBTyxFQUNMLDJDQUEyQyxHQUU1QyxNQUFNLG9GQUFvRixDQUFDO0FBRTVGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJE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LENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLO1lBQ2xCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBMUpVLCtCQUErQjtrR0FBL0IsK0JBQStCLGlaQzlENUMsdzVWQStPQSx1aENEaE1JLFlBQVksa0lBQ1osYUFBYSw0b0JBQ2IsZUFBZSwyTkFDZixjQUFjLG9MQUNkLG9DQUFvQywyUUFDcEMsNkJBQTZCLGlFQUM3QixlQUFlLDJHQUNmLHNDQUFzQyw2R0FDdEMsZ0JBQWdCLDRUQUNoQixlQUFlOzsyRkFNTiwrQkFBK0I7a0JBbEIzQyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixjQUFjO3dCQUNkLG9DQUFvQzt3QkFDcEMsNkJBQTZCO3dCQUM3QixlQUFlO3dCQUNmLHNDQUFzQzt3QkFDdEMsZ0JBQWdCO3dCQUNoQixlQUFlO3FCQUNoQixZQUNTLHFCQUFxQjs4RUFNeEIsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxVQUFVO3NCQURoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEgsIEdpb0Jhbm5lck1vZHVsZSwgR2lvSWNvbnNNb2R1bGUsIEdpb0xvYWRlck1vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuaW1wb3J0IHsgRmxvd1ZNIH0gZnJvbSAnLi4vLi4vcG9saWN5LXN0dWRpby9naW8tcG9saWN5LXN0dWRpby5tb2RlbCc7XG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEsXG59IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaVR5cGUsIENoYW5uZWxTZWxlY3RvciwgQ29ubmVjdG9ySW5mbywgT3BlcmF0aW9uLCBQb2xpY3ksIFN0ZXAsIEdlbmVyaWNQb2xpY3kgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0RhdGEsXG59IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1wcm94eS1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1wcm94eS1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHQgfSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LWZvcm0tZGlhbG9nLXJlc3VsdC5tb2RlbCc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VDb21wb25lbnQgfSBmcm9tICcuLi9mbG93LWRldGFpbHMtcGhhc2UvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZVBpcGUgfSBmcm9tICcuLi9maWx0ZXItcGlwZS9naW8tZmx0ZXItY29ubmVjdG9ycy1ieS1tb2RlLnBpcGUnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc0luZm9CYXJDb21wb25lbnQgfSBmcm9tICcuLi9mbG93LWRldGFpbHMtaW5mby1iYXIvZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd05hdGl2ZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dOYXRpdmVGb3JtRGlhbG9nRGF0YSxcbn0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9mbG93LW5hdGl2ZS1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1uYXRpdmUtZm9ybS1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgR2lvSWNvbnNNb2R1bGUsXG4gICAgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlQ29tcG9uZW50LFxuICAgIEdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGVQaXBlLFxuICAgIEdpb0xvYWRlck1vZHVsZSxcbiAgICBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzSW5mb0JhckNvbXBvbmVudCxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIEdpb0Jhbm5lck1vZHVsZSxcbiAgXSxcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZE9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvdz86IEZsb3dWTSA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW50cnlwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5kcG9pbnRzSW5mbzogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZW5lcmljUG9saWNpZXM6IEdlbmVyaWNQb2xpY3lbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmlhbFVybD86IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsb3dDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGRlbGV0ZUZsb3cgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBwdWJsaWMgbWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm86IENvbm5lY3RvckluZm9bXSA9IFtdO1xuXG4gIHB1YmxpYyBvcGVyYXRpb25zOiBPcGVyYXRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5lbnRyeXBvaW50c0luZm8gfHwgY2hhbmdlcy5mbG93KSB7XG4gICAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG5cbiAgICAgIHRoaXMub3BlcmF0aW9ucyA9IGNoYW5uZWxTZWxlY3Rvcj8ub3BlcmF0aW9ucyA/PyBbXTtcblxuICAgICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgICAgLy8gSWYgbm8gY2hhbm5lbCBzZWxlY3RvciBmb3VuZC4gS2VlcCBkZWZhdWx0IHZhbHVlXG4gICAgICAgIHRoaXMubWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm8gPSBbXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvID1cbiAgICAgICAgdGhpcy5lbnRyeXBvaW50c0luZm8/LmZpbHRlcihcbiAgICAgICAgICBlID0+XG4gICAgICAgICAgICAvLyBJZiBub3QgZW50cnlwb2ludHMgYXJlIGRlZmluZWQsIGFsbCBlbnRyeXBvaW50cyBhcmUgdmFsaWRcbiAgICAgICAgICAgICFjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHMgfHwgaXNFbXB0eShjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHMpIHx8IGNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cz8uaW5jbHVkZXMoZS50eXBlKSxcbiAgICAgICAgKSA/PyBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FZGl0RmxvdygpOiB2b2lkIHtcbiAgICBsZXQgZGlhbG9nUmVzdWx0O1xuICAgIHN3aXRjaCAodGhpcy5hcGlUeXBlKSB7XG4gICAgICBjYXNlICdNRVNTQUdFJzpcbiAgICAgICAgZGlhbG9nUmVzdWx0ID0gdGhpcy5tYXREaWFsb2dcbiAgICAgICAgICAub3BlbjxcbiAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEsXG4gICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdFxuICAgICAgICAgID4oR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGZsb3c6IHRoaXMuZmxvdyxcbiAgICAgICAgICAgICAgZW50cnlwb2ludHM6IHRoaXMuZW50cnlwb2ludHNJbmZvID8/IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgICBpZDogJ2dpb1BzRmxvd01lc3NhZ2VGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILk1FRElVTSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZnRlckNsb3NlZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BST1hZJzpcbiAgICAgICAgZGlhbG9nUmVzdWx0ID0gdGhpcy5tYXREaWFsb2dcbiAgICAgICAgICAub3BlbjxHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nRGF0YSwgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHQ+KFxuICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGZsb3c6IHRoaXMuZmxvdyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dQcm94eUZvcm1EaWFsb2cnLFxuICAgICAgICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5NRURJVU0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIClcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdOQVRJVkUnOlxuICAgICAgICBkaWFsb2dSZXN1bHQgPSB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgIC5vcGVuPEdpb1BvbGljeVN0dWRpb0Zsb3dOYXRpdmVGb3JtRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9GbG93TmF0aXZlRm9ybURpYWxvZ0RhdGEsIEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0PihcbiAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dOYXRpdmVGb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZmxvdzogdGhpcy5mbG93LFxuICAgICAgICAgICAgICAgIHBhcmVudEdyb3VwTmFtZTogdGhpcy5mbG93IS5fcGFyZW50Rmxvd0dyb3VwTmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dOYXRpdmVGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgICAgd2lkdGg6IEdJT19ESUFMT0dfV0lEVEguTUVESVVNLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApXG4gICAgICAgICAgLmFmdGVyQ2xvc2VkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBBUEkgdHlwZSAke3RoaXMuYXBpVHlwZX1gKTtcbiAgICB9XG5cbiAgICBkaWFsb2dSZXN1bHRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoY3JlYXRlZE9yRWRpdGVkID0+IHtcbiAgICAgICAgICBpZiAoIWNyZWF0ZWRPckVkaXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmZsb3dDaGFuZ2UuZW1pdChjcmVhdGVkT3JFZGl0ZWQpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZUZsb3coKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVGbG93LmVtaXQodGhpcy5mbG93KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVuYWJsZURpc2FibGVGbG93KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mbG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mbG93Q2hhbmdlLmVtaXQoe1xuICAgICAgLi4udGhpcy5mbG93LFxuICAgICAgZW5hYmxlZDogIXRoaXMuZmxvdy5lbmFibGVkLFxuICAgICAgX2hhc0NoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwc0NoYW5nZShmbG93UGhhc2U6ICdjb25uZWN0JyB8ICdpbnRlcmFjdCcgfCAncmVxdWVzdCcgfCAncmVzcG9uc2UnIHwgJ3B1Ymxpc2gnIHwgJ3N1YnNjcmliZScsIHN0ZXBzOiBTdGVwW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmxvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmxvd0NoYW5nZS5lbWl0KHtcbiAgICAgIC4uLnRoaXMuZmxvdyxcbiAgICAgIFtmbG93UGhhc2VdOiBzdGVwcyxcbiAgICAgIF9oYXNDaGFuZ2VkOiB0cnVlLFxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nOyB0aGVuIGZsb3dEZXRhaWxzVHBsOyBlbHNlIGxvYWRpbmdUcGxcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNmbG93RGV0YWlsc1RwbD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZsb3c7IGVsc2UgZW1wdHlGbG93c1wiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2xhYmVsXCI+XG4gICAgICAgIEZsb3cgZGV0YWlsc1xuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZsb3cuZW5hYmxlZFwiIGNsYXNzPVwiZ2lvLWJhZGdlIGdpby1iYWRnZS1uZXV0cmFsXCI+RGlzYWJsZWQ8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZE9ubHlcIlxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2VuYWJsZURpc2FibGVcIlxuICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgIFttYXRUb29sdGlwXT1cImZsb3cuZW5hYmxlZCA/ICdEaXNhYmxlJyA6ICdFbmFibGUnXCJcbiAgICAgICAgICAoY2xpY2spPVwib25FbmFibGVEaXNhYmxlRmxvdygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJmbG93LmVuYWJsZWQgPyAnZ2lvOnByb2hpYml0aW9uJyA6ICdnaW86Y2hlY2stY2lyY2xlZC1vdXRsaW5lJ1wiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJyZWFkT25seVwiIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2VkaXRcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uRWRpdEZsb3coKVwiIG1hdFRvb2x0aXA9XCJFZGl0XCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86ZWRpdC1wZW5jaWxcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwicmVhZE9ubHlcIiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuX19kZWxldGVcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uRGVsZXRlRmxvdygpXCIgbWF0VG9vbHRpcD1cIkRlbGV0ZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnRyYXNoXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhclxuICAgICAgY2xhc3M9XCJpbmZvQmFyXCJcbiAgICAgIFtjbGFzcy5mbG93RGlzYWJsZWRdPVwiIWZsb3cuZW5hYmxlZFwiXG4gICAgICBbZmxvd109XCJmbG93XCJcbiAgICAgIFtlbnRyeXBvaW50c0luZm9dPVwiZW50cnlwb2ludHNJbmZvXCJcbiAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyPlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBbY2xhc3MuZmxvd0Rpc2FibGVkXT1cIiFmbG93LmVuYWJsZWRcIj5cbiAgICAgIDxtYXQtdGFiLWdyb3VwICpuZ0lmPVwiYXBpVHlwZSA9PT0gJ01FU1NBR0UnXCIgY2xhc3M9XCJjb250ZW50X190YWJzXCIgZHluYW1pY0hlaWdodD5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJJbml0aWFsIGNvbm5lY3Rpb25cIiBib2R5Q2xhc3M9XCJjb250ZW50X190YWJzX19ib2R5XCI+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlJlcXVlc3QgcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnRcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJtZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVuZHBvaW50c0luZm9cIlxuICAgICAgICAgICAgW3N0ZXBzXT1cImZsb3cucmVxdWVzdCA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgICBwb2xpY3lGbG93UGhhc2U9XCJSRVFVRVNUXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdyZXF1ZXN0JywgJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiUmVzcG9uc2UgcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHJlc3BvbnNlIGZyb20gdGhlIGluaXRpYWwgY29ubmVjdGlvblwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm9cIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJtZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXNwb25zZSA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgICBwb2xpY3lGbG93UGhhc2U9XCJSRVNQT05TRVwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncmVzcG9uc2UnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiRXZlbnQgbWVzc2FnZXNcIiBib2R5Q2xhc3M9XCJjb250ZW50X190YWJzX19ib2R5XCI+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlB1Ymxpc2ggcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgb24gbWVzc2FnZXMgc2VudCB0byB0aGUgZW5kcG9pbnRcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJtZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdQVUJMSVNIJyA6IG9wZXJhdGlvbnNcIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1BVQkxJU0gnIDogb3BlcmF0aW9uc1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5wdWJsaXNoID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUZsb3dQaGFzZT1cIlBVQkxJU0hcIlxuICAgICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3B1Ymxpc2gnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICAgIG5hbWU9XCJTdWJzY3JpYmUgcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgb24gbWVzc2FnZXMgcmVjZWl2ZWQgYnkgdGhlIGVudHJ5cG9pbnRcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1NVQlNDUklCRScgOiBvcGVyYXRpb25zXCJcbiAgICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwibWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnU1VCU0NSSUJFJyA6IG9wZXJhdGlvbnNcIlxuICAgICAgICAgICAgW3N0ZXBzXT1cImZsb3cuc3Vic2NyaWJlID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUZsb3dQaGFzZT1cIlNVQlNDUklCRVwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgnc3Vic2NyaWJlJywgJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBpVHlwZSA9PT0gJ1BST1hZJ1wiPlxuICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgIG5hbWU9XCJSZXF1ZXN0IHBoYXNlXCJcbiAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudFwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1JFUVVFU1RfUkVTUE9OU0UnXCJcbiAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlcXVlc3QgPz8gW11cIlxuICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgIHBvbGljeUZsb3dQaGFzZT1cIlJFUVVFU1RcIlxuICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdyZXF1ZXN0JywgJGV2ZW50KVwiXG4gICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgbmFtZT1cIlJlc3BvbnNlIHBoYXNlXCJcbiAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gdGVybWluYXRpb25cIlxuICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1JFUVVFU1RfUkVTUE9OU0UnXCJcbiAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXNwb25zZSA/PyBbXVwiXG4gICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgcG9saWN5Rmxvd1BoYXNlPVwiUkVTUE9OU0VcIlxuICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdyZXNwb25zZScsICRldmVudClcIlxuICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxtYXQtdGFiLWdyb3VwICpuZ0lmPVwiYXBpVHlwZSA9PT0gJ05BVElWRSdcIiBjbGFzcz1cImNvbnRlbnRfX3RhYnNcIiBkeW5hbWljSGVpZ2h0PlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIkdsb2JhbFwiIGJvZHlDbGFzcz1cImNvbnRlbnRfX3RhYnNfX2JvZHlcIj5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiQ29ubmVjdCBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB3aGVuIHRoZSBjbGllbnQgY29ubmVjdHMgdG8gdGhlIEdhdGV3YXlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkTm90WWV0QXZhaWxhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ0NPTk5FQ1QnXCJcbiAgICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ0NPTk5FQ1QnXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LmNvbm5lY3QgPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbZ2VuZXJpY1BvbGljaWVzXT1cImdlbmVyaWNQb2xpY2llc1wiXG4gICAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgICAgcG9saWN5Rmxvd1BoYXNlPVwiQ09OTkVDVFwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgnY29ubmVjdCcsICRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIkludGVyYWN0IHBoYXNlXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIG9uIGFsbCBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCB0aGUgR2F0ZXdheVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVudHJ5cG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdJTlRFUkFDVCdcIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ0lOVEVSQUNUJ1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5pbnRlcmFjdCA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgICBwb2xpY3lGbG93UGhhc2U9XCJJTlRFUkFDVFwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgnaW50ZXJhY3QnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiRXZlbnQgbWVzc2FnZXNcIiBib2R5Q2xhc3M9XCJjb250ZW50X190YWJzX19ib2R5XCI+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlB1Ymxpc2ggcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgd2hlbiBwdWJsaXNoaW5nIG1lc3NhZ2VzXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1BVQkxJU0gnXCJcbiAgICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdQVUJMSVNIJ1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5wdWJsaXNoID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUZsb3dQaGFzZT1cIlBVQkxJU0hcIlxuICAgICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3B1Ymxpc2gnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICAgIG5hbWU9XCJTdWJzY3JpYmUgcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgd2hlbiBmZXRjaGluZyBtZXNzYWdlc1wiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnU1VCU0NSSUJFJ1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVudHJ5cG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdTVUJTQ1JJQkUnXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnN1YnNjcmliZSA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgICBwb2xpY3lGbG93UGhhc2U9XCJTVUJTQ1JJQkVcIlxuICAgICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3N1YnNjcmliZScsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNlbXB0eUZsb3dzPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eUZsb3dzXCI+XG4gICAgICA8aDI+Tm8gZmxvd3MgeWV0PC9oMj5cbiAgICAgIDxwIGNsYXNzPVwibWF0LWJvZHktMVwiPkZsb3dzIGFsbG93IHlvdSB0byBjdXN0b21pemUgdGhlIGJlaGF2aW9yIG9mIHlvdXIgQVBJIGV2ZW50IHBoYXNlcyB0aHJvdWdoIGNvbmZpZ3VyYWJsZSBwb2xpY2llczwvcD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgPGRpdiBjbGFzcz1cImhlYWRlciBsb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fbGFiZWxcIj5GbG93IGRldGFpbHM8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5cIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZWRpdFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBkaXNhYmxlZD5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86ZWRpdC1wZW5jaWxcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2RlbGV0ZVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBkaXNhYmxlZD5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86dHJhc2hcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhciBjbGFzcz1cImluZm9CYXIgbG9hZGluZ1wiPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhcj5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQgbG9hZGluZ1wiPlxuICAgIDxnaW8tbG9hZGVyPjwvZ2lvLWxvYWRlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc3RCxPQUFPLEVBQ0wsNkNBQTZDLEdBRTlDLE1BQU0sd0ZBQXdGLENBQUM7QUFFaEcsT0FBTyxFQUNMLDJDQUEyQyxHQUU1QyxNQUFNLG9GQUFvRixDQUFDO0FBRTVGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJE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LENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLO1lBQ2xCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBMUpVLCtCQUErQjtrR0FBL0IsK0JBQStCLGlaQzdENUMsdzVWQStPQSx1aENEak1JLFlBQVksa0lBQ1osYUFBYSw4cEJBQ2IsZUFBZSwyTkFDZixjQUFjLG9MQUNkLG9DQUFvQywyUUFDcEMsNkJBQTZCLGlFQUM3QixlQUFlLDJHQUNmLHNDQUFzQyw2R0FDdEMsZ0JBQWdCLDRUQUNoQixlQUFlOzsyRkFNTiwrQkFBK0I7a0JBakIzQyxTQUFTOzhCQUNDO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixlQUFlO3dCQUNmLGNBQWM7d0JBQ2Qsb0NBQW9DO3dCQUNwQyw2QkFBNkI7d0JBQzdCLGVBQWU7d0JBQ2Ysc0NBQXNDO3dCQUN0QyxnQkFBZ0I7d0JBQ2hCLGVBQWU7cUJBQ2hCLFlBQ1MscUJBQXFCOzhFQU14QixRQUFRO3NCQURkLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLFVBQVU7c0JBRGhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgR0lPX0RJQUxPR19XSURUSCwgR2lvQmFubmVyTW9kdWxlLCBHaW9JY29uc01vZHVsZSwgR2lvTG9hZGVyTW9kdWxlIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBGbG93Vk0gfSBmcm9tICcuLi8uLi9wb2xpY3ktc3R1ZGlvL2dpby1wb2xpY3ktc3R1ZGlvLm1vZGVsJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nRGF0YSxcbn0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBpVHlwZSwgQ2hhbm5lbFNlbGVjdG9yLCBDb25uZWN0b3JJbmZvLCBPcGVyYXRpb24sIFBvbGljeSwgU3RlcCwgR2VuZXJpY1BvbGljeSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nRGF0YSxcbn0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9mbG93LXByb3h5LWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LXByb3h5LWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZm9ybS1kaWFsb2ctcmVzdWx0Lm1vZGVsJztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlUGlwZSB9IGZyb20gJy4uL2ZpbHRlci1waXBlL2dpby1mbHRlci1jb25uZWN0b3JzLWJ5LW1vZGUucGlwZSc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzSW5mb0JhckNvbXBvbmVudCB9IGZyb20gJy4uL2Zsb3ctZGV0YWlscy1pbmZvLWJhci9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9GbG93TmF0aXZlRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd05hdGl2ZUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctbmF0aXZlLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LW5hdGl2ZS1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBHaW9JY29uc01vZHVsZSxcbiAgICBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VDb21wb25lbnQsXG4gICAgR2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZVBpcGUsXG4gICAgR2lvTG9hZGVyTW9kdWxlLFxuICAgIEdpb1BvbGljeVN0dWRpb0RldGFpbHNJbmZvQmFyQ29tcG9uZW50LFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgR2lvQmFubmVyTW9kdWxlLFxuICBdLFxuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93PzogRmxvd1ZNID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbnRyeXBvaW50c0luZm86IENvbm5lY3RvckluZm9bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmRwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWNpZXM6IFBvbGljeVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdlbmVyaWNQb2xpY2llczogR2VuZXJpY1BvbGljeVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRyaWFsVXJsPzogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmxvd0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Rmxvd1ZNPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZGVsZXRlRmxvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Rmxvd1ZNPigpO1xuXG4gIHB1YmxpYyBtZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mbzogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgcHVibGljIG9wZXJhdGlvbnM6IE9wZXJhdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmVudHJ5cG9pbnRzSW5mbyB8fCBjaGFuZ2VzLmZsb3cpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWxTZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnQ0hBTk5FTCcpIGFzIENoYW5uZWxTZWxlY3RvcjtcblxuICAgICAgdGhpcy5vcGVyYXRpb25zID0gY2hhbm5lbFNlbGVjdG9yPy5vcGVyYXRpb25zID8/IFtdO1xuXG4gICAgICBpZiAoIWNoYW5uZWxTZWxlY3Rvcikge1xuICAgICAgICAvLyBJZiBubyBjaGFubmVsIHNlbGVjdG9yIGZvdW5kLiBLZWVwIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgdGhpcy5tZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mbyA9IFtdO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm8gPVxuICAgICAgICB0aGlzLmVudHJ5cG9pbnRzSW5mbz8uZmlsdGVyKFxuICAgICAgICAgIGUgPT5cbiAgICAgICAgICAgIC8vIElmIG5vdCBlbnRyeXBvaW50cyBhcmUgZGVmaW5lZCwgYWxsIGVudHJ5cG9pbnRzIGFyZSB2YWxpZFxuICAgICAgICAgICAgIWNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cyB8fCBpc0VtcHR5KGNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cykgfHwgY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzPy5pbmNsdWRlcyhlLnR5cGUpLFxuICAgICAgICApID8/IFtdO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRGbG93KCk6IHZvaWQge1xuICAgIGxldCBkaWFsb2dSZXN1bHQ7XG4gICAgc3dpdGNoICh0aGlzLmFwaVR5cGUpIHtcbiAgICAgIGNhc2UgJ01FU1NBR0UnOlxuICAgICAgICBkaWFsb2dSZXN1bHQgPSB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgIC5vcGVuPFxuICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nRGF0YSxcbiAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0XG4gICAgICAgICAgPihHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgZmxvdzogdGhpcy5mbG93LFxuICAgICAgICAgICAgICBlbnRyeXBvaW50czogdGhpcy5lbnRyeXBvaW50c0luZm8gPz8gW10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICAgIGlkOiAnZ2lvUHNGbG93TWVzc2FnZUZvcm1EaWFsb2cnLFxuICAgICAgICAgICAgd2lkdGg6IEdJT19ESUFMT0dfV0lEVEguTUVESVVNLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFmdGVyQ2xvc2VkKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUFJPWFknOlxuICAgICAgICBkaWFsb2dSZXN1bHQgPSB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgIC5vcGVuPEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLCBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdD4oXG4gICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZmxvdzogdGhpcy5mbG93LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgICAgICBpZDogJ2dpb1BzRmxvd1Byb3h5Rm9ybURpYWxvZycsXG4gICAgICAgICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILk1FRElVTSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hZnRlckNsb3NlZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ05BVElWRSc6XG4gICAgICAgIGRpYWxvZ1Jlc3VsdCA9IHRoaXMubWF0RGlhbG9nXG4gICAgICAgICAgLm9wZW48R2lvUG9saWN5U3R1ZGlvRmxvd05hdGl2ZUZvcm1EaWFsb2dDb21wb25lbnQsIEdpb1BvbGljeVN0dWRpb0Zsb3dOYXRpdmVGb3JtRGlhbG9nRGF0YSwgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHQ+KFxuICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd05hdGl2ZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBmbG93OiB0aGlzLmZsb3csXG4gICAgICAgICAgICAgICAgcGFyZW50R3JvdXBOYW1lOiB0aGlzLmZsb3chLl9wYXJlbnRGbG93R3JvdXBOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgICAgICBpZDogJ2dpb1BzRmxvd05hdGl2ZUZvcm1EaWFsb2cnLFxuICAgICAgICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5NRURJVU0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIClcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIEFQSSB0eXBlICR7dGhpcy5hcGlUeXBlfWApO1xuICAgIH1cblxuICAgIGRpYWxvZ1Jlc3VsdFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChjcmVhdGVkT3JFZGl0ZWQgPT4ge1xuICAgICAgICAgIGlmICghY3JlYXRlZE9yRWRpdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZmxvd0NoYW5nZS5lbWl0KGNyZWF0ZWRPckVkaXRlZCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlRmxvdygpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZUZsb3cuZW1pdCh0aGlzLmZsb3cpO1xuICB9XG5cbiAgcHVibGljIG9uRW5hYmxlRGlzYWJsZUZsb3coKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZsb3cpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZsb3dDaGFuZ2UuZW1pdCh7XG4gICAgICAuLi50aGlzLmZsb3csXG4gICAgICBlbmFibGVkOiAhdGhpcy5mbG93LmVuYWJsZWQsXG4gICAgICBfaGFzQ2hhbmdlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBzQ2hhbmdlKGZsb3dQaGFzZTogJ2Nvbm5lY3QnIHwgJ2ludGVyYWN0JyB8ICdyZXF1ZXN0JyB8ICdyZXNwb25zZScgfCAncHVibGlzaCcgfCAnc3Vic2NyaWJlJywgc3RlcHM6IFN0ZXBbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mbG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mbG93Q2hhbmdlLmVtaXQoe1xuICAgICAgLi4udGhpcy5mbG93LFxuICAgICAgW2Zsb3dQaGFzZV06IHN0ZXBzLFxuICAgICAgX2hhc0NoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmc7IHRoZW4gZmxvd0RldGFpbHNUcGw7IGVsc2UgbG9hZGluZ1RwbFwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Zsb3dEZXRhaWxzVHBsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmxvdzsgZWxzZSBlbXB0eUZsb3dzXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fbGFiZWxcIj5cbiAgICAgICAgRmxvdyBkZXRhaWxzXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZmxvdy5lbmFibGVkXCIgY2xhc3M9XCJnaW8tYmFkZ2UgZ2lvLWJhZGdlLW5ldXRyYWxcIj5EaXNhYmxlZDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkT25seVwiXG4gICAgICAgICAgY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZW5hYmxlRGlzYWJsZVwiXG4gICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmxvdy5lbmFibGVkID8gJ0Rpc2FibGUnIDogJ0VuYWJsZSdcIlxuICAgICAgICAgIChjbGljayk9XCJvbkVuYWJsZURpc2FibGVGbG93KClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cImZsb3cuZW5hYmxlZCA/ICdnaW86cHJvaGliaXRpb24nIDogJ2dpbzpjaGVjay1jaXJjbGVkLW91dGxpbmUnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZWRpdFwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25FZGl0RmxvdygpXCIgbWF0VG9vbHRpcD1cIkVkaXRcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzplZGl0LXBlbmNpbFwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJyZWFkT25seVwiIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2RlbGV0ZVwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25EZWxldGVGbG93KClcIiBtYXRUb29sdGlwPVwiRGVsZXRlXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86dHJhc2hcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyXG4gICAgICBjbGFzcz1cImluZm9CYXJcIlxuICAgICAgW2NsYXNzLmZsb3dEaXNhYmxlZF09XCIhZmxvdy5lbmFibGVkXCJcbiAgICAgIFtmbG93XT1cImZsb3dcIlxuICAgICAgW2VudHJ5cG9pbnRzSW5mb109XCJlbnRyeXBvaW50c0luZm9cIlxuICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIFtjbGFzcy5mbG93RGlzYWJsZWRdPVwiIWZsb3cuZW5hYmxlZFwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJhcGlUeXBlID09PSAnTUVTU0FHRSdcIiBjbGFzcz1cImNvbnRlbnRfX3RhYnNcIiBkeW5hbWljSGVpZ2h0PlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIkluaXRpYWwgY29ubmVjdGlvblwiIGJvZHlDbGFzcz1cImNvbnRlbnRfX3RhYnNfX2JvZHlcIj5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiUmVxdWVzdCBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudFwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvXCJcbiAgICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXF1ZXN0ID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUZsb3dQaGFzZT1cIlJFUVVFU1RcIlxuICAgICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3JlcXVlc3QnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICAgIG5hbWU9XCJSZXNwb25zZSBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgaW5pdGlhbCBjb25uZWN0aW9uXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlc3BvbnNlID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUZsb3dQaGFzZT1cIlJFU1BPTlNFXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdyZXNwb25zZScsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJFdmVudCBtZXNzYWdlc1wiIGJvZHlDbGFzcz1cImNvbnRlbnRfX3RhYnNfX2JvZHlcIj5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiUHVibGlzaCBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBvbiBtZXNzYWdlcyBzZW50IHRvIHRoZSBlbmRwb2ludFwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1BVQkxJU0gnIDogb3BlcmF0aW9uc1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUFVCTElTSCcgOiBvcGVyYXRpb25zXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnB1Ymxpc2ggPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbZ2VuZXJpY1BvbGljaWVzXT1cImdlbmVyaWNQb2xpY2llc1wiXG4gICAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgICAgcG9saWN5Rmxvd1BoYXNlPVwiUFVCTElTSFwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncHVibGlzaCcsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlN1YnNjcmliZSBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBvbiBtZXNzYWdlcyByZWNlaXZlZCBieSB0aGUgZW50cnlwb2ludFwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnU1VCU0NSSUJFJyA6IG9wZXJhdGlvbnNcIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJtZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdTVUJTQ1JJQkUnIDogb3BlcmF0aW9uc1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5zdWJzY3JpYmUgPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbZ2VuZXJpY1BvbGljaWVzXT1cImdlbmVyaWNQb2xpY2llc1wiXG4gICAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgICAgcG9saWN5Rmxvd1BoYXNlPVwiU1VCU0NSSUJFXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdzdWJzY3JpYmUnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcGlUeXBlID09PSAnUFJPWFknXCI+XG4gICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgbmFtZT1cIlJlcXVlc3QgcGhhc2VcIlxuICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50XCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJlbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1wiXG4gICAgICAgICAgW3N0ZXBzXT1cImZsb3cucmVxdWVzdCA/PyBbXVwiXG4gICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgcG9saWN5Rmxvd1BoYXNlPVwiUkVRVUVTVFwiXG4gICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3JlcXVlc3QnLCAkZXZlbnQpXCJcbiAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICBuYW1lPVwiUmVzcG9uc2UgcGhhc2VcIlxuICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgY29ubmVjdGlvbiB0ZXJtaW5hdGlvblwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1wiXG4gICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlc3BvbnNlID8/IFtdXCJcbiAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICBbZ2VuZXJpY1BvbGljaWVzXT1cImdlbmVyaWNQb2xpY2llc1wiXG4gICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICBwb2xpY3lGbG93UGhhc2U9XCJSRVNQT05TRVwiXG4gICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3Jlc3BvbnNlJywgJGV2ZW50KVwiXG4gICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJhcGlUeXBlID09PSAnTkFUSVZFJ1wiIGNsYXNzPVwiY29udGVudF9fdGFic1wiIGR5bmFtaWNIZWlnaHQ+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiR2xvYmFsXCIgYm9keUNsYXNzPVwiY29udGVudF9fdGFic19fYm9keVwiPlxuICAgICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICAgIG5hbWU9XCJDb25uZWN0IHBoYXNlXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIHdoZW4gdGhlIGNsaWVudCBjb25uZWN0cyB0byB0aGUgR2F0ZXdheVwiXG4gICAgICAgICAgICBbZGlzYWJsZWROb3RZZXRBdmFpbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnQ09OTkVDVCdcIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnQ09OTkVDVCdcIlxuICAgICAgICAgICAgW3N0ZXBzXT1cImZsb3cuY29ubmVjdCA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgICBwb2xpY3lGbG93UGhhc2U9XCJDT05ORUNUXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdjb25uZWN0JywgJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiSW50ZXJhY3QgcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgb24gYWxsIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHRoZSBHYXRld2F5XCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ0lOVEVSQUNUJ1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnSU5URVJBQ1QnXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LmludGVyYWN0ID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUZsb3dQaGFzZT1cIklOVEVSQUNUXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdpbnRlcmFjdCcsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJFdmVudCBtZXNzYWdlc1wiIGJvZHlDbGFzcz1cImNvbnRlbnRfX3RhYnNfX2JvZHlcIj5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiUHVibGlzaCBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB3aGVuIHB1Ymxpc2hpbmcgbWVzc2FnZXNcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJlbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUFVCTElTSCdcIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1BVQkxJU0gnXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnB1Ymxpc2ggPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbZ2VuZXJpY1BvbGljaWVzXT1cImdlbmVyaWNQb2xpY2llc1wiXG4gICAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgICAgcG9saWN5Rmxvd1BoYXNlPVwiUFVCTElTSFwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncHVibGlzaCcsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlN1YnNjcmliZSBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB3aGVuIGZldGNoaW5nIG1lc3NhZ2VzXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdTVUJTQ1JJQkUnXCJcbiAgICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1NVQlNDUklCRSdcIlxuICAgICAgICAgICAgW3N0ZXBzXT1cImZsb3cuc3Vic2NyaWJlID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW2dlbmVyaWNQb2xpY2llc109XCJnZW5lcmljUG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUZsb3dQaGFzZT1cIlNVQlNDUklCRVwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgnc3Vic2NyaWJlJywgJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2VtcHR5Rmxvd3M+XG4gICAgPGRpdiBjbGFzcz1cImVtcHR5Rmxvd3NcIj5cbiAgICAgIDxoMj5ObyBmbG93cyB5ZXQ8L2gyPlxuICAgICAgPHAgY2xhc3M9XCJtYXQtYm9keS0xXCI+Rmxvd3MgYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSB0aGUgYmVoYXZpb3Igb2YgeW91ciBBUEkgZXZlbnQgcGhhc2VzIHRocm91Z2ggY29uZmlndXJhYmxlIHBvbGljaWVzPC9wPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVHBsPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGxvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19sYWJlbFwiPkZsb3cgZGV0YWlsczwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0blwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuX19lZGl0XCIgbWF0LXN0cm9rZWQtYnV0dG9uIGRpc2FibGVkPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzplZGl0LXBlbmNpbFwiPjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZGVsZXRlXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGRpc2FibGVkPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzp0cmFzaFwiPjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxnaW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyIGNsYXNzPVwiaW5mb0JhciBsb2FkaW5nXCI+PC9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudCBsb2FkaW5nXCI+XG4gICAgPGdpby1sb2FkZXI+PC9naW8tbG9hZGVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
package/esm2022/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs
CHANGED
|
@@ -101,15 +101,15 @@ export class GioPolicyStudioDetailsInfoBarComponent {
|
|
|
101
101
|
},
|
|
102
102
|
];
|
|
103
103
|
}
|
|
104
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
105
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsInfoBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
105
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioPolicyStudioDetailsInfoBarComponent, isStandalone: true, selector: "gio-ps-flow-details-info-bar", inputs: { flow: "flow", entrypointsInfo: "entrypointsInfo" }, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div *ngIf=\"flow?.name\" class=\"info\">\n <span class=\"info__label\">Name</span>\n <span class=\"info__value strong\">{{ flow?.name }}</span>\n</div>\n\n<div *ngIf=\"entrypoints\" class=\"info\">\n <span class=\"info__label\">Entrypoints</span>\n <span *ngFor=\"let entrypoint of entrypoints\" class=\"info__value gio-badge gio-badge-neutral\">\n <mat-icon [svgIcon]=\"entrypoint.icon\"></mat-icon>\n {{ entrypoint.name }}</span\n >\n</div>\n\n<!-- MESSAGE API type -->\n\n<div *ngIf=\"operations\" class=\"info\">\n <span class=\"info__label\">Operations</span>\n <span *ngFor=\"let operation of operations\" class=\"info__value gio-badge-neutral\"> {{ operation }}</span>\n</div>\n\n<div *ngIf=\"channel\" class=\"info\">\n <span class=\"info__label\">Channel</span>\n <span class=\"info__value strong\">{{ channel }}</span>\n</div>\n\n<div *ngIf=\"channelOperator\" class=\"info\">\n <span class=\"info__label\">Channel Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ channelOperator }}</span>\n</div>\n\n<!-- PROXY API type -->\n\n<div *ngIf=\"path\" class=\"info\">\n <span class=\"info__label\">Path</span>\n <span class=\"info__value strong\">{{ path }}</span>\n</div>\n\n<div *ngIf=\"pathOperator\" class=\"info\">\n <span class=\"info__label\">Path Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ pathOperator }}</span>\n</div>\n\n<div *ngIf=\"methods\" class=\"info\">\n <span class=\"info__label\">HTTP methods</span>\n <span *ngFor=\"let method of methods\" class=\"info__value method\" [ngClass]=\"method.class\"> {{ method.name }}</span>\n</div>\n\n<!-- Condition -->\n\n<div *ngIf=\"condition\" class=\"info\">\n <span class=\"info__label\">Condition</span>\n <span class=\"info__value gio-badge-neutral condition\">{{ condition }}</span>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-flow:row wrap;padding:16px;gap:12px}.info__label{font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.info__value.strong{padding-left:8px;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.info__value.method{width:auto}.info__value.gio-badge mat-icon{margin-right:4px}.info__value.condition{text-transform:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCommonModule }] }); }
|
|
106
106
|
}
|
|
107
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsInfoBarComponent, decorators: [{
|
|
108
108
|
type: Component,
|
|
109
|
-
args: [{
|
|
109
|
+
args: [{ imports: [CommonModule, GioIconsModule, MatCommonModule], selector: 'gio-ps-flow-details-info-bar', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div *ngIf=\"flow?.name\" class=\"info\">\n <span class=\"info__label\">Name</span>\n <span class=\"info__value strong\">{{ flow?.name }}</span>\n</div>\n\n<div *ngIf=\"entrypoints\" class=\"info\">\n <span class=\"info__label\">Entrypoints</span>\n <span *ngFor=\"let entrypoint of entrypoints\" class=\"info__value gio-badge gio-badge-neutral\">\n <mat-icon [svgIcon]=\"entrypoint.icon\"></mat-icon>\n {{ entrypoint.name }}</span\n >\n</div>\n\n<!-- MESSAGE API type -->\n\n<div *ngIf=\"operations\" class=\"info\">\n <span class=\"info__label\">Operations</span>\n <span *ngFor=\"let operation of operations\" class=\"info__value gio-badge-neutral\"> {{ operation }}</span>\n</div>\n\n<div *ngIf=\"channel\" class=\"info\">\n <span class=\"info__label\">Channel</span>\n <span class=\"info__value strong\">{{ channel }}</span>\n</div>\n\n<div *ngIf=\"channelOperator\" class=\"info\">\n <span class=\"info__label\">Channel Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ channelOperator }}</span>\n</div>\n\n<!-- PROXY API type -->\n\n<div *ngIf=\"path\" class=\"info\">\n <span class=\"info__label\">Path</span>\n <span class=\"info__value strong\">{{ path }}</span>\n</div>\n\n<div *ngIf=\"pathOperator\" class=\"info\">\n <span class=\"info__label\">Path Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ pathOperator }}</span>\n</div>\n\n<div *ngIf=\"methods\" class=\"info\">\n <span class=\"info__label\">HTTP methods</span>\n <span *ngFor=\"let method of methods\" class=\"info__value method\" [ngClass]=\"method.class\"> {{ method.name }}</span>\n</div>\n\n<!-- Condition -->\n\n<div *ngIf=\"condition\" class=\"info\">\n <span class=\"info__label\">Condition</span>\n <span class=\"info__value gio-badge-neutral condition\">{{ condition }}</span>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-flow:row wrap;padding:16px;gap:12px}.info__label{font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.info__value.strong{padding-left:8px;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.info__value.method{width:auto}.info__value.gio-badge mat-icon{margin-right:4px}.info__value.condition{text-transform:none}\n"] }]
|
|
110
110
|
}], propDecorators: { flow: [{
|
|
111
111
|
type: Input
|
|
112
112
|
}], entrypointsInfo: [{
|
|
113
113
|
type: Input
|
|
114
114
|
}] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1pbmZvLWJhci9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLWluZm8tYmFyL2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBWS9DLE1BQU0sT0FBTyxzQ0FBc0M7SUFQbkQ7UUFTUyxTQUFJLEdBQVksU0FBUyxDQUFDO0tBK0ZsQztJQTFGQyxJQUFXLFNBQVM7UUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBc0IsQ0FBQztRQUN2RyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FB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dml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgR2lvSWNvbnNNb2R1bGUgfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgTWF0Q29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBDaGFubmVsU2VsZWN0b3IsIENvbmRpdGlvblNlbGVjdG9yLCBDb25uZWN0b3JJbmZvLCBIdHRwU2VsZWN0b3IsIE9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBGbG93Vk0gfSBmcm9tICcuLi8uLi9wb2xpY3ktc3R1ZGlvL2dpby1wb2xpY3ktc3R1ZGlvLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEdpb0ljb25zTW9kdWxlLCBNYXRDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc0luZm9CYXJDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvdz86IEZsb3dWTSA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW50cnlwb2ludHNJbmZvPzogQ29ubmVjdG9ySW5mb1tdO1xuXG4gIHB1YmxpYyBnZXQgY29uZGl0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29uZGl0aW9uU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NPTkRJVElPTicpIGFzIENvbmRpdGlvblNlbGVjdG9yO1xuICAgIGlmICghY29uZGl0aW9uU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBjb25kaXRpb25TZWxlY3Rvcj8uY29uZGl0aW9uO1xuICB9XG5cbiAgLy8gTUVTU0FHRSBBUEkgdHlwZVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9ucygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuICAgIGlmICghY2hhbm5lbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBvcGVyYXRpb25Ub0JhZGdlOiBSZWNvcmQ8T3BlcmF0aW9uLCBzdHJpbmc+ID0ge1xuICAgICAgUFVCTElTSDogJ1BVQicsXG4gICAgICBTVUJTQ1JJQkU6ICdTVUInLFxuICAgIH07XG4gICAgLy8gSWYgbm8gb3BlcmF0aW9ucyBhcmUgc2VsZWN0ZWQsIGFsbCBvcGVyYXRpb25zIGFyZSB2YWxpZFxuICAgIGNvbnN0IG9wZXJhdGlvbnMgPVxuICAgICAgIWNoYW5uZWxTZWxlY3Rvci5vcGVyYXRpb25zIHx8IGlzRW1wdHkoY2hhbm5lbFNlbGVjdG9yLm9wZXJhdGlvbnMpID8gKFsnUFVCTElTSCcsICdTVUJTQ1JJQkUnXSBhcyBjb25zdCkgOiBjaGFubmVsU2VsZWN0b3Iub3BlcmF0aW9ucztcblxuICAgIHJldHVybiBvcGVyYXRpb25zLm1hcChvID0+IG9wZXJhdGlvblRvQmFkZ2Vbb10pLnNvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhbm5lbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNoYW5uZWxTZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnQ0hBTk5FTCcpIGFzIENoYW5uZWxTZWxlY3RvcjtcbiAgICBpZiAoIWNoYW5uZWxTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGNoYW5uZWxTZWxlY3Rvcj8uY2hhbm5lbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhbm5lbE9wZXJhdG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuICAgIGlmICghY2hhbm5lbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gY2hhbm5lbFNlbGVjdG9yPy5jaGFubmVsT3BlcmF0b3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVudHJ5cG9pbnRzKCk6IENvbm5lY3RvckluZm9bXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuICAgIGlmICghY2hhbm5lbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmVudHJ5cG9pbnRzSW5mbz8uZmlsdGVyKFxuICAgICAgZSA9PlxuICAgICAgICAvLyBJZiBubyBlbnRyeXBvaW50cyBhcmUgc2VsZWN0ZWQsIGFsbCBlbnRyeXBvaW50cyBhcmUgdmFsaWRcbiAgICAgICAgIWNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cyB8fCBpc0VtcHR5KGNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cykgfHwgY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzPy5pbmNsdWRlcyhlLnR5cGUpLFxuICAgICk7XG4gIH1cblxuICAvLyBQUk9YWSBBUEkgdHlwZVxuXG4gIHB1YmxpYyBnZXQgcGF0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGh0dHBTZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnSFRUUCcpIGFzIEh0dHBTZWxlY3RvcjtcbiAgICBpZiAoIWh0dHBTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGh0dHBTZWxlY3Rvcj8ucGF0aDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGF0aE9wZXJhdG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaHR0cFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdIVFRQJykgYXMgSHR0cFNlbGVjdG9yO1xuICAgIGlmICghaHR0cFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gaHR0cFNlbGVjdG9yPy5wYXRoT3BlcmF0b3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1ldGhvZHMoKTogeyBuYW1lOiBzdHJpbmc7IGNsYXNzOiBzdHJpbmcgfVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBodHRwU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0hUVFAnKSBhcyBIdHRwU2VsZWN0b3I7XG4gICAgaWYgKCFodHRwU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBodHRwU2VsZWN0b3I/Lm1ldGhvZHM/Lmxlbmd0aFxuICAgICAgPyBodHRwU2VsZWN0b3I/Lm1ldGhvZHMubWFwKG0gPT4gKHtcbiAgICAgICAgICBuYW1lOiBtLFxuICAgICAgICAgIGNsYXNzOiBgZ2lvLW1ldGhvZC1iYWRnZS0ke20udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICB9KSlcbiAgICAgIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdBTEwnLFxuICAgICAgICAgICAgY2xhc3M6ICdnaW8tYmFkZ2UtbmV1dHJhbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDIzIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gICAgXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICBcbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48ZGl2ICpuZ0lmPVwiZmxvdz8ubmFtZVwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+TmFtZTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX192YWx1ZSBzdHJvbmdcIj57eyBmbG93Py5uYW1lIH19PC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJlbnRyeXBvaW50c1wiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+RW50cnlwb2ludHM8L3NwYW4+XG4gIDxzcGFuICpuZ0Zvcj1cImxldCBlbnRyeXBvaW50IG9mIGVudHJ5cG9pbnRzXCIgY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UgZ2lvLWJhZGdlLW5ldXRyYWxcIj5cbiAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiZW50cnlwb2ludC5pY29uXCI+PC9tYXQtaWNvbj5cbiAgICB7eyBlbnRyeXBvaW50Lm5hbWUgfX08L3NwYW5cbiAgPlxuPC9kaXY+XG5cbjwhLS0gTUVTU0FHRSBBUEkgdHlwZSAtLT5cblxuPGRpdiAqbmdJZj1cIm9wZXJhdGlvbnNcIiBjbGFzcz1cImluZm9cIj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX19sYWJlbFwiPk9wZXJhdGlvbnM8L3NwYW4+XG4gIDxzcGFuICpuZ0Zvcj1cImxldCBvcGVyYXRpb24gb2Ygb3BlcmF0aW9uc1wiIGNsYXNzPVwiaW5mb19fdmFsdWUgZ2lvLWJhZGdlLW5ldXRyYWxcIj4ge3sgb3BlcmF0aW9uIH19PC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJjaGFubmVsXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5DaGFubmVsPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIHN0cm9uZ1wiPnt7IGNoYW5uZWwgfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImNoYW5uZWxPcGVyYXRvclwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+Q2hhbm5lbCBPcGVyYXRvcjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPnt7IGNoYW5uZWxPcGVyYXRvciB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48IS0tIFBST1hZIEFQSSB0eXBlIC0tPlxuXG48ZGl2ICpuZ0lmPVwicGF0aFwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+UGF0aDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX192YWx1ZSBzdHJvbmdcIj57eyBwYXRoIH19PC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJwYXRoT3BlcmF0b3JcIiBjbGFzcz1cImluZm9cIj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX19sYWJlbFwiPlBhdGggT3BlcmF0b3I8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fdmFsdWUgZ2lvLWJhZGdlLW5ldXRyYWxcIj57eyBwYXRoT3BlcmF0b3IgfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cIm1ldGhvZHNcIiBjbGFzcz1cImluZm9cIj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX19sYWJlbFwiPkhUVFAgbWV0aG9kczwvc3Bhbj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IG1ldGhvZCBvZiBtZXRob2RzXCIgY2xhc3M9XCJpbmZvX192YWx1ZSBtZXRob2RcIiBbbmdDbGFzc109XCJtZXRob2QuY2xhc3NcIj4ge3sgbWV0aG9kLm5hbWUgfX08L3NwYW4+XG48L2Rpdj5cblxuPCEtLSBDb25kaXRpb24gLS0+XG5cbjxkaXYgKm5nSWY9XCJjb25kaXRpb25cIiBjbGFzcz1cImluZm9cIj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX19sYWJlbFwiPkNvbmRpdGlvbjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UtbmV1dHJhbCBjb25kaXRpb25cIj57eyBjb25kaXRpb24gfX08L3NwYW4+XG48L2Rpdj5cbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1pbmZvLWJhci9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLWluZm8tYmFyL2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVy9DLE1BQU0sT0FBTyxzQ0FBc0M7SUFObkQ7UUFRUyxTQUFJLEdBQVksU0FBUyxDQUFDO0tBK0ZsQztJQTFGQyxJQUFXLFNBQVM7UUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBc0IsQ0FBQztRQUN2RyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FB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IChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBHaW9JY29uc01vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5pbXBvcnQgeyBNYXRDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IENoYW5uZWxTZWxlY3RvciwgQ29uZGl0aW9uU2VsZWN0b3IsIENvbm5lY3RvckluZm8sIEh0dHBTZWxlY3RvciwgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZsb3dWTSB9IGZyb20gJy4uLy4uL3BvbGljeS1zdHVkaW8vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgR2lvSWNvbnNNb2R1bGUsIE1hdENvbW1vbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzSW5mb0JhckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93PzogRmxvd1ZNID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbnRyeXBvaW50c0luZm8/OiBDb25uZWN0b3JJbmZvW107XG5cbiAgcHVibGljIGdldCBjb25kaXRpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb25kaXRpb25TZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnQ09ORElUSU9OJykgYXMgQ29uZGl0aW9uU2VsZWN0b3I7XG4gICAgaWYgKCFjb25kaXRpb25TZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmRpdGlvblNlbGVjdG9yPy5jb25kaXRpb247XG4gIH1cblxuICAvLyBNRVNTQUdFIEFQSSB0eXBlXG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25zKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdGlvblRvQmFkZ2U6IFJlY29yZDxPcGVyYXRpb24sIHN0cmluZz4gPSB7XG4gICAgICBQVUJMSVNIOiAnUFVCJyxcbiAgICAgIFNVQlNDUklCRTogJ1NVQicsXG4gICAgfTtcbiAgICAvLyBJZiBubyBvcGVyYXRpb25zIGFyZSBzZWxlY3RlZCwgYWxsIG9wZXJhdGlvbnMgYXJlIHZhbGlkXG4gICAgY29uc3Qgb3BlcmF0aW9ucyA9XG4gICAgICAhY2hhbm5lbFNlbGVjdG9yLm9wZXJhdGlvbnMgfHwgaXNFbXB0eShjaGFubmVsU2VsZWN0b3Iub3BlcmF0aW9ucykgPyAoWydQVUJMSVNIJywgJ1NVQlNDUklCRSddIGFzIGNvbnN0KSA6IGNoYW5uZWxTZWxlY3Rvci5vcGVyYXRpb25zO1xuXG4gICAgcmV0dXJuIG9wZXJhdGlvbnMubWFwKG8gPT4gb3BlcmF0aW9uVG9CYWRnZVtvXSkuc29ydCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFubmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuICAgIGlmICghY2hhbm5lbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gY2hhbm5lbFNlbGVjdG9yPy5jaGFubmVsO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFubmVsT3BlcmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBjaGFubmVsU2VsZWN0b3I/LmNoYW5uZWxPcGVyYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW50cnlwb2ludHMoKTogQ29ubmVjdG9ySW5mb1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZW50cnlwb2ludHNJbmZvPy5maWx0ZXIoXG4gICAgICBlID0+XG4gICAgICAgIC8vIElmIG5vIGVudHJ5cG9pbnRzIGFyZSBzZWxlY3RlZCwgYWxsIGVudHJ5cG9pbnRzIGFyZSB2YWxpZFxuICAgICAgICAhY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzIHx8IGlzRW1wdHkoY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzKSB8fCBjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHM/LmluY2x1ZGVzKGUudHlwZSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIFBST1hZIEFQSSB0eXBlXG5cbiAgcHVibGljIGdldCBwYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaHR0cFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdIVFRQJykgYXMgSHR0cFNlbGVjdG9yO1xuICAgIGlmICghaHR0cFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gaHR0cFNlbGVjdG9yPy5wYXRoO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXRoT3BlcmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBodHRwU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0hUVFAnKSBhcyBIdHRwU2VsZWN0b3I7XG4gICAgaWYgKCFodHRwU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBodHRwU2VsZWN0b3I/LnBhdGhPcGVyYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWV0aG9kcygpOiB7IG5hbWU6IHN0cmluZzsgY2xhc3M6IHN0cmluZyB9W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGh0dHBTZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnSFRUUCcpIGFzIEh0dHBTZWxlY3RvcjtcbiAgICBpZiAoIWh0dHBTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGh0dHBTZWxlY3Rvcj8ubWV0aG9kcz8ubGVuZ3RoXG4gICAgICA/IGh0dHBTZWxlY3Rvcj8ubWV0aG9kcy5tYXAobSA9PiAoe1xuICAgICAgICAgIG5hbWU6IG0sXG4gICAgICAgICAgY2xhc3M6IGBnaW8tbWV0aG9kLWJhZGdlLSR7bS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgIH0pKVxuICAgICAgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0FMTCcsXG4gICAgICAgICAgICBjbGFzczogJ2dpby1iYWRnZS1uZXV0cmFsJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cbjxkaXYgKm5nSWY9XCJmbG93Py5uYW1lXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5OYW1lPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIHN0cm9uZ1wiPnt7IGZsb3c/Lm5hbWUgfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImVudHJ5cG9pbnRzXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5FbnRyeXBvaW50czwvc3Bhbj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IGVudHJ5cG9pbnQgb2YgZW50cnlwb2ludHNcIiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPlxuICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJlbnRyeXBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgIHt7IGVudHJ5cG9pbnQubmFtZSB9fTwvc3BhblxuICA+XG48L2Rpdj5cblxuPCEtLSBNRVNTQUdFIEFQSSB0eXBlIC0tPlxuXG48ZGl2ICpuZ0lmPVwib3BlcmF0aW9uc1wiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+T3BlcmF0aW9uczwvc3Bhbj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IG9wZXJhdGlvbiBvZiBvcGVyYXRpb25zXCIgY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPiB7eyBvcGVyYXRpb24gfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImNoYW5uZWxcIiBjbGFzcz1cImluZm9cIj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX19sYWJlbFwiPkNoYW5uZWw8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fdmFsdWUgc3Ryb25nXCI+e3sgY2hhbm5lbCB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiY2hhbm5lbE9wZXJhdG9yXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5DaGFubmVsIE9wZXJhdG9yPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZS1uZXV0cmFsXCI+e3sgY2hhbm5lbE9wZXJhdG9yIH19PC9zcGFuPlxuPC9kaXY+XG5cbjwhLS0gUFJPWFkgQVBJIHR5cGUgLS0+XG5cbjxkaXYgKm5nSWY9XCJwYXRoXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5QYXRoPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIHN0cm9uZ1wiPnt7IHBhdGggfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cInBhdGhPcGVyYXRvclwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+UGF0aCBPcGVyYXRvcjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPnt7IHBhdGhPcGVyYXRvciB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibWV0aG9kc1wiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+SFRUUCBtZXRob2RzPC9zcGFuPlxuICA8c3BhbiAqbmdGb3I9XCJsZXQgbWV0aG9kIG9mIG1ldGhvZHNcIiBjbGFzcz1cImluZm9fX3ZhbHVlIG1ldGhvZFwiIFtuZ0NsYXNzXT1cIm1ldGhvZC5jbGFzc1wiPiB7eyBtZXRob2QubmFtZSB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48IS0tIENvbmRpdGlvbiAtLT5cblxuPGRpdiAqbmdJZj1cImNvbmRpdGlvblwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+Q29uZGl0aW9uPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZS1uZXV0cmFsIGNvbmRpdGlvblwiPnt7IGNvbmRpdGlvbiB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
|