@wilnertech/halopsa-mcp-server 1.0.0
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/.env.example +19 -0
- package/LICENSE +21 -0
- package/README.md +270 -0
- package/dist/api/client.d.ts +85 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +297 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/errors.d.ts +60 -0
- package/dist/api/errors.d.ts.map +1 -0
- package/dist/api/errors.js +188 -0
- package/dist/api/errors.js.map +1 -0
- package/dist/cache/memory-cache.d.ts +89 -0
- package/dist/cache/memory-cache.d.ts.map +1 -0
- package/dist/cache/memory-cache.js +175 -0
- package/dist/cache/memory-cache.js.map +1 -0
- package/dist/cache/prewarm.d.ts +12 -0
- package/dist/cache/prewarm.d.ts.map +1 -0
- package/dist/cache/prewarm.js +55 -0
- package/dist/cache/prewarm.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +141 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/common.d.ts +212 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +127 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/tools/assets.d.ts +482 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js +732 -0
- package/dist/tools/assets.js.map +1 -0
- package/dist/tools/batch-operations.d.ts +125 -0
- package/dist/tools/batch-operations.d.ts.map +1 -0
- package/dist/tools/batch-operations.js +207 -0
- package/dist/tools/batch-operations.js.map +1 -0
- package/dist/tools/clients.d.ts +145 -0
- package/dist/tools/clients.d.ts.map +1 -0
- package/dist/tools/clients.js +148 -0
- package/dist/tools/clients.js.map +1 -0
- package/dist/tools/reference-data.d.ts +118 -0
- package/dist/tools/reference-data.d.ts.map +1 -0
- package/dist/tools/reference-data.js +103 -0
- package/dist/tools/reference-data.js.map +1 -0
- package/dist/tools/registrations.d.ts +7 -0
- package/dist/tools/registrations.d.ts.map +1 -0
- package/dist/tools/registrations.js +61 -0
- package/dist/tools/registrations.js.map +1 -0
- package/dist/tools/registry.d.ts +67 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +71 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/sites.d.ts +188 -0
- package/dist/tools/sites.d.ts.map +1 -0
- package/dist/tools/sites.js +258 -0
- package/dist/tools/sites.js.map +1 -0
- package/dist/tools/users.d.ts +317 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +489 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/types/halopsa.d.ts +212 -0
- package/dist/types/halopsa.d.ts.map +1 -0
- package/dist/types/halopsa.js +8 -0
- package/dist/types/halopsa.js.map +1 -0
- package/dist/utils/formatter.d.ts +18 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +178 -0
- package/dist/utils/formatter.js.map +1 -0
- package/dist/utils/similarity.d.ts +25 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +90 -0
- package/dist/utils/similarity.js.map +1 -0
- package/dist/utils/zod-to-schema.d.ts +29 -0
- package/dist/utils/zod-to-schema.d.ts.map +1 -0
- package/dist/utils/zod-to-schema.js +182 -0
- package/dist/utils/zod-to-schema.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HaloPSA User tools with token optimization
|
|
3
|
+
* Provides CRUD operations for users with caching and deduplication
|
|
4
|
+
*
|
|
5
|
+
* CRITICAL: Users are a secondary billing entity
|
|
6
|
+
* - Only ACTIVE users (inactive=false) count toward billing
|
|
7
|
+
* - Duplicates cause billing errors = revenue loss
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import type { HaloPSAAPIClient } from '../api/client.js';
|
|
11
|
+
import type { ZodToolDefinition } from './registry.js';
|
|
12
|
+
/**
|
|
13
|
+
* List users schema
|
|
14
|
+
*/
|
|
15
|
+
export declare const ListUsersArgsSchema: z.ZodObject<{
|
|
16
|
+
client_id: z.ZodOptional<z.ZodNumber>;
|
|
17
|
+
site_id: z.ZodOptional<z.ZodNumber>;
|
|
18
|
+
search: z.ZodOptional<z.ZodString>;
|
|
19
|
+
count: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
page_no: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
includeactive: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
+
includeinactive: z.ZodOptional<z.ZodBoolean>;
|
|
23
|
+
format_options: z.ZodOptional<z.ZodObject<{
|
|
24
|
+
format: z.ZodOptional<z.ZodEnum<["compact", "standard", "detailed"]>>;
|
|
25
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
26
|
+
omit_empty: z.ZodOptional<z.ZodBoolean>;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
29
|
+
fields?: string[] | undefined;
|
|
30
|
+
omit_empty?: boolean | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
33
|
+
fields?: string[] | undefined;
|
|
34
|
+
omit_empty?: boolean | undefined;
|
|
35
|
+
}>>;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
client_id?: number | undefined;
|
|
38
|
+
count?: number | undefined;
|
|
39
|
+
page_no?: number | undefined;
|
|
40
|
+
site_id?: number | undefined;
|
|
41
|
+
search?: string | undefined;
|
|
42
|
+
includeactive?: boolean | undefined;
|
|
43
|
+
includeinactive?: boolean | undefined;
|
|
44
|
+
format_options?: {
|
|
45
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
46
|
+
fields?: string[] | undefined;
|
|
47
|
+
omit_empty?: boolean | undefined;
|
|
48
|
+
} | undefined;
|
|
49
|
+
}, {
|
|
50
|
+
client_id?: number | undefined;
|
|
51
|
+
count?: number | undefined;
|
|
52
|
+
page_no?: number | undefined;
|
|
53
|
+
site_id?: number | undefined;
|
|
54
|
+
search?: string | undefined;
|
|
55
|
+
includeactive?: boolean | undefined;
|
|
56
|
+
includeinactive?: boolean | undefined;
|
|
57
|
+
format_options?: {
|
|
58
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
59
|
+
fields?: string[] | undefined;
|
|
60
|
+
omit_empty?: boolean | undefined;
|
|
61
|
+
} | undefined;
|
|
62
|
+
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Get single user schema
|
|
65
|
+
*/
|
|
66
|
+
export declare const GetUserArgsSchema: z.ZodObject<{
|
|
67
|
+
user_id: z.ZodNumber;
|
|
68
|
+
format_options: z.ZodOptional<z.ZodObject<{
|
|
69
|
+
format: z.ZodOptional<z.ZodEnum<["compact", "standard", "detailed"]>>;
|
|
70
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
71
|
+
omit_empty: z.ZodOptional<z.ZodBoolean>;
|
|
72
|
+
}, "strip", z.ZodTypeAny, {
|
|
73
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
74
|
+
fields?: string[] | undefined;
|
|
75
|
+
omit_empty?: boolean | undefined;
|
|
76
|
+
}, {
|
|
77
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
78
|
+
fields?: string[] | undefined;
|
|
79
|
+
omit_empty?: boolean | undefined;
|
|
80
|
+
}>>;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
user_id: number;
|
|
83
|
+
format_options?: {
|
|
84
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
85
|
+
fields?: string[] | undefined;
|
|
86
|
+
omit_empty?: boolean | undefined;
|
|
87
|
+
} | undefined;
|
|
88
|
+
}, {
|
|
89
|
+
user_id: number;
|
|
90
|
+
format_options?: {
|
|
91
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
92
|
+
fields?: string[] | undefined;
|
|
93
|
+
omit_empty?: boolean | undefined;
|
|
94
|
+
} | undefined;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* Search users by email schema
|
|
98
|
+
*/
|
|
99
|
+
export declare const SearchUsersByEmailArgsSchema: z.ZodObject<{
|
|
100
|
+
email: z.ZodString;
|
|
101
|
+
client_id: z.ZodOptional<z.ZodNumber>;
|
|
102
|
+
format_options: z.ZodOptional<z.ZodObject<{
|
|
103
|
+
format: z.ZodOptional<z.ZodEnum<["compact", "standard", "detailed"]>>;
|
|
104
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
105
|
+
omit_empty: z.ZodOptional<z.ZodBoolean>;
|
|
106
|
+
}, "strip", z.ZodTypeAny, {
|
|
107
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
108
|
+
fields?: string[] | undefined;
|
|
109
|
+
omit_empty?: boolean | undefined;
|
|
110
|
+
}, {
|
|
111
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
112
|
+
fields?: string[] | undefined;
|
|
113
|
+
omit_empty?: boolean | undefined;
|
|
114
|
+
}>>;
|
|
115
|
+
}, "strip", z.ZodTypeAny, {
|
|
116
|
+
email: string;
|
|
117
|
+
client_id?: number | undefined;
|
|
118
|
+
format_options?: {
|
|
119
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
120
|
+
fields?: string[] | undefined;
|
|
121
|
+
omit_empty?: boolean | undefined;
|
|
122
|
+
} | undefined;
|
|
123
|
+
}, {
|
|
124
|
+
email: string;
|
|
125
|
+
client_id?: number | undefined;
|
|
126
|
+
format_options?: {
|
|
127
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
128
|
+
fields?: string[] | undefined;
|
|
129
|
+
omit_empty?: boolean | undefined;
|
|
130
|
+
} | undefined;
|
|
131
|
+
}>;
|
|
132
|
+
/**
|
|
133
|
+
* Create user schema
|
|
134
|
+
*/
|
|
135
|
+
export declare const CreateUserArgsSchema: z.ZodObject<{
|
|
136
|
+
client_id: z.ZodNumber;
|
|
137
|
+
site_id: z.ZodOptional<z.ZodNumber>;
|
|
138
|
+
name: z.ZodString;
|
|
139
|
+
emailaddress: z.ZodOptional<z.ZodString>;
|
|
140
|
+
username: z.ZodOptional<z.ZodString>;
|
|
141
|
+
inactive: z.ZodOptional<z.ZodBoolean>;
|
|
142
|
+
user_customfields: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
143
|
+
id: z.ZodNumber;
|
|
144
|
+
value: z.ZodString;
|
|
145
|
+
}, "strip", z.ZodTypeAny, {
|
|
146
|
+
value: string;
|
|
147
|
+
id: number;
|
|
148
|
+
}, {
|
|
149
|
+
value: string;
|
|
150
|
+
id: number;
|
|
151
|
+
}>, "many">>;
|
|
152
|
+
}, "strip", z.ZodTypeAny, {
|
|
153
|
+
client_id: number;
|
|
154
|
+
name: string;
|
|
155
|
+
inactive?: boolean | undefined;
|
|
156
|
+
emailaddress?: string | undefined;
|
|
157
|
+
site_id?: number | undefined;
|
|
158
|
+
username?: string | undefined;
|
|
159
|
+
user_customfields?: {
|
|
160
|
+
value: string;
|
|
161
|
+
id: number;
|
|
162
|
+
}[] | undefined;
|
|
163
|
+
}, {
|
|
164
|
+
client_id: number;
|
|
165
|
+
name: string;
|
|
166
|
+
inactive?: boolean | undefined;
|
|
167
|
+
emailaddress?: string | undefined;
|
|
168
|
+
site_id?: number | undefined;
|
|
169
|
+
username?: string | undefined;
|
|
170
|
+
user_customfields?: {
|
|
171
|
+
value: string;
|
|
172
|
+
id: number;
|
|
173
|
+
}[] | undefined;
|
|
174
|
+
}>;
|
|
175
|
+
/**
|
|
176
|
+
* Update user schema
|
|
177
|
+
*/
|
|
178
|
+
export declare const UpdateUserArgsSchema: z.ZodObject<{
|
|
179
|
+
user_id: z.ZodNumber;
|
|
180
|
+
site_id: z.ZodOptional<z.ZodNumber>;
|
|
181
|
+
name: z.ZodOptional<z.ZodString>;
|
|
182
|
+
emailaddress: z.ZodOptional<z.ZodString>;
|
|
183
|
+
username: z.ZodOptional<z.ZodString>;
|
|
184
|
+
inactive: z.ZodOptional<z.ZodBoolean>;
|
|
185
|
+
user_customfields: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
186
|
+
id: z.ZodNumber;
|
|
187
|
+
value: z.ZodString;
|
|
188
|
+
}, "strip", z.ZodTypeAny, {
|
|
189
|
+
value: string;
|
|
190
|
+
id: number;
|
|
191
|
+
}, {
|
|
192
|
+
value: string;
|
|
193
|
+
id: number;
|
|
194
|
+
}>, "many">>;
|
|
195
|
+
}, "strip", z.ZodTypeAny, {
|
|
196
|
+
user_id: number;
|
|
197
|
+
name?: string | undefined;
|
|
198
|
+
inactive?: boolean | undefined;
|
|
199
|
+
emailaddress?: string | undefined;
|
|
200
|
+
site_id?: number | undefined;
|
|
201
|
+
username?: string | undefined;
|
|
202
|
+
user_customfields?: {
|
|
203
|
+
value: string;
|
|
204
|
+
id: number;
|
|
205
|
+
}[] | undefined;
|
|
206
|
+
}, {
|
|
207
|
+
user_id: number;
|
|
208
|
+
name?: string | undefined;
|
|
209
|
+
inactive?: boolean | undefined;
|
|
210
|
+
emailaddress?: string | undefined;
|
|
211
|
+
site_id?: number | undefined;
|
|
212
|
+
username?: string | undefined;
|
|
213
|
+
user_customfields?: {
|
|
214
|
+
value: string;
|
|
215
|
+
id: number;
|
|
216
|
+
}[] | undefined;
|
|
217
|
+
}>;
|
|
218
|
+
/**
|
|
219
|
+
* Find user match schema (deduplication)
|
|
220
|
+
*/
|
|
221
|
+
export declare const FindUserMatchArgsSchema: z.ZodObject<{
|
|
222
|
+
email: z.ZodOptional<z.ZodString>;
|
|
223
|
+
upn: z.ZodOptional<z.ZodString>;
|
|
224
|
+
username: z.ZodOptional<z.ZodString>;
|
|
225
|
+
client_id: z.ZodNumber;
|
|
226
|
+
}, "strip", z.ZodTypeAny, {
|
|
227
|
+
client_id: number;
|
|
228
|
+
email?: string | undefined;
|
|
229
|
+
username?: string | undefined;
|
|
230
|
+
upn?: string | undefined;
|
|
231
|
+
}, {
|
|
232
|
+
client_id: number;
|
|
233
|
+
email?: string | undefined;
|
|
234
|
+
username?: string | undefined;
|
|
235
|
+
upn?: string | undefined;
|
|
236
|
+
}>;
|
|
237
|
+
/**
|
|
238
|
+
* Scan user duplicates schema
|
|
239
|
+
*/
|
|
240
|
+
export declare const ScanUserDuplicatesArgsSchema: z.ZodObject<{
|
|
241
|
+
client_id: z.ZodOptional<z.ZodNumber>;
|
|
242
|
+
format_options: z.ZodOptional<z.ZodObject<{
|
|
243
|
+
format: z.ZodOptional<z.ZodEnum<["compact", "standard", "detailed"]>>;
|
|
244
|
+
fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
245
|
+
omit_empty: z.ZodOptional<z.ZodBoolean>;
|
|
246
|
+
}, "strip", z.ZodTypeAny, {
|
|
247
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
248
|
+
fields?: string[] | undefined;
|
|
249
|
+
omit_empty?: boolean | undefined;
|
|
250
|
+
}, {
|
|
251
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
252
|
+
fields?: string[] | undefined;
|
|
253
|
+
omit_empty?: boolean | undefined;
|
|
254
|
+
}>>;
|
|
255
|
+
}, "strip", z.ZodTypeAny, {
|
|
256
|
+
client_id?: number | undefined;
|
|
257
|
+
format_options?: {
|
|
258
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
259
|
+
fields?: string[] | undefined;
|
|
260
|
+
omit_empty?: boolean | undefined;
|
|
261
|
+
} | undefined;
|
|
262
|
+
}, {
|
|
263
|
+
client_id?: number | undefined;
|
|
264
|
+
format_options?: {
|
|
265
|
+
format?: "compact" | "standard" | "detailed" | undefined;
|
|
266
|
+
fields?: string[] | undefined;
|
|
267
|
+
omit_empty?: boolean | undefined;
|
|
268
|
+
} | undefined;
|
|
269
|
+
}>;
|
|
270
|
+
/**
|
|
271
|
+
* List users with optional filtering and token optimization
|
|
272
|
+
* Uses 1-minute cache TTL (billing-critical data)
|
|
273
|
+
*/
|
|
274
|
+
export declare function listUsers(client: HaloPSAAPIClient, args: z.infer<typeof ListUsersArgsSchema>): Promise<string>;
|
|
275
|
+
/**
|
|
276
|
+
* Get a single user by ID with full details
|
|
277
|
+
*/
|
|
278
|
+
export declare function getUser(client: HaloPSAAPIClient, args: z.infer<typeof GetUserArgsSchema>): Promise<string>;
|
|
279
|
+
/**
|
|
280
|
+
* Search users by email address
|
|
281
|
+
* Returns warning if multiple found (potential duplicates)
|
|
282
|
+
*/
|
|
283
|
+
export declare function searchUsersByEmail(client: HaloPSAAPIClient, args: z.infer<typeof SearchUsersByEmailArgsSchema>): Promise<string>;
|
|
284
|
+
/**
|
|
285
|
+
* Create a new user
|
|
286
|
+
* Invalidates user cache on success
|
|
287
|
+
*/
|
|
288
|
+
export declare function createUser(client: HaloPSAAPIClient, args: z.infer<typeof CreateUserArgsSchema>): Promise<string>;
|
|
289
|
+
/**
|
|
290
|
+
* Update an existing user
|
|
291
|
+
* Invalidates user cache on success
|
|
292
|
+
*/
|
|
293
|
+
export declare function updateUser(client: HaloPSAAPIClient, args: z.infer<typeof UpdateUserArgsSchema>): Promise<string>;
|
|
294
|
+
/**
|
|
295
|
+
* Find matching user using deduplication algorithm
|
|
296
|
+
* Returns confidence scoring and action recommendation
|
|
297
|
+
*
|
|
298
|
+
* Confidence Thresholds:
|
|
299
|
+
* - 100%: Exact email match -> Auto-update
|
|
300
|
+
* - 95%: UPN match (Entra source of truth) -> Auto-update
|
|
301
|
+
* - 70%: Username match only -> Manual review
|
|
302
|
+
* - 0%: No match -> Create new
|
|
303
|
+
*/
|
|
304
|
+
export declare function findUserMatch(client: HaloPSAAPIClient, args: z.infer<typeof FindUserMatchArgsSchema>): Promise<string>;
|
|
305
|
+
/**
|
|
306
|
+
* Scan for duplicate users
|
|
307
|
+
* Returns groups of duplicate entities with confidence scores
|
|
308
|
+
*/
|
|
309
|
+
export declare function scanUserDuplicates(client: HaloPSAAPIClient, args: z.infer<typeof ScanUserDuplicatesArgsSchema>): Promise<string>;
|
|
310
|
+
export declare const listUsersTool: ZodToolDefinition;
|
|
311
|
+
export declare const getUserTool: ZodToolDefinition;
|
|
312
|
+
export declare const searchUsersByEmailTool: ZodToolDefinition;
|
|
313
|
+
export declare const createUserTool: ZodToolDefinition;
|
|
314
|
+
export declare const updateUserTool: ZodToolDefinition;
|
|
315
|
+
export declare const findUserMatchTool: ZodToolDefinition;
|
|
316
|
+
export declare const scanUserDuplicatesTool: ZodToolDefinition;
|
|
317
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAavD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMvC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EASlC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIvC,CAAC;AAMH;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GACxC,OAAO,CAAC,MAAM,CAAC,CA8CjB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GACtC,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC,CA+CjB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,CAqFjB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC,CAiHjB;AAMD,eAAO,MAAM,aAAa,EAAE,iBAK3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,iBAKzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,iBAKpC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,iBAK5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,iBAK5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAK/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,iBAKpC,CAAC"}
|