@sinoia/hubdoc-tools 1.3.4 â 1.3.6
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/dist/plugins/alfresco/index.d.ts +26 -0
- package/dist/plugins/alfresco/index.d.ts.map +1 -0
- package/dist/plugins/alfresco/index.js +405 -0
- package/dist/plugins/alfresco/index.js.map +1 -0
- package/dist/plugins/aws-s3/index.d.ts +23 -0
- package/dist/plugins/aws-s3/index.d.ts.map +1 -0
- package/dist/plugins/aws-s3/index.js +383 -0
- package/dist/plugins/aws-s3/index.js.map +1 -0
- package/dist/plugins/azure-blob/index.d.ts +23 -0
- package/dist/plugins/azure-blob/index.d.ts.map +1 -0
- package/dist/plugins/azure-blob/index.js +340 -0
- package/dist/plugins/azure-blob/index.js.map +1 -0
- package/dist/plugins/box/index.d.ts +26 -0
- package/dist/plugins/box/index.d.ts.map +1 -0
- package/dist/plugins/box/index.js +387 -0
- package/dist/plugins/box/index.js.map +1 -0
- package/dist/plugins/dropbox/index.d.ts +27 -0
- package/dist/plugins/dropbox/index.d.ts.map +1 -0
- package/dist/plugins/dropbox/index.js +375 -0
- package/dist/plugins/dropbox/index.js.map +1 -0
- package/dist/plugins/googledrive/index.d.ts +27 -0
- package/dist/plugins/googledrive/index.d.ts.map +1 -0
- package/dist/plugins/googledrive/index.js +383 -0
- package/dist/plugins/googledrive/index.js.map +1 -0
- package/dist/plugins/nuxeo/index.d.ts +24 -0
- package/dist/plugins/nuxeo/index.d.ts.map +1 -0
- package/dist/plugins/nuxeo/index.js +405 -0
- package/dist/plugins/nuxeo/index.js.map +1 -0
- package/dist/plugins/onedrive/index.d.ts +25 -0
- package/dist/plugins/onedrive/index.d.ts.map +1 -0
- package/dist/plugins/onedrive/index.js +362 -0
- package/dist/plugins/onedrive/index.js.map +1 -0
- package/dist/plugins/opentext/index.d.ts +26 -0
- package/dist/plugins/opentext/index.d.ts.map +1 -0
- package/dist/plugins/opentext/index.js +440 -0
- package/dist/plugins/opentext/index.js.map +1 -0
- package/dist/plugins/sharepoint/index.d.ts +27 -0
- package/dist/plugins/sharepoint/index.d.ts.map +1 -0
- package/dist/plugins/sharepoint/index.js +397 -0
- package/dist/plugins/sharepoint/index.js.map +1 -0
- package/package.json +7 -2
- package/plugins/aws-s3/index.ts +2 -2
- package/plugins/sharepoint/index.ts +1 -1
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
class OneDrivePlugin {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.name = 'onedrive';
|
|
12
|
+
this.version = '1.0.0';
|
|
13
|
+
this.description = 'Microsoft OneDrive/SharePoint document source';
|
|
14
|
+
this.supportedOperations = ['import', 'export', 'both'];
|
|
15
|
+
this.baseUrl = 'https://graph.microsoft.com/v1.0';
|
|
16
|
+
}
|
|
17
|
+
async testConnection(config) {
|
|
18
|
+
try {
|
|
19
|
+
const client = this.createApiClient(config);
|
|
20
|
+
// Try simpler endpoint first
|
|
21
|
+
const response = await client.get('/me');
|
|
22
|
+
return response.status === 200;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error(`OneDrive connection test failed: ${error.message}`);
|
|
26
|
+
if (error.response?.data) {
|
|
27
|
+
console.error('API Response:', error.response.data);
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async scan(config, options) {
|
|
33
|
+
this.config = config;
|
|
34
|
+
this.apiClient = this.createApiClient(this.config);
|
|
35
|
+
const sources = [];
|
|
36
|
+
const errors = [];
|
|
37
|
+
let totalSize = 0;
|
|
38
|
+
try {
|
|
39
|
+
const limit = this.config.limit || options?.limit;
|
|
40
|
+
console.log(`đ Scanning OneDrive documents${limit ? ` (limit: ${limit})` : ''}...`);
|
|
41
|
+
const rootPath = this.config.rootPath || '/';
|
|
42
|
+
const items = await this.scanFolder(rootPath, options);
|
|
43
|
+
let processedCount = 0;
|
|
44
|
+
for (const item of items) {
|
|
45
|
+
if (item.file) { // Only process files, not folders
|
|
46
|
+
const source = {
|
|
47
|
+
id: item.id,
|
|
48
|
+
name: item.name,
|
|
49
|
+
path: this.getRelativePath(item),
|
|
50
|
+
size: item.size || 0,
|
|
51
|
+
mimeType: item.file.mimeType,
|
|
52
|
+
lastModified: new Date(item.lastModifiedDateTime),
|
|
53
|
+
metadata: {
|
|
54
|
+
oneDriveId: item.id,
|
|
55
|
+
downloadUrl: item['@microsoft.graph.downloadUrl'],
|
|
56
|
+
parentPath: item.parentReference?.path
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
// Apply filters
|
|
60
|
+
if (this.shouldIncludeSource(source, options)) {
|
|
61
|
+
sources.push(source);
|
|
62
|
+
totalSize += source.size;
|
|
63
|
+
processedCount++;
|
|
64
|
+
// Check limit
|
|
65
|
+
if (limit && processedCount >= limit) {
|
|
66
|
+
console.log(`đ Reached limit of ${limit} files`);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
sources,
|
|
74
|
+
totalCount: sources.length,
|
|
75
|
+
totalSize,
|
|
76
|
+
errors
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
return {
|
|
81
|
+
sources: [],
|
|
82
|
+
totalCount: 0,
|
|
83
|
+
totalSize: 0,
|
|
84
|
+
errors: [`OneDrive scan failed: ${error.message}`]
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async scanFolder(folderPath, options) {
|
|
89
|
+
if (!this.apiClient)
|
|
90
|
+
throw new Error('API client not initialized');
|
|
91
|
+
const items = [];
|
|
92
|
+
let nextLink;
|
|
93
|
+
do {
|
|
94
|
+
try {
|
|
95
|
+
// Handle root path correctly
|
|
96
|
+
let url;
|
|
97
|
+
if (nextLink) {
|
|
98
|
+
url = nextLink;
|
|
99
|
+
}
|
|
100
|
+
else if (!folderPath || folderPath === '/') {
|
|
101
|
+
url = '/me/drive/root/children';
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
url = `/me/drive/root:${folderPath}:/children`;
|
|
105
|
+
}
|
|
106
|
+
const response = await this.apiClient.get(url);
|
|
107
|
+
const folderItems = response.data.value;
|
|
108
|
+
items.push(...folderItems);
|
|
109
|
+
// Recursively scan subfolders
|
|
110
|
+
for (const item of folderItems) {
|
|
111
|
+
if (item.folder && item.folder.childCount > 0) {
|
|
112
|
+
const subPath = `${folderPath}/${item.name}`;
|
|
113
|
+
const subItems = await this.scanFolder(subPath, options);
|
|
114
|
+
items.push(...subItems);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
nextLink = response.data['@odata.nextLink'];
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.warn(`Warning: Failed to scan folder ${folderPath}: ${error.message}`);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
} while (nextLink);
|
|
124
|
+
return items;
|
|
125
|
+
}
|
|
126
|
+
async import(config, sources, targetDir, options) {
|
|
127
|
+
this.config = config;
|
|
128
|
+
this.apiClient = this.createApiClient(this.config);
|
|
129
|
+
const results = [];
|
|
130
|
+
const batchSize = options?.batchSize || 5; // OneDrive has rate limits
|
|
131
|
+
// Process in batches to respect API limits
|
|
132
|
+
for (let i = 0; i < sources.length; i += batchSize) {
|
|
133
|
+
const batch = sources.slice(i, i + batchSize);
|
|
134
|
+
for (const source of batch) {
|
|
135
|
+
const result = await this.importSingle(source, targetDir);
|
|
136
|
+
results.push(result);
|
|
137
|
+
// Small delay to respect rate limits
|
|
138
|
+
await this.sleep(100);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return results;
|
|
142
|
+
}
|
|
143
|
+
async importSingle(source, targetDir) {
|
|
144
|
+
try {
|
|
145
|
+
if (!this.apiClient)
|
|
146
|
+
throw new Error('API client not initialized');
|
|
147
|
+
// Get download URL if not in metadata
|
|
148
|
+
let downloadUrl = source.metadata?.downloadUrl;
|
|
149
|
+
if (!downloadUrl) {
|
|
150
|
+
const response = await this.apiClient.get(`/me/drive/items/${source.id}`);
|
|
151
|
+
downloadUrl = response.data['@microsoft.graph.downloadUrl'];
|
|
152
|
+
}
|
|
153
|
+
if (!downloadUrl) {
|
|
154
|
+
throw new Error('No download URL available');
|
|
155
|
+
}
|
|
156
|
+
// Download file
|
|
157
|
+
const response = await axios_1.default.get(downloadUrl, {
|
|
158
|
+
responseType: 'stream'
|
|
159
|
+
});
|
|
160
|
+
const targetPath = path_1.default.join(targetDir, source.path);
|
|
161
|
+
const targetDirectory = path_1.default.dirname(targetPath);
|
|
162
|
+
await fs_extra_1.default.ensureDir(targetDirectory);
|
|
163
|
+
const writer = fs_extra_1.default.createWriteStream(targetPath);
|
|
164
|
+
response.data.pipe(writer);
|
|
165
|
+
return new Promise((resolve) => {
|
|
166
|
+
writer.on('finish', () => {
|
|
167
|
+
resolve({
|
|
168
|
+
success: true,
|
|
169
|
+
source,
|
|
170
|
+
localPath: targetPath,
|
|
171
|
+
bytesTransferred: source.size
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
writer.on('error', (error) => {
|
|
175
|
+
resolve({
|
|
176
|
+
success: false,
|
|
177
|
+
source,
|
|
178
|
+
error: error.message
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
return {
|
|
185
|
+
success: false,
|
|
186
|
+
source,
|
|
187
|
+
error: error.message
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
async export(config, localSources, options) {
|
|
192
|
+
this.config = config;
|
|
193
|
+
this.apiClient = this.createApiClient(this.config);
|
|
194
|
+
const results = [];
|
|
195
|
+
for (const source of localSources) {
|
|
196
|
+
try {
|
|
197
|
+
const targetPath = options?.preserveStructure
|
|
198
|
+
? `${options.targetPath}/${source.path}`
|
|
199
|
+
: `${options?.targetPath || ''}/${source.name}`;
|
|
200
|
+
// Create folder structure if needed
|
|
201
|
+
const folderPath = path_1.default.dirname(targetPath);
|
|
202
|
+
if (folderPath && folderPath !== '.') {
|
|
203
|
+
await this.createFolderStructure(folderPath);
|
|
204
|
+
}
|
|
205
|
+
// Upload file
|
|
206
|
+
const fileContent = await fs_extra_1.default.readFile(source.id);
|
|
207
|
+
const uploadUrl = `/me/drive/root:${targetPath}:/content`;
|
|
208
|
+
await this.apiClient.put(uploadUrl, fileContent, {
|
|
209
|
+
headers: {
|
|
210
|
+
'Content-Type': source.mimeType
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
results.push({
|
|
214
|
+
success: true,
|
|
215
|
+
targetPath,
|
|
216
|
+
source,
|
|
217
|
+
bytesTransferred: source.size
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
results.push({
|
|
222
|
+
success: false,
|
|
223
|
+
targetPath: options?.targetPath || '',
|
|
224
|
+
source,
|
|
225
|
+
error: error.message
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return results;
|
|
230
|
+
}
|
|
231
|
+
async createFolderStructure(folderPath) {
|
|
232
|
+
if (!this.apiClient)
|
|
233
|
+
throw new Error('API client not initialized');
|
|
234
|
+
const parts = folderPath.split('/').filter(part => part.length > 0);
|
|
235
|
+
let currentPath = '';
|
|
236
|
+
for (const part of parts) {
|
|
237
|
+
currentPath += `/${part}`;
|
|
238
|
+
try {
|
|
239
|
+
// Try to get the folder
|
|
240
|
+
await this.apiClient.get(`/me/drive/root:${currentPath}`);
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
if (error.response?.status === 404) {
|
|
244
|
+
// Folder doesn't exist, create it
|
|
245
|
+
const parentPath = path_1.default.dirname(currentPath) || '/';
|
|
246
|
+
await this.apiClient.post(`/me/drive/root:${parentPath}:/children`, {
|
|
247
|
+
name: part,
|
|
248
|
+
folder: {}
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
getConfigSchema() {
|
|
255
|
+
return {
|
|
256
|
+
type: 'object',
|
|
257
|
+
properties: {
|
|
258
|
+
clientId: {
|
|
259
|
+
type: 'string',
|
|
260
|
+
description: 'Azure App Client ID (can be dummy when using accessToken)',
|
|
261
|
+
required: false
|
|
262
|
+
},
|
|
263
|
+
clientSecret: {
|
|
264
|
+
type: 'string',
|
|
265
|
+
description: 'Azure App Client Secret (can be dummy when using accessToken)',
|
|
266
|
+
required: false
|
|
267
|
+
},
|
|
268
|
+
tenantId: {
|
|
269
|
+
type: 'string',
|
|
270
|
+
description: 'Azure Tenant ID (can be dummy when using accessToken)',
|
|
271
|
+
required: false
|
|
272
|
+
},
|
|
273
|
+
accessToken: {
|
|
274
|
+
type: 'string',
|
|
275
|
+
description: 'OAuth2 Access Token (required - get with az account get-access-token)',
|
|
276
|
+
required: true
|
|
277
|
+
},
|
|
278
|
+
refreshToken: {
|
|
279
|
+
type: 'string',
|
|
280
|
+
description: 'OAuth2 Refresh Token (will be obtained automatically)',
|
|
281
|
+
required: false
|
|
282
|
+
},
|
|
283
|
+
rootPath: {
|
|
284
|
+
type: 'string',
|
|
285
|
+
description: 'Root path to scan (e.g., /Documents)',
|
|
286
|
+
default: '/'
|
|
287
|
+
},
|
|
288
|
+
limit: {
|
|
289
|
+
type: 'number',
|
|
290
|
+
description: 'Maximum number of documents to scan (useful for testing)',
|
|
291
|
+
required: false
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
required: ['accessToken']
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
async initialize(config) {
|
|
298
|
+
this.config = config;
|
|
299
|
+
// If no access token, we need to authenticate
|
|
300
|
+
if (!this.config.accessToken) {
|
|
301
|
+
console.log('âšī¸ OneDrive authentication required. Please obtain an access token first.');
|
|
302
|
+
console.log('đĄ You can use Azure CLI: az account get-access-token --resource https://graph.microsoft.com/');
|
|
303
|
+
throw new Error('OneDrive authentication required. Please provide an access token.');
|
|
304
|
+
}
|
|
305
|
+
// Set default values for required fields if not provided
|
|
306
|
+
if (!this.config.clientId)
|
|
307
|
+
this.config.clientId = 'dummy';
|
|
308
|
+
if (!this.config.clientSecret)
|
|
309
|
+
this.config.clientSecret = 'dummy';
|
|
310
|
+
if (!this.config.tenantId)
|
|
311
|
+
this.config.tenantId = 'dummy';
|
|
312
|
+
this.apiClient = this.createApiClient(this.config);
|
|
313
|
+
}
|
|
314
|
+
async destroy() {
|
|
315
|
+
this.config = undefined;
|
|
316
|
+
this.apiClient = undefined;
|
|
317
|
+
}
|
|
318
|
+
createApiClient(config) {
|
|
319
|
+
return axios_1.default.create({
|
|
320
|
+
baseURL: this.baseUrl,
|
|
321
|
+
headers: {
|
|
322
|
+
'Authorization': `Bearer ${config.accessToken}`,
|
|
323
|
+
'Content-Type': 'application/json'
|
|
324
|
+
},
|
|
325
|
+
timeout: 30000
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
getRelativePath(item) {
|
|
329
|
+
if (!item.parentReference?.path) {
|
|
330
|
+
return item.name;
|
|
331
|
+
}
|
|
332
|
+
// Remove the root drive path
|
|
333
|
+
const parentPath = item.parentReference.path
|
|
334
|
+
.replace(/^\/drive\/root:?/, '')
|
|
335
|
+
.replace(/^\//, '');
|
|
336
|
+
return parentPath ? `${parentPath}/${item.name}` : item.name;
|
|
337
|
+
}
|
|
338
|
+
shouldIncludeSource(source, options) {
|
|
339
|
+
// Apply size filter
|
|
340
|
+
if (options?.filters?.maxSize && source.size > options.filters.maxSize) {
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
// Apply date range filter
|
|
344
|
+
if (options?.filters?.dateRange) {
|
|
345
|
+
const { from, to } = options.filters.dateRange;
|
|
346
|
+
if (from && source.lastModified < from)
|
|
347
|
+
return false;
|
|
348
|
+
if (to && source.lastModified > to)
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
351
|
+
// Apply MIME type filter
|
|
352
|
+
if (options?.filters?.mimeTypes && !options.filters.mimeTypes.includes(source.mimeType)) {
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
return true;
|
|
356
|
+
}
|
|
357
|
+
sleep(ms) {
|
|
358
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
exports.default = OneDrivePlugin;
|
|
362
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../plugins/onedrive/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DocumentSourcePlugin, DocumentSource, PluginConfig, ScanResult, PluginImportOptions, PluginExportOptions, ImportResult, ExportResult } from '../../src/types/plugins';
|
|
2
|
+
export default class OpenTextPlugin implements DocumentSourcePlugin {
|
|
3
|
+
readonly name = "opentext";
|
|
4
|
+
readonly version = "1.0.0";
|
|
5
|
+
readonly description = "OpenText Content Server document source";
|
|
6
|
+
readonly supportedOperations: readonly ["import", "export", "both"];
|
|
7
|
+
private config?;
|
|
8
|
+
private apiClient?;
|
|
9
|
+
private authToken?;
|
|
10
|
+
testConnection(config: PluginConfig): Promise<boolean>;
|
|
11
|
+
scan(config: PluginConfig, options?: PluginImportOptions): Promise<ScanResult>;
|
|
12
|
+
private scanNode;
|
|
13
|
+
import(config: PluginConfig, sources: DocumentSource[], targetDir: string, options?: PluginImportOptions): Promise<ImportResult[]>;
|
|
14
|
+
private importSingle;
|
|
15
|
+
export?(config: PluginConfig, localSources: DocumentSource[], options?: PluginExportOptions): Promise<ExportResult[]>;
|
|
16
|
+
private createFolderStructure;
|
|
17
|
+
private getNodePath;
|
|
18
|
+
getConfigSchema(): Record<string, any>;
|
|
19
|
+
initialize(config: PluginConfig): Promise<void>;
|
|
20
|
+
destroy(): Promise<void>;
|
|
21
|
+
private createApiClient;
|
|
22
|
+
private getMimeType;
|
|
23
|
+
private shouldIncludeSource;
|
|
24
|
+
private sleep;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../plugins/opentext/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACb,MAAM,yBAAyB,CAAC;AAiCjC,MAAM,CAAC,OAAO,OAAO,cAAe,YAAW,oBAAoB;IACjE,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,WAAW,6CAA6C;IACjE,QAAQ,CAAC,mBAAmB,wCAAyC;IAErE,OAAO,CAAC,MAAM,CAAC,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAC,CAAS;IAErB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtD,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;YAwEtE,QAAQ;IAsDhB,MAAM,CACV,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;YAuBZ,YAAY;IA4CpB,MAAM,CAAC,CACX,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,cAAc,EAAE,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,YAAY,EAAE,CAAC;YA0DZ,qBAAqB;YAsCrB,WAAW;IA0BzB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA2ChC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAehB,eAAe;IA2B7B,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,KAAK;CAGd"}
|