@nuvin/ink 6.6.7 → 7.0.0-alpha

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.
Files changed (149) hide show
  1. package/build/ansi-tokenizer.d.ts +38 -0
  2. package/build/ansi-tokenizer.js +316 -0
  3. package/build/ansi-tokenizer.js.map +1 -0
  4. package/build/components/AnimationContext.d.ts +9 -0
  5. package/build/components/AnimationContext.js +13 -0
  6. package/build/components/AnimationContext.js.map +1 -0
  7. package/build/components/App.d.ts +11 -49
  8. package/build/components/App.js +412 -227
  9. package/build/components/App.js.map +1 -1
  10. package/build/components/AppContext.d.ts +33 -3
  11. package/build/components/AppContext.js +2 -1
  12. package/build/components/AppContext.js.map +1 -1
  13. package/build/components/Box.d.ts +15 -8
  14. package/build/components/Box.js +12 -10
  15. package/build/components/Box.js.map +1 -1
  16. package/build/components/CursorContext.d.ts +11 -0
  17. package/build/components/CursorContext.js +8 -0
  18. package/build/components/CursorContext.js.map +1 -0
  19. package/build/components/ErrorBoundary.d.ts +18 -0
  20. package/build/components/ErrorBoundary.js +23 -0
  21. package/build/components/ErrorBoundary.js.map +1 -0
  22. package/build/components/ErrorOverview.js +6 -6
  23. package/build/components/ErrorOverview.js.map +1 -1
  24. package/build/components/Static.js.map +1 -1
  25. package/build/components/StdinContext.d.ts +7 -1
  26. package/build/components/StdinContext.js +1 -0
  27. package/build/components/StdinContext.js.map +1 -1
  28. package/build/components/Text.d.ts +1 -1
  29. package/build/components/Text.js +1 -1
  30. package/build/components/Text.js.map +1 -1
  31. package/build/components/Transform.d.ts +1 -1
  32. package/build/cursor-helpers.d.ts +38 -0
  33. package/build/cursor-helpers.js +56 -0
  34. package/build/cursor-helpers.js.map +1 -0
  35. package/build/devtools-window-polyfill.js +7 -4
  36. package/build/devtools-window-polyfill.js.map +1 -1
  37. package/build/devtools.js +31 -6
  38. package/build/devtools.js.map +1 -1
  39. package/build/dom.d.ts +5 -1
  40. package/build/dom.js +20 -1
  41. package/build/dom.js.map +1 -1
  42. package/build/hooks/use-animation.d.ts +49 -0
  43. package/build/hooks/use-animation.js +87 -0
  44. package/build/hooks/use-animation.js.map +1 -0
  45. package/build/hooks/use-app.d.ts +5 -2
  46. package/build/hooks/use-app.js +1 -1
  47. package/build/hooks/use-box-metrics.d.ts +59 -0
  48. package/build/hooks/use-box-metrics.js +88 -0
  49. package/build/hooks/use-box-metrics.js.map +1 -0
  50. package/build/hooks/use-cursor.d.ts +12 -0
  51. package/build/hooks/use-cursor.js +29 -0
  52. package/build/hooks/use-cursor.js.map +1 -0
  53. package/build/hooks/use-focus-manager.d.ts +17 -2
  54. package/build/hooks/use-focus-manager.js +2 -1
  55. package/build/hooks/use-focus-manager.js.map +1 -1
  56. package/build/hooks/use-focus.d.ts +2 -1
  57. package/build/hooks/use-focus.js +5 -4
  58. package/build/hooks/use-focus.js.map +1 -1
  59. package/build/hooks/use-input.d.ts +40 -1
  60. package/build/hooks/use-input.js +84 -51
  61. package/build/hooks/use-input.js.map +1 -1
  62. package/build/hooks/use-is-screen-reader-enabled.d.ts +2 -1
  63. package/build/hooks/use-is-screen-reader-enabled.js +2 -1
  64. package/build/hooks/use-is-screen-reader-enabled.js.map +1 -1
  65. package/build/hooks/use-paste.d.ts +35 -0
  66. package/build/hooks/use-paste.js +62 -0
  67. package/build/hooks/use-paste.js.map +1 -0
  68. package/build/hooks/use-stderr.d.ts +1 -1
  69. package/build/hooks/use-stderr.js +1 -1
  70. package/build/hooks/use-stdin.d.ts +4 -2
  71. package/build/hooks/use-stdin.js +2 -1
  72. package/build/hooks/use-stdin.js.map +1 -1
  73. package/build/hooks/use-stdout.d.ts +1 -1
  74. package/build/hooks/use-stdout.js +1 -1
  75. package/build/hooks/use-window-size.d.ts +18 -0
  76. package/build/hooks/use-window-size.js +22 -0
  77. package/build/hooks/use-window-size.js.map +1 -0
  78. package/build/index.d.ts +14 -1
  79. package/build/index.js +7 -0
  80. package/build/index.js.map +1 -1
  81. package/build/ink.d.ts +86 -5
  82. package/build/ink.js +581 -80
  83. package/build/ink.js.map +1 -1
  84. package/build/input-parser.d.ts +10 -0
  85. package/build/input-parser.js +194 -0
  86. package/build/input-parser.js.map +1 -0
  87. package/build/kitty-keyboard.d.ts +23 -0
  88. package/build/kitty-keyboard.js +32 -0
  89. package/build/kitty-keyboard.js.map +1 -0
  90. package/build/log-update.d.ts +7 -1
  91. package/build/log-update.js +181 -56
  92. package/build/log-update.js.map +1 -1
  93. package/build/measure-element.d.ts +4 -0
  94. package/build/measure-element.js +4 -0
  95. package/build/measure-element.js.map +1 -1
  96. package/build/measure-text.js +3 -11
  97. package/build/measure-text.js.map +1 -1
  98. package/build/output.d.ts +2 -1
  99. package/build/output.js +62 -58
  100. package/build/output.js.map +1 -1
  101. package/build/parse-keypress.d.ts +9 -3
  102. package/build/parse-keypress.js +283 -13
  103. package/build/parse-keypress.js.map +1 -1
  104. package/build/reconciler.js +57 -37
  105. package/build/reconciler.js.map +1 -1
  106. package/build/render-background.js +2 -0
  107. package/build/render-background.js.map +1 -1
  108. package/build/render-border.d.ts +1 -1
  109. package/build/render-border.js +35 -24
  110. package/build/render-border.js.map +1 -1
  111. package/build/render-node-to-output.d.ts +1 -1
  112. package/build/render-node-to-output.js +35 -18
  113. package/build/render-node-to-output.js.map +1 -1
  114. package/build/render-to-string.d.ts +38 -0
  115. package/build/render-to-string.js +116 -0
  116. package/build/render-to-string.js.map +1 -0
  117. package/build/render.d.ts +91 -3
  118. package/build/render.js +17 -5
  119. package/build/render.js.map +1 -1
  120. package/build/sanitize-ansi.d.ts +2 -0
  121. package/build/sanitize-ansi.js +27 -0
  122. package/build/sanitize-ansi.js.map +1 -0
  123. package/build/squash-text-nodes.js +2 -1
  124. package/build/squash-text-nodes.js.map +1 -1
  125. package/build/styles.d.ts +75 -37
  126. package/build/styles.js +87 -44
  127. package/build/styles.js.map +1 -1
  128. package/build/utils.d.ts +9 -2
  129. package/build/utils.js +18 -3
  130. package/build/utils.js.map +1 -1
  131. package/build/wrap-text.js +7 -14
  132. package/build/wrap-text.js.map +1 -1
  133. package/build/write-synchronized.d.ts +4 -0
  134. package/build/write-synchronized.js +9 -0
  135. package/build/write-synchronized.js.map +1 -0
  136. package/package.json +45 -105
  137. package/readme.md +850 -64
  138. package/build/components/FixedLayout.d.ts +0 -12
  139. package/build/components/FixedLayout.js +0 -19
  140. package/build/components/FixedLayout.js.map +0 -1
  141. package/build/components/VirtualizedList.d.ts +0 -21
  142. package/build/components/VirtualizedList.js +0 -55
  143. package/build/components/VirtualizedList.js.map +0 -1
  144. package/build/hooks/use-mouse.d.ts +0 -15
  145. package/build/hooks/use-mouse.js +0 -121
  146. package/build/hooks/use-mouse.js.map +0 -1
  147. package/build/hooks/use-virtualization.d.ts +0 -19
  148. package/build/hooks/use-virtualization.js +0 -56
  149. package/build/hooks/use-virtualization.js.map +0 -1
@@ -1,12 +0,0 @@
1
- import React, { type ReactNode } from 'react';
2
- export type FixedLayoutProps = {
3
- width: number;
4
- height: number;
5
- header?: ReactNode;
6
- footer?: ReactNode;
7
- headerHeight?: number;
8
- footerHeight?: number;
9
- children: ReactNode;
10
- };
11
- export declare function FixedLayout({ width, height, header, footer, headerHeight, footerHeight, children, }: FixedLayoutProps): React.ReactElement;
12
- export default FixedLayout;
@@ -1,19 +0,0 @@
1
- import React from 'react';
2
- export function FixedLayout({ width, height, header, footer, headerHeight = 0, footerHeight = 0, children, }) {
3
- const contentHeight = height - headerHeight - footerHeight;
4
- return (React.createElement("ink-box", { style: {
5
- flexDirection: 'column',
6
- width,
7
- height,
8
- } },
9
- header && (React.createElement("ink-box", { style: { height: headerHeight, flexShrink: 0 } }, header)),
10
- React.createElement("ink-box", { style: {
11
- height: contentHeight,
12
- flexGrow: 1,
13
- flexShrink: 0,
14
- overflow: 'hidden',
15
- } }, children),
16
- footer && (React.createElement("ink-box", { style: { height: footerHeight, flexShrink: 0 } }, footer))));
17
- }
18
- export default FixedLayout;
19
- //# sourceMappingURL=FixedLayout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FixedLayout.js","sourceRoot":"","sources":["../../src/components/FixedLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuB,MAAM,OAAO,CAAC;AAY5C,MAAM,UAAU,WAAW,CAAC,EAC3B,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,YAAY,GAAG,CAAC,EAChB,YAAY,GAAG,CAAC,EAChB,QAAQ,GACU;IAClB,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;IAE3D,OAAO,CACN,iCACC,KAAK,EAAE;YACN,aAAa,EAAE,QAAQ;YACvB,KAAK;YACL,MAAM;SACN;QAEA,MAAM,IAAI,CACV,iCAAS,KAAK,EAAE,EAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAC,IACnD,MAAM,CACE,CACV;QACD,iCACC,KAAK,EAAE;gBACN,MAAM,EAAE,aAAa;gBACrB,QAAQ,EAAE,CAAC;gBACX,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,QAAQ;aAClB,IAEA,QAAQ,CACA;QACT,MAAM,IAAI,CACV,iCAAS,KAAK,EAAE,EAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAC,IACnD,MAAM,CACE,CACV,CACQ,CACV,CAAC;AACH,CAAC;AAED,eAAe,WAAW,CAAC"}
@@ -1,21 +0,0 @@
1
- import React, { type ReactNode } from 'react';
2
- export type VirtualizedListRef = {
3
- scrollTo: (offset: number) => void;
4
- scrollToIndex: (index: number) => void;
5
- scrollToTop: () => void;
6
- scrollToBottom: () => void;
7
- getScrollOffset: () => number;
8
- };
9
- export type VirtualizedListProps<T> = {
10
- items: T[];
11
- height: number;
12
- itemHeight: number | ((item: T, index: number) => number);
13
- renderItem: (item: T, index: number) => ReactNode;
14
- overscan?: number;
15
- scrollOffset?: number;
16
- onScroll?: (offset: number) => void;
17
- };
18
- export declare const VirtualizedList: <T>(props: VirtualizedListProps<T> & {
19
- ref?: React.Ref<VirtualizedListRef>;
20
- }) => React.ReactElement;
21
- export default VirtualizedList;
@@ -1,55 +0,0 @@
1
- import React, { forwardRef, useImperativeHandle, useState, useCallback, } from 'react';
2
- import { useVirtualization } from '../hooks/use-virtualization.js';
3
- function VirtualizedListInner(props, ref) {
4
- const { items, height, itemHeight, renderItem, overscan = 2, scrollOffset: controlledOffset, onScroll, } = props;
5
- const [internalOffset, setInternalOffset] = useState(0);
6
- const scrollOffset = controlledOffset ?? internalOffset;
7
- const { visibleItems, totalHeight } = useVirtualization({
8
- items,
9
- containerHeight: height,
10
- itemHeight,
11
- scrollOffset,
12
- overscan,
13
- });
14
- const maxScroll = Math.max(0, totalHeight - height);
15
- const scrollTo = useCallback((offset) => {
16
- const clamped = Math.max(0, Math.min(offset, maxScroll));
17
- if (controlledOffset === undefined) {
18
- setInternalOffset(clamped);
19
- }
20
- onScroll?.(clamped);
21
- }, [maxScroll, controlledOffset, onScroll]);
22
- const scrollToIndex = useCallback((index) => {
23
- if (index < 0 || index >= items.length)
24
- return;
25
- let offset = 0;
26
- for (let i = 0; i < index; i++) {
27
- offset +=
28
- typeof itemHeight === 'function'
29
- ? itemHeight(items[i], i)
30
- : itemHeight;
31
- }
32
- scrollTo(offset);
33
- }, [items, itemHeight, scrollTo]);
34
- const scrollToTop = useCallback(() => {
35
- scrollTo(0);
36
- }, [scrollTo]);
37
- const scrollToBottom = useCallback(() => {
38
- scrollTo(maxScroll);
39
- }, [scrollTo, maxScroll]);
40
- useImperativeHandle(ref, () => ({
41
- scrollTo,
42
- scrollToIndex,
43
- scrollToTop,
44
- scrollToBottom,
45
- getScrollOffset: () => scrollOffset,
46
- }), [scrollTo, scrollToIndex, scrollToTop, scrollToBottom, scrollOffset]);
47
- return (React.createElement("ink-box", { style: {
48
- height,
49
- flexDirection: 'column',
50
- overflow: 'hidden',
51
- } }, visibleItems.map(({ item, index }) => (React.createElement("ink-box", { key: index, style: { flexShrink: 0 } }, renderItem(item, index))))));
52
- }
53
- export const VirtualizedList = forwardRef(VirtualizedListInner);
54
- export default VirtualizedList;
55
- //# sourceMappingURL=VirtualizedList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VirtualizedList.js","sourceRoot":"","sources":["../../src/components/VirtualizedList.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- export type MouseEvent = {
2
- x: number;
3
- y: number;
4
- button: 'left' | 'middle' | 'right' | 'none';
5
- type: 'press' | 'release' | 'move' | 'scroll-up' | 'scroll-down';
6
- ctrl: boolean;
7
- shift: boolean;
8
- meta: boolean;
9
- };
10
- type Handler = (event: MouseEvent) => void;
11
- type Options = {
12
- isActive?: boolean;
13
- };
14
- declare const useMouse: (handler: Handler, options?: Options) => void;
15
- export default useMouse;
@@ -1,121 +0,0 @@
1
- import { useEffect, useRef, useCallback } from 'react';
2
- import useStdin from './use-stdin.js';
3
- import useStdout from './use-stdout.js';
4
- const ENABLE_MOUSE_TRACKING = '\x1b[?1000h\x1b[?1002h\x1b[?1006h';
5
- const DISABLE_MOUSE_TRACKING = '\x1b[?1000l\x1b[?1002l\x1b[?1006l';
6
- const DEBUG = true;
7
- function debugLog(...args) {
8
- if (DEBUG) {
9
- // eslint-disable-next-line no-console
10
- console.error('[useMouse]', ...args);
11
- }
12
- }
13
- function parseMouseEvent(data) {
14
- const sgrMatch = data.match(/^\x1b\[<(\d+);(\d+);(\d+)([Mm])$/);
15
- if (sgrMatch) {
16
- const code = Number.parseInt(sgrMatch[1], 10);
17
- const x = Number.parseInt(sgrMatch[2], 10);
18
- const y = Number.parseInt(sgrMatch[3], 10);
19
- const release = sgrMatch[4] === 'm';
20
- const ctrl = (code & 16) !== 0;
21
- const shift = (code & 4) !== 0;
22
- const meta = (code & 8) !== 0;
23
- const buttonCode = code & 3;
24
- let type = release ? 'release' : 'press';
25
- let button = 'none';
26
- if ((code & 64) !== 0) {
27
- type = buttonCode === 0 ? 'scroll-up' : 'scroll-down';
28
- button = 'none';
29
- }
30
- else if ((code & 32) !== 0) {
31
- type = 'move';
32
- button = buttonCode === 0 ? 'left' : buttonCode === 1 ? 'middle' : buttonCode === 2 ? 'right' : 'none';
33
- }
34
- else {
35
- button = buttonCode === 0 ? 'left' : buttonCode === 1 ? 'middle' : buttonCode === 2 ? 'right' : 'none';
36
- }
37
- return { x, y, button, type, ctrl, shift, meta };
38
- }
39
- const legacyMatch = data.match(/^\x1b\[M(.)(.)(.)$/);
40
- if (legacyMatch) {
41
- const code = legacyMatch[1].charCodeAt(0) - 32;
42
- const x = legacyMatch[2].charCodeAt(0) - 32;
43
- const y = legacyMatch[3].charCodeAt(0) - 32;
44
- const ctrl = (code & 16) !== 0;
45
- const shift = (code & 4) !== 0;
46
- const meta = (code & 8) !== 0;
47
- const buttonCode = code & 3;
48
- let type = 'press';
49
- let button = 'none';
50
- if ((code & 64) !== 0) {
51
- type = buttonCode === 0 ? 'scroll-up' : 'scroll-down';
52
- button = 'none';
53
- }
54
- else if (buttonCode === 3) {
55
- type = 'release';
56
- button = 'none';
57
- }
58
- else {
59
- button = buttonCode === 0 ? 'left' : buttonCode === 1 ? 'middle' : buttonCode === 2 ? 'right' : 'none';
60
- }
61
- return { x, y, button, type, ctrl, shift, meta };
62
- }
63
- return null;
64
- }
65
- const useMouse = (handler, options = {}) => {
66
- const { stdin, setRawMode, internal_eventEmitter } = useStdin();
67
- const { stdout } = useStdout();
68
- const enabledRef = useRef(false);
69
- const enableMouseTracking = useCallback(() => {
70
- if (!enabledRef.current) {
71
- debugLog('Enabling mouse tracking');
72
- stdout.write(ENABLE_MOUSE_TRACKING);
73
- enabledRef.current = true;
74
- }
75
- }, [stdout]);
76
- const disableMouseTracking = useCallback(() => {
77
- if (enabledRef.current) {
78
- debugLog('Disabling mouse tracking');
79
- stdout.write(DISABLE_MOUSE_TRACKING);
80
- enabledRef.current = false;
81
- }
82
- }, [stdout]);
83
- useEffect(() => {
84
- if (options.isActive === false) {
85
- disableMouseTracking();
86
- return;
87
- }
88
- setRawMode(true);
89
- enableMouseTracking();
90
- return () => {
91
- disableMouseTracking();
92
- setRawMode(false);
93
- };
94
- }, [options.isActive, setRawMode, enableMouseTracking, disableMouseTracking]);
95
- useEffect(() => {
96
- if (options.isActive === false) {
97
- debugLog('Hook inactive, skipping event listener setup');
98
- return;
99
- }
100
- debugLog('Setting up mouse event listener');
101
- const handleData = (data) => {
102
- debugLog('Received mouse data:', JSON.stringify(data));
103
- const event = parseMouseEvent(data);
104
- if (event) {
105
- debugLog('Parsed mouse event:', event);
106
- handler(event);
107
- }
108
- else {
109
- debugLog('Failed to parse mouse event');
110
- }
111
- };
112
- internal_eventEmitter?.on('mouse', handleData);
113
- debugLog('Listener attached to internal_eventEmitter');
114
- return () => {
115
- debugLog('Removing mouse event listener');
116
- internal_eventEmitter?.removeListener('mouse', handleData);
117
- };
118
- }, [options.isActive, stdin, handler, internal_eventEmitter]);
119
- };
120
- export default useMouse;
121
- //# sourceMappingURL=use-mouse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-mouse.js","sourceRoot":"","sources":["../../src/hooks/use-mouse.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- export type VirtualizationOptions<T> = {
2
- items: T[];
3
- containerHeight: number;
4
- itemHeight: number | ((item: T, index: number) => number);
5
- scrollOffset?: number;
6
- overscan?: number;
7
- };
8
- export type VirtualizationResult<T> = {
9
- visibleItems: Array<{
10
- item: T;
11
- index: number;
12
- offsetY: number;
13
- }>;
14
- totalHeight: number;
15
- startIndex: number;
16
- endIndex: number;
17
- };
18
- export declare function useVirtualization<T>(options: VirtualizationOptions<T>): VirtualizationResult<T>;
19
- export default useVirtualization;
@@ -1,56 +0,0 @@
1
- import { useMemo } from 'react';
2
- export function useVirtualization(options) {
3
- const { items, containerHeight, itemHeight, scrollOffset = 0, overscan = 2, } = options;
4
- return useMemo(() => {
5
- if (items.length === 0 || containerHeight <= 0) {
6
- return {
7
- visibleItems: [],
8
- totalHeight: 0,
9
- startIndex: 0,
10
- endIndex: 0,
11
- };
12
- }
13
- const getItemHeight = (item, index) => {
14
- return typeof itemHeight === 'function' ? itemHeight(item, index) : itemHeight;
15
- };
16
- let totalHeight = 0;
17
- const itemOffsets = [];
18
- for (let i = 0; i < items.length; i++) {
19
- itemOffsets.push(totalHeight);
20
- totalHeight += getItemHeight(items[i], i);
21
- }
22
- let startIndex = 0;
23
- for (let i = 0; i < items.length; i++) {
24
- if (itemOffsets[i] + getItemHeight(items[i], i) > scrollOffset) {
25
- startIndex = i;
26
- break;
27
- }
28
- }
29
- let endIndex = startIndex;
30
- const viewportEnd = scrollOffset + containerHeight;
31
- for (let i = startIndex; i < items.length; i++) {
32
- endIndex = i;
33
- if (itemOffsets[i] >= viewportEnd) {
34
- break;
35
- }
36
- }
37
- startIndex = Math.max(0, startIndex - overscan);
38
- endIndex = Math.min(items.length - 1, endIndex + overscan);
39
- const visibleItems = [];
40
- for (let i = startIndex; i <= endIndex; i++) {
41
- visibleItems.push({
42
- item: items[i],
43
- index: i,
44
- offsetY: itemOffsets[i] - scrollOffset,
45
- });
46
- }
47
- return {
48
- visibleItems,
49
- totalHeight,
50
- startIndex,
51
- endIndex,
52
- };
53
- }, [items, containerHeight, itemHeight, scrollOffset, overscan]);
54
- }
55
- export default useVirtualization;
56
- //# sourceMappingURL=use-virtualization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-virtualization.js","sourceRoot":"","sources":["../../src/hooks/use-virtualization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAiB9B,MAAM,UAAU,iBAAiB,CAChC,OAAiC;IAEjC,MAAM,EACL,KAAK,EACL,eAAe,EACf,UAAU,EACV,YAAY,GAAG,CAAC,EAChB,QAAQ,GAAG,CAAC,GACZ,GAAG,OAAO,CAAC;IAEZ,OAAO,OAAO,CAAC,GAAG,EAAE;QACnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YAChD,OAAO;gBACN,YAAY,EAAE,EAAE;gBAChB,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,CAAC;aACX,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,IAAO,EAAE,KAAa,EAAU,EAAE;YACxD,OAAO,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAChF,CAAC,CAAC;QAEF,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9B,WAAW,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,WAAW,CAAC,CAAC,CAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC;gBAClE,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;YACP,CAAC;QACF,CAAC;QAED,IAAI,QAAQ,GAAG,UAAU,CAAC;QAC1B,MAAM,WAAW,GAAG,YAAY,GAAG,eAAe,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,WAAW,CAAC,CAAC,CAAE,IAAI,WAAW,EAAE,CAAC;gBACpC,MAAM;YACP,CAAC;QACF,CAAC;QAED,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;QAChD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAqD,EAAE,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,YAAY,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE;gBACf,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,WAAW,CAAC,CAAC,CAAE,GAAG,YAAY;aACvC,CAAC,CAAC;QACJ,CAAC;QAED,OAAO;YACN,YAAY;YACZ,WAAW;YACX,UAAU;YACV,QAAQ;SACR,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,eAAe,iBAAiB,CAAC"}