@gravitee/ui-policy-studio-angular 7.9.2-fix-flow-execution-dialog-346a01b → 7.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog-result.model.mjs +17 -0
- package/esm2020/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +3 -3
- package/esm2020/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +1 -1
- package/esm2020/lib/gio-policy-studio.component.mjs +2 -2
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs +3 -3
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs +3 -3
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog-result.model.d.ts +2 -0
- package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.d.ts +3 -2
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2023 The Gravitee team (http://gravitee.io)
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLXJlc3VsdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLXJlc3VsdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEZsb3dFeGVjdXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5leHBvcnQgdHlwZSBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ1Jlc3VsdCA9IEZsb3dFeGVjdXRpb24gfCBmYWxzZTtcbiJdfQ==
|
|
@@ -49,12 +49,12 @@ export class GioPolicyStudioFlowExecutionFormDialogComponent {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
GioPolicyStudioFlowExecutionFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowExecutionFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
GioPolicyStudioFlowExecutionFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowExecutionFormDialogComponent, selector: "gio-ps-flow-execution-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.GioBannerInfoComponent, selector: "gio-banner-info" }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4.GioFormSlideToggleComponent, selector: "gio-form-slide-toggle", inputs: ["appearance"] }, { type: i4.GioFormLabelComponent, selector: "gio-form-label" }, { type: i8.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.MatLabel, selector: "mat-label" }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.GioFormSlideToggleDirective, selector: "[gioFormSlideToggle]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
52
|
+
GioPolicyStudioFlowExecutionFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowExecutionFormDialogComponent, selector: "gio-ps-flow-execution-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.GioBannerInfoComponent, selector: "gio-banner-info" }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4.GioFormSlideToggleComponent, selector: "gio-form-slide-toggle", inputs: ["appearance"] }, { type: i4.GioFormLabelComponent, selector: "gio-form-label" }, { type: i8.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.MatLabel, selector: "mat-label" }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.GioFormSlideToggleDirective, selector: "[gioFormSlideToggle]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
53
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowExecutionFormDialogComponent, decorators: [{
|
|
54
54
|
type: Component,
|
|
55
|
-
args: [{ selector: 'gio-ps-flow-execution-form-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
55
|
+
args: [{ selector: 'gio-ps-flow-execution-form-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
56
56
|
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
57
57
|
type: Inject,
|
|
58
58
|
args: [MAT_DIALOG_DATA]
|
|
59
59
|
}] }]; } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7Ozs7OztBQWVuQyxNQUFNLE9BQU8sK0NBQStDO0lBSzFELFlBQ1MsU0FBc0gsRUFDcEcsY0FBMEQ7UUFENUUsY0FBUyxHQUFULFNBQVMsQ0FBNkc7UUFHN0gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksU0FBUyxDQUFDO1lBQzFDLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLElBQUksSUFBSSxTQUFTLENBQUM7WUFDdkUsYUFBYSxFQUFFLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsYUFBYSxJQUFJLEtBQUssQ0FBQztTQUN0RixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNiLE1BQU0sbUJBQW1CLEdBQWtCO1lBQ3pDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQjtZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1lBQ3JELGFBQWEsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUs7U0FDeEUsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsbUJBQW1CO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7OzZJQTNCVSwrQ0FBK0MsOENBT2hELGVBQWU7aUlBUGQsK0NBQStDLHlFQ2pDNUQsZzJFQXdEQTs0RkR2QmEsK0NBQStDO2tCQUwzRCxTQUFTOytCQUNFLG1DQUFtQzs7MEJBVzFDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEZsb3dFeGVjdXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ1Jlc3VsdCB9IGZyb20gJy4vZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLXJlc3VsdC5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nRGF0YSA9IHtcbiAgZmxvd0V4ZWN1dGlvbj86IEZsb3dFeGVjdXRpb247XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nQ29tcG9uZW50IHtcbiAgcHVibGljIGZsb3dFeGVjdXRpb25Gb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIGV4aXN0aW5nRmxvd0V4ZWN1dGlvbj86IEZsb3dFeGVjdXRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ1Jlc3VsdD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGZsb3dEaWFsb2dEYXRhOiBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ0RhdGEsXG4gICkge1xuICAgIHRoaXMuZXhpc3RpbmdGbG93RXhlY3V0aW9uID0gY2xvbmVEZWVwKGZsb3dEaWFsb2dEYXRhPy5mbG93RXhlY3V0aW9uKTtcblxuICAgIHRoaXMuZmxvd0V4ZWN1dGlvbkZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbW9kZTogbmV3IEZvcm1Db250cm9sKGZsb3dEaWFsb2dEYXRhPy5mbG93RXhlY3V0aW9uPy5tb2RlID8/ICdERUZBVUxUJyksXG4gICAgICBtYXRjaFJlcXVpcmVkOiBuZXcgRm9ybUNvbnRyb2woZmxvd0RpYWxvZ0RhdGE/LmZsb3dFeGVjdXRpb24/Lm1hdGNoUmVxdWlyZWQgPz8gZmFsc2UpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGZsb3dFeGVjdXRpb25Ub1NhdmU6IEZsb3dFeGVjdXRpb24gPSB7XG4gICAgICAuLi50aGlzLmV4aXN0aW5nRmxvd0V4ZWN1dGlvbixcbiAgICAgIG1vZGU6IHRoaXMuZmxvd0V4ZWN1dGlvbkZvcm1Hcm91cD8uZ2V0KCdtb2RlJyk/LnZhbHVlLFxuICAgICAgbWF0Y2hSZXF1aXJlZDogdGhpcy5mbG93RXhlY3V0aW9uRm9ybUdyb3VwPy5nZXQoJ21hdGNoUmVxdWlyZWQnKT8udmFsdWUsXG4gICAgfTtcblxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgIC4uLmZsb3dFeGVjdXRpb25Ub1NhdmUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuPGgyIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJ0aXRsZVwiPlxuICBGbG93IGV4ZWN1dGlvblxuXG4gIDxidXR0b24gY2xhc3M9XCJ0aXRsZV9fY2xvc2VCdG5cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsb3NlIGRpYWxvZ1wiIFttYXQtZGlhbG9nLWNsb3NlXT1cImZhbHNlXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86Y2FuY2VsXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50ICpuZ0lmPVwiZmxvd0V4ZWN1dGlvbkZvcm1Hcm91cFwiIGNsYXNzPVwiY29udGVudFwiIFtmb3JtR3JvdXBdPVwiZmxvd0V4ZWN1dGlvbkZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudF9fcm93XCI+XG4gICAgPGdpby1iYW5uZXItaW5mbz5cbiAgICAgIEJ5IGRlZmF1bHQsIGZsb3cgc2VsZWN0aW9uIGlzIGJhc2VkIG9uIHRoZSBvcGVyYXRvcnMgZGVmaW5lZCBpbiB5b3VyIGZsb3dzLCBlaXRoZXIgd2hlbiBpdCDigJxtYXRjaGVzIHdpdGjigJ0gb3Ig4oCcc3RhcnRzIHdpdGjigJ0gYSBwYXRoLiBZb3VcbiAgICAgIGNhbiBjaG9vc2UgdGhlIFwiQmVzdCBtYXRjaFwiIG9wdGlvbiB0byBzZWxlY3QgYSBmbG93IGZyb20gdGhlIGNsb3Nlc3QgcGF0aC5cbiAgICA8L2dpby1iYW5uZXItaW5mbz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50X19yb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkRlZmF1bHQgZmxvdyBtb2RlPC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtb2RlXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiQkVTVF9NQVRDSFwiPkJlc3QgTWF0Y2g8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiREVGQVVMVFwiPkRlZmF1bHQ8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8bWF0LWhpbnQ+Q2hhbmdlIGhvdyB0aGUgZmxvdyBzZWxlY3Rpb24gaXMgbWFkZTwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX3Jvd1wiPlxuICAgIDxnaW8tZm9ybS1zbGlkZS10b2dnbGU+XG4gICAgICA8Z2lvLWZvcm0tbGFiZWw+RmFpbCBvbiBmbG93IG1pc21hdGNoPC9naW8tZm9ybS1sYWJlbD5cbiAgICAgIFJlc3BvbmQgd2l0aCBhbiBlcnJvciB3aGVuIHJlcXVlc3RzIGRvbuKAmXQgbWF0Y2ggYW55IGRlZmluZWQgZmxvd1xuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZ2lvRm9ybVNsaWRlVG9nZ2xlIGZvcm1Db250cm9sTmFtZT1cIm1hdGNoUmVxdWlyZWRcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPC9naW8tZm9ybS1zbGlkZS10b2dnbGU+XG4gIDwvZGl2PlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJhY3Rpb25zXCI+XG4gIDxidXR0b24gY2xhc3M9XCJhY3Rpb25zX19jYW5jZWxCdG5cIiBtYXQtZmxhdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZmFsc2VcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbnNfX3NhdmVCdG5cIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtc3Ryb2tlZC1idXR0b24gcm9sZT1cImRpYWxvZ1wiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+U2F2ZTwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
|
|
@@ -177,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
177
177
|
}], flowExecutionChange: [{
|
|
178
178
|
type: Output
|
|
179
179
|
}] } });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9mbG93cy1tZW51L2dpby1wcy1mbG93cy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvd3MtbWVudS9naW8tcHMtZmxvd3MtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5DLE9BQU8sRUFDTCw2Q0FBNkMsR0FFOUMsTUFBTSx3RkFBd0YsQ0FBQztBQUdoRyxPQUFPLEVBQ0wsMkNBQTJDLEdBRTVDLE1BQU0sb0ZBQW9GLENBQUM7QUFFNUYsT0FBTyxFQUNMLCtDQUErQyxHQUVoRCxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7O0FBcUJuRixNQUFNLE9BQU8saUNBQWlDO0lBMkI1QyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBbkIxQyxnQkFBVyxHQUFrQixFQUFFLENBQUM7UUFHaEMsaUJBQVksR0FBWSxTQUFTLENBQUM7UUFHbEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFHM0IsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUdoRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUd0RCx3QkFBbUIs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SSxFQUFFLGFBQWE7WUFDbkIsRUFBRSxFQUFFLDhCQUE4QjtTQUNuQyxDQUNGO2FBQ0EsV0FBVyxFQUFFLENBQUM7UUFFakIsWUFBWTthQUNULElBQUksQ0FDSCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzsrSEEzS1UsaUNBQWlDO21IQUFqQyxpQ0FBaUMsK1dDdkQ5QywyakZBK0RBOzRGRFJhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxtQkFBbUI7Z0dBTXRCLE9BQU87c0JBRGIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFJQSxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBSUEsbUJBQW1CO3NCQUR6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEsXG59IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEZsb3dHcm91cFZNLCBGbG93Vk0gfSBmcm9tICcuLi8uLi9naW8tcG9saWN5LXN0dWRpby5tb2RlbCc7XG5pbXBvcnQgeyBBcGlUeXBlLCBDaGFubmVsU2VsZWN0b3IsIEZsb3dFeGVjdXRpb24sIEh0dHBTZWxlY3RvciwgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctcHJveHktZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctcHJveHktZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1mb3JtLWRpYWxvZy1yZXN1bHQubW9kZWwnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd0V4ZWN1dGlvbkZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nRGF0YSxcbn0gZnJvbSAnLi4vZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBGbG93R3JvdXBNZW51Vk0gZXh0ZW5kcyBGbG93R3JvdXBWTSB7XG4gIGZsb3dzOiBGbG93TWVudVZNW107XG59XG5cbmludGVyZmFjZSBGbG93TWVudVZNIGV4dGVuZHMgRmxvd1ZNIHtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIG1vdXNlT3ZlcjogYm9vbGVhbjtcbiAgYmFkZ2VzOiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBjbGFzczogc3RyaW5nO1xuICB9W107XG4gIHBhdGhPckNoYW5uZWxMYWJlbDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvd3MtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtZmxvd3MtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93cy1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0Zsb3dzTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvd0V4ZWN1dGlvbiE6IEZsb3dFeGVjdXRpb247XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGVkRmxvdz86IEZsb3dWTSA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW50cnlwb2ludHM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3dDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsb3dzR3JvdXBzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGbG93R3JvdXBWTVtdPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmxvd0V4ZWN1dGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Rmxvd0V4ZWN1dGlvbj4oKTtcblxuICBwdWJsaWMgZmxvd3NHcm91cHNWTVNlbGVjdGVkOiBGbG93R3JvdXBNZW51Vk1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5mbG93c0dyb3VwcyB8fCBjaGFuZ2VzLnNlbGVjdGVkRmxvdykge1xuICAgICAgdGhpcy5mbG93c0dyb3Vwc1ZNU2VsZWN0ZWQgPSBjbG9uZURlZXAodGhpcy5mbG93c0dyb3VwcykubWFwKGZsb3dHcm91cCA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmxvd0dyb3VwLFxuICAgICAgICAgIGZsb3dzOiBmbG93R3JvdXAuZmxvd3MubWFwKGZsb3cgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmFkZ2VzOiBGbG93TWVudVZNWydiYWRnZXMnXSA9IFtdO1xuICAgICAgICAgICAgbGV0IHBhdGhPckNoYW5uZWxMYWJlbCA9ICcnO1xuICAgICAgICAgICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gZmxvdy5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuICAgICAgICAgICAgaWYgKGNoYW5uZWxTZWxlY3Rvcikge1xuICAgICAgICAgICAgICBjb25zdCBvcGVyYXRpb25Ub0JhZGdlOiBSZWNvcmQ8T3BlcmF0aW9uLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgICAgIFBVQkxJU0g6ICdQVUInLFxuICAgICAgICAgICAgICAgIFNVQlNDUklCRTogJ1NVQicsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbkJhZGdlcyA9IChjaGFubmVsU2VsZWN0b3Iub3BlcmF0aW9ucyA/PyBbXSlcbiAgICAgICAgICAgICAgICAubWFwKG9wZXJhdGlvbiA9PiAoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IG9wZXJhdGlvblRvQmFkZ2Vbb3BlcmF0aW9uXSxcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiAnZ2lvLWJhZGdlLW5ldXRyYWwnLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuICAgICAgICAgICAgICBvcGVyYXRpb25CYWRnZXMgJiYgYmFkZ2VzLnB1c2goLi4ub3BlcmF0aW9uQmFkZ2VzKTtcbiAgICAgICAgICAgICAgcGF0aE9yQ2hhbm5lbExhYmVsID0gYCR7Y2hhbm5lbFNlbGVjdG9yLmNoYW5uZWx9JHtjaGFubmVsU2VsZWN0b3IuY2hhbm5lbE9wZXJhdG9yID09PSAnU1RBUlRTX1dJVEgnID8gJyoqJyA6ICcnfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGh0dHBTZWxlY3RvciA9IGZsb3cuc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnSFRUUCcpIGFzIEh0dHBTZWxlY3RvcjtcbiAgICAgICAgICAgIGlmIChodHRwU2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgLy8gS2VlcCBvbmx5IDIgZmlyc3QgaHR0cCBtZXRob2RzIGFuZCBhZGQgK1ggYmFkZ2UgaWYgdGhlcmUgYXJlIG1vcmVcbiAgICAgICAgICAgICAgY29uc3QgaHR0cE1ldGhvZHNUb0tlZXAgPSBodHRwU2VsZWN0b3IubWV0aG9kcz8uc2xpY2UoMCwgMik7XG4gICAgICAgICAgICAgIGNvbnN0IGh0dHBNZXRob2RzTGVuZ3RoID0gaHR0cFNlbGVjdG9yLm1ldGhvZHM/Lmxlbmd0aDtcbiAgICAgICAgICAgICAgaHR0cE1ldGhvZHNUb0tlZXAgJiZcbiAgICAgICAgICAgICAgICBiYWRnZXMucHVzaCguLi5odHRwTWV0aG9kc1RvS2VlcC5tYXAobWV0aG9kID0+ICh7IGxhYmVsOiBtZXRob2QsIGNsYXNzOiBgZ2lvLW1ldGhvZC1iYWRnZS0ke21ldGhvZC50b0xvd2VyQ2FzZSgpfWAgfSkpKTtcbiAgICAgICAgICAgICAgaWYgKGh0dHBNZXRob2RzTGVuZ3RoICYmIGh0dHBNZXRob2RzTGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgIGJhZGdlcz8ucHVzaCh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogYCske2h0dHBNZXRob2RzTGVuZ3RoIC0gMn1gLFxuICAgICAgICAgICAgICAgICAgY2xhc3M6ICdnaW8tYmFkZ2UtbmV1dHJhbCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGh0dHBNZXRob2RzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYmFkZ2VzPy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQUxMJyxcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiAnZ2lvLWJhZGdlLW5ldXRyYWwnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcGF0aE9yQ2hhbm5lbExhYmVsID0gYCR7aHR0cFNlbGVjdG9yLnBhdGh9JHtodHRwU2VsZWN0b3IucGF0aE9wZXJhdG9yID09PSAnU1RBUlRTX1dJVEgnID8gJy8qKicgOiAnJ31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5mbG93LFxuICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEZsb3c/Ll9pZCA9PT0gZmxvdy5faWQsXG4gICAgICAgICAgICAgIG1vdXNlT3ZlcjogZmFsc2UsXG4gICAgICAgICAgICAgIGJhZGdlcyxcbiAgICAgICAgICAgICAgcGF0aE9yQ2hhbm5lbExhYmVsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RGbG93KGdyb3VwSWQ6IHN0cmluZywgZmxvd0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBmbG93ID0gdGhpcy5mbG93c0dyb3Vwcy5maW5kKGZnID0+IGZnLl9pZCA9PT0gZ3JvdXBJZCk/LmZsb3dzLmZpbmQoZiA9PiBmLl9pZCA9PT0gZmxvd0lkKTtcbiAgICBpZiAoZmxvdykge1xuICAgICAgdGhpcy5zZWxlY3RlZEZsb3dDaGFuZ2UuZW1pdChmbG93KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BZGRGbG93KGZsb3dHcm91cDogRmxvd0dyb3VwVk0pOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZXN1bHQgPVxuICAgICAgdGhpcy5hcGlUeXBlID09PSAnTUVTU0FHRSdcbiAgICAgICAgPyB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgICAgLm9wZW48XG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nRGF0YSxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHRcbiAgICAgICAgICAgID4oR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBmbG93OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZW50cnlwb2ludHM6IHRoaXMuZW50cnlwb2ludHMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgICAgIGlkOiAnZ2lvUHNGbG93Rm9ybURpYWxvZycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgOiB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgICAgLm9wZW48R2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCwgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0RhdGEsIEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0PihcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGZsb3c6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpO1xuXG4gICAgZGlhbG9nUmVzdWx0XG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKGNyZWF0ZWRPckVkaXRlZCA9PiB7XG4gICAgICAgICAgaWYgKCFjcmVhdGVkT3JFZGl0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZWRpdGVkRmxvd3NHcm91cHMgPSBjbG9uZURlZXAodGhpcy5mbG93c0dyb3Vwcyk7XG5cbiAgICAgICAgICBjb25zdCBmbG93c0dyb3VwVG9FZGl0ID0gZWRpdGVkRmxvd3NHcm91cHMuZmluZChmZyA9PiBmZy5faWQgPT09IGZsb3dHcm91cC5faWQpO1xuICAgICAgICAgIGlmICghZmxvd3NHcm91cFRvRWRpdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGbG93IGdyb3VwICR7Zmxvd0dyb3VwLl9pZH0gbm90IGZvdW5kYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsb3dzR3JvdXBUb0VkaXQuZmxvd3MucHVzaChjcmVhdGVkT3JFZGl0ZWQpO1xuXG4gICAgICAgICAgdGhpcy5mbG93c0dyb3Vwc0NoYW5nZS5lbWl0KGVkaXRlZEZsb3dzR3JvdXBzKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmxvd0NoYW5nZS5lbWl0KGNyZWF0ZWRPckVkaXRlZCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ29uZmlndXJlRXhlY3V0aW9uKGZsb3dFeGVjdXRpb246IEZsb3dFeGVjdXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZXN1bHQgPSB0aGlzLm1hdERpYWxvZ1xuICAgICAgLm9wZW48R2lvUG9saWN5U3R1ZGlvRmxvd0V4ZWN1dGlvbkZvcm1EaWFsb2dDb21wb25lbnQsIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nRGF0YSwgRmxvd0V4ZWN1dGlvbiB8IHVuZGVmaW5lZD4oXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZmxvd0V4ZWN1dGlvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nJyxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIC5hZnRlckNsb3NlZCgpO1xuXG4gICAgZGlhbG9nUmVzdWx0XG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKGVkaXRlZCA9PiB7XG4gICAgICAgICAgaWYgKCFlZGl0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5mbG93RXhlY3V0aW9uQ2hhbmdlLmVtaXQoZWRpdGVkKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2xhYmVsXCI+XG4gICAgRmxvd3MgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86aW5mb1wiIG1hdFRvb2x0aXA9XCJGbG93cyBhbGxvdyB5b3UgdG8gYXBwbHkgZGlmZmVyZW50IHBvbGljaWVzIG9uIHlvdXIgQVBJIGV2ZW50IHBoYXNlc1wiPjwvbWF0LWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5cIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fZWRpdFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ29uZmlndXJlRXhlY3V0aW9uKGZsb3dFeGVjdXRpb24pXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpzZXR0aW5nc1wiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJsaXN0XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGZsb3dzR3JvdXAgb2YgZmxvd3NHcm91cHNWTVNlbGVjdGVkXCIgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2hlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2hlYWRlcl9fbGFiZWxcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZmxvd3NHcm91cC5faWNvblwiIFtzdmdJY29uXT1cImZsb3dzR3JvdXAuX2ljb25cIj48L21hdC1pY29uPlxuICAgICAgICA8c3Bhbj57eyBmbG93c0dyb3VwLm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19oZWFkZXJfX2FkZEJ0blwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25BZGRGbG93KGZsb3dzR3JvdXApXCI+PG1hdC1pY29uIHN2Z0ljb249XCJnaW86cGx1c1wiIG1hdFRvb2x0aXA9XCJOZXcgZmxvd1wiPjwvbWF0LWljb24+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBmbG93IG9mIGZsb3dzR3JvdXAuZmxvd3NcIlxuICAgICAgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19mbG93XCJcbiAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJmbG93LnNlbGVjdGVkXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RGbG93KGZsb3dzR3JvdXAuX2lkLCBmbG93Ll9pZClcIlxuICAgICAgKG1vdXNlb3V0KT1cImZsb3cubW91c2VPdmVyID0gZmFsc2VcIlxuICAgICAgKG1vdXNlb3Zlcik9XCJmbG93Lm1vdXNlT3ZlciA9IHRydWVcIlxuICAgID5cbiAgICAgIDxkaXYgKm5nSWY9XCJmbG93Lm5hbWVcIiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2Zsb3dfX25hbWVcIiBbYXR0ci50aXRsZV09XCJmbG93Lm5hbWVcIj5cbiAgICAgICAge3sgZmxvdy5uYW1lIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19mbG93X19pbmZvc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9fZmxvd19faW5mb3NfX2JhZGdlc1wiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBiYWRnZSBvZiBmbG93LmJhZGdlc1wiIGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9fZmxvd19faW5mb3NfX2JhZGdlc19fYmFkZ2VcIiBbbmdDbGFzc109XCJiYWRnZS5jbGFzc1wiPnt7XG4gICAgICAgICAgICBiYWRnZS5sYWJlbFxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2Zsb3dfX2luZm9zX19wYXRoT3JDaGFubmVsTGFiZWxcIj57eyBmbG93LnBhdGhPckNoYW5uZWxMYWJlbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9mbG93cy1tZW51L2dpby1wcy1mbG93cy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvd3MtbWVudS9naW8tcHMtZmxvd3MtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5DLE9BQU8sRUFDTCw2Q0FBNkMsR0FFOUMsTUFBTSx3RkFBd0YsQ0FBQztBQUdoRyxPQUFPLEVBQ0wsMkNBQTJDLEdBRTVDLE1BQU0sb0ZBQW9GLENBQUM7QUFFNUYsT0FBTyxFQUNMLCtDQUErQyxHQUVoRCxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7O0FBc0JuRixNQUFNLE9BQU8saUNBQWlDO0lBMkI1QyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBbkIxQyxnQkFBVyxHQUFrQixFQUFFLENBQUM7UUFHaEMsaUJBQVksR0FBWSxTQUFTLENBQUM7UUFHbEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFHM0IsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUdoRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUd0RCx3QkFBbUIs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SSxFQUFFLGFBQWE7WUFDbkIsRUFBRSxFQUFFLDhCQUE4QjtTQUNuQyxDQUFDO2FBQ0QsV0FBVyxFQUFFLENBQUM7UUFFakIsWUFBWTthQUNULElBQUksQ0FDSCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzsrSEE1S1UsaUNBQWlDO21IQUFqQyxpQ0FBaUMsK1dDeEQ5QywyakZBK0RBOzRGRFBhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxtQkFBbUI7Z0dBTXRCLE9BQU87c0JBRGIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFJQSxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBSUEsbUJBQW1CO3NCQUR6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEsXG59IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEZsb3dHcm91cFZNLCBGbG93Vk0gfSBmcm9tICcuLi8uLi9naW8tcG9saWN5LXN0dWRpby5tb2RlbCc7XG5pbXBvcnQgeyBBcGlUeXBlLCBDaGFubmVsU2VsZWN0b3IsIEZsb3dFeGVjdXRpb24sIEh0dHBTZWxlY3RvciwgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctcHJveHktZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctcHJveHktZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1mb3JtLWRpYWxvZy1yZXN1bHQubW9kZWwnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd0V4ZWN1dGlvbkZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nRGF0YSxcbn0gZnJvbSAnLi4vZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL2Zsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LWV4ZWN1dGlvbi1mb3JtLWRpYWxvZy1yZXN1bHQubW9kZWwnO1xuXG5pbnRlcmZhY2UgRmxvd0dyb3VwTWVudVZNIGV4dGVuZHMgRmxvd0dyb3VwVk0ge1xuICBmbG93czogRmxvd01lbnVWTVtdO1xufVxuXG5pbnRlcmZhY2UgRmxvd01lbnVWTSBleHRlbmRzIEZsb3dWTSB7XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBtb3VzZU92ZXI6IGJvb2xlYW47XG4gIGJhZGdlczoge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY2xhc3M6IHN0cmluZztcbiAgfVtdO1xuICBwYXRoT3JDaGFubmVsTGFiZWw6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3dzLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvd3MtbWVudS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9GbG93c01lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXBpVHlwZSE6IEFwaVR5cGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZsb3dFeGVjdXRpb24hOiBGbG93RXhlY3V0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93c0dyb3VwczogRmxvd0dyb3VwVk1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3c/OiBGbG93Vk0gPSB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVudHJ5cG9pbnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRGbG93Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGbG93Vk0+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmbG93c0dyb3Vwc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Rmxvd0dyb3VwVk1bXT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsb3dFeGVjdXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dFeGVjdXRpb24+KCk7XG5cbiAgcHVibGljIGZsb3dzR3JvdXBzVk1TZWxlY3RlZDogRmxvd0dyb3VwTWVudVZNW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZmxvd3NHcm91cHMgfHwgY2hhbmdlcy5zZWxlY3RlZEZsb3cpIHtcbiAgICAgIHRoaXMuZmxvd3NHcm91cHNWTVNlbGVjdGVkID0gY2xvbmVEZWVwKHRoaXMuZmxvd3NHcm91cHMpLm1hcChmbG93R3JvdXAgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmZsb3dHcm91cCxcbiAgICAgICAgICBmbG93czogZmxvd0dyb3VwLmZsb3dzLm1hcChmbG93ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJhZGdlczogRmxvd01lbnVWTVsnYmFkZ2VzJ10gPSBbXTtcbiAgICAgICAgICAgIGxldCBwYXRoT3JDaGFubmVsTGFiZWwgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IGNoYW5uZWxTZWxlY3RvciA9IGZsb3cuc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnQ0hBTk5FTCcpIGFzIENoYW5uZWxTZWxlY3RvcjtcbiAgICAgICAgICAgIGlmIChjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3BlcmF0aW9uVG9CYWRnZTogUmVjb3JkPE9wZXJhdGlvbiwgc3RyaW5nPiA9IHtcbiAgICAgICAgICAgICAgICBQVUJMSVNIOiAnUFVCJyxcbiAgICAgICAgICAgICAgICBTVUJTQ1JJQkU6ICdTVUInLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjb25zdCBvcGVyYXRpb25CYWRnZXMgPSAoY2hhbm5lbFNlbGVjdG9yLm9wZXJhdGlvbnMgPz8gW10pXG4gICAgICAgICAgICAgICAgLm1hcChvcGVyYXRpb24gPT4gKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBvcGVyYXRpb25Ub0JhZGdlW29wZXJhdGlvbl0sXG4gICAgICAgICAgICAgICAgICBjbGFzczogJ2dpby1iYWRnZS1uZXV0cmFsJyxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uQmFkZ2VzICYmIGJhZGdlcy5wdXNoKC4uLm9wZXJhdGlvbkJhZGdlcyk7XG4gICAgICAgICAgICAgIHBhdGhPckNoYW5uZWxMYWJlbCA9IGAke2NoYW5uZWxTZWxlY3Rvci5jaGFubmVsfSR7Y2hhbm5lbFNlbGVjdG9yLmNoYW5uZWxPcGVyYXRvciA9PT0gJ1NUQVJUU19XSVRIJyA/ICcqKicgOiAnJ31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBodHRwU2VsZWN0b3IgPSBmbG93LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0hUVFAnKSBhcyBIdHRwU2VsZWN0b3I7XG4gICAgICAgICAgICBpZiAoaHR0cFNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgIC8vIEtlZXAgb25seSAyIGZpcnN0IGh0dHAgbWV0aG9kcyBhbmQgYWRkICtYIGJhZGdlIGlmIHRoZXJlIGFyZSBtb3JlXG4gICAgICAgICAgICAgIGNvbnN0IGh0dHBNZXRob2RzVG9LZWVwID0gaHR0cFNlbGVjdG9yLm1ldGhvZHM/LnNsaWNlKDAsIDIpO1xuICAgICAgICAgICAgICBjb25zdCBodHRwTWV0aG9kc0xlbmd0aCA9IGh0dHBTZWxlY3Rvci5tZXRob2RzPy5sZW5ndGg7XG4gICAgICAgICAgICAgIGh0dHBNZXRob2RzVG9LZWVwICYmXG4gICAgICAgICAgICAgICAgYmFkZ2VzLnB1c2goLi4uaHR0cE1ldGhvZHNUb0tlZXAubWFwKG1ldGhvZCA9PiAoeyBsYWJlbDogbWV0aG9kLCBjbGFzczogYGdpby1tZXRob2QtYmFkZ2UtJHttZXRob2QudG9Mb3dlckNhc2UoKX1gIH0pKSk7XG4gICAgICAgICAgICAgIGlmIChodHRwTWV0aG9kc0xlbmd0aCAmJiBodHRwTWV0aG9kc0xlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgICAgICBiYWRnZXM/LnB1c2goe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGArJHtodHRwTWV0aG9kc0xlbmd0aCAtIDJ9YCxcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiAnZ2lvLWJhZGdlLW5ldXRyYWwnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChodHRwTWV0aG9kc0xlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGJhZGdlcz8ucHVzaCh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0FMTCcsXG4gICAgICAgICAgICAgICAgICBjbGFzczogJ2dpby1iYWRnZS1uZXV0cmFsJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHBhdGhPckNoYW5uZWxMYWJlbCA9IGAke2h0dHBTZWxlY3Rvci5wYXRofSR7aHR0cFNlbGVjdG9yLnBhdGhPcGVyYXRvciA9PT0gJ1NUQVJUU19XSVRIJyA/ICcvKionIDogJyd9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uZmxvdyxcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRGbG93Py5faWQgPT09IGZsb3cuX2lkLFxuICAgICAgICAgICAgICBtb3VzZU92ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICBiYWRnZXMsXG4gICAgICAgICAgICAgIHBhdGhPckNoYW5uZWxMYWJlbCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0Rmxvdyhncm91cElkOiBzdHJpbmcsIGZsb3dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZmxvdyA9IHRoaXMuZmxvd3NHcm91cHMuZmluZChmZyA9PiBmZy5faWQgPT09IGdyb3VwSWQpPy5mbG93cy5maW5kKGYgPT4gZi5faWQgPT09IGZsb3dJZCk7XG4gICAgaWYgKGZsb3cpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGbG93Q2hhbmdlLmVtaXQoZmxvdyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQWRkRmxvdyhmbG93R3JvdXA6IEZsb3dHcm91cFZNKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVzdWx0ID1cbiAgICAgIHRoaXMuYXBpVHlwZSA9PT0gJ01FU1NBR0UnXG4gICAgICAgID8gdGhpcy5tYXREaWFsb2dcbiAgICAgICAgICAgIC5vcGVuPFxuICAgICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEsXG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0XG4gICAgICAgICAgICA+KEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZmxvdzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzOiB0aGlzLmVudHJ5cG9pbnRzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgICAgICBpZDogJ2dpb1BzRmxvd0Zvcm1EaWFsb2cnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgIDogdGhpcy5tYXREaWFsb2dcbiAgICAgICAgICAgIC5vcGVuPEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLCBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdD4oXG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBmbG93OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgICAgICAgIGlkOiAnZ2lvUHNGbG93Rm9ybURpYWxvZycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKTtcblxuICAgIGRpYWxvZ1Jlc3VsdFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChjcmVhdGVkT3JFZGl0ZWQgPT4ge1xuICAgICAgICAgIGlmICghY3JlYXRlZE9yRWRpdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGVkaXRlZEZsb3dzR3JvdXBzID0gY2xvbmVEZWVwKHRoaXMuZmxvd3NHcm91cHMpO1xuXG4gICAgICAgICAgY29uc3QgZmxvd3NHcm91cFRvRWRpdCA9IGVkaXRlZEZsb3dzR3JvdXBzLmZpbmQoZmcgPT4gZmcuX2lkID09PSBmbG93R3JvdXAuX2lkKTtcbiAgICAgICAgICBpZiAoIWZsb3dzR3JvdXBUb0VkaXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmxvdyBncm91cCAke2Zsb3dHcm91cC5faWR9IG5vdCBmb3VuZGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbG93c0dyb3VwVG9FZGl0LmZsb3dzLnB1c2goY3JlYXRlZE9yRWRpdGVkKTtcblxuICAgICAgICAgIHRoaXMuZmxvd3NHcm91cHNDaGFuZ2UuZW1pdChlZGl0ZWRGbG93c0dyb3Vwcyk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZsb3dDaGFuZ2UuZW1pdChjcmVhdGVkT3JFZGl0ZWQpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNvbmZpZ3VyZUV4ZWN1dGlvbihmbG93RXhlY3V0aW9uOiBGbG93RXhlY3V0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVzdWx0ID0gdGhpcy5tYXREaWFsb2dcbiAgICAgIC5vcGVuPFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd0V4ZWN1dGlvbkZvcm1EaWFsb2dEYXRhLFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ1Jlc3VsdFxuICAgICAgPihHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmxvd0V4ZWN1dGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nJyxcbiAgICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKTtcblxuICAgIGRpYWxvZ1Jlc3VsdFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChlZGl0ZWQgPT4ge1xuICAgICAgICAgIGlmICghZWRpdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZmxvd0V4ZWN1dGlvbkNoYW5nZS5lbWl0KGVkaXRlZCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19sYWJlbFwiPlxuICAgIEZsb3dzIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmluZm9cIiBtYXRUb29sdGlwPVwiRmxvd3MgYWxsb3cgeW91IHRvIGFwcGx5IGRpZmZlcmVudCBwb2xpY2llcyBvbiB5b3VyIEFQSSBldmVudCBwaGFzZXNcIj48L21hdC1pY29uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuX2VkaXRcIiBtYXQtc3Ryb2tlZC1idXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNvbmZpZ3VyZUV4ZWN1dGlvbihmbG93RXhlY3V0aW9uKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86c2V0dGluZ3NcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibGlzdFwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBmbG93c0dyb3VwIG9mIGZsb3dzR3JvdXBzVk1TZWxlY3RlZFwiIGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19oZWFkZXJfX2xhYmVsXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImZsb3dzR3JvdXAuX2ljb25cIiBbc3ZnSWNvbl09XCJmbG93c0dyb3VwLl9pY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+e3sgZmxvd3NHcm91cC5uYW1lIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9faGVhZGVyX19hZGRCdG5cIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQWRkRmxvdyhmbG93c0dyb3VwKVwiPjxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIiBtYXRUb29sdGlwPVwiTmV3IGZsb3dcIj48L21hdC1pY29uPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAqbmdGb3I9XCJsZXQgZmxvdyBvZiBmbG93c0dyb3VwLmZsb3dzXCJcbiAgICAgIGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9fZmxvd1wiXG4gICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZmxvdy5zZWxlY3RlZFwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0RmxvdyhmbG93c0dyb3VwLl9pZCwgZmxvdy5faWQpXCJcbiAgICAgIChtb3VzZW91dCk9XCJmbG93Lm1vdXNlT3ZlciA9IGZhbHNlXCJcbiAgICAgIChtb3VzZW92ZXIpPVwiZmxvdy5tb3VzZU92ZXIgPSB0cnVlXCJcbiAgICA+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZmxvdy5uYW1lXCIgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19mbG93X19uYW1lXCIgW2F0dHIudGl0bGVdPVwiZmxvdy5uYW1lXCI+XG4gICAgICAgIHt7IGZsb3cubmFtZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9fZmxvd19faW5mb3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2Zsb3dfX2luZm9zX19iYWRnZXNcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgZmxvdy5iYWRnZXNcIiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2Zsb3dfX2luZm9zX19iYWRnZXNfX2JhZGdlXCIgW25nQ2xhc3NdPVwiYmFkZ2UuY2xhc3NcIj57e1xuICAgICAgICAgICAgYmFkZ2UubGFiZWxcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19mbG93X19pbmZvc19fcGF0aE9yQ2hhbm5lbExhYmVsXCI+e3sgZmxvdy5wYXRoT3JDaGFubmVsTGFiZWwgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -103,7 +103,7 @@ export class GioPolicyStudioComponent {
|
|
|
103
103
|
this.save.emit({
|
|
104
104
|
...(commonFlows ? { commonFlows } : {}),
|
|
105
105
|
...(plansToUpdate ? { plansToUpdate } : {}),
|
|
106
|
-
...(this.hasFlowExecutionChanged ?
|
|
106
|
+
...(this.hasFlowExecutionChanged ? this.flowExecution : {}),
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
}
|
|
@@ -177,4 +177,4 @@ const getPlansChangeOutput = (flowsGroups, initialFlowsGroups) => {
|
|
|
177
177
|
}));
|
|
178
178
|
return plansWithChangedFlowsOutput.length > 0 ? plansWithChangedFlowsOutput : null;
|
|
179
179
|
};
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7QUFVeEcsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQVlFOztXQUVHO1FBRUksb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBRTlDOztXQUVHO1FBRUksa0JBQWEsR0FBcUIsRUFBRSxDQUFDO1FBR3JDLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBR3pCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFMUI7O1lBRUk7UUFFRyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUV0QyxzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFdkIsaUJBQVksR0FBWSxTQUFTLENBQUM7UUFFbEMsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBRWhDLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBRS9CLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUVoQyxnRkFBZ0Y7UUFDeEUsdUJBQWtCLEdBQWtCLEVBQUUsQ0FBQztRQUV2Qyw0QkFBdUIsR0FBRyxLQUFL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QUNyRiwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsOERBQThEO0lBQzlELE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRywyQkFBMkIsRUFBRSxHQUFHLDJCQUEyQixDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7UUFDeEMsZ0dBQWdHO1FBQ2hHLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBUTtRQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztLQUNoRSxDQUFDLENBQUMsQ0FBQztJQUVKLE9BQU8sMkJBQTJCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNyRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgY2xvbmVEZWVwLCBkaWZmZXJlbmNlQnksIGZsYXR0ZW4sIGlzRXF1YWwsIG9taXQsIHVuaW9uQnksIHVuaXF1ZUlkIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQXBpVHlwZSwgQ29ubmVjdG9yc0luZm8sIEZsb3csIEZsb3dFeGVjdXRpb24sIFBsYW4sIFNhdmVPdXRwdXQgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBGbG93R3JvdXBWTSwgRmxvd1ZNIH0gZnJvbSAnLi9naW8tcG9saWN5LXN0dWRpby5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wb2xpY3ktc3R1ZGlvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wb2xpY3ktc3R1ZGlvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93RXhlY3V0aW9uITogRmxvd0V4ZWN1dGlvbjtcblxuICAvKipcbiAgICogTGlzdCBvZiBlbnRyeXBvaW50cyB0byBkaXNwbGF5XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW50cnlwb2ludHNJbmZvOiBDb25uZWN0b3JzSW5mb1tdID0gW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZW5kcG9pbnRzIHRvIGRpc3BsYXlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmRwb2ludHNJbmZvOiBDb25uZWN0b3JzSW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbW1vbkZsb3dzOiBGbG93W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhbnM6IFBsYW5bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hhdCBpcyBuZWVkZWQgdG8gc2F2ZS5cbiAgICoqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFNhdmVPdXRwdXQ+KCk7XG5cbiAgcHVibGljIGNvbm5lY3RvcnNUb29sdGlwID0gJyc7XG5cbiAgcHVibGljIHNlbGVjdGVkRmxvdz86IEZsb3dWTSA9IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10gPSBbXTtcblxuICBwdWJsaWMgZW50cnlwb2ludHNUeXBlOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyBkaXNhYmxlU2F2ZUJ1dHRvbiA9IHRydWU7XG5cbiAgLy8gVXNlZCB0byBrZWVwIHRyYWNrIG9mIGluaXRpYWwgZmxvd3MgZ3JvdXBzIHRvIGtub3cgaWYgdGhlcmUgYXJlIGRlbGV0ZWQgZmxvd3NcbiAgcHJpdmF0ZSBpbml0aWFsRmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10gPSBbXTtcblxuICBwcml2YXRlIGhhc0Zsb3dFeGVjdXRpb25DaGFuZ2VkID0gZmFsc2U7XG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZW50cnlwb2ludHNJbmZvIHx8IGNoYW5nZXMuZW5kcG9pbnRzSW5mbykge1xuICAgICAgdGhpcy5jb25uZWN0b3JzVG9vbHRpcCA9IGBFbnRyeXBvaW50czogJHsodGhpcy5lbnRyeXBvaW50c0luZm8gPz8gW10pLm1hcChlID0+IGNhcGl0YWxpemUoZS50eXBlKSkuam9pbignLCAnKX1cXG5FbmRwb2ludHM6ICR7KFxuICAgICAgICB0aGlzLmVuZHBvaW50c0luZm8gPz8gW11cbiAgICAgIClcbiAgICAgICAgLm1hcChlID0+IGNhcGl0YWxpemUoZS50eXBlKSlcbiAgICAgICAgLmpvaW4oJywgJyl9YDtcblxuICAgICAgdGhpcy5lbnRyeXBvaW50c1R5cGUgPSAodGhpcy5lbnRyeXBvaW50c0luZm8gPz8gW10pLm1hcChlID0+IGUudHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY29tbW9uRmxvd3MgfHwgY2hhbmdlcy5wbGFucykge1xuICAgICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IHRydWU7XG4gICAgICB0aGlzLmZsb3dzR3JvdXBzID0gZ2V0Rmxvd3NHcm91cHModGhpcy5jb21tb25GbG93cywgdGhpcy5wbGFucyk7XG4gICAgICB0aGlzLmluaXRpYWxGbG93c0dyb3VwcyA9IGNsb25lRGVlcCh0aGlzLmZsb3dzR3JvdXBzKTtcblxuICAgICAgLy8gU2VsZWN0IGZpcnN0IGZsb3cgYnkgZGVmYXVsdCBvbiBmaXJzdCBsb2FkXG4gICAgICBpZiAoY2hhbmdlcy5jb21tb25GbG93cz8uaXNGaXJzdENoYW5nZSgpIHx8IGNoYW5nZXMucGxhbnM/LmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvdyA9IHRoaXMuZmxvd3NHcm91cHNbMF0uZmxvd3NbMF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRmxvd0V4ZWN1dGlvbkNoYW5nZShmbG93RXhlY3V0aW9uOiBGbG93RXhlY3V0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5oYXNGbG93RXhlY3V0aW9uQ2hhbmdlZCA9ICFpc0VxdWFsKHRoaXMuZmxvd0V4ZWN1dGlvbiwgZmxvd0V4ZWN1dGlvbik7XG4gICAgaWYgKHRoaXMuaGFzRmxvd0V4ZWN1dGlvbkNoYW5nZWQpIHtcbiAgICAgIHRoaXMuZGlzYWJsZVNhdmVCdXR0b24gPSBmYWxzZTtcbiAgICAgIHRoaXMuZmxvd0V4ZWN1dGlvbiA9IGZsb3dFeGVjdXRpb247XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRmxvd3NHcm91cHNDaGFuZ2UoZmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10pOiB2b2lkIHtcbiAgICB0aGlzLmZsb3dzR3JvdXBzID0gZmxvd3NHcm91cHM7XG4gICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWRGbG93Q2hhbmdlKGZsb3c6IEZsb3dWTSk6IHZvaWQge1xuICAgIHRoaXMuZmxvd3NHcm91cHMgPSB0aGlzLmZsb3dzR3JvdXBzLm1hcChmbG93R3JvdXAgPT4gKHtcbiAgICAgIC4uLmZsb3dHcm91cCxcbiAgICAgIGZsb3dzOiBmbG93R3JvdXAuZmxvd3MubWFwKGYgPT4gKGYuX2lkID09PSBmbG93Ll9pZCA/IGZsb3cgOiBmKSksXG4gICAgfSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRGbG93ID0gZmxvdztcbiAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVTZWxlY3RlZEZsb3coZmxvdzogRmxvd1ZNKTogdm9pZCB7XG4gICAgLy8gRGVmaW5lIG5leHQgc2VsZWN0ZWQgZmxvdyBhbmQgcmVtb3ZlIGZsb3cgZnJvbSBmbG93c0dyb3Vwc1xuICAgIGNvbnN0IGFsbEZsb3dzSWQgPSBmbGF0dGVuKHRoaXMuZmxvd3NHcm91cHMubWFwKGZsb3dHcm91cCA9PiBmbG93R3JvdXAuZmxvd3MpKS5tYXAoZiA9PiBmLl9pZCk7XG4gICAgY29uc3QgZmxvd1RvRGVsZXRlSW5kZXggPSBhbGxGbG93c0lkLmluZGV4T2YoZmxvdy5faWQpO1xuICAgIGNvbnN0IG5leHRTZWxlY3RlZEZsb3cgPSBhbGxGbG93c0lkW2Zsb3dUb0RlbGV0ZUluZGV4ICsgMV0gPz8gYWxsRmxvd3NJZFtmbG93VG9EZWxldGVJbmRleCAtIDFdO1xuICAgIHRoaXMuZmxvd3NHcm91cHMgPSB0aGlzLmZsb3dzR3JvdXBzLm1hcChmbG93R3JvdXAgPT4gKHtcbiAgICAgIC4uLmZsb3dHcm91cCxcbiAgICAgIGZsb3dzOiBmbG93R3JvdXAuZmxvd3MuZmlsdGVyKGYgPT4gZi5faWQgIT09IGZsb3cuX2lkKSxcbiAgICB9KSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkRmxvdyA9IGZsYXR0ZW4odGhpcy5mbG93c0dyb3Vwcy5tYXAoZmxvd0dyb3VwID0+IGZsb3dHcm91cC5mbG93cykpLmZpbmQoZiA9PiBmLl9pZCA9PT0gbmV4dFNlbGVjdGVkRmxvdyk7XG5cbiAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25TYXZlKCk6IHZvaWQge1xuICAgIC8vIEVtaXQgY29tbW9uIGZsb3dzIG9ubHkgaWYgdGhleSBoYXZlIGJlZW4gdXBkYXRlZFxuICAgIGNvbnN0IGNvbW1vbkZsb3dzID0gZ2V0Q29tbW9uRmxvd3NPdXRwdXQodGhpcy5mbG93c0dyb3VwcywgdGhpcy5pbml0aWFsRmxvd3NHcm91cHMpO1xuXG4gICAgLy8gRW1pdCBwbGFucyBvbmx5IGlmIHRoZXkgaGF2ZSBiZWVuIHVwZGF0ZWRcbiAgICBjb25zdCBwbGFuc1RvVXBkYXRlID0gZ2V0UGxhbnNDaGFuZ2VPdXRwdXQodGhpcy5mbG93c0dyb3VwcywgdGhpcy5pbml0aWFsRmxvd3NHcm91cHMpO1xuXG4gICAgdGhpcy5zYXZlLmVtaXQoe1xuICAgICAgLi4uKGNvbW1vbkZsb3dzID8geyBjb21tb25GbG93cyB9IDoge30pLFxuICAgICAgLi4uKHBsYW5zVG9VcGRhdGUgPyB7IHBsYW5zVG9VcGRhdGUgfSA6IHt9KSxcbiAgICAgIC4uLih0aGlzLmhhc0Zsb3dFeGVjdXRpb25DaGFuZ2VkID8geyBmbG93RXhlY3V0aW9uOiB0aGlzLmZsb3dFeGVjdXRpb24gfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBnZXRGbG93c0dyb3VwcyA9IChjb21tb25GbG93czogRmxvd1tdID0gW10sIHBsYW5zOiBQbGFuW10gPSBbXSk6IEZsb3dHcm91cFZNW10gPT4ge1xuICBjb25zdCBjb21tRmxvd3NHcm91cDogRmxvd0dyb3VwVk0gPSB7XG4gICAgX2lkOiAnZmxvd3NHcm91cF9jb21tb25GbG93JyxcbiAgICBuYW1lOiAnQ29tbW9uIGZsb3dzJyxcbiAgICBmbG93czogY29tbW9uRmxvd3MubWFwKGZsb3cgPT4gKHsgLi4uZmxvdywgX2lkOiB1bmlxdWVJZCgnZmxvd18nKSwgX2hhc0NoYW5nZWQ6IGZhbHNlIH0pKSxcbiAgfTtcblxuICByZXR1cm4gW1xuICAgIC4uLnBsYW5zLm1hcChwbGFuID0+ICh7XG4gICAgICBfaWQ6IHVuaXF1ZUlkKCdmbG93c0dyb3VwXycpLFxuICAgICAgX2ljb246ICdnaW86c2hpZWxkJyxcbiAgICAgIF9wbGFuSWQ6IHBsYW4uaWQsXG4gICAgICBuYW1lOiBwbGFuLm5hbWUsXG4gICAgICBmbG93czogcGxhbi5mbG93cy5tYXAoZmxvdyA9PiAoeyAuLi5mbG93LCBfaWQ6IHVuaXF1ZUlkKCdmbG93XycpLCBfaGFzQ2hhbmdlZDogZmFsc2UgfSkpLFxuICAgIH0pKSxcbiAgICBjb21tRmxvd3NHcm91cCxcbiAgXTtcbn07XG5cbmNvbnN0IGdldENvbW1vbkZsb3dzT3V0cHV0ID0gKGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdLCBpbml0aWFsRmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10pOiBGbG93W10gfCBudWxsID0+IHtcbiAgY29uc3QgY29tbW9uRmxvd3NHcm91cCA9IGZsb3dzR3JvdXBzLmZpbmQoZmxvd0dyb3VwID0+IGZsb3dHcm91cC5faWQgPT09ICdmbG93c0dyb3VwX2NvbW1vbkZsb3cnKTtcbiAgY29uc3QgaW5pdGlhbENvbW1vbkZsb3dzR3JvdXAgPSBpbml0aWFsRmxvd3NHcm91cHMuZmluZChmbG93R3JvdXAgPT4gZmxvd0dyb3VwLl9pZCA9PT0gJ2Zsb3dzR3JvdXBfY29tbW9uRmxvdycpO1xuICAvLyBDaGVjayBpZiBjb21tb24gZmxvd3MgaGF2ZSBiZWVuIHVwZGF0ZWRcbiAgY29uc3QgaGFzQ2hhbmdlZCA9IGNvbW1vbkZsb3dzR3JvdXA/LmZsb3dzLnNvbWUoZmxvdyA9PiBmbG93Ll9oYXNDaGFuZ2VkKTtcblxuICAvLyBDaGVjayBpZiBjb21tb24gZmxvd3MgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgY29uc3QgaGFzRGVsZXRlZEZsb3cgPSBkaWZmZXJlbmNlQnkoaW5pdGlhbENvbW1vbkZsb3dzR3JvdXA/LmZsb3dzID8/IFtdLCBjb21tb25GbG93c0dyb3VwPy5mbG93cyA/PyBbXSwgJ19pZCcpLmxlbmd0aCA+IDA7XG5cbiAgcmV0dXJuIGhhc0NoYW5nZWQgfHwgaGFzRGVsZXRlZEZsb3cgPyAoY29tbW9uRmxvd3NHcm91cD8uZmxvd3MgPz8gW10pLm1hcChmbG93ID0+IG9taXQoZmxvdywgJ19pZCcsICdfaGFzQ2hhbmdlZCcpKSA6IG51bGw7XG59O1xuXG5jb25zdCBnZXRQbGFuc0NoYW5nZU91dHB1dCA9IChmbG93c0dyb3VwczogRmxvd0dyb3VwVk1bXSwgaW5pdGlhbEZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdKTogUGxhbltdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHBsYW5zR3JvdXBzID0gZmxvd3NHcm91cHMuZmlsdGVyKGZsb3dHcm91cCA9PiBmbG93R3JvdXAuX2lkICE9PSAnZmxvd3NHcm91cF9jb21tb25GbG93Jyk7XG4gIGNvbnN0IGluaXRpYWxQbGFuc0dyb3VwcyA9IGluaXRpYWxGbG93c0dyb3Vwcy5maWx0ZXIoZmxvd0dyb3VwID0+IGZsb3dHcm91cC5faWQgIT09ICdmbG93c0dyb3VwX2NvbW1vbkZsb3cnKTtcblxuICAvLyBHZXQgcGxhbnMgd2l0aCBjaGFuZ2VkIGZsb3dzXG4gIGNvbnN0IHBsYW5zR3JvdXBzV2l0aENoYW5nZWRGbG93cyA9IHBsYW5zR3JvdXBzLmZpbHRlcihwbGFuID0+IHBsYW4uZmxvd3Muc29tZShmbG93ID0+IGZsb3cuX2hhc0NoYW5nZWQpKTtcblxuICAvLyBHZXQgcGxhbnMgd2l0aCBkZWxldGVkIGZsb3dzXG4gIGNvbnN0IHBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93czogRmxvd0dyb3VwVk1bXSA9IFtdO1xuXG4gIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBkZWxldGVkIGZsb3dzIGluIGluaXRpYWwgaW5pdGlhbFBsYW5zR3JvdXBzXG4gIGluaXRpYWxQbGFuc0dyb3Vwcy5mb3JFYWNoKHBsYW4gPT4ge1xuICAgIGNvbnN0IHBsYW5Hcm91cFRvQ29tcGFyZSA9IHBsYW5zR3JvdXBzLmZpbmQocCA9PiBwLl9wbGFuSWQgPT09IHBsYW4uX3BsYW5JZCk7XG4gICAgaWYgKHBsYW5Hcm91cFRvQ29tcGFyZSAmJiBkaWZmZXJlbmNlQnkocGxhbi5mbG93cywgcGxhbkdyb3VwVG9Db21wYXJlPy5mbG93cyA/PyBbXSwgJ19pZCcpLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBkZWxldGVkIGZsb3dzLCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgY29tcGxldGUgcGxhbiB3aXRoIHRoZSBuZXcgZmxvd3NcbiAgICAgIHBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93cy5wdXNoKHBsYW5Hcm91cFRvQ29tcGFyZSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBNZXJnZSBwbGFucyB3aXRoIGNoYW5nZWQgZmxvd3MgYW5kIHBsYW5zIHdpdGggZGVsZXRlZCBmbG93c1xuICBjb25zdCBwbGFuc1dpdGhDaGFuZ2VkRmxvd3NPdXRwdXQgPSB1bmlvbkJ5KFsuLi5wbGFuc0dyb3Vwc1dpdGhDaGFuZ2VkRmxvd3MsIC4uLnBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93c10sICdfcGxhbklkJykubWFwKHBsYW4gPT4gKHtcbiAgICAuLi5vbWl0KHBsYW4sICdfaWQnLCAnX2ljb24nLCAnX3BsYW5JZCcpLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uIC0tIHBsYW5JZCBpcyBhbHdheXMgZGVmaW5lZFxuICAgIGlkOiBwbGFuLl9wbGFuSWQhLFxuICAgIGZsb3dzOiBwbGFuLmZsb3dzLm1hcChmbG93ID0+IG9taXQoZmxvdywgJ19pZCcsICdfaGFzQ2hhbmdlZCcpKSxcbiAgfSkpO1xuXG4gIHJldHVybiBwbGFuc1dpdGhDaGFuZ2VkRmxvd3NPdXRwdXQubGVuZ3RoID4gMCA/IHBsYW5zV2l0aENoYW5nZWRGbG93c091dHB1dCA6IG51bGw7XG59O1xuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG5cbjxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlcl9fYXBpSW5mb1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ2lvLWJhZGdlLXByaW1hcnlcIj5cbiAgICAgIHt7IGFwaVR5cGUgfCB0aXRsZWNhc2UgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZ2lvLWJhZGdlLW5ldXRyYWxcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiY29ubmVjdG9yc1Rvb2x0aXBcIlxuICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgbWF0VG9vbHRpcENsYXNzPVwiZ2lvLXBvbGljeS1zdHVkaW9fX3Rvb2x0aXAtbGluZS1icmVha1wiXG4gICAgPlxuICAgICAgPG1hdC1pY29uICpuZ0Zvcj1cImxldCBlbnRyeXBvaW50IG9mIGVudHJ5cG9pbnRzSW5mb1wiIGNsYXNzPVwiZ2lvLWxlZnRcIiBbc3ZnSWNvbl09XCJlbnRyeXBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgICAgPG1hdC1pY29uICpuZ0Zvcj1cImxldCBlbmRwb2ludCBvZiBlbmRwb2ludHNJbmZvXCIgY2xhc3M9XCJnaW8tbGVmdFwiIFtzdmdJY29uXT1cImVuZHBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImhlYWRlcl9fYnRuXCI+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVTYXZlQnV0dG9uXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+U2F2ZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwid3JhcHBlcl9fZmxvd3NNZW51XCI+XG4gICAgPGdpby1wcy1mbG93cy1tZW51XG4gICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgIFtmbG93RXhlY3V0aW9uXT1cImZsb3dFeGVjdXRpb25cIlxuICAgICAgW2Zsb3dzR3JvdXBzXT1cImZsb3dzR3JvdXBzXCJcbiAgICAgIFtlbnRyeXBvaW50c109XCJlbnRyeXBvaW50c1R5cGVcIlxuICAgICAgKGZsb3dzR3JvdXBzQ2hhbmdlKT1cIm9uRmxvd3NHcm91cHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoZmxvd0V4ZWN1dGlvbkNoYW5nZSk9XCJvbkZsb3dFeGVjdXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbKHNlbGVjdGVkRmxvdyldPVwic2VsZWN0ZWRGbG93XCJcbiAgICA+PC9naW8tcHMtZmxvd3MtbWVudT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJfX2Zsb3dEZXRhaWxzXCI+XG4gICAgPGdpby1wcy1mbG93LWRldGFpbHNcbiAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgW2Zsb3ddPVwic2VsZWN0ZWRGbG93XCJcbiAgICAgIFtlbnRyeXBvaW50c0luZm9dPVwiZW50cnlwb2ludHNJbmZvXCJcbiAgICAgIFtlbmRwb2ludHNJbmZvXT1cImVuZHBvaW50c0luZm9cIlxuICAgICAgKGZsb3dDaGFuZ2UpPVwib25TZWxlY3RlZEZsb3dDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoZGVsZXRlRmxvdyk9XCJvbkRlbGV0ZVNlbGVjdGVkRmxvdygkZXZlbnQpXCJcbiAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvZ2lvLXBvbGljeS1zdHVkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7QUFVeEcsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQVlFOztXQUVHO1FBRUksb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBRTlDOztXQUVHO1FBRUksa0JBQWEsR0FBcUIsRUFBRSxDQUFDO1FBR3JDLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBR3pCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFMUI7O1lBRUk7UUFFRyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUV0QyxzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFdkIsaUJBQVksR0FBWSxTQUFTLENBQUM7UUFFbEMsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBRWhDLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBRS9CLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUVoQyxnRkFBZ0Y7UUFDeEUsdUJBQWtCLEdBQWtCLEVBQUUsQ0FBQztRQUV2Qyw0QkFBdUIsR0FBRyxLQUFL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SSxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDdEQ7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILDhEQUE4RDtJQUM5RCxNQUFNLDJCQUEyQixHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsMkJBQTJCLEVBQUUsR0FBRywyQkFBMkIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO1FBQ3hDLGdHQUFnRztRQUNoRyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQVE7UUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDaEUsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLDJCQUEyQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDckYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhcGl0YWxpemUsIGNsb25lRGVlcCwgZGlmZmVyZW5jZUJ5LCBmbGF0dGVuLCBpc0VxdWFsLCBvbWl0LCB1bmlvbkJ5LCB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEFwaVR5cGUsIENvbm5lY3RvcnNJbmZvLCBGbG93LCBGbG93RXhlY3V0aW9uLCBQbGFuLCBTYXZlT3V0cHV0IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgRmxvd0dyb3VwVk0sIEZsb3dWTSB9IGZyb20gJy4vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcG9saWN5LXN0dWRpbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcG9saWN5LXN0dWRpby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wb2xpY3ktc3R1ZGlvLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvd0V4ZWN1dGlvbiE6IEZsb3dFeGVjdXRpb247XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZW50cnlwb2ludHMgdG8gZGlzcGxheVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVudHJ5cG9pbnRzSW5mbzogQ29ubmVjdG9yc0luZm9bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGVuZHBvaW50cyB0byBkaXNwbGF5XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW5kcG9pbnRzSW5mbzogQ29ubmVjdG9yc0luZm9bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb21tb25GbG93czogRmxvd1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBsYW5zOiBQbGFuW10gPSBbXTtcblxuICAvKipcbiAgICogUmV0dXJuIHdoYXQgaXMgbmVlZGVkIHRvIHNhdmUuXG4gICAqKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxTYXZlT3V0cHV0PigpO1xuXG4gIHB1YmxpYyBjb25uZWN0b3JzVG9vbHRpcCA9ICcnO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3c/OiBGbG93Vk0gPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdID0gW107XG5cbiAgcHVibGljIGVudHJ5cG9pbnRzVHlwZTogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgZGlzYWJsZVNhdmVCdXR0b24gPSB0cnVlO1xuXG4gIC8vIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBpbml0aWFsIGZsb3dzIGdyb3VwcyB0byBrbm93IGlmIHRoZXJlIGFyZSBkZWxldGVkIGZsb3dzXG4gIHByaXZhdGUgaW5pdGlhbEZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdID0gW107XG5cbiAgcHJpdmF0ZSBoYXNGbG93RXhlY3V0aW9uQ2hhbmdlZCA9IGZhbHNlO1xuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmVudHJ5cG9pbnRzSW5mbyB8fCBjaGFuZ2VzLmVuZHBvaW50c0luZm8pIHtcbiAgICAgIHRoaXMuY29ubmVjdG9yc1Rvb2x0aXAgPSBgRW50cnlwb2ludHM6ICR7KHRoaXMuZW50cnlwb2ludHNJbmZvID8/IFtdKS5tYXAoZSA9PiBjYXBpdGFsaXplKGUudHlwZSkpLmpvaW4oJywgJyl9XFxuRW5kcG9pbnRzOiAkeyhcbiAgICAgICAgdGhpcy5lbmRwb2ludHNJbmZvID8/IFtdXG4gICAgICApXG4gICAgICAgIC5tYXAoZSA9PiBjYXBpdGFsaXplKGUudHlwZSkpXG4gICAgICAgIC5qb2luKCcsICcpfWA7XG5cbiAgICAgIHRoaXMuZW50cnlwb2ludHNUeXBlID0gKHRoaXMuZW50cnlwb2ludHNJbmZvID8/IFtdKS5tYXAoZSA9PiBlLnR5cGUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbW1vbkZsb3dzIHx8IGNoYW5nZXMucGxhbnMpIHtcbiAgICAgIHRoaXMuZGlzYWJsZVNhdmVCdXR0b24gPSB0cnVlO1xuICAgICAgdGhpcy5mbG93c0dyb3VwcyA9IGdldEZsb3dzR3JvdXBzKHRoaXMuY29tbW9uRmxvd3MsIHRoaXMucGxhbnMpO1xuICAgICAgdGhpcy5pbml0aWFsRmxvd3NHcm91cHMgPSBjbG9uZURlZXAodGhpcy5mbG93c0dyb3Vwcyk7XG5cbiAgICAgIC8vIFNlbGVjdCBmaXJzdCBmbG93IGJ5IGRlZmF1bHQgb24gZmlyc3QgbG9hZFxuICAgICAgaWYgKGNoYW5nZXMuY29tbW9uRmxvd3M/LmlzRmlyc3RDaGFuZ2UoKSB8fCBjaGFuZ2VzLnBsYW5zPy5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZsb3cgPSB0aGlzLmZsb3dzR3JvdXBzWzBdLmZsb3dzWzBdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkZsb3dFeGVjdXRpb25DaGFuZ2UoZmxvd0V4ZWN1dGlvbjogRmxvd0V4ZWN1dGlvbik6IHZvaWQge1xuICAgIHRoaXMuaGFzRmxvd0V4ZWN1dGlvbkNoYW5nZWQgPSAhaXNFcXVhbCh0aGlzLmZsb3dFeGVjdXRpb24sIGZsb3dFeGVjdXRpb24pO1xuICAgIGlmICh0aGlzLmhhc0Zsb3dFeGVjdXRpb25DaGFuZ2VkKSB7XG4gICAgICB0aGlzLmRpc2FibGVTYXZlQnV0dG9uID0gZmFsc2U7XG4gICAgICB0aGlzLmZsb3dFeGVjdXRpb24gPSBmbG93RXhlY3V0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkZsb3dzR3JvdXBzQ2hhbmdlKGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdKTogdm9pZCB7XG4gICAgdGhpcy5mbG93c0dyb3VwcyA9IGZsb3dzR3JvdXBzO1xuICAgIHRoaXMuZGlzYWJsZVNhdmVCdXR0b24gPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkRmxvd0NoYW5nZShmbG93OiBGbG93Vk0pOiB2b2lkIHtcbiAgICB0aGlzLmZsb3dzR3JvdXBzID0gdGhpcy5mbG93c0dyb3Vwcy5tYXAoZmxvd0dyb3VwID0+ICh7XG4gICAgICAuLi5mbG93R3JvdXAsXG4gICAgICBmbG93czogZmxvd0dyb3VwLmZsb3dzLm1hcChmID0+IChmLl9pZCA9PT0gZmxvdy5faWQgPyBmbG93IDogZikpLFxuICAgIH0pKTtcbiAgICB0aGlzLnNlbGVjdGVkRmxvdyA9IGZsb3c7XG4gICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlU2VsZWN0ZWRGbG93KGZsb3c6IEZsb3dWTSk6IHZvaWQge1xuICAgIC8vIERlZmluZSBuZXh0IHNlbGVjdGVkIGZsb3cgYW5kIHJlbW92ZSBmbG93IGZyb20gZmxvd3NHcm91cHNcbiAgICBjb25zdCBhbGxGbG93c0lkID0gZmxhdHRlbih0aGlzLmZsb3dzR3JvdXBzLm1hcChmbG93R3JvdXAgPT4gZmxvd0dyb3VwLmZsb3dzKSkubWFwKGYgPT4gZi5faWQpO1xuICAgIGNvbnN0IGZsb3dUb0RlbGV0ZUluZGV4ID0gYWxsRmxvd3NJZC5pbmRleE9mKGZsb3cuX2lkKTtcbiAgICBjb25zdCBuZXh0U2VsZWN0ZWRGbG93ID0gYWxsRmxvd3NJZFtmbG93VG9EZWxldGVJbmRleCArIDFdID8/IGFsbEZsb3dzSWRbZmxvd1RvRGVsZXRlSW5kZXggLSAxXTtcbiAgICB0aGlzLmZsb3dzR3JvdXBzID0gdGhpcy5mbG93c0dyb3Vwcy5tYXAoZmxvd0dyb3VwID0+ICh7XG4gICAgICAuLi5mbG93R3JvdXAsXG4gICAgICBmbG93czogZmxvd0dyb3VwLmZsb3dzLmZpbHRlcihmID0+IGYuX2lkICE9PSBmbG93Ll9pZCksXG4gICAgfSkpO1xuXG4gICAgdGhpcy5zZWxlY3RlZEZsb3cgPSBmbGF0dGVuKHRoaXMuZmxvd3NHcm91cHMubWFwKGZsb3dHcm91cCA9PiBmbG93R3JvdXAuZmxvd3MpKS5maW5kKGYgPT4gZi5faWQgPT09IG5leHRTZWxlY3RlZEZsb3cpO1xuXG4gICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICAvLyBFbWl0IGNvbW1vbiBmbG93cyBvbmx5IGlmIHRoZXkgaGF2ZSBiZWVuIHVwZGF0ZWRcbiAgICBjb25zdCBjb21tb25GbG93cyA9IGdldENvbW1vbkZsb3dzT3V0cHV0KHRoaXMuZmxvd3NHcm91cHMsIHRoaXMuaW5pdGlhbEZsb3dzR3JvdXBzKTtcblxuICAgIC8vIEVtaXQgcGxhbnMgb25seSBpZiB0aGV5IGhhdmUgYmVlbiB1cGRhdGVkXG4gICAgY29uc3QgcGxhbnNUb1VwZGF0ZSA9IGdldFBsYW5zQ2hhbmdlT3V0cHV0KHRoaXMuZmxvd3NHcm91cHMsIHRoaXMuaW5pdGlhbEZsb3dzR3JvdXBzKTtcblxuICAgIHRoaXMuc2F2ZS5lbWl0KHtcbiAgICAgIC4uLihjb21tb25GbG93cyA/IHsgY29tbW9uRmxvd3MgfSA6IHt9KSxcbiAgICAgIC4uLihwbGFuc1RvVXBkYXRlID8geyBwbGFuc1RvVXBkYXRlIH0gOiB7fSksXG4gICAgICAuLi4odGhpcy5oYXNGbG93RXhlY3V0aW9uQ2hhbmdlZCA/IHRoaXMuZmxvd0V4ZWN1dGlvbiA6IHt9KSxcbiAgICB9KTtcbiAgfVxufVxuXG5jb25zdCBnZXRGbG93c0dyb3VwcyA9IChjb21tb25GbG93czogRmxvd1tdID0gW10sIHBsYW5zOiBQbGFuW10gPSBbXSk6IEZsb3dHcm91cFZNW10gPT4ge1xuICBjb25zdCBjb21tRmxvd3NHcm91cDogRmxvd0dyb3VwVk0gPSB7XG4gICAgX2lkOiAnZmxvd3NHcm91cF9jb21tb25GbG93JyxcbiAgICBuYW1lOiAnQ29tbW9uIGZsb3dzJyxcbiAgICBmbG93czogY29tbW9uRmxvd3MubWFwKGZsb3cgPT4gKHsgLi4uZmxvdywgX2lkOiB1bmlxdWVJZCgnZmxvd18nKSwgX2hhc0NoYW5nZWQ6IGZhbHNlIH0pKSxcbiAgfTtcblxuICByZXR1cm4gW1xuICAgIC4uLnBsYW5zLm1hcChwbGFuID0+ICh7XG4gICAgICBfaWQ6IHVuaXF1ZUlkKCdmbG93c0dyb3VwXycpLFxuICAgICAgX2ljb246ICdnaW86c2hpZWxkJyxcbiAgICAgIF9wbGFuSWQ6IHBsYW4uaWQsXG4gICAgICBuYW1lOiBwbGFuLm5hbWUsXG4gICAgICBmbG93czogcGxhbi5mbG93cy5tYXAoZmxvdyA9PiAoeyAuLi5mbG93LCBfaWQ6IHVuaXF1ZUlkKCdmbG93XycpLCBfaGFzQ2hhbmdlZDogZmFsc2UgfSkpLFxuICAgIH0pKSxcbiAgICBjb21tRmxvd3NHcm91cCxcbiAgXTtcbn07XG5cbmNvbnN0IGdldENvbW1vbkZsb3dzT3V0cHV0ID0gKGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdLCBpbml0aWFsRmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10pOiBGbG93W10gfCBudWxsID0+IHtcbiAgY29uc3QgY29tbW9uRmxvd3NHcm91cCA9IGZsb3dzR3JvdXBzLmZpbmQoZmxvd0dyb3VwID0+IGZsb3dHcm91cC5faWQgPT09ICdmbG93c0dyb3VwX2NvbW1vbkZsb3cnKTtcbiAgY29uc3QgaW5pdGlhbENvbW1vbkZsb3dzR3JvdXAgPSBpbml0aWFsRmxvd3NHcm91cHMuZmluZChmbG93R3JvdXAgPT4gZmxvd0dyb3VwLl9pZCA9PT0gJ2Zsb3dzR3JvdXBfY29tbW9uRmxvdycpO1xuICAvLyBDaGVjayBpZiBjb21tb24gZmxvd3MgaGF2ZSBiZWVuIHVwZGF0ZWRcbiAgY29uc3QgaGFzQ2hhbmdlZCA9IGNvbW1vbkZsb3dzR3JvdXA/LmZsb3dzLnNvbWUoZmxvdyA9PiBmbG93Ll9oYXNDaGFuZ2VkKTtcblxuICAvLyBDaGVjayBpZiBjb21tb24gZmxvd3MgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgY29uc3QgaGFzRGVsZXRlZEZsb3cgPSBkaWZmZXJlbmNlQnkoaW5pdGlhbENvbW1vbkZsb3dzR3JvdXA/LmZsb3dzID8/IFtdLCBjb21tb25GbG93c0dyb3VwPy5mbG93cyA/PyBbXSwgJ19pZCcpLmxlbmd0aCA+IDA7XG5cbiAgcmV0dXJuIGhhc0NoYW5nZWQgfHwgaGFzRGVsZXRlZEZsb3cgPyAoY29tbW9uRmxvd3NHcm91cD8uZmxvd3MgPz8gW10pLm1hcChmbG93ID0+IG9taXQoZmxvdywgJ19pZCcsICdfaGFzQ2hhbmdlZCcpKSA6IG51bGw7XG59O1xuXG5jb25zdCBnZXRQbGFuc0NoYW5nZU91dHB1dCA9IChmbG93c0dyb3VwczogRmxvd0dyb3VwVk1bXSwgaW5pdGlhbEZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdKTogUGxhbltdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHBsYW5zR3JvdXBzID0gZmxvd3NHcm91cHMuZmlsdGVyKGZsb3dHcm91cCA9PiBmbG93R3JvdXAuX2lkICE9PSAnZmxvd3NHcm91cF9jb21tb25GbG93Jyk7XG4gIGNvbnN0IGluaXRpYWxQbGFuc0dyb3VwcyA9IGluaXRpYWxGbG93c0dyb3Vwcy5maWx0ZXIoZmxvd0dyb3VwID0+IGZsb3dHcm91cC5faWQgIT09ICdmbG93c0dyb3VwX2NvbW1vbkZsb3cnKTtcblxuICAvLyBHZXQgcGxhbnMgd2l0aCBjaGFuZ2VkIGZsb3dzXG4gIGNvbnN0IHBsYW5zR3JvdXBzV2l0aENoYW5nZWRGbG93cyA9IHBsYW5zR3JvdXBzLmZpbHRlcihwbGFuID0+IHBsYW4uZmxvd3Muc29tZShmbG93ID0+IGZsb3cuX2hhc0NoYW5nZWQpKTtcblxuICAvLyBHZXQgcGxhbnMgd2l0aCBkZWxldGVkIGZsb3dzXG4gIGNvbnN0IHBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93czogRmxvd0dyb3VwVk1bXSA9IFtdO1xuXG4gIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBkZWxldGVkIGZsb3dzIGluIGluaXRpYWwgaW5pdGlhbFBsYW5zR3JvdXBzXG4gIGluaXRpYWxQbGFuc0dyb3Vwcy5mb3JFYWNoKHBsYW4gPT4ge1xuICAgIGNvbnN0IHBsYW5Hcm91cFRvQ29tcGFyZSA9IHBsYW5zR3JvdXBzLmZpbmQocCA9PiBwLl9wbGFuSWQgPT09IHBsYW4uX3BsYW5JZCk7XG4gICAgaWYgKHBsYW5Hcm91cFRvQ29tcGFyZSAmJiBkaWZmZXJlbmNlQnkocGxhbi5mbG93cywgcGxhbkdyb3VwVG9Db21wYXJlPy5mbG93cyA/PyBbXSwgJ19pZCcpLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBkZWxldGVkIGZsb3dzLCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgY29tcGxldGUgcGxhbiB3aXRoIHRoZSBuZXcgZmxvd3NcbiAgICAgIHBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93cy5wdXNoKHBsYW5Hcm91cFRvQ29tcGFyZSk7XG4gICAgfVxuICB9KTtcblxuICAvLyBNZXJnZSBwbGFucyB3aXRoIGNoYW5nZWQgZmxvd3MgYW5kIHBsYW5zIHdpdGggZGVsZXRlZCBmbG93c1xuICBjb25zdCBwbGFuc1dpdGhDaGFuZ2VkRmxvd3NPdXRwdXQgPSB1bmlvbkJ5KFsuLi5wbGFuc0dyb3Vwc1dpdGhDaGFuZ2VkRmxvd3MsIC4uLnBsYW5zR3JvdXBzV2l0aERlbGV0ZWRGbG93c10sICdfcGxhbklkJykubWFwKHBsYW4gPT4gKHtcbiAgICAuLi5vbWl0KHBsYW4sICdfaWQnLCAnX2ljb24nLCAnX3BsYW5JZCcpLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uIC0tIHBsYW5JZCBpcyBhbHdheXMgZGVmaW5lZFxuICAgIGlkOiBwbGFuLl9wbGFuSWQhLFxuICAgIGZsb3dzOiBwbGFuLmZsb3dzLm1hcChmbG93ID0+IG9taXQoZmxvdywgJ19pZCcsICdfaGFzQ2hhbmdlZCcpKSxcbiAgfSkpO1xuXG4gIHJldHVybiBwbGFuc1dpdGhDaGFuZ2VkRmxvd3NPdXRwdXQubGVuZ3RoID4gMCA/IHBsYW5zV2l0aENoYW5nZWRGbG93c091dHB1dCA6IG51bGw7XG59O1xuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG5cbjxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlcl9fYXBpSW5mb1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ2lvLWJhZGdlLXByaW1hcnlcIj5cbiAgICAgIHt7IGFwaVR5cGUgfCB0aXRsZWNhc2UgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZ2lvLWJhZGdlLW5ldXRyYWxcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiY29ubmVjdG9yc1Rvb2x0aXBcIlxuICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgbWF0VG9vbHRpcENsYXNzPVwiZ2lvLXBvbGljeS1zdHVkaW9fX3Rvb2x0aXAtbGluZS1icmVha1wiXG4gICAgPlxuICAgICAgPG1hdC1pY29uICpuZ0Zvcj1cImxldCBlbnRyeXBvaW50IG9mIGVudHJ5cG9pbnRzSW5mb1wiIGNsYXNzPVwiZ2lvLWxlZnRcIiBbc3ZnSWNvbl09XCJlbnRyeXBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgICAgPG1hdC1pY29uICpuZ0Zvcj1cImxldCBlbmRwb2ludCBvZiBlbmRwb2ludHNJbmZvXCIgY2xhc3M9XCJnaW8tbGVmdFwiIFtzdmdJY29uXT1cImVuZHBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImhlYWRlcl9fYnRuXCI+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVTYXZlQnV0dG9uXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+U2F2ZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwid3JhcHBlcl9fZmxvd3NNZW51XCI+XG4gICAgPGdpby1wcy1mbG93cy1tZW51XG4gICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgIFtmbG93RXhlY3V0aW9uXT1cImZsb3dFeGVjdXRpb25cIlxuICAgICAgW2Zsb3dzR3JvdXBzXT1cImZsb3dzR3JvdXBzXCJcbiAgICAgIFtlbnRyeXBvaW50c109XCJlbnRyeXBvaW50c1R5cGVcIlxuICAgICAgKGZsb3dzR3JvdXBzQ2hhbmdlKT1cIm9uRmxvd3NHcm91cHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoZmxvd0V4ZWN1dGlvbkNoYW5nZSk9XCJvbkZsb3dFeGVjdXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbKHNlbGVjdGVkRmxvdyldPVwic2VsZWN0ZWRGbG93XCJcbiAgICA+PC9naW8tcHMtZmxvd3MtbWVudT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJfX2Zsb3dEZXRhaWxzXCI+XG4gICAgPGdpby1wcy1mbG93LWRldGFpbHNcbiAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgW2Zsb3ddPVwic2VsZWN0ZWRGbG93XCJcbiAgICAgIFtlbnRyeXBvaW50c0luZm9dPVwiZW50cnlwb2ludHNJbmZvXCJcbiAgICAgIFtlbmRwb2ludHNJbmZvXT1cImVuZHBvaW50c0luZm9cIlxuICAgICAgKGZsb3dDaGFuZ2UpPVwib25TZWxlY3RlZEZsb3dDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoZGVsZXRlRmxvdyk9XCJvbkRlbGV0ZVNlbGVjdGVkRmxvdygkZXZlbnQpXCJcbiAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -530,10 +530,10 @@ class GioPolicyStudioFlowExecutionFormDialogComponent {
|
|
|
530
530
|
}
|
|
531
531
|
}
|
|
532
532
|
GioPolicyStudioFlowExecutionFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowExecutionFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
533
|
-
GioPolicyStudioFlowExecutionFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowExecutionFormDialogComponent, selector: "gio-ps-flow-execution-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.GioBannerInfoComponent, selector: "gio-banner-info" }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4$1.GioFormSlideToggleComponent, selector: "gio-form-slide-toggle", inputs: ["appearance"] }, { type: i4$1.GioFormLabelComponent, selector: "gio-form-label" }, { type: i8$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4$1.GioFormSlideToggleDirective, selector: "[gioFormSlideToggle]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
533
|
+
GioPolicyStudioFlowExecutionFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowExecutionFormDialogComponent, selector: "gio-ps-flow-execution-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.GioBannerInfoComponent, selector: "gio-banner-info" }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4$1.GioFormSlideToggleComponent, selector: "gio-form-slide-toggle", inputs: ["appearance"] }, { type: i4$1.GioFormLabelComponent, selector: "gio-form-label" }, { type: i8$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4$1.GioFormSlideToggleDirective, selector: "[gioFormSlideToggle]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
534
534
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowExecutionFormDialogComponent, decorators: [{
|
|
535
535
|
type: Component,
|
|
536
|
-
args: [{ selector: 'gio-ps-flow-execution-form-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
536
|
+
args: [{ selector: 'gio-ps-flow-execution-form-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
537
537
|
}], ctorParameters: function () {
|
|
538
538
|
return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
539
539
|
type: Inject,
|
|
@@ -792,7 +792,7 @@ class GioPolicyStudioComponent {
|
|
|
792
792
|
const commonFlows = getCommonFlowsOutput(this.flowsGroups, this.initialFlowsGroups);
|
|
793
793
|
// Emit plans only if they have been updated
|
|
794
794
|
const plansToUpdate = getPlansChangeOutput(this.flowsGroups, this.initialFlowsGroups);
|
|
795
|
-
this.save.emit(Object.assign(Object.assign(Object.assign({}, (commonFlows ? { commonFlows } : {})), (plansToUpdate ? { plansToUpdate } : {})), (this.hasFlowExecutionChanged ?
|
|
795
|
+
this.save.emit(Object.assign(Object.assign(Object.assign({}, (commonFlows ? { commonFlows } : {})), (plansToUpdate ? { plansToUpdate } : {})), (this.hasFlowExecutionChanged ? this.flowExecution : {})));
|
|
796
796
|
}
|
|
797
797
|
}
|
|
798
798
|
GioPolicyStudioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|