@alauda-fe/network 1.0.0 → 1.0.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/esm2022/index.mjs +10 -2
- package/esm2022/lib/components/certificate-status/component.mjs +7 -6
- package/esm2022/lib/components/fixed-ip/component.mjs +134 -91
- package/esm2022/lib/components/loadbalancer-spec-form/component.mjs +57 -57
- package/esm2022/lib/components/service-annotations-form/annotations.component.mjs +136 -142
- package/esm2022/lib/components/service-annotations-form-item/annotations.component.mjs +24 -25
- package/esm2022/lib/components/service-form/component.mjs +34 -33
- package/esm2022/lib/components/service-form/fieldset/component.mjs +92 -95
- package/esm2022/lib/directives/subnet-validator.directive.mjs +5 -5
- package/esm2022/lib/features/network-policy/components/add-peer-rule-handler/component.mjs +69 -0
- package/esm2022/lib/features/network-policy/components/ip-block-display/component.mjs +54 -0
- package/esm2022/lib/features/network-policy/components/label-selector-display/component.mjs +117 -0
- package/esm2022/lib/features/network-policy/components/peer-container/component.mjs +81 -0
- package/esm2022/lib/features/network-policy/components/pod-review/component.mjs +250 -0
- package/esm2022/lib/features/network-policy/components/rule-table/component.mjs +269 -0
- package/esm2022/lib/features/network-policy/form/network-policy/component.mjs +429 -0
- package/esm2022/lib/features/network-policy/form/network-policy-ip-block/component.mjs +102 -0
- package/esm2022/lib/features/network-policy/form/network-policy-peer/component.mjs +247 -0
- package/esm2022/lib/features/network-policy/form/network-policy-ports/component.mjs +161 -0
- package/esm2022/lib/features/network-policy/form/network-policy-remote-except-input/component.mjs +128 -0
- package/esm2022/lib/features/network-policy/form/network-policy-rule/component.mjs +142 -0
- package/esm2022/lib/services/alb-api.service.mjs +26 -6
- package/esm2022/lib/services/certificate-api.service.mjs +4 -4
- package/esm2022/lib/services/network-util.service.mjs +18 -4
- package/esm2022/lib/services/subnet-util.service.mjs +121 -0
- package/esm2022/lib/types/alb-exports.mjs +1 -1
- package/esm2022/lib/types/k8s-exports.mjs +2 -1
- package/esm2022/lib/types/metallb-exports.mjs +2 -0
- package/esm2022/lib/types/resource-definition.mjs +28 -2
- package/esm2022/lib/utils/alb-exports.mjs +1 -1
- package/esm2022/lib/utils/cidr-exports.mjs +3 -3
- package/esm2022/lib/utils/common-exports.mjs +22 -0
- package/esm2022/lib/utils/service-exports.mjs +1 -1
- package/esm2022/lib/utils/validators-exports.mjs +44 -0
- package/index.d.ts +9 -1
- package/lib/components/fixed-ip/component.d.ts +10 -3
- package/lib/components/service-annotations-form/annotations.component.d.ts +6 -6
- package/lib/components/service-annotations-form-item/annotations.component.d.ts +1 -1
- package/lib/components/service-form/component.d.ts +1 -1
- package/lib/features/network-policy/components/add-peer-rule-handler/component.d.ts +8 -0
- package/lib/features/network-policy/components/ip-block-display/component.d.ts +7 -0
- package/lib/features/network-policy/components/label-selector-display/component.d.ts +13 -0
- package/lib/features/network-policy/components/peer-container/component.d.ts +18 -0
- package/lib/features/network-policy/components/pod-review/component.d.ts +37 -0
- package/lib/features/network-policy/components/rule-table/component.d.ts +21 -0
- package/lib/features/network-policy/form/network-policy/component.d.ts +70 -0
- package/lib/features/network-policy/form/network-policy-ip-block/component.d.ts +23 -0
- package/lib/features/network-policy/form/network-policy-peer/component.d.ts +43 -0
- package/lib/features/network-policy/form/network-policy-ports/component.d.ts +17 -0
- package/lib/features/network-policy/form/network-policy-remote-except-input/component.d.ts +23 -0
- package/lib/features/network-policy/form/network-policy-rule/component.d.ts +28 -0
- package/lib/services/alb-api.service.d.ts +4 -2
- package/lib/services/network-util.service.d.ts +1 -0
- package/lib/services/subnet-util.service.d.ts +25 -0
- package/lib/types/alb-exports.d.ts +23 -0
- package/lib/types/k8s-exports.d.ts +51 -1
- package/lib/types/metallb-exports.d.ts +65 -0
- package/lib/types/resource-definition.d.ts +143 -0
- package/lib/utils/common-exports.d.ts +5 -0
- package/lib/utils/validators-exports.d.ts +16 -0
- package/package.json +10 -5
- package/styles.css +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FormModule } from '@alauda/ui';
|
|
2
|
-
import { FoldableBlockComponent, PurePipe,
|
|
2
|
+
import { FoldableBlockComponent, PurePipe, TRANSLATE_MODULE, } from '@alauda-fe/common';
|
|
3
3
|
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
5
5
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
@@ -10,6 +10,7 @@ import * as i0 from "@angular/core";
|
|
|
10
10
|
import * as i1 from "@angular/forms";
|
|
11
11
|
import * as i2 from "@alauda/ui";
|
|
12
12
|
import * as i3 from "@alauda-fe/common";
|
|
13
|
+
const _c0 = ["*"];
|
|
13
14
|
function ServiceAnnotationsFormItemComponent_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
14
15
|
i0.ɵɵelementContainer(0);
|
|
15
16
|
} }
|
|
@@ -19,9 +20,9 @@ function ServiceAnnotationsFormItemComponent_ng_container_0_Template(rf, ctx) {
|
|
|
19
20
|
i0.ɵɵelementContainerEnd();
|
|
20
21
|
} if (rf & 2) {
|
|
21
22
|
i0.ɵɵnextContext();
|
|
22
|
-
const
|
|
23
|
-
i0.ɵɵadvance(
|
|
24
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
23
|
+
const innerFormItem_r1 = i0.ɵɵreference(5);
|
|
24
|
+
i0.ɵɵadvance();
|
|
25
|
+
i0.ɵɵproperty("ngTemplateOutlet", innerFormItem_r1);
|
|
25
26
|
} }
|
|
26
27
|
function ServiceAnnotationsFormItemComponent_ng_template_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
27
28
|
i0.ɵɵelementContainer(0);
|
|
@@ -32,11 +33,11 @@ function ServiceAnnotationsFormItemComponent_ng_template_2_Template(rf, ctx) { i
|
|
|
32
33
|
i0.ɵɵtemplate(2, ServiceAnnotationsFormItemComponent_ng_template_2_ng_container_2_Template, 1, 0, "ng-container", 3);
|
|
33
34
|
i0.ɵɵelementEnd();
|
|
34
35
|
} if (rf & 2) {
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
i0.ɵɵproperty("expandHint", i0.ɵɵpipeBind1(1, 2,
|
|
36
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
37
|
+
const innerFormItem_r1 = i0.ɵɵreference(5);
|
|
38
|
+
i0.ɵɵproperty("expandHint", i0.ɵɵpipeBind1(1, 2, ctx_r1.resourceName));
|
|
38
39
|
i0.ɵɵadvance(2);
|
|
39
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
40
|
+
i0.ɵɵproperty("ngTemplateOutlet", innerFormItem_r1);
|
|
40
41
|
} }
|
|
41
42
|
function ServiceAnnotationsFormItemComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
|
|
42
43
|
i0.ɵɵelementStart(0, "aui-form-item")(1, "label", 5);
|
|
@@ -47,42 +48,39 @@ function ServiceAnnotationsFormItemComponent_ng_template_4_Template(rf, ctx) { i
|
|
|
47
48
|
i0.ɵɵprojection(5);
|
|
48
49
|
i0.ɵɵelementEnd()();
|
|
49
50
|
} if (rf & 2) {
|
|
50
|
-
const
|
|
51
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
51
52
|
i0.ɵɵadvance(2);
|
|
52
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5,
|
|
53
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, ctx_r1.resourceName));
|
|
53
54
|
i0.ɵɵadvance(2);
|
|
54
|
-
i0.ɵɵproperty("formControl",
|
|
55
|
+
i0.ɵɵproperty("formControl", ctx_r1.form)("isUpdate", ctx_r1.isUpdate)("clusterType", ctx_r1.clusterType)("resourceName", ctx_r1.resourceName);
|
|
55
56
|
} }
|
|
56
|
-
const _c0 = ["*"];
|
|
57
57
|
export class ServiceAnnotationsFormItemComponent extends BaseResourceFormComponent {
|
|
58
58
|
constructor() {
|
|
59
59
|
super(...arguments);
|
|
60
60
|
this.isPublicCloud = isPublicCloud;
|
|
61
61
|
}
|
|
62
62
|
get resourceName() {
|
|
63
|
-
return this.inService ? 'annotation' : 'service_annotations';
|
|
63
|
+
return this.inService ? 'annotation' : 'network.service_annotations';
|
|
64
64
|
}
|
|
65
65
|
createForm() {
|
|
66
66
|
return this.fb.control({});
|
|
67
67
|
}
|
|
68
|
-
static { this.ɵfac = /*@__PURE__*/
|
|
69
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceAnnotationsFormItemComponent, selectors: [["acl-service-annotations-form-item"]], inputs: { isUpdate: "isUpdate", clusterType: "clusterType", inService: "inService" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 6, vars: 5, consts: [[
|
|
68
|
+
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵServiceAnnotationsFormItemComponent_BaseFactory; return function ServiceAnnotationsFormItemComponent_Factory(t) { return (ɵServiceAnnotationsFormItemComponent_BaseFactory || (ɵServiceAnnotationsFormItemComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ServiceAnnotationsFormItemComponent)))(t || ServiceAnnotationsFormItemComponent); }; })(); }
|
|
69
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceAnnotationsFormItemComponent, selectors: [["acl-service-annotations-form-item"]], inputs: { isUpdate: "isUpdate", clusterType: "clusterType", inService: "inService" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 6, vars: 5, consts: [["nonPublicCloud", ""], ["innerFormItem", ""], [4, "ngIf", "ngIfElse"], [4, "ngTemplateOutlet"], [3, "expandHint"], ["auiFormItemLabel", ""], ["auiFormItemControl", "", 3, "formControl", "isUpdate", "clusterType", "resourceName"]], template: function ServiceAnnotationsFormItemComponent_Template(rf, ctx) { if (rf & 1) {
|
|
70
70
|
i0.ɵɵprojectionDef();
|
|
71
|
-
i0.ɵɵtemplate(0, ServiceAnnotationsFormItemComponent_ng_container_0_Template, 2, 1, "ng-container",
|
|
71
|
+
i0.ɵɵtemplate(0, ServiceAnnotationsFormItemComponent_ng_container_0_Template, 2, 1, "ng-container", 2);
|
|
72
72
|
i0.ɵɵpipe(1, "pure");
|
|
73
|
-
i0.ɵɵtemplate(2, ServiceAnnotationsFormItemComponent_ng_template_2_Template, 3, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
74
|
-
i0.ɵɵtemplate(4, ServiceAnnotationsFormItemComponent_ng_template_4_Template, 6, 7, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
|
73
|
+
i0.ɵɵtemplate(2, ServiceAnnotationsFormItemComponent_ng_template_2_Template, 3, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(4, ServiceAnnotationsFormItemComponent_ng_template_4_Template, 6, 7, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
75
74
|
} if (rf & 2) {
|
|
76
|
-
const
|
|
77
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(1, 2, ctx.clusterType, ctx.isPublicCloud))("ngIfElse",
|
|
75
|
+
const nonPublicCloud_r3 = i0.ɵɵreference(3);
|
|
76
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(1, 2, ctx.clusterType, ctx.isPublicCloud))("ngIfElse", nonPublicCloud_r3);
|
|
78
77
|
} }, dependencies: [ReactiveFormsModule, i1.NgControlStatus, i1.FormControlDirective, NgIf,
|
|
79
78
|
NgTemplateOutlet,
|
|
80
79
|
PurePipe,
|
|
81
80
|
FormModule, i2.FormItemComponent, i2.FormItemLabelDirective, i2.FormItemControlDirective, FoldableBlockComponent,
|
|
82
|
-
ServiceAnnotationsFormComponent,
|
|
83
|
-
TranslateModule, i3.TranslatePipe], styles: ["acl-foldable-block[_ngcontent-%COMP%] .foldable{margin-bottom:20px}acl-foldable-block[_ngcontent-%COMP%] .aui-form-item{margin-bottom:0}"], changeDetection: 0 }); }
|
|
81
|
+
ServiceAnnotationsFormComponent, i3.TranslatePipe], styles: ["acl-foldable-block[_ngcontent-%COMP%] .foldable{margin-bottom:20px}acl-foldable-block[_ngcontent-%COMP%] .aui-form-item{margin-bottom:0}"], changeDetection: 0 }); }
|
|
84
82
|
}
|
|
85
|
-
(
|
|
83
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceAnnotationsFormItemComponent, [{
|
|
86
84
|
type: Component,
|
|
87
85
|
args: [{ selector: 'acl-service-annotations-form-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
88
86
|
ReactiveFormsModule,
|
|
@@ -92,7 +90,7 @@ export class ServiceAnnotationsFormItemComponent extends BaseResourceFormCompone
|
|
|
92
90
|
FormModule,
|
|
93
91
|
FoldableBlockComponent,
|
|
94
92
|
ServiceAnnotationsFormComponent,
|
|
95
|
-
|
|
93
|
+
TRANSLATE_MODULE,
|
|
96
94
|
], template: "<ng-container *ngIf=\"clusterType | pure: isPublicCloud; else nonPublicCloud\">\n <ng-container *ngTemplateOutlet=\"innerFormItem\"></ng-container>\n</ng-container>\n\n<ng-template #nonPublicCloud>\n <acl-foldable-block [expandHint]=\"resourceName | translate\">\n <ng-container *ngTemplateOutlet=\"innerFormItem\"></ng-container>\n </acl-foldable-block>\n</ng-template>\n\n<ng-template #innerFormItem>\n <aui-form-item>\n <label auiFormItemLabel>{{ resourceName | translate }}</label>\n <acl-service-annotations-form\n auiFormItemControl\n [formControl]=\"form\"\n [isUpdate]=\"isUpdate\"\n [clusterType]=\"clusterType\"\n [resourceName]=\"resourceName\"\n >\n <ng-content></ng-content>\n </acl-service-annotations-form>\n </aui-form-item>\n</ng-template>\n", styles: ["acl-foldable-block ::ng-deep .foldable{margin-bottom:20px}acl-foldable-block ::ng-deep .aui-form-item{margin-bottom:0}\n"] }]
|
|
97
95
|
}], null, { isUpdate: [{
|
|
98
96
|
type: Input,
|
|
@@ -103,4 +101,5 @@ export class ServiceAnnotationsFormItemComponent extends BaseResourceFormCompone
|
|
|
103
101
|
}], inService: [{
|
|
104
102
|
type: Input
|
|
105
103
|
}] }); })();
|
|
106
|
-
|
|
104
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServiceAnnotationsFormItemComponent, { className: "ServiceAnnotationsFormItemComponent", filePath: "lib/components/service-annotations-form-item/annotations.component.ts", lineNumber: 33 }); })();
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0taXRlbS9hbm5vdGF0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL25ldHdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3NlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybS1pdGVtL2Fubm90YXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixRQUFRLEVBRVIsZ0JBQWdCLEdBQ2pCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7SUNabEcsd0JBQStEOzs7SUFEakUsNkJBQTZFO0lBQzNFLHFIQUFnRDs7Ozs7SUFBakMsY0FBK0I7SUFBL0IsbURBQStCOzs7SUFLNUMsd0JBQStEOzs7SUFEakUsNkNBQTREOztJQUMxRCxvSEFBZ0Q7SUFDbEQsaUJBQXFCOzs7O0lBRkQsc0VBQXVDO0lBQzFDLGVBQStCO0lBQS9CLG1EQUErQjs7O0lBTTlDLEFBREYscUNBQWUsZUFDVztJQUFBLFlBQThCOztJQUFBLGlCQUFRO0lBQzlELHVEQU1DO0lBQ0Msa0JBQXlCO0lBRTdCLEFBREUsaUJBQStCLEVBQ2pCOzs7SUFWVSxlQUE4QjtJQUE5QiwrREFBOEI7SUFHcEQsZUFBb0I7SUFHcEIsQUFEQSxBQURBLEFBREEseUNBQW9CLDZCQUNDLG1DQUNNLHFDQUNFOztBRGNuQyxNQUFNLE9BQU8sbUNBQW9DLFNBQVEseUJBQW9DO0lBakI3Rjs7UUErQkUsa0JBQWEsR0FBRyxhQUFhLENBQUM7S0FLL0I7SUFUQyxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUM7SUFDdkUsQ0FBQztJQUlRLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO2dUQWxCVSxtQ0FBbUMsU0FBbkMsbUNBQW1DO29FQUFuQyxtQ0FBbUM7O1lDaENoRCxzR0FBNkU7O1lBVTdFLEFBTkEscUlBQTZCLHdIQU1EOzs7WUFWNEIsQUFBekMsK0VBQXlDLCtCQUFtQjs0QkRzQnZFLG1CQUFtQiwrQ0FDbkIsSUFBSTtZQUNKLGdCQUFnQjtZQUNoQixRQUFRO1lBQ1IsVUFBVSxnRkFDVixzQkFBc0I7WUFDdEIsK0JBQStCOztpRkFJdEIsbUNBQW1DO2NBakIvQyxTQUFTOzJCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7b0JBQ1AsbUJBQW1CO29CQUNuQixJQUFJO29CQUNKLGdCQUFnQjtvQkFDaEIsUUFBUTtvQkFDUixVQUFVO29CQUNWLHNCQUFzQjtvQkFDdEIsK0JBQStCO29CQUMvQixnQkFBZ0I7aUJBQ2pCO2dCQUlELFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsV0FBVztrQkFEVixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixTQUFTO2tCQURSLEtBQUs7O2tGQVBLLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEZvbGRhYmxlQmxvY2tDb21wb25lbnQsXG4gIFB1cmVQaXBlLFxuICBTdHJpbmdNYXAsXG4gIFRSQU5TTEFURV9NT0RVTEUsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2VGb3JtQ29tcG9uZW50IH0gZnJvbSAnbmctcmVzb3VyY2UtZm9ybS11dGlsJztcblxuaW1wb3J0IHsgQ2x1c3RlclR5cGUsIGlzUHVibGljQ2xvdWQgfSBmcm9tICcuLi8uLi91dGlscy9jbHVzdGVyLWV4cG9ydHMnO1xuaW1wb3J0IHsgU2VydmljZUFubm90YXRpb25zRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3NlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybS9hbm5vdGF0aW9ucy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtc2VydmljZS1hbm5vdGF0aW9ucy1mb3JtLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJ2Fubm90YXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2Fubm90YXRpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgUHVyZVBpcGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBGb2xkYWJsZUJsb2NrQ29tcG9uZW50LFxuICAgIFNlcnZpY2VBbm5vdGF0aW9uc0Zvcm1Db21wb25lbnQsXG4gICAgVFJBTlNMQVRFX01PRFVMRSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUFubm90YXRpb25zRm9ybUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlUmVzb3VyY2VGb3JtQ29tcG9uZW50PFN0cmluZ01hcD4ge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBpc1VwZGF0ZTogYm9vbGVhbjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjbHVzdGVyVHlwZTogQ2x1c3RlclR5cGU7XG5cbiAgQElucHV0KClcbiAgaW5TZXJ2aWNlOiBib29sZWFuO1xuXG4gIGdldCByZXNvdXJjZU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5TZXJ2aWNlID8gJ2Fubm90YXRpb24nIDogJ25ldHdvcmsuc2VydmljZV9hbm5vdGF0aW9ucyc7XG4gIH1cblxuICBpc1B1YmxpY0Nsb3VkID0gaXNQdWJsaWNDbG91ZDtcblxuICBvdmVycmlkZSBjcmVhdGVGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2woe30pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY2x1c3RlclR5cGUgfCBwdXJlOiBpc1B1YmxpY0Nsb3VkOyBlbHNlIG5vblB1YmxpY0Nsb3VkXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lckZvcm1JdGVtXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNub25QdWJsaWNDbG91ZD5cbiAgPGFjbC1mb2xkYWJsZS1ibG9jayBbZXhwYW5kSGludF09XCJyZXNvdXJjZU5hbWUgfCB0cmFuc2xhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJGb3JtSXRlbVwiPjwvbmctY29udGFpbmVyPlxuICA8L2FjbC1mb2xkYWJsZS1ibG9jaz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5uZXJGb3JtSXRlbT5cbiAgPGF1aS1mb3JtLWl0ZW0+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgcmVzb3VyY2VOYW1lIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8YWNsLXNlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybVxuICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybVwiXG4gICAgICBbaXNVcGRhdGVdPVwiaXNVcGRhdGVcIlxuICAgICAgW2NsdXN0ZXJUeXBlXT1cImNsdXN0ZXJUeXBlXCJcbiAgICAgIFtyZXNvdXJjZU5hbWVdPVwicmVzb3VyY2VOYW1lXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9hY2wtc2VydmljZS1hbm5vdGF0aW9ucy1mb3JtPlxuICA8L2F1aS1mb3JtLWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { FormModule, IconModule, InputModule, RadioModule, SwitchModule, TooltipModule, } from '@alauda/ui';
|
|
3
|
-
import { DISPLAY_NAME, SERVICE_TYPES, FeatureGateService, K8sUtilService, ObservableInput, publishRef,
|
|
3
|
+
import { DISPLAY_NAME, SERVICE_TYPES, FeatureGateService, K8sUtilService, ObservableInput, publishRef, TRANSLATE_MODULE, ReadonlyFieldDirective, ERRORS_MAPPER_MODULE, DisabledDirective, K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY, DOMAIN_PATTERN, ServiceTypeMeta, } from '@alauda-fe/common';
|
|
4
4
|
import { AsyncPipe, NgFor, NgIf } from '@angular/common';
|
|
5
5
|
import { ChangeDetectionStrategy, Component, Injector, Input, } from '@angular/core';
|
|
6
6
|
import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
@@ -11,15 +11,20 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
import * as i1 from "@alauda-fe/common";
|
|
12
12
|
import * as i2 from "@alauda/ui";
|
|
13
13
|
import * as i3 from "@angular/forms";
|
|
14
|
+
const _c0 = ["*"];
|
|
15
|
+
const _c1 = () => ["metadata", "name"];
|
|
16
|
+
const _c2 = a0 => ({ pattern: a0 });
|
|
17
|
+
const _c3 = () => ["spec", "type"];
|
|
18
|
+
const _c4 = () => ["spec", "externalName"];
|
|
14
19
|
function K8sServiceFormComponent_aui_radio_button_20_Template(rf, ctx) { if (rf & 1) {
|
|
15
20
|
i0.ɵɵelementStart(0, "aui-radio-button", 21);
|
|
16
21
|
i0.ɵɵtext(1);
|
|
17
22
|
i0.ɵɵelementEnd();
|
|
18
23
|
} if (rf & 2) {
|
|
19
|
-
const
|
|
20
|
-
i0.ɵɵproperty("value",
|
|
21
|
-
i0.ɵɵadvance(
|
|
22
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
24
|
+
const option_r1 = ctx.$implicit;
|
|
25
|
+
i0.ɵɵproperty("value", option_r1);
|
|
26
|
+
i0.ɵɵadvance();
|
|
27
|
+
i0.ɵɵtextInterpolate1(" ", option_r1, " ");
|
|
23
28
|
} }
|
|
24
29
|
function K8sServiceFormComponent_div_22_Template(rf, ctx) { if (rf & 1) {
|
|
25
30
|
i0.ɵɵelementStart(0, "div", 22);
|
|
@@ -27,14 +32,9 @@ function K8sServiceFormComponent_div_22_Template(rf, ctx) { if (rf & 1) {
|
|
|
27
32
|
i0.ɵɵpipe(2, "translate");
|
|
28
33
|
i0.ɵɵelementEnd();
|
|
29
34
|
} if (rf & 2) {
|
|
30
|
-
i0.ɵɵadvance(
|
|
31
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "service_external_name_hint"), " ");
|
|
35
|
+
i0.ɵɵadvance();
|
|
36
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "network.service_external_name_hint"), " ");
|
|
32
37
|
} }
|
|
33
|
-
const _c0 = function () { return ["metadata", "name"]; };
|
|
34
|
-
const _c1 = function (a0) { return { pattern: a0 }; };
|
|
35
|
-
const _c2 = function () { return ["spec", "type"]; };
|
|
36
|
-
const _c3 = function () { return ["spec", "externalName"]; };
|
|
37
|
-
const _c4 = ["*"];
|
|
38
38
|
const NON_LB_SERVICE_TYPES = SERVICE_TYPES.filter(op => op !== 'LoadBalancer');
|
|
39
39
|
// K8s base service form
|
|
40
40
|
export class K8sServiceFormComponent extends BaseResourceFormGroupComponent {
|
|
@@ -157,7 +157,7 @@ export class K8sServiceFormComponent extends BaseResourceFormGroupComponent {
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
static { this.ɵfac = function K8sServiceFormComponent_Factory(t) { return new (t || K8sServiceFormComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.K8sUtilService), i0.ɵɵdirectiveInject(i1.FeatureGateService)); }; }
|
|
160
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: K8sServiceFormComponent, selectors: [["acl-k8s-service-form"]], inputs: { cluster: "cluster", isUpdate: "isUpdate", containerPortSuggestions: "containerPortSuggestions", targetComponent: "targetComponent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors:
|
|
160
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: K8sServiceFormComponent, selectors: [["acl-k8s-service-form"]], inputs: { cluster: "cluster", isUpdate: "isUpdate", containerPortSuggestions: "containerPortSuggestions", targetComponent: "targetComponent" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 51, vars: 69, consts: [["auiForm", "", 3, "formGroup"], ["formGroupName", "metadata"], ["width", "large"], ["auiFormItemLabel", ""], ["aui-input", "", "auiFormItemControl", "", "required", "", "name", "name", "formControlName", "name", 3, "aclReadonlyField", "placeholder"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["width", "large", "formGroupName", "annotations"], ["auiFormItemControl", "", "aui-input", "", 3, "formControlName"], ["formGroupName", "spec"], ["formControlName", "type"], [3, "value", 4, "ngFor", "ngForOf"], ["auiFormItemHint", "", 4, "ngIf"], ["formGroupName", "spec", "width", "large", 1, "last-form-item-no-margin", 3, "hidden"], ["type", "text", "aui-input", "", "auiFormItemControl", "", "formControlName", "externalName", 3, "aclDisabled", "required", "pattern", "placeholder"], [3, "hidden"], ["formControlName", "virtualIp", 3, "valueChange"], ["auiFormItemAddon", ""], ["icon", "question_circle", 1, "icon--help", 3, "auiTooltip", "auiTooltipPosition"], ["auiFormItemControl", "", "name", "ports", "formControlName", "ports", 1, "tw-w-full", 3, "required", "aclDisabled", "serviceType", "containerPortSuggestions", "targetComponent"], [1, "last-form-item-no-margin"], ["formControlName", "sessionPersistence"], [3, "value"], ["auiFormItemHint", ""]], template: function K8sServiceFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
161
161
|
i0.ɵɵprojectionDef();
|
|
162
162
|
i0.ɵɵelementStart(0, "form", 0);
|
|
163
163
|
i0.ɵɵelementContainerStart(1, 1);
|
|
@@ -227,7 +227,7 @@ export class K8sServiceFormComponent extends BaseResourceFormGroupComponent {
|
|
|
227
227
|
i0.ɵɵadvance(2);
|
|
228
228
|
i0.ɵɵproperty("aclReadonlyField", ctx.isUpdate)("placeholder", i0.ɵɵpipeBind1(7, 32, ctx.K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip));
|
|
229
229
|
i0.ɵɵadvance(2);
|
|
230
|
-
i0.ɵɵproperty("errors", ctx.form.get(i0.ɵɵpureFunction0(56,
|
|
230
|
+
i0.ɵɵproperty("errors", ctx.form.get(i0.ɵɵpureFunction0(56, _c1)).errors)("errorsMapper", i0.ɵɵpureFunction1(57, _c2, i0.ɵɵpipeBind1(9, 34, ctx.K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip)));
|
|
231
231
|
i0.ɵɵadvance(4);
|
|
232
232
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 36, "display_name"));
|
|
233
233
|
i0.ɵɵadvance(2);
|
|
@@ -237,31 +237,31 @@ export class K8sServiceFormComponent extends BaseResourceFormGroupComponent {
|
|
|
237
237
|
i0.ɵɵadvance(3);
|
|
238
238
|
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(21, 40, ctx.types$));
|
|
239
239
|
i0.ɵɵadvance(2);
|
|
240
|
-
i0.ɵɵproperty("ngIf", ctx.form.get(i0.ɵɵpureFunction0(59,
|
|
241
|
-
i0.ɵɵadvance(
|
|
242
|
-
i0.ɵɵproperty("hidden", ctx.form.get(i0.ɵɵpureFunction0(60,
|
|
240
|
+
i0.ɵɵproperty("ngIf", ctx.form.get(i0.ɵɵpureFunction0(59, _c3)).value === "ExternalName");
|
|
241
|
+
i0.ɵɵadvance();
|
|
242
|
+
i0.ɵɵproperty("hidden", ctx.form.get(i0.ɵɵpureFunction0(60, _c3)).value !== "ExternalName");
|
|
243
243
|
i0.ɵɵadvance(2);
|
|
244
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 42, "service_external_name_mapping_domain"), " ");
|
|
244
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 42, "network.service_external_name_mapping_domain"), " ");
|
|
245
245
|
i0.ɵɵadvance(2);
|
|
246
|
-
i0.ɵɵproperty("aclDisabled", ctx.form.get(i0.ɵɵpureFunction0(61,
|
|
246
|
+
i0.ɵɵproperty("aclDisabled", ctx.form.get(i0.ɵɵpureFunction0(61, _c3)).value !== "ExternalName")("required", ctx.form.get(i0.ɵɵpureFunction0(62, _c3)).value === "ExternalName")("pattern", ctx.DOMAIN_PATTERN.pattern)("placeholder", i0.ɵɵpipeBind1(28, 44, "network.service_external_name_domain_placeholder"));
|
|
247
247
|
i0.ɵɵadvance(2);
|
|
248
|
-
i0.ɵɵproperty("errors", ctx.form.get(i0.ɵɵpureFunction0(63,
|
|
248
|
+
i0.ɵɵproperty("errors", ctx.form.get(i0.ɵɵpureFunction0(63, _c4)).errors)("errorsMapper", i0.ɵɵpureFunction1(64, _c2, i0.ɵɵpipeBind1(30, 46, ctx.DOMAIN_PATTERN.tip)));
|
|
249
249
|
i0.ɵɵadvance(2);
|
|
250
|
-
i0.ɵɵproperty("hidden", ctx.form.get(i0.ɵɵpureFunction0(66,
|
|
250
|
+
i0.ɵɵproperty("hidden", ctx.form.get(i0.ɵɵpureFunction0(66, _c3)).value === "ExternalName");
|
|
251
251
|
i0.ɵɵadvance(3);
|
|
252
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(35, 48, "virtual_ip"));
|
|
252
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(35, 48, "network.virtual_ip"));
|
|
253
253
|
i0.ɵɵadvance(4);
|
|
254
|
-
i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(39, 50, "virtual_ip_hint"))("auiTooltipPosition", "top center");
|
|
254
|
+
i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(39, 50, "network.virtual_ip_hint"))("auiTooltipPosition", "top center");
|
|
255
255
|
i0.ɵɵadvance(5);
|
|
256
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(44, 52, "
|
|
256
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(44, 52, "network.port"));
|
|
257
257
|
i0.ɵɵadvance(2);
|
|
258
|
-
i0.ɵɵproperty("required", !!ctx.form.get("virtualIp").value)("aclDisabled", ctx.form.get(i0.ɵɵpureFunction0(67,
|
|
258
|
+
i0.ɵɵproperty("required", !!ctx.form.get("virtualIp").value)("aclDisabled", ctx.form.get(i0.ɵɵpureFunction0(67, _c3)).value === "ExternalName")("serviceType", ctx.form.get(i0.ɵɵpureFunction0(68, _c3)).value)("containerPortSuggestions", ctx.containerPortSuggestions)("targetComponent", ctx.targetComponent);
|
|
259
259
|
i0.ɵɵadvance(3);
|
|
260
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 54, "session_affinity"));
|
|
260
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 54, "network.session_affinity"));
|
|
261
261
|
} }, dependencies: [AsyncPipe,
|
|
262
262
|
FormModule, i2.FormDirective, i2.FormItemComponent, i2.FormItemAddonDirective, i2.FormItemErrorDirective, i2.FormItemHintDirective, i2.FormItemLabelDirective, i2.FormItemControlDirective, InputModule, i2.InputComponent, NgIf,
|
|
263
263
|
NgFor,
|
|
264
|
-
FormsModule, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.PatternValidator, ReactiveFormsModule, i3.FormGroupDirective, i3.FormControlName, i3.FormGroupName, SwitchModule, i2.SwitchComponent, IconModule, i2.IconComponent,
|
|
264
|
+
FormsModule, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.PatternValidator, ReactiveFormsModule, i3.FormGroupDirective, i3.FormControlName, i3.FormGroupName, SwitchModule, i2.SwitchComponent, IconModule, i2.IconComponent, i1.TranslatePipe, RadioModule, i2.RadioGroupComponent, i2.RadioButtonComponent, TooltipModule, i2.TooltipDirective, i1.ErrorsMapperComponent, ServicePortsFieldsetComponent,
|
|
265
265
|
ReadonlyFieldDirective,
|
|
266
266
|
DisabledDirective], encapsulation: 2, changeDetection: 0 }); }
|
|
267
267
|
}
|
|
@@ -273,7 +273,7 @@ __decorate([
|
|
|
273
273
|
ObservableInput(),
|
|
274
274
|
__metadata("design:type", Observable)
|
|
275
275
|
], K8sServiceFormComponent.prototype, "isUpdate$", void 0);
|
|
276
|
-
(
|
|
276
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sServiceFormComponent, [{
|
|
277
277
|
type: Component,
|
|
278
278
|
args: [{ standalone: true, selector: 'acl-k8s-service-form', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
279
279
|
AsyncPipe,
|
|
@@ -285,15 +285,15 @@ __decorate([
|
|
|
285
285
|
ReactiveFormsModule,
|
|
286
286
|
SwitchModule,
|
|
287
287
|
IconModule,
|
|
288
|
-
|
|
288
|
+
TRANSLATE_MODULE,
|
|
289
289
|
RadioModule,
|
|
290
290
|
TooltipModule,
|
|
291
|
-
|
|
291
|
+
ERRORS_MAPPER_MODULE,
|
|
292
292
|
ServicePortsFieldsetComponent,
|
|
293
293
|
ReadonlyFieldDirective,
|
|
294
294
|
DisabledDirective,
|
|
295
|
-
], template: "<form\n auiForm\n [formGroup]=\"form\"\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n [aclReadonlyField]=\"isUpdate\"\n aui-input\n auiFormItemControl\n required\n name=\"name\"\n formControlName=\"name\"\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['metadata', 'name']).errors\"\n [errorsMapper]=\"{\n pattern: K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n\n <aui-form-item\n width=\"large\"\n formGroupName=\"annotations\"\n >\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'type' | translate }}</label>\n <aui-radio-group formControlName=\"type\">\n <aui-radio-button\n *ngFor=\"let option of types$ | async\"\n [value]=\"option\"\n >\n {{ option }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemHint\n *ngIf=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n >\n {{ 'service_external_name_hint' | translate }}\n </div>\n </aui-form-item>\n\n <aui-form-item\n formGroupName=\"spec\"\n width=\"large\"\n class=\"last-form-item-no-margin\"\n [hidden]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n >\n <label auiFormItemLabel>\n {{ 'service_external_name_mapping_domain' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n auiFormItemControl\n [aclDisabled]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n [required]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n formControlName=\"externalName\"\n [pattern]=\"DOMAIN_PATTERN.pattern\"\n [placeholder]=\"'service_external_name_domain_placeholder' | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['spec', 'externalName']).errors\"\n [errorsMapper]=\"{\n pattern: DOMAIN_PATTERN.tip | translate\n }\"\n >\n </acl-errors-mapper>\n </aui-form-item>\n\n <!-- ExternalName \u7C7B\u578B\u65F6\u9690\u85CF\u5176\u4ED6\u5C5E\u6027 -->\n <div [hidden]=\"form.get(['spec', 'type']).value === 'ExternalName'\">\n <aui-form-item>\n <label auiFormItemLabel>{{ 'virtual_ip' | translate }}</label>\n <aui-switch\n formControlName=\"virtualIp\"\n (valueChange)=\"onVirtualIpChange($event)\"\n ></aui-switch>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"'virtual_ip_hint' | translate\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n </aui-form-item>\n\n <!-- \u81EA\u5B9A\u4E49 Controls -->\n <ng-content></ng-content>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ '
|
|
296
|
-
}],
|
|
295
|
+
], template: "<form\n auiForm\n [formGroup]=\"form\"\n>\n <ng-container formGroupName=\"metadata\">\n <aui-form-item width=\"large\">\n <label auiFormItemLabel>{{ 'name' | translate }}</label>\n <input\n [aclReadonlyField]=\"isUpdate\"\n aui-input\n auiFormItemControl\n required\n name=\"name\"\n formControlName=\"name\"\n [placeholder]=\"K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['metadata', 'name']).errors\"\n [errorsMapper]=\"{\n pattern: K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY.tip | translate\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n\n <aui-form-item\n width=\"large\"\n formGroupName=\"annotations\"\n >\n <label auiFormItemLabel>{{ 'display_name' | translate }}</label>\n <input\n auiFormItemControl\n aui-input\n [formControlName]=\"displayNameKey\"\n />\n </aui-form-item>\n </ng-container>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'type' | translate }}</label>\n <aui-radio-group formControlName=\"type\">\n <aui-radio-button\n *ngFor=\"let option of types$ | async\"\n [value]=\"option\"\n >\n {{ option }}\n </aui-radio-button>\n </aui-radio-group>\n <div\n auiFormItemHint\n *ngIf=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n >\n {{ 'network.service_external_name_hint' | translate }}\n </div>\n </aui-form-item>\n\n <aui-form-item\n formGroupName=\"spec\"\n width=\"large\"\n class=\"last-form-item-no-margin\"\n [hidden]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n >\n <label auiFormItemLabel>\n {{ 'network.service_external_name_mapping_domain' | translate }}\n </label>\n <input\n type=\"text\"\n aui-input\n auiFormItemControl\n [aclDisabled]=\"form.get(['spec', 'type']).value !== 'ExternalName'\"\n [required]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n formControlName=\"externalName\"\n [pattern]=\"DOMAIN_PATTERN.pattern\"\n [placeholder]=\"\n 'network.service_external_name_domain_placeholder' | translate\n \"\n />\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"form.get(['spec', 'externalName']).errors\"\n [errorsMapper]=\"{\n pattern: DOMAIN_PATTERN.tip | translate\n }\"\n >\n </acl-errors-mapper>\n </aui-form-item>\n\n <!-- ExternalName \u7C7B\u578B\u65F6\u9690\u85CF\u5176\u4ED6\u5C5E\u6027 -->\n <div [hidden]=\"form.get(['spec', 'type']).value === 'ExternalName'\">\n <aui-form-item>\n <label auiFormItemLabel>{{ 'network.virtual_ip' | translate }}</label>\n <aui-switch\n formControlName=\"virtualIp\"\n (valueChange)=\"onVirtualIpChange($event)\"\n ></aui-switch>\n <div auiFormItemAddon>\n <aui-icon\n [auiTooltip]=\"'network.virtual_ip_hint' | translate\"\n [auiTooltipPosition]=\"'top center'\"\n icon=\"question_circle\"\n class=\"icon--help\"\n ></aui-icon>\n </div>\n </aui-form-item>\n\n <!-- \u81EA\u5B9A\u4E49 Controls -->\n <ng-content></ng-content>\n\n <aui-form-item formGroupName=\"spec\">\n <label auiFormItemLabel>{{ 'network.port' | translate }}</label>\n <acl-service-ports-fieldset\n class=\"tw-w-full\"\n auiFormItemControl\n [required]=\"!!form.get('virtualIp').value\"\n [aclDisabled]=\"form.get(['spec', 'type']).value === 'ExternalName'\"\n name=\"ports\"\n formControlName=\"ports\"\n [serviceType]=\"form.get(['spec', 'type']).value\"\n [containerPortSuggestions]=\"containerPortSuggestions\"\n [targetComponent]=\"targetComponent\"\n ></acl-service-ports-fieldset>\n </aui-form-item>\n\n <aui-form-item class=\"last-form-item-no-margin\">\n <label auiFormItemLabel>{{\n 'network.session_affinity' | translate\n }}</label>\n <aui-switch formControlName=\"sessionPersistence\"></aui-switch>\n </aui-form-item>\n </div>\n</form>\n" }]
|
|
296
|
+
}], () => [{ type: i0.Injector }, { type: i1.K8sUtilService }, { type: i1.FeatureGateService }], { cluster: [{
|
|
297
297
|
type: Input,
|
|
298
298
|
args: [{ required: true }]
|
|
299
299
|
}], cluster$: [], isUpdate: [{
|
|
@@ -304,4 +304,5 @@ __decorate([
|
|
|
304
304
|
}], targetComponent: [{
|
|
305
305
|
type: Input
|
|
306
306
|
}] }); })();
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFFTCxZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFVBQVUsRUFFVixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsdUNBQXVDLEVBQ3ZDLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNCQUFz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Q25CLFlBQVk7b0JBQ1osVUFBVTtvQkFDVixlQUFlO29CQUNmLFdBQVc7b0JBQ1gsYUFBYTtvQkFDYixrQkFBa0I7b0JBQ2xCLDZCQUE2QjtvQkFDN0Isc0JBQXNCO29CQUN0QixpQkFBaUI7aUJBQ2xCO3lIQU9ELE9BQU87a0JBRE4sS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsUUFBUSxNQUdSLFFBQVE7a0JBRFAsS0FBSztZQUlOLFNBQVMsTUFHVCx3QkFBd0I7a0JBRHZCLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLGVBQWU7a0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZvcm1Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIElucHV0TW9kdWxlLFxuICBSYWRpb01vZHVsZSxcbiAgU3dpdGNoTW9kdWxlLFxuICBUb29sdGlwTW9kdWxlLFxufSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIENvbnRhaW5lclBvcnQsXG4gIERJU1BMQVlfTkFNRSxcbiAgU0VSVklDRV9UWVBFUyxcbiAgRmVhdHVyZUdhdGVTZXJ2aWNlLFxuICBLOHNVdGlsU2VydmljZSxcbiAgT2JzZXJ2YWJsZUlucHV0LFxuICBwdWJsaXNoUmVmLFxuICBTZXJ2aWNlLFxuICBUcmFuc2xhdGVNb2R1bGUsXG4gIFJlYWRvbmx5RmllbGREaXJlY3RpdmUsXG4gIEVycm9yc01hcHBlck1vZHVsZSxcbiAgRGlzYWJsZWREaXJlY3RpdmUsXG4gIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWSxcbiAgRE9NQUlOX1BBVFRFUk4sXG4gIFNlcnZpY2VUeXBlTWV0YSxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2VydmljZVBvcnRzRmllbGRzZXRDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkc2V0L2NvbXBvbmVudCc7XG5cbmNvbnN0IE5PTl9MQl9TRVJWSUNFX1RZUEVTID0gU0VSVklDRV9UWVBFUy5maWx0ZXIob3AgPT4gb3AgIT09ICdMb2FkQmFsYW5jZXInKTtcbmludGVyZmFjZSBTZXJ2aWNlRm9ybU1vZGVsIGV4dGVuZHMgU2VydmljZSB7XG4gIHZpcnR1YWxJcD86IGJvb2xlYW47IC8vIOiZmuaLnyBpcO+8jOS4uiBmYWxzZSDml7bpnIDopoHorr7nva4gc3BlYy5jbHVzdGVySXA6IE5vbmVcbiAgc2Vzc2lvblBlcnNpc3RlbmNlPzogYm9vbGVhbjsgLy8g5Lya6K+d5L+d5oyB77yM5a+55bqUIHNwZWMuc2Vzc2lvbkFmZmluaXR5OiBDbGllbnRJUC9Ob25lXG59XG5cbi8vIEs4cyBiYXNlIHNlcnZpY2UgZm9ybVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYWNsLWs4cy1zZXJ2aWNlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFN3aXRjaE1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBSYWRpb01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIEVycm9yc01hcHBlck1vZHVsZSxcbiAgICBTZXJ2aWNlUG9ydHNGaWVsZHNldENvbXBvbmVudCxcbiAgICBSZWFkb25seUZpZWxkRGlyZWN0aXZlLFxuICAgIERpc2FibGVkRGlyZWN0aXZlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBLOHNTZXJ2aWNlRm9ybUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VSZXNvdXJjZUZvcm1Hcm91cENvbXBvbmVudDxTZXJ2aWNlLCBTZXJ2aWNlRm9ybU1vZGVsPlxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXRcbntcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY2x1c3Rlcjogc3RyaW5nO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBjbHVzdGVyJCE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBASW5wdXQoKVxuICBpc1VwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBpc1VwZGF0ZSQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGNvbnRhaW5lclBvcnRTdWdnZXN0aW9uczogQ29udGFpbmVyUG9ydFtdO1xuXG4gIEBJbnB1dCgpXG4gIHRhcmdldENvbXBvbmVudDogJ3dvcmtsb2FkJyB8ICd2bScgfCAnbGFiZWwtc2VsZWN0b3JzJyA9ICd3b3JrbG9hZCc7XG5cbiAgSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZID1cbiAgICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFk7XG5cbiAgRE9NQUlOX1BBVFRFUk4gPSBET01BSU5fUEFUVEVSTjtcbiAgZGlzcGxheU5hbWVLZXkgPSB0aGlzLms4c1V0aWwubm9ybWFsaXplVHlwZShESVNQTEFZX05BTUUpO1xuXG4gIGlzTGJFbmFibGVkJCA9IHRoaXMuY2x1c3RlciQucGlwZShcbiAgICBzd2l0Y2hNYXAoY2x1c3RlciA9PlxuICAgICAgdGhpcy5mZWF0dXJlR2F0ZS5pc0VuYWJsZWQoJ2xvYWRiYWxhbmNlci1zZXJ2aWNlJywgY2x1c3RlciksXG4gICAgKSxcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHR5cGVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaXNVcGRhdGUkLFxuICAgIHRoaXMuaXNMYkVuYWJsZWQkLFxuICAgIHRoaXMucmVzb3VyY2UkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2lzVXBkYXRlLCBpc0xiRW5hYmxlZCwgcmVzb3VyY2VdKSA9PiB7XG4gICAgICByZXR1cm4gaXNMYkVuYWJsZWQgfHxcbiAgICAgICAgKGlzVXBkYXRlICYmIHJlc291cmNlPy5zcGVjPy50eXBlID09PSAnTG9hZEJhbGFuY2VyJylcbiAgICAgICAgPyBTRVJWSUNFX1RZUEVTXG4gICAgICAgIDogTk9OX0xCX1NFUlZJQ0VfVFlQRVM7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c1V0aWw6IEs4c1V0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgY29uc3QgdHlwZUN0cmwgPSB0aGlzLmZvcm0uZ2V0KCdzcGVjLnR5cGUnKTtcbiAgICB0eXBlQ3RybC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgc3RhcnRXaXRoKHR5cGVDdHJsLnZhbHVlKSlcbiAgICAgIC5zdWJzY3JpYmUodHlwZSA9PiB7XG4gICAgICAgIGNvbnN0IHZpcnR1YWxJcEN0cmwgPSB0aGlzLmZvcm0uZ2V0KCd2aXJ0dWFsSXAnKTtcblxuICAgICAgICBpZiAodGhpcy5pc1VwZGF0ZSkge1xuICAgICAgICAgIHZpcnR1YWxJcEN0cmwuZGlzYWJsZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChbJ05vZGVQb3J0JywgJ0xvYWRCYWxhbmNlciddLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5zZXRWYWx1ZSh0cnVlKTtcbiAgICAgICAgICB2aXJ0dWFsSXBDdHJsLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2aXJ0dWFsSXBDdHJsLmVuYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgIT09ICdFeHRlcm5hbE5hbWUnKSB7XG4gICAgICAgICAgdGhpcy5vblZpcnR1YWxJcENoYW5nZSh2aXJ0dWFsSXBDdHJsLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXREZWZhdWx0Rm9ybU1vZGVsKCk6IFNlcnZpY2VGb3JtTW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiAnU2VydmljZScsXG4gICAgICB2aXJ0dWFsSXA6IHRydWUsXG4gICAgICBzZXNzaW9uUGVyc2lzdGVuY2U6IGZhbHNlLFxuICAgICAgc3BlYzoge1xuICAgICAgICB0eXBlOiAnQ2x1c3RlcklQJyxcbiAgICAgICAgcG9ydHM6IFtdLFxuICAgICAgICBleHRlcm5hbE5hbWU6ICcnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICB2aXJ0dWFsSXA6IHRoaXMuZmIuY29udHJvbCh0cnVlKSxcbiAgICAgIHNlc3Npb25QZXJzaXN0ZW5jZTogZmFsc2UsXG4gICAgICBtZXRhZGF0YTogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIG5hbWU6IHRoaXMuZmIuY29udHJvbCgnJywgW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpLFxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkucGF0dGVybiksXG4gICAgICAgIF0pLFxuICAgICAgICBsYWJlbHM6IHRoaXMuZmIuY29udHJvbCh7fSksXG4gICAgICAgIGFubm90YXRpb25zOiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICBbdGhpcy5kaXNwbGF5TmFtZUtleV06ICcnLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICAgc3BlYzogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIHR5cGU6ICdDbHVzdGVySVAnLFxuICAgICAgICBwb3J0czogbnVsbCxcbiAgICAgICAgZXh0ZXJuYWxOYW1lOiAnJyxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRGb3JtTW9kZWwoe1xuICAgIHZpcnR1YWxJcCxcbiAgICBzZXNzaW9uUGVyc2lzdGVuY2UsXG4gICAgLi4ucmVzb3VyY2VcbiAgfTogU2VydmljZUZvcm1Nb2RlbCk6IFNlcnZpY2Uge1xuICAgIGNvbnN0IHNlcnZpY2UgPSB7IC4uLlNlcnZpY2VUeXBlTWV0YSwgLi4ucmVzb3VyY2UgfTtcbiAgICAvLyBgRXh0ZXJuYWxOYW1lYCB0eXBlIGp1c3QgbmVlZCBleHRlcm5hbE5hbWVcbiAgICBpZiAocmVzb3VyY2Uuc3BlYy50eXBlID09PSAnRXh0ZXJuYWxOYW1lJykge1xuICAgICAgc2VydmljZS5zcGVjID0ge1xuICAgICAgICB0eXBlOiAnRXh0ZXJuYWxOYW1lJyxcbiAgICAgICAgZXh0ZXJuYWxOYW1lOiByZXNvdXJjZS5zcGVjLmV4dGVybmFsTmFtZSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gc2VydmljZTtcbiAgICB9XG4gICAgLy8gSXQgbXVzdCBiZSBub24gSGVhZGxlc3MgaWYgYHZpcnR1YWxJcGAgaXMgZW5hYmxlZFxuICAgIGlmICh2aXJ0dWFsSXApIHtcbiAgICAgIGlmIChzZXJ2aWNlLnNwZWMuY2x1c3RlcklQID09PSAnTm9uZScpIHtcbiAgICAgICAgZGVsZXRlIHNlcnZpY2Uuc3BlYy5jbHVzdGVySVA7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHZpcnR1YWxJcCDooqvnpoHnlKjlkI7kuLogdW5kZWZpbmVk77yMIOatpOaXtuS4jeWBmuWkhOeQhlxuICAgIGVsc2UgaWYgKHZpcnR1YWxJcCA9PT0gZmFsc2UpIHtcbiAgICAgIC8vIEhlYWRsZXNzXG4gICAgICBzZXJ2aWNlLnNwZWMuY2x1c3RlcklQID0gJ05vbmUnO1xuICAgIH1cblxuICAgIHNlcnZpY2Uuc3BlYy5zZXNzaW9uQWZmaW5pdHkgPSBzZXNzaW9uUGVyc2lzdGVuY2UgPyAnQ2xpZW50SVAnIDogJ05vbmUnO1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRSZXNvdXJjZU1vZGVsKHJlc291cmNlOiBTZXJ2aWNlKTogU2VydmljZUZvcm1Nb2RlbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc291cmNlLFxuICAgICAgdmlydHVhbElwOiByZXNvdXJjZT8uc3BlYz8uY2x1c3RlcklQICE9PSAnTm9uZScsXG4gICAgICBzZXNzaW9uUGVyc2lzdGVuY2U6IHJlc291cmNlPy5zcGVjPy5zZXNzaW9uQWZmaW5pdHkgPT09ICdDbGllbnRJUCcsXG4gICAgfTtcbiAgfVxuXG4gIG9uVmlydHVhbElwQ2hhbmdlKHZpcnR1YWxJcDogYm9vbGVhbikge1xuICAgIGlmICghdmlydHVhbElwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9ydHNDdHJsID0gdGhpcy5mb3JtLmdldCgnc3BlYy5wb3J0cycpO1xuXG4gICAgaWYgKCFwb3J0c0N0cmwudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgcG9ydHNDdHJsLnBhdGNoVmFsdWUoW3t9XSk7XG4gICAgfVxuICB9XG59XG4iLCI8Zm9ybVxuICBhdWlGb3JtXG4gIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4+XG4gIDxuZy1jb250YWluZXIgZm9ybUdyb3VwTmFtZT1cIm1ldGFkYXRhXCI+XG4gICAgPGF1aS1mb3JtLWl0ZW0gd2lkdGg9XCJsYXJnZVwiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ25hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc1VwZGF0ZVwiXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIks4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWS50aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgLz5cbiAgICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgICBhdWlGb3JtSXRlbUVycm9yXG4gICAgICAgIFtlcnJvcnNdPVwiZm9ybS5nZXQoWydtZXRhZGF0YScsICduYW1lJ10pLmVycm9yc1wiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICAgIHBhdHRlcm46IEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWS50aXAgfCB0cmFuc2xhdGVcbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8YXVpLWZvcm0taXRlbVxuICAgICAgd2lkdGg9XCJsYXJnZVwiXG4gICAgICBmb3JtR3JvdXBOYW1lPVwiYW5ub3RhdGlvbnNcIlxuICAgID5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICdkaXNwbGF5X25hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgYXVpLWlucHV0XG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGlzcGxheU5hbWVLZXlcIlxuICAgICAgLz5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxhdWktZm9ybS1pdGVtIGZvcm1Hcm91cE5hbWU9XCJzcGVjXCI+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3R5cGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8YXVpLXJhZGlvLWdyb3VwIGZvcm1Db250cm9sTmFtZT1cInR5cGVcIj5cbiAgICAgIDxhdWktcmFkaW8tYnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdHlwZXMkIHwgYXN5bmNcIlxuICAgICAgICBbdmFsdWVdPVwib3B0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICA8L2F1aS1yYWRpby1idXR0b24+XG4gICAgPC9hdWktcmFkaW8tZ3JvdXA+XG4gICAgPGRpdlxuICAgICAgYXVpRm9ybUl0ZW1IaW50XG4gICAgICAqbmdJZj1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgPlxuICAgICAge3sgJ3NlcnZpY2VfZXh0ZXJuYWxfbmFtZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgPGF1aS1mb3JtLWl0ZW1cbiAgICBmb3JtR3JvdXBOYW1lPVwic3BlY1wiXG4gICAgd2lkdGg9XCJsYXJnZVwiXG4gICAgY2xhc3M9XCJsYXN0LWZvcm0taXRlbS1uby1tYXJnaW5cIlxuICAgIFtoaWRkZW5dPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgIT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAge3sgJ3NlcnZpY2VfZXh0ZXJuYWxfbmFtZV9tYXBwaW5nX2RvbWFpbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgYXVpLWlucHV0XG4gICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgIFthY2xEaXNhYmxlZF09XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSAhPT0gJ0V4dGVybmFsTmFtZSdcIlxuICAgICAgW3JlcXVpcmVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJleHRlcm5hbE5hbWVcIlxuICAgICAgW3BhdHRlcm5dPVwiRE9NQUlOX1BBVFRFUk4ucGF0dGVyblwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlcnZpY2VfZXh0ZXJuYWxfbmFtZV9kb21haW5fcGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAvPlxuICAgIDxhY2wtZXJyb3JzLW1hcHBlclxuICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgW2Vycm9yc109XCJmb3JtLmdldChbJ3NwZWMnLCAnZXh0ZXJuYWxOYW1lJ10pLmVycm9yc1wiXG4gICAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgICAgcGF0dGVybjogRE9NQUlOX1BBVFRFUk4udGlwIHwgdHJhbnNsYXRlXG4gICAgICB9XCJcbiAgICA+XG4gICAgPC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgPC9hdWktZm9ybS1pdGVtPlxuXG4gIDwhLS0gRXh0ZXJuYWxOYW1lIOexu+Wei+aXtumakOiXj+WFtuS7luWxnuaApyAtLT5cbiAgPGRpdiBbaGlkZGVuXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiPlxuICAgIDxhdWktZm9ybS1pdGVtPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3ZpcnR1YWxfaXAnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZpcnR1YWxJcFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZpcnR1YWxJcENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2F1aS1zd2l0Y2g+XG4gICAgICA8ZGl2IGF1aUZvcm1JdGVtQWRkb24+XG4gICAgICAgIDxhdWktaWNvblxuICAgICAgICAgIFthdWlUb29sdGlwXT1cIid2aXJ0dWFsX2lwX2hpbnQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYXVpVG9vbHRpcFBvc2l0aW9uXT1cIid0b3AgY2VudGVyJ1wiXG4gICAgICAgICAgaWNvbj1cInF1ZXN0aW9uX2NpcmNsZVwiXG4gICAgICAgICAgY2xhc3M9XCJpY29uLS1oZWxwXCJcbiAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8IS0tIOiHquWumuS5iSBDb250cm9scyAtLT5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8YXVpLWZvcm0taXRlbSBmb3JtR3JvdXBOYW1lPVwic3BlY1wiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3BvcnRzJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLXNlcnZpY2UtcG9ydHMtZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJ0dy13LWZ1bGxcIlxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgW3JlcXVpcmVkXT1cIiEhZm9ybS5nZXQoJ3ZpcnR1YWxJcCcpLnZhbHVlXCJcbiAgICAgICAgW2FjbERpc2FibGVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICAgIG5hbWU9XCJwb3J0c1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvcnRzXCJcbiAgICAgICAgW3NlcnZpY2VUeXBlXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlXCJcbiAgICAgICAgW2NvbnRhaW5lclBvcnRTdWdnZXN0aW9uc109XCJjb250YWluZXJQb3J0U3VnZ2VzdGlvbnNcIlxuICAgICAgICBbdGFyZ2V0Q29tcG9uZW50XT1cInRhcmdldENvbXBvbmVudFwiXG4gICAgICA+PC9hY2wtc2VydmljZS1wb3J0cy1maWVsZHNldD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8YXVpLWZvcm0taXRlbSBjbGFzcz1cImxhc3QtZm9ybS1pdGVtLW5vLW1hcmdpblwiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3sgJ3Nlc3Npb25fYWZmaW5pdHknIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cInNlc3Npb25QZXJzaXN0ZW5jZVwiPjwvYXVpLXN3aXRjaD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
|
307
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(K8sServiceFormComponent, { className: "K8sServiceFormComponent", filePath: "lib/components/service-form/component.ts", lineNumber: 78 }); })();
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWZvcm0vdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFFTCxZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsdUNBQXVDLEVBQ3ZDLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNC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OzhCQUNOLFVBQVU7MERBQVU7aUZBZHJCLHVCQUF1QjtjQXhCbkMsU0FBUzs2QkFDSSxJQUFJLFlBQ04sc0JBQXNCLG1CQUVmLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AsU0FBUztvQkFDVCxVQUFVO29CQUNWLFdBQVc7b0JBQ1gsSUFBSTtvQkFDSixLQUFLO29CQUNMLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsZ0JBQWdCO29CQUNoQixXQUFXO29CQUNYLGFBQWE7b0JBQ2Isb0JBQW9CO29CQUNwQiw2QkFBNkI7b0JBQzdCLHNCQUFzQjtvQkFDdEIsaUJBQWlCO2lCQUNsQjt1R0FPRCxPQUFPO2tCQUROLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLFFBQVEsTUFHUixRQUFRO2tCQURQLEtBQUs7WUFJTixTQUFTLE1BR1Qsd0JBQXdCO2tCQUR2QixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixlQUFlO2tCQURkLEtBQUs7O2tGQW5CSyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGb3JtTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgUmFkaW9Nb2R1bGUsXG4gIFN3aXRjaE1vZHVsZSxcbiAgVG9vbHRpcE1vZHVsZSxcbn0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBDb250YWluZXJQb3J0LFxuICBESVNQTEFZX05BTUUsXG4gIFNFUlZJQ0VfVFlQRVMsXG4gIEZlYXR1cmVHYXRlU2VydmljZSxcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgcHVibGlzaFJlZixcbiAgU2VydmljZSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIERpc2FibGVkRGlyZWN0aXZlLFxuICBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFksXG4gIERPTUFJTl9QQVRURVJOLFxuICBTZXJ2aWNlVHlwZU1ldGEsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnbmctcmVzb3VyY2UtZm9ybS11dGlsJztcbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNlcnZpY2VQb3J0c0ZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi9maWVsZHNldC9jb21wb25lbnQnO1xuXG5jb25zdCBOT05fTEJfU0VSVklDRV9UWVBFUyA9IFNFUlZJQ0VfVFlQRVMuZmlsdGVyKG9wID0+IG9wICE9PSAnTG9hZEJhbGFuY2VyJyk7XG5pbnRlcmZhY2UgU2VydmljZUZvcm1Nb2RlbCBleHRlbmRzIFNlcnZpY2Uge1xuICB2aXJ0dWFsSXA/OiBib29sZWFuOyAvLyDomZrmi58gaXDvvIzkuLogZmFsc2Ug5pe26ZyA6KaB6K6+572uIHNwZWMuY2x1c3RlcklwOiBOb25lXG4gIHNlc3Npb25QZXJzaXN0ZW5jZT86IGJvb2xlYW47IC8vIOS8muivneS/neaMge+8jOWvueW6lCBzcGVjLnNlc3Npb25BZmZpbml0eTogQ2xpZW50SVAvTm9uZVxufVxuXG4vLyBLOHMgYmFzZSBzZXJ2aWNlIGZvcm1cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1rOHMtc2VydmljZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdGb3IsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTd2l0Y2hNb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIFJhZGlvTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gICAgU2VydmljZVBvcnRzRmllbGRzZXRDb21wb25lbnQsXG4gICAgUmVhZG9ubHlGaWVsZERpcmVjdGl2ZSxcbiAgICBEaXNhYmxlZERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSzhzU2VydmljZUZvcm1Db21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlUmVzb3VyY2VGb3JtR3JvdXBDb21wb25lbnQ8U2VydmljZSwgU2VydmljZUZvcm1Nb2RlbD5cbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XG57XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGNsdXN0ZXI6IHN0cmluZztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgY2x1c3RlciQhOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgQElucHV0KClcbiAgaXNVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgaXNVcGRhdGUkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb250YWluZXJQb3J0U3VnZ2VzdGlvbnM6IENvbnRhaW5lclBvcnRbXTtcblxuICBASW5wdXQoKVxuICB0YXJnZXRDb21wb25lbnQ6ICd3b3JrbG9hZCcgfCAndm0nIHwgJ2xhYmVsLXNlbGVjdG9ycycgPSAnd29ya2xvYWQnO1xuXG4gIEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWSA9XG4gICAgSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZO1xuXG4gIERPTUFJTl9QQVRURVJOID0gRE9NQUlOX1BBVFRFUk47XG4gIGRpc3BsYXlOYW1lS2V5ID0gdGhpcy5rOHNVdGlsLm5vcm1hbGl6ZVR5cGUoRElTUExBWV9OQU1FKTtcblxuICBpc0xiRW5hYmxlZCQgPSB0aGlzLmNsdXN0ZXIkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGNsdXN0ZXIgPT5cbiAgICAgIHRoaXMuZmVhdHVyZUdhdGUuaXNFbmFibGVkKCdsb2FkYmFsYW5jZXItc2VydmljZScsIGNsdXN0ZXIpLFxuICAgICksXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICB0eXBlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmlzVXBkYXRlJCxcbiAgICB0aGlzLmlzTGJFbmFibGVkJCxcbiAgICB0aGlzLnJlc291cmNlJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpc1VwZGF0ZSwgaXNMYkVuYWJsZWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIGlzTGJFbmFibGVkIHx8XG4gICAgICAgIChpc1VwZGF0ZSAmJiByZXNvdXJjZT8uc3BlYz8udHlwZSA9PT0gJ0xvYWRCYWxhbmNlcicpXG4gICAgICAgID8gU0VSVklDRV9UWVBFU1xuICAgICAgICA6IE5PTl9MQl9TRVJWSUNFX1RZUEVTO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGNvbnN0IHR5cGVDdHJsID0gdGhpcy5mb3JtLmdldCgnc3BlYy50eXBlJyk7XG4gICAgdHlwZUN0cmwudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIHN0YXJ0V2l0aCh0eXBlQ3RybC52YWx1ZSkpXG4gICAgICAuc3Vic2NyaWJlKHR5cGUgPT4ge1xuICAgICAgICBjb25zdCB2aXJ0dWFsSXBDdHJsID0gdGhpcy5mb3JtLmdldCgndmlydHVhbElwJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgICB2aXJ0dWFsSXBDdHJsLmRpc2FibGUoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoWydOb2RlUG9ydCcsICdMb2FkQmFsYW5jZXInXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgIHZpcnR1YWxJcEN0cmwuc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlydHVhbElwQ3RybC5lbmFibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlICE9PSAnRXh0ZXJuYWxOYW1lJykge1xuICAgICAgICAgIHRoaXMub25WaXJ0dWFsSXBDaGFuZ2UodmlydHVhbElwQ3RybC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpOiBTZXJ2aWNlRm9ybU1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ1NlcnZpY2UnLFxuICAgICAgdmlydHVhbElwOiB0cnVlLFxuICAgICAgc2Vzc2lvblBlcnNpc3RlbmNlOiBmYWxzZSxcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgdHlwZTogJ0NsdXN0ZXJJUCcsXG4gICAgICAgIHBvcnRzOiBbXSxcbiAgICAgICAgZXh0ZXJuYWxOYW1lOiAnJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgdmlydHVhbElwOiB0aGlzLmZiLmNvbnRyb2wodHJ1ZSksXG4gICAgICBzZXNzaW9uUGVyc2lzdGVuY2U6IGZhbHNlLFxuICAgICAgbWV0YWRhdGE6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBuYW1lOiB0aGlzLmZiLmNvbnRyb2woJycsIFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKSxcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oSzhTX1JFU09VUkNFX05BTUVfU1RBUlRfV0lUSF9DSEFSU19PTkxZLnBhdHRlcm4pLFxuICAgICAgICBdKSxcbiAgICAgICAgbGFiZWxzOiB0aGlzLmZiLmNvbnRyb2woe30pLFxuICAgICAgICBhbm5vdGF0aW9uczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgW3RoaXMuZGlzcGxheU5hbWVLZXldOiAnJyxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICAgIHNwZWM6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICB0eXBlOiAnQ2x1c3RlcklQJyxcbiAgICAgICAgcG9ydHM6IG51bGwsXG4gICAgICAgIGV4dGVybmFsTmFtZTogJycsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0Rm9ybU1vZGVsKHtcbiAgICB2aXJ0dWFsSXAsXG4gICAgc2Vzc2lvblBlcnNpc3RlbmNlLFxuICAgIC4uLnJlc291cmNlXG4gIH06IFNlcnZpY2VGb3JtTW9kZWwpOiBTZXJ2aWNlIHtcbiAgICBjb25zdCBzZXJ2aWNlID0geyAuLi5TZXJ2aWNlVHlwZU1ldGEsIC4uLnJlc291cmNlIH07XG4gICAgLy8gYEV4dGVybmFsTmFtZWAgdHlwZSBqdXN0IG5lZWQgZXh0ZXJuYWxOYW1lXG4gICAgaWYgKHJlc291cmNlLnNwZWMudHlwZSA9PT0gJ0V4dGVybmFsTmFtZScpIHtcbiAgICAgIHNlcnZpY2Uuc3BlYyA9IHtcbiAgICAgICAgdHlwZTogJ0V4dGVybmFsTmFtZScsXG4gICAgICAgIGV4dGVybmFsTmFtZTogcmVzb3VyY2Uuc3BlYy5leHRlcm5hbE5hbWUsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHNlcnZpY2U7XG4gICAgfVxuICAgIC8vIEl0IG11c3QgYmUgbm9uIEhlYWRsZXNzIGlmIGB2aXJ0dWFsSXBgIGlzIGVuYWJsZWRcbiAgICBpZiAodmlydHVhbElwKSB7XG4gICAgICBpZiAoc2VydmljZS5zcGVjLmNsdXN0ZXJJUCA9PT0gJ05vbmUnKSB7XG4gICAgICAgIGRlbGV0ZSBzZXJ2aWNlLnNwZWMuY2x1c3RlcklQO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB2aXJ0dWFsSXAg6KKr56aB55So5ZCO5Li6IHVuZGVmaW5lZO+8jCDmraTml7bkuI3lgZrlpITnkIZcbiAgICBlbHNlIGlmICh2aXJ0dWFsSXAgPT09IGZhbHNlKSB7XG4gICAgICAvLyBIZWFkbGVzc1xuICAgICAgc2VydmljZS5zcGVjLmNsdXN0ZXJJUCA9ICdOb25lJztcbiAgICB9XG5cbiAgICBzZXJ2aWNlLnNwZWMuc2Vzc2lvbkFmZmluaXR5ID0gc2Vzc2lvblBlcnNpc3RlbmNlID8gJ0NsaWVudElQJyA6ICdOb25lJztcbiAgICByZXR1cm4gc2VydmljZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFkYXB0UmVzb3VyY2VNb2RlbChyZXNvdXJjZTogU2VydmljZSk6IFNlcnZpY2VGb3JtTW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXNvdXJjZSxcbiAgICAgIHZpcnR1YWxJcDogcmVzb3VyY2U/LnNwZWM/LmNsdXN0ZXJJUCAhPT0gJ05vbmUnLFxuICAgICAgc2Vzc2lvblBlcnNpc3RlbmNlOiByZXNvdXJjZT8uc3BlYz8uc2Vzc2lvbkFmZmluaXR5ID09PSAnQ2xpZW50SVAnLFxuICAgIH07XG4gIH1cblxuICBvblZpcnR1YWxJcENoYW5nZSh2aXJ0dWFsSXA6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXZpcnR1YWxJcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnRzQ3RybCA9IHRoaXMuZm9ybS5nZXQoJ3NwZWMucG9ydHMnKTtcblxuICAgIGlmICghcG9ydHNDdHJsLnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHBvcnRzQ3RybC5wYXRjaFZhbHVlKFt7fV0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm1cbiAgYXVpRm9ybVxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuPlxuICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJtZXRhZGF0YVwiPlxuICAgIDxhdWktZm9ybS1pdGVtIHdpZHRoPVwibGFyZ2VcIj5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNVcGRhdGVcIlxuICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkudGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgIC8+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImZvcm0uZ2V0KFsnbWV0YWRhdGEnLCAnbmFtZSddKS5lcnJvcnNcIlxuICAgICAgICBbZXJyb3JzTWFwcGVyXT1cIntcbiAgICAgICAgICBwYXR0ZXJuOiBLOFNfUkVTT1VSQ0VfTkFNRV9TVEFSVF9XSVRIX0NIQVJTX09OTFkudGlwIHwgdHJhbnNsYXRlXG4gICAgICAgIH1cIlxuICAgICAgPjwvYWNsLWVycm9ycy1tYXBwZXI+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuXG4gICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgIHdpZHRoPVwibGFyZ2VcIlxuICAgICAgZm9ybUdyb3VwTmFtZT1cImFubm90YXRpb25zXCJcbiAgICA+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnZGlzcGxheV9uYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRpc3BsYXlOYW1lS2V5XCJcbiAgICAgIC8+XG4gICAgPC9hdWktZm9ybS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YXVpLWZvcm0taXRlbSBmb3JtR3JvdXBOYW1lPVwic3BlY1wiPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICd0eXBlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgPGF1aS1yYWRpby1ncm91cCBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCI+XG4gICAgICA8YXVpLXJhZGlvLWJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHR5cGVzJCB8IGFzeW5jXCJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgICA+XG4gICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgPC9hdWktcmFkaW8tYnV0dG9uPlxuICAgIDwvYXVpLXJhZGlvLWdyb3VwPlxuICAgIDxkaXZcbiAgICAgIGF1aUZvcm1JdGVtSGludFxuICAgICAgKm5nSWY9XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSA9PT0gJ0V4dGVybmFsTmFtZSdcIlxuICAgID5cbiAgICAgIHt7ICduZXR3b3JrLnNlcnZpY2VfZXh0ZXJuYWxfbmFtZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgPGF1aS1mb3JtLWl0ZW1cbiAgICBmb3JtR3JvdXBOYW1lPVwic3BlY1wiXG4gICAgd2lkdGg9XCJsYXJnZVwiXG4gICAgY2xhc3M9XCJsYXN0LWZvcm0taXRlbS1uby1tYXJnaW5cIlxuICAgIFtoaWRkZW5dPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgIT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAge3sgJ25ldHdvcmsuc2VydmljZV9leHRlcm5hbF9uYW1lX21hcHBpbmdfZG9tYWluJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBhdWktaW5wdXRcbiAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgW2FjbERpc2FibGVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlICE9PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwiZm9ybS5nZXQoWydzcGVjJywgJ3R5cGUnXSkudmFsdWUgPT09ICdFeHRlcm5hbE5hbWUnXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImV4dGVybmFsTmFtZVwiXG4gICAgICBbcGF0dGVybl09XCJET01BSU5fUEFUVEVSTi5wYXR0ZXJuXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgJ25ldHdvcmsuc2VydmljZV9leHRlcm5hbF9uYW1lX2RvbWFpbl9wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgLz5cbiAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgIFtlcnJvcnNdPVwiZm9ybS5nZXQoWydzcGVjJywgJ2V4dGVybmFsTmFtZSddKS5lcnJvcnNcIlxuICAgICAgW2Vycm9yc01hcHBlcl09XCJ7XG4gICAgICAgIHBhdHRlcm46IERPTUFJTl9QQVRURVJOLnRpcCB8IHRyYW5zbGF0ZVxuICAgICAgfVwiXG4gICAgPlxuICAgIDwvYWNsLWVycm9ycy1tYXBwZXI+XG4gIDwvYXVpLWZvcm0taXRlbT5cblxuICA8IS0tIEV4dGVybmFsTmFtZSDnsbvlnovml7bpmpDol4/lhbbku5blsZ7mgKcgLS0+XG4gIDxkaXYgW2hpZGRlbl09XCJmb3JtLmdldChbJ3NwZWMnLCAndHlwZSddKS52YWx1ZSA9PT0gJ0V4dGVybmFsTmFtZSdcIj5cbiAgICA8YXVpLWZvcm0taXRlbT5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7ICduZXR3b3JrLnZpcnR1YWxfaXAnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZpcnR1YWxJcFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZpcnR1YWxJcENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2F1aS1zd2l0Y2g+XG4gICAgICA8ZGl2IGF1aUZvcm1JdGVtQWRkb24+XG4gICAgICAgIDxhdWktaWNvblxuICAgICAgICAgIFthdWlUb29sdGlwXT1cIiduZXR3b3JrLnZpcnR1YWxfaXBfaGludCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthdWlUb29sdGlwUG9zaXRpb25dPVwiJ3RvcCBjZW50ZXInXCJcbiAgICAgICAgICBpY29uPVwicXVlc3Rpb25fY2lyY2xlXCJcbiAgICAgICAgICBjbGFzcz1cImljb24tLWhlbHBcIlxuICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgIDwhLS0g6Ieq5a6a5LmJIENvbnRyb2xzIC0tPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxhdWktZm9ybS1pdGVtIGZvcm1Hcm91cE5hbWU9XCJzcGVjXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnbmV0d29yay5wb3J0JyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICA8YWNsLXNlcnZpY2UtcG9ydHMtZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJ0dy13LWZ1bGxcIlxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgW3JlcXVpcmVkXT1cIiEhZm9ybS5nZXQoJ3ZpcnR1YWxJcCcpLnZhbHVlXCJcbiAgICAgICAgW2FjbERpc2FibGVkXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlID09PSAnRXh0ZXJuYWxOYW1lJ1wiXG4gICAgICAgIG5hbWU9XCJwb3J0c1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvcnRzXCJcbiAgICAgICAgW3NlcnZpY2VUeXBlXT1cImZvcm0uZ2V0KFsnc3BlYycsICd0eXBlJ10pLnZhbHVlXCJcbiAgICAgICAgW2NvbnRhaW5lclBvcnRTdWdnZXN0aW9uc109XCJjb250YWluZXJQb3J0U3VnZ2VzdGlvbnNcIlxuICAgICAgICBbdGFyZ2V0Q29tcG9uZW50XT1cInRhcmdldENvbXBvbmVudFwiXG4gICAgICA+PC9hY2wtc2VydmljZS1wb3J0cy1maWVsZHNldD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG5cbiAgICA8YXVpLWZvcm0taXRlbSBjbGFzcz1cImxhc3QtZm9ybS1pdGVtLW5vLW1hcmdpblwiPlxuICAgICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+e3tcbiAgICAgICAgJ25ldHdvcmsuc2Vzc2lvbl9hZmZpbml0eScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9sYWJlbD5cbiAgICAgIDxhdWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cInNlc3Npb25QZXJzaXN0ZW5jZVwiPjwvYXVpLXN3aXRjaD5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|