@venturialstd/kyc 0.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.
- package/README.md +278 -0
- package/dist/constants/kyc.constant.d.ts +47 -0
- package/dist/constants/kyc.constant.d.ts.map +1 -0
- package/dist/constants/kyc.constant.js +55 -0
- package/dist/constants/kyc.constant.js.map +1 -0
- package/dist/dtos/create-kyc-profile.dto.d.ts +20 -0
- package/dist/dtos/create-kyc-profile.dto.d.ts.map +1 -0
- package/dist/dtos/create-kyc-profile.dto.js +113 -0
- package/dist/dtos/create-kyc-profile.dto.js.map +1 -0
- package/dist/dtos/update-kyc-profile.dto.d.ts +6 -0
- package/dist/dtos/update-kyc-profile.dto.d.ts.map +1 -0
- package/dist/dtos/update-kyc-profile.dto.js +9 -0
- package/dist/dtos/update-kyc-profile.dto.js.map +1 -0
- package/dist/entities/kyc-document.entity.d.ts +26 -0
- package/dist/entities/kyc-document.entity.d.ts.map +1 -0
- package/dist/entities/kyc-document.entity.js +177 -0
- package/dist/entities/kyc-document.entity.js.map +1 -0
- package/dist/entities/kyc-profile.entity.d.ts +31 -0
- package/dist/entities/kyc-profile.entity.d.ts.map +1 -0
- package/dist/entities/kyc-profile.entity.js +213 -0
- package/dist/entities/kyc-profile.entity.js.map +1 -0
- package/dist/entities/kyc-verification.entity.d.ts +21 -0
- package/dist/entities/kyc-verification.entity.d.ts.map +1 -0
- package/dist/entities/kyc-verification.entity.js +135 -0
- package/dist/entities/kyc-verification.entity.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/kyc-provider.interface.d.ts +98 -0
- package/dist/interfaces/kyc-provider.interface.d.ts.map +1 -0
- package/dist/interfaces/kyc-provider.interface.js +12 -0
- package/dist/interfaces/kyc-provider.interface.js.map +1 -0
- package/dist/kyc.module.d.ts +12 -0
- package/dist/kyc.module.d.ts.map +1 -0
- package/dist/kyc.module.js +65 -0
- package/dist/kyc.module.js.map +1 -0
- package/dist/providers/aiprise.provider.d.ts +9 -0
- package/dist/providers/aiprise.provider.d.ts.map +1 -0
- package/dist/providers/aiprise.provider.js +73 -0
- package/dist/providers/aiprise.provider.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +18 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/services/kyc-provider.service.d.ts +18 -0
- package/dist/services/kyc-provider.service.d.ts.map +1 -0
- package/dist/services/kyc-provider.service.js +179 -0
- package/dist/services/kyc-provider.service.js.map +1 -0
- package/dist/services/kyc.service.d.ts +15 -0
- package/dist/services/kyc.service.d.ts.map +1 -0
- package/dist/services/kyc.service.js +96 -0
- package/dist/services/kyc.service.js.map +1 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# @venturialstd/kyc
|
|
2
|
+
|
|
3
|
+
KYC (Know Your Customer) Management Module for Venturial
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This module provides comprehensive KYC (Know Your Customer) functionality for managing user verification, document uploads, and compliance tracking in fintech applications.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **KYC Profile Management**: Track user verification status and personal information
|
|
12
|
+
- **Document Management**: Upload and verify identity documents
|
|
13
|
+
- **Verification Tracking**: Monitor individual verification steps and checks
|
|
14
|
+
- **Multiple Verification Levels**: Support for basic, intermediate, advanced, and full verification
|
|
15
|
+
- **Status Management**: Track KYC status from pending to approved/rejected
|
|
16
|
+
- **Provider Integration**: Support for external KYC providers (AIPRISE, JUMIO, ONFIDO, etc.)
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install @venturialstd/kyc
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
### Module Setup
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { KYCModule } from '@venturialstd/kyc';
|
|
30
|
+
|
|
31
|
+
@Module({
|
|
32
|
+
imports: [KYCModule.forRoot()],
|
|
33
|
+
})
|
|
34
|
+
export class AppModule {}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Basic Usage
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { KYCService, KYC_STATUS } from '@venturialstd/kyc';
|
|
41
|
+
|
|
42
|
+
@Injectable()
|
|
43
|
+
export class MyService {
|
|
44
|
+
constructor(private readonly kycService: KYCService) {}
|
|
45
|
+
|
|
46
|
+
async checkUserKYC(userId: string) {
|
|
47
|
+
const isCompleted = await this.kycService.isKYCCompleted(userId);
|
|
48
|
+
return isCompleted;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async updateKYCStatus(profileId: string, status: KYC_STATUS) {
|
|
52
|
+
return this.kycService.updateStatus(profileId, status);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Entities
|
|
58
|
+
|
|
59
|
+
### KYCProfile
|
|
60
|
+
|
|
61
|
+
Main entity that tracks KYC verification for a user.
|
|
62
|
+
|
|
63
|
+
**Key Fields:**
|
|
64
|
+
- `userId`: Reference to the user
|
|
65
|
+
- `status`: Current KYC status (PENDING, APPROVED, REJECTED, etc.)
|
|
66
|
+
- `verificationLevel`: Level of verification (NONE, BASIC, INTERMEDIATE, ADVANCED, FULL)
|
|
67
|
+
- Personal information (firstName, lastName, dateOfBirth, etc.)
|
|
68
|
+
- Address information (addressLine1, city, country, etc.)
|
|
69
|
+
|
|
70
|
+
### KYCDocument
|
|
71
|
+
|
|
72
|
+
Stores uploaded documents for KYC verification.
|
|
73
|
+
|
|
74
|
+
**Key Fields:**
|
|
75
|
+
- `kycProfileId`: Reference to KYC profile
|
|
76
|
+
- `documentType`: Type of document (PASSPORT, DRIVER_LICENSE, etc.)
|
|
77
|
+
- `side`: Document side (FRONT, BACK, BOTH)
|
|
78
|
+
- `status`: Document verification status
|
|
79
|
+
- `fileUrl`: URL to stored document file
|
|
80
|
+
|
|
81
|
+
### KYCVerification
|
|
82
|
+
|
|
83
|
+
Tracks individual verification steps/checks within the KYC process.
|
|
84
|
+
|
|
85
|
+
**Key Fields:**
|
|
86
|
+
- `kycProfileId`: Reference to KYC profile
|
|
87
|
+
- `verificationType`: Type of verification (IDENTITY, ADDRESS, DOCUMENT, etc.)
|
|
88
|
+
- `status`: Verification status
|
|
89
|
+
- `provider`: External KYC provider name
|
|
90
|
+
- `confidenceScore`: Confidence score (0-100)
|
|
91
|
+
|
|
92
|
+
## Constants
|
|
93
|
+
|
|
94
|
+
### KYC_STATUS
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
enum KYC_STATUS {
|
|
98
|
+
PENDING = 'PENDING',
|
|
99
|
+
IN_PROGRESS = 'IN_PROGRESS',
|
|
100
|
+
SUBMITTED = 'SUBMITTED',
|
|
101
|
+
UNDER_REVIEW = 'UNDER_REVIEW',
|
|
102
|
+
APPROVED = 'APPROVED',
|
|
103
|
+
REJECTED = 'REJECTED',
|
|
104
|
+
EXPIRED = 'EXPIRED',
|
|
105
|
+
REQUIRES_UPDATE = 'REQUIRES_UPDATE',
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### KYC_VERIFICATION_LEVEL
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
enum KYC_VERIFICATION_LEVEL {
|
|
113
|
+
NONE = 'NONE',
|
|
114
|
+
BASIC = 'BASIC',
|
|
115
|
+
INTERMEDIATE = 'INTERMEDIATE',
|
|
116
|
+
ADVANCED = 'ADVANCED',
|
|
117
|
+
FULL = 'FULL',
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### KYC_DOCUMENT_TYPE
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
enum KYC_DOCUMENT_TYPE {
|
|
125
|
+
PASSPORT = 'PASSPORT',
|
|
126
|
+
DRIVER_LICENSE = 'DRIVER_LICENSE',
|
|
127
|
+
NATIONAL_ID = 'NATIONAL_ID',
|
|
128
|
+
// ... and more
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Services
|
|
133
|
+
|
|
134
|
+
### KYCService
|
|
135
|
+
|
|
136
|
+
Main service for managing KYC profiles.
|
|
137
|
+
|
|
138
|
+
**Methods:**
|
|
139
|
+
- `findByUserId(userId: string)`: Get KYC profile by user ID
|
|
140
|
+
- `createOrUpdateProfile(userId: string, data: Partial<KYCProfile>)`: Create or update profile
|
|
141
|
+
- `updateStatus(profileId: string, status: KYC_STATUS, reviewedBy?: string)`: Update KYC status
|
|
142
|
+
- `updateVerificationLevel(profileId: string, level: KYC_VERIFICATION_LEVEL)`: Update verification level
|
|
143
|
+
- `isKYCCompleted(userId: string)`: Check if user has completed KYC
|
|
144
|
+
- `getVerificationLevel(userId: string)`: Get user's verification level
|
|
145
|
+
|
|
146
|
+
### KYCProviderService
|
|
147
|
+
|
|
148
|
+
Service for managing external KYC provider integrations.
|
|
149
|
+
|
|
150
|
+
**Methods:**
|
|
151
|
+
- `registerProvider(provider: KYCProvider)`: Register a custom KYC provider
|
|
152
|
+
- `getProvider(name: string)`: Get a registered provider
|
|
153
|
+
- `createVerification(userId: string, providerName: string, userData)`: Create verification with provider
|
|
154
|
+
- `syncVerificationResult(providerName: string, sessionId: string)`: Sync provider result to KYC entities
|
|
155
|
+
- `handleProviderWebhook(providerName: string, payload: unknown)`: Handle webhook from provider
|
|
156
|
+
|
|
157
|
+
## External Provider Integration
|
|
158
|
+
|
|
159
|
+
The module supports integration with external KYC providers (AIPRISE, JUMIO, ONFIDO, etc.) through a provider interface.
|
|
160
|
+
|
|
161
|
+
### Using Default Providers
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
import { KYCModule, KYCProviderService } from '@venturialstd/kyc';
|
|
165
|
+
|
|
166
|
+
@Module({
|
|
167
|
+
imports: [KYCModule.forRoot()], // AIPRISE provider registered by default
|
|
168
|
+
})
|
|
169
|
+
export class AppModule {}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Using Custom Providers
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
import { Injectable } from '@nestjs/common';
|
|
176
|
+
import {
|
|
177
|
+
KYCModule,
|
|
178
|
+
KYCProvider,
|
|
179
|
+
ProviderDocumentData,
|
|
180
|
+
ProviderUserData,
|
|
181
|
+
} from '@venturialstd/kyc';
|
|
182
|
+
|
|
183
|
+
@Injectable()
|
|
184
|
+
class MyCustomProvider implements KYCProvider {
|
|
185
|
+
readonly name = 'MY_PROVIDER';
|
|
186
|
+
|
|
187
|
+
async createVerificationSession(userId: string, userData: ProviderUserData) {
|
|
188
|
+
// Your implementation
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
async getVerificationStatus(sessionId: string) {
|
|
192
|
+
// Your implementation
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
async handleWebhook(payload: unknown) {
|
|
196
|
+
// Your implementation
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
async uploadDocument(sessionId: string, documentData: ProviderDocumentData) {
|
|
200
|
+
// Your implementation
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@Module({
|
|
205
|
+
imports: [
|
|
206
|
+
KYCModule.forRoot({
|
|
207
|
+
providers: [MyCustomProvider], // Pass the class, not an instance
|
|
208
|
+
registerDefaultProviders: false, // Disable default providers
|
|
209
|
+
}),
|
|
210
|
+
],
|
|
211
|
+
})
|
|
212
|
+
export class AppModule {}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Creating Verification with Provider
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
import { Injectable } from '@nestjs/common';
|
|
219
|
+
import { KYCProviderService } from '@venturialstd/kyc';
|
|
220
|
+
|
|
221
|
+
@Injectable()
|
|
222
|
+
export class VerificationService {
|
|
223
|
+
constructor(private readonly kycProviderService: KYCProviderService) {}
|
|
224
|
+
|
|
225
|
+
async startKYCVerification(userId: string) {
|
|
226
|
+
const session = await this.kycProviderService.createVerification(
|
|
227
|
+
userId,
|
|
228
|
+
'AIPRISE', // Provider name
|
|
229
|
+
{
|
|
230
|
+
firstName: 'John',
|
|
231
|
+
lastName: 'Doe',
|
|
232
|
+
email: 'john@example.com',
|
|
233
|
+
},
|
|
234
|
+
);
|
|
235
|
+
|
|
236
|
+
// Redirect user to session.redirectUrl or embed session.widgetConfig
|
|
237
|
+
return session;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
async handleWebhook(providerName: string, payload: unknown) {
|
|
241
|
+
return this.kycProviderService.handleProviderWebhook(providerName, payload);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Webhook Endpoint Example
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
import { Controller, Post, Body, Param } from '@nestjs/common';
|
|
250
|
+
import { KYCProviderService } from '@venturialstd/kyc';
|
|
251
|
+
|
|
252
|
+
@Controller('webhooks/kyc')
|
|
253
|
+
export class KYCWebhookController {
|
|
254
|
+
constructor(private readonly kycProviderService: KYCProviderService) {}
|
|
255
|
+
|
|
256
|
+
@Post(':provider')
|
|
257
|
+
async handleWebhook(
|
|
258
|
+
@Param('provider') provider: string,
|
|
259
|
+
@Body() payload: unknown,
|
|
260
|
+
) {
|
|
261
|
+
return this.kycProviderService.handleProviderWebhook(provider, payload);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## DTOs
|
|
267
|
+
|
|
268
|
+
### CreateKYCProfileDto
|
|
269
|
+
|
|
270
|
+
DTO for creating a new KYC profile.
|
|
271
|
+
|
|
272
|
+
### UpdateKYCProfileDto
|
|
273
|
+
|
|
274
|
+
DTO for updating an existing KYC profile (extends PartialType of CreateKYCProfileDto).
|
|
275
|
+
|
|
276
|
+
## License
|
|
277
|
+
|
|
278
|
+
MIT
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare enum KYC_STATUS {
|
|
2
|
+
PENDING = "PENDING",
|
|
3
|
+
IN_PROGRESS = "IN_PROGRESS",
|
|
4
|
+
SUBMITTED = "SUBMITTED",
|
|
5
|
+
UNDER_REVIEW = "UNDER_REVIEW",
|
|
6
|
+
APPROVED = "APPROVED",
|
|
7
|
+
REJECTED = "REJECTED",
|
|
8
|
+
EXPIRED = "EXPIRED",
|
|
9
|
+
REQUIRES_UPDATE = "REQUIRES_UPDATE"
|
|
10
|
+
}
|
|
11
|
+
export declare enum KYC_VERIFICATION_LEVEL {
|
|
12
|
+
NONE = "NONE",
|
|
13
|
+
BASIC = "BASIC",
|
|
14
|
+
INTERMEDIATE = "INTERMEDIATE",
|
|
15
|
+
ADVANCED = "ADVANCED",
|
|
16
|
+
FULL = "FULL"
|
|
17
|
+
}
|
|
18
|
+
export declare enum KYC_DOCUMENT_TYPE {
|
|
19
|
+
PASSPORT = "PASSPORT",
|
|
20
|
+
DRIVER_LICENSE = "DRIVER_LICENSE",
|
|
21
|
+
NATIONAL_ID = "NATIONAL_ID",
|
|
22
|
+
ID_CARD = "ID_CARD",
|
|
23
|
+
DNI = "DNI",
|
|
24
|
+
CURP = "CURP",
|
|
25
|
+
CPF = "CPF",
|
|
26
|
+
RFC = "RFC",
|
|
27
|
+
SSN = "SSN",
|
|
28
|
+
INE = "INE",
|
|
29
|
+
NUIP = "NUIP"
|
|
30
|
+
}
|
|
31
|
+
export declare enum KYC_DOCUMENT_STATUS {
|
|
32
|
+
PENDING = "PENDING",
|
|
33
|
+
UPLOADED = "UPLOADED",
|
|
34
|
+
VERIFYING = "VERIFYING",
|
|
35
|
+
VERIFIED = "VERIFIED",
|
|
36
|
+
REJECTED = "REJECTED",
|
|
37
|
+
EXPIRED = "EXPIRED"
|
|
38
|
+
}
|
|
39
|
+
export declare enum KYC_DOCUMENT_SIDE {
|
|
40
|
+
FRONT = "FRONT",
|
|
41
|
+
BACK = "BACK",
|
|
42
|
+
BOTH = "BOTH"
|
|
43
|
+
}
|
|
44
|
+
export declare const DEFAULT_KYC_STATUSES: KYC_STATUS[];
|
|
45
|
+
export declare const DEFAULT_KYC_VERIFICATION_LEVELS: KYC_VERIFICATION_LEVEL[];
|
|
46
|
+
export declare const DEFAULT_KYC_DOCUMENT_TYPES: KYC_DOCUMENT_TYPE[];
|
|
47
|
+
//# sourceMappingURL=kyc.constant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kyc.constant.d.ts","sourceRoot":"","sources":["../../src/constants/kyc.constant.ts"],"names":[],"mappings":"AAIA,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,eAAe,oBAAoB;CACpC;AAMD,oBAAY,sBAAsB;IAChC,IAAI,SAAS;IACb,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAMD,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;IACrB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAMD,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAMD,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAKD,eAAO,MAAM,oBAAoB,cAA4B,CAAC;AAK9D,eAAO,MAAM,+BAA+B,0BAAwC,CAAC;AAKrF,eAAO,MAAM,0BAA0B,qBAAmC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_KYC_DOCUMENT_TYPES = exports.DEFAULT_KYC_VERIFICATION_LEVELS = exports.DEFAULT_KYC_STATUSES = exports.KYC_DOCUMENT_SIDE = exports.KYC_DOCUMENT_STATUS = exports.KYC_DOCUMENT_TYPE = exports.KYC_VERIFICATION_LEVEL = exports.KYC_STATUS = void 0;
|
|
4
|
+
var KYC_STATUS;
|
|
5
|
+
(function (KYC_STATUS) {
|
|
6
|
+
KYC_STATUS["PENDING"] = "PENDING";
|
|
7
|
+
KYC_STATUS["IN_PROGRESS"] = "IN_PROGRESS";
|
|
8
|
+
KYC_STATUS["SUBMITTED"] = "SUBMITTED";
|
|
9
|
+
KYC_STATUS["UNDER_REVIEW"] = "UNDER_REVIEW";
|
|
10
|
+
KYC_STATUS["APPROVED"] = "APPROVED";
|
|
11
|
+
KYC_STATUS["REJECTED"] = "REJECTED";
|
|
12
|
+
KYC_STATUS["EXPIRED"] = "EXPIRED";
|
|
13
|
+
KYC_STATUS["REQUIRES_UPDATE"] = "REQUIRES_UPDATE";
|
|
14
|
+
})(KYC_STATUS || (exports.KYC_STATUS = KYC_STATUS = {}));
|
|
15
|
+
var KYC_VERIFICATION_LEVEL;
|
|
16
|
+
(function (KYC_VERIFICATION_LEVEL) {
|
|
17
|
+
KYC_VERIFICATION_LEVEL["NONE"] = "NONE";
|
|
18
|
+
KYC_VERIFICATION_LEVEL["BASIC"] = "BASIC";
|
|
19
|
+
KYC_VERIFICATION_LEVEL["INTERMEDIATE"] = "INTERMEDIATE";
|
|
20
|
+
KYC_VERIFICATION_LEVEL["ADVANCED"] = "ADVANCED";
|
|
21
|
+
KYC_VERIFICATION_LEVEL["FULL"] = "FULL";
|
|
22
|
+
})(KYC_VERIFICATION_LEVEL || (exports.KYC_VERIFICATION_LEVEL = KYC_VERIFICATION_LEVEL = {}));
|
|
23
|
+
var KYC_DOCUMENT_TYPE;
|
|
24
|
+
(function (KYC_DOCUMENT_TYPE) {
|
|
25
|
+
KYC_DOCUMENT_TYPE["PASSPORT"] = "PASSPORT";
|
|
26
|
+
KYC_DOCUMENT_TYPE["DRIVER_LICENSE"] = "DRIVER_LICENSE";
|
|
27
|
+
KYC_DOCUMENT_TYPE["NATIONAL_ID"] = "NATIONAL_ID";
|
|
28
|
+
KYC_DOCUMENT_TYPE["ID_CARD"] = "ID_CARD";
|
|
29
|
+
KYC_DOCUMENT_TYPE["DNI"] = "DNI";
|
|
30
|
+
KYC_DOCUMENT_TYPE["CURP"] = "CURP";
|
|
31
|
+
KYC_DOCUMENT_TYPE["CPF"] = "CPF";
|
|
32
|
+
KYC_DOCUMENT_TYPE["RFC"] = "RFC";
|
|
33
|
+
KYC_DOCUMENT_TYPE["SSN"] = "SSN";
|
|
34
|
+
KYC_DOCUMENT_TYPE["INE"] = "INE";
|
|
35
|
+
KYC_DOCUMENT_TYPE["NUIP"] = "NUIP";
|
|
36
|
+
})(KYC_DOCUMENT_TYPE || (exports.KYC_DOCUMENT_TYPE = KYC_DOCUMENT_TYPE = {}));
|
|
37
|
+
var KYC_DOCUMENT_STATUS;
|
|
38
|
+
(function (KYC_DOCUMENT_STATUS) {
|
|
39
|
+
KYC_DOCUMENT_STATUS["PENDING"] = "PENDING";
|
|
40
|
+
KYC_DOCUMENT_STATUS["UPLOADED"] = "UPLOADED";
|
|
41
|
+
KYC_DOCUMENT_STATUS["VERIFYING"] = "VERIFYING";
|
|
42
|
+
KYC_DOCUMENT_STATUS["VERIFIED"] = "VERIFIED";
|
|
43
|
+
KYC_DOCUMENT_STATUS["REJECTED"] = "REJECTED";
|
|
44
|
+
KYC_DOCUMENT_STATUS["EXPIRED"] = "EXPIRED";
|
|
45
|
+
})(KYC_DOCUMENT_STATUS || (exports.KYC_DOCUMENT_STATUS = KYC_DOCUMENT_STATUS = {}));
|
|
46
|
+
var KYC_DOCUMENT_SIDE;
|
|
47
|
+
(function (KYC_DOCUMENT_SIDE) {
|
|
48
|
+
KYC_DOCUMENT_SIDE["FRONT"] = "FRONT";
|
|
49
|
+
KYC_DOCUMENT_SIDE["BACK"] = "BACK";
|
|
50
|
+
KYC_DOCUMENT_SIDE["BOTH"] = "BOTH";
|
|
51
|
+
})(KYC_DOCUMENT_SIDE || (exports.KYC_DOCUMENT_SIDE = KYC_DOCUMENT_SIDE = {}));
|
|
52
|
+
exports.DEFAULT_KYC_STATUSES = Object.values(KYC_STATUS);
|
|
53
|
+
exports.DEFAULT_KYC_VERIFICATION_LEVELS = Object.values(KYC_VERIFICATION_LEVEL);
|
|
54
|
+
exports.DEFAULT_KYC_DOCUMENT_TYPES = Object.values(KYC_DOCUMENT_TYPE);
|
|
55
|
+
//# sourceMappingURL=kyc.constant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kyc.constant.js","sourceRoot":"","sources":["../../src/constants/kyc.constant.ts"],"names":[],"mappings":";;;AAIA,IAAY,UASX;AATD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,yCAA2B,CAAA;IAC3B,qCAAuB,CAAA;IACvB,2CAA6B,CAAA;IAC7B,mCAAqB,CAAA;IACrB,mCAAqB,CAAA;IACrB,iCAAmB,CAAA;IACnB,iDAAmC,CAAA;AACrC,CAAC,EATW,UAAU,0BAAV,UAAU,QASrB;AAMD,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,uDAA6B,CAAA;IAC7B,+CAAqB,CAAA;IACrB,uCAAa,CAAA;AACf,CAAC,EANW,sBAAsB,sCAAtB,sBAAsB,QAMjC;AAMD,IAAY,iBAYX;AAZD,WAAY,iBAAiB;IAC3B,0CAAqB,CAAA;IACrB,sDAAiC,CAAA;IACjC,gDAA2B,CAAA;IAC3B,wCAAmB,CAAA;IACnB,gCAAW,CAAA;IACX,kCAAa,CAAA;IACb,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,kCAAa,CAAA;AACf,CAAC,EAZW,iBAAiB,iCAAjB,iBAAiB,QAY5B;AAMD,IAAY,mBAOX;AAPD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,4CAAqB,CAAA;IACrB,8CAAuB,CAAA;IACvB,4CAAqB,CAAA;IACrB,4CAAqB,CAAA;IACrB,0CAAmB,CAAA;AACrB,CAAC,EAPW,mBAAmB,mCAAnB,mBAAmB,QAO9B;AAMD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,kCAAa,CAAA;AACf,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAKY,QAAA,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAKjD,QAAA,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAKxE,QAAA,0BAA0B,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { KYC_STATUS, KYC_VERIFICATION_LEVEL } from '../constants/kyc.constant';
|
|
2
|
+
export declare class CreateKYCProfileDto {
|
|
3
|
+
userId: string;
|
|
4
|
+
status?: KYC_STATUS;
|
|
5
|
+
verificationLevel?: KYC_VERIFICATION_LEVEL;
|
|
6
|
+
firstName?: string;
|
|
7
|
+
lastName?: string;
|
|
8
|
+
dateOfBirth?: string;
|
|
9
|
+
nationality?: string;
|
|
10
|
+
occupation?: string;
|
|
11
|
+
sourceOfFunds?: string;
|
|
12
|
+
addressLine1?: string;
|
|
13
|
+
addressLine2?: string;
|
|
14
|
+
city?: string;
|
|
15
|
+
state?: string;
|
|
16
|
+
postalCode?: string;
|
|
17
|
+
country?: string;
|
|
18
|
+
residenceType?: string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=create-kyc-profile.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-kyc-profile.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-kyc-profile.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,qBAAa,mBAAmB;IAE9B,MAAM,EAAE,MAAM,CAAC;IAIf,MAAM,CAAC,EAAE,UAAU,CAAC;IAIpB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAK3C,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAIlB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAIpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAKvB,YAAY,CAAC,EAAE,MAAM,CAAC;IAItB,YAAY,CAAC,EAAE,MAAM,CAAC;IAItB,IAAI,CAAC,EAAE,MAAM,CAAC;IAId,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,UAAU,CAAC,EAAE,MAAM,CAAC;IAIpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CreateKYCProfileDto = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const kyc_constant_1 = require("../constants/kyc.constant");
|
|
15
|
+
class CreateKYCProfileDto {
|
|
16
|
+
userId;
|
|
17
|
+
status;
|
|
18
|
+
verificationLevel;
|
|
19
|
+
firstName;
|
|
20
|
+
lastName;
|
|
21
|
+
dateOfBirth;
|
|
22
|
+
nationality;
|
|
23
|
+
occupation;
|
|
24
|
+
sourceOfFunds;
|
|
25
|
+
addressLine1;
|
|
26
|
+
addressLine2;
|
|
27
|
+
city;
|
|
28
|
+
state;
|
|
29
|
+
postalCode;
|
|
30
|
+
country;
|
|
31
|
+
residenceType;
|
|
32
|
+
}
|
|
33
|
+
exports.CreateKYCProfileDto = CreateKYCProfileDto;
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, class_validator_1.IsString)(),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], CreateKYCProfileDto.prototype, "userId", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, class_validator_1.IsEnum)(kyc_constant_1.KYC_STATUS),
|
|
40
|
+
(0, class_validator_1.IsOptional)(),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], CreateKYCProfileDto.prototype, "status", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, class_validator_1.IsEnum)(kyc_constant_1.KYC_VERIFICATION_LEVEL),
|
|
45
|
+
(0, class_validator_1.IsOptional)(),
|
|
46
|
+
__metadata("design:type", String)
|
|
47
|
+
], CreateKYCProfileDto.prototype, "verificationLevel", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, class_validator_1.IsString)(),
|
|
50
|
+
(0, class_validator_1.IsOptional)(),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], CreateKYCProfileDto.prototype, "firstName", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, class_validator_1.IsString)(),
|
|
55
|
+
(0, class_validator_1.IsOptional)(),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], CreateKYCProfileDto.prototype, "lastName", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, class_validator_1.IsString)(),
|
|
60
|
+
(0, class_validator_1.IsOptional)(),
|
|
61
|
+
__metadata("design:type", String)
|
|
62
|
+
], CreateKYCProfileDto.prototype, "dateOfBirth", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, class_validator_1.IsString)(),
|
|
65
|
+
(0, class_validator_1.IsOptional)(),
|
|
66
|
+
__metadata("design:type", String)
|
|
67
|
+
], CreateKYCProfileDto.prototype, "nationality", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, class_validator_1.IsString)(),
|
|
70
|
+
(0, class_validator_1.IsOptional)(),
|
|
71
|
+
__metadata("design:type", String)
|
|
72
|
+
], CreateKYCProfileDto.prototype, "occupation", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, class_validator_1.IsString)(),
|
|
75
|
+
(0, class_validator_1.IsOptional)(),
|
|
76
|
+
__metadata("design:type", String)
|
|
77
|
+
], CreateKYCProfileDto.prototype, "sourceOfFunds", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
(0, class_validator_1.IsString)(),
|
|
80
|
+
(0, class_validator_1.IsOptional)(),
|
|
81
|
+
__metadata("design:type", String)
|
|
82
|
+
], CreateKYCProfileDto.prototype, "addressLine1", void 0);
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, class_validator_1.IsString)(),
|
|
85
|
+
(0, class_validator_1.IsOptional)(),
|
|
86
|
+
__metadata("design:type", String)
|
|
87
|
+
], CreateKYCProfileDto.prototype, "addressLine2", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, class_validator_1.IsString)(),
|
|
90
|
+
(0, class_validator_1.IsOptional)(),
|
|
91
|
+
__metadata("design:type", String)
|
|
92
|
+
], CreateKYCProfileDto.prototype, "city", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, class_validator_1.IsString)(),
|
|
95
|
+
(0, class_validator_1.IsOptional)(),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], CreateKYCProfileDto.prototype, "state", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, class_validator_1.IsString)(),
|
|
100
|
+
(0, class_validator_1.IsOptional)(),
|
|
101
|
+
__metadata("design:type", String)
|
|
102
|
+
], CreateKYCProfileDto.prototype, "postalCode", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, class_validator_1.IsString)(),
|
|
105
|
+
(0, class_validator_1.IsOptional)(),
|
|
106
|
+
__metadata("design:type", String)
|
|
107
|
+
], CreateKYCProfileDto.prototype, "country", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, class_validator_1.IsString)(),
|
|
110
|
+
(0, class_validator_1.IsOptional)(),
|
|
111
|
+
__metadata("design:type", String)
|
|
112
|
+
], CreateKYCProfileDto.prototype, "residenceType", void 0);
|
|
113
|
+
//# sourceMappingURL=create-kyc-profile.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-kyc-profile.dto.js","sourceRoot":"","sources":["../../src/dtos/create-kyc-profile.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA+D;AAE/D,4DAA+E;AAE/E,MAAa,mBAAmB;IAE9B,MAAM,CAAS;IAIf,MAAM,CAAc;IAIpB,iBAAiB,CAA0B;IAK3C,SAAS,CAAU;IAInB,QAAQ,CAAU;IAIlB,WAAW,CAAU;IAIrB,WAAW,CAAU;IAIrB,UAAU,CAAU;IAIpB,aAAa,CAAU;IAKvB,YAAY,CAAU;IAItB,YAAY,CAAU;IAItB,IAAI,CAAU;IAId,KAAK,CAAU;IAIf,UAAU,CAAU;IAIpB,OAAO,CAAU;IAIjB,aAAa,CAAU;CACxB;AAjED,kDAiEC;AA/DC;IADC,IAAA,0BAAQ,GAAE;;mDACI;AAIf;IAFC,IAAA,wBAAM,EAAC,yBAAU,CAAC;IAClB,IAAA,4BAAU,GAAE;;mDACO;AAIpB;IAFC,IAAA,wBAAM,EAAC,qCAAsB,CAAC;IAC9B,IAAA,4BAAU,GAAE;;8DAC8B;AAK3C;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;sDACM;AAInB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;qDACK;AAIlB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wDACQ;AAIrB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wDACQ;AAIrB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;uDACO;AAIpB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;0DACU;AAKvB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;yDACS;AAItB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;yDACS;AAItB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;iDACC;AAId;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;kDACE;AAIf;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;uDACO;AAIpB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;oDACI;AAIjB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;0DACU"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CreateKYCProfileDto } from './create-kyc-profile.dto';
|
|
2
|
+
declare const UpdateKYCProfileDto_base: import("@nestjs/common").Type<Partial<CreateKYCProfileDto>>;
|
|
3
|
+
export declare class UpdateKYCProfileDto extends UpdateKYCProfileDto_base {
|
|
4
|
+
}
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=update-kyc-profile.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-kyc-profile.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-kyc-profile.dto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;;AAE/D,qBAAa,mBAAoB,SAAQ,wBAAgC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateKYCProfileDto = void 0;
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
const create_kyc_profile_dto_1 = require("./create-kyc-profile.dto");
|
|
6
|
+
class UpdateKYCProfileDto extends (0, swagger_1.PartialType)(create_kyc_profile_dto_1.CreateKYCProfileDto) {
|
|
7
|
+
}
|
|
8
|
+
exports.UpdateKYCProfileDto = UpdateKYCProfileDto;
|
|
9
|
+
//# sourceMappingURL=update-kyc-profile.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-kyc-profile.dto.js","sourceRoot":"","sources":["../../src/dtos/update-kyc-profile.dto.ts"],"names":[],"mappings":";;;AAAA,6CAA8C;AAE9C,qEAA+D;AAE/D,MAAa,mBAAoB,SAAQ,IAAA,qBAAW,EAAC,4CAAmB,CAAC;CAAG;AAA5E,kDAA4E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { KYC_DOCUMENT_SIDE, KYC_DOCUMENT_STATUS, KYC_DOCUMENT_TYPE } from '../constants/kyc.constant';
|
|
2
|
+
import { KYCProfile } from './kyc-profile.entity';
|
|
3
|
+
export declare class KYCDocument {
|
|
4
|
+
id: string;
|
|
5
|
+
kycProfileId: string;
|
|
6
|
+
kycProfile: KYCProfile;
|
|
7
|
+
documentType: KYC_DOCUMENT_TYPE;
|
|
8
|
+
side: KYC_DOCUMENT_SIDE;
|
|
9
|
+
status: KYC_DOCUMENT_STATUS;
|
|
10
|
+
documentNumber: string;
|
|
11
|
+
issuingCountry: string;
|
|
12
|
+
issueDate: string;
|
|
13
|
+
expiryDate: string;
|
|
14
|
+
fileUrl: string;
|
|
15
|
+
fileName: string;
|
|
16
|
+
fileType: string;
|
|
17
|
+
fileSize: number;
|
|
18
|
+
verifiedAt: Date;
|
|
19
|
+
verificationNotes: string;
|
|
20
|
+
rejectionReason: string;
|
|
21
|
+
extractedData: Record<string, unknown>;
|
|
22
|
+
metadata: Record<string, unknown>;
|
|
23
|
+
createdAt: Date;
|
|
24
|
+
updatedAt: Date;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=kyc-document.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kyc-document.entity.d.ts","sourceRoot":"","sources":["../../src/entities/kyc-document.entity.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMlD,qBAEa,WAAW;IAEtB,EAAE,EAAE,MAAM,CAAC;IAMX,YAAY,EAAE,MAAM,CAAC;IAIrB,UAAU,EAAE,UAAU,CAAC;IAOvB,YAAY,EAAE,iBAAiB,CAAC;IAQhC,IAAI,EAAE,iBAAiB,CAAC;IAQxB,MAAM,EAAE,mBAAmB,CAAC;IAK5B,cAAc,EAAE,MAAM,CAAC;IAKvB,cAAc,EAAE,MAAM,CAAC;IAKvB,SAAS,EAAE,MAAM,CAAC;IAKlB,UAAU,EAAE,MAAM,CAAC;IAMnB,OAAO,EAAE,MAAM,CAAC;IAKhB,QAAQ,EAAE,MAAM,CAAC;IAKjB,QAAQ,EAAE,MAAM,CAAC;IAKjB,QAAQ,EAAE,MAAM,CAAC;IAIjB,UAAU,EAAE,IAAI,CAAC;IAKjB,iBAAiB,EAAE,MAAM,CAAC;IAK1B,eAAe,EAAE,MAAM,CAAC;IAIxB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQlC,SAAS,EAAE,IAAI,CAAC;IAQhB,SAAS,EAAE,IAAI,CAAC;CACjB"}
|