@miguelduran14/knowflow 0.1.1

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 (192) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +182 -0
  3. package/dist/advisories.d.ts +16 -0
  4. package/dist/advisories.js +364 -0
  5. package/dist/advisories.js.map +1 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +104 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/copy-resolver.d.ts +22 -0
  10. package/dist/copy-resolver.js +74 -0
  11. package/dist/copy-resolver.js.map +1 -0
  12. package/dist/dataflow.d.ts +2 -0
  13. package/dist/dataflow.js +88 -0
  14. package/dist/dataflow.js.map +1 -0
  15. package/dist/dossier.d.ts +20 -0
  16. package/dist/dossier.js +331 -0
  17. package/dist/dossier.js.map +1 -0
  18. package/dist/explain/claude.d.ts +14 -0
  19. package/dist/explain/claude.js +91 -0
  20. package/dist/explain/claude.js.map +1 -0
  21. package/dist/explain/explain.d.ts +72 -0
  22. package/dist/explain/explain.js +126 -0
  23. package/dist/explain/explain.js.map +1 -0
  24. package/dist/explain/facts.d.ts +23 -0
  25. package/dist/explain/facts.js +266 -0
  26. package/dist/explain/facts.js.map +1 -0
  27. package/dist/explain/fake.d.ts +14 -0
  28. package/dist/explain/fake.js +27 -0
  29. package/dist/explain/fake.js.map +1 -0
  30. package/dist/explain/openai.d.ts +42 -0
  31. package/dist/explain/openai.js +102 -0
  32. package/dist/explain/openai.js.map +1 -0
  33. package/dist/explain/provider.d.ts +19 -0
  34. package/dist/explain/provider.js +2 -0
  35. package/dist/explain/provider.js.map +1 -0
  36. package/dist/explain/sse.d.ts +10 -0
  37. package/dist/explain/sse.js +44 -0
  38. package/dist/explain/sse.js.map +1 -0
  39. package/dist/flow-parser.d.ts +10 -0
  40. package/dist/flow-parser.js +503 -0
  41. package/dist/flow-parser.js.map +1 -0
  42. package/dist/glossary.d.ts +54 -0
  43. package/dist/glossary.js +340 -0
  44. package/dist/glossary.js.map +1 -0
  45. package/dist/index.d.ts +17 -0
  46. package/dist/index.js +16 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/inventory.d.ts +7 -0
  49. package/dist/inventory.js +453 -0
  50. package/dist/inventory.js.map +1 -0
  51. package/dist/lines.d.ts +15 -0
  52. package/dist/lines.js +53 -0
  53. package/dist/lines.js.map +1 -0
  54. package/dist/linker.d.ts +17 -0
  55. package/dist/linker.js +56 -0
  56. package/dist/linker.js.map +1 -0
  57. package/dist/mermaid.d.ts +27 -0
  58. package/dist/mermaid.js +133 -0
  59. package/dist/mermaid.js.map +1 -0
  60. package/dist/parser.d.ts +19 -0
  61. package/dist/parser.js +442 -0
  62. package/dist/parser.js.map +1 -0
  63. package/dist/pic.d.ts +29 -0
  64. package/dist/pic.js +197 -0
  65. package/dist/pic.js.map +1 -0
  66. package/dist/references.d.ts +24 -0
  67. package/dist/references.js +906 -0
  68. package/dist/references.js.map +1 -0
  69. package/dist/source-lines.d.ts +56 -0
  70. package/dist/source-lines.js +114 -0
  71. package/dist/source-lines.js.map +1 -0
  72. package/dist/types.d.ts +499 -0
  73. package/dist/types.js +2 -0
  74. package/dist/types.js.map +1 -0
  75. package/gui/dist/assets/ChainCanvas-C37KyhnE.js +1 -0
  76. package/gui/dist/assets/FlowCanvas-BRklWBCp.js +3 -0
  77. package/gui/dist/assets/RobotProfessor-BtTDTBDq.js +4220 -0
  78. package/gui/dist/assets/fira-code-cyrillic-400-normal-UC0NFL4U.woff2 +0 -0
  79. package/gui/dist/assets/fira-code-cyrillic-400-normal-dc1q3VD7.woff +0 -0
  80. package/gui/dist/assets/fira-code-cyrillic-500-normal-Bu7VCL72.woff +0 -0
  81. package/gui/dist/assets/fira-code-cyrillic-500-normal-CX35h3Mg.woff2 +0 -0
  82. package/gui/dist/assets/fira-code-cyrillic-600-normal-BD56RyRT.woff +0 -0
  83. package/gui/dist/assets/fira-code-cyrillic-600-normal-CPRdbepc.woff2 +0 -0
  84. package/gui/dist/assets/fira-code-cyrillic-ext-400-normal-Buh61xzB.woff +0 -0
  85. package/gui/dist/assets/fira-code-cyrillic-ext-400-normal-txZ9Fk_1.woff2 +0 -0
  86. package/gui/dist/assets/fira-code-cyrillic-ext-500-normal-CYRspHgm.woff2 +0 -0
  87. package/gui/dist/assets/fira-code-cyrillic-ext-500-normal-CwtLmSFD.woff +0 -0
  88. package/gui/dist/assets/fira-code-cyrillic-ext-600-normal-B9wE0zmr.woff2 +0 -0
  89. package/gui/dist/assets/fira-code-cyrillic-ext-600-normal-DldcyWhZ.woff +0 -0
  90. package/gui/dist/assets/fira-code-greek-400-normal-B2Gh_Y8s.woff2 +0 -0
  91. package/gui/dist/assets/fira-code-greek-400-normal-DobhaxvF.woff +0 -0
  92. package/gui/dist/assets/fira-code-greek-500-normal-CVO0IRNt.woff2 +0 -0
  93. package/gui/dist/assets/fira-code-greek-500-normal-DEXIWiey.woff +0 -0
  94. package/gui/dist/assets/fira-code-greek-600-normal-D_h3X2X5.woff +0 -0
  95. package/gui/dist/assets/fira-code-greek-600-normal-Dxp52_By.woff2 +0 -0
  96. package/gui/dist/assets/fira-code-greek-ext-400-normal-DR7mBgIM.woff2 +0 -0
  97. package/gui/dist/assets/fira-code-greek-ext-400-normal-DSPUheWg.woff +0 -0
  98. package/gui/dist/assets/fira-code-greek-ext-500-normal-BO3iq16n.woff2 +0 -0
  99. package/gui/dist/assets/fira-code-greek-ext-500-normal-CMiNLXER.woff +0 -0
  100. package/gui/dist/assets/fira-code-greek-ext-600-normal-C-cQDoOk.woff +0 -0
  101. package/gui/dist/assets/fira-code-greek-ext-600-normal-DtBpFRLc.woff2 +0 -0
  102. package/gui/dist/assets/fira-code-latin-400-normal-C-QZfXAs.woff +0 -0
  103. package/gui/dist/assets/fira-code-latin-400-normal-DGosTW8U.woff2 +0 -0
  104. package/gui/dist/assets/fira-code-latin-500-normal-B6gioGu8.woff2 +0 -0
  105. package/gui/dist/assets/fira-code-latin-500-normal-aMLC2AMm.woff +0 -0
  106. package/gui/dist/assets/fira-code-latin-600-normal-BmSSHshu.woff +0 -0
  107. package/gui/dist/assets/fira-code-latin-600-normal-CvYZpPHg.woff2 +0 -0
  108. package/gui/dist/assets/fira-code-latin-ext-400-normal-DG73JjOf.woff +0 -0
  109. package/gui/dist/assets/fira-code-latin-ext-400-normal-KSMg0QLl.woff2 +0 -0
  110. package/gui/dist/assets/fira-code-latin-ext-500-normal-CaANqXjI.woff +0 -0
  111. package/gui/dist/assets/fira-code-latin-ext-500-normal-Crd9e_oI.woff2 +0 -0
  112. package/gui/dist/assets/fira-code-latin-ext-600-normal-0PFQL1eg.woff +0 -0
  113. package/gui/dist/assets/fira-code-latin-ext-600-normal-Cb7jxoAi.woff2 +0 -0
  114. package/gui/dist/assets/fira-code-symbols2-400-normal-_QEZCEwe.woff +0 -0
  115. package/gui/dist/assets/fira-code-symbols2-500-normal-DwsgbIjQ.woff +0 -0
  116. package/gui/dist/assets/fira-code-symbols2-600-normal-Dvq6IQE5.woff +0 -0
  117. package/gui/dist/assets/fira-sans-cyrillic-300-normal-BO7tmGom.woff2 +0 -0
  118. package/gui/dist/assets/fira-sans-cyrillic-300-normal-BtNmWoqn.woff +0 -0
  119. package/gui/dist/assets/fira-sans-cyrillic-400-normal-CKu2TFQr.woff2 +0 -0
  120. package/gui/dist/assets/fira-sans-cyrillic-400-normal-D9eUeF-O.woff +0 -0
  121. package/gui/dist/assets/fira-sans-cyrillic-500-normal-CXfldnQ8.woff2 +0 -0
  122. package/gui/dist/assets/fira-sans-cyrillic-500-normal-Daski1k2.woff +0 -0
  123. package/gui/dist/assets/fira-sans-cyrillic-600-normal-CJ5P9t7t.woff +0 -0
  124. package/gui/dist/assets/fira-sans-cyrillic-600-normal-JSBvCpTs.woff2 +0 -0
  125. package/gui/dist/assets/fira-sans-cyrillic-700-normal-Bl-HczEO.woff2 +0 -0
  126. package/gui/dist/assets/fira-sans-cyrillic-700-normal-KyW5QH4H.woff +0 -0
  127. package/gui/dist/assets/fira-sans-cyrillic-ext-300-normal-BRn8Tsce.woff2 +0 -0
  128. package/gui/dist/assets/fira-sans-cyrillic-ext-300-normal-DOtRq9zH.woff +0 -0
  129. package/gui/dist/assets/fira-sans-cyrillic-ext-400-normal-Cycyekte.woff2 +0 -0
  130. package/gui/dist/assets/fira-sans-cyrillic-ext-400-normal-Dd5dApAy.woff +0 -0
  131. package/gui/dist/assets/fira-sans-cyrillic-ext-500-normal-Cixivk4R.woff +0 -0
  132. package/gui/dist/assets/fira-sans-cyrillic-ext-500-normal-Dkk5LlrU.woff2 +0 -0
  133. package/gui/dist/assets/fira-sans-cyrillic-ext-600-normal-BKgjRriM.woff +0 -0
  134. package/gui/dist/assets/fira-sans-cyrillic-ext-600-normal-CE6oUZE1.woff2 +0 -0
  135. package/gui/dist/assets/fira-sans-cyrillic-ext-700-normal-BfO9TR-w.woff2 +0 -0
  136. package/gui/dist/assets/fira-sans-cyrillic-ext-700-normal-Gcpdxicj.woff +0 -0
  137. package/gui/dist/assets/fira-sans-greek-300-normal-D3JfF3y9.woff2 +0 -0
  138. package/gui/dist/assets/fira-sans-greek-300-normal-DSgcXl_1.woff +0 -0
  139. package/gui/dist/assets/fira-sans-greek-400-normal-BFCFncbp.woff2 +0 -0
  140. package/gui/dist/assets/fira-sans-greek-400-normal-DQ8sF22y.woff +0 -0
  141. package/gui/dist/assets/fira-sans-greek-500-normal-C9KT8sAy.woff +0 -0
  142. package/gui/dist/assets/fira-sans-greek-500-normal-Cy-TUuxE.woff2 +0 -0
  143. package/gui/dist/assets/fira-sans-greek-600-normal-BlqpLOpF.woff2 +0 -0
  144. package/gui/dist/assets/fira-sans-greek-600-normal-DfHu91YF.woff +0 -0
  145. package/gui/dist/assets/fira-sans-greek-700-normal-BVfcrbV7.woff2 +0 -0
  146. package/gui/dist/assets/fira-sans-greek-700-normal-CJu31rC4.woff +0 -0
  147. package/gui/dist/assets/fira-sans-greek-ext-300-normal-CodlqOxk.woff +0 -0
  148. package/gui/dist/assets/fira-sans-greek-ext-300-normal-DVDwbKuK.woff2 +0 -0
  149. package/gui/dist/assets/fira-sans-greek-ext-400-normal-ByG7UNQ2.woff2 +0 -0
  150. package/gui/dist/assets/fira-sans-greek-ext-400-normal-ClCfNE6D.woff +0 -0
  151. package/gui/dist/assets/fira-sans-greek-ext-500-normal-Bem4H9fH.woff +0 -0
  152. package/gui/dist/assets/fira-sans-greek-ext-500-normal-nq-cjB3m.woff2 +0 -0
  153. package/gui/dist/assets/fira-sans-greek-ext-600-normal-DPxZoeHL.woff +0 -0
  154. package/gui/dist/assets/fira-sans-greek-ext-600-normal-fS0evUH3.woff2 +0 -0
  155. package/gui/dist/assets/fira-sans-greek-ext-700-normal-C1m6bE4Q.woff2 +0 -0
  156. package/gui/dist/assets/fira-sans-greek-ext-700-normal-C8J5qYMq.woff +0 -0
  157. package/gui/dist/assets/fira-sans-latin-300-normal-B2LrTgQS.woff2 +0 -0
  158. package/gui/dist/assets/fira-sans-latin-300-normal-Dwkm-oZ7.woff +0 -0
  159. package/gui/dist/assets/fira-sans-latin-400-normal-66xCkunx.woff +0 -0
  160. package/gui/dist/assets/fira-sans-latin-400-normal-a0AnQzuD.woff2 +0 -0
  161. package/gui/dist/assets/fira-sans-latin-500-normal-Bkfzcwmr.woff +0 -0
  162. package/gui/dist/assets/fira-sans-latin-500-normal-Bvbxc8ch.woff2 +0 -0
  163. package/gui/dist/assets/fira-sans-latin-600-normal-CXKlxLG9.woff2 +0 -0
  164. package/gui/dist/assets/fira-sans-latin-600-normal-DtSgd811.woff +0 -0
  165. package/gui/dist/assets/fira-sans-latin-700-normal-CRhwpWTq.woff2 +0 -0
  166. package/gui/dist/assets/fira-sans-latin-700-normal-DgqLm3Fi.woff +0 -0
  167. package/gui/dist/assets/fira-sans-latin-ext-300-normal-CAROBYR0.woff +0 -0
  168. package/gui/dist/assets/fira-sans-latin-ext-300-normal-GNF4Ac3G.woff2 +0 -0
  169. package/gui/dist/assets/fira-sans-latin-ext-400-normal-BCUwhuGB.woff +0 -0
  170. package/gui/dist/assets/fira-sans-latin-ext-400-normal-BLG_mAEf.woff2 +0 -0
  171. package/gui/dist/assets/fira-sans-latin-ext-500-normal-CFRf4jcC.woff +0 -0
  172. package/gui/dist/assets/fira-sans-latin-ext-500-normal-OO1QnNpY.woff2 +0 -0
  173. package/gui/dist/assets/fira-sans-latin-ext-600-normal-DLMQsaV4.woff +0 -0
  174. package/gui/dist/assets/fira-sans-latin-ext-600-normal-DTQBTt1m.woff2 +0 -0
  175. package/gui/dist/assets/fira-sans-latin-ext-700-normal-cfTxGFzJ.woff +0 -0
  176. package/gui/dist/assets/fira-sans-latin-ext-700-normal-g2Yrd4J5.woff2 +0 -0
  177. package/gui/dist/assets/fira-sans-vietnamese-300-normal-BO7He0nF.woff2 +0 -0
  178. package/gui/dist/assets/fira-sans-vietnamese-300-normal-CeyOCBN-.woff +0 -0
  179. package/gui/dist/assets/fira-sans-vietnamese-400-normal-DUVG35gE.woff +0 -0
  180. package/gui/dist/assets/fira-sans-vietnamese-400-normal-ljDTQFsx.woff2 +0 -0
  181. package/gui/dist/assets/fira-sans-vietnamese-500-normal-ChEXCnJy.woff2 +0 -0
  182. package/gui/dist/assets/fira-sans-vietnamese-500-normal-UV7M6ot_.woff +0 -0
  183. package/gui/dist/assets/fira-sans-vietnamese-600-normal-Bxjaclsw.woff +0 -0
  184. package/gui/dist/assets/fira-sans-vietnamese-600-normal-Dh2KAvU8.woff2 +0 -0
  185. package/gui/dist/assets/fira-sans-vietnamese-700-normal-DFi88MGY.woff +0 -0
  186. package/gui/dist/assets/fira-sans-vietnamese-700-normal-j5oLGLJY.woff2 +0 -0
  187. package/gui/dist/assets/index-CwQzep9r.js +413 -0
  188. package/gui/dist/assets/index-DUFjnEFT.css +1 -0
  189. package/gui/dist/assets/theme-BnuhLJ6X.css +1 -0
  190. package/gui/dist/assets/theme-G7EkTZY2.js +30 -0
  191. package/gui/dist/index.html +13 -0
  192. package/package.json +62 -0
@@ -0,0 +1,499 @@
1
+ /** Tipo interpretado de un campo COBOL */
2
+ export type DataType = 'alphanumeric' | 'numeric'
3
+ /**
4
+ * PIC con caracteres de edición (Z, *, +, -, coma, punto, barra, B, 0,
5
+ * CR, DB): campo de presentación, no de cálculo. Ocupa un byte por cada
6
+ * posición de la PIC, incluidos los caracteres de inserción.
7
+ */
8
+ | 'numeric-edited' | 'packed-decimal' | 'binary' | 'float-single' | 'float-double'
9
+ /** USAGE POINTER / PROCEDURE-POINTER / FUNCTION-POINTER */
10
+ | 'pointer'
11
+ /** USAGE INDEX */
12
+ | 'index' | 'group'
13
+ /** Hueco dejado por un COPY/EXEC SQL INCLUDE cuyo member no se aportó */
14
+ | 'unresolved-copy';
15
+ /** Un valor de condición (nivel 88) asociado a su campo padre */
16
+ export interface ConditionValue {
17
+ /** Nombre del nivel 88 */
18
+ name: string;
19
+ /** Literales/tokens tal como aparecen tras VALUE(S) — incluye THRU sin resolver como rango */
20
+ values: string[];
21
+ }
22
+ /**
23
+ * Un nivel 66 RENAMES: nombre alternativo para un tramo contiguo de campos
24
+ * del registro. No es almacenamiento nuevo — como REDEFINES, es otra vista
25
+ * de bytes que ya existen — así que no vive en la jerarquía de `children`.
26
+ */
27
+ export interface RenamesGroup {
28
+ /** Nombre del nivel 66 */
29
+ name: string;
30
+ /** Primer campo del tramo (RENAMES <from>) */
31
+ from: string;
32
+ /** Último campo del tramo (THRU <thru>), si el rango lo tiene */
33
+ thru?: string | undefined;
34
+ /**
35
+ * Offset y longitud resueltos contra el registro. Ausentes si algún
36
+ * extremo del rango no aparece en el fuente aportado (p. ej. está en un
37
+ * copybook que falta): no se estiman (ADR-0003).
38
+ */
39
+ offset?: number | undefined;
40
+ lengthInBytes?: number | undefined;
41
+ }
42
+ /** OCCURS ... DEPENDING ON — reconocido y marcado como variable, sin resolver numéricamente */
43
+ export interface OccursDepending {
44
+ min: number;
45
+ max?: number | undefined;
46
+ dependingOn: string;
47
+ }
48
+ /**
49
+ * Sección de la DATA DIVISION de la que viene un registro 01/77. Responde
50
+ * a "¿qué recibe el programa por parámetro?" (LINKAGE) frente a lo que es
51
+ * suyo (WORKING-STORAGE) o de un fichero (FILE). Ausente cuando el fuente
52
+ * es un copybook suelto sin cabecera de sección: no se adivina.
53
+ */
54
+ export type DataSection = 'FILE' | 'WORKING-STORAGE' | 'LOCAL-STORAGE' | 'LINKAGE';
55
+ /** Campo individual del esquema */
56
+ export interface SchemaField {
57
+ /** Número de nivel COBOL (01–49, 77) */
58
+ level: number;
59
+ /** Nombre del campo (DATA-NAME) */
60
+ name: string;
61
+ /** Tipo interpretado */
62
+ type: DataType;
63
+ /**
64
+ * Sección de la DATA DIVISION del registro. Solo en los 01/77 raíz —
65
+ * los hijos heredan la del suyo. Ausente si el fuente no traía cabecera
66
+ * de sección (copybook suelto).
67
+ */
68
+ dataSection?: DataSection | undefined;
69
+ /**
70
+ * Valor inicial declarado (cláusula VALUE), verbatim del fuente:
71
+ * `'ABC'`, `ZEROS`, `42`, `ALL '*'`. Ausente si el campo no lo lleva.
72
+ * En un 88 no aparece aquí — sus valores van en `conditionValues`.
73
+ */
74
+ value?: string | undefined;
75
+ /** Cláusula PIC original, p. ej. "S9(7)V99". Ausente en groups y en COMP-1/COMP-2 sin PIC */
76
+ picture?: string | undefined;
77
+ /** USAGE explícito normalizado (COMP-3, COMP, COMP-1, COMP-2, BINARY, PACKED-DECIMAL). Ausente = DISPLAY */
78
+ usage?: string | undefined;
79
+ /** Longitud en memoria, en bytes */
80
+ lengthInBytes: number;
81
+ /** Desplazamiento desde el inicio del registro 01, en bytes */
82
+ offset: number;
83
+ /** Hijos directos (para ítems de grupo) */
84
+ children: SchemaField[];
85
+ /** Nombre del campo que este campo redefine — comparte offset, no consume memoria nueva */
86
+ redefines?: string | undefined;
87
+ /** Repetición OCCURS fija */
88
+ occurs?: number | undefined;
89
+ /** OCCURS ... DEPENDING ON */
90
+ occursDepending?: OccursDepending | undefined;
91
+ /** Niveles 88 asociados a este campo. NUNCA aparecen en `children` */
92
+ conditionValues?: ConditionValue[] | undefined;
93
+ /**
94
+ * Niveles 66 RENAMES declarados sobre este registro. Como los 88, NUNCA
95
+ * aparecen en `children`: no son almacenamiento nuevo.
96
+ */
97
+ renamesGroups?: RenamesGroup[] | undefined;
98
+ /**
99
+ * El campo lleva SYNCHRONIZED, o es un POINTER/INDEX (que van alineados
100
+ * de forma implícita). Su offset se ha redondeado al alto hasta el
101
+ * límite que le toca, y los bytes de relleno que quedan delante no
102
+ * pertenecen a ningún campo.
103
+ */
104
+ synchronized?: boolean | undefined;
105
+ /** Solo si type === 'unresolved-copy': el member de COPY/EXEC SQL INCLUDE que faltó */
106
+ unresolvedCopyMember?: string | undefined;
107
+ /**
108
+ * true si este offset (o el de un campo anterior en el mismo nivel, o el
109
+ * tamaño de un grupo que lo contiene) descansa sobre un hueco sin
110
+ * resolver — el número sigue calculado para no romper la aritmética,
111
+ * pero no es un hecho verificado (ADR-0003).
112
+ */
113
+ offsetUnknown?: boolean | undefined;
114
+ }
115
+ /** Resultado estructural del parser */
116
+ export interface ParseResult {
117
+ /** Registros de nivel 01 (o 77) extraídos de la DATA DIVISION */
118
+ records: SchemaField[];
119
+ /** Members de COPY/EXEC SQL INCLUDE no resueltos — lo que falta para completar el esquema */
120
+ missingCopybooks: string[];
121
+ }
122
+ /** Un párrafo o sección de la PROCEDURE DIVISION, en orden de fuente */
123
+ export interface FlowParagraph {
124
+ name: string;
125
+ kind: 'paragraph' | 'section';
126
+ /** Sección a la que pertenece el párrafo, si el programa usa secciones */
127
+ section?: string | undefined;
128
+ /**
129
+ * Línea 1-based de la cabecera en el fuente. Permite anclar cada párrafo
130
+ * a un punto concreto del código para verificarlo. Ausente en el nodo
131
+ * de entrada implícito, que no existe en el fuente.
132
+ */
133
+ line?: number | undefined;
134
+ /** Contiene STOP RUN, GOBACK o EXIT PROGRAM */
135
+ terminates?: boolean | undefined;
136
+ /**
137
+ * El párrafo no contiene ninguna transferencia de control incondicional
138
+ * (STOP RUN, GOBACK, EXIT PROGRAM o GO TO fuera de toda rama), así que
139
+ * quien llegue aquí ejecutando en línea sigue en el párrafo siguiente.
140
+ * Ausente en el último párrafo, que no tiene siguiente.
141
+ */
142
+ fallsThrough?: boolean | undefined;
143
+ /**
144
+ * El párrafo está dentro de DECLARATIVES: no se ejecuta en línea, lo
145
+ * invoca el runtime ante la condición que declara su USE.
146
+ */
147
+ inDeclaratives?: boolean | undefined;
148
+ /**
149
+ * Nodo de entrada sintético: agrupa las sentencias que aparecen antes
150
+ * del primer párrafo declarado. No existe como párrafo en el fuente.
151
+ */
152
+ implicit?: boolean | undefined;
153
+ }
154
+ export type FlowEdgeKind = 'perform' | 'call' | 'goto'
155
+ /**
156
+ * Caída natural: el párrafo anterior no acaba en transferencia de
157
+ * control, así que el que llega por orden de fuente sigue en el
158
+ * siguiente. Ocurre de verdad cuando se llega al párrafo ejecutando en
159
+ * línea; si se llegó por PERFORM, al final del rango se vuelve al
160
+ * llamador. Eso depende de la ejecución, no del fuente, así que la
161
+ * arista dice lo que sí es verificable: aquí no hay nada que corte.
162
+ */
163
+ | 'fall-through'
164
+ /** SORT/MERGE ... INPUT PROCEDURE IS ... */
165
+ | 'sort-input'
166
+ /** SORT/MERGE ... OUTPUT PROCEDURE IS ... */
167
+ | 'sort-output';
168
+ /** Una arista de flujo extraída de una sentencia concreta del fuente */
169
+ export interface FlowEdge {
170
+ /** Párrafo (o nodo implícito) donde aparece la sentencia */
171
+ from: string;
172
+ /** Destino: párrafo/sección (perform, goto) o programa (call) */
173
+ to: string;
174
+ kind: FlowEdgeKind;
175
+ /** PERFORM A THRU B */
176
+ thru?: string | undefined;
177
+ /** PERFORM A n TIMES */
178
+ times?: number | undefined;
179
+ /** Texto crudo de la condición: "UNTIL ..." o "DEPENDING ON ..." */
180
+ condition?: string | undefined;
181
+ /** CALL con variable: el programa destino no es verificable en el fuente */
182
+ dynamic?: boolean | undefined;
183
+ /**
184
+ * Condiciones IF/EVALUATE abiertas en el punto de la sentencia, de la más
185
+ * externa a la más interna — la sentencia solo se ejecuta si TODAS se
186
+ * cumplen. Texto crudo del fuente ("WS-TIPO = 'A'", "NOT (WS-FIN)"),
187
+ * sin interpretar: el parser dice bajo qué condición ocurre la arista,
188
+ * no qué significa. Ausente = la sentencia es incondicional.
189
+ */
190
+ guards?: string[] | undefined;
191
+ /** Línea del fuente (1-based) donde aparece la sentencia — trazabilidad */
192
+ line: number;
193
+ }
194
+ /** Un programa aportado por el usuario, con su flujo interno ya extraído */
195
+ export interface LinkedProgram {
196
+ /** Nombre con el que se identifica: PROGRAM-ID si existe, si no el del fichero */
197
+ name: string;
198
+ /** Nombre del fichero tal como lo aportó el usuario */
199
+ sourceName: string;
200
+ flow: FlowResult;
201
+ }
202
+ /** Una llamada que cruza la frontera de un programa */
203
+ export interface CrossProgramCall {
204
+ fromProgram: string;
205
+ fromParagraph: string;
206
+ /** Programa destino, o el nombre de la variable si la llamada es dinámica */
207
+ toProgram: string;
208
+ /** true si el destino está entre los programas aportados */
209
+ resolved: boolean;
210
+ /** CALL con variable: el destino real solo se conoce en ejecución */
211
+ dynamic: boolean;
212
+ line: number;
213
+ }
214
+ /** Grafo de llamadas entre los programas aportados */
215
+ export interface LinkedFlow {
216
+ programs: LinkedProgram[];
217
+ calls: CrossProgramCall[];
218
+ /** Programas llamados con literal pero no aportados — qué falta por bajar */
219
+ missingPrograms: string[];
220
+ }
221
+ export type FileVerb = 'OPEN' | 'CLOSE' | 'READ' | 'WRITE' | 'REWRITE' | 'DELETE' | 'START';
222
+ /** Una operación de E/S sobre un fichero, anclada a su línea de fuente */
223
+ export interface FileOperation {
224
+ verb: FileVerb;
225
+ /** Modo del OPEN tal como aparece (INPUT, OUTPUT, I-O, EXTEND) */
226
+ mode?: string | undefined;
227
+ /** Párrafo donde aparece la sentencia */
228
+ paragraph: string;
229
+ /**
230
+ * El nombre de `paragraph` es el del nodo de entrada sintético, no el de
231
+ * un párrafo declarado en el fuente: la sentencia aparece antes de la
232
+ * primera cabecera de párrafo. Mismo criterio que `FlowParagraph.implicit`
233
+ * — se marca en vez de hacerlo pasar por un hecho del fuente (ADR-0003).
234
+ */
235
+ paragraphImplicit?: boolean | undefined;
236
+ line: number;
237
+ }
238
+ /** Un fichero declarado en FILE-CONTROL con lo que el programa hace con él */
239
+ export interface FileUsage {
240
+ /** Nombre lógico COBOL (SELECT <nombre>) */
241
+ name: string;
242
+ /**
243
+ * Nombre de sistema del `ASSIGN TO`, tal cual aparece. NO se interpreta:
244
+ * en z/OS suele contener el ddname del JCL (a veces con prefijos como
245
+ * `UT-S-`), pero deducir cuál es la parte del DD sería una convención,
246
+ * no un hecho del fuente.
247
+ */
248
+ assignTo?: string | undefined;
249
+ /** ORGANIZATION IS ... tal cual, sin interpretar */
250
+ organization?: string | undefined;
251
+ /** ACCESS MODE IS ... tal cual, sin interpretar */
252
+ access?: string | undefined;
253
+ /** Nombres de registro 01 bajo su FD — cómo se resuelve un WRITE */
254
+ records: string[];
255
+ operations: FileOperation[];
256
+ }
257
+ /** Bloque EXEC SQL o EXEC CICS, extraído sin interpretación semántica */
258
+ export interface ExecBlock {
259
+ kind: 'sql' | 'cics';
260
+ /** SQL: primer verbo (SELECT, DECLARE, FETCH…). CICS: comando (SEND, LINK…) */
261
+ verb: string;
262
+ /** Párrafo donde aparece; ausente si el bloque está en la DATA DIVISION */
263
+ paragraph?: string | undefined;
264
+ /** Ver `FileOperation.paragraphImplicit` */
265
+ paragraphImplicit?: boolean | undefined;
266
+ line: number;
267
+ /** Texto del bloque colapsado a una línea, EXEC/END-EXEC incluidos */
268
+ text: string;
269
+ /** SQL: tablas nombradas tras FROM/JOIN/INSERT INTO/UPDATE. Vacío en CICS */
270
+ tables: string[];
271
+ /** CICS: opciones con valor literal, como `FILE(CUSTFILE)`. Vacío en SQL */
272
+ options: string[];
273
+ /** SQL: cursor nombrado por el bloque (DECLARE/OPEN/FETCH/CLOSE) */
274
+ cursor?: string | undefined;
275
+ /**
276
+ * El recurso real solo se conoce en ejecución: SQL dinámico
277
+ * (PREPARE/EXECUTE, la sentencia viaja en una host variable) o un EXEC
278
+ * CICS cuyo recurso (FILE, PROGRAM, MAP…) es un data-name en vez de un
279
+ * literal. Como una CALL dinámica, se marca en vez de resolverse a
280
+ * ciegas (ADR-0003).
281
+ */
282
+ dynamic?: boolean | undefined;
283
+ }
284
+ /** Un cursor DB2 y qué hace el programa con él */
285
+ export interface CursorUsage {
286
+ name: string;
287
+ /** Aparece un DECLARE ... CURSOR en el fuente aportado */
288
+ declared: boolean;
289
+ opened: boolean;
290
+ fetched: boolean;
291
+ closed: boolean;
292
+ /** Tablas nombradas en su DECLARE */
293
+ tables: string[];
294
+ }
295
+ /** Respuesta a "¿este programa qué toca?" — ficheros, tablas, CICS */
296
+ export interface Inventory {
297
+ files: FileUsage[];
298
+ /**
299
+ * Operaciones de E/S cuyo fichero no se pudo resolver: el SELECT o el FD
300
+ * están en un copybook no aportado, o el nombre no aparece en el fuente.
301
+ * Se listan aparte en vez de asignarlas a un fichero inventado (ADR-0003).
302
+ */
303
+ unresolvedFileOps: (FileOperation & {
304
+ target: string;
305
+ })[];
306
+ execs: ExecBlock[];
307
+ /** Tablas DB2 distintas nombradas en algún EXEC SQL, en orden de aparición */
308
+ tables: string[];
309
+ cursors: CursorUsage[];
310
+ /** Comandos CICS distintos con cuántas veces aparecen */
311
+ cicsCommands: {
312
+ command: string;
313
+ count: number;
314
+ }[];
315
+ }
316
+ /**
317
+ * Regla de aviso reconocida. Cada una es un patrón de mantenimiento COBOL
318
+ * bien conocido, detectado sobre hechos YA verificados por el parser (no
319
+ * es una interpretación nueva del fuente) — la misma disciplina de
320
+ * no-invención que el resto del motor (ADR-0003).
321
+ *
322
+ * Distinción con `missingCopybooks`/`missingTargets`/`dynamic`: aquellos
323
+ * marcan lo que el parser NO pudo verificar; un aviso es lo contrario —
324
+ * algo que SÍ está verificado, pero que es una trampa de mantenimiento
325
+ * conocida (p. ej. un STOP RUN que corta el job entero desde un módulo
326
+ * llamado). Verificado y arriesgado no son lo mismo.
327
+ */
328
+ export type AdvisoryRule = 'stop-run-in-subprogram' | 'sql-write-without-where' | 'goto-crosses-section' | 'file-opened-not-closed' | 'cursor-opened-not-closed' | 'cursor-fetched-without-open' | 'alter-statement' | 'unreachable-paragraph' | 'unused-cursor' | 'unused-file';
329
+ /** Un aviso concreto, anclado a la línea del fuente que lo dispara */
330
+ export interface Advisory {
331
+ rule: AdvisoryRule;
332
+ /** Frase corta para chip/lista */
333
+ title: string;
334
+ /** Explicación en lenguaje llano de por qué es una trampa */
335
+ message: string;
336
+ line: number;
337
+ /** Párrafo donde ocurre, si aplica — permite saltar al diagrama de Flujo */
338
+ paragraph?: string | undefined;
339
+ }
340
+ /**
341
+ * Rol de una ocurrencia de un campo en una sentencia de la PROCEDURE
342
+ * DIVISION. `read-write` es un mismo operando que se lee Y se escribe en
343
+ * la misma sentencia (`ADD 1 TO WS-N`, `SET IX UP BY 1`, un argumento BY
344
+ * REFERENCE de una CALL). `unclassified` es una ocurrencia real de un
345
+ * campo del esquema en un verbo cuyo reparto de roles el motor no modela
346
+ * todavía: se registra —el campo SÍ se toca ahí— pero sin afirmar si se
347
+ * lee o se escribe (ADR-0003).
348
+ */
349
+ export type ReferenceKind = 'read' | 'write' | 'read-write' | 'unclassified';
350
+ /** Una ocurrencia de un data-name en una sentencia, anclada a su línea */
351
+ export interface FieldReference {
352
+ /** Nombre del campo del esquema (mayúsculas) al que se atribuye */
353
+ name: string;
354
+ kind: ReferenceKind;
355
+ /** Verbo COBOL que la origina: MOVE, COMPUTE, IF, PERFORM, EXEC SQL… */
356
+ verb: string;
357
+ /** Párrafo (o nodo de entrada sintético) donde aparece la sentencia */
358
+ paragraph: string;
359
+ /** El párrafo es el nodo de entrada sintético, no uno declarado. Ver `FileOperation.paragraphImplicit` */
360
+ paragraphImplicit?: boolean | undefined;
361
+ /** Línea 1-based del fuente donde aparece el token */
362
+ line: number;
363
+ /** La sentencia colapsada a una línea, recortada — contexto legible */
364
+ snippet: string;
365
+ /**
366
+ * El rol read/write no es seguro: MOVE CORRESPONDING (no se enumeran los
367
+ * subcampos), un argumento BY REFERENCE de una CALL (el llamado puede
368
+ * devolver valor), un host variable de SQL dinámico, o un homónimo. Se
369
+ * marca en vez de afirmar.
370
+ */
371
+ uncertain?: boolean | undefined;
372
+ /**
373
+ * La referencia entró por un nombre de nivel 88 (`IF WS-ACTIVO`,
374
+ * `SET WS-ACTIVO TO TRUE`): el token del fuente es el de la condición,
375
+ * y aquí figura su nombre — el uso se atribuye al campo padre.
376
+ */
377
+ via88?: string | undefined;
378
+ /**
379
+ * Hay más de un campo con este nombre en el esquema y no se ha resuelto
380
+ * la cualificación (`OF`/`IN`): el uso se atribuye a todos los candidatos.
381
+ */
382
+ ambiguous?: boolean | undefined;
383
+ }
384
+ /** Todas las lecturas y escrituras de UN data-name en la PROCEDURE */
385
+ export interface FieldUsage {
386
+ /** Nombre del campo (mayúsculas) */
387
+ name: string;
388
+ /** Ocurrencias de lectura (incluye las `read-write`) en orden de línea */
389
+ reads: FieldReference[];
390
+ /** Ocurrencias de escritura (incluye las `read-write`) en orden de línea */
391
+ writes: FieldReference[];
392
+ /** Ocurrencias en verbos cuyo reparto de roles no se modela todavía */
393
+ unclassified: FieldReference[];
394
+ }
395
+ /**
396
+ * Una arista de propagación de valor `from → to`: una sentencia (o un
397
+ * solape de memoria) por la que el valor de un campo llega a otro. Es la
398
+ * base de la traza transitiva (`traceField`). Insensible al orden de
399
+ * ejecución: la arista dice que ese flujo es POSIBLE en el fuente, no que
400
+ * sea el que gana al final.
401
+ */
402
+ export interface AssignmentEdge {
403
+ /** Campo origen (mayúsculas) */
404
+ from: string;
405
+ /** Campo destino (mayúsculas) */
406
+ to: string;
407
+ /** Verbo que la origina: MOVE, COMPUTE, ADD… o `REDEFINES` para un solape */
408
+ verb: string;
409
+ /** Párrafo donde ocurre. Ausente en las aristas `redefines` (no hay sentencia) */
410
+ paragraph?: string | undefined;
411
+ paragraphImplicit?: boolean | undefined;
412
+ /** Línea 1-based del fuente. 0 en las aristas `redefines` */
413
+ line: number;
414
+ /** La sentencia colapsada a una línea (o `A REDEFINES B`) */
415
+ snippet: string;
416
+ /**
417
+ * El flujo no es una copia limpia: MOVE CORRESPONDING (subcampos no
418
+ * desglosados), grupo, argumento por referencia de una CALL, homónimo,
419
+ * o un solape REDEFINES (reinterpretación de bytes, no asignación).
420
+ */
421
+ uncertain?: boolean | undefined;
422
+ /**
423
+ * `redefines` = el flujo es un solape de memoria (escribir un alias
424
+ * cambia los bytes del otro), no una sentencia de asignación.
425
+ */
426
+ kind?: 'statement' | 'redefines' | undefined;
427
+ }
428
+ /** Un salto de la traza: una arista recorrida */
429
+ export interface TraceStep {
430
+ from: string;
431
+ to: string;
432
+ verb: string;
433
+ paragraph?: string | undefined;
434
+ line: number;
435
+ uncertain?: boolean | undefined;
436
+ /** El salto es un solape REDEFINES, no una sentencia */
437
+ redefines?: boolean | undefined;
438
+ }
439
+ /** Un camino completo de la traza, del campo pedido a una raíz/hoja */
440
+ export interface TracePath {
441
+ /** Campos en orden: `[pedido, …, raíz|hoja]` */
442
+ nodes: string[];
443
+ steps: TraceStep[];
444
+ /** El camino se cortó por tope de profundidad */
445
+ truncated?: boolean | undefined;
446
+ /** El camino topó con un ciclo y se detuvo */
447
+ cyclic?: boolean | undefined;
448
+ /** Algún tramo del camino es incierto o un solape */
449
+ uncertain?: boolean | undefined;
450
+ }
451
+ /** Resultado de trazar un campo aguas arriba o aguas abajo */
452
+ export interface TraceResult {
453
+ /** Aristas a un solo salto desde el campo pedido */
454
+ direct: TraceStep[];
455
+ /** Todos los caminos hasta raíces (arriba) u hojas (abajo), con topes */
456
+ paths: TracePath[];
457
+ /** true si se recortó por número de caminos */
458
+ truncated: boolean;
459
+ }
460
+ /** Dónde se usa cada campo — resultado de la pasada de referencias */
461
+ export interface ReferenceResult {
462
+ /** Uso por data-name, en orden alfabético. Solo campos del esquema que se tocan */
463
+ fields: FieldUsage[];
464
+ /**
465
+ * Aristas de propagación de valor campo→campo (y solapes REDEFINES).
466
+ * `traceField` (en `dataflow`) las recorre para la traza transitiva.
467
+ */
468
+ assignments: AssignmentEdge[];
469
+ /**
470
+ * Nombres citados en posición de operando en la PROCEDURE que no casan
471
+ * con ningún campo del esquema aportado: pueden vivir en un copybook
472
+ * ausente, ser registros de FD, índices, o nombres que el subconjunto
473
+ * confunde. Se listan para no fingir cobertura total (ADR-0003).
474
+ */
475
+ unknownNames: string[];
476
+ /** true si el fuente no traía cabecera PROCEDURE DIVISION (fragmento) */
477
+ fragment: boolean;
478
+ }
479
+ /** Hechos de flujo extraídos de la PROCEDURE DIVISION */
480
+ export interface FlowResult {
481
+ /** PROGRAM-ID si aparece en el fuente */
482
+ programId?: string | undefined;
483
+ paragraphs: FlowParagraph[];
484
+ edges: FlowEdge[];
485
+ /** Destinos de PERFORM/GO TO que no corresponden a ningún párrafo del fuente */
486
+ missingTargets: string[];
487
+ /**
488
+ * PROGRAM-ID de los programas anidados dentro de este fuente. Su flujo
489
+ * NO está en `paragraphs` ni en `edges`: son programas distintos y
490
+ * mezclarlos daría un grafo que no existe. Se declaran para que quede
491
+ * dicho que el fuente contiene más de lo que se ha analizado.
492
+ */
493
+ nestedPrograms: string[];
494
+ /**
495
+ * true si el fuente no traía cabecera PROCEDURE DIVISION y se parseó
496
+ * como fragmento — nivel de fidelidad "parcialmente verificado"
497
+ */
498
+ fragment: boolean;
499
+ }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ import{j as s,r as o}from"./index-CwQzep9r.js";import{R as h,b as f,u as x,h as y,M as b,i as j,P as C,B as N,C as v,H as m,f as g}from"./theme-G7EkTZY2.js";function w({data:t}){const{chain:a}=t;return s.jsxs("div",{className:`prog prog--${a.variant}`,style:{width:a.width,minHeight:a.height},children:[s.jsx(m,{type:"target",position:g.Left,className:"handle"}),s.jsx("span",{className:"prog__name",children:a.name}),a.variant==="missing"&&s.jsx("span",{className:"prog__note",children:"fuente no aportado"}),a.variant==="dynamic"&&s.jsx("span",{className:"prog__note",children:"destino dinámico"}),a.variant==="supplied"&&a.paragraphCount!==void 0&&s.jsxs("span",{className:"prog__note",children:[a.paragraphCount," párrafos"]}),s.jsx(m,{type:"source",position:g.Right,className:"handle"})]})}const k={program:w};function B({colors:t}){const a=(l,d,c)=>s.jsxs("span",{className:"leg-row",children:[s.jsx("span",{className:"leg-line",style:c?{backgroundImage:`repeating-linear-gradient(90deg, ${l} 0 4px, transparent 4px 7px)`}:{background:l}}),d]});return s.jsxs("div",{className:"chain-legend",children:[a(t.resolved,"CALL resuelta (programa aportado)"),a(t.missing,"fuente no aportado"),a(t.dynamic,"CALL dinámica (destino en ejecución)",!0)]})}function _({linked:t}){const[a,l]=o.useState([]),[d,c]=o.useState([]),p=f(),n=x(e=>({resolved:e("--ok")||"#6fcf97",missing:e("--missing")||"#f0708a",dynamic:e("--violet")||"#8b7bf0",labelText:e("--text")||"#e6ebf2",labelBg:e("--bg-panel")||"#12161d",border:e("--border")||"#262e3a"}));o.useEffect(()=>{let e=!1;return y(t).then(r=>{e||(l(r.nodes.map(i=>({id:i.id,type:"program",position:{x:i.x,y:i.y},width:i.width,height:i.height,data:{chain:i}}))),c(r.edges))}),()=>{e=!0}},[t]),o.useEffect(()=>{if(a.length===0)return;const e=requestAnimationFrame(()=>p(a.map(r=>r.id)));return()=>cancelAnimationFrame(e)},[a,p]);const u=o.useMemo(()=>d.map(e=>{const r=e.dynamic?n.dynamic:e.resolved?n.resolved:n.missing;return{id:e.id,source:e.source,target:e.target,label:e.label,type:"smoothstep",style:{stroke:r,strokeWidth:1.8,...e.dynamic?{strokeDasharray:"3 3"}:{}},labelStyle:{fill:n.labelText,fontSize:11},labelBgStyle:{fill:n.labelBg,fillOpacity:.92,stroke:n.border},labelBgPadding:[6,3],labelBgBorderRadius:4,markerEnd:{type:b.ArrowClosed,color:r}}}),[d,n]);return s.jsxs(j,{nodes:a,edges:u,nodeTypes:k,fitView:!0,minZoom:.2,nodesConnectable:!1,edgesFocusable:!1,children:[s.jsx(C,{position:"top-left",children:s.jsx(B,{colors:{resolved:n.resolved,missing:n.missing,dynamic:n.dynamic}})}),s.jsx(N,{gap:24,size:1.5,color:n.border}),s.jsx(v,{showInteractive:!1})]})}function P({linked:t}){return s.jsx(h,{children:s.jsx(_,{linked:t})})}export{P as ChainCanvas};
@@ -0,0 +1,3 @@
1
+ import{r as e,p as b,j as a,n as q,s as j0,a as v0}from"./index-CwQzep9r.js";import{R as _0,u as b0,a as w0,b as V0,s as N0,n as j,l as F0,M as L0,i as y0,P as z,B as k0,C as $0,c as C0,g as S0,d as R0,E as I0,e as O0,H as T,f as P}from"./theme-G7EkTZY2.js";const z0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M184,80V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H176A8,8,0,0,1,184,80Z",opacity:"0.2"}),e.createElement("path",{d:"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M192,136v72a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64h72a8,8,0,0,1,0,16H48V208H176V136a8,8,0,0,1,16,0Zm32-96a8,8,0,0,0-8-8H152a8,8,0,0,0-5.66,13.66L172.69,72l-42.35,42.34a8,8,0,0,0,11.32,11.32L184,83.31l26.34,26.35A8,8,0,0,0,224,104Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M222,104a6,6,0,0,1-12,0V54.49l-69.75,69.75a6,6,0,0,1-8.48-8.48L201.51,46H152a6,6,0,0,1,0-12h64a6,6,0,0,1,6,6Zm-38,26a6,6,0,0,0-6,6v72a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V80a2,2,0,0,1,2-2h72a6,6,0,0,0,0-12H48A14,14,0,0,0,34,80V208a14,14,0,0,0,14,14H176a14,14,0,0,0,14-14V136A6,6,0,0,0,184,130Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M220,104a4,4,0,0,1-8,0V49.66l-73.16,73.17a4,4,0,0,1-5.66-5.66L206.34,44H152a4,4,0,0,1,0-8h64a4,4,0,0,1,4,4Zm-36,28a4,4,0,0,0-4,4v72a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4h72a4,4,0,0,0,0-8H48A12,12,0,0,0,36,80V208a12,12,0,0,0,12,12H176a12,12,0,0,0,12-12V136A4,4,0,0,0,184,132Z"}))]]),D0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,96l-80,80L48,96Z",opacity:"0.2"}),e.createElement("path",{d:"M215.39,92.94A8,8,0,0,0,208,88H48a8,8,0,0,0-5.66,13.66l80,80a8,8,0,0,0,11.32,0l80-80A8,8,0,0,0,215.39,92.94ZM128,164.69,67.31,104H188.69Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,48,88H208a8,8,0,0,1,5.66,13.66Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M212.24,100.24l-80,80a6,6,0,0,1-8.48,0l-80-80a6,6,0,0,1,8.48-8.48L128,167.51l75.76-75.75a6,6,0,0,1,8.48,8.48Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M210.83,98.83l-80,80a4,4,0,0,1-5.66,0l-80-80a4,4,0,0,1,5.66-5.66L128,170.34l77.17-77.17a4,4,0,1,1,5.66,5.66Z"}))]]),T0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216.49,168.49a12,12,0,0,1-17,0L128,97,56.49,168.49a12,12,0,0,1-17-17l80-80a12,12,0,0,1,17,0l80,80A12,12,0,0,1,216.49,168.49Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,160H48l80-80Z",opacity:"0.2"}),e.createElement("path",{d:"M213.66,154.34l-80-80a8,8,0,0,0-11.32,0l-80,80A8,8,0,0,0,48,168H208a8,8,0,0,0,5.66-13.66ZM67.31,152,128,91.31,188.69,152Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M215.39,163.06A8,8,0,0,1,208,168H48a8,8,0,0,1-5.66-13.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,215.39,163.06Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M212.24,164.24a6,6,0,0,1-8.48,0L128,88.49,52.24,164.24a6,6,0,0,1-8.48-8.48l80-80a6,6,0,0,1,8.48,0l80,80A6,6,0,0,1,212.24,164.24Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M210.83,162.83a4,4,0,0,1-5.66,0L128,85.66,50.83,162.83a4,4,0,0,1-5.66-5.66l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,210.83,162.83Z"}))]]),P0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M228,144v64a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V144a12,12,0,0,1,24,0v52H204V144a12,12,0,0,1,24,0Zm-108.49,8.49a12,12,0,0,0,17,0l40-40a12,12,0,0,0-17-17L140,115V32a12,12,0,0,0-24,0v83L96.49,95.51a12,12,0,0,0-17,17Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,48V208H40V48A16,16,0,0,1,56,32H200A16,16,0,0,1,216,48Z",opacity:"0.2"}),e.createElement("path",{d:"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40A8,8,0,0,0,168,96H136V32a8,8,0,0,0-16,0V96H88a8,8,0,0,0-5.66,13.66Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M222,144v64a6,6,0,0,1-6,6H40a6,6,0,0,1-6-6V144a6,6,0,0,1,12,0v58H210V144a6,6,0,0,1,12,0Zm-98.24,4.24a6,6,0,0,0,8.48,0l40-40a6,6,0,0,0-8.48-8.48L134,129.51V32a6,6,0,0,0-12,0v97.51L92.24,99.76a6,6,0,0,0-8.48,8.48Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M220,144v64a4,4,0,0,1-4,4H40a4,4,0,0,1-4-4V144a4,4,0,0,1,8,0v60H212V144a4,4,0,0,1,8,0Zm-94.83,2.83a4,4,0,0,0,5.66,0l40-40a4,4,0,1,0-5.66-5.66L132,134.34V32a4,4,0,0,0-8,0V134.34L90.83,101.17a4,4,0,0,0-5.66,5.66Z"}))]]),U0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M48,120a12,12,0,0,0,12-12V44h76V92a12,12,0,0,0,12,12h48v4a12,12,0,1,0,24,0V88a12,12,0,0,0-3.51-8.48l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40v68A12,12,0,0,0,48,120ZM183,80H160V57ZM87.78,196.8a24.72,24.72,0,0,1-10.94,18c-6,4-13.27,5.15-19.74,5.15a63.75,63.75,0,0,1-16.23-2.21,12,12,0,1,1,6.46-23.11c6.82,1.85,15,1.61,16.39.06a2.48,2.48,0,0,0,.21-.71c-1.94-1.23-6.82-2.64-9.88-3.53-5.39-1.56-11-3.17-15.75-6.26-7.62-4.92-11.21-12.45-10.1-21.19a24.44,24.44,0,0,1,10.68-17.76c6.07-4.09,14.17-5.82,24.1-5.17A69,69,0,0,1,75,142a12,12,0,0,1-6.1,23.21c-6.35-1.63-13.61-1.51-16.07-.33a79.69,79.69,0,0,0,7.92,2.59c5.47,1.58,11.67,3.37,16.8,6.82C85.33,179.53,89,187.53,87.78,196.8ZM155.3,156l-20,56a12,12,0,0,1-22.6,0l-20-56A12,12,0,1,1,115.3,148L124,172.3,132.7,148A12,12,0,1,1,155.3,156ZM224,188v12.87a12,12,0,0,1-3.33,8.3A34,34,0,0,1,196,220c-19.85,0-36-17.94-36-40s16.15-40,36-40a33.39,33.39,0,0,1,18.71,5.8,12,12,0,1,1-13.42,19.89A9.39,9.39,0,0,0,196,164c-6.5,0-12,7.33-12,16s5.5,16,12,16a9,9,0,0,0,2.7-.42A12,12,0,0,1,208,176h4A12,12,0,0,1,224,188Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,88H152V32Z",opacity:"0.2"}),e.createElement("path",{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40v72a8,8,0,1,0,16,0V40h88V88a8,8,0,0,0,8,8h48v16a8,8,0,0,0,16,0V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160Zm-72.18,145a20.82,20.82,0,0,1-9.19,15.23C73.44,215,67,216,61.14,216A61.23,61.23,0,0,1,46,214a8,8,0,0,1,4.3-15.41c4.38,1.2,14.95,2.7,19.55-.36.88-.59,1.83-1.52,2.14-3.93.35-2.67-.71-4.1-12.78-7.59-9.35-2.7-25-7.23-23-23.11a20.55,20.55,0,0,1,9-14.95c11.84-8,30.72-3.31,32.83-2.76a8,8,0,0,1-4.07,15.48c-4.48-1.17-15.23-2.56-19.83.56a4.54,4.54,0,0,0-2,3.67c-.11.9-.14,1.09,1.12,1.9,2.31,1.49,6.44,2.68,10.45,3.84C73.5,174.17,90.06,179,87.82,196.31Zm63.72-41.62-20,56a8,8,0,0,1-15.07,0l-20-56a8,8,0,1,1,15.06-5.38L124,184.21l12.46-34.9a8,8,0,0,1,15.07,5.38ZM216,184v16.87a8,8,0,0,1-2.22,5.53A30.06,30.06,0,0,1,192,216c-17.64,0-32-16.15-32-36s14.36-36,32-36a29.38,29.38,0,0,1,16.48,5.12,8,8,0,0,1-8.95,13.26A13.27,13.27,0,0,0,192,160c-8.82,0-16,9-16,20s7.18,20,16,20a13.38,13.38,0,0,0,8-2.71V192a8,8,0,0,1,0-16h8A8,8,0,0,1,216,184Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40v76a4,4,0,0,0,4,4H212a4,4,0,0,0,4-4V88A8,8,0,0,0,213.66,82.34ZM152,88V44l44,44ZM87.82,196.31a20.82,20.82,0,0,1-9.19,15.23C73.44,215,67,216,61.14,216A61.23,61.23,0,0,1,46,214a8,8,0,0,1,4.3-15.41c4.38,1.2,14.95,2.7,19.55-.36.88-.59,1.83-1.52,2.14-3.93.35-2.67-.71-4.1-12.78-7.59-9.35-2.7-25-7.23-23-23.11a20.55,20.55,0,0,1,9-14.95c11.84-8,30.72-3.31,32.83-2.76a8,8,0,0,1-4.07,15.48c-4.48-1.17-15.23-2.56-19.83.56a4.54,4.54,0,0,0-2,3.67c-.11.9-.14,1.09,1.12,1.9,2.31,1.49,6.44,2.68,10.45,3.84C73.5,174.17,90.06,179,87.82,196.31Zm63.72-41.62-19.9,55.72a8.25,8.25,0,0,1-6.5,5.51,8,8,0,0,1-8.67-5.23L96.59,155a8.21,8.21,0,0,1,4.5-10.45,8,8,0,0,1,10.45,4.76L124,184.21l12.46-34.9a8,8,0,0,1,15.07,5.38ZM216,184v16.87a8,8,0,0,1-2.26,5.57A30,30,0,0,1,192,216c-17.64,0-32-16.15-32-36s14.36-36,32-36a29.36,29.36,0,0,1,16.09,4.86,8.22,8.22,0,0,1,3,10.64,8,8,0,0,1-11.54,2.88A13.27,13.27,0,0,0,192,160c-8.82,0-16,9-16,20s7.18,20,16,20a13.38,13.38,0,0,0,8-2.71V192a8,8,0,0,1-8-8.53,8.18,8.18,0,0,1,8.26-7.47H208A8,8,0,0,1,216,184Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M212.24,83.75l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40v72a6,6,0,0,0,12,0V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50v18a6,6,0,1,0,12,0V88A6,6,0,0,0,212.24,83.75ZM158,46.48,193.52,82H158ZM85.83,196.05a18.85,18.85,0,0,1-8.3,13.81C72.71,213.05,66.66,214,61.16,214a59.38,59.38,0,0,1-14.67-2,6,6,0,0,1,3.23-11.56c3.71,1,15.58,3.11,21.19-.62a6.85,6.85,0,0,0,3-5.34c.57-4.43-2.08-6.26-14.2-9.76-9.31-2.69-23.37-6.75-21.57-20.94a18.61,18.61,0,0,1,8.08-13.54c11.11-7.49,29.18-3,31.2-2.48a6,6,0,0,1-3,11.6c-3.79-1-15.85-2.95-21.45.84a6.59,6.59,0,0,0-2.88,5.08c-.41,3.22,2.14,4.78,13,7.91C72.93,176.08,87.85,180.39,85.83,196.05Zm63.82-42-20,56a6,6,0,0,1-11.3,0l-20-56a6,6,0,1,1,11.3-4L124,190.15,138.35,150a6,6,0,0,1,11.3,4ZM214,184v16.87a6,6,0,0,1-1.67,4.15A28.06,28.06,0,0,1,192,214c-16.54,0-30-15.25-30-34s13.46-34,30-34a27.43,27.43,0,0,1,15.36,4.77,6,6,0,0,1-6.72,10A15.25,15.25,0,0,0,192,158c-9.92,0-18,9.87-18,22s8.08,22,18,22a15.7,15.7,0,0,0,10-3.74V190h-2a6,6,0,0,1,0-12h8A6,6,0,0,1,214,184Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M87.82,196.31a20.82,20.82,0,0,1-9.19,15.23C73.44,215,67,216,61.14,216A61.23,61.23,0,0,1,46,214a8,8,0,0,1,4.3-15.41c4.38,1.2,14.95,2.7,19.55-.36.88-.59,1.83-1.52,2.14-3.93.35-2.67-.71-4.1-12.78-7.59-9.35-2.7-25-7.23-23-23.11a20.55,20.55,0,0,1,9-14.95c11.84-8,30.72-3.31,32.83-2.76a8,8,0,0,1-4.07,15.48c-4.48-1.17-15.23-2.56-19.83.56a4.54,4.54,0,0,0-2,3.67c-.11.9-.14,1.09,1.12,1.9,2.31,1.49,6.44,2.68,10.45,3.84C73.5,174.17,90.06,179,87.82,196.31ZM216,88v24a8,8,0,0,1-16,0V96H152a8,8,0,0,1-8-8V40H56v72a8,8,0,1,1-16,0V40A16,16,0,0,1,56,24h96a8,8,0,0,1,5.65,2.34l56,56A8,8,0,0,1,216,88Zm-56-8h28.69L160,51.31Zm-13.3,64.47a8,8,0,0,0-10.23,4.84L124,184.21l-12.47-34.9a8,8,0,1,0-15.06,5.38l20,56a8,8,0,0,0,15.07,0l20-56A8,8,0,0,0,146.7,144.47ZM208,176h-8a8,8,0,0,0,0,16v5.29a13.38,13.38,0,0,1-8,2.71c-8.82,0-16-9-16-20s7.18-20,16-20a13.27,13.27,0,0,1,7.53,2.38,8,8,0,0,0,8.95-13.26A29.38,29.38,0,0,0,192,144c-17.64,0-32,16.15-32,36s14.36,36,32,36a30.06,30.06,0,0,0,21.78-9.6,8,8,0,0,0,2.22-5.53V184A8,8,0,0,0,208,176Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40v72a4,4,0,1,0,8,0V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52v20a4,4,0,0,0,8,0V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM83.85,195.8a17,17,0,0,1-7.43,12.41C72,211.12,66.38,212,61.2,212A57.89,57.89,0,0,1,47,210.11a4,4,0,1,1,2.15-7.7c4.22,1.17,16.56,3.29,22.83-.88a8.94,8.94,0,0,0,3.91-6.75c.83-6.45-4.38-8.69-15.64-11.94-9.68-2.8-21.72-6.28-20.14-18.77a16.66,16.66,0,0,1,7.22-12.13c4.56-3.07,11-4.36,19.1-3.82a61.11,61.11,0,0,1,10.47,1.61,4,4,0,0,1-2,7.74c-4.29-1.13-16.81-3.12-23.06,1.11a8.51,8.51,0,0,0-3.75,6.49c-.66,5.17,3.89,7,14.42,10.08C72.27,178,85.65,181.84,83.85,195.8Zm63.92-42.45-20,56a4,4,0,0,1-7.53,0l-20-56a4,4,0,1,1,7.53-2.7L124,196.11l16.23-45.46a4,4,0,1,1,7.53,2.7ZM212,184v16.87a4,4,0,0,1-1.11,2.77A26.11,26.11,0,0,1,192,212c-15.44,0-28-14.36-28-32s12.56-32,28-32a25.41,25.41,0,0,1,14.24,4.43,4,4,0,1,1-4.48,6.63A17.43,17.43,0,0,0,192,156c-11,0-20,10.77-20,24s9,24,20,24a17.87,17.87,0,0,0,12-4.82V188h-4a4,4,0,0,1,0-8h8A4,4,0,0,1,212,184Z"}))]]),B0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M204,136a12,12,0,0,1-12,12H64a12,12,0,0,1,0-24H192A12,12,0,0,1,204,136Zm28-60H24a12,12,0,0,0,0,24H232a12,12,0,0,0,0-24Zm-80,96H104a12,12,0,0,0,0,24h48a12,12,0,0,0,0-24Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z",opacity:"0.2"}),e.createElement("path",{d:"M200,136a8,8,0,0,1-8,8H64a8,8,0,0,1,0-16H192A8,8,0,0,1,200,136Zm32-56H24a8,8,0,0,0,0,16H232a8,8,0,0,0,0-16Zm-80,96H104a8,8,0,0,0,0,16h48a8,8,0,0,0,0-16Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM144,176H112a8,8,0,0,1,0-16h32a8,8,0,0,1,0,16Zm32-40H80a8,8,0,0,1,0-16h96a8,8,0,0,1,0,16Zm32-40H48a8,8,0,0,1,0-16H208a8,8,0,0,1,0,16Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M198,136a6,6,0,0,1-6,6H64a6,6,0,0,1,0-12H192A6,6,0,0,1,198,136Zm34-54H24a6,6,0,0,0,0,12H232a6,6,0,0,0,0-12Zm-80,96H104a6,6,0,0,0,0,12h48a6,6,0,0,0,0-12Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M200,136a8,8,0,0,1-8,8H64a8,8,0,0,1,0-16H192A8,8,0,0,1,200,136Zm32-56H24a8,8,0,0,0,0,16H232a8,8,0,0,0,0-16Zm-80,96H104a8,8,0,0,0,0,16h48a8,8,0,0,0,0-16Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M196,136a4,4,0,0,1-4,4H64a4,4,0,0,1,0-8H192A4,4,0,0,1,196,136Zm36-52H24a4,4,0,0,0,0,8H232a4,4,0,0,0,0-8Zm-80,96H104a4,4,0,0,0,0,8h48a4,4,0,0,0,0-8Z"}))]]),G0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,28H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28Zm-4,24v63.72L186.14,97.86a20,20,0,0,0-28.28,0L52,203.72V52ZM85.66,204,172,117.66l32,32V204ZM76,96a20,20,0,1,1,20,20A20,20,0,0,1,76,96Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,40H48a8,8,0,0,0-8,8V208a8,8,0,0,0,8,8h8.69L166.34,106.34a8,8,0,0,1,11.32,0L216,144.69V48A8,8,0,0,0,208,40ZM96,112a16,16,0,1,1,16-16A16,16,0,0,1,96,112Z",opacity:"0.2"}),e.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM80,96a16,16,0,1,1,16,16A16,16,0,0,1,80,96Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,34H48A14,14,0,0,0,34,48V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V48A14,14,0,0,0,208,34ZM46,208V48a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2v82.2l-28.1-28.1a14,14,0,0,0-19.8,0L54.2,210H48A2,2,0,0,1,46,208Zm162,2H71.17l99.41-99.41a2,2,0,0,1,2.83,0L210,147.17V208A2,2,0,0,1,208,210ZM96,118A22,22,0,1,0,74,96,22,22,0,0,0,96,118Zm0-32A10,10,0,1,1,86,96,10,10,0,0,1,96,86Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M208,36H48A12,12,0,0,0,36,48V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V48A12,12,0,0,0,208,36ZM44,208V48a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4v87l-31.51-31.52a12,12,0,0,0-17,0L55,212H48A4,4,0,0,1,44,208Zm164,4H66.34L169.17,109.17a4,4,0,0,1,5.66,0L212,146.34V208A4,4,0,0,1,208,212ZM96,116A20,20,0,1,0,76,96,20,20,0,0,0,96,116Zm0-32A12,12,0,1,1,84,96,12,12,0,0,1,96,84Z"}))]]),q0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z",opacity:"0.2"}),e.createElement("path",{d:"M144,176a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176Zm88-48A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128ZM124,96a12,12,0,1,0-12-12A12,12,0,0,0,124,96Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M142,176a6,6,0,0,1-6,6,14,14,0,0,1-14-14V128a2,2,0,0,0-2-2,6,6,0,0,1,0-12,14,14,0,0,1,14,14v40a2,2,0,0,0,2,2A6,6,0,0,1,142,176ZM124,94a10,10,0,1,0-10-10A10,10,0,0,0,124,94Zm106,34A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M140,176a4,4,0,0,1-4,4,12,12,0,0,1-12-12V128a4,4,0,0,0-4-4,4,4,0,0,1,0-8,12,12,0,0,1,12,12v40a4,4,0,0,0,4,4A4,4,0,0,1,140,176ZM124,92a8,8,0,1,0-8-8A8,8,0,0,0,124,92Zm104,36A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z"}))]]),X0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M192,112a80,80,0,1,1-80-80A80,80,0,0,1,192,112Z",opacity:"0.2"}),e.createElement("path",{d:"M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M168,112a56,56,0,1,1-56-56A56,56,0,0,1,168,112Zm61.66,117.66a8,8,0,0,1-11.32,0l-50.06-50.07a88,88,0,1,1,11.32-11.31l50.06,50.06A8,8,0,0,1,229.66,229.66ZM112,184a72,72,0,1,0-72-72A72.08,72.08,0,0,0,112,184Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M228.24,219.76l-51.38-51.38a86.15,86.15,0,1,0-8.48,8.48l51.38,51.38a6,6,0,0,0,8.48-8.48ZM38,112a74,74,0,1,1,74,74A74.09,74.09,0,0,1,38,112Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M226.83,221.17l-52.7-52.7a84.1,84.1,0,1,0-5.66,5.66l52.7,52.7a4,4,0,0,0,5.66-5.66ZM36,112a76,76,0,1,1,76,76A76.08,76.08,0,0,1,36,112Z"}))]]),Y0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M144.49,136.49l-40,40a12,12,0,0,1-17-17L107,140H24a12,12,0,0,1,0-24h83L87.51,96.49a12,12,0,0,1,17-17l40,40A12,12,0,0,1,144.49,136.49ZM200,28H136a12,12,0,0,0,0,24h52V204H136a12,12,0,0,0,0,24h64a12,12,0,0,0,12-12V40A12,12,0,0,0,200,28Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M200,40V216H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40Z",opacity:"0.2"}),e.createElement("path",{d:"M141.66,133.66l-40,40a8,8,0,0,1-11.32-11.32L116.69,136H24a8,8,0,0,1,0-16h92.69L90.34,93.66a8,8,0,0,1,11.32-11.32l40,40A8,8,0,0,1,141.66,133.66ZM200,32H136a8,8,0,0,0,0,16h56V208H136a8,8,0,0,0,0,16h64a8,8,0,0,0,8-8V40A8,8,0,0,0,200,32Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M141.66,133.66l-40,40A8,8,0,0,1,88,168V136H24a8,8,0,0,1,0-16H88V88a8,8,0,0,1,13.66-5.66l40,40A8,8,0,0,1,141.66,133.66ZM200,32H136a8,8,0,0,0,0,16h56V208H136a8,8,0,0,0,0,16h64a8,8,0,0,0,8-8V40A8,8,0,0,0,200,32Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M140.24,132.24l-40,40a6,6,0,0,1-8.48-8.48L121.51,134H24a6,6,0,0,1,0-12h97.51L91.76,92.24a6,6,0,0,1,8.48-8.48l40,40A6,6,0,0,1,140.24,132.24ZM200,34H136a6,6,0,0,0,0,12h58V210H136a6,6,0,0,0,0,12h64a6,6,0,0,0,6-6V40A6,6,0,0,0,200,34Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M141.66,133.66l-40,40a8,8,0,0,1-11.32-11.32L116.69,136H24a8,8,0,0,1,0-16h92.69L90.34,93.66a8,8,0,0,1,11.32-11.32l40,40A8,8,0,0,1,141.66,133.66ZM200,32H136a8,8,0,0,0,0,16h56V208H136a8,8,0,0,0,0,16h64a8,8,0,0,0,8-8V40A8,8,0,0,0,200,32Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M138.83,130.83l-40,40a4,4,0,0,1-5.66-5.66L126.34,132H24a4,4,0,0,1,0-8H126.34L93.17,90.83a4,4,0,0,1,5.66-5.66l40,40A4,4,0,0,1,138.83,130.83ZM200,36H136a4,4,0,0,0,0,8h60V212H136a4,4,0,0,0,0,8h64a4,4,0,0,0,4-4V40A4,4,0,0,0,200,36Z"}))]]),K0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M124,216a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V40A12,12,0,0,1,48,28h64a12,12,0,0,1,0,24H60V204h52A12,12,0,0,1,124,216Zm108.49-96.49-40-40a12,12,0,0,0-17,17L195,116H112a12,12,0,0,0,0,24h83l-19.52,19.51a12,12,0,0,0,17,17l40-40A12,12,0,0,0,232.49,119.51Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,56V200a16,16,0,0,1-16,16H48V40H208A16,16,0,0,1,224,56Z",opacity:"0.2"}),e.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40A8,8,0,0,0,176,88v32H112a8,8,0,0,0,0,16h64v32a8,8,0,0,0,13.66,5.66l40-40A8,8,0,0,0,229.66,122.34Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M118,216a6,6,0,0,1-6,6H48a6,6,0,0,1-6-6V40a6,6,0,0,1,6-6h64a6,6,0,0,1,0,12H54V210h58A6,6,0,0,1,118,216Zm110.24-92.24-40-40a6,6,0,0,0-8.48,8.48L209.51,122H112a6,6,0,0,0,0,12h97.51l-29.75,29.76a6,6,0,1,0,8.48,8.48l40-40A6,6,0,0,0,228.24,123.76Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M116,216a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h64a4,4,0,0,1,0,8H52V212h60A4,4,0,0,1,116,216Zm110.83-90.83-40-40a4,4,0,0,0-5.66,5.66L214.34,124H112a4,4,0,0,0,0,8H214.34l-33.17,33.17a4,4,0,0,0,5.66,5.66l40-40A4,4,0,0,0,226.83,125.17Z"}))]]),W0=new Map([["bold",e.createElement(e.Fragment,null,e.createElement("path",{d:"M234.36,170A12,12,0,0,1,230,186.37l-96,56a12,12,0,0,1-12.1,0l-96-56a12,12,0,0,1,12.09-20.74l90,52.48L218,165.63A12,12,0,0,1,234.36,170ZM218,117.63,128,170.11,38.05,117.63A12,12,0,0,0,26,138.37l96,56a12,12,0,0,0,12.1,0l96-56A12,12,0,0,0,218,117.63ZM20,80a12,12,0,0,1,6-10.37l96-56a12.06,12.06,0,0,1,12.1,0l96,56a12,12,0,0,1,0,20.74l-96,56a12,12,0,0,1-12.1,0l-96-56A12,12,0,0,1,20,80Zm35.82,0L128,122.11,200.18,80,128,37.89Z"}))],["duotone",e.createElement(e.Fragment,null,e.createElement("path",{d:"M224,80l-96,56L32,80l96-56Z",opacity:"0.2"}),e.createElement("path",{d:"M230.91,172A8,8,0,0,1,228,182.91l-96,56a8,8,0,0,1-8.06,0l-96-56A8,8,0,0,1,36,169.09l92,53.65,92-53.65A8,8,0,0,1,230.91,172ZM220,121.09l-92,53.65L36,121.09A8,8,0,0,0,28,134.91l96,56a8,8,0,0,0,8.06,0l96-56A8,8,0,1,0,220,121.09ZM24,80a8,8,0,0,1,4-6.91l96-56a8,8,0,0,1,8.06,0l96,56a8,8,0,0,1,0,13.82l-96,56a8,8,0,0,1-8.06,0l-96-56A8,8,0,0,1,24,80Zm23.88,0L128,126.74,208.12,80,128,33.26Z"}))],["fill",e.createElement(e.Fragment,null,e.createElement("path",{d:"M220,169.09l-92,53.65L36,169.09A8,8,0,0,0,28,182.91l96,56a8,8,0,0,0,8.06,0l96-56A8,8,0,1,0,220,169.09Z"}),e.createElement("path",{d:"M220,121.09l-92,53.65L36,121.09A8,8,0,0,0,28,134.91l96,56a8,8,0,0,0,8.06,0l96-56A8,8,0,1,0,220,121.09Z"}),e.createElement("path",{d:"M28,86.91l96,56a8,8,0,0,0,8.06,0l96-56a8,8,0,0,0,0-13.82l-96-56a8,8,0,0,0-8.06,0l-96,56a8,8,0,0,0,0,13.82Z"}))],["light",e.createElement(e.Fragment,null,e.createElement("path",{d:"M229.18,173a6,6,0,0,1-2.16,8.2l-96,56a6,6,0,0,1-6,0l-96-56a6,6,0,0,1,6-10.36l93,54.23,93-54.23A6,6,0,0,1,229.18,173ZM221,122.82l-93,54.23L35,122.82a6,6,0,0,0-6,10.36l96,56a6,6,0,0,0,6,0l96-56a6,6,0,0,0-6-10.36ZM26,80a6,6,0,0,1,3-5.18l96-56a6,6,0,0,1,6,0l96,56a6,6,0,0,1,0,10.36l-96,56a6,6,0,0,1-6,0l-96-56A6,6,0,0,1,26,80Zm17.91,0L128,129.05,212.09,80,128,31Z"}))],["regular",e.createElement(e.Fragment,null,e.createElement("path",{d:"M230.91,172A8,8,0,0,1,228,182.91l-96,56a8,8,0,0,1-8.06,0l-96-56A8,8,0,0,1,36,169.09l92,53.65,92-53.65A8,8,0,0,1,230.91,172ZM220,121.09l-92,53.65L36,121.09A8,8,0,0,0,28,134.91l96,56a8,8,0,0,0,8.06,0l96-56A8,8,0,1,0,220,121.09ZM24,80a8,8,0,0,1,4-6.91l96-56a8,8,0,0,1,8.06,0l96,56a8,8,0,0,1,0,13.82l-96,56a8,8,0,0,1-8.06,0l-96-56A8,8,0,0,1,24,80Zm23.88,0L128,126.74,208.12,80,128,33.26Z"}))],["thin",e.createElement(e.Fragment,null,e.createElement("path",{d:"M227.45,174a4,4,0,0,1-1.44,5.48l-96,56a4,4,0,0,1-4,0l-96-56a4,4,0,0,1,4-6.92l94,54.83,94-54.83A4,4,0,0,1,227.45,174ZM222,124.54l-94,54.83L34,124.54a4,4,0,0,0-4,6.92l96,56a4,4,0,0,0,4,0l96-56a4,4,0,0,0-4-6.92ZM28,80a4,4,0,0,1,2-3.46l96-56a4,4,0,0,1,4,0l96,56a4,4,0,0,1,0,6.92l-96,56a4,4,0,0,1-4,0l-96-56A4,4,0,0,1,28,80Zm11.94,0L128,131.37,216.06,80,128,28.63Z"}))]]),X=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:z0}));X.displayName="ArrowSquareOutIcon";const Q0=X,Y=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:D0}));Y.displayName="CaretDownIcon";const D=Y,K=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:T0}));K.displayName="CaretUpIcon";const W=K,Q=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:P0}));Q.displayName="DownloadSimpleIcon";const J0=Q,J=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:U0}));J.displayName="FileSvgIcon";const e1=J,e0=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:B0}));e0.displayName="FunnelSimpleIcon";const a1=e0,a0=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:G0}));a0.displayName="ImageSquareIcon";const t1=a0,t0=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:q0}));t0.displayName="InfoIcon";const l1=t0,l0=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:X0}));l0.displayName="MagnifyingGlassIcon";const n1=l0,n0=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:Y0}));n0.displayName="SignInIcon";const s1=n0,s0=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:K0}));s0.displayName="SignOutIcon";const r1=s0,r0=e.forwardRef((t,l)=>e.createElement(b,{ref:l,...t,weights:W0}));r0.displayName="StackIcon";const c0=r0,C=28,U="'Fira Code', ui-monospace, 'Cascadia Code', Menlo, Consolas, monospace";function B(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function c1(t,l){return t.kind==="fall-through"?l.fall:t.toMissing?l.missing:t.guarded?l.violet:l.edge[t.kind]??l.edge.perform??l.accent}function o1(t){if(t.kind==="call")return t.dynamic?"3 3":"7 4";if(t.kind==="fall-through")return"2 4"}function i1(t,l){switch(t.variant){case"section":return{stroke:l.accent};case"implicit":return{stroke:l.nodeStroke,dash:"4 4"};case"call":return{stroke:l.ok,dash:"6 4"};case"missing":return{stroke:l.missing,dash:"4 4"};default:return{stroke:t.terminates?l.accent:l.nodeStroke}}}function d1(t,l){if(t.points&&t.points.length>=2)return t.points;const r=l.get(t.source),i=l.get(t.target);return!r||!i?[]:[{x:r.x+r.width/2,y:r.y+r.height},{x:i.x+i.width/2,y:i.y}]}function m1(t,l){const r=t[t.length-1],i=t[t.length-2]??r,g=Math.atan2(r.y-i.y,r.x-i.x),m=7,x=g+Math.PI-.42,p=g+Math.PI+.42,u={x:r.x+m*Math.cos(x),y:r.y+m*Math.sin(x)},d={x:r.x+m*Math.cos(p),y:r.y+m*Math.sin(p)};return`<path d="M${r.x.toFixed(1)} ${r.y.toFixed(1)} L${u.x.toFixed(1)} ${u.y.toFixed(1)} L${d.x.toFixed(1)} ${d.y.toFixed(1)} Z" fill="${l}" />`}function h1(t,l){if(t.nodes.length===0)return"";const r=Math.min(...t.nodes.map(n=>n.x)),i=Math.min(...t.nodes.map(n=>n.y)),g=Math.max(...t.nodes.map(n=>n.x+n.width)),m=Math.max(...t.nodes.map(n=>n.y+n.height)),x=g-r+C*2,p=m-i+C*2,u=new Map(t.nodes.map(n=>[n.id,n])),d=t.edges.map(n=>{const h=d1(n,u);if(h.length<2)return"";const H=c1(n,l),c=o1(n),A=h.map((v,L)=>`${L===0?"M":"L"}${v.x.toFixed(1)} ${v.y.toFixed(1)}`).join(" "),V=n.kind==="fall-through"?1:n.guarded?1.7:1.5,k=c?` stroke-dasharray="${c}"`:"",$=`<path d="${A}" fill="none" stroke="${H}" stroke-width="${V}"${k} stroke-linejoin="round" />`,F=m1(h,H);let S="";if(n.label){const v=h[Math.floor(h.length/2)],L=Math.min(n.label.length*6.4+12,220);S=`<rect x="${(v.x-L/2).toFixed(1)}" y="${(v.y-9).toFixed(1)}" width="${L.toFixed(1)}" height="18" rx="5" fill="${l.bg}" stroke="${l.nodeStroke}" /><text x="${v.x.toFixed(1)}" y="${(v.y+3.5).toFixed(1)}" text-anchor="middle" font-family="${U}" font-size="10" fill="${n.guarded?l.violet:l.textDim}">${B(n.label.length>34?n.label.slice(0,33)+"…":n.label)}</text>`}return $+F+S}).join(`
2
+ `),f=t.nodes.map(n=>{const{stroke:h,dash:H}=i1(n,l),c=H?` stroke-dasharray="${H}"`:"",A=n.x+n.width/2,V=n.y+n.height/2,k=n.label.length>40?n.label.slice(0,39)+"…":n.label;return`<g><rect x="${n.x}" y="${n.y}" width="${n.width}" height="${n.height}" rx="9" fill="${l.nodeFill}" stroke="${h}" stroke-width="1.5"${c} /><text x="${A.toFixed(1)}" y="${(V+4).toFixed(1)}" text-anchor="middle" font-family="${U}" font-size="12" fill="${l.text}">${B(k)}</text></g>`}).join(`
3
+ `);return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${(r-C).toFixed(1)} ${(i-C).toFixed(1)} ${x.toFixed(1)} ${p.toFixed(1)}" width="${x.toFixed(0)}" height="${p.toFixed(0)}"><rect x="${(r-C).toFixed(1)}" y="${(i-C).toFixed(1)}" width="${x.toFixed(1)}" height="${p.toFixed(1)}" fill="${l.bg}" /><g>${d}</g><g>${f}</g></svg>`}function o0(t,l){const r=URL.createObjectURL(t),i=document.createElement("a");i.href=r,i.download=l,document.body.appendChild(i),i.click(),i.remove(),URL.revokeObjectURL(r)}function p1(t,l){o0(new Blob([t],{type:"image/svg+xml;charset=utf-8"}),l)}function g1(t,l,r=2){return new Promise((i,g)=>{const m=t.match(/width="(\d+)" height="(\d+)"/),x=m?Number(m[1]):1200,p=m?Number(m[2]):800,u=new Image,d=URL.createObjectURL(new Blob([t],{type:"image/svg+xml;charset=utf-8"}));u.onload=()=>{const f=document.createElement("canvas");f.width=x*r,f.height=p*r;const n=f.getContext("2d");if(!n){URL.revokeObjectURL(d),g(new Error("No se pudo crear el contexto 2D"));return}n.scale(r,r),n.drawImage(u,0,0),URL.revokeObjectURL(d),f.toBlob(h=>{h&&o0(h,l),i()},"image/png")},u.onerror=()=>{URL.revokeObjectURL(d),g(new Error("No se pudo rasterizar el diagrama"))},u.src=d})}function u1({data:t}){const{canvas:l,focused:r,dimmed:i}=t,g=["node",`node--${l.variant}`,l.terminates&&!l.collapsed?"node--terminates":"",r?"node--focus":"",i?"node--dim":"",l.collapsed?"node--collapsed":""].filter(Boolean).join(" ");return a.jsxs("div",{className:g,style:{width:l.width,minHeight:l.height},children:[a.jsx(T,{type:"target",position:P.Top,className:"handle"}),l.collapsed&&a.jsx(c0,{size:14,weight:"bold",className:"node__stack"}),a.jsx("span",{className:"node__label",children:l.label}),l.collapsed&&a.jsx("span",{className:"node__badge node__badge--expand",children:"clic para desplegar"}),l.terminates&&a.jsx("span",{className:"node__badge",children:"fin de programa"}),l.section&&!l.collapsed&&a.jsx("span",{className:"node__section",children:l.section}),a.jsx(T,{type:"source",position:P.Bottom,className:"handle"})]})}const f1={cobol:u1};function x1({id:t,sourceX:l,sourceY:r,targetX:i,targetY:g,sourcePosition:m,targetPosition:x,style:p,markerEnd:u,label:d,data:f}){const[n,h,H]=S0({sourceX:l,sourceY:r,sourcePosition:m,targetX:i,targetY:g,targetPosition:x}),c=typeof d=="string"?d:void 0;return a.jsxs(a.Fragment,{children:[a.jsx(R0,{id:t,path:n,style:p,...u?{markerEnd:u}:{}}),c&&a.jsx(I0,{children:a.jsx("div",{className:`edge-label nodrag nopan${f?.guarded?" edge-label--guard":""}${f?.isFall?" edge-label--fall":""}`,style:{transform:`translate(-50%, -50%) translate(${h}px, ${H}px)`,maxWidth:O0},title:c,children:c})})]})}const E1={cobol:x1},_={perform:"#7aa2f7",goto:"#e0af68",call:"#9ece6a","sort-input":"#7dcfff","sort-output":"#7dcfff","fall-through":"#565f89"},A1=[{id:"perform",label:"PERFORM",color:_.perform,kinds:["perform","sort-input","sort-output"]},{id:"call",label:"CALL",color:_.call,kinds:["call"]},{id:"goto",label:"GO TO",color:_.goto,kinds:["goto"]},{id:"fall-through",label:"Caídas naturales",color:_["fall-through"],kinds:["fall-through"]}];function Z1(){const[t,l]=e.useState(!1),r=(i,g,m)=>a.jsxs("span",{className:"leg-row",children:[a.jsx("span",{className:"leg-line",style:m?{backgroundImage:`repeating-linear-gradient(90deg, ${i} 0 4px, transparent 4px 7px)`}:{background:i}}),g]});return a.jsxs("div",{className:"flow-legend",children:[a.jsxs("button",{className:"flow-legend__head",onClick:()=>l(i=>!i),"aria-expanded":t,children:[a.jsx(l1,{size:15,weight:"bold"}),a.jsx("span",{children:"Leyenda"}),t?a.jsx(D,{size:13,weight:"bold"}):a.jsx(W,{size:13,weight:"bold"})]}),t&&a.jsxs("div",{className:"flow-legend__body",children:[a.jsx("div",{className:"leg-group",children:"Cómo pasa el control"}),r(_.perform,"PERFORM (llama y vuelve)"),r(_.call,"CALL (a otro programa)",!0),r(_.goto,"GO TO (salta, no vuelve)"),r("var(--violet)","rama IF/EVALUATE (con guarda)"),r(_["fall-through"],"caída natural (orden del fuente)",!0),r("var(--missing)","destino no encontrado"),a.jsx("div",{className:"leg-group",children:"Tipos de nodo"}),a.jsxs("span",{className:"leg-row",children:[a.jsx("span",{className:"leg-node"})," párrafo"]}),a.jsxs("span",{className:"leg-row",children:[a.jsx("span",{className:"leg-node leg-node--section"})," sección"]}),a.jsxs("span",{className:"leg-row",children:[a.jsx("span",{className:"leg-node leg-node--implicit"})," entrada (sintética)"]}),a.jsxs("span",{className:"leg-row",children:[a.jsx("span",{className:"leg-node leg-node--end"})," fin del programa"]}),a.jsxs("span",{className:"leg-row",children:[a.jsx("span",{className:"leg-node leg-node--call"})," otro programa (CALL)"]})]})]})}function M1({names:t,onPick:l,activeName:r}){const[i,g]=e.useState(""),[m,x]=e.useState(0),p=e.useRef(null),u=e.useMemo(()=>{const n=i.trim().toUpperCase();return n===""?[]:t.filter(h=>h.toUpperCase().includes(n)).slice(0,8)},[t,i]);e.useEffect(()=>x(0),[i]);const d=e.useCallback(n=>{l(n),g("")},[l]),f=n=>{if(u.length!==0)if(n.key==="ArrowDown")n.preventDefault(),x(h=>(h+1)%u.length);else if(n.key==="ArrowUp")n.preventDefault(),x(h=>(h-1+u.length)%u.length);else if(n.key==="Enter"){n.preventDefault();const h=u[m];h&&d(h)}else n.key==="Escape"&&g("")};return a.jsxs("div",{className:"flow-search",children:[a.jsxs("div",{className:"flow-search__field",children:[a.jsx(n1,{size:15,weight:"bold",className:"flow-search__icon"}),a.jsx("input",{ref:p,type:"text",value:i,onChange:n=>g(n.target.value),onKeyDown:f,placeholder:"Buscar párrafo…","aria-label":"Buscar párrafo por nombre",spellCheck:!1}),(i!==""||r)&&a.jsx("button",{className:"flow-search__clear",onClick:()=>{g(""),l(""),p.current?.focus()},title:"Limpiar","aria-label":"Limpiar búsqueda",children:a.jsx(q,{size:13,weight:"bold"})})]}),u.length>0&&a.jsx("ul",{className:"flow-search__list",role:"listbox",children:u.map((n,h)=>a.jsx("li",{role:"option","aria-selected":h===m,className:`flow-search__opt${h===m?" flow-search__opt--on":""}`,onMouseEnter:()=>x(h),onClick:()=>d(n),children:n},n))}),r&&u.length===0&&a.jsxs("div",{className:"flow-search__active",children:["Enfocado: ",a.jsx("strong",{children:r})]})]})}function H1({sections:t,collapsed:l,onToggle:r,onAll:i}){const[g,m]=e.useState(!1),x=t.filter(p=>l.has(p)).length;return a.jsxs("div",{className:"sections-panel",children:[a.jsxs("button",{className:"sections-panel__head",onClick:()=>m(p=>!p),"aria-expanded":g,children:[a.jsx(c0,{size:15,weight:"bold"}),a.jsx("span",{children:"Secciones"}),a.jsx("span",{className:"sections-panel__count",children:x>0?`${x}/${t.length} plegadas`:t.length}),g?a.jsx(D,{size:13,weight:"bold"}):a.jsx(j0,{size:13,weight:"bold"})]}),g&&a.jsxs("div",{className:"sections-panel__body",children:[a.jsxs("div",{className:"sections-panel__actions",children:[a.jsx("button",{onClick:()=>i(!0),children:"Plegar todas"}),a.jsx("button",{onClick:()=>i(!1),children:"Desplegar todas"})]}),a.jsx("ul",{children:t.map(p=>{const u=l.has(p);return a.jsx("li",{children:a.jsxs("label",{children:[a.jsx("input",{type:"checkbox",checked:u,onChange:()=>r(p)}),a.jsx("span",{children:p})]})},p)})})]})]})}function j1({hidden:t,present:l,onToggleFamily:r,onOnlyTransfers:i,onShowAll:g}){const[m,x]=e.useState(!1),p=A1.filter(d=>d.kinds.some(f=>l.has(f)));if(p.length===0)return null;const u=p.filter(d=>d.kinds.every(f=>t.has(f))).length;return a.jsxs("div",{className:"edge-filter",children:[a.jsxs("button",{className:"edge-filter__head",onClick:()=>x(d=>!d),"aria-expanded":m,children:[a.jsx(a1,{size:15,weight:"bold"}),a.jsx("span",{children:"Aristas"}),u>0&&a.jsxs("span",{className:"edge-filter__count",children:[u," ocultas"]}),m?a.jsx(D,{size:13,weight:"bold"}):a.jsx(W,{size:13,weight:"bold"})]}),m&&a.jsxs("div",{className:"edge-filter__body",children:[p.map(d=>{const f=!d.kinds.every(n=>t.has(n));return a.jsxs("label",{className:"edge-filter__row",children:[a.jsx("input",{type:"checkbox",checked:f,onChange:()=>r(d.kinds,f)}),a.jsx("span",{className:"edge-filter__swatch",style:{background:d.color}}),a.jsx("span",{children:d.label})]},d.id)}),a.jsxs("div",{className:"edge-filter__actions",children:[a.jsx("button",{onClick:i,children:"Solo transferencias"}),a.jsx("button",{onClick:g,children:"Mostrar todo"})]})]})]})}function v1({onSvg:t,onPng:l}){return a.jsxs("div",{className:"flow-export",children:[a.jsxs("span",{className:"flow-export__label",children:[a.jsx(J0,{size:13,weight:"bold"})," Exportar"]}),a.jsxs("button",{className:"flow-export__btn",onClick:t,title:"Descargar el diagrama como SVG vectorial",children:[a.jsx(e1,{size:14,weight:"bold"})," SVG"]}),a.jsxs("button",{className:"flow-export__btn",onClick:l,title:"Descargar el diagrama como imagen PNG",children:[a.jsx(t1,{size:14,weight:"bold"})," PNG"]})]})}const _1={perform:"PERFORM",call:"CALL",goto:"GO TO","fall-through":"cae a","sort-input":"SORT entrada","sort-output":"SORT salida"};function G({edge:t,peer:l,jumpable:r,onJump:i}){const g=t.guards&&t.guards.length>0?t.guards.join(" Y "):void 0;return a.jsxs("li",{className:"pcard__edge",children:[a.jsx("span",{className:`pcard__kind pcard__kind--${t.kind}`,children:_1[t.kind]}),r?a.jsx("button",{className:"pcard__peer pcard__peer--link",onClick:()=>i(l),title:"Enfocar este párrafo",children:l}):a.jsx("span",{className:"pcard__peer",children:l}),g&&a.jsx("span",{className:"pcard__guard",title:g,children:g}),a.jsxs("span",{className:"pcard__line",children:["L",t.line]})]})}function b1({name:t,flow:l,inventory:r,onClose:i,onJump:g,onOpenCode:m}){const x=j(t),p=l.paragraphs.find(c=>j(c.name)===x),u=e.useMemo(()=>new Set(l.paragraphs.map(c=>j(c.name))),[l]),d=l.edges.filter(c=>j(c.from)===x),f=l.edges.filter(c=>j(c.to)===x),n=(r?.execs??[]).filter(c=>c.paragraph&&j(c.paragraph)===x),h=[];for(const c of r?.files??[])for(const A of c.operations)j(A.paragraph)===x&&h.push({file:c.name,op:A});for(const c of r?.unresolvedFileOps??[])j(c.paragraph)===x&&h.push({file:c.target,op:c});const H=p?.line;return a.jsxs("aside",{className:"pcard","aria-label":`Ficha del párrafo ${t}`,children:[a.jsxs("header",{className:"pcard__head",children:[a.jsxs("div",{className:"pcard__title",children:[a.jsx("span",{className:"pcard__name",children:t}),a.jsxs("div",{className:"pcard__tags",children:[p?.kind==="section"&&a.jsx("span",{className:"pcard__tag",children:"sección"}),p?.section&&a.jsxs("span",{className:"pcard__tag",children:["en ",p.section]}),p?.terminates&&a.jsx("span",{className:"pcard__tag pcard__tag--end",children:"fin de programa"}),p?.inDeclaratives&&a.jsx("span",{className:"pcard__tag",children:"DECLARATIVES"}),p?.implicit&&a.jsx("span",{className:"pcard__tag",children:"entrada implícita"})]})]}),a.jsx("button",{className:"pcard__close",onClick:i,title:"Cerrar","aria-label":"Cerrar la ficha",children:a.jsx(q,{size:15,weight:"bold"})})]}),H!==void 0&&m&&a.jsxs("button",{className:"pcard__gotocode",onClick:()=>m(H),children:[a.jsx(v0,{size:14,weight:"bold"})," Saltar al código · línea ",H,a.jsx(Q0,{size:13,weight:"bold"})]}),a.jsxs("section",{className:"pcard__sec",children:[a.jsxs("h4",{className:"pcard__h",children:[a.jsx(r1,{size:13,weight:"bold"})," A qué llama ",a.jsx("span",{className:"pcard__n",children:d.length})]}),d.length===0?a.jsx("p",{className:"pcard__empty",children:"No transfiere el control a ningún sitio."}):a.jsx("ul",{className:"pcard__list",children:d.map((c,A)=>a.jsx(G,{edge:c,peer:c.to,jumpable:u.has(j(c.to)),onJump:g},A))})]}),a.jsxs("section",{className:"pcard__sec",children:[a.jsxs("h4",{className:"pcard__h",children:[a.jsx(s1,{size:13,weight:"bold"})," Quién lo llama ",a.jsx("span",{className:"pcard__n",children:f.length})]}),f.length===0?a.jsx("p",{className:"pcard__empty",children:"Nadie lo referencia — se llega en línea o es un punto de entrada."}):a.jsx("ul",{className:"pcard__list",children:f.map((c,A)=>a.jsx(G,{edge:c,peer:c.from,jumpable:u.has(j(c.from)),onJump:g},A))})]}),n.length>0&&a.jsxs("section",{className:"pcard__sec",children:[a.jsxs("h4",{className:"pcard__h",children:["EXEC ",a.jsx("span",{className:"pcard__n",children:n.length})]}),a.jsx("ul",{className:"pcard__list",children:n.map((c,A)=>a.jsxs("li",{className:"pcard__exec",children:[a.jsx("span",{className:`pcard__kind pcard__kind--${c.kind}`,children:c.kind.toUpperCase()}),a.jsxs("span",{className:"pcard__exectext",title:c.text,children:[c.verb,c.cursor?` · ${c.cursor}`:"",c.dynamic?" · dinámico":""]}),a.jsxs("span",{className:"pcard__line",children:["L",c.line]})]},A))})]}),h.length>0&&a.jsxs("section",{className:"pcard__sec",children:[a.jsxs("h4",{className:"pcard__h",children:["Ficheros ",a.jsx("span",{className:"pcard__n",children:h.length})]}),a.jsx("ul",{className:"pcard__list",children:h.map(({file:c,op:A},V)=>a.jsxs("li",{className:"pcard__exec",children:[a.jsx("span",{className:"pcard__kind pcard__kind--io",children:A.verb}),a.jsxs("span",{className:"pcard__exectext",children:[c,A.mode?` · ${A.mode}`:""]}),a.jsxs("span",{className:"pcard__line",children:["L",A.line]})]},V))})]})]})}function w1({flow:t,inventory:l,focusParagraph:r,onFocused:i,onOpenCode:g}){const[m,x]=e.useState([]),[p,u]=e.useState([]),[d,f]=e.useState(),[n,h]=e.useState(),[H,c]=e.useState(new Set),[A,V]=e.useState(new Set),k=e.useRef(void 0),$=b0(s=>({dots:s("--border"),missing:s("--missing"),guard:s("--violet")})),F=w0(),S=V0(),v=e.useMemo(()=>N0(t),[t]);e.useEffect(()=>{r&&f(j(r))},[r]);const L=e.useRef(!0);e.useEffect(()=>{if(L.current){L.current=!1;return}f(void 0),h(void 0),c(new Set),V(new Set)},[t]);const i0=e.useMemo(()=>t.paragraphs.filter(s=>!s.implicit).map(s=>s.name),[t]),y=e.useMemo(()=>{if(!d)return;const s=new Set([d]);for(const E of t.edges){const o=j(E.from),Z=j(E.to);o===d&&s.add(Z),Z===d&&s.add(o)}return s},[d,t]);e.useEffect(()=>{let s=!1;return F0(t,A).then(E=>{s||(k.current=E,x(E.nodes.map(o=>({id:o.id,type:"cobol",position:{x:o.x,y:o.y},width:o.width,height:o.height,data:{canvas:o}}))),u(E.edges.map(o=>{const Z=o.kind==="fall-through",M=Z?_["fall-through"]:o.toMissing?$.missing:o.guarded?$.guard:_[o.kind]??"#7aa2f7",w=o.kind==="call"?o.dynamic?"3 3":"7 4":Z?"2 4":void 0;return{id:o.id,source:o.source,target:o.target,label:o.label,type:"cobol",data:{color:M,dash:w,guarded:o.guarded,isFall:Z,kind:o.kind},style:{stroke:M,strokeWidth:Z?1:o.guarded?1.7:1.5,...w?{strokeDasharray:w}:{}},markerEnd:{type:L0.ArrowClosed,color:M}}})))}),()=>{s=!0}},[t,$,A]),e.useEffect(()=>{if(m.length===0)return;const s=requestAnimationFrame(()=>S(m.map(E=>E.id)));return()=>cancelAnimationFrame(s)},[m,S]),e.useEffect(()=>{if(m.length===0)return;const s=m.map(N=>N.position.x),E=m.map(N=>N.position.y),o=Math.min(...s),Z=Math.min(...E),M=Math.max(...m.map(N=>N.position.x+N.data.canvas.width)),w=Math.max(...m.map(N=>N.position.y+N.data.canvas.height));F.fitBounds({x:o,y:Z,width:M-o,height:w-Z},{padding:.12})},[m,F]);const d0=e.useMemo(()=>m.map(s=>({...s,data:{...s.data,focused:d===s.id,dimmed:y!==void 0&&!y.has(s.id)}})),[m,d,y]),m0=e.useMemo(()=>p.filter(s=>{const E=s.data?.kind;return!E||!H.has(E)}).map(s=>{if(!y)return s;const E=y.has(s.source)&&y.has(s.target);return{...s,style:{...s.style,opacity:E?1:.12}}}),[p,y,H]);e.useEffect(()=>{if(!d)return;const s=m.find(M=>M.id===d);if(!s)return;const E=s.data.canvas.width,o=s.data.canvas.height,Z=Math.max(F.getZoom(),.85);F.setCenter(s.position.x+E/2,s.position.y+o/2,{zoom:Z})},[d,m,F]),e.useEffect(()=>{if(!r||!i)return;const s=window.setTimeout(()=>i(),1600);return()=>window.clearTimeout(s)},[r,i]);const h0=e.useMemo(()=>{if(d)return m.find(s=>s.id===d)?.data.canvas.label},[d,m]),p0=e.useCallback(s=>{f(s===""?void 0:j(s))},[]),O=e.useCallback(s=>{f(void 0),V(E=>{const o=new Set(E);return o.has(s)?o.delete(s):o.add(s),o})},[]),g0=e.useCallback(s=>{f(void 0),V(s?new Set(v):new Set)},[v]),u0=e.useCallback((s,E)=>{const o=E.data.canvas;if(o.collapsed){const M=v.find(w=>j(w)===E.id);M&&O(M);return}if(f(E.id),o.variant==="call"||o.variant==="missing"){h(void 0);return}const Z=t.paragraphs.find(M=>j(M.name)===E.id)?.name;h(Z??o.label)},[v,O,t]),f0=e.useCallback(s=>{f(j(s)),h(s)},[]),x0=e.useMemo(()=>new Set(t.edges.map(s=>s.kind)),[t]),E0=e.useCallback((s,E)=>{c(o=>{const Z=new Set(o);return E?s.forEach(M=>Z.add(M)):s.forEach(M=>Z.delete(M)),Z})},[]),A0=e.useCallback(()=>c(new Set(["fall-through"])),[]),Z0=e.useCallback(()=>c(new Set),[]),R=e.useCallback(()=>{const s=k.current;if(!s)return;const E=getComputedStyle(document.documentElement),o=w=>E.getPropertyValue(w).trim(),Z={bg:o("--bg")||"#0b0e14",nodeFill:o("--bg-raised")||"#1b212b",nodeStroke:o("--border")||"#262e3a",text:o("--text")||"#e6ebf2",textDim:o("--text-dim")||"#828d9e",accent:o("--accent")||"#3fd9b4",violet:o("--violet")||"#8b7bf0",missing:o("--missing")||"#f0708a",ok:o("--ok")||"#6fcf97",fall:_["fall-through"],edge:_},M={nodes:s.nodes,edges:s.edges.filter(w=>!H.has(w.kind))};return h1(M,Z)},[H]),I=(t.programId??"diagrama").toLowerCase(),M0=e.useCallback(()=>{const s=R();s&&p1(s,`${I}-flujo.svg`)},[R,I]),H0=e.useCallback(()=>{const s=R();s&&g1(s,`${I}-flujo.png`)},[R,I]);return a.jsxs("div",{className:"flow-wrap",children:[a.jsxs(y0,{nodes:d0,edges:m0,nodeTypes:f1,edgeTypes:E1,onNodeClick:u0,fitView:!0,minZoom:.2,nodesDraggable:!0,nodesConnectable:!1,edgesFocusable:!1,onPaneClick:()=>{f(void 0),h(void 0)},proOptions:{hideAttribution:!1},children:[a.jsx(z,{position:"top-left",children:a.jsx(M1,{names:i0,onPick:p0,activeName:h0})}),a.jsx(z,{position:"top-right",children:a.jsxs("div",{className:"flow-tools",children:[v.length>0&&a.jsx(H1,{sections:v,collapsed:A,onToggle:O,onAll:g0}),a.jsx(j1,{hidden:H,present:x0,onToggleFamily:E0,onOnlyTransfers:A0,onShowAll:Z0}),a.jsx(v1,{onSvg:M0,onPng:H0})]})}),a.jsx(z,{position:"bottom-left",children:a.jsx(Z1,{})}),a.jsx(k0,{gap:24,size:1.5,color:$.dots}),a.jsx($0,{showInteractive:!1}),a.jsx(C0,{pannable:!0,zoomable:!0,className:"minimap"})]}),n&&a.jsx(b1,{name:n,flow:t,inventory:l,onClose:()=>h(void 0),onJump:f0,onOpenCode:g})]})}function F1(t){return a.jsx(_0,{children:a.jsx(w1,{...t})})}export{F1 as FlowCanvas};