@firestitch/2fa 15.0.0 → 15.0.1

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.
Files changed (89) hide show
  1. package/app/enums/index.d.ts +1 -1
  2. package/app/enums/verification-method-type.enum.d.ts +5 -5
  3. package/app/interfaces/index.d.ts +1 -1
  4. package/app/interfaces/verification-method.interface.d.ts +11 -11
  5. package/app/modules/code-input/code-input.module.d.ts +11 -11
  6. package/app/modules/code-input/components/code-input/code-input.component.d.ts +15 -15
  7. package/app/modules/code-input/components/code-input/index.d.ts +1 -1
  8. package/app/modules/code-input/index.d.ts +1 -1
  9. package/app/modules/defaulted/components/defaulted/defaulted.component.d.ts +5 -5
  10. package/app/modules/defaulted/components/defaulted/index.d.ts +1 -1
  11. package/app/modules/defaulted/defaulted.module.d.ts +7 -7
  12. package/app/modules/manage/components/2fa-manage/2fa-manage.component.d.ts +30 -30
  13. package/app/modules/manage/components/2fa-manage/index.d.ts +1 -1
  14. package/app/modules/manage/components/app/app.component.d.ts +32 -32
  15. package/app/modules/manage/components/app/index.d.ts +1 -1
  16. package/app/modules/manage/components/email/email.component.d.ts +27 -27
  17. package/app/modules/manage/components/email/index.d.ts +1 -1
  18. package/app/modules/manage/components/emails/emails.component.d.ts +19 -19
  19. package/app/modules/manage/components/emails/index.d.ts +1 -1
  20. package/app/modules/manage/components/manage-methods/index.d.ts +1 -1
  21. package/app/modules/manage/components/manage-methods/manage-methods.component.d.ts +35 -35
  22. package/app/modules/manage/components/number/index.d.ts +1 -1
  23. package/app/modules/manage/components/number/number.component.d.ts +28 -28
  24. package/app/modules/manage/components/numbers/index.d.ts +1 -1
  25. package/app/modules/manage/components/numbers/numbers.component.d.ts +20 -20
  26. package/app/modules/manage/fs-2f-manage.module.d.ts +33 -33
  27. package/app/modules/manage/services/index.d.ts +1 -1
  28. package/app/modules/manage/services/two-factor-manage.service.d.ts +52 -52
  29. package/app/modules/resend/components/resend/index.d.ts +1 -1
  30. package/app/modules/resend/components/resend/resend.component.d.ts +14 -14
  31. package/app/modules/resend/resend.module.d.ts +9 -9
  32. package/app/modules/verification/components/2fa-verification/2fa-verification.component.d.ts +39 -39
  33. package/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.d.ts +22 -22
  34. package/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.d.ts +22 -22
  35. package/app/modules/verification/directives/2fa-verification-resend.directive.d.ts +11 -11
  36. package/app/modules/verification/directives/index.d.ts +1 -1
  37. package/app/modules/verification/fs-2fa-verification.module.d.ts +25 -25
  38. package/app/modules/verification-methods/components/verification-methods/index.d.ts +1 -1
  39. package/app/modules/verification-methods/components/verification-methods/verification-methods.component.d.ts +26 -26
  40. package/app/modules/verification-methods/fs-2f-verification-methods.module.d.ts +14 -14
  41. package/app/modules/verification-methods/index.d.ts +1 -1
  42. package/esm2020/app/enums/index.mjs +1 -1
  43. package/esm2020/app/enums/verification-method-type.enum.mjs +6 -6
  44. package/esm2020/app/interfaces/index.mjs +1 -1
  45. package/esm2020/app/interfaces/verification-method.interface.mjs +1 -1
  46. package/esm2020/app/modules/code-input/code-input.module.mjs +35 -35
  47. package/esm2020/app/modules/code-input/components/code-input/code-input.component.mjs +39 -39
  48. package/esm2020/app/modules/code-input/components/code-input/index.mjs +1 -1
  49. package/esm2020/app/modules/code-input/index.mjs +1 -1
  50. package/esm2020/app/modules/defaulted/components/defaulted/defaulted.component.mjs +10 -10
  51. package/esm2020/app/modules/defaulted/components/defaulted/index.mjs +1 -1
  52. package/esm2020/app/modules/defaulted/defaulted.module.mjs +17 -17
  53. package/esm2020/app/modules/manage/components/2fa-manage/2fa-manage.component.mjs +97 -97
  54. package/esm2020/app/modules/manage/components/2fa-manage/index.mjs +1 -1
  55. package/esm2020/app/modules/manage/components/app/app.component.mjs +83 -83
  56. package/esm2020/app/modules/manage/components/app/index.mjs +1 -1
  57. package/esm2020/app/modules/manage/components/email/email.component.mjs +82 -82
  58. package/esm2020/app/modules/manage/components/email/index.mjs +1 -1
  59. package/esm2020/app/modules/manage/components/emails/emails.component.mjs +46 -46
  60. package/esm2020/app/modules/manage/components/emails/index.mjs +1 -1
  61. package/esm2020/app/modules/manage/components/manage-methods/index.mjs +1 -1
  62. package/esm2020/app/modules/manage/components/manage-methods/manage-methods.component.mjs +124 -124
  63. package/esm2020/app/modules/manage/components/number/index.mjs +1 -1
  64. package/esm2020/app/modules/manage/components/number/number.component.mjs +86 -86
  65. package/esm2020/app/modules/manage/components/numbers/index.mjs +1 -1
  66. package/esm2020/app/modules/manage/components/numbers/numbers.component.mjs +47 -47
  67. package/esm2020/app/modules/manage/fs-2f-manage.module.mjs +115 -115
  68. package/esm2020/app/modules/manage/services/index.mjs +1 -1
  69. package/esm2020/app/modules/manage/services/two-factor-manage.service.mjs +160 -160
  70. package/esm2020/app/modules/resend/components/resend/index.mjs +1 -1
  71. package/esm2020/app/modules/resend/components/resend/resend.component.mjs +34 -34
  72. package/esm2020/app/modules/resend/resend.module.mjs +27 -27
  73. package/esm2020/app/modules/verification/components/2fa-verification/2fa-verification.component.mjs +120 -120
  74. package/esm2020/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.mjs +59 -59
  75. package/esm2020/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.mjs +55 -55
  76. package/esm2020/app/modules/verification/directives/2fa-verification-resend.directive.mjs +31 -31
  77. package/esm2020/app/modules/verification/directives/index.mjs +1 -1
  78. package/esm2020/app/modules/verification/fs-2fa-verification.module.mjs +94 -94
  79. package/esm2020/app/modules/verification-methods/components/verification-methods/index.mjs +1 -1
  80. package/esm2020/app/modules/verification-methods/components/verification-methods/verification-methods.component.mjs +116 -116
  81. package/esm2020/app/modules/verification-methods/fs-2f-verification-methods.module.mjs +45 -45
  82. package/esm2020/app/modules/verification-methods/index.mjs +1 -1
  83. package/esm2020/firestitch-2fa.mjs +4 -4
  84. package/esm2020/public_api.mjs +8 -8
  85. package/fesm2015/firestitch-2fa.mjs +1248 -1248
  86. package/fesm2020/firestitch-2fa.mjs +1234 -1234
  87. package/index.d.ts +5 -5
  88. package/package.json +1 -1
  89. package/public_api.d.ts +9 -9
@@ -1,121 +1,121 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { ControlContainer, NgForm } from '@angular/forms';
3
- import { FsDialog } from '@firestitch/dialog';
4
- import { FsMessage } from '@firestitch/message';
5
- import { Subject } from 'rxjs';
6
- import { filter, finalize, switchMap, tap } from 'rxjs/operators';
7
- import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
8
- import { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';
9
- import { Fs2faVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@firestitch/dialog";
12
- import * as i2 from "@firestitch/message";
13
- import * as i3 from "@angular/common";
14
- import * as i4 from "@angular/forms";
15
- import * as i5 from "@angular/material/checkbox";
16
- import * as i6 from "@firestitch/form";
17
- import * as i7 from "../2fa-verification-code/2fa-verification-code.component";
18
- import * as i8 from "@firestitch/phone";
19
- export class Fs2faVerificationComponent {
20
- constructor(_cdRef, _dialog, _message) {
21
- this._cdRef = _cdRef;
22
- this._dialog = _dialog;
23
- this._message = _message;
24
- this.showTrustedDevice = true;
25
- this.trustDevice = true;
26
- this.formatRecipient = false;
27
- this.verified = new EventEmitter();
28
- this.codeChanged = new EventEmitter();
29
- this.codeCompleted = new EventEmitter();
30
- this.trustDeviceChange = new EventEmitter();
31
- this.code = '';
32
- this.VerificationMethodType = VerificationMethodType;
33
- this._destroy$ = new Subject();
34
- }
35
- get recipient() {
36
- if (this.verificationMethod.type === VerificationMethodType.Email) {
37
- return this.verificationMethod.email;
38
- }
39
- if (this.verificationMethod.type === VerificationMethodType.Sms) {
40
- return this.verificationMethod.phoneNumber;
41
- }
42
- }
43
- codeComplete(code) {
44
- this.code = code;
45
- this.codeCompleted.emit(this.code);
46
- }
47
- ngOnDestroy() {
48
- this._destroy$.next();
49
- this._destroy$.complete();
50
- }
51
- ngAfterViewInit() {
52
- this.verificationCodeComponent.focus();
53
- }
54
- resendCode() {
55
- return this.resend()
56
- .pipe(tap(() => {
57
- this.code = '';
58
- this._message.success('Resent Code');
59
- }), finalize(() => {
60
- this.verificationCodeComponent.focus();
61
- }));
62
- }
63
- showVerificationMethods() {
64
- this.getVerificationMethods()
65
- .pipe(switchMap((verificationMethods) => {
66
- return this._dialog.open(Fs2faVerificationMethodsComponent, {
67
- data: {
68
- verificationMethod: this.verificationMethod,
69
- verificationMethods,
70
- selectVerificationMethod: this.selectVerificationMethod,
71
- },
72
- })
73
- .afterClosed()
74
- .pipe(filter((verificationMethod) => !!verificationMethod));
75
- }))
76
- .subscribe((verificationMethod) => {
77
- this.verificationMethod = verificationMethod;
78
- this.code = '';
79
- this._cdRef.markForCheck();
80
- setTimeout(() => {
81
- this.verificationCodeComponent.focus();
82
- });
83
- });
84
- }
85
- }
86
- Fs2faVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Fs2faVerificationComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FsDialog }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
87
- Fs2faVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: { verificationMethod: "verificationMethod", resend: "resend", showTrustedDevice: "showTrustedDevice", trustDevice: "trustDevice", codeLength: "codeLength", trustDays: "trustDays", formatRecipient: "formatRecipient", getVerificationMethods: "getVerificationMethods", selectVerificationMethod: "selectVerificationMethod" }, outputs: { verified: "verified", codeChanged: "codeChanged", codeCompleted: "codeCompleted", trustDeviceChange: "trustDeviceChange" }, viewQueries: [{ propertyName: "verificationCodeComponent", first: true, predicate: Fs2faVerificationCodeComponent, descendants: true }], ngImport: i0, template: "<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeComplete($event)\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n <div class=\"small\">\n Bypass verification \n <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> \n <ng-container *ngIf=\"!trustDays\">for future signins</ng-container> \n unless cookies are cleared\n </div>\n </mat-checkbox>\n </div>\n</div>", styles: [":host ::ng-deep .mat-checkbox{margin:2px 0}:host ::ng-deep .mat-checkbox .mat-checkbox-label{line-height:normal}:host ::ng-deep .mat-checkbox .mat-checkbox-layout{white-space:normal}.code-container{text-align:center}.additional{display:flex;justify-content:space-between;align-items:center;margin:4px 0 5px}.additional small{color:inherit}.additional .resend{cursor:pointer;text-transform:none}.additional .resend mat-spinner{display:inline-block;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i6.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "component", type: i7.Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: ["type", "recipient", "codeLength", "code"], outputs: ["codeChanged", "codeCompleted"] }, { kind: "pipe", type: i8.FsPhonePipe, name: "fsPhone" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Fs2faVerificationComponent, decorators: [{
89
- type: Component,
90
- args: [{ selector: 'fs-2fa-verification', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeComplete($event)\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n <div class=\"small\">\n Bypass verification \n <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> \n <ng-container *ngIf=\"!trustDays\">for future signins</ng-container> \n unless cookies are cleared\n </div>\n </mat-checkbox>\n </div>\n</div>", styles: [":host ::ng-deep .mat-checkbox{margin:2px 0}:host ::ng-deep .mat-checkbox .mat-checkbox-label{line-height:normal}:host ::ng-deep .mat-checkbox .mat-checkbox-layout{white-space:normal}.code-container{text-align:center}.additional{display:flex;justify-content:space-between;align-items:center;margin:4px 0 5px}.additional small{color:inherit}.additional .resend{cursor:pointer;text-transform:none}.additional .resend mat-spinner{display:inline-block;vertical-align:middle}\n"] }]
91
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.FsDialog }, { type: i2.FsMessage }]; }, propDecorators: { verificationCodeComponent: [{
92
- type: ViewChild,
93
- args: [Fs2faVerificationCodeComponent]
94
- }], verificationMethod: [{
95
- type: Input
96
- }], resend: [{
97
- type: Input
98
- }], showTrustedDevice: [{
99
- type: Input
100
- }], trustDevice: [{
101
- type: Input
102
- }], codeLength: [{
103
- type: Input
104
- }], trustDays: [{
105
- type: Input
106
- }], formatRecipient: [{
107
- type: Input
108
- }], getVerificationMethods: [{
109
- type: Input
110
- }], selectVerificationMethod: [{
111
- type: Input
112
- }], verified: [{
113
- type: Output
114
- }], codeChanged: [{
115
- type: Output
116
- }], codeCompleted: [{
117
- type: Output
118
- }], trustDeviceChange: [{
119
- type: Output
120
- }] } });
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
+ import { ControlContainer, NgForm } from '@angular/forms';
3
+ import { FsDialog } from '@firestitch/dialog';
4
+ import { FsMessage } from '@firestitch/message';
5
+ import { Subject } from 'rxjs';
6
+ import { filter, finalize, switchMap, tap } from 'rxjs/operators';
7
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
8
+ import { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';
9
+ import { Fs2faVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@firestitch/dialog";
12
+ import * as i2 from "@firestitch/message";
13
+ import * as i3 from "@angular/common";
14
+ import * as i4 from "@angular/forms";
15
+ import * as i5 from "@angular/material/checkbox";
16
+ import * as i6 from "@firestitch/form";
17
+ import * as i7 from "../2fa-verification-code/2fa-verification-code.component";
18
+ import * as i8 from "@firestitch/phone";
19
+ export class Fs2faVerificationComponent {
20
+ constructor(_cdRef, _dialog, _message) {
21
+ this._cdRef = _cdRef;
22
+ this._dialog = _dialog;
23
+ this._message = _message;
24
+ this.showTrustedDevice = true;
25
+ this.trustDevice = true;
26
+ this.formatRecipient = false;
27
+ this.verified = new EventEmitter();
28
+ this.codeChanged = new EventEmitter();
29
+ this.codeCompleted = new EventEmitter();
30
+ this.trustDeviceChange = new EventEmitter();
31
+ this.code = '';
32
+ this.VerificationMethodType = VerificationMethodType;
33
+ this._destroy$ = new Subject();
34
+ }
35
+ get recipient() {
36
+ if (this.verificationMethod.type === VerificationMethodType.Email) {
37
+ return this.verificationMethod.email;
38
+ }
39
+ if (this.verificationMethod.type === VerificationMethodType.Sms) {
40
+ return this.verificationMethod.phoneNumber;
41
+ }
42
+ }
43
+ codeComplete(code) {
44
+ this.code = code;
45
+ this.codeCompleted.emit(this.code);
46
+ }
47
+ ngOnDestroy() {
48
+ this._destroy$.next();
49
+ this._destroy$.complete();
50
+ }
51
+ ngAfterViewInit() {
52
+ this.verificationCodeComponent.focus();
53
+ }
54
+ resendCode() {
55
+ return this.resend()
56
+ .pipe(tap(() => {
57
+ this.code = '';
58
+ this._message.success('Resent Code');
59
+ }), finalize(() => {
60
+ this.verificationCodeComponent.focus();
61
+ }));
62
+ }
63
+ showVerificationMethods() {
64
+ this.getVerificationMethods()
65
+ .pipe(switchMap((verificationMethods) => {
66
+ return this._dialog.open(Fs2faVerificationMethodsComponent, {
67
+ data: {
68
+ verificationMethod: this.verificationMethod,
69
+ verificationMethods,
70
+ selectVerificationMethod: this.selectVerificationMethod,
71
+ },
72
+ })
73
+ .afterClosed()
74
+ .pipe(filter((verificationMethod) => !!verificationMethod));
75
+ }))
76
+ .subscribe((verificationMethod) => {
77
+ this.verificationMethod = verificationMethod;
78
+ this.code = '';
79
+ this._cdRef.markForCheck();
80
+ setTimeout(() => {
81
+ this.verificationCodeComponent.focus();
82
+ });
83
+ });
84
+ }
85
+ }
86
+ Fs2faVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Fs2faVerificationComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FsDialog }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
87
+ Fs2faVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: { verificationMethod: "verificationMethod", resend: "resend", showTrustedDevice: "showTrustedDevice", trustDevice: "trustDevice", codeLength: "codeLength", trustDays: "trustDays", formatRecipient: "formatRecipient", getVerificationMethods: "getVerificationMethods", selectVerificationMethod: "selectVerificationMethod" }, outputs: { verified: "verified", codeChanged: "codeChanged", codeCompleted: "codeCompleted", trustDeviceChange: "trustDeviceChange" }, viewQueries: [{ propertyName: "verificationCodeComponent", first: true, predicate: Fs2faVerificationCodeComponent, descendants: true }], ngImport: i0, template: "<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeComplete($event)\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n <div class=\"small\">\n Bypass verification \n <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> \n <ng-container *ngIf=\"!trustDays\">for future signins</ng-container> \n unless cookies are cleared\n </div>\n </mat-checkbox>\n </div>\n</div>", styles: [":host ::ng-deep .mat-checkbox{margin:2px 0}:host ::ng-deep .mat-checkbox .mat-checkbox-label{line-height:normal}:host ::ng-deep .mat-checkbox .mat-checkbox-layout{white-space:normal}.code-container{text-align:center}.additional{display:flex;justify-content:space-between;align-items:center;margin:4px 0 5px}.additional small{color:inherit}.additional .resend{cursor:pointer;text-transform:none}.additional .resend mat-spinner{display:inline-block;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i6.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "component", type: i7.Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: ["type", "recipient", "codeLength", "code"], outputs: ["codeChanged", "codeCompleted"] }, { kind: "pipe", type: i8.FsPhonePipe, name: "fsPhone" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Fs2faVerificationComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'fs-2fa-verification', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeComplete($event)\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n <div class=\"small\">\n Bypass verification \n <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> \n <ng-container *ngIf=\"!trustDays\">for future signins</ng-container> \n unless cookies are cleared\n </div>\n </mat-checkbox>\n </div>\n</div>", styles: [":host ::ng-deep .mat-checkbox{margin:2px 0}:host ::ng-deep .mat-checkbox .mat-checkbox-label{line-height:normal}:host ::ng-deep .mat-checkbox .mat-checkbox-layout{white-space:normal}.code-container{text-align:center}.additional{display:flex;justify-content:space-between;align-items:center;margin:4px 0 5px}.additional small{color:inherit}.additional .resend{cursor:pointer;text-transform:none}.additional .resend mat-spinner{display:inline-block;vertical-align:middle}\n"] }]
91
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.FsDialog }, { type: i2.FsMessage }]; }, propDecorators: { verificationCodeComponent: [{
92
+ type: ViewChild,
93
+ args: [Fs2faVerificationCodeComponent]
94
+ }], verificationMethod: [{
95
+ type: Input
96
+ }], resend: [{
97
+ type: Input
98
+ }], showTrustedDevice: [{
99
+ type: Input
100
+ }], trustDevice: [{
101
+ type: Input
102
+ }], codeLength: [{
103
+ type: Input
104
+ }], trustDays: [{
105
+ type: Input
106
+ }], formatRecipient: [{
107
+ type: Input
108
+ }], getVerificationMethods: [{
109
+ type: Input
110
+ }], selectVerificationMethod: [{
111
+ type: Input
112
+ }], verified: [{
113
+ type: Output
114
+ }], codeChanged: [{
115
+ type: Output
116
+ }], codeCompleted: [{
117
+ type: Output
118
+ }], trustDeviceChange: [{
119
+ type: Output
120
+ }] } });
121
121
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvdmVyaWZpY2F0aW9uL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUV6RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7Ozs7Ozs7OztBQVVuSCxNQUFNLE9BQU8sMEJBQTBCO0lBaURyQyxZQUNVLE1BQXlCLEVBQ3pCLE9BQWlCLEVBQ2pCLFFBQW1CO1FBRm5C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ZCxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3dIQXpIVSwwQkFBMEI7NEdBQTFCLDBCQUEwQix1a0JBRTFCLDhCQUE4QixnRENuQzNDLCs5QkEyQk0sc3lERElXLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzRGQUV4RCwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO3VKQUs1RCx5QkFBeUI7c0JBRC9CLFNBQVM7dUJBQUMsOEJBQThCO2dCQUlsQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBSUMsTUFBTTtzQkFEWixLQUFLO2dCQUlDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsc0JBQXNCO3NCQUQ1QixLQUFLO2dCQUlDLHdCQUF3QjtzQkFEOUIsS0FBSztnQkFJQyxRQUFRO3NCQURkLE1BQU07Z0JBSUEsV0FBVztzQkFEakIsTUFBTTtnQkFJQSxhQUFhO3NCQURuQixNQUFNO2dCQUlBLGlCQUFpQjtzQkFEdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuXG5pbXBvcnQgeyBGc0RpYWxvZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2RpYWxvZyc7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaW5hbGl6ZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcy92ZXJpZmljYXRpb24tbWV0aG9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJRnNWZXJpZmljYXRpb25NZXRob2QgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL3ZlcmlmaWNhdGlvbi1tZXRob2QuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzMmZhVmVyaWZpY2F0aW9uQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uLzJmYS12ZXJpZmljYXRpb24tY29kZS8yZmEtdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZzMmZhVmVyaWZpY2F0aW9uTWV0aG9kc0NvbXBvbmVudCB9IGZyb20gJy4uLzJmYS12ZXJpZmljYXRpb24tbWV0aG9kcy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy0yZmEtdmVyaWZpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLCAgXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZzMmZhVmVyaWZpY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBAVmlld0NoaWxkKEZzMmZhVmVyaWZpY2F0aW9uQ29kZUNvbXBvbmVudClcbiAgcHVibGljIHZlcmlmaWNhdGlvbkNvZGVDb21wb25lbnQ6IEZzMmZhVmVyaWZpY2F0aW9uQ29kZUNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdmVyaWZpY2F0aW9uTWV0aG9kOiBJRnNWZXJpZmljYXRpb25NZXRob2Q7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlc2VuZDogKCkgPT4gT2JzZXJ2YWJsZTx2b2lkPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1RydXN0ZWREZXZpY2UgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cnVzdERldmljZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvZGVMZW5ndGg7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRydXN0RGF5cztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9ybWF0UmVjaXBpZW50ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldFZlcmlmaWNhdGlvbk1ldGhvZHM6ICgpID0+IE9ic2VydmFibGU8SUZzVmVyaWZpY2F0aW9uTWV0aG9kW10+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RWZXJpZmljYXRpb25NZXRob2Q6ICh2ZXJpZmljYXRpb25NZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCkgPT4gT2JzZXJ2YWJsZTxJRnNWZXJpZmljYXRpb25NZXRob2Q+O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmVyaWZpZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjb2RlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNvZGVDb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0cnVzdERldmljZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgY29kZSA9ICcnO1xuICBwdWJsaWMgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSA9IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGU7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9kaWFsb2c6IEZzRGlhbG9nLFxuICAgIHByaXZhdGUgX21lc3NhZ2U6IEZzTWVzc2FnZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgcmVjaXBpZW50KCk6IHN0cmluZyB7XG4gICAgaWYodGhpcy52ZXJpZmljYXRpb25NZXRob2QudHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5FbWFpbCkge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kLmVtYWlsO1xuICAgIH1cblxuICAgIGlmKHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kLnR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuU21zKSB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZmljYXRpb25NZXRob2QucGhvbmVOdW1iZXI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvZGVDb21wbGV0ZShjb2RlKTogdm9pZCB7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgICB0aGlzLmNvZGVDb21wbGV0ZWQuZW1pdCh0aGlzLmNvZGUpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZlcmlmaWNhdGlvbkNvZGVDb21wb25lbnQuZm9jdXMoKTsgICAgXG4gIH1cblxuICBwdWJsaWMgcmVzZW5kQ29kZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlc2VuZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvZGUgPSAnJztcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1Jlc2VudCBDb2RlJyk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25Db2RlQ29tcG9uZW50LmZvY3VzKCk7ICBcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHNob3dWZXJpZmljYXRpb25NZXRob2RzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0VmVyaWZpY2F0aW9uTWV0aG9kcygpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh2ZXJpZmljYXRpb25NZXRob2RzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2RpYWxvZy5vcGVuKFxuICAgICAgICAgICAgRnMyZmFWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uTWV0aG9kOiB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZCxcbiAgICAgICAgICAgICAgICB2ZXJpZmljYXRpb25NZXRob2RzLFxuICAgICAgICAgICAgICAgIHNlbGVjdFZlcmlmaWNhdGlvbk1ldGhvZDogdGhpcy5zZWxlY3RWZXJpZmljYXRpb25NZXRob2QsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgZmlsdGVyKCh2ZXJpZmljYXRpb25NZXRob2QpID0+ICEhdmVyaWZpY2F0aW9uTWV0aG9kKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kID0gdmVyaWZpY2F0aW9uTWV0aG9kO1xuICAgICAgICB0aGlzLmNvZGUgPSAnJztcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25Db2RlQ29tcG9uZW50LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvZGUtY29udGFpbmVyXCI+XG4gIDxmcy0yZmEtdmVyaWZpY2F0aW9uLWNvZGVcbiAgICBbcmVjaXBpZW50XT1cIihmb3JtYXRSZWNpcGllbnQgJiYgdmVyaWZpY2F0aW9uTWV0aG9kLnR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuU21zKSA/IChyZWNpcGllbnQgfCBmc1Bob25lKSA6IHJlY2lwaWVudFwiXG4gICAgW3R5cGVdPVwidmVyaWZpY2F0aW9uTWV0aG9kLnR5cGVcIlxuICAgIFtjb2RlXT1cImNvZGVcIlxuICAgIFtjb2RlTGVuZ3RoXT1cImNvZGVMZW5ndGhcIlxuICAgIChjb2RlQ2hhbmdlZCk9XCJjb2RlQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgIChjb2RlQ29tcGxldGVkKT1cImNvZGVDb21wbGV0ZSgkZXZlbnQpXCI+XG4gIDwvZnMtMmZhLXZlcmlmaWNhdGlvbi1jb2RlPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJhZGRpdGlvbmFsXCI+XG4gIDxkaXYgXG4gICAgICBjbGFzcz1cInRydXN0LWRldmljZVwiXG4gICAgICAqbmdJZj1cInNob3dUcnVzdGVkRGV2aWNlXCI+XG4gICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgIG5hbWU9XCJ0cnVzdC1kZXZpY2VcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwidHJ1c3REZXZpY2VcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRydXN0RGV2aWNlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCI+XG4gICAgICAgIEJ5cGFzcyB2ZXJpZmljYXRpb24gXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cnVzdERheXNcIj5mb3Ige3t0cnVzdERheXN9fSBkYXlzPC9uZy1jb250YWluZXI+ICBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0cnVzdERheXNcIj5mb3IgZnV0dXJlIHNpZ25pbnM8L25nLWNvbnRhaW5lcj4gXG4gICAgICAgIHVubGVzcyBjb29raWVzIGFyZSBjbGVhcmVkXG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -1,60 +1,60 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { ControlContainer, NgForm } from '@angular/forms';
3
- import { FsFormDirective } from '@firestitch/form';
4
- import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
5
- import { CodeInputComponent } from '../../../../modules/code-input/components/code-input';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@firestitch/form";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "../../../code-input/components/code-input/code-input.component";
10
- export class Fs2faVerificationCodeComponent {
11
- constructor(_form) {
12
- this._form = _form;
13
- this.codeChanged = new EventEmitter();
14
- this.codeCompleted = new EventEmitter();
15
- this.VerificationMethodType = VerificationMethodType;
16
- }
17
- codeComplete(code) {
18
- this.codeCompleted.emit(code);
19
- }
20
- codeChange(code) {
21
- this.code = code;
22
- this.codeChanged.emit(this.code);
23
- this._form.dirty();
24
- }
25
- focus() {
26
- this.codeInputComponent.focus();
27
- }
28
- }
29
- Fs2faVerificationCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Fs2faVerificationCodeComponent, deps: [{ token: i1.FsFormDirective }], target: i0.ɵɵFactoryTarget.Component });
30
- Fs2faVerificationCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: { type: "type", recipient: "recipient", codeLength: "codeLength", code: "code" }, outputs: { codeChanged: "codeChanged", codeCompleted: "codeCompleted" }, viewQueries: [{ propertyName: "codeInputComponent", first: true, predicate: CodeInputComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeComplete($event)\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.CodeInputComponent, selector: "app-code-input", inputs: ["codeLength", "code"], outputs: ["codeCompleted", "codeChanged"] }], viewProviders: [
31
- {
32
- provide: ControlContainer,
33
- useExisting: NgForm,
34
- },
35
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Fs2faVerificationCodeComponent, decorators: [{
37
- type: Component,
38
- args: [{ selector: 'fs-2fa-verification-code', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
39
- {
40
- provide: ControlContainer,
41
- useExisting: NgForm,
42
- },
43
- ], template: "<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeComplete($event)\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"] }]
44
- }], ctorParameters: function () { return [{ type: i1.FsFormDirective }]; }, propDecorators: { codeInputComponent: [{
45
- type: ViewChild,
46
- args: [CodeInputComponent]
47
- }], type: [{
48
- type: Input
49
- }], recipient: [{
50
- type: Input
51
- }], codeLength: [{
52
- type: Input
53
- }], code: [{
54
- type: Input
55
- }], codeChanged: [{
56
- type: Output
57
- }], codeCompleted: [{
58
- type: Output
59
- }] } });
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
+ import { ControlContainer, NgForm } from '@angular/forms';
3
+ import { FsFormDirective } from '@firestitch/form';
4
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
5
+ import { CodeInputComponent } from '../../../../modules/code-input/components/code-input';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@firestitch/form";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "../../../code-input/components/code-input/code-input.component";
10
+ export class Fs2faVerificationCodeComponent {
11
+ constructor(_form) {
12
+ this._form = _form;
13
+ this.codeChanged = new EventEmitter();
14
+ this.codeCompleted = new EventEmitter();
15
+ this.VerificationMethodType = VerificationMethodType;
16
+ }
17
+ codeComplete(code) {
18
+ this.codeCompleted.emit(code);
19
+ }
20
+ codeChange(code) {
21
+ this.code = code;
22
+ this.codeChanged.emit(this.code);
23
+ this._form.dirty();
24
+ }
25
+ focus() {
26
+ this.codeInputComponent.focus();
27
+ }
28
+ }
29
+ Fs2faVerificationCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Fs2faVerificationCodeComponent, deps: [{ token: i1.FsFormDirective }], target: i0.ɵɵFactoryTarget.Component });
30
+ Fs2faVerificationCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: { type: "type", recipient: "recipient", codeLength: "codeLength", code: "code" }, outputs: { codeChanged: "codeChanged", codeCompleted: "codeCompleted" }, viewQueries: [{ propertyName: "codeInputComponent", first: true, predicate: CodeInputComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeComplete($event)\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.CodeInputComponent, selector: "app-code-input", inputs: ["codeLength", "code"], outputs: ["codeCompleted", "codeChanged"] }], viewProviders: [
31
+ {
32
+ provide: ControlContainer,
33
+ useExisting: NgForm,
34
+ },
35
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Fs2faVerificationCodeComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'fs-2fa-verification-code', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
39
+ {
40
+ provide: ControlContainer,
41
+ useExisting: NgForm,
42
+ },
43
+ ], template: "<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeComplete($event)\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"] }]
44
+ }], ctorParameters: function () { return [{ type: i1.FsFormDirective }]; }, propDecorators: { codeInputComponent: [{
45
+ type: ViewChild,
46
+ args: [CodeInputComponent]
47
+ }], type: [{
48
+ type: Input
49
+ }], recipient: [{
50
+ type: Input
51
+ }], codeLength: [{
52
+ type: Input
53
+ }], code: [{
54
+ type: Input
55
+ }], codeChanged: [{
56
+ type: Output
57
+ }], codeCompleted: [{
58
+ type: Output
59
+ }] } });
60
60
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7OztBQWUxRixNQUFNLE9BQU8sOEJBQThCO0lBeUJ6QyxZQUNVLEtBQXNCO1FBQXRCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBUnpCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd6QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFekMsMkJBQXNCLEdBQUcsc0JBQXNCLENBQUM7SUFJcEQsQ0FBQztJQUVHLFlBQVksQ0FBQyxJQUFJO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBSTtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzs0SEF6Q1UsOEJBQThCO2dIQUE5Qiw4QkFBOEIsdVJBRTlCLGtCQUFrQixnREM5Qi9CLDBrQ0E2QmUscXNCRFJFO1FBQ2I7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFdBQVcsRUFBRSxNQUFNO1NBQ3BCO0tBQ0Y7NEZBRVUsOEJBQThCO2tCQVoxQyxTQUFTOytCQUNFLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEM7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsV0FBVyxFQUFFLE1BQU07eUJBQ3BCO3FCQUNGO3NHQUtNLGtCQUFrQjtzQkFEeEIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSXRCLElBQUk7c0JBRFYsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsTUFBTTtnQkFJQSxhQUFhO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcblxuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zL3ZlcmlmaWNhdGlvbi1tZXRob2QtdHlwZS5lbnVtJztcbmltcG9ydCB7IENvZGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZHVsZXMvY29kZS1pbnB1dC9jb21wb25lbnRzL2NvZGUtaW5wdXQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLTJmYS12ZXJpZmljYXRpb24tY29kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi8yZmEtdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi8yZmEtdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgdXNlRXhpc3Rpbmc6IE5nRm9ybSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGczJmYVZlcmlmaWNhdGlvbkNvZGVDb21wb25lbnQge1xuXG4gIEBWaWV3Q2hpbGQoQ29kZUlucHV0Q29tcG9uZW50KVxuICBwdWJsaWMgY29kZUlucHV0Q29tcG9uZW50OiBDb2RlSW5wdXRDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHR5cGU6IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlY2lwaWVudDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2RlTGVuZ3RoO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2RlO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY29kZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNvZGVDb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgPSBWZXJpZmljYXRpb25NZXRob2RUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2Zvcm06IEZzRm9ybURpcmVjdGl2ZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBjb2RlQ29tcGxldGUoY29kZSk6IHZvaWQge1xuICAgIHRoaXMuY29kZUNvbXBsZXRlZC5lbWl0KGNvZGUpO1xuICB9XG5cbiAgcHVibGljIGNvZGVDaGFuZ2UoY29kZSk6IHZvaWQge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5jb2RlQ2hhbmdlZC5lbWl0KHRoaXMuY29kZSk7XG4gICAgdGhpcy5fZm9ybS5kaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29kZUlucHV0Q29tcG9uZW50LmZvY3VzKCk7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuU21zXCI+XG4gIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICBBIHRleHQgbWVzc2FnZSB3aXRoIGEgdmVyaWZpY2F0aW9uIGNvZGUgd2FzIGp1c3Qgc2VudCB0byA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+e3sgcmVjaXBpZW50IH19PC9zcGFuPiB0byB2ZXJpZnkgaXQncyB5b3UuXG4gIDwvcD5cblxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5FbWFpbFwiPlxuICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgQW4gZW1haWwgd2l0aCBhIHZlcmlmaWNhdGlvbiBjb2RlIHdhcyBqdXN0IHNlbnQgdG8ge3sgcmVjaXBpZW50IH19IHRvIHZlcmlmeSBpdCdzIHlvdS5cbiAgPC9wPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5BcHBcIj5cbiAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgIEVudGVyIHRoZSB2ZXJpZmljYXRpb24gY29kZSBnZW5lcmF0ZWQgYnkgeW91ciAyIGZhY3RvciBhdXRoZW50aWNhdG9yIGFwcCB0byB2ZXJpZnkgaXQncyB5b3UuXG4gIDwvcD5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNpbnB1dD4gXG4gPGFwcC1jb2RlLWlucHV0ICBcbiAgICBbY29kZV09XCJjb2RlXCJcbiAgICBbY29kZUxlbmd0aF09XCJjb2RlTGVuZ3RoXCJcbiAgICAoY29kZUNoYW5nZWQpPVwiY29kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoY29kZUNvbXBsZXRlZCk9XCJjb2RlQ29tcGxldGUoJGV2ZW50KVwiPlxuICA8L2FwcC1jb2RlLWlucHV0PiBcbjwvbmctdGVtcGxhdGU+ICJdfQ==