@bitflow/core 0.5.1 → 0.5.2

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 (87) hide show
  1. package/package.json +21 -16
  2. package/CHANGELOG.md +0 -44
  3. package/LICENSE.md +0 -21
  4. package/dist/cjs/bits.d.ts +0 -128
  5. package/dist/cjs/bits.js +0 -16
  6. package/dist/cjs/bits.js.map +0 -1
  7. package/dist/cjs/bitsSchema.d.ts +0 -150
  8. package/dist/cjs/bitsSchema.js +0 -77
  9. package/dist/cjs/bitsSchema.js.map +0 -1
  10. package/dist/cjs/do.d.ts +0 -37
  11. package/dist/cjs/do.js +0 -85
  12. package/dist/cjs/do.js.map +0 -1
  13. package/dist/cjs/doSchema.d.ts +0 -1478
  14. package/dist/cjs/doSchema.js +0 -38
  15. package/dist/cjs/doSchema.js.map +0 -1
  16. package/dist/cjs/findLast.d.ts +0 -1
  17. package/dist/cjs/findLast.js +0 -13
  18. package/dist/cjs/findLast.js.map +0 -1
  19. package/dist/cjs/flow.d.ts +0 -169
  20. package/dist/cjs/flow.js +0 -131
  21. package/dist/cjs/flow.js.map +0 -1
  22. package/dist/cjs/flowSchema.d.ts +0 -2520
  23. package/dist/cjs/flowSchema.js +0 -254
  24. package/dist/cjs/flowSchema.js.map +0 -1
  25. package/dist/cjs/groupBy.d.ts +0 -1
  26. package/dist/cjs/groupBy.js +0 -27
  27. package/dist/cjs/groupBy.js.map +0 -1
  28. package/dist/cjs/index.d.ts +0 -11
  29. package/dist/cjs/index.js +0 -24
  30. package/dist/cjs/index.js.map +0 -1
  31. package/dist/cjs/lerpColor.d.ts +0 -1
  32. package/dist/cjs/lerpColor.js +0 -9
  33. package/dist/cjs/lerpColor.js.map +0 -1
  34. package/dist/cjs/levenshtein.d.ts +0 -1
  35. package/dist/cjs/levenshtein.js +0 -88
  36. package/dist/cjs/levenshtein.js.map +0 -1
  37. package/dist/cjs/uuid.d.ts +0 -1
  38. package/dist/cjs/uuid.js +0 -16
  39. package/dist/cjs/uuid.js.map +0 -1
  40. package/dist/esm/bits.d.ts +0 -128
  41. package/dist/esm/bits.js +0 -9
  42. package/dist/esm/bits.js.map +0 -1
  43. package/dist/esm/bitsSchema.d.ts +0 -150
  44. package/dist/esm/bitsSchema.js +0 -55
  45. package/dist/esm/bitsSchema.js.map +0 -1
  46. package/dist/esm/do.d.ts +0 -37
  47. package/dist/esm/do.js +0 -62
  48. package/dist/esm/do.js.map +0 -1
  49. package/dist/esm/doSchema.d.ts +0 -1478
  50. package/dist/esm/doSchema.js +0 -23
  51. package/dist/esm/doSchema.js.map +0 -1
  52. package/dist/esm/findLast.d.ts +0 -1
  53. package/dist/esm/findLast.js +0 -9
  54. package/dist/esm/findLast.js.map +0 -1
  55. package/dist/esm/flow.d.ts +0 -169
  56. package/dist/esm/flow.js +0 -114
  57. package/dist/esm/flow.js.map +0 -1
  58. package/dist/esm/flowSchema.d.ts +0 -2520
  59. package/dist/esm/flowSchema.js +0 -202
  60. package/dist/esm/flowSchema.js.map +0 -1
  61. package/dist/esm/groupBy.d.ts +0 -1
  62. package/dist/esm/groupBy.js +0 -23
  63. package/dist/esm/groupBy.js.map +0 -1
  64. package/dist/esm/index.d.ts +0 -11
  65. package/dist/esm/index.js +0 -12
  66. package/dist/esm/index.js.map +0 -1
  67. package/dist/esm/lerpColor.d.ts +0 -1
  68. package/dist/esm/lerpColor.js +0 -5
  69. package/dist/esm/lerpColor.js.map +0 -1
  70. package/dist/esm/levenshtein.d.ts +0 -1
  71. package/dist/esm/levenshtein.js +0 -84
  72. package/dist/esm/levenshtein.js.map +0 -1
  73. package/dist/esm/uuid.d.ts +0 -1
  74. package/dist/esm/uuid.js +0 -12
  75. package/dist/esm/uuid.js.map +0 -1
  76. package/dist/types/bits.d.ts +0 -128
  77. package/dist/types/bitsSchema.d.ts +0 -150
  78. package/dist/types/do.d.ts +0 -37
  79. package/dist/types/doSchema.d.ts +0 -1478
  80. package/dist/types/findLast.d.ts +0 -1
  81. package/dist/types/flow.d.ts +0 -169
  82. package/dist/types/flowSchema.d.ts +0 -2520
  83. package/dist/types/groupBy.d.ts +0 -1
  84. package/dist/types/index.d.ts +0 -11
  85. package/dist/types/lerpColor.d.ts +0 -1
  86. package/dist/types/levenshtein.d.ts +0 -1
  87. package/dist/types/uuid.d.ts +0 -1
@@ -1,23 +0,0 @@
1
- import { z } from "zod";
2
- import { TaskAnswerSchema, TaskResultSchema } from "./bitsSchema";
3
- import { makeInteractiveFlowNodeSchema } from "./flowSchema";
4
- export const makeDoBaseTrySchema = (flowNodeSchemas) => z.object({
5
- node: makeInteractiveFlowNodeSchema(flowNodeSchemas),
6
- startDate: z.date(),
7
- try: z.number(),
8
- status: z.string(),
9
- });
10
- export const makeDoStartedTry = (flowNodeSchemas) => makeDoBaseTrySchema(flowNodeSchemas).merge(z.object({
11
- status: z.literal("started"),
12
- }));
13
- export const makeDoFinishedTry = (flowNodeSchemas) => makeDoBaseTrySchema(flowNodeSchemas).merge(z.object({
14
- status: z.literal("finished"),
15
- endDate: z.date(),
16
- answer: TaskAnswerSchema.optional(),
17
- result: TaskResultSchema.optional(),
18
- }));
19
- export const makeDoSkippedTry = (flowNodeSchemas) => makeDoBaseTrySchema(flowNodeSchemas).merge(z.object({
20
- status: z.literal("skipped"),
21
- endDate: z.date(),
22
- }));
23
- //# sourceMappingURL=doSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doSchema.js","sourceRoot":"","sources":["../../src/doSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAa,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAU7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAAqC,EAAE,EAAE,CAC3E,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,6BAA6B,CAAC,eAAe,CAAC;IACpD,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;IACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,eAAqC,EAAE,EAAE,CACxE,mBAAmB,CAAC,eAAe,CAAC,CAAC,KAAK,CACxC,CAAC,CAAC,MAAM,CAAC;IACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CAC7B,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,eAAqC,EAAE,EAAE,CACzE,mBAAmB,CAAC,eAAe,CAAC,CAAC,KAAK,CACxC,CAAC,CAAC,MAAM,CAAC;IACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;IACjB,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACpC,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,eAAqC,EAAE,EAAE,CACxE,mBAAmB,CAAC,eAAe,CAAC,CAAC,KAAK,CACxC,CAAC,CAAC,MAAM,CAAC;IACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;CAClB,CAAC,CACH,CAAC"}
@@ -1 +0,0 @@
1
- export declare function findLast<T>(array: Array<T>, predicate: (value: T, index: number, obj: T[]) => boolean): T | null;
@@ -1,9 +0,0 @@
1
- export function findLast(array, predicate) {
2
- let l = array.length;
3
- while (l--) {
4
- if (predicate(array[l], l, array))
5
- return array[l];
6
- }
7
- return null;
8
- }
9
- //# sourceMappingURL=findLast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"findLast.js","sourceRoot":"","sources":["../../src/findLast.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CACtB,KAAe,EACf,SAAyD;IAEzD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,EAAE;QACV,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;KACpD;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,169 +0,0 @@
1
- declare type NodeBase = {
2
- id: string;
3
- position: {
4
- x: number;
5
- y: number;
6
- };
7
- };
8
- export declare type FlowCheckpointNode = NodeBase & {
9
- type: "checkpoint";
10
- };
11
- export declare type FlowCheckpointPublicNode = Pick<FlowCheckpointNode, "id" | "type">;
12
- export declare type FlowSynchronizeNode = NodeBase & {
13
- type: "synchronize";
14
- data?: {
15
- unlocked: boolean;
16
- };
17
- };
18
- export declare type FlowSynchronizePublicNode = Pick<FlowSynchronizeNode, "id" | "type">;
19
- export declare type FlowTaskNode = NodeBase & {
20
- type: "task";
21
- data: Bitflow.Task;
22
- };
23
- export declare type FlowTaskPublicNode = {
24
- type: "task";
25
- id: string;
26
- data: Pick<Bitflow.Task, "view" | "subtype" | "name">;
27
- };
28
- export declare const isFlowTaskNode: (n: FlowNode) => n is FlowTaskNode;
29
- export declare type FlowStartNode = NodeBase & {
30
- type: "start";
31
- data: Bitflow.Start;
32
- };
33
- export declare type FlowStartPublicNode = Pick<FlowStartNode, "type" | "data" | "id">;
34
- export declare const isFlowStartNode: (n: FlowNode) => n is FlowStartNode;
35
- export declare type FlowEndNode = NodeBase & {
36
- type: "end";
37
- data: Bitflow.End;
38
- };
39
- export declare const isFlowEndNode: (n: FlowNode) => n is FlowEndNode;
40
- export declare type FlowEndPublicNode = Pick<FlowEndNode, "type" | "data" | "id">;
41
- export declare type FlowInputNode = NodeBase & {
42
- type: "input";
43
- data: Bitflow.Input;
44
- };
45
- export declare const isFlowInputNode: (n: FlowNode) => n is FlowInputNode;
46
- export declare type FlowInputPublicNode = Pick<FlowInputNode, "type" | "data" | "id">;
47
- export declare type FlowTitleNode = NodeBase & {
48
- type: "title";
49
- data: Bitflow.Title;
50
- };
51
- export declare const isFlowTitleNode: (n: FlowNode) => n is FlowTitleNode;
52
- export declare type FlowTitlePublicNode = Pick<FlowTitleNode, "type" | "data" | "id">;
53
- export declare type InteractiveFlowNode = FlowTaskNode | FlowStartNode | FlowEndNode | FlowInputNode | FlowTitleNode | FlowCheckpointNode | FlowSynchronizeNode;
54
- export declare type InteractiveFlowPublicNode = FlowTaskPublicNode | FlowStartPublicNode | FlowEndPublicNode | FlowInputPublicNode | FlowTitlePublicNode | FlowCheckpointPublicNode | FlowSynchronizePublicNode;
55
- export declare type EqualCondition = {
56
- type: "equal";
57
- not: boolean;
58
- nodeId: string;
59
- key: string;
60
- value: string | number;
61
- };
62
- export declare type TrueCondition = {
63
- type: "true";
64
- not: boolean;
65
- nodeId: string;
66
- key: string;
67
- };
68
- export declare type GreaterCondition = {
69
- type: "greater";
70
- include: boolean;
71
- not: boolean;
72
- nodeId: string;
73
- key: string;
74
- value: number;
75
- };
76
- export declare type LessCondition = {
77
- type: "less";
78
- include: boolean;
79
- not: boolean;
80
- nodeId: string;
81
- key: string;
82
- value: number;
83
- };
84
- export declare type InCondition = {
85
- type: "in";
86
- not: boolean;
87
- nodeId: string;
88
- key: string;
89
- value: (string | number)[];
90
- };
91
- export declare type PrimitiveCondition = EqualCondition | TrueCondition | GreaterCondition | LessCondition | InCondition;
92
- export declare type AndCondition = {
93
- type: "and";
94
- conditions: PrimitiveCondition[];
95
- };
96
- export declare type OrCondition = {
97
- type: "or";
98
- conditions: PrimitiveCondition[];
99
- };
100
- export declare type Condition = PrimitiveCondition | AndCondition | OrCondition;
101
- export declare type SplitAnswer = {
102
- condition: Condition;
103
- };
104
- export declare type FlowSplitAnswerNode = NodeBase & {
105
- type: "split-answer";
106
- data: SplitAnswer;
107
- };
108
- export declare const isFlowSplitAnswerNode: (n: FlowNode) => n is FlowSplitAnswerNode;
109
- export declare type SplitResult = {
110
- condition: Condition;
111
- };
112
- export declare type FlowSplitResultNode = NodeBase & {
113
- type: "split-result";
114
- data: SplitResult;
115
- };
116
- export declare const isFlowSplitResultNode: (n: FlowNode) => n is FlowSplitResultNode;
117
- export declare type SplitPoints = {
118
- points: number;
119
- };
120
- export declare type FlowSplitPointsNode = NodeBase & {
121
- type: "split-points";
122
- data: SplitPoints;
123
- };
124
- export declare const isFlowSplitPointsNode: (n: FlowNode) => n is FlowSplitPointsNode;
125
- export declare type PortalInput = {
126
- portal: string;
127
- description: string;
128
- };
129
- export declare type PortalOutput = {
130
- portal: string;
131
- description: string;
132
- };
133
- export declare type FlowPortalInputNode = NodeBase & {
134
- type: "portal-input";
135
- data: PortalInput;
136
- };
137
- export declare const isFlowPortalInputNode: (n: FlowNode) => n is FlowPortalInputNode;
138
- export declare type FlowPortalOutputNode = NodeBase & {
139
- type: "portal-output";
140
- data: PortalOutput;
141
- };
142
- export declare const isFlowPortalOutputNode: (n: FlowNode) => n is FlowPortalOutputNode;
143
- export declare type FlowSplitRandomNode = NodeBase & {
144
- type: "split-random";
145
- };
146
- export declare const isFlowSplitRandomNode: (n: FlowNode) => n is FlowSplitRandomNode;
147
- export declare type ControlFlowNode = FlowSplitAnswerNode | FlowSplitResultNode | FlowSplitPointsNode | FlowSplitRandomNode | FlowPortalInputNode | FlowPortalOutputNode;
148
- export declare const isControlFlowNode: (n: FlowNode) => n is ControlFlowNode;
149
- export declare type FlowNode = InteractiveFlowNode | ControlFlowNode;
150
- export declare const isInteractiveFlowNode: (n: FlowNode) => n is InteractiveFlowNode;
151
- export declare type FlowEdge = {
152
- id: string;
153
- source: string;
154
- sourceHandle?: "a" | "b" | "c" | "d" | "e" | "f";
155
- target: string;
156
- };
157
- export declare type Flow = {
158
- name: string;
159
- description: string;
160
- language: "en" | "de" | "fr" | "es" | "nl" | "pt" | "tr" | "it";
161
- visibility: "public" | "private" | "unlisted";
162
- draft: boolean;
163
- nodes: FlowNode[];
164
- edges: FlowEdge[];
165
- zoom?: number;
166
- position?: [number, number];
167
- };
168
- export declare const extractInteractiveFlowPublicNode: (n: InteractiveFlowNode) => InteractiveFlowPublicNode;
169
- export {};
package/dist/esm/flow.js DELETED
@@ -1,114 +0,0 @@
1
- export const isFlowTaskNode = (n) => {
2
- if (n.type === "task") {
3
- return true;
4
- }
5
- return false;
6
- };
7
- export const isFlowStartNode = (n) => {
8
- if (n.type === "start") {
9
- return true;
10
- }
11
- return false;
12
- };
13
- export const isFlowEndNode = (n) => {
14
- if (n.type === "end") {
15
- return true;
16
- }
17
- return false;
18
- };
19
- export const isFlowInputNode = (n) => {
20
- if (n.type === "input") {
21
- return true;
22
- }
23
- return false;
24
- };
25
- export const isFlowTitleNode = (n) => {
26
- if (n.type === "title") {
27
- return true;
28
- }
29
- return false;
30
- };
31
- export const isFlowSplitAnswerNode = (n) => {
32
- return n.type === "split-answer";
33
- };
34
- export const isFlowSplitResultNode = (n) => {
35
- return n.type === "split-result";
36
- };
37
- export const isFlowSplitPointsNode = (n) => {
38
- return n.type === "split-points";
39
- };
40
- export const isFlowPortalInputNode = (n) => {
41
- return n.type === "portal-input";
42
- };
43
- export const isFlowPortalOutputNode = (n) => {
44
- return n.type === "portal-output";
45
- };
46
- export const isFlowSplitRandomNode = (n) => {
47
- return n.type === "split-random";
48
- };
49
- export const isControlFlowNode = (n) => {
50
- return (n.type === "portal-input" ||
51
- n.type === "portal-output" ||
52
- n.type === "split-answer" ||
53
- n.type === "split-points" ||
54
- n.type === "split-random" ||
55
- n.type === "split-result");
56
- };
57
- export const isInteractiveFlowNode = (n) => {
58
- if (n.type === "checkpoint" ||
59
- n.type === "end" ||
60
- n.type === "input" ||
61
- n.type === "start" ||
62
- n.type === "synchronize" ||
63
- n.type === "task" ||
64
- n.type === "title") {
65
- return true;
66
- }
67
- return false;
68
- };
69
- export const extractInteractiveFlowPublicNode = (n) => {
70
- if (n.type === "task") {
71
- return {
72
- id: n.id,
73
- type: n.type,
74
- data: {
75
- name: n.data.name,
76
- subtype: n.data.subtype,
77
- view: n.data.view,
78
- },
79
- };
80
- }
81
- else if (n.type === "synchronize" || n.type === "checkpoint") {
82
- return {
83
- id: n.id,
84
- type: n.type,
85
- };
86
- }
87
- else if (n.type === "input") {
88
- return {
89
- id: n.id,
90
- type: n.type,
91
- data: n.data,
92
- };
93
- }
94
- else if (n.type === "end") {
95
- return {
96
- id: n.id,
97
- type: n.type,
98
- data: n.data,
99
- };
100
- }
101
- else if (n.type === "start") {
102
- return {
103
- id: n.id,
104
- type: n.type,
105
- data: n.data,
106
- };
107
- }
108
- return {
109
- id: n.id,
110
- type: n.type,
111
- data: n.data,
112
- };
113
- };
114
- //# sourceMappingURL=flow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/flow.ts"],"names":[],"mappings":"AAmCA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAW,EAAqB,EAAE;IAC/D,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;QACrB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAW,EAAsB,EAAE;IACjE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAW,EAAoB,EAAE;IAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;QACpB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAW,EAAsB,EAAE;IACjE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAW,EAAsB,EAAE;IACjE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AA4FF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,CAAW,EACe,EAAE;IAC5B,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;AACnC,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,CAAW,EACe,EAAE;IAC5B,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;AACnC,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,CAAW,EACe,EAAE;IAC5B,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;AACnC,CAAC,CAAC;AAiBF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,CAAW,EACe,EAAE;IAC5B,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;AACnC,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,CAAW,EACgB,EAAE;IAC7B,OAAO,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;AACpC,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,CAAW,EACe,EAAE;IAC5B,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;AACnC,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAW,EAAwB,EAAE;IACrE,OAAO,CACL,CAAC,CAAC,IAAI,KAAK,cAAc;QACzB,CAAC,CAAC,IAAI,KAAK,eAAe;QAC1B,CAAC,CAAC,IAAI,KAAK,cAAc;QACzB,CAAC,CAAC,IAAI,KAAK,cAAc;QACzB,CAAC,CAAC,IAAI,KAAK,cAAc;QACzB,CAAC,CAAC,IAAI,KAAK,cAAc,CAC1B,CAAC;AACJ,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,CAAW,EACe,EAAE;IAC5B,IACE,CAAC,CAAC,IAAI,KAAK,YAAY;QACvB,CAAC,CAAC,IAAI,KAAK,KAAK;QAChB,CAAC,CAAC,IAAI,KAAK,OAAO;QAClB,CAAC,CAAC,IAAI,KAAK,OAAO;QAClB,CAAC,CAAC,IAAI,KAAK,aAAa;QACxB,CAAC,CAAC,IAAI,KAAK,MAAM;QACjB,CAAC,CAAC,IAAI,KAAK,OAAO,EAClB;QACA,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAqBF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,CAAsB,EACK,EAAE;IAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;QACrB,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE;gBACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;gBACjB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO;gBACvB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;aAClB;SACF,CAAC;KACH;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE;QAC9D,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC;KACH;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;QAC7B,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC;KACH;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;QAC3B,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC;KACH;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;QAC7B,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC;KACH;IACD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC;AACJ,CAAC,CAAC"}