verben-authentication-ui 0.3.6 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/auth-callback/auth-callback.component.mjs +48 -0
- package/esm2022/lib/components/auth-callback/auth-callback.module.mjs +18 -0
- package/esm2022/lib/components/button/button.component.mjs +6 -3
- package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +1 -1
- package/esm2022/lib/components/mail/mail.component.mjs +1 -1
- package/esm2022/lib/components/o-auth/o-auth.component.mjs +65 -79
- package/esm2022/lib/components/reset-password/reset-password.component.mjs +1 -1
- package/esm2022/lib/components/sign-in/sign-in.component.mjs +108 -30
- package/esm2022/lib/components/sign-up/sign-up.component.mjs +1 -1
- package/esm2022/lib/components/sso/sso-form/sso-form.component.mjs +1 -1
- package/esm2022/lib/components/two-factor-auth-otp/two-factor-auth-otp.component.mjs +1 -1
- package/esm2022/lib/components/user-management/user-management-form/use-management-form.component.mjs +1 -1
- package/esm2022/lib/components/user-management/user-management.component.mjs +2 -2
- package/esm2022/lib/components/user-request/user-request.component.mjs +125 -49
- package/esm2022/lib/components/user-request/user-request.module.mjs +7 -3
- package/esm2022/lib/components/user-request-approval/user-request-approval.component.mjs +2 -2
- package/esm2022/lib/components/user-request-approval/user-request-form/use-request-form.component.mjs +1 -1
- package/esm2022/lib/models/UserRequest.mjs +1 -1
- package/esm2022/lib/models/log-in.mjs +1 -1
- package/esm2022/lib/models/oauth-response.mjs +2 -0
- package/esm2022/lib/services/http-web-request.service.mjs +5 -6
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/verben-authentication-ui.mjs +432 -234
- package/fesm2022/verben-authentication-ui.mjs.map +1 -1
- package/lib/components/auth-callback/auth-callback.component.d.ts +17 -0
- package/lib/components/auth-callback/auth-callback.module.d.ts +8 -0
- package/lib/components/button/button.component.d.ts +2 -1
- package/lib/components/o-auth/o-auth.component.d.ts +14 -5
- package/lib/components/sign-in/sign-in.component.d.ts +19 -4
- package/lib/components/user-request/user-request.component.d.ts +19 -2
- package/lib/components/user-request/user-request.module.d.ts +2 -1
- package/lib/models/UserRequest.d.ts +2 -0
- package/lib/models/log-in.d.ts +1 -0
- package/lib/models/oauth-response.d.ts +6 -0
- package/package.json +2 -2
- package/public-api.d.ts +2 -0
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { Validators, } from '@angular/forms';
|
|
2
|
+
import { FormControl, Validators, } from '@angular/forms';
|
|
3
3
|
import { ObjectState } from '../../models/object-state';
|
|
4
4
|
import { ErrorResponse } from '../../models/ErrorResponse';
|
|
5
5
|
import { Status } from '../../models/status';
|
|
6
6
|
import { RequestStatus } from '../../models/request-status';
|
|
7
|
+
import { MechanismType } from '../../models/auth-mechanism';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/forms";
|
|
9
10
|
import * as i2 from "../../services/http-web-request.service";
|
|
10
11
|
import * as i3 from "../../services/util.service";
|
|
11
12
|
import * as i4 from "../../services/environment.service";
|
|
12
|
-
import * as i5 from "
|
|
13
|
-
import * as i6 from "
|
|
13
|
+
import * as i5 from "@angular/router";
|
|
14
|
+
import * as i6 from "verben-ng-ui";
|
|
15
|
+
import * as i7 from "@angular/common";
|
|
16
|
+
import * as i8 from "../o-auth/o-auth.component";
|
|
14
17
|
export class UserRequestComponent {
|
|
15
18
|
fb;
|
|
16
19
|
server;
|
|
17
20
|
utilService;
|
|
18
21
|
envSvc;
|
|
22
|
+
route;
|
|
19
23
|
width = '500px';
|
|
20
24
|
headingTitle = 'Request an account';
|
|
21
25
|
headingClass = 'font-medium text-[2rem] leading-[48px] text-[#333]';
|
|
@@ -27,8 +31,9 @@ export class UserRequestComponent {
|
|
|
27
31
|
textColor = '#333';
|
|
28
32
|
height = 'auto';
|
|
29
33
|
pd = '32px 48px';
|
|
34
|
+
isFormEditable = true;
|
|
30
35
|
apiKey = '';
|
|
31
|
-
|
|
36
|
+
isCode = false;
|
|
32
37
|
text = 'Send Request';
|
|
33
38
|
color = 'black';
|
|
34
39
|
btnBorder = '1px solid #FFE681';
|
|
@@ -43,20 +48,58 @@ export class UserRequestComponent {
|
|
|
43
48
|
googleClick = new EventEmitter();
|
|
44
49
|
onSubmitSuccess = new EventEmitter();
|
|
45
50
|
appleClick = new EventEmitter();
|
|
51
|
+
microsoftClick = new EventEmitter();
|
|
52
|
+
onSubmitGoogleAuth = new EventEmitter();
|
|
46
53
|
onSubmitResponseEnd = new EventEmitter();
|
|
47
54
|
userRequestForm;
|
|
48
|
-
|
|
55
|
+
tenantDetails = null;
|
|
56
|
+
AuthMechanisms = null;
|
|
57
|
+
showform = false;
|
|
58
|
+
code = '';
|
|
59
|
+
constructor(fb, server, utilService, envSvc, route) {
|
|
49
60
|
this.fb = fb;
|
|
50
61
|
this.server = server;
|
|
51
62
|
this.utilService = utilService;
|
|
52
63
|
this.envSvc = envSvc;
|
|
64
|
+
this.route = route;
|
|
53
65
|
this.apiKey = this.envSvc.environment.APIKey;
|
|
54
66
|
this.userRequestForm = this.fb.group({
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
67
|
+
Code: new FormControl('', { nonNullable: true }),
|
|
68
|
+
FirstName: new FormControl('', {
|
|
69
|
+
nonNullable: true,
|
|
70
|
+
validators: [Validators.required],
|
|
71
|
+
}),
|
|
72
|
+
LastName: new FormControl('', {
|
|
73
|
+
nonNullable: true,
|
|
74
|
+
validators: [Validators.required],
|
|
75
|
+
}),
|
|
76
|
+
MailAddress: new FormControl('', {
|
|
77
|
+
nonNullable: true,
|
|
78
|
+
validators: [Validators.required, Validators.email],
|
|
79
|
+
}),
|
|
80
|
+
Password: new FormControl('', {
|
|
81
|
+
nonNullable: true,
|
|
82
|
+
validators: [Validators.required, Validators.minLength(8)],
|
|
83
|
+
}),
|
|
84
|
+
PhoneNumber: new FormControl('', { nonNullable: true }),
|
|
85
|
+
OtherName: new FormControl('', { nonNullable: true }),
|
|
86
|
+
Role: new FormControl([], { nonNullable: true }),
|
|
87
|
+
Tags: new FormControl([], { nonNullable: true }),
|
|
88
|
+
Status: new FormControl(Status.Active, { nonNullable: true }),
|
|
89
|
+
RequestStatus: new FormControl(RequestStatus.Pending, {
|
|
90
|
+
nonNullable: true,
|
|
91
|
+
}),
|
|
92
|
+
UpdatedAt: new FormControl(new Date(), { nonNullable: true }),
|
|
93
|
+
CreatedAt: new FormControl(new Date(), { nonNullable: true }),
|
|
94
|
+
Id: new FormControl('', { nonNullable: true }),
|
|
95
|
+
DataState: new FormControl(ObjectState.New, {
|
|
96
|
+
nonNullable: true,
|
|
97
|
+
}),
|
|
98
|
+
TenantId: new FormControl('', { nonNullable: true }),
|
|
99
|
+
SignUpType: new FormControl(MechanismType.InApp, { nonNullable: true }),
|
|
100
|
+
ServiceName: new FormControl('', { nonNullable: true }),
|
|
101
|
+
ActionBy: new FormControl('', { nonNullable: true }),
|
|
102
|
+
Comment: new FormControl('', { nonNullable: true }),
|
|
60
103
|
}, { validators: this.passwordMatchValidator });
|
|
61
104
|
}
|
|
62
105
|
passwordMatchValidator(control) {
|
|
@@ -79,78 +122,107 @@ export class UserRequestComponent {
|
|
|
79
122
|
padding: this.pd,
|
|
80
123
|
};
|
|
81
124
|
}
|
|
125
|
+
async ngOnInit() {
|
|
126
|
+
await this.getTenantConfig();
|
|
127
|
+
this.route.queryParams.subscribe(params => {
|
|
128
|
+
this.code = params['code'];
|
|
129
|
+
console.log(this.code, 'code');
|
|
130
|
+
if (this.code) {
|
|
131
|
+
this.verifyUserDetails();
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async getTenantConfig() {
|
|
136
|
+
this.userRequestForm.addControl('ConfirmPassword', new FormControl('', Validators.required));
|
|
137
|
+
const res = await this.server.get(`Tenant/GetTenantConfigByKey/${this.apiKey}`);
|
|
138
|
+
this.tenantDetails = res;
|
|
139
|
+
this.AuthMechanisms = this.tenantDetails?.AuthMechanisms;
|
|
140
|
+
if (!this.tenantDetails?.AuthMechanism &&
|
|
141
|
+
this.tenantDetails?.AuthMechanism !== MechanismType.InApp) {
|
|
142
|
+
this.showform = false;
|
|
143
|
+
}
|
|
144
|
+
else if (this.tenantDetails?.AuthMechanism === MechanismType.InApp) {
|
|
145
|
+
this.showform = true;
|
|
146
|
+
}
|
|
147
|
+
else if (this.AuthMechanisms !== null) {
|
|
148
|
+
this.showform = this.AuthMechanisms.some((item) => item.AuthMechanism.includes(MechanismType.InApp));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
82
151
|
checkForm() {
|
|
83
152
|
return this.userRequestForm.valid;
|
|
84
153
|
}
|
|
85
154
|
handleGoogleAuth() {
|
|
86
|
-
this.
|
|
155
|
+
if (this.AuthMechanisms !== null) {
|
|
156
|
+
const data = this.AuthMechanisms.filter((item) => item.AuthMechanism === MechanismType.Google);
|
|
157
|
+
this.googleClick.emit();
|
|
158
|
+
}
|
|
87
159
|
}
|
|
88
160
|
handleAppleAuth() {
|
|
89
161
|
this.appleClick.emit();
|
|
90
162
|
}
|
|
163
|
+
handleMicrosoft() {
|
|
164
|
+
if (this.AuthMechanisms !== null) {
|
|
165
|
+
const data = this.AuthMechanisms.filter((item) => item.AuthMechanism === MechanismType.MicrosoftAD);
|
|
166
|
+
this.microsoftClick.emit();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
91
169
|
async submitForm() {
|
|
92
170
|
if (!this.checkForm()) {
|
|
93
171
|
return;
|
|
94
172
|
}
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
LastName: this.userRequestForm.controls['LastName'].value,
|
|
100
|
-
MailAddress: this.userRequestForm.controls['Email'].value,
|
|
101
|
-
Password: this.userRequestForm.controls['Password'].value,
|
|
102
|
-
PhoneNumber: '',
|
|
103
|
-
OtherName: '',
|
|
104
|
-
Role: [],
|
|
105
|
-
Tags: [],
|
|
106
|
-
Status: Status.Active,
|
|
107
|
-
RequestStatus: RequestStatus.Pending,
|
|
108
|
-
UpdatedAt: new Date(),
|
|
109
|
-
CreatedAt: new Date(),
|
|
110
|
-
Id: '',
|
|
111
|
-
DataState: ObjectState.New,
|
|
112
|
-
TenantId: '',
|
|
113
|
-
ServiceName: '',
|
|
114
|
-
ActionBy: '',
|
|
115
|
-
Comment: '',
|
|
116
|
-
},
|
|
117
|
-
];
|
|
118
|
-
// Emit payload if needed
|
|
119
|
-
this.formSubmit.emit(payload);
|
|
120
|
-
// Show loading indicator
|
|
173
|
+
const formValue = this.userRequestForm.getRawValue();
|
|
174
|
+
const { ConfirmPassword, ...payload } = formValue;
|
|
175
|
+
const payloadToSubmit = [payload];
|
|
176
|
+
this.formSubmit.emit(payloadToSubmit);
|
|
121
177
|
this.utilService.sendBI(true);
|
|
122
178
|
try {
|
|
123
|
-
|
|
124
|
-
const res = await this.server.post(`User/SaveUserAccessRequests`, payload);
|
|
125
|
-
// Hide loading indicator
|
|
179
|
+
const res = await this.server.post(`User/SaveUserAccessRequests`, payloadToSubmit);
|
|
126
180
|
this.utilService.sendBI(false);
|
|
127
181
|
if (res instanceof ErrorResponse) {
|
|
128
|
-
// Emit error response
|
|
129
182
|
this.onSubmitResponseEnd.emit(res);
|
|
130
183
|
console.log(res);
|
|
131
184
|
}
|
|
132
185
|
else {
|
|
133
|
-
// Emit success response
|
|
134
186
|
const result = res;
|
|
135
187
|
this.onSubmitResponseEnd.emit(result);
|
|
136
|
-
// Emit success event
|
|
137
188
|
this.onSubmitSuccess.emit(result);
|
|
138
189
|
}
|
|
139
190
|
}
|
|
140
191
|
catch (error) {
|
|
141
|
-
// Handle unexpected errors
|
|
142
192
|
this.utilService.sendBI(false);
|
|
143
193
|
console.error('Unexpected error:', error);
|
|
144
194
|
this.onSubmitResponseEnd.emit(error);
|
|
145
195
|
}
|
|
146
196
|
}
|
|
147
|
-
|
|
148
|
-
|
|
197
|
+
async verifyUserDetails() {
|
|
198
|
+
if (this.AuthMechanisms !== null && this.apiKey) {
|
|
199
|
+
const data = this.AuthMechanisms.find((item) => item.AuthMechanism.includes(MechanismType.Google));
|
|
200
|
+
const payload = {
|
|
201
|
+
AuthCode: this.code,
|
|
202
|
+
APIKey: this.apiKey,
|
|
203
|
+
AuthMechanism: data.AuthMechanism,
|
|
204
|
+
};
|
|
205
|
+
this.utilService.sendBI(true);
|
|
206
|
+
const res = await this.server.post(`Authentication/GetUserDetails`, payload);
|
|
207
|
+
this.utilService.sendBI(false);
|
|
208
|
+
if (res instanceof ErrorResponse) {
|
|
209
|
+
this.onSubmitGoogleAuth.emit(res);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
this.userRequestForm.controls['FirstName'].setValue(res.FirstName);
|
|
213
|
+
this.userRequestForm.controls['LastName'].setValue(res.LastName);
|
|
214
|
+
this.userRequestForm.controls['MailAddress'].setValue(res.Email);
|
|
215
|
+
this.userRequestForm.controls['SignUpType'].setValue(MechanismType.Google);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HttpWebRequestService }, { token: i3.UtilService }, { token: i4.EnvironmentService }, { token: i5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
220
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserRequestComponent, selector: "lib-user-request", inputs: { width: "width", headingTitle: "headingTitle", headingClass: "headingClass", customClass: "customClass", bgColor: "bgColor", boxShadow: "boxShadow", border: "border", borderRadius: "borderRadius", textColor: "textColor", height: "height", pd: "pd", text: "text", color: "color", btnBorder: "btnBorder", btnBorderRadius: "btnBorderRadius", btnBgColor: "btnBgColor", btnWidth: "btnWidth", btnPd: "btnPd", termsLink: "termsLink", privacyLink: "privacyLink", routerLink: "routerLink" }, outputs: { formSubmit: "formSubmit", googleClick: "googleClick", onSubmitSuccess: "onSubmitSuccess", appleClick: "appleClick", microsoftClick: "microsoftClick", onSubmitGoogleAuth: "onSubmitGoogleAuth", onSubmitResponseEnd: "onSubmitResponseEnd" }, ngImport: i0, template: "<section [ngStyle]=\"styles\" class=\"{{ customClass }}\">\n <h2 class=\"{{ headingClass }}\">\n {{ headingTitle }}\n </h2>\n\n <form\n [formGroup]=\"userRequestForm\"\n (ngSubmit)=\"submitForm()\"\n class=\"flex flex-col gap-5 mt-3\"\n >\n <verbena-input\n [label]=\"'First Name'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"FirstName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'Last Name'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"LastName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'E-mail Address'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"MailAddress\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [customErrorMessages]=\"{\n required: 'Email address is required',\n email: 'Email address must be valid'\n }\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [passwordToggle]=\"true\"\n formControlName=\"Password\"\n [required]=\"true\"\n [type]=\"'password'\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-input\n [label]=\"'Confirm Password'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"ConfirmPassword\"\n [showBorder]=\"true\"\n [passwordToggle]=\"true\"\n [bgColor]=\"'white'\"\n [minLength]=\"userRequestForm.controls['Password'].value?.length\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [customErrorMessages]=\"{\n minLength:'Confirm Password must match password',\n required: 'Confirm Password is required and must match password',\n password: 'Password does not match',\n }\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-button\n [class]=\"'mt-6'\"\n [disable]=\"!this.checkForm()\"\n [text]=\"text\"\n [bgColor]=\"btnBgColor\"\n [textColor]=\"color\"\n [buttonClass]=\"'cursor-not-allowed'\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [pd]=\"btnPd\"\n [ngClass]=\"{\n 'cursor-not-allowed':!checkForm()\n }\"\n [width]=\"btnWidth\"\n buttonClass=\"font-medium text-[22px] leading-[33px]\"\n ></verbena-button>\n\n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n (googleClick)=\"handleGoogleAuth()\"\n (appleClick)=\"handleAppleAuth()\"\n (microsoftClick)=\"handleMicrosoft()\"\n ></verben-o-auth>\n </div>\n <!-- <verbena-button\n svg=\"apple-logo\"\n (click)=\"handleAppleAuth()\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Apple\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n ></verbena-button> -->\n </form>\n\n \n</section>\n\n", styles: [".flex{display:flex}.items-center{align-items:center}.overflow-hidden{overflow:hidden}.justify-center{justify-content:center}.h-full{height:100%}.text-center{text-align:center}.underline{text-decoration:underline}.gap-5{gap:20px}.mt-4{margin-top:1rem}.space-y-4>:not([hidden])~:not([hidden]){margin-top:1rem}.gap-1>:not([hidden])~:not([hidden]){gap:.25rem}.pt-3{padding-top:.75rem}.mt-5{margin-top:1.25rem}.border{border-width:1px}.rounded-xl{border-radius:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.flex-col{flex-direction:column}.object-cover{object-fit:cover}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed!important}.accent{accent-color:#000}.OR{color:#666;gap:6px}.OR span{width:150px;border-top:2px solid #6666663d;display:block}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i6.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "svgPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "styleType", "svg", "svgWidth", "svgHeight", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i8.OAuthComponent, selector: "verben-o-auth", inputs: ["authMechanisms"], outputs: ["microsoftClick", "googleClick", "appleClick"] }] });
|
|
149
221
|
}
|
|
150
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestComponent, decorators: [{
|
|
151
223
|
type: Component,
|
|
152
|
-
args: [{ selector: 'lib-user-request', template: "<section [ngStyle]=\"styles\" class=\"{{ customClass }}\">\n <h2 class=\"{{ headingClass }}\">\n {{ headingTitle }}\n </h2>\n\n <form\n [formGroup]=\"userRequestForm\"\n (ngSubmit)=\"submitForm()\"\n class=\"flex flex-col gap-5 mt-3\"\n >\n <verbena-input\n [label]=\"'First Name'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"FirstName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'Last Name'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"LastName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'E-mail Address'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"
|
|
153
|
-
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.HttpWebRequestService }, { type: i3.UtilService }, { type: i4.EnvironmentService }], propDecorators: { width: [{
|
|
224
|
+
args: [{ selector: 'lib-user-request', template: "<section [ngStyle]=\"styles\" class=\"{{ customClass }}\">\n <h2 class=\"{{ headingClass }}\">\n {{ headingTitle }}\n </h2>\n\n <form\n [formGroup]=\"userRequestForm\"\n (ngSubmit)=\"submitForm()\"\n class=\"flex flex-col gap-5 mt-3\"\n >\n <verbena-input\n [label]=\"'First Name'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"FirstName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'Last Name'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'text'\"\n formControlName=\"LastName\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n <verbena-input\n [label]=\"'E-mail Address'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'email'\"\n formControlName=\"MailAddress\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [customErrorMessages]=\"{\n required: 'Email address is required',\n email: 'Email address must be valid'\n }\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-input\n [label]=\"'Password'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [passwordToggle]=\"true\"\n formControlName=\"Password\"\n [required]=\"true\"\n [type]=\"'password'\"\n [showBorder]=\"true\"\n [bgColor]=\"'white'\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-input\n [label]=\"'Confirm Password'\"\n [labelColor]=\"'#666'\"\n [placeHolder]=\"''\"\n [required]=\"true\"\n [type]=\"'password'\"\n formControlName=\"ConfirmPassword\"\n [showBorder]=\"true\"\n [passwordToggle]=\"true\"\n [bgColor]=\"'white'\"\n [minLength]=\"userRequestForm.controls['Password'].value?.length\"\n [border]=\"'1px solid #66666659'\"\n [borderRadius]=\"'12px'\"\n [showErrorMessage]=\"true\"\n [errorMessageColor]=\"'red'\"\n [customErrorMessages]=\"{\n minLength:'Confirm Password must match password',\n required: 'Confirm Password is required and must match password',\n password: 'Password does not match',\n }\"\n [errorBorderColor]=\"'red'\"\n [errorPosition]=\"'bottom'\"\n class=\"outline-none focus-none\"\n ></verbena-input>\n\n <verbena-button\n [class]=\"'mt-6'\"\n [disable]=\"!this.checkForm()\"\n [text]=\"text\"\n [bgColor]=\"btnBgColor\"\n [textColor]=\"color\"\n [buttonClass]=\"'cursor-not-allowed'\"\n [border]=\"btnBorder\"\n [borderRadius]=\"btnBorderRadius\"\n [pd]=\"btnPd\"\n [ngClass]=\"{\n 'cursor-not-allowed':!checkForm()\n }\"\n [width]=\"btnWidth\"\n buttonClass=\"font-medium text-[22px] leading-[33px]\"\n ></verbena-button>\n\n <div *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n (googleClick)=\"handleGoogleAuth()\"\n (appleClick)=\"handleAppleAuth()\"\n (microsoftClick)=\"handleMicrosoft()\"\n ></verben-o-auth>\n </div>\n <!-- <verbena-button\n svg=\"apple-logo\"\n (click)=\"handleAppleAuth()\"\n [svgHeight]=\"24\"\n [svgWidth]=\"24\"\n text=\"Continue with Apple\"\n bgColor=\"white\"\n textColor=\"black\"\n border=\"1px solid #333\"\n borderRadius=\"40px\"\n pd=\"10px 20px\"\n width=\"100%\"\n svgPosition=\"left\"\n buttonClass=\"font-normal text-[24px] leading-[29.05px] text-[#333] mt-2\"\n ></verbena-button> -->\n </form>\n\n \n</section>\n\n", styles: [".flex{display:flex}.items-center{align-items:center}.overflow-hidden{overflow:hidden}.justify-center{justify-content:center}.h-full{height:100%}.text-center{text-align:center}.underline{text-decoration:underline}.gap-5{gap:20px}.mt-4{margin-top:1rem}.space-y-4>:not([hidden])~:not([hidden]){margin-top:1rem}.gap-1>:not([hidden])~:not([hidden]){gap:.25rem}.pt-3{padding-top:.75rem}.mt-5{margin-top:1.25rem}.border{border-width:1px}.rounded-xl{border-radius:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.flex-col{flex-direction:column}.object-cover{object-fit:cover}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed!important}.accent{accent-color:#000}.OR{color:#666;gap:6px}.OR span{width:150px;border-top:2px solid #6666663d;display:block}\n"] }]
|
|
225
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.HttpWebRequestService }, { type: i3.UtilService }, { type: i4.EnvironmentService }, { type: i5.ActivatedRoute }], propDecorators: { width: [{
|
|
154
226
|
type: Input
|
|
155
227
|
}], headingTitle: [{
|
|
156
228
|
type: Input
|
|
@@ -200,7 +272,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
200
272
|
type: Output
|
|
201
273
|
}], appleClick: [{
|
|
202
274
|
type: Output
|
|
275
|
+
}], microsoftClick: [{
|
|
276
|
+
type: Output
|
|
277
|
+
}], onSubmitGoogleAuth: [{
|
|
278
|
+
type: Output
|
|
203
279
|
}], onSubmitResponseEnd: [{
|
|
204
280
|
type: Output
|
|
205
281
|
}] } });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXF1ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1yZXF1ZXN0L3VzZXItcmVxdWVzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcmVxdWVzdC91c2VyLXJlcXVlc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBS0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQU81RCxNQUFNLE9BQU8sb0JBQW9CO0lBaUNyQjtJQUNBO0lBQ0E7SUFDQTtJQW5DRCxLQUFLLEdBQVcsT0FBTyxDQUFDO0lBQ3hCLFlBQVksR0FBVyxvQkFBb0IsQ0FBQztJQUM1QyxZQUFZLEdBQ25CLG9EQUFvRCxDQUFDO0lBQzlDLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsT0FBTyxHQUFXLE1BQU0sQ0FBQztJQUN6QixTQUFTLEdBQVcsaUNBQWlDLENBQUM7SUFDdEQsTUFBTSxHQUFXLHFCQUFxQixDQUFDO0lBQ3ZDLFlBQVksR0FBVyxNQUFNLENBQUM7SUFDOUIsU0FBUyxHQUFXLE1BQU0s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QztZQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7d0dBOUlVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLGl0QkN0QmpDLGk4SkFxS0E7OzRGRC9JYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCOytLQUtuQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBIdHRwV2ViUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwLXdlYi1yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyUmVxdWVzdFBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlclJlcXVlc3QnO1xuaW1wb3J0IHsgT2JqZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvb2JqZWN0LXN0YXRlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNlS2V5VmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVzcG9uc2VLZXlWYWx1ZSc7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Vycm9yUmVzcG9uc2UnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0YXR1cyc7XG5pbXBvcnQgeyBSZXF1ZXN0U3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlcXVlc3Qtc3RhdHVzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXVzZXItcmVxdWVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLXJlcXVlc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLXJlcXVlc3QuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyUmVxdWVzdENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnNTAwcHgnO1xuICBASW5wdXQoKSBoZWFkaW5nVGl0bGU6IHN0cmluZyA9ICdSZXF1ZXN0IGFuIGFjY291bnQnO1xuICBASW5wdXQoKSBoZWFkaW5nQ2xhc3M6IHN0cmluZyA9XG4gICAgJ2ZvbnQtbWVkaXVtIHRleHQtWzJyZW1dIGxlYWRpbmctWzQ4cHhdIHRleHQtWyMzMzNdJztcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBiZ0NvbG9yOiBzdHJpbmcgPSAnI2ZmZic7XG4gIEBJbnB1dCgpIGJveFNoYWRvdzogc3RyaW5nID0gJzRweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSknO1xuICBASW5wdXQoKSBib3JkZXI6IHN0cmluZyA9ICcxcHggc29saWQgIzY2NjY2NjgwJztcbiAgQElucHV0KCkgYm9yZGVyUmFkaXVzOiBzdHJpbmcgPSAnMjRweCc7XG4gIEBJbnB1dCgpIHRleHRDb2xvcjogc3RyaW5nID0gJyMzMzMnO1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9ICdhdXRvJztcbiAgQElucHV0KCkgcGQ6IHN0cmluZyA9ICczMnB4IDQ4cHgnO1xuYXBpS2V5OnN0cmluZz0nJ1xuICAvLyBCdXR0b24gSW5wdXRzXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICdTZW5kIFJlcXVlc3QnO1xuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nID0gJ2JsYWNrJztcbiAgQElucHV0KCkgYnRuQm9yZGVyOiBzdHJpbmcgPSAnMXB4IHNvbGlkICNGRkU2ODEnO1xuICBASW5wdXQoKSBidG5Cb3JkZXJSYWRpdXM6IHN0cmluZyA9ICc0MHB4JztcbiAgQElucHV0KCkgYnRuQmdDb2xvcjogc3RyaW5nID0gJyNGRkU2ODEnO1xuICBASW5wdXQoKSBidG5XaWR0aDogc3RyaW5nID0gJzEwMCUnO1xuICBASW5wdXQoKSBidG5QZDogc3RyaW5nID0gJzEwcHggMjBweCc7XG4gIEBJbnB1dCgpIHRlcm1zTGluazogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHByaXZhY3lMaW5rOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcm91dGVyTGluazogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBmb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyUmVxdWVzdFBheWxvYWRbXT4oKTtcbiAgQE91dHB1dCgpIGdvb2dsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXRTdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBhcHBsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXRSZXNwb25zZUVuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHVzZXJSZXF1ZXN0Rm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgc2VydmVyOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5hcGlLZXkgPSAgdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5XG4gICAgdGhpcy51c2VyUmVxdWVzdEZvcm0gPSB0aGlzLmZiLmdyb3VwKFxuICAgICAge1xuICAgICAgICBGaXJzdE5hbWU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICBMYXN0TmFtZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgIEVtYWlsOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgICAgUGFzc3dvcmQ6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCldXSxcbiAgICAgICAgQ29uZmlybVBhc3N3b3JkOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIH0sXG4gICAgICB7IHZhbGlkYXRvcnM6IHRoaXMucGFzc3dvcmRNYXRjaFZhbGlkYXRvciB9XG4gICAgKTtcbiAgfVxuICBwYXNzd29yZE1hdGNoVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRyb2wuZ2V0KCdQYXNzd29yZCcpPy52YWx1ZTtcbiAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSBjb250cm9sLmdldCgnQ29uZmlybVBhc3N3b3JkJyk/LnZhbHVlO1xuXG4gICAgcmV0dXJuIHBhc3N3b3JkID09PSBjb25maXJtUGFzc3dvcmQgPyBudWxsIDogeyBwYXNzd29yZE1pc21hdGNoOiB0cnVlIH07XG4gIH1cblxuICBnZXQgcGFzc3dvcmRNaXNtYXRjaEVycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5oYXNFcnJvcigncGFzc3dvcmRNaXNtYXRjaCcpO1xuICB9XG4gIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogdGhpcy5iZ0NvbG9yLFxuICAgICAgJ2JveC1zaGFkb3cnOiB0aGlzLmJveFNoYWRvdyxcbiAgICAgIGJvcmRlcjogdGhpcy5ib3JkZXIsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6IHRoaXMuYm9yZGVyUmFkaXVzLFxuICAgICAgY29sb3I6IHRoaXMudGV4dENvbG9yLFxuICAgICAgJ21heC13aWR0aCc6IHRoaXMud2lkdGgsXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgcGFkZGluZzogdGhpcy5wZCxcbiAgICB9O1xuICB9XG4gIGNoZWNrRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyUmVxdWVzdEZvcm0udmFsaWQ7XG4gIH1cbiAgaGFuZGxlR29vZ2xlQXV0aCgpIHtcbiAgICB0aGlzLmdvb2dsZUNsaWNrLmVtaXQoKTtcbiAgfVxuICBoYW5kbGVBcHBsZUF1dGgoKSB7XG4gICAgdGhpcy5hcHBsZUNsaWNrLmVtaXQoKTtcbiAgfVxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xuICAgIGlmICghdGhpcy5jaGVja0Zvcm0oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgY29uc3QgcGF5bG9hZDogVXNlclJlcXVlc3RQYXlsb2FkW10gPSBbXG4gICAgICB7XG4gICAgICAgIENvZGU6ICcnLFxuICAgICAgICBGaXJzdE5hbWU6IHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydGaXJzdE5hbWUnXS52YWx1ZSxcbiAgICAgICAgTGFzdE5hbWU6IHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydMYXN0TmFtZSddLnZhbHVlLFxuICAgICAgICBNYWlsQWRkcmVzczogdGhpcy51c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbJ0VtYWlsJ10udmFsdWUsXG4gICAgICAgIFBhc3N3b3JkOiB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snUGFzc3dvcmQnXS52YWx1ZSxcbiAgICAgICAgUGhvbmVOdW1iZXI6ICcnLFxuICAgICAgICBPdGhlck5hbWU6ICcnLFxuICAgICAgICBSb2xlOiBbXSxcbiAgICAgICAgVGFnczogW10sXG4gICAgICAgIFN0YXR1czogU3RhdHVzLkFjdGl2ZSxcbiAgICAgICAgUmVxdWVzdFN0YXR1czogUmVxdWVzdFN0YXR1cy5QZW5kaW5nLFxuICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgSWQ6ICcnLFxuICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgVGVuYW50SWQ6ICcnLFxuICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgIEFjdGlvbkJ5OiAnJyxcbiAgICAgICAgQ29tbWVudDogJycsXG4gICAgICB9LFxuICAgIF07XG4gIFxuICAgIC8vIEVtaXQgcGF5bG9hZCBpZiBuZWVkZWRcbiAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdChwYXlsb2FkKTtcbiAgXG4gICAgLy8gU2hvdyBsb2FkaW5nIGluZGljYXRvclxuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICBcbiAgICB0cnkge1xuICAgICAgLy8gTWFrZSB0aGUgQVBJIGNhbGxcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoYFVzZXIvU2F2ZVVzZXJBY2Nlc3NSZXF1ZXN0c2AsIHBheWxvYWQpO1xuICBcbiAgICAgIC8vIEhpZGUgbG9hZGluZyBpbmRpY2F0b3JcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAvLyBFbWl0IGVycm9yIHJlc3BvbnNlXG4gICAgICAgIHRoaXMub25TdWJtaXRSZXNwb25zZUVuZC5lbWl0KHJlcyk7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbWl0IHN1Y2Nlc3MgcmVzcG9uc2VcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzIGFzIFJlc3BvbnNlS2V5VmFsdWU7XG4gICAgICAgIHRoaXMub25TdWJtaXRSZXNwb25zZUVuZC5lbWl0KHJlc3VsdCk7XG4gIFxuICAgICAgICAvLyBFbWl0IHN1Y2Nlc3MgZXZlbnRcbiAgICAgICAgdGhpcy5vblN1Ym1pdFN1Y2Nlc3MuZW1pdChyZXN1bHQpO1xuXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEhhbmRsZSB1bmV4cGVjdGVkIGVycm9yc1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgY29uc29sZS5lcnJvcignVW5leHBlY3RlZCBlcnJvcjonLCBlcnJvcik7XG4gICAgICB0aGlzLm9uU3VibWl0UmVzcG9uc2VFbmQuZW1pdChlcnJvcik7XG4gICAgfVxuICB9XG4gIFxufVxuIiwiPHNlY3Rpb24gW25nU3R5bGVdPVwic3R5bGVzXCIgY2xhc3M9XCJ7eyBjdXN0b21DbGFzcyB9fVwiPlxuICA8aDIgY2xhc3M9XCJ7eyBoZWFkaW5nQ2xhc3MgfX1cIj5cbiAgICB7eyBoZWFkaW5nVGl0bGUgfX1cbiAgPC9oMj5cblxuICA8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwidXNlclJlcXVlc3RGb3JtXCJcbiAgICAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTUgbXQtM1wiXG4gID5cbiAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgW2xhYmVsXT1cIidGaXJzdCBOYW1lJ1wiXG4gICAgICBbbGFiZWxDb2xvcl09XCInIzY2NidcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIicnXCJcbiAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJGaXJzdE5hbWVcIlxuICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICBbYmdDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjNjY2NjY2NTknXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzEycHgnXCJcbiAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgIFtsYWJlbF09XCInTGFzdCBOYW1lJ1wiXG4gICAgICBbbGFiZWxDb2xvcl09XCInIzY2NidcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIicnXCJcbiAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJMYXN0TmFtZVwiXG4gICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtiZ0NvbG9yXT1cIid3aGl0ZSdcIlxuICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkICM2NjY2NjY1OSdcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCInMTJweCdcIlxuICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgPjwvdmVyYmVuYS1pbnB1dD5cbiAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgW2xhYmVsXT1cIidFLW1haWwgQWRkcmVzcydcIlxuICAgICAgW2xhYmVsQ29sb3JdPVwiJyM2NjYnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdHlwZV09XCInZW1haWwnXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIkVtYWlsXCJcbiAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgW2JnQ29sb3JdPVwiJ3doaXRlJ1wiXG4gICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgIzY2NjY2NjU5J1wiXG4gICAgICBbYm9yZGVyUmFkaXVzXT1cIicxMnB4J1wiXG4gICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgIFtjdXN0b21FcnJvck1lc3NhZ2VzXT1cIntcbiAgICAgICAgcmVxdWlyZWQ6ICdFbWFpbCBhZGRyZXNzIGlzIHJlcXVpcmVkJyxcbiAgICAgICAgZW1haWw6ICdFbWFpbCBhZGRyZXNzIG11c3QgYmUgdmFsaWQnXG4gICAgICB9XCJcbiAgICAgIFtlcnJvck1lc3NhZ2VDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JCb3JkZXJDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICBjbGFzcz1cIm91dGxpbmUtbm9uZSBmb2N1cy1ub25lXCJcbiAgICA+PC92ZXJiZW5hLWlucHV0PlxuXG4gICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgIFtsYWJlbF09XCInUGFzc3dvcmQnXCJcbiAgICAgIFtsYWJlbENvbG9yXT1cIicjNjY2J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgW3Bhc3N3b3JkVG9nZ2xlXT1cInRydWVcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiUGFzc3dvcmRcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3R5cGVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtiZ0NvbG9yXT1cIid3aGl0ZSdcIlxuICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkICM2NjY2NjY1OSdcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCInMTJweCdcIlxuICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICBbbGFiZWxdPVwiJ0NvbmZpcm0gUGFzc3dvcmQnXCJcbiAgICAgIFtsYWJlbENvbG9yXT1cIicjNjY2J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3R5cGVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJDb25maXJtUGFzc3dvcmRcIlxuICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICBbcGFzc3dvcmRUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICBbYmdDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgIFttaW5MZW5ndGhdPVwidXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydQYXNzd29yZCddLnZhbHVlPy5sZW5ndGhcIlxuICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkICM2NjY2NjY1OSdcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCInMTJweCdcIlxuICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2N1c3RvbUVycm9yTWVzc2FnZXNdPVwie1xuICAgICAgICBtaW5MZW5ndGg6J0NvbmZpcm0gUGFzc3dvcmQgbXVzdCBtYXRjaCBwYXNzd29yZCcsXG4gICAgICAgIHJlcXVpcmVkOiAnQ29uZmlybSBQYXNzd29yZCBpcyByZXF1aXJlZCBhbmQgbXVzdCBtYXRjaCBwYXNzd29yZCcsXG4gICAgICAgIHBhc3N3b3JkOiAnUGFzc3dvcmQgZG9lcyBub3QgbWF0Y2gnLFxuICAgICAgfVwiXG4gICAgICBbZXJyb3JCb3JkZXJDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICBjbGFzcz1cIm91dGxpbmUtbm9uZSBmb2N1cy1ub25lXCJcbiAgICA+PC92ZXJiZW5hLWlucHV0PlxuXG4gICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgW2NsYXNzXT1cIidtdC02J1wiXG4gICAgICBbZGlzYWJsZV09XCIhdGhpcy5jaGVja0Zvcm0oKVwiXG4gICAgICBbdGV4dF09XCJ0ZXh0XCJcbiAgICAgIFtiZ0NvbG9yXT1cImJ0bkJnQ29sb3JcIlxuICAgICAgW3RleHRDb2xvcl09XCJjb2xvclwiXG4gICAgICBbYnV0dG9uQ2xhc3NdPVwiJ2N1cnNvci1ub3QtYWxsb3dlZCdcIlxuICAgICAgW2JvcmRlcl09XCJidG5Cb3JkZXJcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCJidG5Cb3JkZXJSYWRpdXNcIlxuICAgICAgW3BkXT1cImJ0blBkXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAnY3Vyc29yLW5vdC1hbGxvd2VkJzohY2hlY2tGb3JtKClcbiAgICAgIH1cIlxuICAgICAgW3dpZHRoXT1cImJ0bldpZHRoXCJcbiAgICAgIGJ1dHRvbkNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1bMjJweF0gbGVhZGluZy1bMzNweF1cIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBPUlwiPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgT1JcbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIHN2Zz1cImdvb2dsZS1sb2dvXCJcbiAgICAgIFtzdmdIZWlnaHRdPVwiMjRcIlxuICAgICAgW3N2Z1dpZHRoXT1cIjI0XCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVHb29nbGVBdXRoKClcIlxuICAgICAgdGV4dD1cIkNvbnRpbnVlIHdpdGggR29vZ2xlXCJcbiAgICAgIGJnQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICBib3JkZXI9XCIxcHggc29saWQgIzMzM1wiXG4gICAgICBib3JkZXJSYWRpdXM9XCI0MHB4XCJcbiAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICBzdmdQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgYnV0dG9uQ2xhc3M9XCJmb250LW5vcm1hbCB0ZXh0LVsyNHB4XSBsZWFkaW5nLVsyOS4wNXB4XSB0ZXh0LVsjMzMzXVwiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIHN2Zz1cImFwcGxlLWxvZ29cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUFwcGxlQXV0aCgpXCJcbiAgICAgIFtzdmdIZWlnaHRdPVwiMjRcIlxuICAgICAgW3N2Z1dpZHRoXT1cIjI0XCJcbiAgICAgIHRleHQ9XCJDb250aW51ZSB3aXRoIEFwcGxlXCJcbiAgICAgIGJnQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICBib3JkZXI9XCIxcHggc29saWQgIzMzM1wiXG4gICAgICBib3JkZXJSYWRpdXM9XCI0MHB4XCJcbiAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICBzdmdQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgYnV0dG9uQ2xhc3M9XCJmb250LW5vcm1hbCB0ZXh0LVsyNHB4XSBsZWFkaW5nLVsyOS4wNXB4XSB0ZXh0LVsjMzMzXSBtdC0yXCJcbiAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgPC9mb3JtPlxuPC9zZWN0aW9uPlxuIl19
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXF1ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1yZXF1ZXN0L3VzZXItcmVxdWVzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcmVxdWVzdC91c2VyLXJlcXVlc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBR0wsV0FBVyxFQUdYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7O0FBUzNFLE1BQU0sT0FBTyxvQkFBb0I7SUF3Q3JCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUEzQ0QsS0FBSyxHQUFXLE9BQU8sQ0FBQztJQUN4QixZQUFZLEdBQVcsb0JBQW9CLENBQUM7SUFDNUMsWUFBWSxHQUNuQixvREFBb0QsQ0FBQztJQUM5QyxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLE9BQU8sR0FBVyxNQUFNLENBQUM7SUFDekIsU0FBUyxHQUFXLGlDQUFpQyxDQUFDO0lBQ3RELE1BQU0sR0FB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dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBIdHRwV2ViUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwLXdlYi1yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclJlcXVlc3RQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJSZXF1ZXN0JztcbmltcG9ydCB7IE9iamVjdFN0YXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL29iamVjdC1zdGF0ZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zZUtleVZhbHVlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1Jlc3BvbnNlS2V5VmFsdWUnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9FcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9zdGF0dXMnO1xuaW1wb3J0IHsgUmVxdWVzdFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9yZXF1ZXN0LXN0YXR1cyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhNZWNoYW5pc20sIE1lY2hhbmlzbVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXV0aC1tZWNoYW5pc20nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT0F1dGhSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9vYXV0aC1yZXNwb25zZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi11c2VyLXJlcXVlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1yZXF1ZXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1yZXF1ZXN0LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlclJlcXVlc3RDb21wb25lbnQge1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzUwMHB4JztcbiAgQElucHV0KCkgaGVhZGluZ1RpdGxlOiBzdHJpbmcgPSAnUmVxdWVzdCBhbiBhY2NvdW50JztcbiAgQElucHV0KCkgaGVhZGluZ0NsYXNzOiBzdHJpbmcgPVxuICAgICdmb250LW1lZGl1bSB0ZXh0LVsycmVtXSBsZWFkaW5nLVs0OHB4XSB0ZXh0LVsjMzMzXSc7XG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYmdDb2xvcjogc3RyaW5nID0gJyNmZmYnO1xuICBASW5wdXQoKSBib3hTaGFkb3c6IHN0cmluZyA9ICc0cHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMjUpJztcbiAgQElucHV0KCkgYm9yZGVyOiBzdHJpbmcgPSAnMXB4IHNvbGlkICM2NjY2NjY4MCc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czogc3RyaW5nID0gJzI0cHgnO1xuICBASW5wdXQoKSB0ZXh0Q29sb3I6IHN0cmluZyA9ICcjMzMzJztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnYXV0byc7XG4gIEBJbnB1dCgpIHBkOiBzdHJpbmcgPSAnMzJweCA0OHB4JztcbiAgaXNGb3JtRWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBhcGlLZXk6IHN0cmluZyA9ICcnO1xuICBpc0NvZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJ1NlbmQgUmVxdWVzdCc7XG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmcgPSAnYmxhY2snO1xuICBASW5wdXQoKSBidG5Cb3JkZXI6IHN0cmluZyA9ICcxcHggc29saWQgI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIGJ0bkJvcmRlclJhZGl1czogc3RyaW5nID0gJzQwcHgnO1xuICBASW5wdXQoKSBidG5CZ0NvbG9yOiBzdHJpbmcgPSAnI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIGJ0bldpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XG4gIEBJbnB1dCgpIGJ0blBkOiBzdHJpbmcgPSAnMTBweCAyMHB4JztcbiAgQElucHV0KCkgdGVybXNMaW5rOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHJpdmFjeUxpbms6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJSZXF1ZXN0UGF5bG9hZFtdPigpO1xuICBAT3V0cHV0KCkgZ29vZ2xlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblN1Ym1pdFN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFwcGxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBtaWNyb3NvZnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0R29vZ2xlQXV0aDogRXZlbnRFbWl0dGVyPFJlc3BvbnNlS2V5VmFsdWUgfCBFcnJvclJlc3BvbnNlPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXRSZXNwb25zZUVuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHVzZXJSZXF1ZXN0Rm9ybTogRm9ybUdyb3VwO1xuICB0ZW5hbnREZXRhaWxzOiBhbnkgfCBudWxsID0gbnVsbDtcbiAgQXV0aE1lY2hhbmlzbXM6IEF1dGhNZWNoYW5pc21bXSB8IG51bGwgPSBudWxsO1xuICBzaG93Zm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICBjb2RlOiBzdHJpbmcgPSAnJztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBzZXJ2ZXI6IEh0dHBXZWJSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIGVudlN2YzogRW52aXJvbm1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMuYXBpS2V5ID0gdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5O1xuICAgIFxuICAgIHRoaXMudXNlclJlcXVlc3RGb3JtID0gdGhpcy5mYi5ncm91cDx7XG4gICAgICBbSyBpbiBrZXlvZiBVc2VyUmVxdWVzdFBheWxvYWRdOiBGb3JtQ29udHJvbDxVc2VyUmVxdWVzdFBheWxvYWRbS10+O1xuICAgIH0+KFxuICAgICAge1xuICAgICAgICBDb2RlOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIEZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgICAgICAgbm9uTnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB9KSxcbiAgICAgICAgTGFzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgfSksXG4gICAgICAgIE1haWxBZGRyZXNzOiBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0sXG4gICAgICAgIH0pLFxuICAgICAgICBQYXNzd29yZDogbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgICAgICAgbm9uTnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpXSxcbiAgICAgICAgfSksXG4gICAgICAgIFBob25lTnVtYmVyOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIE90aGVyTmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBSb2xlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nW10+KFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBUYWdzOiBuZXcgRm9ybUNvbnRyb2w8W10+KFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBTdGF0dXM6IG5ldyBGb3JtQ29udHJvbDxTdGF0dXM+KFN0YXR1cy5BY3RpdmUsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIFJlcXVlc3RTdGF0dXM6IG5ldyBGb3JtQ29udHJvbDxSZXF1ZXN0U3RhdHVzPihSZXF1ZXN0U3RhdHVzLlBlbmRpbmcsIHtcbiAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIFVwZGF0ZWRBdDogbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIENyZWF0ZWRBdDogbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIElkOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIERhdGFTdGF0ZTogbmV3IEZvcm1Db250cm9sPE9iamVjdFN0YXRlPihPYmplY3RTdGF0ZS5OZXcsIHtcbiAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIFRlbmFudElkOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIFNpZ25VcFR5cGU6IG5ldyBGb3JtQ29udHJvbChNZWNoYW5pc21UeXBlLkluQXBwLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBTZXJ2aWNlTmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBBY3Rpb25CeTogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBDb21tZW50OiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICB9LFxuICAgICAgeyB2YWxpZGF0b3JzOiB0aGlzLnBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IgfVxuICAgICk7XG4gIH1cbiAgcGFzc3dvcmRNYXRjaFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG5cbiAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRyb2wuZ2V0KCdQYXNzd29yZCcpPy52YWx1ZTtcbiAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSBjb250cm9sLmdldCgnQ29uZmlybVBhc3N3b3JkJyk/LnZhbHVlO1xuXG4gICAgcmV0dXJuIHBhc3N3b3JkID09PSBjb25maXJtUGFzc3dvcmQgPyBudWxsIDogeyBwYXNzd29yZE1pc21hdGNoOiB0cnVlIH07XG4gIH1cblxuICBnZXQgcGFzc3dvcmRNaXNtYXRjaEVycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5oYXNFcnJvcigncGFzc3dvcmRNaXNtYXRjaCcpO1xuICB9XG5cbiAgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLmJnQ29sb3IsXG4gICAgICAnYm94LXNoYWRvdyc6IHRoaXMuYm94U2hhZG93LFxuICAgICAgYm9yZGVyOiB0aGlzLmJvcmRlcixcbiAgICAgICdib3JkZXItcmFkaXVzJzogdGhpcy5ib3JkZXJSYWRpdXMsXG4gICAgICBjb2xvcjogdGhpcy50ZXh0Q29sb3IsXG4gICAgICAnbWF4LXdpZHRoJzogdGhpcy53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICBwYWRkaW5nOiB0aGlzLnBkLFxuICAgIH07XG4gIH1cbiAgYXN5bmMgIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHRoaXMuZ2V0VGVuYW50Q29uZmlnKCk7IFxuICAgXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIHRoaXMuY29kZSA9IHBhcmFtc1snY29kZSddO1xuICAgICAgY29uc29sZS5sb2codGhpcy5jb2RlLCdjb2RlJyk7XG4gICAgICBcbiAgICAgIGlmICh0aGlzLmNvZGUpIHtcbiAgICAgICAgdGhpcy52ZXJpZnlVc2VyRGV0YWlscygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgXG4gIH1cblxuICBhc3luYyBnZXRUZW5hbnRDb25maWcoKSB7XG4gICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uYWRkQ29udHJvbChcbiAgICAgICdDb25maXJtUGFzc3dvcmQnLFxuICAgICAgbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIuZ2V0KFxuICAgICAgYFRlbmFudC9HZXRUZW5hbnRDb25maWdCeUtleS8ke3RoaXMuYXBpS2V5fWBcbiAgICApO1xuICAgIHRoaXMudGVuYW50RGV0YWlscyA9IHJlcztcbiAgICB0aGlzLkF1dGhNZWNoYW5pc21zID0gdGhpcy50ZW5hbnREZXRhaWxzPy5BdXRoTWVjaGFuaXNtcztcbiAgICBpZiAoXG4gICAgICAhdGhpcy50ZW5hbnREZXRhaWxzPy5BdXRoTWVjaGFuaXNtICYmXG4gICAgICB0aGlzLnRlbmFudERldGFpbHM/LkF1dGhNZWNoYW5pc20gIT09IE1lY2hhbmlzbVR5cGUuSW5BcHBcbiAgICApIHtcbiAgICAgIHRoaXMuc2hvd2Zvcm0gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudGVuYW50RGV0YWlscz8uQXV0aE1lY2hhbmlzbSA9PT0gTWVjaGFuaXNtVHlwZS5JbkFwcCkge1xuICAgICAgdGhpcy5zaG93Zm9ybSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLkF1dGhNZWNoYW5pc21zICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnNob3dmb3JtID0gdGhpcy5BdXRoTWVjaGFuaXNtcy5zb21lKChpdGVtKSA9PlxuICAgICAgICBpdGVtLkF1dGhNZWNoYW5pc20uaW5jbHVkZXMoTWVjaGFuaXNtVHlwZS5JbkFwcClcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGNoZWNrRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyUmVxdWVzdEZvcm0udmFsaWQ7XG4gIH1cbiAgaGFuZGxlR29vZ2xlQXV0aCgpIHtcbiAgICBpZiAodGhpcy5BdXRoTWVjaGFuaXNtcyAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuQXV0aE1lY2hhbmlzbXMuZmlsdGVyKFxuICAgICAgICAoaXRlbSkgPT4gaXRlbS5BdXRoTWVjaGFuaXNtID09PSBNZWNoYW5pc21UeXBlLkdvb2dsZVxuICAgICAgKTtcbiAgICAgIHRoaXMuZ29vZ2xlQ2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVBcHBsZUF1dGgoKSB7XG4gICAgdGhpcy5hcHBsZUNsaWNrLmVtaXQoKTtcbiAgfVxuICBoYW5kbGVNaWNyb3NvZnQoKSB7XG4gICAgaWYgKHRoaXMuQXV0aE1lY2hhbmlzbXMgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLkF1dGhNZWNoYW5pc21zLmZpbHRlcihcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0uQXV0aE1lY2hhbmlzbSA9PT0gTWVjaGFuaXNtVHlwZS5NaWNyb3NvZnRBRFxuICAgICAgKTtcbiAgICAgIHRoaXMubWljcm9zb2Z0Q2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XG4gICAgaWYgKCF0aGlzLmNoZWNrRm9ybSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy51c2VyUmVxdWVzdEZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBjb25zdCB7IENvbmZpcm1QYXNzd29yZCwgLi4ucGF5bG9hZCB9ID0gZm9ybVZhbHVlO1xuXG4gICAgY29uc3QgcGF5bG9hZFRvU3VibWl0OiBVc2VyUmVxdWVzdFBheWxvYWRbXSA9IFtwYXlsb2FkXTtcblxuICAgIHRoaXMuZm9ybVN1Ym1pdC5lbWl0KHBheWxvYWRUb1N1Ym1pdCk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChcbiAgICAgICAgYFVzZXIvU2F2ZVVzZXJBY2Nlc3NSZXF1ZXN0c2AsXG4gICAgICAgIHBheWxvYWRUb1N1Ym1pdFxuICAgICAgKTtcblxuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLm9uU3VibWl0UmVzcG9uc2VFbmQuZW1pdChyZXMpO1xuICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzIGFzIFJlc3BvbnNlS2V5VmFsdWU7XG4gICAgICAgIHRoaXMub25TdWJtaXRSZXNwb25zZUVuZC5lbWl0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMub25TdWJtaXRTdWNjZXNzLmVtaXQocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgY29uc29sZS5lcnJvcignVW5leHBlY3RlZCBlcnJvcjonLCBlcnJvcik7XG4gICAgICB0aGlzLm9uU3VibWl0UmVzcG9uc2VFbmQuZW1pdChlcnJvcik7XG4gICAgfVxuICB9XG4gIGFzeW5jIHZlcmlmeVVzZXJEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLkF1dGhNZWNoYW5pc21zICE9PSBudWxsICYmIHRoaXMuYXBpS2V5KSB7XG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSB0aGlzLkF1dGhNZWNoYW5pc21zLmZpbmQoKGl0ZW0pID0+XG4gICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyhNZWNoYW5pc21UeXBlLkdvb2dsZSlcbiAgICAgICk7XG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBBdXRoQ29kZTogdGhpcy5jb2RlLFxuICAgICAgICBBUElLZXk6IHRoaXMuYXBpS2V5LFxuICAgICAgICBBdXRoTWVjaGFuaXNtOiBkYXRhLkF1dGhNZWNoYW5pc20sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICAgIGNvbnN0IHJlczogT0F1dGhSZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoXG4gICAgICAgIGBBdXRoZW50aWNhdGlvbi9HZXRVc2VyRGV0YWlsc2AsXG4gICAgICAgIHBheWxvYWRcbiAgICAgICk7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLm9uU3VibWl0R29vZ2xlQXV0aC5lbWl0KHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snRmlyc3ROYW1lJ10uc2V0VmFsdWUocmVzLkZpcnN0TmFtZSk7XG4gICAgICAgIHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydMYXN0TmFtZSddLnNldFZhbHVlKHJlcy5MYXN0TmFtZSk7XG4gICAgICAgIHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydNYWlsQWRkcmVzcyddLnNldFZhbHVlKHJlcy5FbWFpbCk7XG4gICAgICAgIHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydTaWduVXBUeXBlJ10uc2V0VmFsdWUoXG4gICAgICAgICAgTWVjaGFuaXNtVHlwZS5Hb29nbGVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uIFtuZ1N0eWxlXT1cInN0eWxlc1wiIGNsYXNzPVwie3sgY3VzdG9tQ2xhc3MgfX1cIj5cbiAgPGgyIGNsYXNzPVwie3sgaGVhZGluZ0NsYXNzIH19XCI+XG4gICAge3sgaGVhZGluZ1RpdGxlIH19XG4gIDwvaDI+XG5cbiAgPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cInVzZXJSZXF1ZXN0Rm9ybVwiXG4gICAgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01IG10LTNcIlxuICA+XG4gICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgIFtsYWJlbF09XCInRmlyc3QgTmFtZSdcIlxuICAgICAgW2xhYmVsQ29sb3JdPVwiJyM2NjYnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRmlyc3ROYW1lXCJcbiAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgW2JnQ29sb3JdPVwiJ3doaXRlJ1wiXG4gICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgIzY2NjY2NjU5J1wiXG4gICAgICBbYm9yZGVyUmFkaXVzXT1cIicxMnB4J1wiXG4gICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgIFtlcnJvck1lc3NhZ2VDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JCb3JkZXJDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICBjbGFzcz1cIm91dGxpbmUtbm9uZSBmb2N1cy1ub25lXCJcbiAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICBbbGFiZWxdPVwiJ0xhc3QgTmFtZSdcIlxuICAgICAgW2xhYmVsQ29sb3JdPVwiJyM2NjYnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTGFzdE5hbWVcIlxuICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICBbYmdDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjNjY2NjY2NTknXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzEycHgnXCJcbiAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgIFtsYWJlbF09XCInRS1tYWlsIEFkZHJlc3MnXCJcbiAgICAgIFtsYWJlbENvbG9yXT1cIicjNjY2J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3R5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWlsQWRkcmVzc1wiXG4gICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtiZ0NvbG9yXT1cIid3aGl0ZSdcIlxuICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkICM2NjY2NjY1OSdcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCInMTJweCdcIlxuICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICBbY3VzdG9tRXJyb3JNZXNzYWdlc109XCJ7XG4gICAgICAgIHJlcXVpcmVkOiAnRW1haWwgYWRkcmVzcyBpcyByZXF1aXJlZCcsXG4gICAgICAgIGVtYWlsOiAnRW1haWwgYWRkcmVzcyBtdXN0IGJlIHZhbGlkJ1xuICAgICAgfVwiXG4gICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICBbbGFiZWxdPVwiJ1Bhc3N3b3JkJ1wiXG4gICAgICBbbGFiZWxDb2xvcl09XCInIzY2NidcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIicnXCJcbiAgICAgIFtwYXNzd29yZFRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIlBhc3N3b3JkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgIFt0eXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICBbYmdDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjNjY2NjY2NTknXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzEycHgnXCJcbiAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgID48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgW2xhYmVsXT1cIidDb25maXJtIFBhc3N3b3JkJ1wiXG4gICAgICBbbGFiZWxDb2xvcl09XCInIzY2NidcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIicnXCJcbiAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgIFt0eXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiQ29uZmlybVBhc3N3b3JkXCJcbiAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgW3Bhc3N3b3JkVG9nZ2xlXT1cInRydWVcIlxuICAgICAgW2JnQ29sb3JdPVwiJ3doaXRlJ1wiXG4gICAgICBbbWluTGVuZ3RoXT1cInVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snUGFzc3dvcmQnXS52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjNjY2NjY2NTknXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzEycHgnXCJcbiAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtjdXN0b21FcnJvck1lc3NhZ2VzXT1cIntcbiAgICAgICAgbWluTGVuZ3RoOidDb25maXJtIFBhc3N3b3JkIG11c3QgbWF0Y2ggcGFzc3dvcmQnLFxuICAgICAgICByZXF1aXJlZDogJ0NvbmZpcm0gUGFzc3dvcmQgaXMgcmVxdWlyZWQgYW5kIG11c3QgbWF0Y2ggcGFzc3dvcmQnLFxuICAgICAgICBwYXNzd29yZDogJ1Bhc3N3b3JkIGRvZXMgbm90IG1hdGNoJyxcbiAgICAgIH1cIlxuICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgIDx2ZXJiZW5hLWJ1dHRvblxuICAgICAgW2NsYXNzXT1cIidtdC02J1wiXG4gICAgICBbZGlzYWJsZV09XCIhdGhpcy5jaGVja0Zvcm0oKVwiXG4gICAgICBbdGV4dF09XCJ0ZXh0XCJcbiAgICAgIFtiZ0NvbG9yXT1cImJ0bkJnQ29sb3JcIlxuICAgICAgW3RleHRDb2xvcl09XCJjb2xvclwiXG4gICAgICBbYnV0dG9uQ2xhc3NdPVwiJ2N1cnNvci1ub3QtYWxsb3dlZCdcIlxuICAgICAgW2JvcmRlcl09XCJidG5Cb3JkZXJcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCJidG5Cb3JkZXJSYWRpdXNcIlxuICAgICAgW3BkXT1cImJ0blBkXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAnY3Vyc29yLW5vdC1hbGxvd2VkJzohY2hlY2tGb3JtKClcbiAgICAgIH1cIlxuICAgICAgW3dpZHRoXT1cImJ0bldpZHRoXCJcbiAgICAgIGJ1dHRvbkNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1bMjJweF0gbGVhZGluZy1bMzNweF1cIlxuICAgID48L3ZlcmJlbmEtYnV0dG9uPlxuXG4gIDxkaXYgKm5nSWY9XCJBdXRoTWVjaGFuaXNtcyAhPT0gbnVsbFwiPiBcbiAgICA8dmVyYmVuLW8tYXV0aCBcbiAgICAgIFthdXRoTWVjaGFuaXNtc109XCJBdXRoTWVjaGFuaXNtc1wiXG4gICAgICAoZ29vZ2xlQ2xpY2spPVwiaGFuZGxlR29vZ2xlQXV0aCgpXCJcbiAgICAgIChhcHBsZUNsaWNrKT1cImhhbmRsZUFwcGxlQXV0aCgpXCJcbiAgICAgIChtaWNyb3NvZnRDbGljayk9XCJoYW5kbGVNaWNyb3NvZnQoKVwiXG4gICAgPjwvdmVyYmVuLW8tYXV0aD5cbiAgPC9kaXY+XG4gICAgPCEtLSA8dmVyYmVuYS1idXR0b25cbiAgICAgIHN2Zz1cImFwcGxlLWxvZ29cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUFwcGxlQXV0aCgpXCJcbiAgICAgIFtzdmdIZWlnaHRdPVwiMjRcIlxuICAgICAgW3N2Z1dpZHRoXT1cIjI0XCJcbiAgICAgIHRleHQ9XCJDb250aW51ZSB3aXRoIEFwcGxlXCJcbiAgICAgIGJnQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICBib3JkZXI9XCIxcHggc29saWQgIzMzM1wiXG4gICAgICBib3JkZXJSYWRpdXM9XCI0MHB4XCJcbiAgICAgIHBkPVwiMTBweCAyMHB4XCJcbiAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICBzdmdQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgYnV0dG9uQ2xhc3M9XCJmb250LW5vcm1hbCB0ZXh0LVsyNHB4XSBsZWFkaW5nLVsyOS4wNXB4XSB0ZXh0LVsjMzMzXSBtdC0yXCJcbiAgICA+PC92ZXJiZW5hLWJ1dHRvbj4gLS0+XG4gIDwvZm9ybT5cblxuICBcbjwvc2VjdGlvbj5cblxuIl19
|
|
@@ -3,6 +3,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
|
3
3
|
import { VerbenaButtonModule, VerbenaInputModule } from 'verben-ng-ui';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { UserRequestComponent } from './user-request.component';
|
|
6
|
+
import { OAuthModule } from '../o-auth/o-auth.module';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export class UserRequestModule {
|
|
8
9
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -10,12 +11,14 @@ export class UserRequestModule {
|
|
|
10
11
|
ReactiveFormsModule,
|
|
11
12
|
VerbenaInputModule,
|
|
12
13
|
VerbenaButtonModule,
|
|
13
|
-
CommonModule
|
|
14
|
+
CommonModule,
|
|
15
|
+
OAuthModule], exports: [UserRequestComponent] });
|
|
14
16
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestModule, imports: [FormsModule,
|
|
15
17
|
ReactiveFormsModule,
|
|
16
18
|
VerbenaInputModule,
|
|
17
19
|
VerbenaButtonModule,
|
|
18
|
-
CommonModule
|
|
20
|
+
CommonModule,
|
|
21
|
+
OAuthModule] });
|
|
19
22
|
}
|
|
20
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestModule, decorators: [{
|
|
21
24
|
type: NgModule,
|
|
@@ -27,8 +30,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27
30
|
VerbenaInputModule,
|
|
28
31
|
VerbenaButtonModule,
|
|
29
32
|
CommonModule,
|
|
33
|
+
OAuthModule
|
|
30
34
|
],
|
|
31
35
|
exports: [UserRequestComponent],
|
|
32
36
|
}]
|
|
33
37
|
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXF1ZXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1yZXF1ZXN0L3VzZXItcmVxdWVzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBY3RELE1BQU0sT0FBTyxpQkFBaUI7d0dBQWpCLGlCQUFpQjt5R0FBakIsaUJBQWlCLGlCQVhiLG9CQUFvQixhQUVqQyxXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsWUFBWTtZQUNaLFdBQVcsYUFFSCxvQkFBb0I7eUdBRW5CLGlCQUFpQixZQVQxQixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsWUFBWTtZQUNaLFdBQVc7OzRGQUlGLGlCQUFpQjtrQkFaN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFZlcmJlbmFCdXR0b25Nb2R1bGUsIFZlcmJlbmFJbnB1dE1vZHVsZSB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVXNlclJlcXVlc3RDb21wb25lbnQgfSBmcm9tICcuL3VzZXItcmVxdWVzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0F1dGhNb2R1bGUgfSBmcm9tICcuLi9vLWF1dGgvby1hdXRoLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1VzZXJSZXF1ZXN0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmVyYmVuYUlucHV0TW9kdWxlLFxuICAgIFZlcmJlbmFCdXR0b25Nb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE9BdXRoTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtVc2VyUmVxdWVzdENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJSZXF1ZXN0TW9kdWxlIHt9XG4iXX0=
|