@tsi-developpement/tsi-shared-ui 1.8.11 → 1.8.13
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/end-points/endpoints.mjs +2 -2
- package/esm2022/lib/end-points/user-identity-endpoints.mjs +5 -1
- package/esm2022/lib/guards/admin.guard.mjs +2 -2
- package/esm2022/lib/models/layout/channel-validation-result.mjs +2 -0
- package/esm2022/lib/services/UserIdentity/identity-platform-authentication.service.mjs +16 -1
- package/esm2022/lib/shared.module.mjs +8 -4
- package/esm2022/lib/tsi-components/index.mjs +2 -1
- package/esm2022/lib/tsi-components/mfa-components/verification-code/verification-code.component.mjs +22 -9
- package/esm2022/lib/tsi-components/mfa-components/verification-code-inscription/verification-code-inscription.component.mjs +175 -0
- package/esm2022/lib/tsi-components/mfa-components/verification-code-sms/verification-code-sms.component.mjs +19 -6
- package/esm2022/lib/tsi-components/reporting/reporting.component.mjs +4 -1
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +237 -19
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/end-points/user-identity-endpoints.d.ts +4 -0
- package/lib/models/layout/channel-validation-result.d.ts +5 -0
- package/lib/services/UserIdentity/identity-platform-authentication.service.d.ts +4 -1
- package/lib/shared.module.d.ts +56 -55
- package/lib/tsi-components/index.d.ts +1 -0
- package/lib/tsi-components/mfa-components/verification-code/verification-code.component.d.ts +1 -0
- package/lib/tsi-components/mfa-components/verification-code-inscription/verification-code-inscription.component.d.ts +36 -0
- package/lib/tsi-components/mfa-components/verification-code-sms/verification-code-sms.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output, ViewChildren } from '@angular/core';
|
|
2
|
+
import { MFAEnum } from '../../../enums';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "primeng/dynamicdialog";
|
|
5
|
+
import * as i2 from "../../../services/UserIdentity/identity-platform-authentication.service";
|
|
6
|
+
import * as i3 from "../../../services/notification/error-response-manager.service";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class VerificationCodeInscriptionComponent {
|
|
9
|
+
constructor(dialogRef, config, _identityPlatformAuthenticationService, _errorResponseManagerService) {
|
|
10
|
+
this.dialogRef = dialogRef;
|
|
11
|
+
this.config = config;
|
|
12
|
+
this._identityPlatformAuthenticationService = _identityPlatformAuthenticationService;
|
|
13
|
+
this._errorResponseManagerService = _errorResponseManagerService;
|
|
14
|
+
this.codeEntered = new EventEmitter();
|
|
15
|
+
this.code = new Array(6).fill('');
|
|
16
|
+
this.showChannelChoice = false;
|
|
17
|
+
this.smsResent = false;
|
|
18
|
+
this.isResendDisabled = false;
|
|
19
|
+
this.resendDelay = 60;
|
|
20
|
+
this.isSubmitting = false;
|
|
21
|
+
this.verificationTypeText = '';
|
|
22
|
+
this.email = this.config.data.email;
|
|
23
|
+
this.choix = this.config.data.choix;
|
|
24
|
+
this.isMFAEnabled = this.config.data.isMFAEnabled;
|
|
25
|
+
}
|
|
26
|
+
onInput(event, index) {
|
|
27
|
+
const input = event.target;
|
|
28
|
+
let value = input.value.replace(/[^0-9]/g, '');
|
|
29
|
+
if (!value) {
|
|
30
|
+
this.code[index] = '';
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const newValue = value.charAt(0);
|
|
34
|
+
if (this.code[index] === newValue)
|
|
35
|
+
return;
|
|
36
|
+
this.code[index] = newValue;
|
|
37
|
+
input.value = newValue;
|
|
38
|
+
if (index < 5) {
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
const nextInput = this.codeInputs.toArray()[index + 1].nativeElement;
|
|
41
|
+
nextInput.focus();
|
|
42
|
+
nextInput.value = '';
|
|
43
|
+
}, 10);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
if (this.choix === null) {
|
|
48
|
+
if (this.isMFAEnabled === MFAEnum.Email) {
|
|
49
|
+
this.verificationTypeText = "Email";
|
|
50
|
+
}
|
|
51
|
+
else if (this.isMFAEnabled === MFAEnum.SMS) {
|
|
52
|
+
this.verificationTypeText = "SMS";
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
if (this.choix === MFAEnum.Email) {
|
|
57
|
+
this.verificationTypeText = "Email";
|
|
58
|
+
}
|
|
59
|
+
else if (this.choix === MFAEnum.SMS) {
|
|
60
|
+
this.verificationTypeText = "SMS";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
console.log("1 choixxx", this.choix, ":::::", this.verificationTypeText);
|
|
64
|
+
console.log("1 isMFAEnabled", this.isMFAEnabled, ":::::", this.verificationTypeText);
|
|
65
|
+
this.envoyerCodeSms();
|
|
66
|
+
}
|
|
67
|
+
envoyerCodeSms() {
|
|
68
|
+
if (!this.email)
|
|
69
|
+
return;
|
|
70
|
+
this._identityPlatformAuthenticationService
|
|
71
|
+
.resendVerificationCodeEmail(this.email)
|
|
72
|
+
.subscribe({
|
|
73
|
+
next: () => {
|
|
74
|
+
this.smsResent = true;
|
|
75
|
+
this.isResendDisabled = true;
|
|
76
|
+
this.lancerCompteRebours();
|
|
77
|
+
},
|
|
78
|
+
error: (response) => {
|
|
79
|
+
this._errorResponseManagerService.showErrorMessage(response);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
lancerCompteRebours() {
|
|
84
|
+
this.countdownInterval = setInterval(() => {
|
|
85
|
+
this.resendDelay--;
|
|
86
|
+
if (this.resendDelay <= 0) {
|
|
87
|
+
clearInterval(this.countdownInterval);
|
|
88
|
+
this.isResendDisabled = false;
|
|
89
|
+
this.resendDelay = 30;
|
|
90
|
+
}
|
|
91
|
+
}, 1000);
|
|
92
|
+
}
|
|
93
|
+
onKeyDown(event, index) {
|
|
94
|
+
const input = event.target;
|
|
95
|
+
if (event.key === 'Backspace' && !input.value && index > 0) {
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
this.code[index] = '';
|
|
98
|
+
const prevInput = this.codeInputs.toArray()[index - 1].nativeElement;
|
|
99
|
+
prevInput.focus();
|
|
100
|
+
prevInput.value = '';
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
onPaste(event) {
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
const pasteData = event.clipboardData?.getData('text/plain').replace(/[^0-9]/g, '');
|
|
106
|
+
if (pasteData && pasteData.length === 6) {
|
|
107
|
+
this.handlePastedCode(pasteData);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
handlePastedCode(pastedCode) {
|
|
111
|
+
for (let i = 0; i < 6; i++) {
|
|
112
|
+
this.code[i] = pastedCode.charAt(i);
|
|
113
|
+
this.codeInputs.toArray()[i].nativeElement.value = this.code[i];
|
|
114
|
+
}
|
|
115
|
+
setTimeout(() => this.codeInputs.last.nativeElement.focus(), 10);
|
|
116
|
+
}
|
|
117
|
+
submitCode() {
|
|
118
|
+
const finalCode = this.code.join('');
|
|
119
|
+
if (finalCode.length !== 6) {
|
|
120
|
+
this._errorResponseManagerService.showErrorMessagesFromArrayString(["Veuillez entrer un code valide de 6 chiffres."]);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
this.isSubmitting = true;
|
|
124
|
+
this._identityPlatformAuthenticationService
|
|
125
|
+
.verifySmsCode(this.email, finalCode)
|
|
126
|
+
.subscribe({
|
|
127
|
+
next: (res) => {
|
|
128
|
+
this.isSubmitting = false;
|
|
129
|
+
if (!res?.error) {
|
|
130
|
+
this.codeEntered.emit(finalCode);
|
|
131
|
+
this.dialogRef.close(finalCode);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this._errorResponseManagerService.showErrorMessagesFromArrayString(['Code invalide.']);
|
|
135
|
+
this.code = new Array(6).fill('');
|
|
136
|
+
setTimeout(() => this.codeInputs.first?.nativeElement.focus(), 0);
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
error: (response) => {
|
|
140
|
+
this.isSubmitting = false;
|
|
141
|
+
this._errorResponseManagerService.showErrorMessage(response);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
resendVerificationSms(event) {
|
|
147
|
+
event.preventDefault();
|
|
148
|
+
if (this.isResendDisabled)
|
|
149
|
+
return;
|
|
150
|
+
this._identityPlatformAuthenticationService.resendVerificationCodeEmail(this.email).subscribe(() => {
|
|
151
|
+
this.smsResent = true;
|
|
152
|
+
this.isResendDisabled = true;
|
|
153
|
+
this.countdownInterval = setInterval(() => {
|
|
154
|
+
this.resendDelay--;
|
|
155
|
+
if (this.resendDelay <= 0) {
|
|
156
|
+
clearInterval(this.countdownInterval);
|
|
157
|
+
this.isResendDisabled = false;
|
|
158
|
+
this.resendDelay = 30;
|
|
159
|
+
}
|
|
160
|
+
}, 1000);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VerificationCodeInscriptionComponent, deps: [{ token: i1.DynamicDialogRef }, { token: i1.DynamicDialogConfig }, { token: i2.IdentityPlatformAuthenticationService }, { token: i3.ErrorResponseManagerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
164
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: VerificationCodeInscriptionComponent, selector: "app-verification-code-inscription", outputs: { codeEntered: "codeEntered" }, viewQueries: [{ propertyName: "codeInputs", predicate: ["codeInput"], descendants: true }], ngImport: i0, template: "<div class=\"verification-container\">\r\n <h2>Entrez le code de v\u00E9rification {{ verificationTypeText }}</h2>\r\n <p>Un code a \u00E9t\u00E9 envoy\u00E9 \u00E0 votre {{ verificationTypeText | lowercase }}.</p>\r\n\r\n <div class=\"code-inputs\">\r\n <input *ngFor=\"let digit of code; let i = index\" #codeInput type=\"text\" maxlength=\"1\" pattern=\"[0-9]*\"\r\n inputmode=\"numeric\" [value]=\"code[i]\" (input)=\"onInput($event, i)\" \r\n (keydown)=\"onKeyDown($event, i)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <button (click)=\"submitCode()\" [disabled]=\"isSubmitting\">Valider</button>\r\n <div class=\"resend-link\">\r\n <p *ngIf=\"!smsResent\">\r\n Vous n'avez pas re\u00E7u le code ?\r\n <a href=\"#\" (click)=\"resendVerificationSms($event)\" [class.disabled]=\"isResendDisabled\">\r\n Renvoyer le code {{ verificationTypeText }}\r\n <span *ngIf=\"isResendDisabled\">({{resendDelay}}s)</span>\r\n </a>\r\n </p>\r\n\r\n <p *ngIf=\"smsResent\" class=\"success-message\">\r\n {{ verificationTypeText }} renvoy\u00E9 avec succ\u00E8s !\r\n <a href=\"#\" (click)=\"resendVerificationSms($event)\" *ngIf=\"!isResendDisabled\">\r\n Renvoyer \u00E0 nouveau\r\n </a>\r\n <span *ngIf=\"isResendDisabled\">Attendez {{resendDelay}} secondes</span>\r\n </p>\r\n </div>\r\n</div>\r\n\r\n", styles: [".verification-container{text-align:center;padding:20px}.code-inputs{display:flex;justify-content:center;gap:10px;margin:20px 0}.code-inputs input{width:40px;height:40px;text-align:center;font-size:20px;border:2px solid #ccc;border-radius:5px}button{background-color:#007bff;color:#fff;border:none;padding:10px 20px;cursor:pointer;font-size:16px;border-radius:5px}button:hover{background-color:#0056b3}.resend-link{margin-top:15px;text-align:center;font-size:14px}.resend-link a{color:#007bff;text-decoration:none;cursor:pointer}.resend-link a:hover:not(.disabled){text-decoration:underline}.resend-link a.disabled{color:#6c757d;cursor:not-allowed;opacity:.7}.success-message{color:#28a745}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.LowerCasePipe, name: "lowercase" }] }); }
|
|
165
|
+
}
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VerificationCodeInscriptionComponent, decorators: [{
|
|
167
|
+
type: Component,
|
|
168
|
+
args: [{ selector: 'app-verification-code-inscription', template: "<div class=\"verification-container\">\r\n <h2>Entrez le code de v\u00E9rification {{ verificationTypeText }}</h2>\r\n <p>Un code a \u00E9t\u00E9 envoy\u00E9 \u00E0 votre {{ verificationTypeText | lowercase }}.</p>\r\n\r\n <div class=\"code-inputs\">\r\n <input *ngFor=\"let digit of code; let i = index\" #codeInput type=\"text\" maxlength=\"1\" pattern=\"[0-9]*\"\r\n inputmode=\"numeric\" [value]=\"code[i]\" (input)=\"onInput($event, i)\" \r\n (keydown)=\"onKeyDown($event, i)\" (paste)=\"onPaste($event)\">\r\n </div>\r\n\r\n <button (click)=\"submitCode()\" [disabled]=\"isSubmitting\">Valider</button>\r\n <div class=\"resend-link\">\r\n <p *ngIf=\"!smsResent\">\r\n Vous n'avez pas re\u00E7u le code ?\r\n <a href=\"#\" (click)=\"resendVerificationSms($event)\" [class.disabled]=\"isResendDisabled\">\r\n Renvoyer le code {{ verificationTypeText }}\r\n <span *ngIf=\"isResendDisabled\">({{resendDelay}}s)</span>\r\n </a>\r\n </p>\r\n\r\n <p *ngIf=\"smsResent\" class=\"success-message\">\r\n {{ verificationTypeText }} renvoy\u00E9 avec succ\u00E8s !\r\n <a href=\"#\" (click)=\"resendVerificationSms($event)\" *ngIf=\"!isResendDisabled\">\r\n Renvoyer \u00E0 nouveau\r\n </a>\r\n <span *ngIf=\"isResendDisabled\">Attendez {{resendDelay}} secondes</span>\r\n </p>\r\n </div>\r\n</div>\r\n\r\n", styles: [".verification-container{text-align:center;padding:20px}.code-inputs{display:flex;justify-content:center;gap:10px;margin:20px 0}.code-inputs input{width:40px;height:40px;text-align:center;font-size:20px;border:2px solid #ccc;border-radius:5px}button{background-color:#007bff;color:#fff;border:none;padding:10px 20px;cursor:pointer;font-size:16px;border-radius:5px}button:hover{background-color:#0056b3}.resend-link{margin-top:15px;text-align:center;font-size:14px}.resend-link a{color:#007bff;text-decoration:none;cursor:pointer}.resend-link a:hover:not(.disabled){text-decoration:underline}.resend-link a.disabled{color:#6c757d;cursor:not-allowed;opacity:.7}.success-message{color:#28a745}\n"] }]
|
|
169
|
+
}], ctorParameters: () => [{ type: i1.DynamicDialogRef }, { type: i1.DynamicDialogConfig }, { type: i2.IdentityPlatformAuthenticationService }, { type: i3.ErrorResponseManagerService }], propDecorators: { codeEntered: [{
|
|
170
|
+
type: Output
|
|
171
|
+
}], codeInputs: [{
|
|
172
|
+
type: ViewChildren,
|
|
173
|
+
args: ['codeInput']
|
|
174
|
+
}] } });
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUtaW5zY3JpcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21mYS1jb21wb25lbnRzL3ZlcmlmaWNhdGlvbi1jb2RlLWluc2NyaXB0aW9uL3ZlcmlmaWNhdGlvbi1jb2RlLWluc2NyaXB0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tZmEtY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS1pbnNjcmlwdGlvbi92ZXJpZmljYXRpb24tY29kZS1pbnNjcmlwdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXJHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBT3pDLE1BQU0sT0FBTyxvQ0FBb0M7SUFnQi9DLFlBQ1MsU0FBMkIsRUFDM0IsTUFBMkIsRUFDMUIsc0NBQTZFLEVBQzdFLDRCQUF5RDtRQUgxRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxQiwyQ0FBc0MsR0FBdEMsc0NBQXNDLENBQXVDO1FBQzdFLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBNkI7UUFuQnpELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVuRCxTQUFJLEdBQWEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBSXZDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQix5QkFBb0IsR0FBVyxFQUFFLENBQUE7UUFPL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZLEVBQUUsS0FBYTtRQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRO1lBQUUsT0FBTztRQUUxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUM1QixLQUFLLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUV2QixJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUNyRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLFNBQVMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNULENBQUM7SUFDSCxDQUFDO0lBR0QsUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQ25CLENBQUM7WUFDQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFBO1lBQ3JDLENBQUM7aUJBQ0ksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQTtZQUNuQyxDQUFDO1FBQ0gsQ0FBQzthQUVELENBQUM7WUFDQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFBO1lBQ3JDLENBQUM7aUJBQ0ksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQTtZQUNuQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQ3hFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFFcEYsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFeEIsSUFBSSxDQUFDLHNDQUFzQzthQUN4QywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3ZDLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzdCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxRQUEyQixFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMxQixhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQW9CLEVBQUUsS0FBYTtRQUMzQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUNyRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBcUI7UUFDM0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEYsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxVQUFrQjtRQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLCtDQUErQyxDQUFDLENBQUMsQ0FBQztZQUN0SCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxzQ0FBc0M7YUFDeEMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFFMUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLDRCQUE0QixDQUFDLGdDQUFnQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO29CQUN2RixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDcEUsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxRQUEyQixFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdELE9BQU87WUFDVCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELHFCQUFxQixDQUFDLEtBQVk7UUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU87UUFFbEMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFFN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMxQixhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7b0JBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWpMVSxvQ0FBb0M7bUdBQXBDLG9DQUFvQyw4TUNaakQsODJDQThCQTs7NEZEbEJhLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDRSxtQ0FBbUM7cU5BS25DLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ29CLFVBQVU7c0JBQXBDLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgSWRlbnRpdHlQbGF0Zm9ybUF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL1VzZXJJZGVudGl0eS9pZGVudGl0eS1wbGF0Zm9ybS1hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL2Vycm9yLXJlc3BvbnNlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1GQUVudW0gfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC12ZXJpZmljYXRpb24tY29kZS1pbnNjcmlwdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcmlmaWNhdGlvbi1jb2RlLWluc2NyaXB0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92ZXJpZmljYXRpb24tY29kZS1pbnNjcmlwdGlvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZXJpZmljYXRpb25Db2RlSW5zY3JpcHRpb25Db21wb25lbnQge1xyXG4gIEBPdXRwdXQoKSBjb2RlRW50ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2NvZGVJbnB1dCcpIGNvZGVJbnB1dHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgY29kZTogc3RyaW5nW10gPSBuZXcgQXJyYXkoNikuZmlsbCgnJyk7XHJcbiAgZW1haWw6IHN0cmluZztcclxuICBjaG9peDogbnVtYmVyO1xyXG4gIGlzTUZBRW5hYmxlZDogbnVtYmVyO1xyXG4gIHNob3dDaGFubmVsQ2hvaWNlID0gZmFsc2U7XHJcbiAgc21zUmVzZW50ID0gZmFsc2U7XHJcbiAgaXNSZXNlbmREaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHJlc2VuZERlbGF5ID0gNjA7XHJcbiAgY291bnRkb3duSW50ZXJ2YWw6IGFueTtcclxuICBpc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuXHJcblxyXG4gIHZlcmlmaWNhdGlvblR5cGVUZXh0OiBzdHJpbmcgPSAnJ1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogRHluYW1pY0RpYWxvZ1JlZixcclxuICAgIHB1YmxpYyBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXHJcbiAgICBwcml2YXRlIF9pZGVudGl0eVBsYXRmb3JtQXV0aGVudGljYXRpb25TZXJ2aWNlOiBJZGVudGl0eVBsYXRmb3JtQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlOiBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmVtYWlsID0gdGhpcy5jb25maWcuZGF0YS5lbWFpbDtcclxuICAgIHRoaXMuY2hvaXggPSB0aGlzLmNvbmZpZy5kYXRhLmNob2l4O1xyXG4gICAgdGhpcy5pc01GQUVuYWJsZWQgPSB0aGlzLmNvbmZpZy5kYXRhLmlzTUZBRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbGV0IHZhbHVlID0gaW5wdXQudmFsdWUucmVwbGFjZSgvW14wLTldL2csICcnKTtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5jb2RlW2luZGV4XSA9ICcnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5jaGFyQXQoMCk7XHJcbiAgICBpZiAodGhpcy5jb2RlW2luZGV4XSA9PT0gbmV3VmFsdWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNvZGVbaW5kZXhdID0gbmV3VmFsdWU7XHJcbiAgICBpbnB1dC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgIGlmIChpbmRleCA8IDUpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV4dElucHV0ID0gdGhpcy5jb2RlSW5wdXRzLnRvQXJyYXkoKVtpbmRleCArIDFdLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgbmV4dElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgbmV4dElucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgIH0sIDEwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuaWYgKHRoaXMuY2hvaXggPT09IG51bGwpIFxyXG4gICAgeyBcclxuICAgICAgaWYgKHRoaXMuaXNNRkFFbmFibGVkID09PSBNRkFFbnVtLkVtYWlsKSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZmljYXRpb25UeXBlVGV4dCA9IFwiRW1haWxcIlxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNNRkFFbmFibGVkID09PSBNRkFFbnVtLlNNUykge1xyXG4gICAgICAgIHRoaXMudmVyaWZpY2F0aW9uVHlwZVRleHQgPSBcIlNNU1wiXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgXHJcbiAgICB7XHJcbiAgICAgIGlmICh0aGlzLmNob2l4ID09PSBNRkFFbnVtLkVtYWlsKSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZmljYXRpb25UeXBlVGV4dCA9IFwiRW1haWxcIlxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuY2hvaXggPT09IE1GQUVudW0uU01TKSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZmljYXRpb25UeXBlVGV4dCA9IFwiU01TXCJcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCIxIGNob2l4eHhcIiwgdGhpcy5jaG9peCwgXCI6Ojo6OlwiLCB0aGlzLnZlcmlmaWNhdGlvblR5cGVUZXh0KVxyXG4gICAgY29uc29sZS5sb2coXCIxIGlzTUZBRW5hYmxlZFwiLCB0aGlzLmlzTUZBRW5hYmxlZCwgXCI6Ojo6OlwiLCB0aGlzLnZlcmlmaWNhdGlvblR5cGVUZXh0KVxyXG5cclxuICAgIHRoaXMuZW52b3llckNvZGVTbXMoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBlbnZveWVyQ29kZVNtcygpIHtcclxuICAgIGlmICghdGhpcy5lbWFpbCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX2lkZW50aXR5UGxhdGZvcm1BdXRoZW50aWNhdGlvblNlcnZpY2VcclxuICAgICAgLnJlc2VuZFZlcmlmaWNhdGlvbkNvZGVFbWFpbCh0aGlzLmVtYWlsKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNtc1Jlc2VudCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzUmVzZW5kRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5sYW5jZXJDb21wdGVSZWJvdXJzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgbGFuY2VyQ29tcHRlUmVib3VycygpIHtcclxuICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVzZW5kRGVsYXktLTtcclxuICAgICAgaWYgKHRoaXMucmVzZW5kRGVsYXkgPD0gMCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jb3VudGRvd25JbnRlcnZhbCk7XHJcbiAgICAgICAgdGhpcy5pc1Jlc2VuZERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXNlbmREZWxheSA9IDMwO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgJiYgIWlucHV0LnZhbHVlICYmIGluZGV4ID4gMCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLmNvZGVbaW5kZXhdID0gJyc7XHJcbiAgICAgIGNvbnN0IHByZXZJbnB1dCA9IHRoaXMuY29kZUlucHV0cy50b0FycmF5KClbaW5kZXggLSAxXS5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBwcmV2SW5wdXQuZm9jdXMoKTtcclxuICAgICAgcHJldklucHV0LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGNvbnN0IHBhc3RlRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQvcGxhaW4nKS5yZXBsYWNlKC9bXjAtOV0vZywgJycpO1xyXG4gICAgaWYgKHBhc3RlRGF0YSAmJiBwYXN0ZURhdGEubGVuZ3RoID09PSA2KSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlUGFzdGVkQ29kZShwYXN0ZURhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVQYXN0ZWRDb2RlKHBhc3RlZENvZGU6IHN0cmluZykge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspIHtcclxuICAgICAgdGhpcy5jb2RlW2ldID0gcGFzdGVkQ29kZS5jaGFyQXQoaSk7XHJcbiAgICAgIHRoaXMuY29kZUlucHV0cy50b0FycmF5KClbaV0ubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuY29kZVtpXTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb2RlSW5wdXRzLmxhc3QubmF0aXZlRWxlbWVudC5mb2N1cygpLCAxMCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRDb2RlKCkge1xyXG4gICAgY29uc3QgZmluYWxDb2RlID0gdGhpcy5jb2RlLmpvaW4oJycpO1xyXG5cclxuICAgIGlmIChmaW5hbENvZGUubGVuZ3RoICE9PSA2KSB7XHJcbiAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlc0Zyb21BcnJheVN0cmluZyhbXCJWZXVpbGxleiBlbnRyZXIgdW4gY29kZSB2YWxpZGUgZGUgNiBjaGlmZnJlcy5cIl0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuX2lkZW50aXR5UGxhdGZvcm1BdXRoZW50aWNhdGlvblNlcnZpY2VcclxuICAgICAgLnZlcmlmeVNtc0NvZGUodGhpcy5lbWFpbCwgZmluYWxDb2RlKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgaWYgKCFyZXM/LmVycm9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29kZUVudGVyZWQuZW1pdChmaW5hbENvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmaW5hbENvZGUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2VzRnJvbUFycmF5U3RyaW5nKFsnQ29kZSBpbnZhbGlkZS4nXSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29kZSA9IG5ldyBBcnJheSg2KS5maWxsKCcnKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvZGVJbnB1dHMuZmlyc3Q/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICByZXNlbmRWZXJpZmljYXRpb25TbXMoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuaXNSZXNlbmREaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX2lkZW50aXR5UGxhdGZvcm1BdXRoZW50aWNhdGlvblNlcnZpY2UucmVzZW5kVmVyaWZpY2F0aW9uQ29kZUVtYWlsKHRoaXMuZW1haWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc21zUmVzZW50ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1Jlc2VuZERpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNlbmREZWxheS0tO1xyXG4gICAgICAgIGlmICh0aGlzLnJlc2VuZERlbGF5IDw9IDApIHtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jb3VudGRvd25JbnRlcnZhbCk7XHJcbiAgICAgICAgICB0aGlzLmlzUmVzZW5kRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVzZW5kRGVsYXkgPSAzMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59IFxyXG4iLCI8ZGl2IGNsYXNzPVwidmVyaWZpY2F0aW9uLWNvbnRhaW5lclwiPlxyXG4gIDxoMj5FbnRyZXogbGUgY29kZSBkZSB2w6lyaWZpY2F0aW9uIHt7IHZlcmlmaWNhdGlvblR5cGVUZXh0IH19PC9oMj5cclxuICA8cD5VbiBjb2RlIGEgw6l0w6kgZW52b3nDqSDDoCB2b3RyZSB7eyB2ZXJpZmljYXRpb25UeXBlVGV4dCB8IGxvd2VyY2FzZSB9fS48L3A+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb2RlLWlucHV0c1wiPlxyXG4gICAgPGlucHV0ICpuZ0Zvcj1cImxldCBkaWdpdCBvZiBjb2RlOyBsZXQgaSA9IGluZGV4XCIgI2NvZGVJbnB1dCB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjFcIiBwYXR0ZXJuPVwiWzAtOV0qXCJcclxuICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiIFt2YWx1ZV09XCJjb2RlW2ldXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBpKVwiIFxyXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50LCBpKVwiIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGJ1dHRvbiAoY2xpY2spPVwic3VibWl0Q29kZSgpXCIgW2Rpc2FibGVkXT1cImlzU3VibWl0dGluZ1wiPlZhbGlkZXI8L2J1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwicmVzZW5kLWxpbmtcIj5cclxuICAgIDxwICpuZ0lmPVwiIXNtc1Jlc2VudFwiPlxyXG4gICAgICBWb3VzIG4nYXZleiBwYXMgcmXDp3UgbGUgY29kZSA/XHJcbiAgICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cInJlc2VuZFZlcmlmaWNhdGlvblNtcygkZXZlbnQpXCIgW2NsYXNzLmRpc2FibGVkXT1cImlzUmVzZW5kRGlzYWJsZWRcIj5cclxuICAgICAgICBSZW52b3llciBsZSBjb2RlIHt7IHZlcmlmaWNhdGlvblR5cGVUZXh0IH19XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1Jlc2VuZERpc2FibGVkXCI+KHt7cmVzZW5kRGVsYXl9fXMpPC9zcGFuPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L3A+XHJcblxyXG4gICAgPHAgKm5nSWY9XCJzbXNSZXNlbnRcIiBjbGFzcz1cInN1Y2Nlc3MtbWVzc2FnZVwiPlxyXG4gICAgICB7eyB2ZXJpZmljYXRpb25UeXBlVGV4dCB9fSByZW52b3nDqSBhdmVjIHN1Y2PDqHMgIVxyXG4gICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJyZXNlbmRWZXJpZmljYXRpb25TbXMoJGV2ZW50KVwiICpuZ0lmPVwiIWlzUmVzZW5kRGlzYWJsZWRcIj5cclxuICAgICAgICBSZW52b3llciDDoCBub3V2ZWF1XHJcbiAgICAgIDwvYT5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJpc1Jlc2VuZERpc2FibGVkXCI+QXR0ZW5kZXoge3tyZXNlbmREZWxheX19IHNlY29uZGVzPC9zcGFuPlxyXG4gICAgPC9wPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
@@ -20,9 +20,10 @@ export class VerificationCodeSmsComponent {
|
|
|
20
20
|
this.isResendDisabled = false;
|
|
21
21
|
this.resendDelay = 60;
|
|
22
22
|
this.isSubmitting = false;
|
|
23
|
-
this.verificationTypeText =
|
|
23
|
+
this.verificationTypeText = '';
|
|
24
24
|
this.email = this.config.data.email;
|
|
25
25
|
this.choix = this.config.data.choix;
|
|
26
|
+
this.isMFAEnabled = this.config.data.isMFAEnabled;
|
|
26
27
|
}
|
|
27
28
|
onInput(event, index) {
|
|
28
29
|
const input = event.target;
|
|
@@ -45,12 +46,24 @@ export class VerificationCodeSmsComponent {
|
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
ngOnInit() {
|
|
48
|
-
if (this.choix ===
|
|
49
|
-
this.
|
|
49
|
+
if (this.choix === null) {
|
|
50
|
+
if (this.isMFAEnabled === MFAEnum.Email) {
|
|
51
|
+
this.verificationTypeText = "Email";
|
|
52
|
+
}
|
|
53
|
+
else if (this.isMFAEnabled === MFAEnum.SMS) {
|
|
54
|
+
this.verificationTypeText = "SMS";
|
|
55
|
+
}
|
|
50
56
|
}
|
|
51
|
-
else
|
|
52
|
-
this.
|
|
57
|
+
else {
|
|
58
|
+
if (this.choix === MFAEnum.Email) {
|
|
59
|
+
this.verificationTypeText = "Email";
|
|
60
|
+
}
|
|
61
|
+
else if (this.choix === MFAEnum.SMS) {
|
|
62
|
+
this.verificationTypeText = "SMS";
|
|
63
|
+
}
|
|
53
64
|
}
|
|
65
|
+
console.log("2 choixxx", this.choix, ":::::", this.verificationTypeText);
|
|
66
|
+
console.log("2 isMFAEnabled", this.isMFAEnabled, ":::::", this.verificationTypeText);
|
|
54
67
|
this.envoyerCodeSms();
|
|
55
68
|
}
|
|
56
69
|
envoyerCodeSms() {
|
|
@@ -154,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
154
167
|
type: ViewChildren,
|
|
155
168
|
args: ['codeInput']
|
|
156
169
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUtc21zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tZmEtY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS1zbXMvdmVyaWZpY2F0aW9uLWNvZGUtc21zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tZmEtY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS1zbXMvdmVyaWZpY2F0aW9uLWNvZGUtc21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQU9sRCxNQUFNLE9BQU8sNEJBQTRCO0lBY3ZDLFlBQ1MsU0FBMkIsRUFDM0IsTUFBMkIsRUFDMUIsc0NBQTZFLEVBQzdFLDRCQUF5RDtRQUgxRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMxQiwyQ0FBc0MsR0FBdEMsc0NBQXNDLENBQXVDO1FBQzdFLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBNkI7UUFqQnpELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUduRCxTQUFJLEdBQWEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBR3ZDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztR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QixNQUFNO2dCQUNvQixVQUFVO3NCQUFwQyxZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IElkZW50aXR5UGxhdGZvcm1BdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9Vc2VySWRlbnRpdHkvaWRlbnRpdHktcGxhdGZvcm0tYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9lcnJvci1yZXNwb25zZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNRkFFbnVtIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvbWZhLWVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdmVyaWZpY2F0aW9uLWNvZGUtc21zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdmVyaWZpY2F0aW9uLWNvZGUtc21zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92ZXJpZmljYXRpb24tY29kZS1zbXMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmVyaWZpY2F0aW9uQ29kZVNtc0NvbXBvbmVudCB7XHJcbiAgQE91dHB1dCgpIGNvZGVFbnRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQFZpZXdDaGlsZHJlbignY29kZUlucHV0JykgY29kZUlucHV0cyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcbiAgY29kZTogc3RyaW5nW10gPSBuZXcgQXJyYXkoNikuZmlsbCgnJyk7XHJcbiAgZW1haWw6IHN0cmluZztcclxuICBjaG9peDogbnVtYmVyO1xyXG4gIHNob3dDaGFubmVsQ2hvaWNlID0gZmFsc2U7XHJcbiAgc21zUmVzZW50ID0gZmFsc2U7ICBcclxuICBpc1Jlc2VuZERpc2FibGVkID0gZmFsc2U7XHJcbiAgcmVzZW5kRGVsYXkgPSA2MDtcclxuICBjb3VudGRvd25JbnRlcnZhbDogYW55O1xyXG4gIGlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gIHZlcmlmaWNhdGlvblR5cGVUZXh0OiBzdHJpbmcgPSBcIlwiXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBEeW5hbWljRGlhbG9nUmVmLCBcclxuICAgIHB1YmxpYyBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsIFxyXG4gICAgcHJpdmF0ZSBfaWRlbnRpdHlQbGF0Zm9ybUF1dGhlbnRpY2F0aW9uU2VydmljZTogSWRlbnRpdHlQbGF0Zm9ybUF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbWFpbCA9IHRoaXMuY29uZmlnLmRhdGEuZW1haWw7XHJcbiAgICB0aGlzLmNob2l4ID0gdGhpcy5jb25maWcuZGF0YS5jaG9peDtcclxuICB9XHJcblxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbGV0IHZhbHVlID0gaW5wdXQudmFsdWUucmVwbGFjZSgvW14wLTldL2csICcnKTtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5jb2RlW2luZGV4XSA9ICcnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5jaGFyQXQoMCk7XHJcbiAgICBpZiAodGhpcy5jb2RlW2luZGV4XSA9PT0gbmV3VmFsdWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNvZGVbaW5kZXhdID0gbmV3VmFsdWU7XHJcbiAgICBpbnB1dC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgIGlmIChpbmRleCA8IDUpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV4dElucHV0ID0gdGhpcy5jb2RlSW5wdXRzLnRvQXJyYXkoKVtpbmRleCArIDFdLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgbmV4dElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgbmV4dElucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgIH0sIDEwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuIG5nT25Jbml0KCkge1xyXG4gIGlmICh0aGlzLmNob2l4ID09PSBNRkFFbnVtLkVtYWlsKSBcclxuICAgIHtcclxuICAgICAgdGhpcy52ZXJpZmljYXRpb25UeXBlVGV4dCA9IFwiY2hvb3NlX2Nob2ljZV9tZmFfRW1haWxcIlxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5jaG9peCA9PT0gTUZBRW51bS5TTVMpIFxyXG4gICAge1xyXG4gICAgdGhpcy52ZXJpZmljYXRpb25UeXBlVGV4dCA9IFwiY2hvb3NlX2Nob2ljZV9tZmFfU01TXCJcclxuICAgIH1cclxuICAgIHRoaXMuZW52b3llckNvZGVTbXMoKTtcclxuICB9XHJcbiAgICBwcml2YXRlIGVudm95ZXJDb2RlU21zKCkge1xyXG4gICAgaWYgKCF0aGlzLmVtYWlsKSByZXR1cm47XHJcbiAgICAgIFxyXG4gICAgdGhpcy5faWRlbnRpdHlQbGF0Zm9ybUF1dGhlbnRpY2F0aW9uU2VydmljZVxyXG4gICAgICAuc2VuZFZlcmlmaWNhdGlvblV0aWxpc2F0ZXVyQnlNRkEodGhpcy5lbWFpbCx0aGlzLmNob2l4KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNtc1Jlc2VudCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzUmVzZW5kRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5sYW5jZXJDb21wdGVSZWJvdXJzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gICAgcHJpdmF0ZSBsYW5jZXJDb21wdGVSZWJvdXJzKCkge1xyXG4gICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgdGhpcy5yZXNlbmREZWxheS0tO1xyXG4gICAgICBpZiAodGhpcy5yZXNlbmREZWxheSA8PSAwKSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNvdW50ZG93bkludGVydmFsKTtcclxuICAgICAgICB0aGlzLmlzUmVzZW5kRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlc2VuZERlbGF5ID0gMzA7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyAmJiAhaW5wdXQudmFsdWUgJiYgaW5kZXggPiAwKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuY29kZVtpbmRleF0gPSAnJztcclxuICAgICAgY29uc3QgcHJldklucHV0ID0gdGhpcy5jb2RlSW5wdXRzLnRvQXJyYXkoKVtpbmRleCAtIDFdLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIHByZXZJbnB1dC5mb2N1cygpO1xyXG4gICAgICBwcmV2SW5wdXQudmFsdWUgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgcGFzdGVEYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dC9wbGFpbicpLnJlcGxhY2UoL1teMC05XS9nLCAnJyk7XHJcbiAgICBpZiAocGFzdGVEYXRhICYmIHBhc3RlRGF0YS5sZW5ndGggPT09IDYpIHtcclxuICAgICAgdGhpcy5oYW5kbGVQYXN0ZWRDb2RlKHBhc3RlRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVBhc3RlZENvZGUocGFzdGVkQ29kZTogc3RyaW5nKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDY7IGkrKykge1xyXG4gICAgICB0aGlzLmNvZGVbaV0gPSBwYXN0ZWRDb2RlLmNoYXJBdChpKTtcclxuICAgICAgdGhpcy5jb2RlSW5wdXRzLnRvQXJyYXkoKVtpXS5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5jb2RlW2ldO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvZGVJbnB1dHMubGFzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDEwKTtcclxuICB9XHJcblxyXG5zdWJtaXRDb2RlKCkge1xyXG4gIGNvbnN0IGZpbmFsQ29kZSA9IHRoaXMuY29kZS5qb2luKCcnKTtcclxuXHJcbiAgaWYgKGZpbmFsQ29kZS5sZW5ndGggIT09IDYpIHtcclxuICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlc0Zyb21BcnJheVN0cmluZyhbXCJ2ZXJpZmljYXRpb25fY29kZV9zbXNfUGxlYXNlX2VudGVyX3ZhbGlkX2RpZ2l0XCJdKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHRoaXMuaXNTdWJtaXR0aW5nID0gdHJ1ZTtcclxuXHJcbiAgdGhpcy5faWRlbnRpdHlQbGF0Zm9ybUF1dGhlbnRpY2F0aW9uU2VydmljZVxyXG4gICAgLnZlcmlmeVNtc0NvZGUodGhpcy5lbWFpbCwgZmluYWxDb2RlKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmICghcmVzPy5lcnJvcikge1xyXG4gICAgICAgICAgdGhpcy5jb2RlRW50ZXJlZC5lbWl0KGZpbmFsQ29kZSk7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmaW5hbENvZGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZXNGcm9tQXJyYXlTdHJpbmcoWyd2ZXJpZmljYXRpb25fY29kZV9zbXNfaW52YWxpZF9jb2RlJ10pO1xyXG4gICAgICAgICAgdGhpcy5jb2RlID0gbmV3IEFycmF5KDYpLmZpbGwoJycpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvZGVJbnB1dHMuZmlyc3Q/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbiAgcmVzZW5kVmVyaWZpY2F0aW9uU21zKGV2ZW50OiBFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGlmICh0aGlzLmlzUmVzZW5kRGlzYWJsZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9pZGVudGl0eVBsYXRmb3JtQXV0aGVudGljYXRpb25TZXJ2aWNlLnNlbmRWZXJpZmljYXRpb25VdGlsaXNhdGV1ckJ5TUZBKHRoaXMuZW1haWwsdGhpcy5jaG9peCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zbXNSZXNlbnQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzUmVzZW5kRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxhbmNlckNvbXB0ZVJlYm91cnMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxufSBcclxuIiwiPGRpdiBjbGFzcz1cInZlcmlmaWNhdGlvbi1jb250YWluZXJcIj5cclxuICA8aDI+e3sndmVyaWZpY2F0aW9uX2NvZGVfc21zX2VudGVyX2NvZGVfdmVyaWZpY2F0aW9uJyB8IGxvY2FsaXplfX0ge3sgdmVyaWZpY2F0aW9uVHlwZVRleHQgfCBsb2NhbGl6ZSB9fTwvaDI+XHJcbiAgPHA+e3sndmVyaWZpY2F0aW9uX2NvZGVfc21zX2NvZGVfc2VuZCcgfCBsb2NhbGl6ZX19e3sgdmVyaWZpY2F0aW9uVHlwZVRleHQgfCBsb2NhbGl6ZSB9fS48L3A+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb2RlLWlucHV0c1wiPlxyXG4gICAgPGlucHV0ICpuZ0Zvcj1cImxldCBkaWdpdCBvZiBjb2RlOyBsZXQgaSA9IGluZGV4XCIgI2NvZGVJbnB1dCB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjFcIiBwYXR0ZXJuPVwiWzAtOV0qXCJcclxuICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiIFt2YWx1ZV09XCJjb2RlW2ldXCIgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50LCBpKVwiIFxyXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50LCBpKVwiIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPFRzaS1CdXR0b24gKGNsaWNrKT1cInN1Ym1pdENvZGUoKVwiIFtkaXNhYmxlZF09XCJpc1N1Ym1pdHRpbmdcIiBbdGV4dF09XCInVmFsaWRlcidcIj48L1RzaS1CdXR0b24+XHJcbiAgPGRpdiBjbGFzcz1cInJlc2VuZC1saW5rXCI+XHJcbiAgICA8cCAqbmdJZj1cIiFzbXNSZXNlbnRcIj5cclxuICAgICAge3sndmVyaWZpY2F0aW9uX2NvZGVfc21zX2NvZGVfbm90X3JlY2VpdmUnIHwgbG9jYWxpemV9fVxyXG4gICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJyZXNlbmRWZXJpZmljYXRpb25TbXMoJGV2ZW50KVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpc1Jlc2VuZERpc2FibGVkXCI+XHJcbiAgICAgICAge3sndmVyaWZpY2F0aW9uX2NvZGVfc21zX1Jlc2VuZF9jb2RlJyB8IGxvY2FsaXplfX0ge3sgdmVyaWZpY2F0aW9uVHlwZVRleHQgfCBsb2NhbGl6ZX19XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1Jlc2VuZERpc2FibGVkXCI+KHt7cmVzZW5kRGVsYXl9fXMpPC9zcGFuPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L3A+XHJcblxyXG4gICAgPHAgKm5nSWY9XCJzbXNSZXNlbnRcIiBjbGFzcz1cInN1Y2Nlc3MtbWVzc2FnZVwiPlxyXG4gICAgICB7eyB2ZXJpZmljYXRpb25UeXBlVGV4dCB8IGxvY2FsaXplfX0ge3sndmVyaWZpY2F0aW9uX2NvZGVfc21zX1Jlc2VudF9zdWNjZXNzZnVsbHknIHwgbG9jYWxpemV9fVxyXG4gICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJyZXNlbmRWZXJpZmljYXRpb25TbXMoJGV2ZW50KVwiICpuZ0lmPVwiIWlzUmVzZW5kRGlzYWJsZWRcIj5cclxuICAgICAgICB7eyd2ZXJpZmljYXRpb25fY29kZV9zbXNfUmVzZW5kX2FnYWluJyB8IGxvY2FsaXplfX1cclxuICAgICAgPC9hPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cImlzUmVzZW5kRGlzYWJsZWRcIj57eyd2ZXJpZmljYXRpb25fY29kZV9zbXNfUGxlYXNlX3dhaXQnIHwgbG9jYWxpemV9fSB7e3Jlc2VuZERlbGF5fX0ge3sndmVyaWZpY2F0aW9uX2NvZGVfc21zX3NlY29uZHMnIHwgbG9jYWxpemV9fTwvc3Bhbj5cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLWNvZGUtc21zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tZmEtY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS1zbXMvdmVyaWZpY2F0aW9uLWNvZGUtc21zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tZmEtY29tcG9uZW50cy92ZXJpZmljYXRpb24tY29kZS1zbXMvdmVyaWZpY2F0aW9uLWNvZGUtc21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBYSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQU9sRCxNQUFNLE9BQU8sNEJBQTRCO0lBZ0J2QyxZQUNTLFNBQTJCLEVBQzNCLE1BQTJCLEVBQzFCLHNDQUE2RSxFQUM3RSw0QkFBeUQ7UUFIMUQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUIsMkNBQXNDLEdBQXRDLHNDQUFzQyxDQUF1QztRQUM3RSxpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQTZCO1FBbkJ6RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHbkQsU0FBSSxHQUFhLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUl2QyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7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QUFDO2dCQUMxQixJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdELE9BQU87WUFDVCxDQUFDO1NBQ04sQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNDLHFCQUFxQixDQUFDLEtBQVk7UUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU87UUFFbEMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBM0tVLDRCQUE0QjttR0FBNUIsNEJBQTRCLHNNQ1p6Qyx5bkRBOEJBOzs0RkRsQmEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDJCQUEyQjtxTkFLM0IsV0FBVztzQkFBcEIsTUFBTTtnQkFDb0IsVUFBVTtzQkFBcEMsWUFBWTt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBJZGVudGl0eVBsYXRmb3JtQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvVXNlcklkZW50aXR5L2lkZW50aXR5LXBsYXRmb3JtLWF1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vZXJyb3ItcmVzcG9uc2UtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTUZBRW51bSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL21mYS1lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXZlcmlmaWNhdGlvbi1jb2RlLXNtcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcmlmaWNhdGlvbi1jb2RlLXNtcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdmVyaWZpY2F0aW9uLWNvZGUtc21zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZlcmlmaWNhdGlvbkNvZGVTbXNDb21wb25lbnQge1xyXG4gIEBPdXRwdXQoKSBjb2RlRW50ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2NvZGVJbnB1dCcpIGNvZGVJbnB1dHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIGNvZGU6IHN0cmluZ1tdID0gbmV3IEFycmF5KDYpLmZpbGwoJycpO1xyXG4gIGVtYWlsOiBzdHJpbmc7XHJcbiAgY2hvaXg6IG51bWJlcjtcclxuICBpc01GQUVuYWJsZWQ6bnVtYmVyO1xyXG4gIHNob3dDaGFubmVsQ2hvaWNlID0gZmFsc2U7XHJcbiAgc21zUmVzZW50ID0gZmFsc2U7ICBcclxuICBpc1Jlc2VuZERpc2FibGVkID0gZmFsc2U7XHJcbiAgcmVzZW5kRGVsYXkgPSA2MDtcclxuICBjb3VudGRvd25JbnRlcnZhbDogYW55O1xyXG4gIGlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gIHZlcmlmaWNhdGlvblR5cGVUZXh0OiBzdHJpbmcgPSAnJ1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IER5bmFtaWNEaWFsb2dSZWYsIFxyXG4gICAgcHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgXHJcbiAgICBwcml2YXRlIF9pZGVudGl0eVBsYXRmb3JtQXV0aGVudGljYXRpb25TZXJ2aWNlOiBJZGVudGl0eVBsYXRmb3JtQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlOiBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmVtYWlsID0gdGhpcy5jb25maWcuZGF0YS5lbWFpbDtcclxuICAgIHRoaXMuY2hvaXggPSB0aGlzLmNvbmZpZy5kYXRhLmNob2l4O1xyXG4gICAgdGhpcy5pc01GQUVuYWJsZWQgPSB0aGlzLmNvbmZpZy5kYXRhLmlzTUZBRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbGV0IHZhbHVlID0gaW5wdXQudmFsdWUucmVwbGFjZSgvW14wLTldL2csICcnKTtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5jb2RlW2luZGV4XSA9ICcnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5jaGFyQXQoMCk7XHJcbiAgICBpZiAodGhpcy5jb2RlW2luZGV4XSA9PT0gbmV3VmFsdWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNvZGVbaW5kZXhdID0gbmV3VmFsdWU7XHJcbiAgICBpbnB1dC52YWx1ZSA9IG5ld1ZhbHVlO1xyXG5cclxuICAgIGlmIChpbmRleCA8IDUpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV4dElucHV0ID0gdGhpcy5jb2RlSW5wdXRzLnRvQXJyYXkoKVtpbmRleCArIDFdLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgbmV4dElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgbmV4dElucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgIH0sIDEwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuIG5nT25Jbml0KCkge1xyXG4gIFxyXG4gICAgaWYgKHRoaXMuY2hvaXggPT09IG51bGwpIFxyXG4gICAgeyBcclxuICAgICAgaWYgKHRoaXMuaXNNRkFFbmFibGVkID09PSBNRkFFbnVtLkVtYWlsKSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZmljYXRpb25UeXBlVGV4dCA9IFwiRW1haWxcIlxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNNRkFFbmFibGVkID09PSBNRkFFbnVtLlNNUykge1xyXG4gICAgICAgIHRoaXMudmVyaWZpY2F0aW9uVHlwZVRleHQgPSBcIlNNU1wiXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgXHJcbiAgICB7XHJcbiAgICAgIGlmICh0aGlzLmNob2l4ID09PSBNRkFFbnVtLkVtYWlsKSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZmljYXRpb25UeXBlVGV4dCA9IFwiRW1haWxcIlxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuY2hvaXggPT09IE1GQUVudW0uU01TKSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZmljYXRpb25UeXBlVGV4dCA9IFwiU01TXCJcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCIyIGNob2l4eHhcIiwgdGhpcy5jaG9peCwgXCI6Ojo6OlwiLCB0aGlzLnZlcmlmaWNhdGlvblR5cGVUZXh0KVxyXG4gICAgY29uc29sZS5sb2coXCIyIGlzTUZBRW5hYmxlZFwiLCB0aGlzLmlzTUZBRW5hYmxlZCwgXCI6Ojo6OlwiLCB0aGlzLnZlcmlmaWNhdGlvblR5cGVUZXh0KVxyXG4gICAgdGhpcy5lbnZveWVyQ29kZVNtcygpO1xyXG4gIH1cclxuICAgIHByaXZhdGUgZW52b3llckNvZGVTbXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW1haWwpIHJldHVybjtcclxuICAgICAgXHJcbiAgICB0aGlzLl9pZGVudGl0eVBsYXRmb3JtQXV0aGVudGljYXRpb25TZXJ2aWNlXHJcbiAgICAgIC5zZW5kVmVyaWZpY2F0aW9uVXRpbGlzYXRldXJCeU1GQSh0aGlzLmVtYWlsLHRoaXMuY2hvaXgpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc21zUmVzZW50ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaXNSZXNlbmREaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxhbmNlckNvbXB0ZVJlYm91cnMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgICBwcml2YXRlIGxhbmNlckNvbXB0ZVJlYm91cnMoKSB7XHJcbiAgICB0aGlzLmNvdW50ZG93bkludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc2VuZERlbGF5LS07XHJcbiAgICAgIGlmICh0aGlzLnJlc2VuZERlbGF5IDw9IDApIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuY291bnRkb3duSW50ZXJ2YWwpO1xyXG4gICAgICAgIHRoaXMuaXNSZXNlbmREaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVzZW5kRGVsYXkgPSAzMDtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnICYmICFpbnB1dC52YWx1ZSAmJiBpbmRleCA+IDApIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5jb2RlW2luZGV4XSA9ICcnO1xyXG4gICAgICBjb25zdCBwcmV2SW5wdXQgPSB0aGlzLmNvZGVJbnB1dHMudG9BcnJheSgpW2luZGV4IC0gMV0ubmF0aXZlRWxlbWVudDtcclxuICAgICAgcHJldklucHV0LmZvY3VzKCk7XHJcbiAgICAgIHByZXZJbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBwYXN0ZURhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0L3BsYWluJykucmVwbGFjZSgvW14wLTldL2csICcnKTtcclxuICAgIGlmIChwYXN0ZURhdGEgJiYgcGFzdGVEYXRhLmxlbmd0aCA9PT0gNikge1xyXG4gICAgICB0aGlzLmhhbmRsZVBhc3RlZENvZGUocGFzdGVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGFzdGVkQ29kZShwYXN0ZWRDb2RlOiBzdHJpbmcpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNjsgaSsrKSB7XHJcbiAgICAgIHRoaXMuY29kZVtpXSA9IHBhc3RlZENvZGUuY2hhckF0KGkpO1xyXG4gICAgICB0aGlzLmNvZGVJbnB1dHMudG9BcnJheSgpW2ldLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmNvZGVbaV07XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29kZUlucHV0cy5sYXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMTApO1xyXG4gIH1cclxuXHJcbnN1Ym1pdENvZGUoKSB7XHJcbiAgY29uc3QgZmluYWxDb2RlID0gdGhpcy5jb2RlLmpvaW4oJycpO1xyXG5cclxuICBpZiAoZmluYWxDb2RlLmxlbmd0aCAhPT0gNikge1xyXG4gICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2VzRnJvbUFycmF5U3RyaW5nKFtcInZlcmlmaWNhdGlvbl9jb2RlX3Ntc19QbGVhc2VfZW50ZXJfdmFsaWRfZGlnaXRcIl0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xyXG5cclxuICB0aGlzLl9pZGVudGl0eVBsYXRmb3JtQXV0aGVudGljYXRpb25TZXJ2aWNlXHJcbiAgICAudmVyaWZ5U21zQ29kZSh0aGlzLmVtYWlsLCBmaW5hbENvZGUpXHJcbiAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKCFyZXM/LmVycm9yKSB7XHJcbiAgICAgICAgICB0aGlzLmNvZGVFbnRlcmVkLmVtaXQoZmluYWxDb2RlKTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZpbmFsQ29kZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlc0Zyb21BcnJheVN0cmluZyhbJ3ZlcmlmaWNhdGlvbl9jb2RlX3Ntc19pbnZhbGlkX2NvZGUnXSk7XHJcbiAgICAgICAgICB0aGlzLmNvZGUgPSBuZXcgQXJyYXkoNikuZmlsbCgnJyk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29kZUlucHV0cy5maXJzdD8ubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuICByZXNlbmRWZXJpZmljYXRpb25TbXMoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuaXNSZXNlbmREaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX2lkZW50aXR5UGxhdGZvcm1BdXRoZW50aWNhdGlvblNlcnZpY2Uuc2VuZFZlcmlmaWNhdGlvblV0aWxpc2F0ZXVyQnlNRkEodGhpcy5lbWFpbCx0aGlzLmNob2l4KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNtc1Jlc2VudCA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNSZXNlbmREaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubGFuY2VyQ29tcHRlUmVib3VycygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59IFxyXG4iLCI8ZGl2IGNsYXNzPVwidmVyaWZpY2F0aW9uLWNvbnRhaW5lclwiPlxyXG4gIDxoMj57eyd2ZXJpZmljYXRpb25fY29kZV9zbXNfZW50ZXJfY29kZV92ZXJpZmljYXRpb24nIHwgbG9jYWxpemV9fSB7eyB2ZXJpZmljYXRpb25UeXBlVGV4dCB8IGxvY2FsaXplIH19PC9oMj5cclxuICA8cD57eyd2ZXJpZmljYXRpb25fY29kZV9zbXNfY29kZV9zZW5kJyB8IGxvY2FsaXplfX17eyB2ZXJpZmljYXRpb25UeXBlVGV4dCB8IGxvY2FsaXplIH19LjwvcD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvZGUtaW5wdXRzXCI+XHJcbiAgICA8aW5wdXQgKm5nRm9yPVwibGV0IGRpZ2l0IG9mIGNvZGU7IGxldCBpID0gaW5kZXhcIiAjY29kZUlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMVwiIHBhdHRlcm49XCJbMC05XSpcIlxyXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCIgW3ZhbHVlXT1cImNvZGVbaV1cIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGkpXCIgXHJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQsIGkpXCIgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8VHNpLUJ1dHRvbiAoY2xpY2spPVwic3VibWl0Q29kZSgpXCIgW2Rpc2FibGVkXT1cImlzU3VibWl0dGluZ1wiIFt0ZXh0XT1cIidWYWxpZGVyJ1wiPjwvVHNpLUJ1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwicmVzZW5kLWxpbmtcIj5cclxuICAgIDxwICpuZ0lmPVwiIXNtc1Jlc2VudFwiPlxyXG4gICAgICB7eyd2ZXJpZmljYXRpb25fY29kZV9zbXNfY29kZV9ub3RfcmVjZWl2ZScgfCBsb2NhbGl6ZX19XHJcbiAgICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cInJlc2VuZFZlcmlmaWNhdGlvblNtcygkZXZlbnQpXCIgW2NsYXNzLmRpc2FibGVkXT1cImlzUmVzZW5kRGlzYWJsZWRcIj5cclxuICAgICAgICB7eyd2ZXJpZmljYXRpb25fY29kZV9zbXNfUmVzZW5kX2NvZGUnIHwgbG9jYWxpemV9fSB7eyB2ZXJpZmljYXRpb25UeXBlVGV4dCB8IGxvY2FsaXplfX1cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzUmVzZW5kRGlzYWJsZWRcIj4oe3tyZXNlbmREZWxheX19cyk8L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvcD5cclxuXHJcbiAgICA8cCAqbmdJZj1cInNtc1Jlc2VudFwiIGNsYXNzPVwic3VjY2Vzcy1tZXNzYWdlXCI+XHJcbiAgICAgIHt7IHZlcmlmaWNhdGlvblR5cGVUZXh0IHwgbG9jYWxpemV9fSB7eyd2ZXJpZmljYXRpb25fY29kZV9zbXNfUmVzZW50X3N1Y2Nlc3NmdWxseScgfCBsb2NhbGl6ZX19XHJcbiAgICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cInJlc2VuZFZlcmlmaWNhdGlvblNtcygkZXZlbnQpXCIgKm5nSWY9XCIhaXNSZXNlbmREaXNhYmxlZFwiPlxyXG4gICAgICAgIHt7J3ZlcmlmaWNhdGlvbl9jb2RlX3Ntc19SZXNlbmRfYWdhaW4nIHwgbG9jYWxpemV9fVxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNSZXNlbmREaXNhYmxlZFwiPnt7J3ZlcmlmaWNhdGlvbl9jb2RlX3Ntc19QbGVhc2Vfd2FpdCcgfCBsb2NhbGl6ZX19IHt7cmVzZW5kRGVsYXl9fSB7eyd2ZXJpZmljYXRpb25fY29kZV9zbXNfc2Vjb25kcycgfCBsb2NhbGl6ZX19PC9zcGFuPlxyXG4gICAgPC9wPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|