@nahisaho/yata-global 1.6.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/api-client.d.ts +71 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +165 -0
- package/dist/api-client.js.map +1 -0
- package/dist/cache-manager.d.ts +122 -0
- package/dist/cache-manager.d.ts.map +1 -0
- package/dist/cache-manager.js +376 -0
- package/dist/cache-manager.js.map +1 -0
- package/dist/index.d.ts +138 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +548 -0
- package/dist/index.js.map +1 -0
- package/dist/kgpr/index.d.ts +12 -0
- package/dist/kgpr/index.d.ts.map +1 -0
- package/dist/kgpr/index.js +12 -0
- package/dist/kgpr/index.js.map +1 -0
- package/dist/kgpr/kgpr-manager.d.ts +162 -0
- package/dist/kgpr/kgpr-manager.d.ts.map +1 -0
- package/dist/kgpr/kgpr-manager.js +465 -0
- package/dist/kgpr/kgpr-manager.js.map +1 -0
- package/dist/kgpr/merge-engine.d.ts +269 -0
- package/dist/kgpr/merge-engine.d.ts.map +1 -0
- package/dist/kgpr/merge-engine.js +451 -0
- package/dist/kgpr/merge-engine.js.map +1 -0
- package/dist/kgpr/notification-service.d.ts +227 -0
- package/dist/kgpr/notification-service.d.ts.map +1 -0
- package/dist/kgpr/notification-service.js +440 -0
- package/dist/kgpr/notification-service.js.map +1 -0
- package/dist/kgpr/privacy-filter.d.ts +61 -0
- package/dist/kgpr/privacy-filter.d.ts.map +1 -0
- package/dist/kgpr/privacy-filter.js +191 -0
- package/dist/kgpr/privacy-filter.js.map +1 -0
- package/dist/kgpr/types.d.ts +303 -0
- package/dist/kgpr/types.d.ts.map +1 -0
- package/dist/kgpr/types.js +40 -0
- package/dist/kgpr/types.js.map +1 -0
- package/dist/sync-engine.d.ts +104 -0
- package/dist/sync-engine.d.ts.map +1 -0
- package/dist/sync-engine.js +275 -0
- package/dist/sync-engine.js.map +1 -0
- package/dist/types.d.ts +353 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Global - HTTP API Client
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module @nahisaho/yata-global
|
|
6
|
+
*
|
|
7
|
+
* @see REQ-YG-API-001
|
|
8
|
+
*/
|
|
9
|
+
import type { ApiResponse, AuthToken, RateLimitInfo, SyncConfig } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* HTTP client for YATA Global API
|
|
12
|
+
*/
|
|
13
|
+
export declare class ApiClient {
|
|
14
|
+
private config;
|
|
15
|
+
private authToken;
|
|
16
|
+
private rateLimitInfo;
|
|
17
|
+
constructor(config?: Partial<SyncConfig>);
|
|
18
|
+
/**
|
|
19
|
+
* Set authentication token
|
|
20
|
+
*/
|
|
21
|
+
setAuthToken(token: AuthToken | null): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get current auth token
|
|
24
|
+
*/
|
|
25
|
+
getAuthToken(): AuthToken | null;
|
|
26
|
+
/**
|
|
27
|
+
* Get rate limit info
|
|
28
|
+
*/
|
|
29
|
+
getRateLimitInfo(): RateLimitInfo | null;
|
|
30
|
+
/**
|
|
31
|
+
* Update configuration
|
|
32
|
+
*/
|
|
33
|
+
configure(config: Partial<SyncConfig>): void;
|
|
34
|
+
/**
|
|
35
|
+
* GET request
|
|
36
|
+
*/
|
|
37
|
+
get<T>(path: string, params?: Record<string, string | number | boolean>): Promise<ApiResponse<T>>;
|
|
38
|
+
/**
|
|
39
|
+
* POST request
|
|
40
|
+
*/
|
|
41
|
+
post<T>(path: string, body?: unknown): Promise<ApiResponse<T>>;
|
|
42
|
+
/**
|
|
43
|
+
* PUT request
|
|
44
|
+
*/
|
|
45
|
+
put<T>(path: string, body?: unknown): Promise<ApiResponse<T>>;
|
|
46
|
+
/**
|
|
47
|
+
* DELETE request
|
|
48
|
+
*/
|
|
49
|
+
delete<T>(path: string): Promise<ApiResponse<T>>;
|
|
50
|
+
/**
|
|
51
|
+
* Build full URL with query parameters
|
|
52
|
+
*/
|
|
53
|
+
private buildUrl;
|
|
54
|
+
/**
|
|
55
|
+
* Execute HTTP request
|
|
56
|
+
*/
|
|
57
|
+
private request;
|
|
58
|
+
/**
|
|
59
|
+
* Parse rate limit headers from response
|
|
60
|
+
*/
|
|
61
|
+
private parseRateLimitHeaders;
|
|
62
|
+
/**
|
|
63
|
+
* Check if currently rate limited
|
|
64
|
+
*/
|
|
65
|
+
isRateLimited(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Get time until rate limit reset
|
|
68
|
+
*/
|
|
69
|
+
getTimeUntilReset(): number;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,aAAa,CAA8B;gBAEvC,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAI5C;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAI3C;;OAEG;IACH,YAAY,IAAI,SAAS,GAAG,IAAI;IAIhC;;OAEG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIxC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAI5C;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAKvG;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAKpE;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAKnE;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAKtD;;OAEG;IACH,OAAO,CAAC,QAAQ;IAehB;;OAEG;YACW,OAAO;IAkDrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,aAAa,IAAI,OAAO;IAKxB;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAI5B"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Global - HTTP API Client
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module @nahisaho/yata-global
|
|
6
|
+
*
|
|
7
|
+
* @see REQ-YG-API-001
|
|
8
|
+
*/
|
|
9
|
+
import { DEFAULT_SYNC_CONFIG } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* HTTP client for YATA Global API
|
|
12
|
+
*/
|
|
13
|
+
export class ApiClient {
|
|
14
|
+
config;
|
|
15
|
+
authToken = null;
|
|
16
|
+
rateLimitInfo = null;
|
|
17
|
+
constructor(config = {}) {
|
|
18
|
+
this.config = { ...DEFAULT_SYNC_CONFIG, ...config };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Set authentication token
|
|
22
|
+
*/
|
|
23
|
+
setAuthToken(token) {
|
|
24
|
+
this.authToken = token;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get current auth token
|
|
28
|
+
*/
|
|
29
|
+
getAuthToken() {
|
|
30
|
+
return this.authToken;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get rate limit info
|
|
34
|
+
*/
|
|
35
|
+
getRateLimitInfo() {
|
|
36
|
+
return this.rateLimitInfo;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Update configuration
|
|
40
|
+
*/
|
|
41
|
+
configure(config) {
|
|
42
|
+
this.config = { ...this.config, ...config };
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* GET request
|
|
46
|
+
*/
|
|
47
|
+
async get(path, params) {
|
|
48
|
+
const url = this.buildUrl(path, params);
|
|
49
|
+
return this.request('GET', url);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* POST request
|
|
53
|
+
*/
|
|
54
|
+
async post(path, body) {
|
|
55
|
+
const url = this.buildUrl(path);
|
|
56
|
+
return this.request('POST', url, body);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* PUT request
|
|
60
|
+
*/
|
|
61
|
+
async put(path, body) {
|
|
62
|
+
const url = this.buildUrl(path);
|
|
63
|
+
return this.request('PUT', url, body);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* DELETE request
|
|
67
|
+
*/
|
|
68
|
+
async delete(path) {
|
|
69
|
+
const url = this.buildUrl(path);
|
|
70
|
+
return this.request('DELETE', url);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Build full URL with query parameters
|
|
74
|
+
*/
|
|
75
|
+
buildUrl(path, params) {
|
|
76
|
+
const base = this.config.endpoint.replace(/\/$/, '');
|
|
77
|
+
const url = new URL(`${base}${path}`);
|
|
78
|
+
if (params) {
|
|
79
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
80
|
+
if (value !== undefined && value !== null) {
|
|
81
|
+
url.searchParams.set(key, String(value));
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return url.toString();
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Execute HTTP request
|
|
89
|
+
*/
|
|
90
|
+
async request(method, url, body) {
|
|
91
|
+
const headers = {
|
|
92
|
+
'Content-Type': 'application/json',
|
|
93
|
+
'Accept': 'application/json',
|
|
94
|
+
};
|
|
95
|
+
// Add auth header if token exists
|
|
96
|
+
if (this.authToken) {
|
|
97
|
+
headers['Authorization'] = `${this.authToken.tokenType} ${this.authToken.accessToken}`;
|
|
98
|
+
}
|
|
99
|
+
// Add API key if configured
|
|
100
|
+
if (this.config.apiKey) {
|
|
101
|
+
headers['X-API-Key'] = this.config.apiKey;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const response = await fetch(url, {
|
|
105
|
+
method,
|
|
106
|
+
headers,
|
|
107
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
108
|
+
});
|
|
109
|
+
// Parse rate limit headers
|
|
110
|
+
this.parseRateLimitHeaders(response.headers);
|
|
111
|
+
// Parse response
|
|
112
|
+
const data = await response.json();
|
|
113
|
+
if (!response.ok) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
error: data.message || `HTTP ${response.status}`,
|
|
117
|
+
rateLimit: this.rateLimitInfo ?? undefined,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
success: true,
|
|
122
|
+
data,
|
|
123
|
+
rateLimit: this.rateLimitInfo ?? undefined,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
return {
|
|
128
|
+
success: false,
|
|
129
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Parse rate limit headers from response
|
|
135
|
+
*/
|
|
136
|
+
parseRateLimitHeaders(headers) {
|
|
137
|
+
const remaining = headers.get('X-RateLimit-Remaining');
|
|
138
|
+
const limit = headers.get('X-RateLimit-Limit');
|
|
139
|
+
const reset = headers.get('X-RateLimit-Reset');
|
|
140
|
+
if (remaining && limit && reset) {
|
|
141
|
+
this.rateLimitInfo = {
|
|
142
|
+
remaining: parseInt(remaining, 10),
|
|
143
|
+
limit: parseInt(limit, 10),
|
|
144
|
+
resetAt: new Date(parseInt(reset, 10) * 1000),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check if currently rate limited
|
|
150
|
+
*/
|
|
151
|
+
isRateLimited() {
|
|
152
|
+
if (!this.rateLimitInfo)
|
|
153
|
+
return false;
|
|
154
|
+
return this.rateLimitInfo.remaining <= 0 && this.rateLimitInfo.resetAt > new Date();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get time until rate limit reset
|
|
158
|
+
*/
|
|
159
|
+
getTimeUntilReset() {
|
|
160
|
+
if (!this.rateLimitInfo)
|
|
161
|
+
return 0;
|
|
162
|
+
return Math.max(0, this.rateLimitInfo.resetAt.getTime() - Date.now());
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YATA Global - Cache Manager
|
|
3
|
+
*
|
|
4
|
+
* Local caching for offline support and performance
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module @nahisaho/yata-global
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-YG-SYNC-003
|
|
10
|
+
*/
|
|
11
|
+
import type { FrameworkKnowledge, SharedPattern, SyncConfig } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Cache manager for offline support
|
|
14
|
+
*/
|
|
15
|
+
export declare class CacheManager {
|
|
16
|
+
private db;
|
|
17
|
+
private config;
|
|
18
|
+
private defaultTtl;
|
|
19
|
+
constructor(dbPath: string, config: SyncConfig);
|
|
20
|
+
/**
|
|
21
|
+
* Close database connection
|
|
22
|
+
*/
|
|
23
|
+
close(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Cache a framework
|
|
26
|
+
*/
|
|
27
|
+
cacheFramework(framework: FrameworkKnowledge, ttl?: number): void;
|
|
28
|
+
/**
|
|
29
|
+
* Cache multiple frameworks
|
|
30
|
+
*/
|
|
31
|
+
cacheFrameworks(frameworks: FrameworkKnowledge[], ttl?: number): void;
|
|
32
|
+
/**
|
|
33
|
+
* Get cached framework
|
|
34
|
+
*/
|
|
35
|
+
getFramework(id: string): FrameworkKnowledge | null;
|
|
36
|
+
/**
|
|
37
|
+
* Get all cached frameworks
|
|
38
|
+
*/
|
|
39
|
+
getAllFrameworks(): FrameworkKnowledge[];
|
|
40
|
+
/**
|
|
41
|
+
* Parse framework JSON with date conversion
|
|
42
|
+
*/
|
|
43
|
+
private parseFramework;
|
|
44
|
+
/**
|
|
45
|
+
* Cache a pattern
|
|
46
|
+
*/
|
|
47
|
+
cachePattern(pattern: SharedPattern, ttl?: number): void;
|
|
48
|
+
/**
|
|
49
|
+
* Cache multiple patterns
|
|
50
|
+
*/
|
|
51
|
+
cachePatterns(patterns: SharedPattern[], ttl?: number): void;
|
|
52
|
+
/**
|
|
53
|
+
* Get cached pattern
|
|
54
|
+
*/
|
|
55
|
+
getPattern(id: string): SharedPattern | null;
|
|
56
|
+
/**
|
|
57
|
+
* Get all cached patterns
|
|
58
|
+
*/
|
|
59
|
+
getAllPatterns(): SharedPattern[];
|
|
60
|
+
/**
|
|
61
|
+
* Parse pattern JSON with date conversion
|
|
62
|
+
*/
|
|
63
|
+
private parsePattern;
|
|
64
|
+
/**
|
|
65
|
+
* Set generic cache value
|
|
66
|
+
*/
|
|
67
|
+
set<T>(key: string, value: T, ttl?: number): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get generic cache value
|
|
70
|
+
*/
|
|
71
|
+
get<T>(key: string): T | null;
|
|
72
|
+
/**
|
|
73
|
+
* Delete cache entry
|
|
74
|
+
*/
|
|
75
|
+
delete(key: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Check if key exists and is valid
|
|
78
|
+
*/
|
|
79
|
+
has(key: string): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Set sync metadata
|
|
82
|
+
*/
|
|
83
|
+
setSyncMeta(key: string, value: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* Get sync metadata
|
|
86
|
+
*/
|
|
87
|
+
getSyncMeta(key: string): string | null;
|
|
88
|
+
/**
|
|
89
|
+
* Get last sync timestamp
|
|
90
|
+
*/
|
|
91
|
+
getLastSyncTime(): Date | null;
|
|
92
|
+
/**
|
|
93
|
+
* Set last sync timestamp
|
|
94
|
+
*/
|
|
95
|
+
setLastSyncTime(time: Date): void;
|
|
96
|
+
/**
|
|
97
|
+
* Clear expired entries
|
|
98
|
+
*/
|
|
99
|
+
clearExpired(): number;
|
|
100
|
+
/**
|
|
101
|
+
* Clear all cache
|
|
102
|
+
*/
|
|
103
|
+
clearAll(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Get cache size in bytes
|
|
106
|
+
*/
|
|
107
|
+
getCacheSize(): number;
|
|
108
|
+
/**
|
|
109
|
+
* Get cache statistics
|
|
110
|
+
*/
|
|
111
|
+
getStats(): {
|
|
112
|
+
frameworkCount: number;
|
|
113
|
+
patternCount: number;
|
|
114
|
+
cacheEntries: number;
|
|
115
|
+
sizeBytes: number;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Enforce maximum cache size
|
|
119
|
+
*/
|
|
120
|
+
enforceMaxSize(): void;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=cache-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAC;AA2CpB;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,UAAU,CAAuB;gBAE7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAW9C;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IASjE;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,kBAAkB,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrE;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IASnD;;OAEG;IACH,gBAAgB,IAAI,kBAAkB,EAAE;IASxC;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IASxD;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB5D;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAS5C;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IASjC;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IASjD;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAc7B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAM5B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAYzB;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ7C;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMvC;;OAEG;IACH,eAAe,IAAI,IAAI,GAAG,IAAI;IAK9B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAQjC;;OAEG;IACH,YAAY,IAAI,MAAM;IActB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAQhB;;OAEG;IACH,YAAY,IAAI,MAAM;IAQtB;;OAEG;IACH,QAAQ,IAAI;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB;IAaD;;OAEG;IACH,cAAc,IAAI,IAAI;CA8BvB"}
|