verben-authentication-ui 0.8.8 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -0
- package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +1 -1
- package/esm2022/lib/components/reset-password/reset-password.component.mjs +2 -2
- package/esm2022/lib/components/role-control/role-control.component.mjs +1 -1
- package/esm2022/lib/components/sign-in/sign-in.component.mjs +10 -3
- 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/sso/sso.component.mjs +1 -1
- package/esm2022/lib/components/user-management/user-management-form/use-management-form.component.mjs +16 -18
- package/esm2022/lib/components/user-management/user-management.component.mjs +38 -30
- package/esm2022/lib/components/user-request/user-request.component.mjs +10 -3
- package/esm2022/lib/components/user-request-approval/services/user-access-request.service.mjs +5 -1
- package/esm2022/lib/components/user-request-approval/states/user-access-request.state.mjs +3 -2
- package/esm2022/lib/components/user-request-approval/user-request-approval.component.mjs +3 -3
- package/esm2022/lib/components/user-request-approval/user-request-form/use-request-form.component.mjs +1 -1
- package/esm2022/lib/models/Tag.mjs +2 -0
- package/esm2022/lib/models/base.mjs +1 -1
- package/esm2022/lib/models/query-params.mjs +1 -1
- package/fesm2022/verben-authentication-ui.mjs +89 -66
- package/fesm2022/verben-authentication-ui.mjs.map +1 -1
- package/lib/components/user-management/services/user-management.service.d.ts +1 -1
- package/lib/components/user-management/user-management-form/use-management-form.component.d.ts +7 -13
- package/lib/components/user-management/user-management.component.d.ts +5 -2
- package/lib/components/user-request-approval/services/user-access-request.service.d.ts +2 -0
- package/lib/models/Tag.d.ts +6 -0
- package/lib/models/base.d.ts +1 -1
- package/lib/models/query-params.d.ts +2 -1
- package/package.json +1 -1
|
@@ -153,7 +153,14 @@ export class UserRequestComponent {
|
|
|
153
153
|
}
|
|
154
154
|
async getTenantConfig() {
|
|
155
155
|
this.userRequestForm.addControl('ConfirmPassword', new FormControl('', Validators.required));
|
|
156
|
-
const
|
|
156
|
+
const isLocalhost = window?.location?.hostname === 'localhost';
|
|
157
|
+
const payload = isLocalhost
|
|
158
|
+
? {
|
|
159
|
+
Key: "UrlKey",
|
|
160
|
+
Value: 'https://bovas.white360.net'
|
|
161
|
+
}
|
|
162
|
+
: undefined;
|
|
163
|
+
const res = await this.server.post(`Tenant/GetTenantConfigByUrlKey`, payload);
|
|
157
164
|
this.tenantDetails = res;
|
|
158
165
|
this.AuthMechanisms = this.tenantDetails?.AuthMechanisms;
|
|
159
166
|
if (!this.tenantDetails?.AuthMechanism &&
|
|
@@ -241,7 +248,7 @@ export class UserRequestComponent {
|
|
|
241
248
|
}
|
|
242
249
|
}
|
|
243
250
|
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 });
|
|
244
|
-
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 *ngIf=\"!hidePassword\"\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 *ngIf=\"!hidePassword\"\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 </form>\n\n <div class=\"mt-2\" *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n ></verben-o-auth>\n </div>\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: ["emitMechanismFn"] }] });
|
|
251
|
+
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 *ngIf=\"!hidePassword\"\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 *ngIf=\"!hidePassword\"\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 </form>\n\n <div class=\"mt-2\" *ngIf=\"AuthMechanisms !== null\"> \n <verben-o-auth \n [authMechanisms]=\"AuthMechanisms\"\n ></verben-o-auth>\n </div>\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", "fontSize", "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: ["emitMechanismFn"] }] });
|
|
245
252
|
}
|
|
246
253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserRequestComponent, decorators: [{
|
|
247
254
|
type: Component,
|
|
@@ -303,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
303
310
|
}], onSubmitResponseEnd: [{
|
|
304
311
|
type: Output
|
|
305
312
|
}] } });
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXF1ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1yZXF1ZXN0L3VzZXItcmVxdWVzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcmVxdWVzdC91c2VyLXJlcXVlc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBR0wsV0FBVyxFQUdYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7O0FBVTNFLE1BQU0sT0FBTyxvQkFBb0I7SUEyQ3JCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE5Q0QsS0FBSyxHQUFXLE9BQU8sQ0FBQztJQUN4QixZQUFZLEdBQVcsb0JBQW9CLENBQUM7SUFDNUMsWUFBWSxHQUNuQixvREFBb0QsQ0FBQztJQUM5QyxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLE9BQU8sR0FBVyxNQUFNLENBQUM7SUFDekIsU0FBUyxHQUFXLGlDQUFpQyxDQUFDO0lBQ3RELE1BQU0sR0FB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QixDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt3R0FyUVUsb0JBQW9COzRGQUFwQixvQkFBb0IsNnhCQzVCakMsd29JQXlJQTs7NEZEN0dhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7NE1BS25CLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBIdHRwV2ViUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwLXdlYi1yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclJlcXVlc3RQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1VzZXJSZXF1ZXN0JztcbmltcG9ydCB7IE9iamVjdFN0YXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL29iamVjdC1zdGF0ZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zZUtleVZhbHVlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1Jlc3BvbnNlS2V5VmFsdWUnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9FcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9zdGF0dXMnO1xuaW1wb3J0IHsgUmVxdWVzdFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9yZXF1ZXN0LXN0YXR1cyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhNZWNoYW5pc20sIE1lY2hhbmlzbVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXV0aC1tZWNoYW5pc20nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT0F1dGhSZXNwb25zZSB9IGZyb20gJy4uLy4uL21vZGVscy9vYXV0aC1yZXNwb25zZSc7XG5pbXBvcnQgeyBSb2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1JvbGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdXNlci1yZXF1ZXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItcmVxdWVzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VzZXItcmVxdWVzdC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJSZXF1ZXN0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICc1MDBweCc7XG4gIEBJbnB1dCgpIGhlYWRpbmdUaXRsZTogc3RyaW5nID0gJ1JlcXVlc3QgYW4gYWNjb3VudCc7XG4gIEBJbnB1dCgpIGhlYWRpbmdDbGFzczogc3RyaW5nID1cbiAgICAnZm9udC1tZWRpdW0gdGV4dC1bMnJlbV0gbGVhZGluZy1bNDhweF0gdGV4dC1bIzMzM10nO1xuICBASW5wdXQoKSBjdXN0b21DbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGJnQ29sb3I6IHN0cmluZyA9ICcjZmZmJztcbiAgQElucHV0KCkgYm94U2hhZG93OiBzdHJpbmcgPSAnNHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjI1KSc7XG4gIEBJbnB1dCgpIGJvcmRlcjogc3RyaW5nID0gJzFweCBzb2xpZCAjNjY2NjY2ODAnO1xuICBASW5wdXQoKSBib3JkZXJSYWRpdXM6IHN0cmluZyA9ICcyNHB4JztcbiAgQElucHV0KCkgdGV4dENvbG9yOiBzdHJpbmcgPSAnIzMzMyc7XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJ2F1dG8nO1xuICBASW5wdXQoKSBwZDogc3RyaW5nID0gJzMycHggNDhweCc7XG4gIGlzRm9ybUVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgdGVuYW50OiBzdHJpbmc7XG4gIHNlY3JldDogc3RyaW5nO1xuICBoaWRlUGFzc3dvcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNDb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICdTZW5kIFJlcXVlc3QnO1xuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nID0gJ2JsYWNrJztcbiAgQElucHV0KCkgYnRuQm9yZGVyOiBzdHJpbmcgPSAnMXB4IHNvbGlkICNGRkU2ODEnO1xuICBASW5wdXQoKSBidG5Cb3JkZXJSYWRpdXM6IHN0cmluZyA9ICc0MHB4JztcbiAgQElucHV0KCkgYnRuQmdDb2xvcjogc3RyaW5nID0gJyNGRkU2ODEnO1xuICBASW5wdXQoKSBidG5XaWR0aDogc3RyaW5nID0gJzEwMCUnO1xuICBASW5wdXQoKSBidG5QZDogc3RyaW5nID0gJzEwcHggMjBweCc7XG4gIEBJbnB1dCgpIHRlcm1zTGluazogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHByaXZhY3lMaW5rOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcm91dGVyTGluazogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBmb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyUmVxdWVzdFBheWxvYWRbXT4oKTtcbiAgQE91dHB1dCgpIGdvb2dsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXRTdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBhcHBsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbWljcm9zb2Z0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblN1Ym1pdEdvb2dsZUF1dGg6IEV2ZW50RW1pdHRlcjxSZXNwb25zZUtleVZhbHVlIHwgRXJyb3JSZXNwb25zZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0UmVzcG9uc2VFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB1c2VyUmVxdWVzdEZvcm06IEZvcm1Hcm91cDtcbiAgdGVuYW50RGV0YWlsczogYW55IHwgbnVsbCA9IG51bGw7XG4gIEF1dGhNZWNoYW5pc21zOiBBdXRoTWVjaGFuaXNtW10gfCBudWxsID0gbnVsbDtcbiAgc2hvd2Zvcm06IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29kZTogc3RyaW5nID0gJyc7XG4gIHR5cGU6IHN0cmluZyA9ICcnO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHNlcnZlcjogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52U3ZjOiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy50ZW5hbnQgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5UZW5hbnQ7XG4gICAgdGhpcy5zZWNyZXQgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5TZWNyZXQ7XG4gICAgdGhpcy51c2VyUmVxdWVzdEZvcm0gPSB0aGlzLmZiLmdyb3VwPHtcbiAgICAgIFtLIGluIGtleW9mIFVzZXJSZXF1ZXN0UGF5bG9hZF06IEZvcm1Db250cm9sPFVzZXJSZXF1ZXN0UGF5bG9hZFtLXT47XG4gICAgfT4oXG4gICAgICB7XG4gICAgICAgIENvZGU6IG5ldyBGb3JtQ29udHJvbCgnJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgRmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIH0pLFxuICAgICAgICBMYXN0TmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgICAgICAgbm9uTnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB9KSxcbiAgICAgICAgTWFpbEFkZHJlc3M6IG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSxcbiAgICAgICAgfSksXG4gICAgICAgIFBhc3N3b3JkOiBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCldLFxuICAgICAgICB9KSxcbiAgICAgICAgUGhvbmVOdW1iZXI6IG5ldyBGb3JtQ29udHJvbCgnJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgT3RoZXJOYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIFJvbGU6IG5ldyBGb3JtQ29udHJvbDxSb2xlPihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBOYW1lOiAnJyxcbiAgICAgICAgICAgIERlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uOiAnJyxcbiAgICAgICAgICAgIFJvbGVDb250ZXh0czogW10sXG4gICAgICAgICAgICBBUElLZXk6ICcnLFxuICAgICAgICAgICAgSWQ6ICcnLFxuICAgICAgICAgICAgaWQ6ICcnLFxuICAgICAgICAgICAgU2VydmljZU5hbWU6ICcnLFxuICAgICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgbm9uTnVsbGFibGU6IHRydWUgfVxuICAgICAgICApLFxuICAgICAgICBUYWdzOiBuZXcgRm9ybUNvbnRyb2w8W10+KFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBTdGF0dXM6IG5ldyBGb3JtQ29udHJvbDxTdGF0dXM+KFN0YXR1cy5BY3RpdmUsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIFJlcXVlc3RTdGF0dXM6IG5ldyBGb3JtQ29udHJvbDxSZXF1ZXN0U3RhdHVzPihSZXF1ZXN0U3RhdHVzLlBlbmRpbmcsIHtcbiAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIFVwZGF0ZWRBdDogbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIENyZWF0ZWRBdDogbmV3IEZvcm1Db250cm9sKG5ldyBEYXRlKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIElkOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIERhdGFTdGF0ZTogbmV3IEZvcm1Db250cm9sPE9iamVjdFN0YXRlPihPYmplY3RTdGF0ZS5OZXcsIHtcbiAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIFRlbmFudElkOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIFRva2VuOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIFNpZ25VcFR5cGU6IG5ldyBGb3JtQ29udHJvbChNZWNoYW5pc21UeXBlLkluQXBwLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBTZXJ2aWNlTmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBBY3Rpb25CeTogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBDb21tZW50OiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICB9LFxuICAgICAgeyB2YWxpZGF0b3JzOiB0aGlzLnBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IgfVxuICAgICk7XG4gIH1cbiAgcGFzc3dvcmRNYXRjaFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjb250cm9sLmdldCgnUGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgY29uZmlybVBhc3N3b3JkID0gY29udHJvbC5nZXQoJ0NvbmZpcm1QYXNzd29yZCcpPy52YWx1ZTtcblxuICAgIHJldHVybiBwYXNzd29yZCA9PT0gY29uZmlybVBhc3N3b3JkID8gbnVsbCA6IHsgcGFzc3dvcmRNaXNtYXRjaDogdHJ1ZSB9O1xuICB9XG5cbiAgZ2V0IHBhc3N3b3JkTWlzbWF0Y2hFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyUmVxdWVzdEZvcm0uaGFzRXJyb3IoJ3Bhc3N3b3JkTWlzbWF0Y2gnKTtcbiAgfVxuXG4gIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogdGhpcy5iZ0NvbG9yLFxuICAgICAgJ2JveC1zaGFkb3cnOiB0aGlzLmJveFNoYWRvdyxcbiAgICAgIGJvcmRlcjogdGhpcy5ib3JkZXIsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6IHRoaXMuYm9yZGVyUmFkaXVzLFxuICAgICAgY29sb3I6IHRoaXMudGV4dENvbG9yLFxuICAgICAgJ21heC13aWR0aCc6IHRoaXMud2lkdGgsXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0LFxuICAgICAgcGFkZGluZzogdGhpcy5wZCxcbiAgICB9O1xuICB9XG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHRoaXMuZ2V0VGVuYW50Q29uZmlnKCk7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgdGhpcy5jb2RlID0gcGFyYW1zWydjb2RlJ107XG4gICAgICB0aGlzLnR5cGUgPSBwYXJhbXNbJ3R5cGUnXTtcbiAgICAgIGlmICh0aGlzLmNvZGUpIHtcbiAgICAgICAgdGhpcy52ZXJpZnlVc2VyRGV0YWlscygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVuYW50Q29uZmlnKCkge1xuICAgIHRoaXMudXNlclJlcXVlc3RGb3JtLmFkZENvbnRyb2woXG4gICAgICAnQ29uZmlybVBhc3N3b3JkJyxcbiAgICAgIG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICApO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLmdldChcbiAgICAgIGBUZW5hbnQvR2V0VGVuYW50Q29uZmlnQnlLZXkvJHt0aGlzLnRlbmFudH1gXG4gICAgKTtcbiAgICB0aGlzLnRlbmFudERldGFpbHMgPSByZXM7XG4gICAgdGhpcy5BdXRoTWVjaGFuaXNtcyA9IHRoaXMudGVuYW50RGV0YWlscz8uQXV0aE1lY2hhbmlzbXM7XG4gICAgaWYgKFxuICAgICAgIXRoaXMudGVuYW50RGV0YWlscz8uQXV0aE1lY2hhbmlzbSAmJlxuICAgICAgdGhpcy50ZW5hbnREZXRhaWxzPy5BdXRoTWVjaGFuaXNtICE9PSBNZWNoYW5pc21UeXBlLkluQXBwXG4gICAgKSB7XG4gICAgICB0aGlzLnNob3dmb3JtID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRlbmFudERldGFpbHM/LkF1dGhNZWNoYW5pc20gPT09IE1lY2hhbmlzbVR5cGUuSW5BcHApIHtcbiAgICAgIHRoaXMuc2hvd2Zvcm0gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5BdXRoTWVjaGFuaXNtcyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5zaG93Zm9ybSA9IHRoaXMuQXV0aE1lY2hhbmlzbXMuc29tZSgoaXRlbSkgPT5cbiAgICAgICAgaXRlbS5BdXRoTWVjaGFuaXNtLmluY2x1ZGVzKE1lY2hhbmlzbVR5cGUuSW5BcHApXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBjaGVja0Zvcm0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudXNlclJlcXVlc3RGb3JtLnZhbGlkO1xuICB9XG4gIGhhbmRsZUdvb2dsZUF1dGgoKSB7XG4gICAgaWYgKHRoaXMuQXV0aE1lY2hhbmlzbXMgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLkF1dGhNZWNoYW5pc21zLmZpbHRlcihcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0uQXV0aE1lY2hhbmlzbSA9PT0gTWVjaGFuaXNtVHlwZS5Hb29nbGVcbiAgICAgICk7XG4gICAgICB0aGlzLmdvb2dsZUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlQXBwbGVBdXRoKCkge1xuICAgIHRoaXMuYXBwbGVDbGljay5lbWl0KCk7XG4gIH1cbiAgaGFuZGxlTWljcm9zb2Z0KCkge1xuICAgIGlmICh0aGlzLkF1dGhNZWNoYW5pc21zICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5BdXRoTWVjaGFuaXNtcy5maWx0ZXIoXG4gICAgICAgIChpdGVtKSA9PiBpdGVtLkF1dGhNZWNoYW5pc20gPT09IE1lY2hhbmlzbVR5cGUuTWljcm9zb2Z0QURcbiAgICAgICk7XG4gICAgICB0aGlzLm1pY3Jvc29mdENsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xuICAgIGlmICghdGhpcy5jaGVja0Zvcm0oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMudXNlclJlcXVlc3RGb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgeyBDb25maXJtUGFzc3dvcmQsIC4uLnBheWxvYWQgfSA9IGZvcm1WYWx1ZTtcblxuICAgIGNvbnN0IHBheWxvYWRUb1N1Ym1pdDogVXNlclJlcXVlc3RQYXlsb2FkW10gPSBbcGF5bG9hZF07XG5cbiAgICB0aGlzLmZvcm1TdWJtaXQuZW1pdChwYXlsb2FkVG9TdWJtaXQpO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoXG4gICAgICAgIGBVc2VyL1NhdmVVc2VyQWNjZXNzUmVxdWVzdHNgLFxuICAgICAgICBwYXlsb2FkVG9TdWJtaXRcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcblxuICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5vblN1Ym1pdFJlc3BvbnNlRW5kLmVtaXQocmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcyBhcyBSZXNwb25zZUtleVZhbHVlO1xuICAgICAgICB0aGlzLm9uU3VibWl0UmVzcG9uc2VFbmQuZW1pdChyZXN1bHQpO1xuICAgICAgICB0aGlzLm9uU3VibWl0U3VjY2Vzcy5lbWl0KHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuZXhwZWN0ZWQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgdGhpcy5vblN1Ym1pdFJlc3BvbnNlRW5kLmVtaXQoZXJyb3IpO1xuICAgIH1cbiAgfVxuICBhc3luYyB2ZXJpZnlVc2VyRGV0YWlscygpIHtcbiAgICBpZiAodGhpcy5BdXRoTWVjaGFuaXNtcyAhPT0gbnVsbCAmJiB0aGlzLnRlbmFudCkge1xuICAgICAgY29uc3QgZGF0YTogYW55ID0gdGhpcy5BdXRoTWVjaGFuaXNtcy5maW5kKChpdGVtKSA9PlxuICAgICAgICBpdGVtLkF1dGhNZWNoYW5pc20uaW5jbHVkZXModGhpcy50eXBlKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIEF1dGhDb2RlOiB0aGlzLmNvZGUsXG4gICAgICAgIFRlbmFudDogdGhpcy50ZW5hbnQsXG4gICAgICAgIEF1dGhNZWNoYW5pc206IGRhdGEuQXV0aE1lY2hhbmlzbSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgICAgY29uc3QgcmVzOiBPQXV0aFJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChcbiAgICAgICAgYEF1dGhlbnRpY2F0aW9uL0dldFVzZXJEZXRhaWxzYCxcbiAgICAgICAgcGF5bG9hZFxuICAgICAgKTtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMub25TdWJtaXRHb29nbGVBdXRoLmVtaXQocmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydGaXJzdE5hbWUnXS5zZXRWYWx1ZShyZXMuRmlyc3ROYW1lKTtcbiAgICAgICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbJ0xhc3ROYW1lJ10uc2V0VmFsdWUocmVzLkxhc3ROYW1lKTtcbiAgICAgICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbJ01haWxBZGRyZXNzJ10uc2V0VmFsdWUocmVzLkVtYWlsKTtcbiAgICAgICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbJ1Rva2VuJ10uc2V0VmFsdWUocmVzLkFjY2Vzc1Rva2VuKTtcbiAgICAgICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbJ1NpZ25VcFR5cGUnXS5zZXRWYWx1ZSh0aGlzLnR5cGUpO1xuICAgICAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snUGFzc3dvcmQnXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbJ1Bhc3N3b3JkJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snQ29uZmlybVBhc3N3b3JkJ10uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzW1xuICAgICAgICAgICdDb25maXJtUGFzc3dvcmQnXG4gICAgICAgIF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLmhpZGVQYXNzd29yZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8c2VjdGlvbiBbbmdTdHlsZV09XCJzdHlsZXNcIiBjbGFzcz1cInt7IGN1c3RvbUNsYXNzIH19XCI+XG4gIDxoMiBjbGFzcz1cInt7IGhlYWRpbmdDbGFzcyB9fVwiPlxuICAgIHt7IGhlYWRpbmdUaXRsZSB9fVxuICA8L2gyPlxuXG4gIDxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJ1c2VyUmVxdWVzdEZvcm1cIlxuICAgIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNSBtdC0zXCJcbiAgPlxuICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICBbbGFiZWxdPVwiJ0ZpcnN0IE5hbWUnXCJcbiAgICAgIFtsYWJlbENvbG9yXT1cIicjNjY2J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIkZpcnN0TmFtZVwiXG4gICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtiZ0NvbG9yXT1cIid3aGl0ZSdcIlxuICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkICM2NjY2NjY1OSdcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCInMTJweCdcIlxuICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgPjwvdmVyYmVuYS1pbnB1dD5cbiAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgW2xhYmVsXT1cIidMYXN0IE5hbWUnXCJcbiAgICAgIFtsYWJlbENvbG9yXT1cIicjNjY2J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIkxhc3ROYW1lXCJcbiAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgW2JnQ29sb3JdPVwiJ3doaXRlJ1wiXG4gICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgIzY2NjY2NjU5J1wiXG4gICAgICBbYm9yZGVyUmFkaXVzXT1cIicxMnB4J1wiXG4gICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgIFtlcnJvck1lc3NhZ2VDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JCb3JkZXJDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICBjbGFzcz1cIm91dGxpbmUtbm9uZSBmb2N1cy1ub25lXCJcbiAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICBbbGFiZWxdPVwiJ0UtbWFpbCBBZGRyZXNzJ1wiXG4gICAgICBbbGFiZWxDb2xvcl09XCInIzY2NidcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIicnXCJcbiAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgIFt0eXBlXT1cIidlbWFpbCdcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbEFkZHJlc3NcIlxuICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICBbYmdDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjNjY2NjY2NTknXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzEycHgnXCJcbiAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgW2N1c3RvbUVycm9yTWVzc2FnZXNdPVwie1xuICAgICAgICByZXF1aXJlZDogJ0VtYWlsIGFkZHJlc3MgaXMgcmVxdWlyZWQnLFxuICAgICAgICBlbWFpbDogJ0VtYWlsIGFkZHJlc3MgbXVzdCBiZSB2YWxpZCdcbiAgICAgIH1cIlxuICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgID48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICA8dmVyYmVuYS1pbnB1dFxuICAgICpuZ0lmPVwiIWhpZGVQYXNzd29yZFwiXG4gICAgICBbbGFiZWxdPVwiJ1Bhc3N3b3JkJ1wiXG4gICAgICBbbGFiZWxDb2xvcl09XCInIzY2NidcIlxuICAgICAgW3BsYWNlSG9sZGVyXT1cIicnXCJcbiAgICAgIFtwYXNzd29yZFRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIlBhc3N3b3JkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgIFt0eXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICBbYmdDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjNjY2NjY2NTknXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzEycHgnXCJcbiAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgID48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICA8dmVyYmVuYS1pbnB1dFxuICAgICpuZ0lmPVwiIWhpZGVQYXNzd29yZFwiXG4gICAgICBbbGFiZWxdPVwiJ0NvbmZpcm0gUGFzc3dvcmQnXCJcbiAgICAgIFtsYWJlbENvbG9yXT1cIicjNjY2J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3R5cGVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJDb25maXJtUGFzc3dvcmRcIlxuICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICBbcGFzc3dvcmRUb2dnbGVdPVwidHJ1ZVwiXG4gICAgICBbYmdDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgIFttaW5MZW5ndGhdPVwidXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydQYXNzd29yZCddLnZhbHVlPy5sZW5ndGhcIlxuICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkICM2NjY2NjY1OSdcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCInMTJweCdcIlxuICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2N1c3RvbUVycm9yTWVzc2FnZXNdPVwie1xuICAgICAgICBtaW5MZW5ndGg6J0NvbmZpcm0gUGFzc3dvcmQgbXVzdCBtYXRjaCBwYXNzd29yZCcsXG4gICAgICAgIHJlcXVpcmVkOiAnQ29uZmlybSBQYXNzd29yZCBpcyByZXF1aXJlZCBhbmQgbXVzdCBtYXRjaCBwYXNzd29yZCcsXG4gICAgICAgIHBhc3N3b3JkOiAnUGFzc3dvcmQgZG9lcyBub3QgbWF0Y2gnLFxuICAgICAgfVwiXG4gICAgICBbZXJyb3JCb3JkZXJDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICBjbGFzcz1cIm91dGxpbmUtbm9uZSBmb2N1cy1ub25lXCJcbiAgICA+PC92ZXJiZW5hLWlucHV0PlxuXG4gICAgPHZlcmJlbmEtYnV0dG9uXG4gICAgICBbY2xhc3NdPVwiJ210LTYnXCJcbiAgICAgIFtkaXNhYmxlXT1cIiF0aGlzLmNoZWNrRm9ybSgpXCJcbiAgICAgIFt0ZXh0XT1cInRleHRcIlxuICAgICAgW2JnQ29sb3JdPVwiYnRuQmdDb2xvclwiXG4gICAgICBbdGV4dENvbG9yXT1cImNvbG9yXCJcbiAgICAgIFtidXR0b25DbGFzc109XCInY3Vyc29yLW5vdC1hbGxvd2VkJ1wiXG4gICAgICBbYm9yZGVyXT1cImJ0bkJvcmRlclwiXG4gICAgICBbYm9yZGVyUmFkaXVzXT1cImJ0bkJvcmRlclJhZGl1c1wiXG4gICAgICBbcGRdPVwiYnRuUGRcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICdjdXJzb3Itbm90LWFsbG93ZWQnOiFjaGVja0Zvcm0oKVxuICAgICAgfVwiXG4gICAgICBbd2lkdGhdPVwiYnRuV2lkdGhcIlxuICAgICAgYnV0dG9uQ2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LVsyMnB4XSBsZWFkaW5nLVszM3B4XVwiXG4gICAgPjwvdmVyYmVuYS1idXR0b24+XG4gIDwvZm9ybT5cblxuICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwiQXV0aE1lY2hhbmlzbXMgIT09IG51bGxcIj4gXG4gICAgPHZlcmJlbi1vLWF1dGggXG4gICAgICBbYXV0aE1lY2hhbmlzbXNdPVwiQXV0aE1lY2hhbmlzbXNcIlxuICAgID48L3ZlcmJlbi1vLWF1dGg+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG4iXX0=
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXF1ZXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1yZXF1ZXN0L3VzZXItcmVxdWVzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcmVxdWVzdC91c2VyLXJlcXVlc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBR0wsV0FBVyxFQUdYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7O0FBVTNFLE1BQU0sT0FBTyxvQkFBb0I7SUEyQ3JCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE5Q0QsS0FBSyxHQUFXLE9BQU8sQ0FBQztJQUN4QixZQUFZLEdBQVcsb0JBQW9CLENBQUM7SUFDNUMsWUFBWSxHQUNuQixvREFBb0QsQ0FBQztJQUM5QyxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLE9BQU8sR0FBVyxNQUFNLENBQUM7SUFDekIsU0FBUyxHQUFXLGlDQUFpQyxDQUFDO0lBQ3RELE1BQU0sR0FB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c0JBQW5CLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBRUcsbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0dHBXZWJSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAtd2ViLXJlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUmVxdWVzdFBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlclJlcXVlc3QnO1xuaW1wb3J0IHsgT2JqZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvb2JqZWN0LXN0YXRlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNlS2V5VmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVzcG9uc2VLZXlWYWx1ZSc7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Vycm9yUmVzcG9uc2UnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N0YXR1cyc7XG5pbXBvcnQgeyBSZXF1ZXN0U3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlcXVlc3Qtc3RhdHVzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aE1lY2hhbmlzbSwgTWVjaGFuaXNtVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9hdXRoLW1lY2hhbmlzbSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPQXV0aFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL29hdXRoLXJlc3BvbnNlJztcbmltcG9ydCB7IFJvbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvUm9sZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi11c2VyLXJlcXVlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1yZXF1ZXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1yZXF1ZXN0LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlclJlcXVlc3RDb21wb25lbnQge1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzUwMHB4JztcbiAgQElucHV0KCkgaGVhZGluZ1RpdGxlOiBzdHJpbmcgPSAnUmVxdWVzdCBhbiBhY2NvdW50JztcbiAgQElucHV0KCkgaGVhZGluZ0NsYXNzOiBzdHJpbmcgPVxuICAgICdmb250LW1lZGl1bSB0ZXh0LVsycmVtXSBsZWFkaW5nLVs0OHB4XSB0ZXh0LVsjMzMzXSc7XG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYmdDb2xvcjogc3RyaW5nID0gJyNmZmYnO1xuICBASW5wdXQoKSBib3hTaGFkb3c6IHN0cmluZyA9ICc0cHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMjUpJztcbiAgQElucHV0KCkgYm9yZGVyOiBzdHJpbmcgPSAnMXB4IHNvbGlkICM2NjY2NjY4MCc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czogc3RyaW5nID0gJzI0cHgnO1xuICBASW5wdXQoKSB0ZXh0Q29sb3I6IHN0cmluZyA9ICcjMzMzJztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnYXV0byc7XG4gIEBJbnB1dCgpIHBkOiBzdHJpbmcgPSAnMzJweCA0OHB4JztcbiAgaXNGb3JtRWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICB0ZW5hbnQ6IHN0cmluZztcbiAgc2VjcmV0OiBzdHJpbmc7XG4gIGhpZGVQYXNzd29yZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0NvZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJ1NlbmQgUmVxdWVzdCc7XG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmcgPSAnYmxhY2snO1xuICBASW5wdXQoKSBidG5Cb3JkZXI6IHN0cmluZyA9ICcxcHggc29saWQgI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIGJ0bkJvcmRlclJhZGl1czogc3RyaW5nID0gJzQwcHgnO1xuICBASW5wdXQoKSBidG5CZ0NvbG9yOiBzdHJpbmcgPSAnI0ZGRTY4MSc7XG4gIEBJbnB1dCgpIGJ0bldpZHRoOiBzdHJpbmcgPSAnMTAwJSc7XG4gIEBJbnB1dCgpIGJ0blBkOiBzdHJpbmcgPSAnMTBweCAyMHB4JztcbiAgQElucHV0KCkgdGVybXNMaW5rOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHJpdmFjeUxpbms6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJSZXF1ZXN0UGF5bG9hZFtdPigpO1xuICBAT3V0cHV0KCkgZ29vZ2xlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblN1Ym1pdFN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGFwcGxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBtaWNyb3NvZnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU3VibWl0R29vZ2xlQXV0aDogRXZlbnRFbWl0dGVyPFJlc3BvbnNlS2V5VmFsdWUgfCBFcnJvclJlc3BvbnNlPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TdWJtaXRSZXNwb25zZUVuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHVzZXJSZXF1ZXN0Rm9ybTogRm9ybUdyb3VwO1xuICB0ZW5hbnREZXRhaWxzOiBhbnkgfCBudWxsID0gbnVsbDtcbiAgQXV0aE1lY2hhbmlzbXM6IEF1dGhNZWNoYW5pc21bXSB8IG51bGwgPSBudWxsO1xuICBzaG93Zm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICBjb2RlOiBzdHJpbmcgPSAnJztcbiAgdHlwZTogc3RyaW5nID0gJyc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgc2VydmVyOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLnRlbmFudCA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LlRlbmFudDtcbiAgICB0aGlzLnNlY3JldCA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LlNlY3JldDtcbiAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybSA9IHRoaXMuZmIuZ3JvdXA8e1xuICAgICAgW0sgaW4ga2V5b2YgVXNlclJlcXVlc3RQYXlsb2FkXTogRm9ybUNvbnRyb2w8VXNlclJlcXVlc3RQYXlsb2FkW0tdPjtcbiAgICB9PihcbiAgICAgIHtcbiAgICAgICAgQ29kZTogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBGaXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgfSksXG4gICAgICAgIExhc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIH0pLFxuICAgICAgICBNYWlsQWRkcmVzczogbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgICAgICAgbm9uTnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdLFxuICAgICAgICB9KSxcbiAgICAgICAgUGFzc3dvcmQ6IG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KV0sXG4gICAgICAgIH0pLFxuICAgICAgICBQaG9uZU51bWJlcjogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICBPdGhlck5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgUm9sZTogbmV3IEZvcm1Db250cm9sPFJvbGU+KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIE5hbWU6ICcnLFxuICAgICAgICAgICAgRGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgQXBwbGljYXRpb246ICcnLFxuICAgICAgICAgICAgUm9sZUNvbnRleHRzOiBbXSxcbiAgICAgICAgICAgIEFQSUtleTogJycsXG4gICAgICAgICAgICBJZDogJycsXG4gICAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICAgIFRlbmFudElkOiAnJyxcbiAgICAgICAgICAgIENvZGU6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBub25OdWxsYWJsZTogdHJ1ZSB9XG4gICAgICAgICksXG4gICAgICAgIFRhZ3M6IG5ldyBGb3JtQ29udHJvbDxbXT4oW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIFN0YXR1czogbmV3IEZvcm1Db250cm9sPFN0YXR1cz4oU3RhdHVzLkFjdGl2ZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgUmVxdWVzdFN0YXR1czogbmV3IEZvcm1Db250cm9sPFJlcXVlc3RTdGF0dXM+KFJlcXVlc3RTdGF0dXMuUGVuZGluZywge1xuICAgICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgICAgVXBkYXRlZEF0OiBuZXcgRm9ybUNvbnRyb2wobmV3IERhdGUoKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRm9ybUNvbnRyb2wobmV3IERhdGUoKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgSWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgRGF0YVN0YXRlOiBuZXcgRm9ybUNvbnRyb2w8T2JqZWN0U3RhdGU+KE9iamVjdFN0YXRlLk5ldywge1xuICAgICAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgICAgVGVuYW50SWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgVG9rZW46IG5ldyBGb3JtQ29udHJvbCgnJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgU2lnblVwVHlwZTogbmV3IEZvcm1Db250cm9sKE1lY2hhbmlzbVR5cGUuSW5BcHAsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIFNlcnZpY2VOYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIEFjdGlvbkJ5OiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgIENvbW1lbnQ6IG5ldyBGb3JtQ29udHJvbCgnJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgIH0sXG4gICAgICB7IHZhbGlkYXRvcnM6IHRoaXMucGFzc3dvcmRNYXRjaFZhbGlkYXRvciB9XG4gICAgKTtcbiAgfVxuICBwYXNzd29yZE1hdGNoVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCBwYXNzd29yZCA9IGNvbnRyb2wuZ2V0KCdQYXNzd29yZCcpPy52YWx1ZTtcbiAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSBjb250cm9sLmdldCgnQ29uZmlybVBhc3N3b3JkJyk/LnZhbHVlO1xuXG4gICAgcmV0dXJuIHBhc3N3b3JkID09PSBjb25maXJtUGFzc3dvcmQgPyBudWxsIDogeyBwYXNzd29yZE1pc21hdGNoOiB0cnVlIH07XG4gIH1cblxuICBnZXQgcGFzc3dvcmRNaXNtYXRjaEVycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5oYXNFcnJvcigncGFzc3dvcmRNaXNtYXRjaCcpO1xuICB9XG5cbiAgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLmJnQ29sb3IsXG4gICAgICAnYm94LXNoYWRvdyc6IHRoaXMuYm94U2hhZG93LFxuICAgICAgYm9yZGVyOiB0aGlzLmJvcmRlcixcbiAgICAgICdib3JkZXItcmFkaXVzJzogdGhpcy5ib3JkZXJSYWRpdXMsXG4gICAgICBjb2xvcjogdGhpcy50ZXh0Q29sb3IsXG4gICAgICAnbWF4LXdpZHRoJzogdGhpcy53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICBwYWRkaW5nOiB0aGlzLnBkLFxuICAgIH07XG4gIH1cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5nZXRUZW5hbnRDb25maWcoKTtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmNvZGUgPSBwYXJhbXNbJ2NvZGUnXTtcbiAgICAgIHRoaXMudHlwZSA9IHBhcmFtc1sndHlwZSddO1xuICAgICAgaWYgKHRoaXMuY29kZSkge1xuICAgICAgICB0aGlzLnZlcmlmeVVzZXJEZXRhaWxzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRUZW5hbnRDb25maWcoKSB7XG4gICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uYWRkQ29udHJvbChcbiAgICAgICdDb25maXJtUGFzc3dvcmQnLFxuICAgICAgbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICk7XG4gICAgY29uc3QgaXNMb2NhbGhvc3QgPSB3aW5kb3c/LmxvY2F0aW9uPy5ob3N0bmFtZSA9PT0gJ2xvY2FsaG9zdCc7XG4gICAgY29uc3QgcGF5bG9hZCA9IGlzTG9jYWxob3N0XG4gICAgPyB7XG4gICAgICAgIEtleTogXCJVcmxLZXlcIixcbiAgICAgICAgVmFsdWU6J2h0dHBzOi8vYm92YXMud2hpdGUzNjAubmV0J1xuICAgICAgfVxuICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoXG4gICAgICBgVGVuYW50L0dldFRlbmFudENvbmZpZ0J5VXJsS2V5YCxcbiAgICAgIHBheWxvYWRcbiAgICApO1xuICAgIHRoaXMudGVuYW50RGV0YWlscyA9IHJlcztcbiAgICB0aGlzLkF1dGhNZWNoYW5pc21zID0gdGhpcy50ZW5hbnREZXRhaWxzPy5BdXRoTWVjaGFuaXNtcztcbiAgICBpZiAoXG4gICAgICAhdGhpcy50ZW5hbnREZXRhaWxzPy5BdXRoTWVjaGFuaXNtICYmXG4gICAgICB0aGlzLnRlbmFudERldGFpbHM/LkF1dGhNZWNoYW5pc20gIT09IE1lY2hhbmlzbVR5cGUuSW5BcHBcbiAgICApIHtcbiAgICAgIHRoaXMuc2hvd2Zvcm0gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudGVuYW50RGV0YWlscz8uQXV0aE1lY2hhbmlzbSA9PT0gTWVjaGFuaXNtVHlwZS5JbkFwcCkge1xuICAgICAgdGhpcy5zaG93Zm9ybSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLkF1dGhNZWNoYW5pc21zICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnNob3dmb3JtID0gdGhpcy5BdXRoTWVjaGFuaXNtcy5zb21lKChpdGVtKSA9PlxuICAgICAgICBpdGVtLkF1dGhNZWNoYW5pc20uaW5jbHVkZXMoTWVjaGFuaXNtVHlwZS5JbkFwcClcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGNoZWNrRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyUmVxdWVzdEZvcm0udmFsaWQ7XG4gIH1cbiAgaGFuZGxlR29vZ2xlQXV0aCgpIHtcbiAgICBpZiAodGhpcy5BdXRoTWVjaGFuaXNtcyAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuQXV0aE1lY2hhbmlzbXMuZmlsdGVyKFxuICAgICAgICAoaXRlbSkgPT4gaXRlbS5BdXRoTWVjaGFuaXNtID09PSBNZWNoYW5pc21UeXBlLkdvb2dsZVxuICAgICAgKTtcbiAgICAgIHRoaXMuZ29vZ2xlQ2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVBcHBsZUF1dGgoKSB7XG4gICAgdGhpcy5hcHBsZUNsaWNrLmVtaXQoKTtcbiAgfVxuICBoYW5kbGVNaWNyb3NvZnQoKSB7XG4gICAgaWYgKHRoaXMuQXV0aE1lY2hhbmlzbXMgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLkF1dGhNZWNoYW5pc21zLmZpbHRlcihcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0uQXV0aE1lY2hhbmlzbSA9PT0gTWVjaGFuaXNtVHlwZS5NaWNyb3NvZnRBRFxuICAgICAgKTtcbiAgICAgIHRoaXMubWljcm9zb2Z0Q2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XG4gICAgaWYgKCF0aGlzLmNoZWNrRm9ybSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy51c2VyUmVxdWVzdEZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBjb25zdCB7IENvbmZpcm1QYXNzd29yZCwgLi4ucGF5bG9hZCB9ID0gZm9ybVZhbHVlO1xuXG4gICAgY29uc3QgcGF5bG9hZFRvU3VibWl0OiBVc2VyUmVxdWVzdFBheWxvYWRbXSA9IFtwYXlsb2FkXTtcblxuICAgIHRoaXMuZm9ybVN1Ym1pdC5lbWl0KHBheWxvYWRUb1N1Ym1pdCk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChcbiAgICAgICAgYFVzZXIvU2F2ZVVzZXJBY2Nlc3NSZXF1ZXN0c2AsXG4gICAgICAgIHBheWxvYWRUb1N1Ym1pdFxuICAgICAgKTtcblxuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLm9uU3VibWl0UmVzcG9uc2VFbmQuZW1pdChyZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzIGFzIFJlc3BvbnNlS2V5VmFsdWU7XG4gICAgICAgIHRoaXMub25TdWJtaXRSZXNwb25zZUVuZC5lbWl0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMub25TdWJtaXRTdWNjZXNzLmVtaXQocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgY29uc29sZS5lcnJvcignVW5leHBlY3RlZCBlcnJvcjonLCBlcnJvcik7XG4gICAgICB0aGlzLm9uU3VibWl0UmVzcG9uc2VFbmQuZW1pdChlcnJvcik7XG4gICAgfVxuICB9XG4gIGFzeW5jIHZlcmlmeVVzZXJEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLkF1dGhNZWNoYW5pc21zICE9PSBudWxsICYmIHRoaXMudGVuYW50KSB7XG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSB0aGlzLkF1dGhNZWNoYW5pc21zLmZpbmQoKGl0ZW0pID0+XG4gICAgICAgIGl0ZW0uQXV0aE1lY2hhbmlzbS5pbmNsdWRlcyh0aGlzLnR5cGUpXG4gICAgICApO1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgQXV0aENvZGU6IHRoaXMuY29kZSxcbiAgICAgICAgVGVuYW50OiB0aGlzLnRlbmFudCxcbiAgICAgICAgQXV0aE1lY2hhbmlzbTogZGF0YS5BdXRoTWVjaGFuaXNtLFxuICAgICAgfTtcblxuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgICBjb25zdCByZXM6IE9BdXRoUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KFxuICAgICAgICBgQXV0aGVudGljYXRpb24vR2V0VXNlckRldGFpbHNgLFxuICAgICAgICBwYXlsb2FkXG4gICAgICApO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5vblN1Ym1pdEdvb2dsZUF1dGguZW1pdChyZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbJ0ZpcnN0TmFtZSddLnNldFZhbHVlKHJlcy5GaXJzdE5hbWUpO1xuICAgICAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snTGFzdE5hbWUnXS5zZXRWYWx1ZShyZXMuTGFzdE5hbWUpO1xuICAgICAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snTWFpbEFkZHJlc3MnXS5zZXRWYWx1ZShyZXMuRW1haWwpO1xuICAgICAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snVG9rZW4nXS5zZXRWYWx1ZShyZXMuQWNjZXNzVG9rZW4pO1xuICAgICAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snU2lnblVwVHlwZSddLnNldFZhbHVlKHRoaXMudHlwZSk7XG4gICAgICAgIHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydQYXNzd29yZCddLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICB0aGlzLnVzZXJSZXF1ZXN0Rm9ybS5jb250cm9sc1snUGFzc3dvcmQnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIHRoaXMudXNlclJlcXVlc3RGb3JtLmNvbnRyb2xzWydDb25maXJtUGFzc3dvcmQnXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy51c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbXG4gICAgICAgICAgJ0NvbmZpcm1QYXNzd29yZCdcbiAgICAgICAgXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIHRoaXMuaGlkZVBhc3N3b3JkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uIFtuZ1N0eWxlXT1cInN0eWxlc1wiIGNsYXNzPVwie3sgY3VzdG9tQ2xhc3MgfX1cIj5cbiAgPGgyIGNsYXNzPVwie3sgaGVhZGluZ0NsYXNzIH19XCI+XG4gICAge3sgaGVhZGluZ1RpdGxlIH19XG4gIDwvaDI+XG5cbiAgPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cInVzZXJSZXF1ZXN0Rm9ybVwiXG4gICAgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01IG10LTNcIlxuICA+XG4gICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgIFtsYWJlbF09XCInRmlyc3QgTmFtZSdcIlxuICAgICAgW2xhYmVsQ29sb3JdPVwiJyM2NjYnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRmlyc3ROYW1lXCJcbiAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgW2JnQ29sb3JdPVwiJ3doaXRlJ1wiXG4gICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgIzY2NjY2NjU5J1wiXG4gICAgICBbYm9yZGVyUmFkaXVzXT1cIicxMnB4J1wiXG4gICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgIFtlcnJvck1lc3NhZ2VDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JCb3JkZXJDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICBjbGFzcz1cIm91dGxpbmUtbm9uZSBmb2N1cy1ub25lXCJcbiAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICBbbGFiZWxdPVwiJ0xhc3QgTmFtZSdcIlxuICAgICAgW2xhYmVsQ29sb3JdPVwiJyM2NjYnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTGFzdE5hbWVcIlxuICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICBbYmdDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjNjY2NjY2NTknXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiJzEycHgnXCJcbiAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgW2Vycm9yTWVzc2FnZUNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgIFtsYWJlbF09XCInRS1tYWlsIEFkZHJlc3MnXCJcbiAgICAgIFtsYWJlbENvbG9yXT1cIicjNjY2J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3R5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWlsQWRkcmVzc1wiXG4gICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtiZ0NvbG9yXT1cIid3aGl0ZSdcIlxuICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkICM2NjY2NjY1OSdcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCInMTJweCdcIlxuICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICBbY3VzdG9tRXJyb3JNZXNzYWdlc109XCJ7XG4gICAgICAgIHJlcXVpcmVkOiAnRW1haWwgYWRkcmVzcyBpcyByZXF1aXJlZCcsXG4gICAgICAgIGVtYWlsOiAnRW1haWwgYWRkcmVzcyBtdXN0IGJlIHZhbGlkJ1xuICAgICAgfVwiXG4gICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgKm5nSWY9XCIhaGlkZVBhc3N3b3JkXCJcbiAgICAgIFtsYWJlbF09XCInUGFzc3dvcmQnXCJcbiAgICAgIFtsYWJlbENvbG9yXT1cIicjNjY2J1wiXG4gICAgICBbcGxhY2VIb2xkZXJdPVwiJydcIlxuICAgICAgW3Bhc3N3b3JkVG9nZ2xlXT1cInRydWVcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiUGFzc3dvcmRcIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3R5cGVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtiZ0NvbG9yXT1cIid3aGl0ZSdcIlxuICAgICAgW2JvcmRlcl09XCInMXB4IHNvbGlkICM2NjY2NjY1OSdcIlxuICAgICAgW2JvcmRlclJhZGl1c109XCInMTJweCdcIlxuICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICBbZXJyb3JNZXNzYWdlQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yQm9yZGVyQ29sb3JdPVwiJ3JlZCdcIlxuICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgY2xhc3M9XCJvdXRsaW5lLW5vbmUgZm9jdXMtbm9uZVwiXG4gICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgKm5nSWY9XCIhaGlkZVBhc3N3b3JkXCJcbiAgICAgIFtsYWJlbF09XCInQ29uZmlybSBQYXNzd29yZCdcIlxuICAgICAgW2xhYmVsQ29sb3JdPVwiJyM2NjYnXCJcbiAgICAgIFtwbGFjZUhvbGRlcl09XCInJ1wiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIkNvbmZpcm1QYXNzd29yZFwiXG4gICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFtwYXNzd29yZFRvZ2dsZV09XCJ0cnVlXCJcbiAgICAgIFtiZ0NvbG9yXT1cIid3aGl0ZSdcIlxuICAgICAgW21pbkxlbmd0aF09XCJ1c2VyUmVxdWVzdEZvcm0uY29udHJvbHNbJ1Bhc3N3b3JkJ10udmFsdWU/Lmxlbmd0aFwiXG4gICAgICBbYm9yZGVyXT1cIicxcHggc29saWQgIzY2NjY2NjU5J1wiXG4gICAgICBbYm9yZGVyUmFkaXVzXT1cIicxMnB4J1wiXG4gICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgIFtlcnJvck1lc3NhZ2VDb2xvcl09XCIncmVkJ1wiXG4gICAgICBbY3VzdG9tRXJyb3JNZXNzYWdlc109XCJ7XG4gICAgICAgIG1pbkxlbmd0aDonQ29uZmlybSBQYXNzd29yZCBtdXN0IG1hdGNoIHBhc3N3b3JkJyxcbiAgICAgICAgcmVxdWlyZWQ6ICdDb25maXJtIFBhc3N3b3JkIGlzIHJlcXVpcmVkIGFuZCBtdXN0IG1hdGNoIHBhc3N3b3JkJyxcbiAgICAgICAgcGFzc3dvcmQ6ICdQYXNzd29yZCBkb2VzIG5vdCBtYXRjaCcsXG4gICAgICB9XCJcbiAgICAgIFtlcnJvckJvcmRlckNvbG9yXT1cIidyZWQnXCJcbiAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgIGNsYXNzPVwib3V0bGluZS1ub25lIGZvY3VzLW5vbmVcIlxuICAgID48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICA8dmVyYmVuYS1idXR0b25cbiAgICAgIFtjbGFzc109XCInbXQtNidcIlxuICAgICAgW2Rpc2FibGVdPVwiIXRoaXMuY2hlY2tGb3JtKClcIlxuICAgICAgW3RleHRdPVwidGV4dFwiXG4gICAgICBbYmdDb2xvcl09XCJidG5CZ0NvbG9yXCJcbiAgICAgIFt0ZXh0Q29sb3JdPVwiY29sb3JcIlxuICAgICAgW2J1dHRvbkNsYXNzXT1cIidjdXJzb3Itbm90LWFsbG93ZWQnXCJcbiAgICAgIFtib3JkZXJdPVwiYnRuQm9yZGVyXCJcbiAgICAgIFtib3JkZXJSYWRpdXNdPVwiYnRuQm9yZGVyUmFkaXVzXCJcbiAgICAgIFtwZF09XCJidG5QZFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgJ2N1cnNvci1ub3QtYWxsb3dlZCc6IWNoZWNrRm9ybSgpXG4gICAgICB9XCJcbiAgICAgIFt3aWR0aF09XCJidG5XaWR0aFwiXG4gICAgICBidXR0b25DbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtWzIycHhdIGxlYWRpbmctWzMzcHhdXCJcbiAgICA+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgPC9mb3JtPlxuXG4gIDxkaXYgY2xhc3M9XCJtdC0yXCIgKm5nSWY9XCJBdXRoTWVjaGFuaXNtcyAhPT0gbnVsbFwiPiBcbiAgICA8dmVyYmVuLW8tYXV0aCBcbiAgICAgIFthdXRoTWVjaGFuaXNtc109XCJBdXRoTWVjaGFuaXNtc1wiXG4gICAgPjwvdmVyYmVuLW8tYXV0aD5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG5cbiJdfQ==
|
package/esm2022/lib/components/user-request-approval/services/user-access-request.service.mjs
CHANGED
|
@@ -23,6 +23,10 @@ export class UserAccessRequestService {
|
|
|
23
23
|
const url = `Role/GetRoles/0/0`;
|
|
24
24
|
return this.httpService.get(url);
|
|
25
25
|
}
|
|
26
|
+
getTags() {
|
|
27
|
+
const url = `User/GetTags/0/0`;
|
|
28
|
+
return this.httpService.get(url);
|
|
29
|
+
}
|
|
26
30
|
/**
|
|
27
31
|
* Get user access requests with additional parameter, pagination and sorting
|
|
28
32
|
* @param param Search parameter
|
|
@@ -86,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
86
90
|
providedIn: 'root',
|
|
87
91
|
}]
|
|
88
92
|
}], ctorParameters: () => [{ type: i1.HttpWebRequestService }] });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hY2Nlc3MtcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcXVlc3QtYXBwcm92YWwvc2VydmljZXMvdXNlci1hY2Nlc3MtcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQWEzQyxNQUFNLE9BQU8sd0JBQXdCO0lBR2Y7SUFGSCxRQUFRLEdBQUcsTUFBTSxDQUFDO0lBRW5DLFlBQW9CLFdBQWtDO1FBQWxDLGdCQUFXLEdBQVgsV0FBVyxDQUF1QjtJQUFHLENBQUM7SUFFMUQ7Ozs7Ozs7T0FPRztJQUNILHFCQUFxQixDQUNuQixJQUFZLEVBQ1osS0FBYSxFQUNiLFNBQWlCLEVBQ2pCLFNBQWlCO1FBRWpCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsMEJBQTBCLElBQUksSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2hHLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFzQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxHQUFHLEdBQUcsbUJBQW1CLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQXlCLENBQUM7SUFDM0QsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBd0IsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCw2QkFBNkIsQ0FDM0IsS0FBYSxFQUNiLElBQVksRUFDWixLQUFhLEVBQ2IsU0FBaUIsRUFDakIsU0FBaUI7UUFFakIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxrQ0FBa0MsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFzQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGtDQUFrQyxDQUNoQyxNQUE2QixFQUM3QixJQUFZLEVBQ1osS0FBYSxFQUNiLFNBQWlCLEVBQ2pCLFNBQWlCO1FBRWpCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsNEJBQTRCLElBQUksSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2xHLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FFdkMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsc0JBQXNCLENBQUMsUUFBNkI7UUFDbEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSx5QkFBeUIsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx5QkFBeUIsQ0FDdkIsUUFBNkIsRUFDN0IsVUFBbUI7UUFFbkIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSw0QkFBNEIsVUFBVSxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3QkFBd0IsQ0FBQyxVQUFvQjtRQUMzQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLDJCQUEyQixDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFNBQVMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQzt3R0EzR1Usd0JBQXdCOzRHQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7NEZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJBY2Nlc3NSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3VzZXItYWNjZXNzLXJlcXVlc3QnO1xuaW1wb3J0IHsgUGFnZWQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcGFnZWQnO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Sb2xlJztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9UYWcnO1xuaW1wb3J0IHsgU2VhcmNoUHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9TZWFyY2hQcm9wZXJ0eVZhbHVlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJBY2Nlc3NSZXF1ZXN0U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgQkFTRV9VUkwgPSAnVXNlcic7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgdXNlciBhY2Nlc3MgcmVxdWVzdHMgd2l0aCBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nXG4gICAqIEBwYXJhbSBza2lwIE51bWJlciBvZiByZWNvcmRzIHRvIHNraXBcbiAgICogQHBhcmFtIGxpbWl0IE51bWJlciBvZiByZWNvcmRzIHRvIHRha2VcbiAgICogQHBhcmFtIHNvcnRQYXJhbSBTb3J0IHBhcmFtZXRlclxuICAgKiBAcGFyYW0gc29ydE9yZGVyIFNvcnQgb3JkZXIgKCdhc2MnIG9yICdkZXNjJylcbiAgICogQHJldHVybnMgUHJvbWlzZSBjb250YWluaW5nIHRoZSB1c2VyIGFjY2VzcyByZXF1ZXN0c1xuICAgKi9cbiAgZ2V0VXNlckFjY2Vzc1JlcXVlc3RzKFxuICAgIHNraXA6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyLFxuICAgIHNvcnRQYXJhbTogc3RyaW5nLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nXG4gICk6IFByb21pc2U8UGFnZWQ8VXNlckFjY2Vzc1JlcXVlc3Q+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5CQVNFX1VSTH0vR2V0VXNlckFjY2Vzc1JlcXVlc3RzLyR7c2tpcH0vJHtsaW1pdH0vJHtzb3J0UGFyYW19LyR7c29ydE9yZGVyfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxVc2VyQWNjZXNzUmVxdWVzdD4+O1xuICB9XG5cbiAgZ2V0Um9sZXMoKTogUHJvbWlzZTxQYWdlZDxSb2xlPj4ge1xuICAgIGNvbnN0IHVybCA9IGBSb2xlL0dldFJvbGVzLzAvMGA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxSb2xlPj47XG4gIH1cblxuICBnZXRUYWdzKCk6IFByb21pc2U8UGFnZWQ8VGFnPj4ge1xuICAgIGNvbnN0IHVybCA9IGBVc2VyL0dldFRhZ3MvMC8wYDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQodXJsKSBhcyBQcm9taXNlPFBhZ2VkPFRhZz4+O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB1c2VyIGFjY2VzcyByZXF1ZXN0cyB3aXRoIGFkZGl0aW9uYWwgcGFyYW1ldGVyLCBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nXG4gICAqIEBwYXJhbSBwYXJhbSBTZWFyY2ggcGFyYW1ldGVyXG4gICAqIEBwYXJhbSBza2lwIE51bWJlciBvZiByZWNvcmRzIHRvIHNraXBcbiAgICogQHBhcmFtIGxpbWl0IE51bWJlciBvZiByZWNvcmRzIHRvIHRha2VcbiAgICogQHBhcmFtIHNvcnRQYXJhbSBTb3J0IHBhcmFtZXRlclxuICAgKiBAcGFyYW0gc29ydE9yZGVyIFNvcnQgb3JkZXIgKCdhc2MnIG9yICdkZXNjJylcbiAgICogQHJldHVybnMgUHJvbWlzZSBjb250YWluaW5nIHRoZSBmaWx0ZXJlZCB1c2VyIGFjY2VzcyByZXF1ZXN0c1xuICAgKi9cbiAgZ2V0VXNlckFjY2Vzc1JlcXVlc3RXaXRoUGFyYW0oXG4gICAgcGFyYW06IHN0cmluZyxcbiAgICBza2lwOiBudW1iZXIsXG4gICAgbGltaXQ6IG51bWJlcixcbiAgICBzb3J0UGFyYW06IHN0cmluZyxcbiAgICBzb3J0T3JkZXI6IHN0cmluZ1xuICApOiBQcm9taXNlPFBhZ2VkPFVzZXJBY2Nlc3NSZXF1ZXN0Pj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuQkFTRV9VUkx9L0dldFVzZXJBY2Nlc3NSZXF1ZXN0V2l0aFBhcmFtLyR7cGFyYW19LyR7c2tpcH0vJHtsaW1pdH0vJHtzb3J0UGFyYW19LyR7c29ydE9yZGVyfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxVc2VyQWNjZXNzUmVxdWVzdD4+O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB1c2VyIGFjY2VzcyByZXF1ZXN0cyB3aXRoIGFkZGl0aW9uYWwgcGFyYW1ldGVyLCBwYWdpbmF0aW9uIGFuZCBzb3J0aW5nXG4gICAqIEBwYXJhbSBwYXJhbXMgRmlsdGVyIHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHNraXAgTnVtYmVyIG9mIHJlY29yZHMgdG8gc2tpcFxuICAgKiBAcGFyYW0gbGltaXQgTnVtYmVyIG9mIHJlY29yZHMgdG8gdGFrZVxuICAgKiBAcGFyYW0gc29ydFBhcmFtIFNvcnQgcGFyYW1ldGVyXG4gICAqIEBwYXJhbSBzb3J0T3JkZXIgU29ydCBvcmRlciAoJ2FzYycgb3IgJ2Rlc2MnKVxuICAgKiBAcmV0dXJucyBQcm9taXNlIGNvbnRhaW5pbmcgdGhlIGZpbHRlcmVkIHVzZXIgYWNjZXNzIHJlcXVlc3RzXG4gICAqL1xuICBnZXRVc2VyQWNjZXNzUmVxdWVzdEJ5RmlsdGVyUGFyYW1zKFxuICAgIHBhcmFtczogU2VhcmNoUHJvcGVydHlWYWx1ZVtdLFxuICAgIHNraXA6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyLFxuICAgIHNvcnRQYXJhbTogc3RyaW5nLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nXG4gICk6IFByb21pc2U8UGFnZWQ8VXNlckFjY2Vzc1JlcXVlc3Q+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5CQVNFX1VSTH0vU2VhcmNoVXNlckFjY2Vzc1JlcXVlc3QvJHtza2lwfS8ke2xpbWl0fS8ke3NvcnRQYXJhbX0vJHtzb3J0T3JkZXJ9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KHVybCwgcGFyYW1zKSBhcyBQcm9taXNlPFxuICAgICAgUGFnZWQ8VXNlckFjY2Vzc1JlcXVlc3Q+XG4gICAgPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIG11bHRpcGxlIHVzZXIgYWNjZXNzIHJlcXVlc3RzXG4gICAqIEBwYXJhbSByZXF1ZXN0cyBBcnJheSBvZiB1c2VyIGFjY2VzcyByZXF1ZXN0cyB0byBzYXZlXG4gICAqIEByZXR1cm5zIFByb21pc2UgY29udGFpbmluZyB0aGUgc2F2ZSBvcGVyYXRpb24gcmVzdWx0XG4gICAqL1xuICBzYXZlVXNlckFjY2Vzc1JlcXVlc3RzKHJlcXVlc3RzOiBVc2VyQWNjZXNzUmVxdWVzdFtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLkJBU0VfVVJMfS9TYXZlVXNlckFjY2Vzc1JlcXVlc3RzYDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KHVybCwgcmVxdWVzdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcHJvdmUgb3IgcmVqZWN0IG11bHRpcGxlIHVzZXIgYWNjZXNzIHJlcXVlc3RzXG4gICAqIEBwYXJhbSByZXF1ZXN0cyBBcnJheSBvZiB1c2VyIGFjY2VzcyByZXF1ZXN0cyB0byBzYXZlXG4gICAqIEBwYXJhbSBpc0FwcHJvdmFsIFRydWUgZm9yIGFwcHJvdmFsLCBmYWxzZSBmb3IgZGVjbGluZVxuICAgKiBAcmV0dXJucyBQcm9taXNlIGNvbnRhaW5pbmcgdGhlIHNhdmUgb3BlcmF0aW9uIHJlc3VsdFxuICAgKi9cbiAgcHJvY2Vzc1VzZXJBY2Nlc3NSZXF1ZXN0cyhcbiAgICByZXF1ZXN0czogVXNlckFjY2Vzc1JlcXVlc3RbXSxcbiAgICBpc0FwcHJvdmFsOiBib29sZWFuXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5CQVNFX1VSTH0vVXNlckFjY2Vzc1JlcXVlc3RBY3Rpb24vJHtpc0FwcHJvdmFsfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucG9zdCh1cmwsIHJlcXVlc3RzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgbXVsdGlwbGUgdXNlciBhY2Nlc3MgcmVxdWVzdHNcbiAgICogQHBhcmFtIHJlcXVlc3RJZHMgQXJyYXkgb2YgcmVxdWVzdCBJRHMgdG8gZGVsZXRlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgY29udGFpbmluZyB0aGUgZGVsZXRlIG9wZXJhdGlvbiByZXN1bHRcbiAgICovXG4gIGRlbGV0ZVVzZXJBY2Nlc3NSZXF1ZXN0cyhyZXF1ZXN0SWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5CQVNFX1VSTH0vRGVsZXRlVXNlckFjY2Vzc1JlcXVlc3RzYDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5kZWxldGUoYCR7dXJsfT9kYXRhPSR7cmVxdWVzdElkcy5qb2luKCcsJyl9YCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { SortDirection } from '../../../models/SortDirection';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export class UserAccessRequestState {
|
|
5
6
|
updating$ = new BehaviorSubject(false);
|
|
@@ -10,7 +11,7 @@ export class UserAccessRequestState {
|
|
|
10
11
|
skip: 0,
|
|
11
12
|
limit: 20,
|
|
12
13
|
sortParam: 'CreatedAt',
|
|
13
|
-
sortOrder:
|
|
14
|
+
sortOrder: SortDirection.Asc,
|
|
14
15
|
});
|
|
15
16
|
filterParams$ = new BehaviorSubject([]);
|
|
16
17
|
isUpdating$() {
|
|
@@ -88,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
88
89
|
providedIn: 'root',
|
|
89
90
|
}]
|
|
90
91
|
}] });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hY2Nlc3MtcmVxdWVzdC5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1yZXF1ZXN0LWFwcHJvdmFsL3N0YXRlcy91c2VyLWFjY2Vzcy1yZXF1ZXN0LnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUluRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTTlELE1BQU0sT0FBTyxzQkFBc0I7SUFDekIsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hELFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsRUFBRSxDQUFDLENBQUM7SUFDekQsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUM5QyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQWlDO1FBQ3pFLElBQUksRUFBRSxDQUFDO1FBQ1AsS0FBSyxFQUFFLEVBQUU7UUFDVCxTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsYUFBYSxDQUFDLEdBQUc7S0FDN0IsQ0FBQyxDQUFDO0lBQ0ssYUFBYSxHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQUUvRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBbUI7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEMs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RCxhQUFhLENBQUMsU0FBaUI7UUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQzt3R0FoR1Usc0JBQXNCOzRHQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUXVlcnlQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcXVlcnktcGFyYW1zJztcbmltcG9ydCB7IFVzZXJBY2Nlc3NSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3VzZXItYWNjZXNzLXJlcXVlc3QnO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9Sb2xlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvU29ydERpcmVjdGlvbic7XG5pbXBvcnQgeyBJRGF0YUZpbHRlciB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBVc2VyQWNjZXNzUmVxdWVzdFN0YXRlIHtcbiAgcHJpdmF0ZSB1cGRhdGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZXF1ZXN0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXJBY2Nlc3NSZXF1ZXN0W10+KFtdKTtcbiAgcHJpdmF0ZSByb2xlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJvbGVbXT4oW10pO1xuICBwcml2YXRlIHNlYXJjaFRlcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBxdWVyeVBhcmFtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5UGFyYW1zPFVzZXJBY2Nlc3NSZXF1ZXN0Pj4oe1xuICAgIHNraXA6IDAsXG4gICAgbGltaXQ6IDIwLFxuICAgIHNvcnRQYXJhbTogJ0NyZWF0ZWRBdCcsXG4gICAgc29ydE9yZGVyOiBTb3J0RGlyZWN0aW9uLkFzYyxcbiAgfSk7XG4gIHByaXZhdGUgZmlsdGVyUGFyYW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFGaWx0ZXJbXT4oW10pO1xuXG4gIGlzVXBkYXRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0aW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldFVwZGF0aW5nKGlzVXBkYXRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0aW5nJC5uZXh0KGlzVXBkYXRpbmcpO1xuICB9XG5cbiAgZ2V0UmVxdWVzdHMkKCk6IE9ic2VydmFibGU8VXNlckFjY2Vzc1JlcXVlc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3RzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldFJlcXVlc3RzKHJlcXVlc3RzOiBVc2VyQWNjZXNzUmVxdWVzdFtdKTogdm9pZCB7XG4gICAgdGhpcy5yZXF1ZXN0cyQubmV4dChyZXF1ZXN0cyk7XG4gIH1cblxuICBnZXRGaWx0ZXJQYXJhbXMkKCk6IE9ic2VydmFibGU8SURhdGFGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlclBhcmFtcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzZXRGaWx0ZXJQYXJhbXMocGFyYW1zOiBJRGF0YUZpbHRlcltdKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJQYXJhbXMkLm5leHQocGFyYW1zKTtcbiAgfVxuXG4gIGdldFJvbGVzJCgpOiBPYnNlcnZhYmxlPFJvbGVbXT4ge1xuICAgIHJldHVybiB0aGlzLnJvbGVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldFJvbGVzKHJvbGVzOiBSb2xlW10pOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVzJC5uZXh0KHJvbGVzKTtcbiAgfVxuXG4gIGFwcGVuZFJlcXVlc3RzKG5ld1JlcXVlc3RzOiBVc2VyQWNjZXNzUmVxdWVzdFtdKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFJlcXVlc3RzID0gdGhpcy5yZXF1ZXN0cyQuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLnJlcXVlc3RzJC5uZXh0KFsuLi5jdXJyZW50UmVxdWVzdHMsIC4uLm5ld1JlcXVlc3RzXSk7XG4gIH1cblxuICBnZXRTZWFyY2hUZXJtJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFRlcm0kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0U2VhcmNoVGVybVZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoVGVybSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHNldFNlYXJjaFRlcm0odGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtJC5uZXh0KHRlcm0pO1xuICB9XG5cbiAgZ2V0UXVlcnlQYXJhbXMkKCk6IE9ic2VydmFibGU8UXVlcnlQYXJhbXM8VXNlckFjY2Vzc1JlcXVlc3Q+PiB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlQYXJhbXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0UXVlcnlQYXJhbXNWYWx1ZSgpOiBRdWVyeVBhcmFtczxVc2VyQWNjZXNzUmVxdWVzdD4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5UGFyYW1zJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgdXBkYXRlUXVlcnlQYXJhbXMocGFyYW1zOiBQYXJ0aWFsPFF1ZXJ5UGFyYW1zPFVzZXJBY2Nlc3NSZXF1ZXN0Pj4pOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zJC5uZXh0KHsgLi4udGhpcy5xdWVyeVBhcmFtcyQuZ2V0VmFsdWUoKSwgLi4ucGFyYW1zIH0pO1xuICB9XG5cbiAgcmVzZXRQYWdpbmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB0aGlzLnF1ZXJ5UGFyYW1zJC5nZXRWYWx1ZSgpO1xuICAgIHRoaXMucXVlcnlQYXJhbXMkLm5leHQoeyAuLi5jdXJyZW50UGFyYW1zLCBza2lwOiAwIH0pO1xuICB9XG5cbiAgYWRkUmVxdWVzdChyZXF1ZXN0OiBVc2VyQWNjZXNzUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMucmVxdWVzdHMkLmdldFZhbHVlKCk7XG4gICAgdGhpcy5yZXF1ZXN0cyQubmV4dChbLi4uY3VycmVudFZhbHVlLCByZXF1ZXN0XSk7XG4gIH1cblxuICB1cGRhdGVSZXF1ZXN0KHVwZGF0ZWRSZXF1ZXN0OiBVc2VyQWNjZXNzUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5yZXF1ZXN0cyQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBpbmRleCA9IHJlcXVlc3RzLmZpbmRJbmRleCgocikgPT4gci5JZCA9PT0gdXBkYXRlZFJlcXVlc3QuSWQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJlcXVlc3RzW2luZGV4XSA9IHVwZGF0ZWRSZXF1ZXN0O1xuICAgICAgdGhpcy5yZXF1ZXN0cyQubmV4dChbLi4ucmVxdWVzdHNdKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVSZXF1ZXN0KHJlcXVlc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5yZXF1ZXN0cyQuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLnJlcXVlc3RzJC5uZXh0KGN1cnJlbnRWYWx1ZS5maWx0ZXIoKHIpID0+IHIuSWQgIT09IHJlcXVlc3RJZCkpO1xuICB9XG59XG4iXX0=
|