@kalyx/core 0.2.0 → 0.3.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/README.md +76 -8
- package/dist/index.cjs +151 -20
- package/dist/index.d.cts +167 -75
- package/dist/index.d.ts +348 -9
- package/dist/index.js +538 -9
- package/package.json +20 -1
- package/dist/adapters/date-fns.d.ts +0 -16
- package/dist/adapters/date-fns.d.ts.map +0 -1
- package/dist/adapters/date-fns.js +0 -148
- package/dist/adapters/date-fns.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types.d.ts +0 -106
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -8
- package/dist/types.js.map +0 -1
- package/dist/utils/calendar.d.ts +0 -35
- package/dist/utils/calendar.d.ts.map +0 -1
- package/dist/utils/calendar.js +0 -141
- package/dist/utils/calendar.js.map +0 -1
- package/dist/utils/date.d.ts +0 -22
- package/dist/utils/date.d.ts.map +0 -1
- package/dist/utils/date.js +0 -66
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/locale.d.ts +0 -33
- package/dist/utils/locale.d.ts.map +0 -1
- package/dist/utils/locale.js +0 -70
- package/dist/utils/locale.js.map +0 -1
- package/dist/utils/time.d.ts +0 -58
- package/dist/utils/time.d.ts.map +0 -1
- package/dist/utils/time.js +0 -127
- package/dist/utils/time.js.map +0 -1
package/dist/utils/locale.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Intl.DateTimeFormat으로 월 이름을 반환한다.
|
|
3
|
-
* @param month 0-indexed (0 = January)
|
|
4
|
-
* @param year 표시에만 사용 (일부 locale은 년 포함)
|
|
5
|
-
* @param locale BCP 47 locale string (예: "en-US", "ko-KR", "ja-JP")
|
|
6
|
-
*/
|
|
7
|
-
export function getMonthName(month, locale = 'en-US') {
|
|
8
|
-
// 2026년 고정 (어떤 해든 월 이름은 같음)
|
|
9
|
-
const date = new Date(Date.UTC(2026, month, 1));
|
|
10
|
-
return new Intl.DateTimeFormat(locale, { month: 'long', timeZone: 'UTC' }).format(date);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* "2026년 1월" 또는 "January 2026" 같은 월+년 문자열을 반환한다.
|
|
14
|
-
*/
|
|
15
|
-
export function formatMonthYear(year, month, locale = 'en-US') {
|
|
16
|
-
const date = new Date(Date.UTC(year, month, 1));
|
|
17
|
-
return new Intl.DateTimeFormat(locale, {
|
|
18
|
-
year: 'numeric',
|
|
19
|
-
month: 'long',
|
|
20
|
-
timeZone: 'UTC',
|
|
21
|
-
}).format(date);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Intl.DateTimeFormat으로 주의 요일 이름 배열을 반환한다.
|
|
25
|
-
* weekStartsOn에 맞춰 정렬.
|
|
26
|
-
*
|
|
27
|
-
* @param locale BCP 47 locale string
|
|
28
|
-
* @param weekStartsOn 0 = Sunday, 1 = Monday
|
|
29
|
-
* @returns 7개의 WeekdayInfo 배열
|
|
30
|
-
*/
|
|
31
|
-
export function getWeekdayNames(locale = 'en-US', weekStartsOn = 0) {
|
|
32
|
-
// 2026-01-04 = Sunday (기준점)
|
|
33
|
-
const shortFormatter = new Intl.DateTimeFormat(locale, {
|
|
34
|
-
weekday: 'short',
|
|
35
|
-
timeZone: 'UTC',
|
|
36
|
-
});
|
|
37
|
-
const fullFormatter = new Intl.DateTimeFormat(locale, {
|
|
38
|
-
weekday: 'long',
|
|
39
|
-
timeZone: 'UTC',
|
|
40
|
-
});
|
|
41
|
-
const days = [];
|
|
42
|
-
for (let i = 0; i < 7; i++) {
|
|
43
|
-
const date = new Date(Date.UTC(2026, 0, 4 + i)); // Sun..Sat
|
|
44
|
-
days.push({
|
|
45
|
-
short: shortFormatter.format(date),
|
|
46
|
-
full: fullFormatter.format(date),
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
// weekStartsOn에 맞게 회전
|
|
50
|
-
if (weekStartsOn === 1) {
|
|
51
|
-
const sunday = days.shift();
|
|
52
|
-
days.push(sunday);
|
|
53
|
-
}
|
|
54
|
-
return days;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Intl.DateTimeFormat으로 날짜의 전체 텍스트를 반환한다 (스크린리더용).
|
|
58
|
-
* 예: "2026년 1월 15일 목요일"
|
|
59
|
-
*/
|
|
60
|
-
export function formatFullDate(iso, locale = 'en-US') {
|
|
61
|
-
const date = new Date(iso);
|
|
62
|
-
return new Intl.DateTimeFormat(locale, {
|
|
63
|
-
year: 'numeric',
|
|
64
|
-
month: 'long',
|
|
65
|
-
day: 'numeric',
|
|
66
|
-
weekday: 'long',
|
|
67
|
-
timeZone: 'UTC',
|
|
68
|
-
}).format(date);
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=locale.js.map
|
package/dist/utils/locale.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,MAAM,GAAG,OAAO;IAC1D,4BAA4B;IAC5B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa,EAAE,MAAM,GAAG,OAAO;IAC3E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QACrC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAM,GAAG,OAAO,EAChB,eAA6B,CAAC;IAE9B,4BAA4B;IAC5B,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QACrD,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QACpD,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;QAC5D,IAAI,CAAC,IAAI,CAAC;YACR,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,MAAM,GAAG,OAAO;IAC1D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QACrC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/utils/time.d.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { DateAdapter, ISODateString } from '../types.js';
|
|
2
|
-
/** 시간 표현 (24시간제 기준) */
|
|
3
|
-
export interface TimeValue {
|
|
4
|
-
hours: number;
|
|
5
|
-
minutes: number;
|
|
6
|
-
seconds: number;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* ISO datetime의 시간 부분을 변경한다.
|
|
10
|
-
* UTC 기준으로 동작한다.
|
|
11
|
-
*/
|
|
12
|
-
export declare function setTime(iso: ISODateString, time: Partial<TimeValue>): ISODateString;
|
|
13
|
-
/**
|
|
14
|
-
* ISO datetime에서 시간 부분만 추출한다.
|
|
15
|
-
*/
|
|
16
|
-
export declare function getTime(iso: ISODateString): TimeValue;
|
|
17
|
-
/**
|
|
18
|
-
* "HH:MM" 또는 "HH:MM:SS" 문자열을 TimeValue로 파싱한다.
|
|
19
|
-
* 잘못된 형식이면 null 반환.
|
|
20
|
-
*/
|
|
21
|
-
export declare function parseTimeString(input: string): TimeValue | null;
|
|
22
|
-
/**
|
|
23
|
-
* TimeValue를 "HH:MM" 또는 "HH:MM:SS" 문자열로 포맷팅한다.
|
|
24
|
-
*/
|
|
25
|
-
export declare function formatTimeString(time: TimeValue, withSeconds?: boolean): string;
|
|
26
|
-
/**
|
|
27
|
-
* 24시간제 → 12시간제 변환.
|
|
28
|
-
* 0시 → 12 AM, 12시 → 12 PM
|
|
29
|
-
*/
|
|
30
|
-
export declare function to12Hour(hours24: number): {
|
|
31
|
-
hours12: number;
|
|
32
|
-
period: 'AM' | 'PM';
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* 12시간제 → 24시간제 변환.
|
|
36
|
-
*/
|
|
37
|
-
export declare function to24Hour(hours12: number, period: 'AM' | 'PM'): number;
|
|
38
|
-
/**
|
|
39
|
-
* 시 리스트 생성 (0-23 또는 1-12)
|
|
40
|
-
*/
|
|
41
|
-
export declare function generateHours(format?: '12h' | '24h'): number[];
|
|
42
|
-
/**
|
|
43
|
-
* 분 리스트 생성 (step 단위)
|
|
44
|
-
* step=1 → [0, 1, 2, ..., 59]
|
|
45
|
-
* step=15 → [0, 15, 30, 45]
|
|
46
|
-
* step=5 → [0, 5, 10, ..., 55]
|
|
47
|
-
*/
|
|
48
|
-
export declare function generateMinutes(step?: number): number[];
|
|
49
|
-
/**
|
|
50
|
-
* 두 TimeValue가 동일한지 비교 (시·분·초 모두).
|
|
51
|
-
*/
|
|
52
|
-
export declare function isSameTime(a: TimeValue, b: TimeValue): boolean;
|
|
53
|
-
/**
|
|
54
|
-
* ISO datetime을 시간 문자열로 포맷팅 (UTC 기준).
|
|
55
|
-
* 어댑터를 받아서 일관성 유지.
|
|
56
|
-
*/
|
|
57
|
-
export declare function formatTimeFromISO(iso: ISODateString, format: 'HH:mm' | 'HH:mm:ss' | 'h:mm a' | 'h:mm:ss a', _adapter?: DateAdapter): string;
|
|
58
|
-
//# sourceMappingURL=time.d.ts.map
|
package/dist/utils/time.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,uBAAuB;AACvB,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,aAAa,CAMnF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,CAOrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAc/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,UAAQ,GAAG,MAAM,CAQ7E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAKlF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAKrE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,GAAE,KAAK,GAAG,KAAa,GAAG,MAAM,EAAE,CAKrE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,SAAI,GAAG,MAAM,EAAE,CASlD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAE9D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,EACrD,QAAQ,CAAC,EAAE,WAAW,GACrB,MAAM,CAcR"}
|
package/dist/utils/time.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ISO datetime의 시간 부분을 변경한다.
|
|
3
|
-
* UTC 기준으로 동작한다.
|
|
4
|
-
*/
|
|
5
|
-
export function setTime(iso, time) {
|
|
6
|
-
const date = new Date(iso);
|
|
7
|
-
if (time.hours !== undefined)
|
|
8
|
-
date.setUTCHours(time.hours);
|
|
9
|
-
if (time.minutes !== undefined)
|
|
10
|
-
date.setUTCMinutes(time.minutes);
|
|
11
|
-
if (time.seconds !== undefined)
|
|
12
|
-
date.setUTCSeconds(time.seconds);
|
|
13
|
-
return date.toISOString();
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* ISO datetime에서 시간 부분만 추출한다.
|
|
17
|
-
*/
|
|
18
|
-
export function getTime(iso) {
|
|
19
|
-
const date = new Date(iso);
|
|
20
|
-
return {
|
|
21
|
-
hours: date.getUTCHours(),
|
|
22
|
-
minutes: date.getUTCMinutes(),
|
|
23
|
-
seconds: date.getUTCSeconds(),
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* "HH:MM" 또는 "HH:MM:SS" 문자열을 TimeValue로 파싱한다.
|
|
28
|
-
* 잘못된 형식이면 null 반환.
|
|
29
|
-
*/
|
|
30
|
-
export function parseTimeString(input) {
|
|
31
|
-
if (!input)
|
|
32
|
-
return null;
|
|
33
|
-
const match = input.trim().match(/^(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/);
|
|
34
|
-
if (!match)
|
|
35
|
-
return null;
|
|
36
|
-
const hours = parseInt(match[1], 10);
|
|
37
|
-
const minutes = parseInt(match[2], 10);
|
|
38
|
-
const seconds = match[3] ? parseInt(match[3], 10) : 0;
|
|
39
|
-
if (hours < 0 || hours > 23)
|
|
40
|
-
return null;
|
|
41
|
-
if (minutes < 0 || minutes > 59)
|
|
42
|
-
return null;
|
|
43
|
-
if (seconds < 0 || seconds > 59)
|
|
44
|
-
return null;
|
|
45
|
-
return { hours, minutes, seconds };
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* TimeValue를 "HH:MM" 또는 "HH:MM:SS" 문자열로 포맷팅한다.
|
|
49
|
-
*/
|
|
50
|
-
export function formatTimeString(time, withSeconds = false) {
|
|
51
|
-
const hh = String(time.hours).padStart(2, '0');
|
|
52
|
-
const mm = String(time.minutes).padStart(2, '0');
|
|
53
|
-
if (withSeconds) {
|
|
54
|
-
const ss = String(time.seconds).padStart(2, '0');
|
|
55
|
-
return `${hh}:${mm}:${ss}`;
|
|
56
|
-
}
|
|
57
|
-
return `${hh}:${mm}`;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* 24시간제 → 12시간제 변환.
|
|
61
|
-
* 0시 → 12 AM, 12시 → 12 PM
|
|
62
|
-
*/
|
|
63
|
-
export function to12Hour(hours24) {
|
|
64
|
-
const period = hours24 >= 12 ? 'PM' : 'AM';
|
|
65
|
-
let hours12 = hours24 % 12;
|
|
66
|
-
if (hours12 === 0)
|
|
67
|
-
hours12 = 12;
|
|
68
|
-
return { hours12, period };
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* 12시간제 → 24시간제 변환.
|
|
72
|
-
*/
|
|
73
|
-
export function to24Hour(hours12, period) {
|
|
74
|
-
if (period === 'AM') {
|
|
75
|
-
return hours12 === 12 ? 0 : hours12;
|
|
76
|
-
}
|
|
77
|
-
return hours12 === 12 ? 12 : hours12 + 12;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* 시 리스트 생성 (0-23 또는 1-12)
|
|
81
|
-
*/
|
|
82
|
-
export function generateHours(format = '24h') {
|
|
83
|
-
if (format === '12h') {
|
|
84
|
-
return Array.from({ length: 12 }, (_, i) => i + 1); // 1..12
|
|
85
|
-
}
|
|
86
|
-
return Array.from({ length: 24 }, (_, i) => i); // 0..23
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* 분 리스트 생성 (step 단위)
|
|
90
|
-
* step=1 → [0, 1, 2, ..., 59]
|
|
91
|
-
* step=15 → [0, 15, 30, 45]
|
|
92
|
-
* step=5 → [0, 5, 10, ..., 55]
|
|
93
|
-
*/
|
|
94
|
-
export function generateMinutes(step = 1) {
|
|
95
|
-
if (step < 1 || step > 60) {
|
|
96
|
-
throw new Error(`[generateMinutes] step must be between 1 and 60, got ${step}`);
|
|
97
|
-
}
|
|
98
|
-
const result = [];
|
|
99
|
-
for (let i = 0; i < 60; i += step) {
|
|
100
|
-
result.push(i);
|
|
101
|
-
}
|
|
102
|
-
return result;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* 두 TimeValue가 동일한지 비교 (시·분·초 모두).
|
|
106
|
-
*/
|
|
107
|
-
export function isSameTime(a, b) {
|
|
108
|
-
return a.hours === b.hours && a.minutes === b.minutes && a.seconds === b.seconds;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* ISO datetime을 시간 문자열로 포맷팅 (UTC 기준).
|
|
112
|
-
* 어댑터를 받아서 일관성 유지.
|
|
113
|
-
*/
|
|
114
|
-
export function formatTimeFromISO(iso, format, _adapter) {
|
|
115
|
-
const time = getTime(iso);
|
|
116
|
-
if (format === 'h:mm a' || format === 'h:mm:ss a') {
|
|
117
|
-
const { hours12, period } = to12Hour(time.hours);
|
|
118
|
-
const mm = String(time.minutes).padStart(2, '0');
|
|
119
|
-
if (format === 'h:mm a') {
|
|
120
|
-
return `${hours12}:${mm} ${period}`;
|
|
121
|
-
}
|
|
122
|
-
const ss = String(time.seconds).padStart(2, '0');
|
|
123
|
-
return `${hours12}:${mm}:${ss} ${period}`;
|
|
124
|
-
}
|
|
125
|
-
return formatTimeString(time, format === 'HH:mm:ss');
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=time.js.map
|
package/dist/utils/time.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAkB,EAAE,IAAwB;IAClE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAkB;IACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;QACzB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;QAC7B,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAE7C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAe,EAAE,WAAW,GAAG,KAAK;IACnE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,MAAM,MAAM,GAAgB,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,MAAmB;IAC3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAwB,KAAK;IACzD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAI,GAAG,CAAC;IACtC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,CAAY,EAAE,CAAY;IACnD,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAkB,EAClB,MAAqD,EACrD,QAAsB;IAEtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE1B,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAClD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,GAAG,OAAO,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC;AACvD,CAAC"}
|