@gravitee/ui-policy-studio-angular 12.3.0 → 12.4.0-fix-studio-harness-c5681fe

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.
Files changed (20) hide show
  1. package/esm2022/lib/components/flow-details/gio-ps-flow-details.component.mjs +7 -4
  2. package/esm2022/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +7 -4
  3. package/esm2022/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +9 -5
  4. package/esm2022/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +8 -3
  5. package/esm2022/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +8 -4
  6. package/esm2022/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +1 -1
  7. package/esm2022/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +5 -3
  8. package/esm2022/lib/components/step-form/gio-ps-step-form.component.mjs +13 -5
  9. package/esm2022/lib/gio-policy-studio.component.mjs +10 -4
  10. package/fesm2022/gravitee-ui-policy-studio-angular.mjs +60 -25
  11. package/fesm2022/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  12. package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +2 -1
  13. package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +2 -1
  14. package/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.d.ts +3 -2
  15. package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.d.ts +2 -0
  16. package/lib/components/flows-menu/gio-ps-flows-menu.component.d.ts +2 -1
  17. package/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.d.ts +2 -0
  18. package/lib/components/step-form/gio-ps-step-form.component.d.ts +2 -1
  19. package/lib/gio-policy-studio.component.d.ts +5 -1
  20. package/package.json +1 -1
@@ -32,6 +32,7 @@ import * as i9 from "../filter-pipe/gio-flter-connectors-by-mode.pipe";
32
32
  export class GioPolicyStudioDetailsComponent {
33
33
  constructor(matDialog) {
34
34
  this.matDialog = matDialog;
35
+ this.readOnly = false;
35
36
  this.loading = false;
36
37
  this.flow = undefined;
37
38
  this.entrypointsInfo = [];
@@ -103,12 +104,14 @@ export class GioPolicyStudioDetailsComponent {
103
104
  });
104
105
  }
105
106
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyStudioDetailsComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: { loading: "loading", apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies", 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\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\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 [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\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 [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\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 [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\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}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "component", type: i7.GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { kind: "component", type: i8.GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["steps", "name", "description", "startConnector", "endConnector", "apiType", "policies", "policyExecutionPhase", "trialUrl"], outputs: ["stepsChange"] }, { kind: "pipe", type: i9.GioFilterConnectorsByModePipe, name: "gioFilterConnectorsByMode" }] }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: { readOnly: "readOnly", loading: "loading", apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies", 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\">Flow details</div>\n <div class=\"header__configBtn\">\n <button [disabled]=\"readOnly\" class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\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}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "component", type: i7.GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { kind: "component", type: i8.GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "policies", "policyExecutionPhase", "trialUrl"], outputs: ["stepsChange"] }, { kind: "pipe", type: i9.GioFilterConnectorsByModePipe, name: "gioFilterConnectorsByMode" }] }); }
107
108
  }
108
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyStudioDetailsComponent, decorators: [{
109
110
  type: Component,
110
- args: [{ selector: 'gio-ps-flow-details', 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\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\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 [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\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 [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\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 [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\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}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"] }]
111
- }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { loading: [{
111
+ args: [{ selector: 'gio-ps-flow-details', 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\">Flow details</div>\n <div class=\"header__configBtn\">\n <button [disabled]=\"readOnly\" class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"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 [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\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}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"] }]
112
+ }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { readOnly: [{
113
+ type: Input
114
+ }], loading: [{
112
115
  type: Input
113
116
  }], apiType: [{
114
117
  type: Input
@@ -127,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
127
130
  }], deleteFlow: [{
128
131
  type: Output
129
132
  }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQ0wsNkNBQTZDLEdBRTlDLE1BQU0sd0ZBQXdGLENBQUM7QUFFaEcsT0FBTyxFQUNMLDJDQUEyQyxHQUU1QyxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7Ozs7OztBQVE1RixNQUFNLE9BQU8sK0JBQStCO0lBZ0MxQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBOUIxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBTWhCLFNBQUksR0FBWSxTQUFTLENBQUM7UUFHMUIsb0JBQWUsR0FBb0IsRUFBRSxDQUFDO1FBR3RDLGtCQUFhLEdBQW9CLEVBQUUsQ0FBQztRQUdwQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBTXhCLGVBQVUsR0FBRyxJQUFJLFlBQVks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QStCLG1VQ3RDNUMsd3dOQXVKQTs7MkZEakhhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSxxQkFBcUI7OEVBTXhCLE9BQU87c0JBRGIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBHSU9fRElBTE9HX1dJRFRIIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcblxuaW1wb3J0IHsgRmxvd1ZNIH0gZnJvbSAnLi4vLi4vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcGlUeXBlLCBDaGFubmVsU2VsZWN0b3IsIENvbm5lY3RvckluZm8sIE9wZXJhdGlvbiwgUG9saWN5LCBTdGVwIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctcHJveHktZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctcHJveHktZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1mb3JtLWRpYWxvZy1yZXN1bHQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvdz86IEZsb3dWTSA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW50cnlwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5kcG9pbnRzSW5mbzogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmlhbFVybD86IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsb3dDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGRlbGV0ZUZsb3cgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBwdWJsaWMgbWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm86IENvbm5lY3RvckluZm9bXSA9IFtdO1xuXG4gIHB1YmxpYyBvcGVyYXRpb25zOiBPcGVyYXRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5lbnRyeXBvaW50c0luZm8gfHwgY2hhbmdlcy5mbG93KSB7XG4gICAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG5cbiAgICAgIHRoaXMub3BlcmF0aW9ucyA9IGNoYW5uZWxTZWxlY3Rvcj8ub3BlcmF0aW9ucyA/PyBbXTtcblxuICAgICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgICAgLy8gSWYgbm8gY2hhbm5lbCBzZWxlY3RvciBmb3VuZC4gS2VlcCBkZWZhdWx0IHZhbHVlXG4gICAgICAgIHRoaXMubWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm8gPSBbXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvID1cbiAgICAgICAgdGhpcy5lbnRyeXBvaW50c0luZm8/LmZpbHRlcihcbiAgICAgICAgICBlID0+XG4gICAgICAgICAgICAvLyBJZiBub3QgZW50cnlwb2ludHMgYXJlIGRlZmluZWQsIGFsbCBlbnRyeXBvaW50cyBhcmUgdmFsaWRcbiAgICAgICAgICAgICFjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHMgfHwgaXNFbXB0eShjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHMpIHx8IGNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cz8uaW5jbHVkZXMoZS50eXBlKSxcbiAgICAgICAgKSA/PyBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FZGl0RmxvdygpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZXN1bHQgPVxuICAgICAgdGhpcy5hcGlUeXBlID09PSAnTUVTU0FHRSdcbiAgICAgICAgPyB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgICAgLm9wZW48XG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nRGF0YSxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHRcbiAgICAgICAgICAgID4oR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBmbG93OiB0aGlzLmZsb3csXG4gICAgICAgICAgICAgICAgZW50cnlwb2ludHM6IHRoaXMuZW50cnlwb2ludHNJbmZvID8/IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgICAgICBpZDogJ2dpb1BzRmxvd01lc3NhZ2VGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgICAgd2lkdGg6IEdJT19ESUFMT0dfV0lEVEguTUVESVVNLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgIDogdGhpcy5tYXREaWFsb2dcbiAgICAgICAgICAgIC5vcGVuPEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLCBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdD4oXG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBmbG93OiB0aGlzLmZsb3csXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgICAgICAgIGlkOiAnZ2lvUHNGbG93UHJveHlGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5NRURJVU0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKTtcblxuICAgIGRpYWxvZ1Jlc3VsdFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChjcmVhdGVkT3JFZGl0ZWQgPT4ge1xuICAgICAgICAgIGlmICghY3JlYXRlZE9yRWRpdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5mbG93Q2hhbmdlLmVtaXQoY3JlYXRlZE9yRWRpdGVkKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVGbG93KCk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlRmxvdy5lbWl0KHRoaXMuZmxvdyk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwc0NoYW5nZShmbG93UGhhc2U6ICdyZXF1ZXN0JyB8ICdyZXNwb25zZScgfCAncHVibGlzaCcgfCAnc3Vic2NyaWJlJywgc3RlcHM6IFN0ZXBbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mbG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mbG93Q2hhbmdlLmVtaXQoe1xuICAgICAgLi4udGhpcy5mbG93LFxuICAgICAgW2Zsb3dQaGFzZV06IHN0ZXBzLFxuICAgICAgX2hhc0NoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmc7IHRoZW4gZmxvd0RldGFpbHNUcGw7IGVsc2UgbG9hZGluZ1RwbFwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Zsb3dEZXRhaWxzVHBsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmxvdzsgZWxzZSBlbXB0eUZsb3dzXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fbGFiZWxcIj5GbG93IGRldGFpbHM8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0blwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2VkaXRcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uRWRpdEZsb3coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmVkaXQtcGVuY2lsXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZGVsZXRlXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvbkRlbGV0ZUZsb3coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnRyYXNoXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhciBjbGFzcz1cImluZm9CYXJcIiBbZmxvd109XCJmbG93XCIgW2VudHJ5cG9pbnRzSW5mb109XCJlbnRyeXBvaW50c0luZm9cIj48L2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJhcGlUeXBlID09PSAnTUVTU0FHRSdcIiBjbGFzcz1cImNvbnRlbnRfX3RhYnNcIiBkeW5hbWljSGVpZ2h0PlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIkluaXRpYWwgY29ubmVjdGlvblwiIGJvZHlDbGFzcz1cImNvbnRlbnRfX3RhYnNfX2JvZHlcIj5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiUmVxdWVzdCBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudFwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwibWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm9cIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlcXVlc3QgPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVRVUVTVFwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncmVxdWVzdCcsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlJlc3BvbnNlIHBoYXNlXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSByZXNwb25zZSBmcm9tIHRoZSBpbml0aWFsIGNvbm5lY3Rpb25cIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm9cIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJtZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXNwb25zZSA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtwb2xpY2llc109XCJwb2xpY2llc1wiXG4gICAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgICAgcG9saWN5RXhlY3V0aW9uUGhhc2U9XCJSRVNQT05TRVwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncmVzcG9uc2UnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiRXZlbnQgbWVzc2FnZXNcIiBib2R5Q2xhc3M9XCJjb250ZW50X190YWJzX19ib2R5XCI+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlB1Ymxpc2ggcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgb24gbWVzc2FnZXMgc2VudCB0byB0aGUgZW5kcG9pbnRcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1BVQkxJU0gnIDogb3BlcmF0aW9uc1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUFVCTElTSCcgOiBvcGVyYXRpb25zXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnB1Ymxpc2ggPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiTUVTU0FHRV9SRVFVRVNUXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdwdWJsaXNoJywgJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiU3Vic2NyaWJlIHBoYXNlXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIG9uIG1lc3NhZ2VzIHJlY2VpdmVkIGJ5IHRoZSBlbnRyeXBvaW50XCJcbiAgICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1NVQlNDUklCRScgOiBvcGVyYXRpb25zXCJcbiAgICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwibWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnU1VCU0NSSUJFJyA6IG9wZXJhdGlvbnNcIlxuICAgICAgICAgICAgW3N0ZXBzXT1cImZsb3cuc3Vic2NyaWJlID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgICBwb2xpY3lFeGVjdXRpb25QaGFzZT1cIk1FU1NBR0VfUkVTUE9OU0VcIlxuICAgICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3N1YnNjcmliZScsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwaVR5cGUgPT09ICdQUk9YWSdcIj5cbiAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICBuYW1lPVwiUmVxdWVzdCBwaGFzZVwiXG4gICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnRcIlxuICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJlbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1wiXG4gICAgICAgICAgW3N0ZXBzXT1cImZsb3cucmVxdWVzdCA/PyBbXVwiXG4gICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVRVUVTVFwiXG4gICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3JlcXVlc3QnLCAkZXZlbnQpXCJcbiAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICBuYW1lPVwiUmVzcG9uc2UgcGhhc2VcIlxuICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgY29ubmVjdGlvbiB0ZXJtaW5hdGlvblwiXG4gICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1JFUVVFU1RfUkVTUE9OU0UnXCJcbiAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXNwb25zZSA/PyBbXVwiXG4gICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVTUE9OU0VcIlxuICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdyZXNwb25zZScsICRldmVudClcIlxuICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlGbG93cz5cbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHlGbG93c1wiPlxuICAgICAgPGgyPk5vIGZsb3dzIHlldDwvaDI+XG4gICAgICA8cCBjbGFzcz1cIm1hdC1ib2R5LTFcIj5GbG93cyBhbGxvdyB5b3UgdG8gY3VzdG9taXplIHRoZSBiZWhhdmlvciBvZiB5b3VyIEFQSSBldmVudCBwaGFzZXMgdGhyb3VnaCBjb25maWd1cmFibGUgcG9saWNpZXM8L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdUcGw+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXIgbG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2xhYmVsXCI+RmxvdyBkZXRhaWxzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2VkaXRcIiBtYXQtc3Ryb2tlZC1idXR0b24gZGlzYWJsZWQ+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmVkaXQtcGVuY2lsXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuX19kZWxldGVcIiBtYXQtc3Ryb2tlZC1idXR0b24gZGlzYWJsZWQ+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnRyYXNoXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGdpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXIgY2xhc3M9XCJpbmZvQmFyIGxvYWRpbmdcIj48L2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXI+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50IGxvYWRpbmdcIj5cbiAgICA8Z2lvLWxvYWRlcj48L2dpby1sb2FkZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQ0wsNkNBQTZDLEdBRTlDLE1BQU0sd0ZBQXdGLENBQUM7QUFFaEcsT0FBTyxFQUNMLDJDQUEyQyxHQUU1QyxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7Ozs7OztBQVE1RixNQUFNLE9BQU8sK0JBQStCO0lBbUMxQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBakMxQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFNaEIsU0FBSSxHQUFZLFNBQVMsQ0FBQztRQUcxQixvQkFBZSxHQUFvQixFQUFFLENBQUM7UUFHdEMsa0JBQWEsR0FBb0IsRUFBRSxDQUFDO1FBR3BDLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFNeEIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHeEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFeEMsK0JBQTBCLEdBQW9CLEVBQUUsQ0FBQztRQUVqRCxlQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUVnQixDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFvQixDQUFDO1lBRWpHLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFFcEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixtREFBbUQ7Z0JBQ25ELElBQUksQ0FBQywwQkFBMEIsR0FBRyxFQUFFLENBQUM7Z0JBQ3JDLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLDBCQUEwQjtnQkFDN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQzFCLENBQUMsQ0FBQyxFQUFFO2dCQUNGLDREQUE0RDtnQkFDNUQsQ0FBQyxlQUFlLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksZUFBZSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUN4SCxJQUFJLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRU0sVUFBVTtRQUNmLE1BQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVM7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTO2lCQUNYLElBQUksQ0FJSCw2Q0FBNkMsRUFBRTtnQkFDL0MsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFO2lCQUN4QztnQkFDRCxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsRUFBRSxFQUFFLDRCQUE0QjtnQkFDaEMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLE1BQU07YUFDL0IsQ0FBQztpQkFDRCxXQUFXLEVBQUU7WUFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTO2lCQUNYLElBQUksQ0FDSCwyQ0FBMkMsRUFDM0M7Z0JBQ0UsSUFBSSxFQUFFO29CQUNKLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDaEI7Z0JBQ0QsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEVBQUUsRUFBRSwwQkFBMEI7Z0JBQzlCLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO2FBQy9CLENBQ0Y7aUJBQ0EsV0FBVyxFQUFFLENBQUM7UUFFdkIsWUFBWTthQUNULElBQUksQ0FDSCxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxhQUFhLENBQUMsU0FBMkQsRUFBRSxLQUFhO1FBQzdGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FySFUsK0JBQStCO2tHQUEvQiwrQkFBK0IseVZDdEM1QyxraE9BNkpBOzsyRkR2SGEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLHFCQUFxQjs4RUFNeEIsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBHSU9fRElBTE9HX1dJRFRIIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcblxuaW1wb3J0IHsgRmxvd1ZNIH0gZnJvbSAnLi4vLi4vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcGlUeXBlLCBDaGFubmVsU2VsZWN0b3IsIENvbm5lY3RvckluZm8sIE9wZXJhdGlvbiwgUG9saWN5LCBTdGVwIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctcHJveHktZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctcHJveHktZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1mb3JtLWRpYWxvZy1yZXN1bHQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZE9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvdz86IEZsb3dWTSA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW50cnlwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5kcG9pbnRzSW5mbzogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmlhbFVybD86IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsb3dDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGRlbGV0ZUZsb3cgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBwdWJsaWMgbWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm86IENvbm5lY3RvckluZm9bXSA9IFtdO1xuXG4gIHB1YmxpYyBvcGVyYXRpb25zOiBPcGVyYXRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5lbnRyeXBvaW50c0luZm8gfHwgY2hhbmdlcy5mbG93KSB7XG4gICAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG5cbiAgICAgIHRoaXMub3BlcmF0aW9ucyA9IGNoYW5uZWxTZWxlY3Rvcj8ub3BlcmF0aW9ucyA/PyBbXTtcblxuICAgICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgICAgLy8gSWYgbm8gY2hhbm5lbCBzZWxlY3RvciBmb3VuZC4gS2VlcCBkZWZhdWx0IHZhbHVlXG4gICAgICAgIHRoaXMubWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm8gPSBbXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvID1cbiAgICAgICAgdGhpcy5lbnRyeXBvaW50c0luZm8/LmZpbHRlcihcbiAgICAgICAgICBlID0+XG4gICAgICAgICAgICAvLyBJZiBub3QgZW50cnlwb2ludHMgYXJlIGRlZmluZWQsIGFsbCBlbnRyeXBvaW50cyBhcmUgdmFsaWRcbiAgICAgICAgICAgICFjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHMgfHwgaXNFbXB0eShjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHMpIHx8IGNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cz8uaW5jbHVkZXMoZS50eXBlKSxcbiAgICAgICAgKSA/PyBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FZGl0RmxvdygpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZXN1bHQgPVxuICAgICAgdGhpcy5hcGlUeXBlID09PSAnTUVTU0FHRSdcbiAgICAgICAgPyB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgICAgLm9wZW48XG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nRGF0YSxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHRcbiAgICAgICAgICAgID4oR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBmbG93OiB0aGlzLmZsb3csXG4gICAgICAgICAgICAgICAgZW50cnlwb2ludHM6IHRoaXMuZW50cnlwb2ludHNJbmZvID8/IFtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgICAgICBpZDogJ2dpb1BzRmxvd01lc3NhZ2VGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgICAgd2lkdGg6IEdJT19ESUFMT0dfV0lEVEguTUVESVVNLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgIDogdGhpcy5tYXREaWFsb2dcbiAgICAgICAgICAgIC5vcGVuPEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLCBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdD4oXG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBmbG93OiB0aGlzLmZsb3csXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgICAgICAgIGlkOiAnZ2lvUHNGbG93UHJveHlGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5NRURJVU0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKTtcblxuICAgIGRpYWxvZ1Jlc3VsdFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChjcmVhdGVkT3JFZGl0ZWQgPT4ge1xuICAgICAgICAgIGlmICghY3JlYXRlZE9yRWRpdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5mbG93Q2hhbmdlLmVtaXQoY3JlYXRlZE9yRWRpdGVkKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVGbG93KCk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlRmxvdy5lbWl0KHRoaXMuZmxvdyk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwc0NoYW5nZShmbG93UGhhc2U6ICdyZXF1ZXN0JyB8ICdyZXNwb25zZScgfCAncHVibGlzaCcgfCAnc3Vic2NyaWJlJywgc3RlcHM6IFN0ZXBbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mbG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mbG93Q2hhbmdlLmVtaXQoe1xuICAgICAgLi4udGhpcy5mbG93LFxuICAgICAgW2Zsb3dQaGFzZV06IHN0ZXBzLFxuICAgICAgX2hhc0NoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmc7IHRoZW4gZmxvd0RldGFpbHNUcGw7IGVsc2UgbG9hZGluZ1RwbFwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Zsb3dEZXRhaWxzVHBsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmxvdzsgZWxzZSBlbXB0eUZsb3dzXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fbGFiZWxcIj5GbG93IGRldGFpbHM8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0blwiPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJyZWFkT25seVwiIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2VkaXRcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uRWRpdEZsb3coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmVkaXQtcGVuY2lsXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZGVsZXRlXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvbkRlbGV0ZUZsb3coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnRyYXNoXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhciBjbGFzcz1cImluZm9CYXJcIiBbZmxvd109XCJmbG93XCIgW2VudHJ5cG9pbnRzSW5mb109XCJlbnRyeXBvaW50c0luZm9cIj48L2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJhcGlUeXBlID09PSAnTUVTU0FHRSdcIiBjbGFzcz1cImNvbnRlbnRfX3RhYnNcIiBkeW5hbWljSGVpZ2h0PlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIkluaXRpYWwgY29ubmVjdGlvblwiIGJvZHlDbGFzcz1cImNvbnRlbnRfX3RhYnNfX2JvZHlcIj5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiUmVxdWVzdCBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudFwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvXCJcbiAgICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXF1ZXN0ID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgICBwb2xpY3lFeGVjdXRpb25QaGFzZT1cIlJFUVVFU1RcIlxuICAgICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3JlcXVlc3QnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICAgIG5hbWU9XCJSZXNwb25zZSBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgaW5pdGlhbCBjb25uZWN0aW9uXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlc3BvbnNlID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgICBwb2xpY3lFeGVjdXRpb25QaGFzZT1cIlJFU1BPTlNFXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdyZXNwb25zZScsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJFdmVudCBtZXNzYWdlc1wiIGJvZHlDbGFzcz1cImNvbnRlbnRfX3RhYnNfX2JvZHlcIj5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiUHVibGlzaCBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBvbiBtZXNzYWdlcyBzZW50IHRvIHRoZSBlbmRwb2ludFwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1BVQkxJU0gnIDogb3BlcmF0aW9uc1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUFVCTElTSCcgOiBvcGVyYXRpb25zXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnB1Ymxpc2ggPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiTUVTU0FHRV9SRVFVRVNUXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdwdWJsaXNoJywgJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiU3Vic2NyaWJlIHBoYXNlXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIG9uIG1lc3NhZ2VzIHJlY2VpdmVkIGJ5IHRoZSBlbnRyeXBvaW50XCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdTVUJTQ1JJQkUnIDogb3BlcmF0aW9uc1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZTogJ1NVQlNDUklCRScgOiBvcGVyYXRpb25zXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnN1YnNjcmliZSA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtwb2xpY2llc109XCJwb2xpY2llc1wiXG4gICAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgICAgcG9saWN5RXhlY3V0aW9uUGhhc2U9XCJNRVNTQUdFX1JFU1BPTlNFXCJcbiAgICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdzdWJzY3JpYmUnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcGlUeXBlID09PSAnUFJPWFknXCI+XG4gICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgbmFtZT1cIlJlcXVlc3QgcGhhc2VcIlxuICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50XCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJlbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1wiXG4gICAgICAgICAgW3N0ZXBzXT1cImZsb3cucmVxdWVzdCA/PyBbXVwiXG4gICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVRVUVTVFwiXG4gICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3JlcXVlc3QnLCAkZXZlbnQpXCJcbiAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICBuYW1lPVwiUmVzcG9uc2UgcGhhc2VcIlxuICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgY29ubmVjdGlvbiB0ZXJtaW5hdGlvblwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1wiXG4gICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlc3BvbnNlID8/IFtdXCJcbiAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgIFt0cmlhbFVybF09XCJ0cmlhbFVybFwiXG4gICAgICAgICAgcG9saWN5RXhlY3V0aW9uUGhhc2U9XCJSRVNQT05TRVwiXG4gICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3Jlc3BvbnNlJywgJGV2ZW50KVwiXG4gICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNlbXB0eUZsb3dzPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eUZsb3dzXCI+XG4gICAgICA8aDI+Tm8gZmxvd3MgeWV0PC9oMj5cbiAgICAgIDxwIGNsYXNzPVwibWF0LWJvZHktMVwiPkZsb3dzIGFsbG93IHlvdSB0byBjdXN0b21pemUgdGhlIGJlaGF2aW9yIG9mIHlvdXIgQVBJIGV2ZW50IHBoYXNlcyB0aHJvdWdoIGNvbmZpZ3VyYWJsZSBwb2xpY2llczwvcD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgPGRpdiBjbGFzcz1cImhlYWRlciBsb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fbGFiZWxcIj5GbG93IGRldGFpbHM8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5cIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZWRpdFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBkaXNhYmxlZD5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86ZWRpdC1wZW5jaWxcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2RlbGV0ZVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBkaXNhYmxlZD5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86dHJhc2hcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhciBjbGFzcz1cImluZm9CYXIgbG9hZGluZ1wiPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhcj5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQgbG9hZGluZ1wiPlxuICAgIDxnaW8tbG9hZGVyPjwvZ2lvLWxvYWRlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -28,6 +28,7 @@ import * as i7 from "../flow-details-phase-step/gio-ps-flow-details-phase-step.c
28
28
  export class GioPolicyStudioDetailsPhaseComponent {
29
29
  constructor(matDialog) {
30
30
  this.matDialog = matDialog;
31
+ this.readOnly = false;
31
32
  this.steps = [];
32
33
  this.startConnector = [];
33
34
  this.endConnector = [];
@@ -112,12 +113,14 @@ export class GioPolicyStudioDetailsPhaseComponent {
112
113
  ]);
113
114
  }
114
115
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: { steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", policies: "policies", policyExecutionPhase: "policyExecutionPhase", trialUrl: "trialUrl" }, outputs: { stepsChange: "stepsChange" }, 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<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon>{{ stepVM.step.condition }}</span\n >\n </div>\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [class.disabled]=\"!stepVM.step.enabled\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\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;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "component", type: i7.GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: ["step", "policies"], outputs: ["stepChange", "deleted", "disabled"] }] }); }
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: { readOnly: "readOnly", steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", policies: "policies", policyExecutionPhase: "policyExecutionPhase", trialUrl: "trialUrl" }, outputs: { stepsChange: "stepsChange" }, 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<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon>{{ stepVM.step.condition }}</span\n >\n </div>\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [readOnly]=\"readOnly\"\n [class.disabled]=\"readOnly || !stepVM.step.enabled\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\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;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "component", type: i7.GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: ["readOnly", "step", "policies"], outputs: ["stepChange", "deleted", "disabled"] }] }); }
116
117
  }
117
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, decorators: [{
118
119
  type: Component,
119
- args: [{ selector: 'gio-ps-flow-details-phase', 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<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon>{{ stepVM.step.condition }}</span\n >\n </div>\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [class.disabled]=\"!stepVM.step.enabled\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\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;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"] }]
120
- }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { steps: [{
120
+ args: [{ selector: 'gio-ps-flow-details-phase', 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<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon>{{ stepVM.step.condition }}</span\n >\n </div>\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [readOnly]=\"readOnly\"\n [class.disabled]=\"readOnly || !stepVM.step.enabled\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\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;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"] }]
121
+ }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { readOnly: [{
122
+ type: Input
123
+ }], steps: [{
121
124
  type: Input
122
125
  }], name: [{
123
126
  type: Input
@@ -138,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
138
141
  }], stepsChange: [{
139
142
  type: Output
140
143
  }] } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2xFLE9BQU8sRUFDTCw2Q0FBNkMsR0FHOUMsTUFBTSxxRUFBcUUsQ0FBQzs7Ozs7Ozs7O0FBcUI3RSxNQUFNLE9BQU8sb0NBQW9DO0lBbUMvQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBakMxQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBU25CLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUdyQyxpQkFBWSxHQUFvQixFQUFFLENBQUM7UUFNbkMsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQVN4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFekMsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBRTBCLENBQUM7SUFFOUMsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiO29CQUNFLElBQUksRUFBRSxZQUFZO29CQUNsQixVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRCxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7d0JBQ3BCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtxQkFDckIsQ0FBQyxDQUFDO2lCQUNKO2dCQUVELEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFDLElBQUksRUFBRSxNQUFlO29CQUNyQixJQUFJLEVBQUUsSUFBSTtvQkFDVixLQUFLO2lCQUNOLENBQUMsQ0FBQztnQkFFSDtvQkFDRSxJQUFJLEVBQUUsWUFBWTtvQkFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDOUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO3dCQUNwQixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7cUJBQ3JCLENBQUMsQ0FBQztpQkFDSjthQUNGLENBQUM7WUFFRix1REFBdUQ7WUFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDcEgsQ0FBQztJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsU0FBUzthQUNYLElBQUksQ0FJSCw2Q0FBNkMsRUFBRTtZQUMvQyxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixjQUFjLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtnQkFDekMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDeEI7WUFDRCxJQUFJLEVBQUUsYUFBYTtZQUNuQixFQUFFLEVBQUUsc0NBQXNDO1lBQzFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO1NBQzlCLENBQUM7YUFDRCxXQUFXLEVBQUU7YUFDYixTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsT0FBTztZQUNULENBQUM7WUFDRCxpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBYSxFQUFFLFVBQWdCO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFhO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDN0I7Z0JBQ0UsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDcEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPO2FBQ3BDO1lBQ0QsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBM0hVLG9DQUFvQztrR0FBcEMsb0NBQW9DLG1YQzlDakQsdTNIQThGQTs7MkZEaERhLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDRSwyQkFBMkI7OEVBTTlCLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgR0lPX0RJQUxPR19XSURUSCB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5cbmltcG9ydCB7IEFwaVR5cGUsIENvbm5lY3RvckluZm8sIEV4ZWN1dGlvblBoYXNlLCBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dEYXRhLFxuICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dSZXN1bHQsXG59IGZyb20gJy4uL3BvbGljaWVzLWNhdGFsb2ctZGlhbG9nL2dpby1wcy1wb2xpY2llcy1jYXRhbG9nLWRpYWxvZy5jb21wb25lbnQnO1xuXG50eXBlIFN0ZXBWTSA9XG4gIHwge1xuICAgICAgdHlwZTogJ2Nvbm5lY3RvcnMnO1xuICAgICAgY29ubmVjdG9yczoge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICBpY29uPzogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc3RlcCc7XG4gICAgICBzdGVwOiBTdGVwO1xuICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwczogU3RlcFtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIG5hbWUhOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRlc2NyaXB0aW9uITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVuZENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5RXhlY3V0aW9uUGhhc2UhOiBFeGVjdXRpb25QaGFzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJpYWxVcmw/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFtdPigpO1xuXG4gIHB1YmxpYyBzdGVwc1ZNOiBTdGVwVk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnN0ZXBzIHx8IGNoYW5nZXMuc3RhcnRDb25uZWN0b3IgfHwgY2hhbmdlcy5lbmRDb25uZWN0b3IpIHtcbiAgICAgIHRoaXMuc3RlcHNWTSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLnN0YXJ0Q29ubmVjdG9yLm1hcChjb25uZWN0b3IgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IGNvbm5lY3Rvci5uYW1lLFxuICAgICAgICAgICAgaWNvbjogY29ubmVjdG9yLmljb24sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuXG4gICAgICAgIC4uLih0aGlzLnN0ZXBzID8/IFtdKS5tYXAoKHN0ZXAsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIHR5cGU6ICdzdGVwJyBhcyBjb25zdCxcbiAgICAgICAgICBzdGVwOiBzdGVwLFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICB9KSksXG5cbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLmVuZENvbm5lY3Rvci5tYXAoY29ubmVjdG9yID0+ICh7XG4gICAgICAgICAgICBuYW1lOiBjb25uZWN0b3IubmFtZSxcbiAgICAgICAgICAgIGljb246IGNvbm5lY3Rvci5pY29uLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIERpc2FibGUgcGhhc2UgaWYgdGhlcmUgYXJlIG5vIHN0YXJ0ICYgZW5kIGNvbm5lY3RvcnNcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuc3RlcHNWTS5maWx0ZXIoc3RlcCA9PiBzdGVwLnR5cGUgPT09ICdjb25uZWN0b3JzJyAmJiAhaXNFbXB0eShzdGVwLmNvbm5lY3RvcnMpKS5sZW5ndGggPCAyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkFkZFBvbGljeShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXREaWFsb2dcbiAgICAgIC5vcGVuPFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0RhdGEsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ1Jlc3VsdFxuICAgICAgPihHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHBvbGljaWVzOiB0aGlzLnBvbGljaWVzLFxuICAgICAgICAgIGV4ZWN1dGlvblBoYXNlOiB0aGlzLnBvbGljeUV4ZWN1dGlvblBoYXNlLFxuICAgICAgICAgIGFwaVR5cGU6IHRoaXMuYXBpVHlwZSxcbiAgICAgICAgICB0cmlhbFVybDogdGhpcy50cmlhbFVybCxcbiAgICAgICAgfSxcbiAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgaWQ6ICdnaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2cnLFxuICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5MQVJHRSxcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZShzdGVwVG9BZGQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RlcHMgfHwgIXN0ZXBUb0FkZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgU3RlcCBhZnRlciB0aGUgZ2l2ZW4gaW5kZXhcbiAgICAgICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4ICsgMSksIHN0ZXBUb0FkZCwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBDaGFuZ2UoaW5kZXg6IG51bWJlciwgc3RlcFRvRWRpdDogU3RlcCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBSZXBsYWNlIHRoZSBzdGVwIGF0IHRoZSBnaXZlbiBpbmRleFxuICAgIHRoaXMuc3RlcHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksIHN0ZXBUb0VkaXQsIC4uLnRoaXMuc3RlcHMuc2xpY2UoaW5kZXggKyAxKV0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcERlbGV0ZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXgpLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBEaXNhYmxlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFtcbiAgICAgIC4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAge1xuICAgICAgICAuLi50aGlzLnN0ZXBzW2luZGV4XSxcbiAgICAgICAgZW5hYmxlZDogIXRoaXMuc3RlcHNbaW5kZXhdLmVuYWJsZWQsXG4gICAgICB9LFxuICAgICAgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpLFxuICAgIF0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fbmFtZVwiPlxuICAgIHt7IG5hbWUgfX1cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fZGVzY3JpcHRpb25cIj5cbiAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICA8L3NwYW4+XG5cbiAgPHNwYW4gKm5nSWY9XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJoZWFkZXJfX2luZm9JY29uXCIgbWF0VG9vbHRpcD1cIlBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzppbmZvXCI+PC9tYXQtaWNvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhaXNEaXNhYmxlZDsgZWxzZSBkaXNhYmxlZFBoYXNlQ29udGVudFwiIGNsYXNzPVwid3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXBWTSBvZiBzdGVwc1ZNOyBmaXJzdCBhcyBpc0ZpcnN0XCIgY2xhc3M9XCJjb250ZW50X19zdGVwXCI+XG4gICAgICA8IS0tIENvbm5lY3RvciAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwVk0udHlwZSA9PT0gJ2Nvbm5lY3RvcnMnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgY29ubmVjdG9yIG9mIHN0ZXBWTS5jb25uZWN0b3JzXCIgY2xhc3M9XCJnaW8tYmFkZ2Utd2hpdGUgY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29ubmVjdG9yLmljb25cIiBbc3ZnSWNvbl09XCJjb25uZWN0b3IuaWNvblwiIGNsYXNzPVwiY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZV9faWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICB7eyBjb25uZWN0b3IubmFtZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiBhZnRlciBmaXJzdCBjb25uZWN0b3IgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeSgtMSlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBQb2xpY3kgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcFZNLnR5cGUgPT09ICdzdGVwJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcF9fcG9saWN5XCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN0ZXBWTS5zdGVwPy5jb25kaXRpb25cIiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3BvbGljeV9fY29uZGl0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdpby1iYWRnZS1uZXV0cmFsXCIgW21hdFRvb2x0aXBdPVwiJ0NvbmRpdGlvbjogJyArIHN0ZXBWTS5zdGVwLmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgID48bWF0LWljb24gc3ZnSWNvbj1cImdpbzppZlwiPjwvbWF0LWljb24+e3sgc3RlcFZNLnN0ZXAuY29uZGl0aW9uIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcFxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19zdGVwX19zdGVwXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhc3RlcFZNLnN0ZXAuZW5hYmxlZFwiXG4gICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgW3N0ZXBdPVwic3RlcFZNLnN0ZXBcIlxuICAgICAgICAgICAgKHN0ZXBDaGFuZ2UpPVwib25TdGVwQ2hhbmdlKHN0ZXBWTS5pbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoZGVsZXRlZCk9XCJvblN0ZXBEZWxldGVkKHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgICAgKGRpc2FibGVkKT1cIm9uU3RlcERpc2FibGVkKHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiAtLT5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fYWRkQnRuXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwib25BZGRQb2xpY3koc3RlcFZNLmluZGV4KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGlzYWJsZWRQaGFzZUNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJkaXNhYmxlZENvbnRlbnRcIj5cbiAgICA8Z2lvLWJhbm5lci13YXJuaW5nPlxuICAgICAgUG9saWNpZXMgbWlnaHQgbm90IGJlIGV2YWx1YXRlZFxuICAgICAgPHNwYW4gZ2lvQmFubmVyQm9keT5cbiAgICAgICAgWW91ciBjdXJyZW50IGZsb3cgc2V0dGluZ3MgYXJlIG5vdCBhcHBsaWNhYmxlIHRvIHRoaXMgcGhhc2UuIFNlbGVjdCBzdXBwb3J0aW5nIGVuZHBvaW50cyBhbmQgb3BlcmF0aW9ucyBpbiB0aGUgZmxvdyBjb25maWd1cmF0aW9uIHRvXG4gICAgICAgIGVuYWJsZSB0aGlzIHBoYXNlLlxuICAgICAgPC9zcGFuPlxuICAgIDwvZ2lvLWJhbm5lci13YXJuaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2xFLE9BQU8sRUFDTCw2Q0FBNkMsR0FHOUMsTUFBTSxxRUFBcUUsQ0FBQzs7Ozs7Ozs7O0FBcUI3RSxNQUFNLE9BQU8sb0NBQW9DO0lBc0MvQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBcEMxQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFTbkIsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBR3JDLGlCQUFZLEdBQW9CLEVBQUUsQ0FBQztRQU1uQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBU3hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV6QyxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBRXZCLGVBQVUsR0FBRyxLQUFLLENB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LFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgR0lPX0RJQUxPR19XSURUSCB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5cbmltcG9ydCB7IEFwaVR5cGUsIENvbm5lY3RvckluZm8sIEV4ZWN1dGlvblBoYXNlLCBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dEYXRhLFxuICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dSZXN1bHQsXG59IGZyb20gJy4uL3BvbGljaWVzLWNhdGFsb2ctZGlhbG9nL2dpby1wcy1wb2xpY2llcy1jYXRhbG9nLWRpYWxvZy5jb21wb25lbnQnO1xuXG50eXBlIFN0ZXBWTSA9XG4gIHwge1xuICAgICAgdHlwZTogJ2Nvbm5lY3RvcnMnO1xuICAgICAgY29ubmVjdG9yczoge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICBpY29uPzogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc3RlcCc7XG4gICAgICBzdGVwOiBTdGVwO1xuICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwczogU3RlcFtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIG5hbWUhOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRlc2NyaXB0aW9uITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVuZENvbm5lY3RvcjogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5RXhlY3V0aW9uUGhhc2UhOiBFeGVjdXRpb25QaGFzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJpYWxVcmw/OiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFtdPigpO1xuXG4gIHB1YmxpYyBzdGVwc1ZNOiBTdGVwVk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnN0ZXBzIHx8IGNoYW5nZXMuc3RhcnRDb25uZWN0b3IgfHwgY2hhbmdlcy5lbmRDb25uZWN0b3IpIHtcbiAgICAgIHRoaXMuc3RlcHNWTSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLnN0YXJ0Q29ubmVjdG9yLm1hcChjb25uZWN0b3IgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IGNvbm5lY3Rvci5uYW1lLFxuICAgICAgICAgICAgaWNvbjogY29ubmVjdG9yLmljb24sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuXG4gICAgICAgIC4uLih0aGlzLnN0ZXBzID8/IFtdKS5tYXAoKHN0ZXAsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIHR5cGU6ICdzdGVwJyBhcyBjb25zdCxcbiAgICAgICAgICBzdGVwOiBzdGVwLFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICB9KSksXG5cbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLmVuZENvbm5lY3Rvci5tYXAoY29ubmVjdG9yID0+ICh7XG4gICAgICAgICAgICBuYW1lOiBjb25uZWN0b3IubmFtZSxcbiAgICAgICAgICAgIGljb246IGNvbm5lY3Rvci5pY29uLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIERpc2FibGUgcGhhc2UgaWYgdGhlcmUgYXJlIG5vIHN0YXJ0ICYgZW5kIGNvbm5lY3RvcnNcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuc3RlcHNWTS5maWx0ZXIoc3RlcCA9PiBzdGVwLnR5cGUgPT09ICdjb25uZWN0b3JzJyAmJiAhaXNFbXB0eShzdGVwLmNvbm5lY3RvcnMpKS5sZW5ndGggPCAyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkFkZFBvbGljeShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYXREaWFsb2dcbiAgICAgIC5vcGVuPFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0RhdGEsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ1Jlc3VsdFxuICAgICAgPihHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHBvbGljaWVzOiB0aGlzLnBvbGljaWVzLFxuICAgICAgICAgIGV4ZWN1dGlvblBoYXNlOiB0aGlzLnBvbGljeUV4ZWN1dGlvblBoYXNlLFxuICAgICAgICAgIGFwaVR5cGU6IHRoaXMuYXBpVHlwZSxcbiAgICAgICAgICB0cmlhbFVybDogdGhpcy50cmlhbFVybCxcbiAgICAgICAgfSxcbiAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgaWQ6ICdnaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2cnLFxuICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5MQVJHRSxcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZShzdGVwVG9BZGQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RlcHMgfHwgIXN0ZXBUb0FkZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgU3RlcCBhZnRlciB0aGUgZ2l2ZW4gaW5kZXhcbiAgICAgICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4ICsgMSksIHN0ZXBUb0FkZCwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBDaGFuZ2UoaW5kZXg6IG51bWJlciwgc3RlcFRvRWRpdDogU3RlcCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBSZXBsYWNlIHRoZSBzdGVwIGF0IHRoZSBnaXZlbiBpbmRleFxuICAgIHRoaXMuc3RlcHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksIHN0ZXBUb0VkaXQsIC4uLnRoaXMuc3RlcHMuc2xpY2UoaW5kZXggKyAxKV0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcERlbGV0ZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXgpLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBEaXNhYmxlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFtcbiAgICAgIC4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXgpLFxuICAgICAge1xuICAgICAgICAuLi50aGlzLnN0ZXBzW2luZGV4XSxcbiAgICAgICAgZW5hYmxlZDogIXRoaXMuc3RlcHNbaW5kZXhdLmVuYWJsZWQsXG4gICAgICB9LFxuICAgICAgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpLFxuICAgIF0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fbmFtZVwiPlxuICAgIHt7IG5hbWUgfX1cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fZGVzY3JpcHRpb25cIj5cbiAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICA8L3NwYW4+XG5cbiAgPHNwYW4gKm5nSWY9XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJoZWFkZXJfX2luZm9JY29uXCIgbWF0VG9vbHRpcD1cIlBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzppbmZvXCI+PC9tYXQtaWNvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhaXNEaXNhYmxlZDsgZWxzZSBkaXNhYmxlZFBoYXNlQ29udGVudFwiIGNsYXNzPVwid3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXBWTSBvZiBzdGVwc1ZNOyBmaXJzdCBhcyBpc0ZpcnN0XCIgY2xhc3M9XCJjb250ZW50X19zdGVwXCI+XG4gICAgICA8IS0tIENvbm5lY3RvciAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwVk0udHlwZSA9PT0gJ2Nvbm5lY3RvcnMnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgY29ubmVjdG9yIG9mIHN0ZXBWTS5jb25uZWN0b3JzXCIgY2xhc3M9XCJnaW8tYmFkZ2Utd2hpdGUgY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29ubmVjdG9yLmljb25cIiBbc3ZnSWNvbl09XCJjb25uZWN0b3IuaWNvblwiIGNsYXNzPVwiY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZV9faWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICB7eyBjb25uZWN0b3IubmFtZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiBhZnRlciBmaXJzdCBjb25uZWN0b3IgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeSgtMSlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBQb2xpY3kgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcFZNLnR5cGUgPT09ICdzdGVwJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcF9fcG9saWN5XCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN0ZXBWTS5zdGVwPy5jb25kaXRpb25cIiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3BvbGljeV9fY29uZGl0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdpby1iYWRnZS1uZXV0cmFsXCIgW21hdFRvb2x0aXBdPVwiJ0NvbmRpdGlvbjogJyArIHN0ZXBWTS5zdGVwLmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgID48bWF0LWljb24gc3ZnSWNvbj1cImdpbzppZlwiPjwvbWF0LWljb24+e3sgc3RlcFZNLnN0ZXAuY29uZGl0aW9uIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcFxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19zdGVwX19zdGVwXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicmVhZE9ubHkgfHwgIXN0ZXBWTS5zdGVwLmVuYWJsZWRcIlxuICAgICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBWTS5zdGVwXCJcbiAgICAgICAgICAgIChzdGVwQ2hhbmdlKT1cIm9uU3RlcENoYW5nZShzdGVwVk0uaW5kZXgsICRldmVudClcIlxuICAgICAgICAgICAgKGRlbGV0ZWQpPVwib25TdGVwRGVsZXRlZChzdGVwVk0uaW5kZXgpXCJcbiAgICAgICAgICAgIChkaXNhYmxlZCk9XCJvblN0ZXBEaXNhYmxlZChzdGVwVk0uaW5kZXgpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQWRkIHBvbGljeSBidXR0b24gLS0+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwicmVhZE9ubHlcIiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX2FkZEJ0blwiIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQWRkUG9saWN5KHN0ZXBWTS5pbmRleClcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpwbHVzXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Rpc2FibGVkUGhhc2VDb250ZW50PlxuICA8ZGl2IGNsYXNzPVwiZGlzYWJsZWRDb250ZW50XCI+XG4gICAgPGdpby1iYW5uZXItd2FybmluZz5cbiAgICAgIFBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcbiAgICAgIDxzcGFuIGdpb0Jhbm5lckJvZHk+XG4gICAgICAgIFlvdXIgY3VycmVudCBmbG93IHNldHRpbmdzIGFyZSBub3QgYXBwbGljYWJsZSB0byB0aGlzIHBoYXNlLiBTZWxlY3Qgc3VwcG9ydGluZyBlbmRwb2ludHMgYW5kIG9wZXJhdGlvbnMgaW4gdGhlIGZsb3cgY29uZmlndXJhdGlvbiB0b1xuICAgICAgICBlbmFibGUgdGhpcyBwaGFzZS5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2dpby1iYW5uZXItd2FybmluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -25,6 +25,7 @@ import * as i5 from "@angular/material/icon";
25
25
  export class GioPolicyStudioDetailsPhaseStepComponent {
26
26
  constructor(matDialog) {
27
27
  this.matDialog = matDialog;
28
+ this.readOnly = false;
28
29
  this.policies = [];
29
30
  this.stepChange = new EventEmitter();
30
31
  this.deleted = new EventEmitter();
@@ -35,7 +36,7 @@ export class GioPolicyStudioDetailsPhaseStepComponent {
35
36
  this.policy = this.policies.find(policy => policy.id === this.step.policy);
36
37
  }
37
38
  }
38
- onEdit() {
39
+ onEditOrView() {
39
40
  if (!this.policy) {
40
41
  // TODO: Handle UseCase when policy is not found. (Like if the plugin is removed from the BackEnd)
41
42
  return;
@@ -43,6 +44,7 @@ export class GioPolicyStudioDetailsPhaseStepComponent {
43
44
  this.matDialog
44
45
  .open(GioPolicyStudioStepEditDialogComponent, {
45
46
  data: {
47
+ readOnly: this.readOnly,
46
48
  policy: this.policy,
47
49
  step: this.step,
48
50
  },
@@ -65,12 +67,14 @@ export class GioPolicyStudioDetailsPhaseStepComponent {
65
67
  this.deleted.emit();
66
68
  }
67
69
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyStudioDetailsPhaseStepComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: { step: "step", policies: "policies" }, outputs: { stepChange: "stepChange", deleted: "deleted", disabled: "disabled" }, 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<div class=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEdit()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n <span>Edit</span>\n </button>\n\n <button mat-menu-item (click)=\"onDisable()\">\n <mat-icon [svgIcon]=\"step.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n <span>{{ step.enabled ? 'Disable' : 'Enable' }}</span>\n </button>\n\n <button mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete</span>\n </button>\n</mat-menu>\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;align-items:center;padding:8px;border:1px solid #6c59bd;border-radius:8px}:host-context(.disabled){border:1px solid #d3d5dc}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: { readOnly: "readOnly", step: "step", policies: "policies" }, outputs: { stepChange: "stepChange", deleted: "deleted", disabled: "disabled" }, 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<div class=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEditOrView()\">\n <mat-icon [svgIcon]=\"readOnly ? 'gio:eye-empty' : 'gio:edit-pencil'\"></mat-icon>\n <span>{{ readOnly ? 'View' : 'Edit' }}</span>\n </button>\n\n <button [disabled]=\"readOnly\" mat-menu-item (click)=\"onDisable()\">\n <mat-icon [svgIcon]=\"step.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n <span>{{ step.enabled ? 'Disable' : 'Enable' }}</span>\n </button>\n\n <button [disabled]=\"readOnly\" mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete</span>\n </button>\n</mat-menu>\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;align-items:center;padding:8px;border:1px solid #6c59bd;border-radius:8px}:host-context(.disabled){border:1px solid #d3d5dc}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
69
71
  }
70
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GioPolicyStudioDetailsPhaseStepComponent, decorators: [{
71
73
  type: Component,
72
- args: [{ selector: 'gio-ps-flow-details-phase-step', 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<div class=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEdit()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n <span>Edit</span>\n </button>\n\n <button mat-menu-item (click)=\"onDisable()\">\n <mat-icon [svgIcon]=\"step.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n <span>{{ step.enabled ? 'Disable' : 'Enable' }}</span>\n </button>\n\n <button mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete</span>\n </button>\n</mat-menu>\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;align-items:center;padding:8px;border:1px solid #6c59bd;border-radius:8px}:host-context(.disabled){border:1px solid #d3d5dc}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"] }]
73
- }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { step: [{
74
+ args: [{ selector: 'gio-ps-flow-details-phase-step', 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<div class=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEditOrView()\">\n <mat-icon [svgIcon]=\"readOnly ? 'gio:eye-empty' : 'gio:edit-pencil'\"></mat-icon>\n <span>{{ readOnly ? 'View' : 'Edit' }}</span>\n </button>\n\n <button [disabled]=\"readOnly\" mat-menu-item (click)=\"onDisable()\">\n <mat-icon [svgIcon]=\"step.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n <span>{{ step.enabled ? 'Disable' : 'Enable' }}</span>\n </button>\n\n <button [disabled]=\"readOnly\" mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete</span>\n </button>\n</mat-menu>\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;align-items:center;padding:8px;border:1px solid #6c59bd;border-radius:8px}:host-context(.disabled){border:1px solid #d3d5dc}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"] }]
75
+ }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { readOnly: [{
76
+ type: Input
77
+ }], step: [{
74
78
  type: Input
75
79
  }], policies: [{
76
80
  type: Input
@@ -81,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
81
85
  }], disabled: [{
82
86
  type: Output
83
87
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHbEUsT0FBTyxFQUNMLHNDQUFzQyxHQUd2QyxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7O0FBTy9ELE1BQU0sT0FBTyx3Q0FBd0M7SUFrQm5ELFlBQTZCLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFiMUMsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUd4QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd0QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUduQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUlTLENBQUM7SUFFOUMsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RSxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLGtHQUFrRztZQUNsRyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTO2FBQ1gsSUFBSSxDQUNILHNDQUFzQyxFQUN0QztZQUNFLElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNoQjtZQUNELElBQUksRUFBRSxhQUFhO1lBQ25CLEVBQUUsRUFBRSxpQ0FBaUM7WUFDckMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7U0FDOUIsQ0FDRjthQUNBLFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBN0RVLHdDQUF3QztrR0FBeEMsd0NBQXdDLDROQy9CckQsb3JEQThDQTs7MkZEZmEsd0NBQXdDO2tCQUxwRCxTQUFTOytCQUNFLGdDQUFnQzs4RUFNbkMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLE9BQU87c0JBRGIsTUFBTTtnQkFJQSxRQUFRO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEggfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuXG5pbXBvcnQgeyBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nRGF0YSxcbiAgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dSZXN1bHQsXG59IGZyb20gJy4uL3N0ZXAtZWRpdC1kaWFsb2cvZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXAhOiBTdGVwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5W10gPSBbXTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHN0ZXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBkZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZGlzYWJsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIHBvbGljeT86IFBvbGljeTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMucG9saWNpZXMgfHwgY2hhbmdlcy5zdGVwKSB7XG4gICAgICB0aGlzLnBvbGljeSA9IHRoaXMucG9saWNpZXMuZmluZChwb2xpY3kgPT4gcG9saWN5LmlkID09PSB0aGlzLnN0ZXAucG9saWN5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FZGl0KCkge1xuICAgIGlmICghdGhpcy5wb2xpY3kpIHtcbiAgICAgIC8vIFRPRE86IEhhbmRsZSBVc2VDYXNlIHdoZW4gcG9saWN5IGlzIG5vdCBmb3VuZC4gKExpa2UgaWYgdGhlIHBsdWdpbiBpcyByZW1vdmVkIGZyb20gdGhlIEJhY2tFbmQpXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tYXREaWFsb2dcbiAgICAgIC5vcGVuPEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0RhdGEsIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nUmVzdWx0PihcbiAgICAgICAgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dDb21wb25lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBwb2xpY3k6IHRoaXMucG9saWN5LFxuICAgICAgICAgICAgc3RlcDogdGhpcy5zdGVwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICBpZDogJ2dpb1BvbGljeVN0dWRpb1BvbGljeUZvcm1EaWFsb2cnLFxuICAgICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILkxBUkdFLFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoc3RlcFRvRWRpdCA9PiB7XG4gICAgICAgIGlmICghc3RlcFRvRWRpdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KHN0ZXBUb0VkaXQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25EaXNhYmxlKCkge1xuICAgIHRoaXMuZGlzYWJsZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlKCkge1xuICAgIHRoaXMuZGVsZXRlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaW5mb1wiPlxuICA8ZGl2IGNsYXNzPVwiaW5mb19faGVhZFwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImluZm9fX2hlYWRfX2ljb25cIiBbc3ZnSWNvbl09XCJwb2xpY3k/Lmljb24gPz8gJ2dpbzpwdXp6bGUnXCI+PC9tYXQtaWNvbj5cblxuICAgIDxzcGFuICpuZ0lmPVwic3RlcC5uYW1lXCIgY2xhc3M9XCJpbmZvX19oZWFkX19uYW1lXCI+e3sgc3RlcC5uYW1lIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwic3RlcC5kZXNjcmlwdGlvblwiIGNsYXNzPVwiaW5mb19fZGVzY3JpcHRpb25cIj57eyBzdGVwLmRlc2NyaXB0aW9uIH19PC9kaXY+XG48L2Rpdj5cblxuPGJ1dHRvbiBjbGFzcz1cIm1lbnVCdG5cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBvbGljeU1lbnVcIj48bWF0LWljb24gc3ZnSWNvbj1cImdpbzptb3JlLXZlcnRpY2FsXCI+PC9tYXQtaWNvbj48L2J1dHRvbj5cblxuPG1hdC1tZW51ICNwb2xpY3lNZW51PVwibWF0TWVudVwiPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRWRpdCgpXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86ZWRpdC1wZW5jaWxcIj48L21hdC1pY29uPlxuICAgIDxzcGFuPkVkaXQ8L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25EaXNhYmxlKClcIj5cbiAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwic3RlcC5lbmFibGVkID8gJ2dpbzpwcm9oaWJpdGlvbicgOiAnZ2lvOmNoZWNrLWNpcmNsZWQtb3V0bGluZSdcIj48L21hdC1pY29uPlxuICAgIDxzcGFuPnt7IHN0ZXAuZW5hYmxlZCA/ICdEaXNhYmxlJyA6ICdFbmFibGUnIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRGVsZXRlKClcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzp0cmFzaFwiPjwvbWF0LWljb24+XG4gICAgPHNwYW4+RGVsZXRlPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHbEUsT0FBTyxFQUNMLHNDQUFzQyxHQUd2QyxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7O0FBTy9ELE1BQU0sT0FBTyx3Q0FBd0M7SUFxQm5ELFlBQTZCLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFuQjFDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFNakIsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUd4QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd0QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUduQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUlTLENBQUM7SUFFOUMsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RSxDQUFDO0lBQ0gsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixrR0FBa0c7WUFDbEcsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUzthQUNYLElBQUksQ0FDSCxzQ0FBc0MsRUFDdEM7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNoQjtZQUNELElBQUksRUFBRSxhQUFhO1lBQ25CLEVBQUUsRUFBRSxpQ0FBaUM7WUFDckMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7U0FDOUIsQ0FDRjthQUNBLFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBakVVLHdDQUF3QztrR0FBeEMsd0NBQXdDLGtQQy9CckQsdXlEQThDQTs7MkZEZmEsd0NBQXdDO2tCQUxwRCxTQUFTOytCQUNFLGdDQUFnQzs4RUFNbkMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxPQUFPO3NCQURiLE1BQU07Z0JBSUEsUUFBUTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBHSU9fRElBTE9HX1dJRFRIIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcblxuaW1wb3J0IHsgUG9saWN5LCBTdGVwIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0RhdGEsXG4gIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nUmVzdWx0LFxufSBmcm9tICcuLi9zdGVwLWVkaXQtZGlhbG9nL2dpby1wcy1zdGVwLWVkaXQtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwITogU3RlcDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWNpZXM6IFBvbGljeVtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGRpc2FibGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBwb2xpY3k/OiBQb2xpY3k7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnBvbGljaWVzIHx8IGNoYW5nZXMuc3RlcCkge1xuICAgICAgdGhpcy5wb2xpY3kgPSB0aGlzLnBvbGljaWVzLmZpbmQocG9saWN5ID0+IHBvbGljeS5pZCA9PT0gdGhpcy5zdGVwLnBvbGljeSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRWRpdE9yVmlldygpIHtcbiAgICBpZiAoIXRoaXMucG9saWN5KSB7XG4gICAgICAvLyBUT0RPOiBIYW5kbGUgVXNlQ2FzZSB3aGVuIHBvbGljeSBpcyBub3QgZm91bmQuIChMaWtlIGlmIHRoZSBwbHVnaW4gaXMgcmVtb3ZlZCBmcm9tIHRoZSBCYWNrRW5kKVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWF0RGlhbG9nXG4gICAgICAub3BlbjxHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCwgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dEYXRhLCBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ1Jlc3VsdD4oXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nQ29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcmVhZE9ubHk6IHRoaXMucmVhZE9ubHksXG4gICAgICAgICAgICBwb2xpY3k6IHRoaXMucG9saWN5LFxuICAgICAgICAgICAgc3RlcDogdGhpcy5zdGVwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICBpZDogJ2dpb1BvbGljeVN0dWRpb1BvbGljeUZvcm1EaWFsb2cnLFxuICAgICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILkxBUkdFLFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoc3RlcFRvRWRpdCA9PiB7XG4gICAgICAgIGlmICghc3RlcFRvRWRpdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KHN0ZXBUb0VkaXQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25EaXNhYmxlKCkge1xuICAgIHRoaXMuZGlzYWJsZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlKCkge1xuICAgIHRoaXMuZGVsZXRlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaW5mb1wiPlxuICA8ZGl2IGNsYXNzPVwiaW5mb19faGVhZFwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImluZm9fX2hlYWRfX2ljb25cIiBbc3ZnSWNvbl09XCJwb2xpY3k/Lmljb24gPz8gJ2dpbzpwdXp6bGUnXCI+PC9tYXQtaWNvbj5cblxuICAgIDxzcGFuICpuZ0lmPVwic3RlcC5uYW1lXCIgY2xhc3M9XCJpbmZvX19oZWFkX19uYW1lXCI+e3sgc3RlcC5uYW1lIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwic3RlcC5kZXNjcmlwdGlvblwiIGNsYXNzPVwiaW5mb19fZGVzY3JpcHRpb25cIj57eyBzdGVwLmRlc2NyaXB0aW9uIH19PC9kaXY+XG48L2Rpdj5cblxuPGJ1dHRvbiBjbGFzcz1cIm1lbnVCdG5cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBvbGljeU1lbnVcIj48bWF0LWljb24gc3ZnSWNvbj1cImdpbzptb3JlLXZlcnRpY2FsXCI+PC9tYXQtaWNvbj48L2J1dHRvbj5cblxuPG1hdC1tZW51ICNwb2xpY3lNZW51PVwibWF0TWVudVwiPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRWRpdE9yVmlldygpXCI+XG4gICAgPG1hdC1pY29uIFtzdmdJY29uXT1cInJlYWRPbmx5ID8gJ2dpbzpleWUtZW1wdHknIDogJ2dpbzplZGl0LXBlbmNpbCdcIj48L21hdC1pY29uPlxuICAgIDxzcGFuPnt7IHJlYWRPbmx5ID8gJ1ZpZXcnIDogJ0VkaXQnIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIFtkaXNhYmxlZF09XCJyZWFkT25seVwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRGlzYWJsZSgpXCI+XG4gICAgPG1hdC1pY29uIFtzdmdJY29uXT1cInN0ZXAuZW5hYmxlZCA/ICdnaW86cHJvaGliaXRpb24nIDogJ2dpbzpjaGVjay1jaXJjbGVkLW91dGxpbmUnXCI+PC9tYXQtaWNvbj5cbiAgICA8c3Bhbj57eyBzdGVwLmVuYWJsZWQgPyAnRGlzYWJsZScgOiAnRW5hYmxlJyB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwicmVhZE9ubHlcIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86dHJhc2hcIj48L21hdC1pY29uPlxuICAgIDxzcGFuPkRlbGV0ZTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuIl19