@i17hush/h5-utils 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.
@@ -0,0 +1,663 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * 浏览器环境适配器
5
+ */
6
+ const browserAdapter = {
7
+ storage: {
8
+ get(key) {
9
+ return localStorage.getItem(key);
10
+ },
11
+ set(key, value) {
12
+ localStorage.setItem(key, value);
13
+ },
14
+ remove(key) {
15
+ localStorage.removeItem(key);
16
+ },
17
+ clear() {
18
+ localStorage.clear();
19
+ },
20
+ },
21
+ clipboard: {
22
+ async write(text) {
23
+ if (navigator.clipboard) {
24
+ await navigator.clipboard.writeText(text);
25
+ }
26
+ else {
27
+ const textarea = document.createElement('textarea');
28
+ textarea.value = text;
29
+ textarea.style.cssText = 'position:fixed;left:-9999px';
30
+ document.body.appendChild(textarea);
31
+ textarea.select();
32
+ document.execCommand('copy');
33
+ document.body.removeChild(textarea);
34
+ }
35
+ },
36
+ async read() {
37
+ if (navigator.clipboard) {
38
+ return await navigator.clipboard.readText();
39
+ }
40
+ throw new Error('Clipboard API not supported');
41
+ },
42
+ },
43
+ event: {
44
+ on(event, handler) {
45
+ window.addEventListener(event, handler);
46
+ },
47
+ off(event, handler) {
48
+ window.removeEventListener(event, handler);
49
+ },
50
+ emit(event, ...args) {
51
+ window.dispatchEvent(new CustomEvent(event, { detail: args }));
52
+ },
53
+ },
54
+ dom: {
55
+ select(selector) {
56
+ return document.querySelector(selector);
57
+ },
58
+ selectAll(selector) {
59
+ return Array.from(document.querySelectorAll(selector));
60
+ },
61
+ },
62
+ scroll: {
63
+ scrollTo(options) {
64
+ var _a, _b;
65
+ window.scrollTo({
66
+ top: (_a = options.top) !== null && _a !== void 0 ? _a : 0,
67
+ left: (_b = options.left) !== null && _b !== void 0 ? _b : 0,
68
+ behavior: options.animated !== false ? 'smooth' : 'auto',
69
+ });
70
+ },
71
+ getScrollPosition() {
72
+ return {
73
+ scrollTop: window.scrollY,
74
+ scrollLeft: window.scrollX,
75
+ };
76
+ },
77
+ lockScroll() {
78
+ document.body.style.overflow = 'hidden';
79
+ },
80
+ unlockScroll() {
81
+ document.body.style.overflow = '';
82
+ },
83
+ },
84
+ device: {
85
+ getInfo() {
86
+ const ua = navigator.userAgent;
87
+ return {
88
+ ios: /iPhone|iPad|iPod/i.test(ua),
89
+ android: /Android/i.test(ua),
90
+ mobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(ua),
91
+ weChat: /MicroMessenger/i.test(ua),
92
+ os: getBrowserOS(ua),
93
+ brand: '',
94
+ model: '',
95
+ screenWidth: window.screen.width,
96
+ screenHeight: window.screen.height,
97
+ pixelRatio: window.devicePixelRatio,
98
+ };
99
+ },
100
+ async getNetworkType() {
101
+ const conn = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
102
+ return (conn === null || conn === void 0 ? void 0 : conn.effectiveType) || 'unknown';
103
+ },
104
+ },
105
+ };
106
+ function getBrowserOS(ua) {
107
+ if (/Windows/i.test(ua))
108
+ return 'Windows';
109
+ if (/Mac OS X/i.test(ua)) {
110
+ if (/iPhone|iPad|iPod/i.test(ua))
111
+ return 'iOS';
112
+ return 'macOS';
113
+ }
114
+ if (/Android/i.test(ua))
115
+ return 'Android';
116
+ if (/Linux/i.test(ua))
117
+ return 'Linux';
118
+ return 'Unknown';
119
+ }
120
+
121
+ let currentAdapter = browserAdapter;
122
+ /**
123
+ * 设置平台适配器(如切换到 Taro)
124
+ */
125
+ function setAdapter(adapter) {
126
+ currentAdapter = adapter;
127
+ }
128
+ /**
129
+ * 获取当前平台适配器
130
+ */
131
+ function getAdapter() {
132
+ return currentAdapter;
133
+ }
134
+
135
+ /**
136
+ * URL 解析与操作工具
137
+ */
138
+ /**
139
+ * 解析 URL 为结构化对象
140
+ */
141
+ function parseUrl(url) {
142
+ const a = document.createElement('a');
143
+ a.href = url;
144
+ const query = {};
145
+ if (a.search) {
146
+ a.search.slice(1).split('&').forEach((pair) => {
147
+ const [key, val] = pair.split('=');
148
+ if (key)
149
+ query[decodeURIComponent(key)] = decodeURIComponent(val || '');
150
+ });
151
+ }
152
+ return {
153
+ protocol: a.protocol,
154
+ host: a.host,
155
+ port: a.port,
156
+ pathname: a.pathname,
157
+ search: a.search,
158
+ hash: a.hash,
159
+ query,
160
+ };
161
+ }
162
+ /**
163
+ * 拼接带查询参数的 URL
164
+ */
165
+ function buildUrl(base, params) {
166
+ const search = Object.entries(params)
167
+ .filter(([, v]) => v !== undefined && v !== null)
168
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
169
+ .join('&');
170
+ if (!search)
171
+ return base;
172
+ const separator = base.includes('?') ? '&' : '?';
173
+ return `${base}${separator}${search}`;
174
+ }
175
+ /**
176
+ * 获取当前页面指定查询参数
177
+ */
178
+ function getQueryParam(name) {
179
+ return new URLSearchParams(window.location.search).get(name);
180
+ }
181
+ /**
182
+ * 获取当前页面所有查询参数
183
+ */
184
+ function getAllQueryParams() {
185
+ const params = {};
186
+ new URLSearchParams(window.location.search).forEach((value, key) => {
187
+ params[key] = value;
188
+ });
189
+ return params;
190
+ }
191
+
192
+ /**
193
+ * Storage 封装
194
+ * 支持过期时间、JSON 自动序列化
195
+ * 通过适配器支持跨端
196
+ */
197
+ /**
198
+ * 获取存储值,支持 JSON 自动反序列化
199
+ */
200
+ function get$1(key) {
201
+ const raw = getAdapter().storage.get(key);
202
+ if (raw === null)
203
+ return null;
204
+ try {
205
+ const item = JSON.parse(raw);
206
+ if (item.expireAt !== null && Date.now() > item.expireAt) {
207
+ getAdapter().storage.remove(key);
208
+ return null;
209
+ }
210
+ return item.value;
211
+ }
212
+ catch (_a) {
213
+ return raw;
214
+ }
215
+ }
216
+ /**
217
+ * 设置存储值,支持过期时间
218
+ */
219
+ function set$1(key, value, options) {
220
+ const item = {
221
+ value,
222
+ expireAt: (options === null || options === void 0 ? void 0 : options.expires) ? Date.now() + options.expires : null,
223
+ };
224
+ getAdapter().storage.set(key, JSON.stringify(item), options);
225
+ }
226
+ /**
227
+ * 删除存储值
228
+ */
229
+ function remove$1(key) {
230
+ getAdapter().storage.remove(key);
231
+ }
232
+ /**
233
+ * 清空所有存储
234
+ */
235
+ function clear() {
236
+ getAdapter().storage.clear();
237
+ }
238
+
239
+ /**
240
+ * Cookie 读写删工具
241
+ */
242
+ /**
243
+ * 获取 Cookie 值
244
+ */
245
+ function get(name) {
246
+ const match = document.cookie.match(new RegExp(`(?:^|;\\s*)${encodeURIComponent(name)}=([^;]*)`));
247
+ return match ? decodeURIComponent(match[1]) : null;
248
+ }
249
+ /**
250
+ * 设置 Cookie
251
+ */
252
+ function set(name, value, options = {}) {
253
+ const parts = [`${encodeURIComponent(name)}=${encodeURIComponent(value)}`];
254
+ if (options.days) {
255
+ const expires = new Date(Date.now() + options.days * 864e5).toUTCString();
256
+ parts.push(`expires=${expires}`);
257
+ }
258
+ if (options.path)
259
+ parts.push(`path=${options.path}`);
260
+ if (options.domain)
261
+ parts.push(`domain=${options.domain}`);
262
+ if (options.secure)
263
+ parts.push('secure');
264
+ if (options.sameSite)
265
+ parts.push(`samesite=${options.sameSite}`);
266
+ document.cookie = parts.join('; ');
267
+ }
268
+ /**
269
+ * 删除 Cookie
270
+ */
271
+ function remove(name, options = {}) {
272
+ set(name, '', { ...options, days: -1 });
273
+ }
274
+
275
+ /**
276
+ * 设备/浏览器检测工具
277
+ */
278
+ /**
279
+ * 是否为 iOS
280
+ */
281
+ function isIOS() {
282
+ return getAdapter().device.getInfo().ios;
283
+ }
284
+ /**
285
+ * 是否为 Android
286
+ */
287
+ function isAndroid() {
288
+ return getAdapter().device.getInfo().android;
289
+ }
290
+ /**
291
+ * 是否为微信浏览器
292
+ */
293
+ function isWeChat() {
294
+ return getAdapter().device.getInfo().weChat;
295
+ }
296
+ /**
297
+ * 是否为移动端
298
+ */
299
+ function isMobile() {
300
+ return getAdapter().device.getInfo().mobile;
301
+ }
302
+ /**
303
+ * 获取浏览器类型(H5 专用)
304
+ */
305
+ function getBrowserType() {
306
+ const ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';
307
+ if (/MicroMessenger/i.test(ua))
308
+ return 'weixin';
309
+ if (/\bQQ\//i.test(ua))
310
+ return 'qq';
311
+ if (/UCBrowser/i.test(ua))
312
+ return 'uc';
313
+ if (/Edg/i.test(ua))
314
+ return 'edge';
315
+ if (/Firefox/i.test(ua))
316
+ return 'firefox';
317
+ if (/MSIE|Trident/i.test(ua))
318
+ return 'ie';
319
+ if (/Chrome/i.test(ua))
320
+ return 'chrome';
321
+ if (/Safari/i.test(ua))
322
+ return 'safari';
323
+ return 'unknown';
324
+ }
325
+ /**
326
+ * 获取操作系统信息
327
+ */
328
+ function getOS() {
329
+ return getAdapter().device.getInfo().os;
330
+ }
331
+ /**
332
+ * 获取完整设备信息
333
+ */
334
+ function getDeviceInfo() {
335
+ return getAdapter().device.getInfo();
336
+ }
337
+
338
+ /**
339
+ * DOM 操作工具
340
+ */
341
+ /**
342
+ * 查询单个元素
343
+ */
344
+ function $(selector) {
345
+ return getAdapter().dom.select(selector);
346
+ }
347
+ /**
348
+ * 查询多个元素
349
+ */
350
+ function $$(selector) {
351
+ return getAdapter().dom.selectAll(selector);
352
+ }
353
+ /**
354
+ * 添加 class
355
+ */
356
+ function addClass(el, cls) {
357
+ el.classList.add(cls);
358
+ }
359
+ /**
360
+ * 移除 class
361
+ */
362
+ function removeClass(el, cls) {
363
+ el.classList.remove(cls);
364
+ }
365
+ /**
366
+ * 切换 class
367
+ */
368
+ function toggleClass(el, cls) {
369
+ el.classList.toggle(cls);
370
+ }
371
+ /**
372
+ * 判断是否包含 class
373
+ */
374
+ function hasClass(el, cls) {
375
+ return el.classList.contains(cls);
376
+ }
377
+ /**
378
+ * 获取元素样式
379
+ */
380
+ function getStyle(el, prop) {
381
+ return el.style.getPropertyValue(prop) || getComputedStyle(el).getPropertyValue(prop);
382
+ }
383
+ /**
384
+ * 判断元素是否在可视区域内
385
+ */
386
+ function isInViewport(el) {
387
+ const rect = el.getBoundingClientRect();
388
+ return (rect.top >= 0 &&
389
+ rect.left >= 0 &&
390
+ rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
391
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth));
392
+ }
393
+
394
+ /**
395
+ * 事件工具
396
+ */
397
+ /**
398
+ * 绑定事件
399
+ */
400
+ function on(el, event, handler, options) {
401
+ el.addEventListener(event, handler, options);
402
+ }
403
+ /**
404
+ * 解绑事件
405
+ */
406
+ function off(el, event, handler, options) {
407
+ el.removeEventListener(event, handler, options);
408
+ }
409
+ /**
410
+ * 单次监听事件
411
+ */
412
+ function once(el, event, handler) {
413
+ el.addEventListener(event, handler, { once: true });
414
+ }
415
+ /**
416
+ * 事件委托
417
+ * @param parent 父容器
418
+ * @param selector 子元素选择器
419
+ * @param event 事件名
420
+ * @param handler 回调函数
421
+ */
422
+ function delegate(parent, selector, event, handler) {
423
+ const wrappedHandler = (e) => {
424
+ var _a;
425
+ const target = (_a = e.target) === null || _a === void 0 ? void 0 : _a.closest(selector);
426
+ if (target) {
427
+ handler(target, e);
428
+ }
429
+ };
430
+ parent.addEventListener(event, wrappedHandler);
431
+ }
432
+
433
+ /**
434
+ * 剪贴板操作
435
+ */
436
+ /**
437
+ * 复制文本到剪贴板
438
+ */
439
+ function copyText(text) {
440
+ return getAdapter().clipboard.write(text);
441
+ }
442
+ /**
443
+ * 读取剪贴板文本
444
+ */
445
+ function readText() {
446
+ return getAdapter().clipboard.read();
447
+ }
448
+
449
+ /**
450
+ * 滚动相关工具
451
+ */
452
+ let scrollLockCount = 0;
453
+ /**
454
+ * 滚动到页面顶部
455
+ */
456
+ function scrollToTop(smooth = true) {
457
+ getAdapter().scroll.scrollTo({ top: 0, animated: smooth });
458
+ }
459
+ /**
460
+ * 滚动到指定元素
461
+ */
462
+ function scrollToElement(el, options = {}) {
463
+ const { offset = 0, smooth = true } = options;
464
+ const rect = el.getBoundingClientRect();
465
+ const top = window.scrollY + rect.top + offset;
466
+ getAdapter().scroll.scrollTo({ top, animated: smooth });
467
+ }
468
+ /**
469
+ * 锁定页面滚动
470
+ */
471
+ function lockScroll() {
472
+ scrollLockCount++;
473
+ if (scrollLockCount === 1) {
474
+ getAdapter().scroll.lockScroll();
475
+ }
476
+ }
477
+ /**
478
+ * 解锁页面滚动
479
+ */
480
+ function unlockScroll() {
481
+ scrollLockCount = Math.max(0, scrollLockCount - 1);
482
+ if (scrollLockCount === 0) {
483
+ getAdapter().scroll.unlockScroll();
484
+ }
485
+ }
486
+
487
+ /**
488
+ * 格式化工具
489
+ */
490
+ /**
491
+ * 日期格式化
492
+ * @example formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss')
493
+ */
494
+ function formatDate(date, fmt = 'YYYY-MM-DD HH:mm:ss') {
495
+ const d = new Date(date);
496
+ const map = {
497
+ YYYY: String(d.getFullYear()),
498
+ MM: String(d.getMonth() + 1).padStart(2, '0'),
499
+ DD: String(d.getDate()).padStart(2, '0'),
500
+ HH: String(d.getHours()).padStart(2, '0'),
501
+ mm: String(d.getMinutes()).padStart(2, '0'),
502
+ ss: String(d.getSeconds()).padStart(2, '0'),
503
+ };
504
+ let result = fmt;
505
+ for (const [key, val] of Object.entries(map)) {
506
+ result = result.replace(key, val);
507
+ }
508
+ return result;
509
+ }
510
+ /**
511
+ * 数字格式化(千分位等)
512
+ */
513
+ function formatNumber(num, options = {}) {
514
+ const { precision, separator = ',' } = options;
515
+ let str = precision !== undefined ? num.toFixed(precision) : String(num);
516
+ const [intPart, decPart] = str.split('.');
517
+ const formatted = intPart.replace(/\B(?=(\d{3})+(?!\d))/g, separator);
518
+ return decPart !== undefined ? `${formatted}.${decPart}` : formatted;
519
+ }
520
+ /**
521
+ * 手机号格式化 (xxx xxxx xxxx)
522
+ */
523
+ function formatPhone(phone) {
524
+ return phone.replace(/(\d{3})(\d{0,4})(\d{0,4})/, (_, a, b, c) => {
525
+ let result = a;
526
+ if (b)
527
+ result += ` ${b}`;
528
+ if (c)
529
+ result += ` ${c}`;
530
+ return result;
531
+ });
532
+ }
533
+ /**
534
+ * 金额格式化
535
+ */
536
+ function formatMoney(amount, precision = 2) {
537
+ return formatNumber(amount, { precision });
538
+ }
539
+ /**
540
+ * 节流
541
+ */
542
+ function throttle(fn, delay) {
543
+ let last = 0;
544
+ return function (...args) {
545
+ const now = Date.now();
546
+ if (now - last >= delay) {
547
+ last = now;
548
+ fn.apply(this, args);
549
+ }
550
+ };
551
+ }
552
+ /**
553
+ * 防抖
554
+ */
555
+ function debounce(fn, delay) {
556
+ let timer = null;
557
+ return function (...args) {
558
+ if (timer)
559
+ clearTimeout(timer);
560
+ timer = setTimeout(() => fn.apply(this, args), delay);
561
+ };
562
+ }
563
+
564
+ /**
565
+ * 校验器工具
566
+ */
567
+ const patterns = {
568
+ mobile: /^1[3-9]\d{9}$/,
569
+ email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
570
+ idCard: /^\d{17}[\dXx]$/,
571
+ url: /^https?:\/\/.+/,
572
+ chinese: /^[\u4e00-\u9fa5]+$/,
573
+ };
574
+ /**
575
+ * 手机号格式校验
576
+ */
577
+ function isMobilePhone(str) {
578
+ return patterns.mobile.test(str);
579
+ }
580
+ /**
581
+ * 邮箱校验
582
+ */
583
+ function isEmail(str) {
584
+ return patterns.email.test(str);
585
+ }
586
+ /**
587
+ * 身份证号校验(18位)
588
+ */
589
+ function isIdCard(str) {
590
+ if (!patterns.idCard.test(str))
591
+ return false;
592
+ // 校验位验证
593
+ const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
594
+ const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
595
+ let sum = 0;
596
+ for (let i = 0; i < 17; i++) {
597
+ sum += parseInt(str[i], 10) * weights[i];
598
+ }
599
+ return checkCodes[sum % 11] === str[17].toUpperCase();
600
+ }
601
+ /**
602
+ * URL 校验
603
+ */
604
+ function isUrl(str) {
605
+ return patterns.url.test(str);
606
+ }
607
+ /**
608
+ * 中文校验
609
+ */
610
+ function isChinese(str) {
611
+ return patterns.chinese.test(str);
612
+ }
613
+
614
+ exports.$ = $;
615
+ exports.$$ = $$;
616
+ exports.addClass = addClass;
617
+ exports.buildUrl = buildUrl;
618
+ exports.clearStorage = clear;
619
+ exports.copyText = copyText;
620
+ exports.debounce = debounce;
621
+ exports.delegate = delegate;
622
+ exports.formatDate = formatDate;
623
+ exports.formatMoney = formatMoney;
624
+ exports.formatNumber = formatNumber;
625
+ exports.formatPhone = formatPhone;
626
+ exports.getAdapter = getAdapter;
627
+ exports.getAllQueryParams = getAllQueryParams;
628
+ exports.getBrowserType = getBrowserType;
629
+ exports.getCookie = get;
630
+ exports.getDeviceInfo = getDeviceInfo;
631
+ exports.getOS = getOS;
632
+ exports.getQueryParam = getQueryParam;
633
+ exports.getStorage = get$1;
634
+ exports.getStyle = getStyle;
635
+ exports.hasClass = hasClass;
636
+ exports.isAndroid = isAndroid;
637
+ exports.isChinese = isChinese;
638
+ exports.isEmail = isEmail;
639
+ exports.isIOS = isIOS;
640
+ exports.isIdCard = isIdCard;
641
+ exports.isInViewport = isInViewport;
642
+ exports.isMobile = isMobile;
643
+ exports.isMobilePhone = isMobilePhone;
644
+ exports.isUrl = isUrl;
645
+ exports.isWeChat = isWeChat;
646
+ exports.lockScroll = lockScroll;
647
+ exports.off = off;
648
+ exports.on = on;
649
+ exports.once = once;
650
+ exports.parseUrl = parseUrl;
651
+ exports.readText = readText;
652
+ exports.removeClass = removeClass;
653
+ exports.removeCookie = remove;
654
+ exports.removeStorage = remove$1;
655
+ exports.scrollToElement = scrollToElement;
656
+ exports.scrollToTop = scrollToTop;
657
+ exports.setAdapter = setAdapter;
658
+ exports.setCookie = set;
659
+ exports.setStorage = set$1;
660
+ exports.throttle = throttle;
661
+ exports.toggleClass = toggleClass;
662
+ exports.unlockScroll = unlockScroll;
663
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/adapter/browser.ts","../src/adapter/index.ts","../src/modules/url.ts","../src/modules/storage.ts","../src/modules/cookie.ts","../src/modules/device.ts","../src/modules/dom.ts","../src/modules/event.ts","../src/modules/clipboard.ts","../src/modules/scroll.ts","../src/modules/format.ts","../src/modules/validator.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null],"names":["get","set","remove"],"mappings":";;AAEA;;AAEG;AACI,MAAM,cAAc,GAAoB;AAC7C,IAAA,OAAO,EAAE;AACP,QAAA,GAAG,CAAC,GAAW,EAAA;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;QAClC,CAAC;QACD,GAAG,CAAC,GAAW,EAAE,KAAa,EAAA;AAC5B,YAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;QAClC,CAAC;AACD,QAAA,MAAM,CAAC,GAAW,EAAA;AAChB,YAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;QAC9B,CAAC;QACD,KAAK,GAAA;YACH,YAAY,CAAC,KAAK,EAAE;QACtB,CAAC;AACF,KAAA;AAED,IAAA,SAAS,EAAE;QACT,MAAM,KAAK,CAAC,IAAY,EAAA;AACtB,YAAA,IAAI,SAAS,CAAC,SAAS,EAAE;gBACvB,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;YAC3C;iBAAO;gBACL,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AACnD,gBAAA,QAAQ,CAAC,KAAK,GAAG,IAAI;AACrB,gBAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,6BAA6B;AACtD,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACnC,QAAQ,CAAC,MAAM,EAAE;AACjB,gBAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5B,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACrC;QACF,CAAC;AACD,QAAA,MAAM,IAAI,GAAA;AACR,YAAA,IAAI,SAAS,CAAC,SAAS,EAAE;AACvB,gBAAA,OAAO,MAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC7C;AACA,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAChD,CAAC;AACF,KAAA;AAED,IAAA,KAAK,EAAE;QACL,EAAE,CAAC,KAAa,EAAE,OAAiC,EAAA;AACjD,YAAA,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAwB,CAAC;QAC1D,CAAC;QACD,GAAG,CAAC,KAAa,EAAE,OAAiC,EAAA;AAClD,YAAA,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAwB,CAAC;QAC7D,CAAC;AACD,QAAA,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;AAChC,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;AACF,KAAA;AAED,IAAA,GAAG,EAAE;AACH,QAAA,MAAM,CAAC,QAAgB,EAAA;AACrB,YAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;QACzC,CAAC;AACD,QAAA,SAAS,CAAC,QAAgB,EAAA;YACxB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC;AACF,KAAA;AAED,IAAA,MAAM,EAAE;AACN,QAAA,QAAQ,CAAC,OAA4D,EAAA;;YACnE,MAAM,CAAC,QAAQ,CAAC;AACd,gBAAA,GAAG,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,mCAAI,CAAC;AACrB,gBAAA,IAAI,EAAE,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,mCAAI,CAAC;AACvB,gBAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,KAAK,GAAG,QAAQ,GAAG,MAAM;AACzD,aAAA,CAAC;QACJ,CAAC;QACD,iBAAiB,GAAA;YACf,OAAO;gBACL,SAAS,EAAE,MAAM,CAAC,OAAO;gBACzB,UAAU,EAAE,MAAM,CAAC,OAAO;aAC3B;QACH,CAAC;QACD,UAAU,GAAA;YACR,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;QACzC,CAAC;QACD,YAAY,GAAA;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;QACnC,CAAC;AACF,KAAA;AAED,IAAA,MAAM,EAAE;QACN,OAAO,GAAA;AACL,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS;YAC9B,OAAO;AACL,gBAAA,GAAG,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;AACjC,gBAAA,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,gBAAA,MAAM,EAAE,gEAAgE,CAAC,IAAI,CAAC,EAAE,CAAC;AACjF,gBAAA,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAClC,gBAAA,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;AACpB,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;AAChC,gBAAA,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;gBAClC,UAAU,EAAE,MAAM,CAAC,gBAAgB;aACpC;QACH,CAAC;AACD,QAAA,MAAM,cAAc,GAAA;AAClB,YAAA,MAAM,IAAI,GAAI,SAAiB,CAAC,UAAU,IAAK,SAAiB,CAAC,aAAa,IAAK,SAAiB,CAAC,gBAAgB;YACrH,OAAO,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,aAAa,KAAI,SAAS;QACzC,CAAC;AACF,KAAA;CACF;AAED,SAAS,YAAY,CAAC,EAAU,EAAA;AAC9B,IAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,SAAS;AACzC,IAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACxB,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,KAAK;AAC9C,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,SAAS;AACzC,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,OAAO;AACrC,IAAA,OAAO,SAAS;AAClB;;ACvGA,IAAI,cAAc,GAAoB,cAAc;AAEpD;;AAEG;AACG,SAAU,UAAU,CAAC,OAAwB,EAAA;IACjD,cAAc,GAAG,OAAO;AAC1B;AAEA;;AAEG;SACa,UAAU,GAAA;AACxB,IAAA,OAAO,cAAc;AACvB;;AC7BA;;AAEG;AAYH;;AAEG;AACG,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,IAAA,CAAC,CAAC,IAAI,GAAG,GAAG;IACZ,MAAM,KAAK,GAA2B,EAAE;AACxC,IAAA,IAAI,CAAC,CAAC,MAAM,EAAE;AACZ,QAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC5C,YAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,YAAA,IAAI,GAAG;AAAE,gBAAA,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG,IAAI,EAAE,CAAC;AACzE,QAAA,CAAC,CAAC;IACJ;IACA,OAAO;QACL,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK;KACN;AACH;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,IAAY,EAAE,MAAiD,EAAA;AACtF,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;AACjC,SAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;SAC/C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,kBAAkB,CAAC,CAAC,CAAC,CAAA,CAAE;SACnE,IAAI,CAAC,GAAG,CAAC;AACZ,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;AACxB,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;AAChD,IAAA,OAAO,GAAG,IAAI,CAAA,EAAG,SAAS,CAAA,EAAG,MAAM,EAAE;AACvC;AAEA;;AAEG;AACG,SAAU,aAAa,CAAC,IAAY,EAAA;AACxC,IAAA,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9D;AAEA;;AAEG;SACa,iBAAiB,GAAA;IAC/B,MAAM,MAAM,GAA2B,EAAE;AACzC,IAAA,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;AACjE,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AACrB,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,MAAM;AACf;;ACnEA;;;;AAIG;AAYH;;AAEG;AACG,SAAUA,KAAG,CAAc,GAAW,EAAA;IAC1C,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACzC,IAAI,GAAG,KAAK,IAAI;AAAE,QAAA,OAAO,IAAI;AAC7B,IAAA,IAAI;QACF,MAAM,IAAI,GAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;YACxD,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAChC,YAAA,OAAO,IAAI;QACb;QACA,OAAO,IAAI,CAAC,KAAU;IACxB;AAAE,IAAA,OAAA,EAAA,EAAM;AACN,QAAA,OAAO,GAAmB;IAC5B;AACF;AAEA;;AAEG;SACaC,KAAG,CAAC,GAAW,EAAE,KAAc,EAAE,OAA2B,EAAA;AAC1E,IAAA,MAAM,IAAI,GAAgB;QACxB,KAAK;QACL,QAAQ,EAAE,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,OAAO,IAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;KACjE;AACD,IAAA,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;AAC9D;AAEA;;AAEG;AACG,SAAUC,QAAM,CAAC,GAAW,EAAA;IAChC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC;AAEA;;AAEG;SACa,KAAK,GAAA;AACnB,IAAA,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;AAC9B;;ACzDA;;AAEG;AAeH;;AAEG;AACG,SAAU,GAAG,CAAC,IAAY,EAAA;AAC9B,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAA,WAAA,EAAc,kBAAkB,CAAC,IAAI,CAAC,CAAA,QAAA,CAAU,CAAC,CAAC;AACjG,IAAA,OAAO,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACpD;AAEA;;AAEG;AACG,SAAU,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,UAAyB,EAAE,EAAA;AAC1E,IAAA,MAAM,KAAK,GAAG,CAAC,CAAA,EAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,kBAAkB,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;AAC1E,IAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;AACzE,QAAA,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAA,CAAE,CAAC;IAClC;IACA,IAAI,OAAO,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,OAAO,CAAC,IAAI,CAAA,CAAE,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,OAAO,CAAC,MAAM,CAAA,CAAE,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM;AAAE,QAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxC,IAAI,OAAO,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,OAAO,CAAC,QAAQ,CAAA,CAAE,CAAC;IAChE,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC;AAEA;;AAEG;SACa,MAAM,CAAC,IAAY,EAAE,UAAyB,EAAE,EAAA;AAC9D,IAAA,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACzC;;AC9CA;;AAEG;AAIH;;AAEG;SACa,KAAK,GAAA;IACnB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG;AAC1C;AAEA;;AAEG;SACa,SAAS,GAAA;IACvB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO;AAC9C;AAEA;;AAEG;SACa,QAAQ,GAAA;IACtB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM;AAC7C;AAEA;;AAEG;SACa,QAAQ,GAAA;IACtB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM;AAC7C;AAIA;;AAEG;SACa,cAAc,GAAA;AAC5B,IAAA,MAAM,EAAE,GAAG,OAAO,SAAS,KAAK,WAAW,GAAG,SAAS,CAAC,SAAS,GAAG,EAAE;AACtE,IAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,QAAQ;AAC/C,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,IAAI;AACnC,IAAA,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,IAAI;AACtC,IAAA,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,MAAM;AAClC,IAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,SAAS;AACzC,IAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,IAAI;AACzC,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,QAAQ;AACvC,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,QAAQ;AACvC,IAAA,OAAO,SAAS;AAClB;AAEA;;AAEG;SACa,KAAK,GAAA;IACnB,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE;AACzC;AAEA;;AAEG;SACa,aAAa,GAAA;AAC3B,IAAA,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;AACtC;;AChEA;;AAEG;AAIH;;AAEG;AACG,SAAU,CAAC,CAA8B,QAAgB,EAAA;IAC7D,OAAO,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAa;AACtD;AAEA;;AAEG;AACG,SAAU,EAAE,CAA8B,QAAgB,EAAA;IAC9D,OAAO,UAAU,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAQ;AACpD;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,EAAW,EAAE,GAAW,EAAA;AAC/C,IAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB;AAEA;;AAEG;AACG,SAAU,WAAW,CAAC,EAAW,EAAE,GAAW,EAAA;AAClD,IAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1B;AAEA;;AAEG;AACG,SAAU,WAAW,CAAC,EAAW,EAAE,GAAW,EAAA;AAClD,IAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1B;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,EAAW,EAAE,GAAW,EAAA;IAC/C,OAAO,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;AACnC;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,EAAW,EAAE,IAAY,EAAA;AAChD,IAAA,OAAQ,EAAkB,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACxG;AAEA;;AAEG;AACG,SAAU,YAAY,CAAC,EAAW,EAAA;AACtC,IAAA,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE;AACvC,IAAA,QACE,IAAI,CAAC,GAAG,IAAI,CAAC;QACb,IAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAA,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;AAC5E,QAAA,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;AAE7E;;AClEA;;AAEG;AAEH;;AAEG;AACG,SAAU,EAAE,CAAC,EAAe,EAAE,KAAa,EAAE,OAAsB,EAAE,OAAiC,EAAA;IAC1G,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9C;AAEA;;AAEG;AACG,SAAU,GAAG,CAAC,EAAe,EAAE,KAAa,EAAE,OAAsB,EAAE,OAA8B,EAAA;IACxG,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AACjD;AAEA;;AAEG;SACa,IAAI,CAAC,EAAe,EAAE,KAAa,EAAE,OAAsB,EAAA;AACzE,IAAA,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD;AAEA;;;;;;AAMG;AACG,SAAU,QAAQ,CACtB,MAAmB,EACnB,QAAgB,EAChB,KAAa,EACb,OAAwC,EAAA;AAExC,IAAA,MAAM,cAAc,GAAG,CAAC,CAAQ,KAAI;;QAClC,MAAM,MAAM,GAAG,CAAA,EAAA,GAAC,CAAC,CAAC,MAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,OAAO,CAAC,QAAQ,CAAC;QACvD,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACpB;AACF,IAAA,CAAC;AACA,IAAA,MAAsB,CAAC,gBAAgB,CAAC,KAAK,EAAE,cAA+B,CAAC;AAClF;;AC7CA;;AAEG;AAIH;;AAEG;AACG,SAAU,QAAQ,CAAC,IAAY,EAAA;IACnC,OAAO,UAAU,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAC3C;AAEA;;AAEG;SACa,QAAQ,GAAA;AACtB,IAAA,OAAO,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE;AACtC;;AClBA;;AAEG;AAIH,IAAI,eAAe,GAAG,CAAC;AAEvB;;AAEG;AACG,SAAU,WAAW,CAAC,MAAM,GAAG,IAAI,EAAA;AACvC,IAAA,UAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5D;AAEA;;AAEG;SACa,eAAe,CAC7B,EAAW,EACX,UAAiD,EAAE,EAAA;IAEnD,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO;AAC7C,IAAA,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM;AAC9C,IAAA,UAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACzD;AAEA;;AAEG;SACa,UAAU,GAAA;AACxB,IAAA,eAAe,EAAE;AACjB,IAAA,IAAI,eAAe,KAAK,CAAC,EAAE;AACzB,QAAA,UAAU,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;IAClC;AACF;AAEA;;AAEG;SACa,YAAY,GAAA;IAC1B,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC;AAClD,IAAA,IAAI,eAAe,KAAK,CAAC,EAAE;AACzB,QAAA,UAAU,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE;IACpC;AACF;;AC9CA;;AAEG;AAEH;;;AAGG;SACa,UAAU,CAAC,IAA4B,EAAE,GAAG,GAAG,qBAAqB,EAAA;AAClF,IAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AACxB,IAAA,MAAM,GAAG,GAA2B;AAClC,QAAA,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7B,QAAA,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7C,QAAA,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACxC,QAAA,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzC,QAAA,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3C,QAAA,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;KAC5C;IACD,IAAI,MAAM,GAAG,GAAG;AAChB,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IACnC;AACA,IAAA,OAAO,MAAM;AACf;AAEA;;AAEG;SACa,YAAY,CAAC,GAAW,EAAE,UAAsD,EAAE,EAAA;IAChG,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO;IAC9C,IAAI,GAAG,GAAG,SAAS,KAAK,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACxE,IAAA,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC;AACrE,IAAA,OAAO,OAAO,KAAK,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,GAAG,SAAS;AACtE;AAEA;;AAEG;AACG,SAAU,WAAW,CAAC,KAAa,EAAA;AACvC,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;QAC/D,IAAI,MAAM,GAAG,CAAC;AACd,QAAA,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;AACxB,QAAA,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;AACxB,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,CAAC;AACJ;AAEA;;AAEG;SACa,WAAW,CAAC,MAAc,EAAE,SAAS,GAAG,CAAC,EAAA;IACvD,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC;AAC5C;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAoC,EAAK,EAAE,KAAa,EAAA;IAC9E,IAAI,IAAI,GAAG,CAAC;IACZ,OAAO,UAAyB,GAAG,IAAmB,EAAA;AACpD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE;YACvB,IAAI,GAAG,GAAG;AACV,YAAA,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;QACtB;AACF,IAAA,CAAM;AACR;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAoC,EAAK,EAAE,KAAa,EAAA;IAC9E,IAAI,KAAK,GAAyC,IAAI;IACtD,OAAO,UAAyB,GAAG,IAAmB,EAAA;AACpD,QAAA,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC;AAC9B,QAAA,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC;AACvD,IAAA,CAAM;AACR;;AC9EA;;AAEG;AAEH,MAAM,QAAQ,GAAG;AACf,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,KAAK,EAAE,kDAAkD;AACzD,IAAA,MAAM,EAAE,gBAAgB;AACxB,IAAA,GAAG,EAAE,gBAAgB;AACrB,IAAA,OAAO,EAAE,oBAAoB;CAC9B;AAED;;AAEG;AACG,SAAU,aAAa,CAAC,GAAW,EAAA;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC;AAEA;;AAEG;AACG,SAAU,OAAO,CAAC,GAAW,EAAA;IACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,KAAK;;AAE5C,IAAA,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC1E,IAAI,GAAG,GAAG,CAAC;AACX,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC3B,QAAA,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAC1C;AACA,IAAA,OAAO,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AACvD;AAEA;;AAEG;AACG,SAAU,KAAK,CAAC,GAAW,EAAA;IAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B;AAEA;;AAEG;AACG,SAAU,SAAS,CAAC,GAAW,EAAA;IACnC,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}