aitu-app 0.6.78 → 0.6.80

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 (203) hide show
  1. package/README.md +3 -3
  2. package/assets/CanvasAudioPlayer-CSFENxi6.js +2 -0
  3. package/assets/ChatDrawer-CWZQP5R5.css +1 -0
  4. package/assets/ChatDrawer-sVEVW11M.js +11 -0
  5. package/assets/ChatMessagesArea-Cnb94V8-.js +7 -0
  6. package/assets/ChatMessagesArea-PlF5AwzD.css +1 -0
  7. package/assets/DeferredAIInputBar-D99l6sBS.js +8 -0
  8. package/assets/DrawnixDeferredFeatures-78cIu-ev.js +2 -0
  9. package/assets/{KnowledgeBaseContent-DcX5Jofx.js → KnowledgeBaseContent-DZ-1fPZa.js} +10 -10
  10. package/assets/{MVCreator-DllHozYg.js → MVCreator-BV8KDR6E.js} +8 -8
  11. package/assets/ModelBenchmarkWorkbench-DL6r0Z_5.js +2 -0
  12. package/assets/MusicAnalyzer-D9Bpmhym.css +1 -0
  13. package/assets/{MusicAnalyzer-DDeT6g3c.js → MusicAnalyzer-DQtjf36o.js} +2 -2
  14. package/assets/{MusicAnalyzer-CHcQ5t4P.js → MusicAnalyzer-u_5sy56T.js} +1 -1
  15. package/assets/PromptHistoryTool-B-ktaOpK.js +2 -0
  16. package/assets/PromptHistoryTool-BH7hq916.css +1 -0
  17. package/assets/ResizableDivider-BpUFdkte.js +1 -0
  18. package/assets/TaskQueuePanel-BLD1r7_I.js +1 -0
  19. package/assets/{VideoAnalyzer-BSLz1FaI.js → VideoAnalyzer-Bjv9pyDs.js} +2 -2
  20. package/assets/ai-generation-preferences-service-BSpgVCHz.js +1 -0
  21. package/assets/arc-CnA_FoJK.js +1 -0
  22. package/assets/{arc-BU2KKCa_.js → arc-DDvk_-VM.js} +1 -1
  23. package/assets/{batch-image-generation-Bg68r_Ql.js → batch-image-generation-N-lwbjRE.js} +3 -3
  24. package/assets/{blockDiagram-38ab4fdb-BCGEnMME.js → blockDiagram-38ab4fdb-B2G4wjZe.js} +6 -6
  25. package/assets/{blockDiagram-38ab4fdb-CsZR5uC5.js → blockDiagram-38ab4fdb-DBkZWrKk.js} +1 -1
  26. package/assets/{browser-DpICcNby.js → browser-ZXTF4AKv.js} +1 -1
  27. package/assets/{c4Diagram-3d4e48cf-9fuiuFdV.js → c4Diagram-3d4e48cf-BFg-wccg.js} +1 -1
  28. package/assets/{c4Diagram-3d4e48cf-WM4wd_GR.js → c4Diagram-3d4e48cf-CmyNnfip.js} +1 -1
  29. package/assets/{canvas-insertion-CdUQF7IV.js → canvas-insertion-CKIoVZ9a.js} +1 -1
  30. package/assets/channel-BQh3J7kz.js +1 -0
  31. package/assets/channel-CPsF_uSp.js +1 -0
  32. package/assets/{classDiagram-70f12bd4-DcYDedz1.js → classDiagram-70f12bd4-BoP-e23u.js} +2 -2
  33. package/assets/{classDiagram-70f12bd4-CBVHTwQu.js → classDiagram-70f12bd4-UTHJc2XA.js} +1 -1
  34. package/assets/classDiagram-v2-f2320105-BeBc2H-D.js +2 -0
  35. package/assets/{classDiagram-v2-f2320105-jpCwaHEd.js → classDiagram-v2-f2320105-Bjwz5ljW.js} +1 -1
  36. package/assets/{clipper-jvd5rF5a.js → clipper-NoHaeWV4.js} +1 -1
  37. package/assets/clone-CA2KqVCK.js +1 -0
  38. package/assets/createText-2e5e7dd3-Bsu7vT-L.js +8 -0
  39. package/assets/{createText-2e5e7dd3-x5lOIwut.js → createText-2e5e7dd3-DrWUfa-s.js} +1 -1
  40. package/assets/{edges-e0da2a9e-CbrF4nbD.js → edges-e0da2a9e-B9sYOHRt.js} +1 -1
  41. package/assets/{edges-e0da2a9e-Ch6PBwWs.js → edges-e0da2a9e-DX4IQMED.js} +1 -1
  42. package/assets/{erDiagram-9861fffd-DSlNVuAZ.js → erDiagram-9861fffd-B-LfsIMf.js} +1 -1
  43. package/assets/{erDiagram-9861fffd-Bq07elcI.js → erDiagram-9861fffd-DPdud_LA.js} +1 -1
  44. package/assets/{flowDb-956e92f1-Ti5YC4Vv.js → flowDb-956e92f1-C3xKlizM.js} +1 -1
  45. package/assets/{flowDb-956e92f1-BqPCJlZp.js → flowDb-956e92f1-Ck5oiEta.js} +1 -1
  46. package/assets/{flowDiagram-66a62f08-CPDuG3rY.js → flowDiagram-66a62f08-Bkt2NoHM.js} +4 -4
  47. package/assets/{flowDiagram-66a62f08-D3GSABFi.js → flowDiagram-66a62f08-CJnxo6dI.js} +1 -1
  48. package/assets/flowDiagram-v2-96b9c2cf-MnwxRDMO.js +1 -0
  49. package/assets/flowDiagram-v2-96b9c2cf-U7nNPvdl.js +1 -0
  50. package/assets/{flowchart-elk-definition-4a651766-BH09NeLA.js → flowchart-elk-definition-4a651766-2XkrsdKI.js} +2 -2
  51. package/assets/{flowchart-elk-definition-4a651766-BLaLPCDV.js → flowchart-elk-definition-4a651766-ec8y1a8S.js} +1 -1
  52. package/assets/{ganttDiagram-c361ad54-DL9ZeaEc.js → ganttDiagram-c361ad54-1TA0mZY_.js} +3 -3
  53. package/assets/{ganttDiagram-c361ad54-Sp9M1KHP.js → ganttDiagram-c361ad54-D-OrVtXV.js} +3 -3
  54. package/assets/{gitGraphDiagram-72cf32ee-BWwmRKo-.js → gitGraphDiagram-72cf32ee-Blt3RsBD.js} +1 -1
  55. package/assets/{gitGraphDiagram-72cf32ee-BSf1fsDV.js → gitGraphDiagram-72cf32ee-CKf6xgO1.js} +1 -1
  56. package/assets/{graph-g-2U7grQ.js → graph-CUYgHJmb.js} +1 -1
  57. package/assets/{graph--nPw8zXQ.js → graph-WeSRtsZO.js} +1 -1
  58. package/assets/{index-ZrVeQUWo.js → index--MqiaN5t.js} +1 -1
  59. package/assets/{index-C5eu4uSl.js → index-0b_TeH8L.js} +11 -11
  60. package/assets/{index-3862675e-BXwbZ2pz.js → index-3862675e-C2ipEQC8.js} +1 -1
  61. package/assets/{index-3862675e-D6Zy95zZ.js → index-3862675e-CeX6VlsU.js} +1 -1
  62. package/assets/{index-CLJUfzvO.js → index-B-J0JJak.js} +1 -1
  63. package/assets/{index-TkfyNewx.js → index-B7Hj7g41.js} +1 -1
  64. package/assets/{index-eZfwJ9bV.js → index-BS_v5cOh.js} +1 -1
  65. package/assets/index-Btk31p7r.js +1 -0
  66. package/assets/{index-DH12_HTj.js → index-C-Samsu3.js} +2 -2
  67. package/assets/index-C-llNX01.js +1 -0
  68. package/assets/index-C8c9icsH.js +2 -0
  69. package/assets/{index-D7b5fX1d.js → index-CAn2jfNg.js} +1 -1
  70. package/assets/{index-Dz8sghkK.js → index-CK2zt94U.js} +1 -1
  71. package/assets/{index-CfgvFFx3.js → index-CP51k4n6.js} +17 -17
  72. package/assets/{index-DI0OV6F8.js → index-CXBhIy30.js} +1 -1
  73. package/assets/index-C_Mj1wbj.js +2 -0
  74. package/assets/{index-BwSnJN93.js → index-CbfE0MBd.js} +1 -1
  75. package/assets/{index-C3qD42ws.js → index-CjeDxq0c.js} +1 -1
  76. package/assets/{index-DqMndQiP.js → index-Ct7OFnWK.js} +1 -1
  77. package/assets/{index-BaCHOxhI.js → index-CxxUIkx1.js} +1 -1
  78. package/assets/{index-B2dttXd7.js → index-D2Kc-3MO.js} +1 -1
  79. package/assets/{index-Bq8mPedC.js → index-DK0XEByD.js} +1 -1
  80. package/assets/{index-DllL1sx1.js → index-DQcV2DYj.js} +1 -1
  81. package/assets/{index-BP77pG9S.js → index-DSKRBuhn.js} +73 -73
  82. package/assets/{index-BXzGHPXz.js → index-DXqL8NRE.js} +2 -2
  83. package/assets/{index-B7V7-Vxz.js → index-DcLrRIlS.js} +1 -1
  84. package/assets/{index-D4pIkh3S.js → index-DdA-dF0D.js} +1 -1
  85. package/assets/{index-QkP3EC02.js → index-DdxTnVj5.js} +1 -1
  86. package/assets/{index-CmyOpFTN.js → index-DmrnShhc.js} +1 -1
  87. package/assets/{index-Bti3m-iW.js → index-QO0uGVDP.js} +1 -1
  88. package/assets/{index-BPR_DyGD.js → index-aIKXDB1M.js} +1 -1
  89. package/assets/{index-DIiIUyb-.js → index-n6JhNACm.js} +1 -1
  90. package/assets/{index-BWrcsh8u.js → index-qbS_W7PW.js} +1 -1
  91. package/assets/index-v7iKPBEu.css +1 -0
  92. package/assets/{infoDiagram-f8f76790-DpFqCCNv.js → infoDiagram-f8f76790-DEWQ3NXc.js} +1 -1
  93. package/assets/{infoDiagram-f8f76790-G2JpJJP7.js → infoDiagram-f8f76790-u_qjHFCm.js} +3 -3
  94. package/assets/{journeyDiagram-49397b02-DLLTobRM.js → journeyDiagram-49397b02-C8A30CBr.js} +1 -1
  95. package/assets/{journeyDiagram-49397b02-BdESGMrv.js → journeyDiagram-49397b02-hQJfqZih.js} +1 -1
  96. package/assets/{layout-WSR0vNPO.js → layout-CFKTKeqQ.js} +1 -1
  97. package/assets/{layout-CVkuImk4.js → layout-DvRyabpG.js} +1 -1
  98. package/assets/{line-D3bnG227.js → line-C72F34Po.js} +1 -1
  99. package/assets/{line-DQuMJveY.js → line-W5R41tQ1.js} +1 -1
  100. package/assets/{linear-CciP-97N.js → linear-7FXykgHM.js} +1 -1
  101. package/assets/{linear-Z6vFvuwc.js → linear-CVyOPUvz.js} +1 -1
  102. package/assets/main-BO0HWBB1.js +42 -0
  103. package/assets/{main-8DNjLY6L.css → main-DAuE07rf.css} +1 -1
  104. package/assets/{mermaid.core-CwZQb0ud.js → mermaid.core-2VcXhn43.js} +4 -4
  105. package/assets/{mindmap-definition-fc14e90a-BnJ8OOTI.js → mindmap-definition-fc14e90a-CcVXKGg4.js} +1 -1
  106. package/assets/{mindmap-definition-fc14e90a-CxQMydCW.js → mindmap-definition-fc14e90a-DRDYXe84.js} +2 -2
  107. package/assets/model-benchmark-launcher-C2qBiDlM.js +1 -0
  108. package/assets/{photo-wall-splitter-BZ88W5Zy.js → photo-wall-splitter-CFntSOdS.js} +1 -1
  109. package/assets/{pieDiagram-8a3498a8-BSDdkTeu.js → pieDiagram-8a3498a8-Be9dl9pU.js} +1 -1
  110. package/assets/{pieDiagram-8a3498a8-D6VtAoja.js → pieDiagram-8a3498a8-DXZOJYBv.js} +5 -5
  111. package/assets/ppt-generation-B5fKT_by.js +48 -0
  112. package/assets/{quadrantDiagram-120e2f19-C8k2xuBd.js → quadrantDiagram-120e2f19-DoU7aQSp.js} +3 -3
  113. package/assets/{quadrantDiagram-120e2f19-BbFV0VXY.js → quadrantDiagram-120e2f19-l5K9mx26.js} +1 -1
  114. package/assets/{requirementDiagram-deff3bca-C3xMdzJV.js → requirementDiagram-deff3bca-DN_87Wxe.js} +1 -1
  115. package/assets/{requirementDiagram-deff3bca-CpjqKjYZ.js → requirementDiagram-deff3bca-DOooq7kx.js} +1 -1
  116. package/assets/retry-image-BmIVuAVu.js +6 -0
  117. package/assets/{sankeyDiagram-04a897e0-Bjvig9bW.js → sankeyDiagram-04a897e0-BB33nO6_.js} +1 -1
  118. package/assets/{sankeyDiagram-04a897e0-BBJJgsFv.js → sankeyDiagram-04a897e0-CCa0hwml.js} +2 -2
  119. package/assets/{sequenceDiagram-704730f1-PFC_9IFI.js → sequenceDiagram-704730f1-CNhXZiix.js} +1 -1
  120. package/assets/{sequenceDiagram-704730f1-DX1MmBN_.js → sequenceDiagram-704730f1-ZqQ1QrY-.js} +1 -1
  121. package/assets/settings-dialog-BFuWTeQR.js +1 -0
  122. package/assets/{skill-dsl-parser-syNWYxFu.js → skill-dsl-parser-b-aB3P5u.js} +1 -1
  123. package/assets/{stateDiagram-587899a1-Dc3mI_B_.js → stateDiagram-587899a1-BBlOIJr7.js} +1 -1
  124. package/assets/{stateDiagram-587899a1-SFMUVAam.js → stateDiagram-587899a1-BhomZ0AN.js} +1 -1
  125. package/assets/{stateDiagram-v2-d93cdb3a-P4Yt2p_j.js → stateDiagram-v2-d93cdb3a-BpJsgMa0.js} +1 -1
  126. package/assets/stateDiagram-v2-d93cdb3a-CuOn9du2.js +1 -0
  127. package/assets/{styles-6aaf32cf-C3jnr3hV.js → styles-6aaf32cf-C2WEewoA.js} +1 -1
  128. package/assets/{styles-6aaf32cf-b6AdP7fu.js → styles-6aaf32cf-CTtf8moq.js} +1 -1
  129. package/assets/{styles-9a916d00-BUiD9iBe.js → styles-9a916d00-44Xi2-39.js} +1 -1
  130. package/assets/{styles-9a916d00-ii0XTdIm.js → styles-9a916d00-DUU3VgNe.js} +4 -4
  131. package/assets/{styles-c10674c1-DbTSpy3W.js → styles-c10674c1--AhWSGg7.js} +1 -1
  132. package/assets/styles-c10674c1-DS-wE3tK.js +116 -0
  133. package/assets/{svgDrawCommon-08f97a94-D4gIV05W.js → svgDrawCommon-08f97a94-CXcvtSSy.js} +1 -1
  134. package/assets/{svgDrawCommon-08f97a94-BK6lD4D6.js → svgDrawCommon-08f97a94-Dyqh4V2s.js} +1 -1
  135. package/assets/{timeline-definition-85554ec2-Bl2y548G.js → timeline-definition-85554ec2-k788753O.js} +1 -1
  136. package/assets/{timeline-definition-85554ec2-CWKg_JxG.js → timeline-definition-85554ec2-sw6-UuBe.js} +1 -1
  137. package/assets/tool-windows-BEnZdJqF.js +2948 -0
  138. package/assets/{tool-windows-CUNbW1Tz.css → tool-windows-D61Le6TE.css} +1 -1
  139. package/assets/ttd-dialog-BJzXAZ0l.js +99 -0
  140. package/assets/useCharacters-DRBoWvvj.css +1 -0
  141. package/assets/useCharacters-gsV4K8Hn.js +2 -0
  142. package/assets/{useWorkflowSubmission-BizuDmuw.js → useWorkflowSubmission-XRR21P6Y.js} +10 -10
  143. package/assets/{video-analyze-6v3Y-rUE.js → video-analyze-CpbnpSiI.js} +1 -1
  144. package/assets/{video-generation-DnmTlWnm.js → video-generation-BXhS7x-a.js} +2 -2
  145. package/assets/video-recovery-service-6G2lkWcu.js +1 -0
  146. package/assets/workflow-generation-utils-CYxtSHl0.js +3 -0
  147. package/assets/workflow-submission-service-DygSzydV.js +4 -0
  148. package/assets/{xychartDiagram-e933f94c-CJX9_9WF.js → xychartDiagram-e933f94c-CvTTDwPb.js} +3 -3
  149. package/assets/{xychartDiagram-e933f94c-Cep8CQEH.js → xychartDiagram-e933f94c-Ga9zi9ha.js} +1 -1
  150. package/changelog.json +45 -0
  151. package/idle-prefetch-manifest.json +310 -306
  152. package/manifest.json +3 -3
  153. package/package.json +1 -1
  154. package/precache-manifest.json +10 -10
  155. package/sitemap.xml +37 -0
  156. package/sw-debug/app.js +269 -156
  157. package/sw-debug/backup-restore.js +235 -103
  158. package/sw-debug/crypto-helper.js +116 -120
  159. package/sw-debug/duplex-client.js +33 -19
  160. package/sw-debug/gist-management.js +938 -655
  161. package/sw-debug/sw-communication.js +87 -50
  162. package/sw.js +5 -5
  163. package/version.json +7 -17
  164. package/assets/CanvasAudioPlayer-DutgwdiU.js +0 -2
  165. package/assets/ChatDrawer-0jNvKIoI.css +0 -1
  166. package/assets/ChatDrawer-E6Fog16I.js +0 -11
  167. package/assets/ChatMessagesArea-Bgwiz_XP.js +0 -250
  168. package/assets/ChatMessagesArea-DyR_wHFQ.css +0 -1
  169. package/assets/DeferredAIInputBar-CPkD8Cv9.js +0 -8
  170. package/assets/DrawnixDeferredFeatures-Cul76-88.js +0 -2
  171. package/assets/ModelBenchmarkWorkbench-Dv9SNYTi.js +0 -2
  172. package/assets/MusicAnalyzer-DhtRGpAp.css +0 -1
  173. package/assets/ResizableDivider-CaG9JQbJ.js +0 -1
  174. package/assets/TaskQueuePanel-BNhNzGp5.js +0 -1
  175. package/assets/ai-generation-preferences-service-BF7QkuJp.js +0 -1
  176. package/assets/arc-DmGoDCEL.js +0 -1
  177. package/assets/channel-CZjE-WNp.js +0 -1
  178. package/assets/channel-SXZD6bG3.js +0 -1
  179. package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +0 -2
  180. package/assets/clone-C4mvvMDb.js +0 -1
  181. package/assets/createText-2e5e7dd3-CkXS3l7I.js +0 -5
  182. package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +0 -1
  183. package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +0 -1
  184. package/assets/index-3eqA7Bag.js +0 -1
  185. package/assets/index-7Q-aiwln.js +0 -4
  186. package/assets/index-B1XP5g7P.css +0 -1
  187. package/assets/index-BHPTfCZM.js +0 -1
  188. package/assets/index-BqHZCcen.js +0 -2
  189. package/assets/index-DcZrElEK.js +0 -2
  190. package/assets/index-gQ7LgvSv.js +0 -12
  191. package/assets/main-BFEkxCOK.js +0 -56
  192. package/assets/model-benchmark-launcher-Ct3lYXVq.js +0 -1
  193. package/assets/ppt-generation-FzjP_rp0.js +0 -48
  194. package/assets/settings-dialog-CQM4v791.js +0 -1
  195. package/assets/stateDiagram-v2-d93cdb3a-DmnBjHpC.js +0 -1
  196. package/assets/styles-c10674c1-Bt89Yy8Q.js +0 -116
  197. package/assets/tool-windows-DOIu9TAD.js +0 -2975
  198. package/assets/ttd-dialog-DI4kQSg8.js +0 -99
  199. package/assets/useCharacters-Chv4Ky7x.js +0 -7
  200. package/assets/useCharacters-OrDbG69o.css +0 -1
  201. package/assets/video-recovery-service-BeRoh0s2.js +0 -1
  202. package/assets/workflow-generation-utils-me381Cax.js +0 -3
  203. package/assets/workflow-submission-service-YOpo7g37.js +0 -4
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-CUNbW1Tz.css"])))=>i.map(i=>d[i]);
2
- import{aj as M,ai as g,eK as ce,g5 as B,as as de,cI as ue,cP as le,bO as me,o as X,T as S,v as Q,g6 as pe,g7 as he,q as V,de as K,eo as fe,dO as ge,g8 as ye,ds as xe,k as we,dg as ve,ak as Y,g9 as Se,ga as T,gb as J,W as v,gc as Ie,gd as be,ge as Te,gf as ke,D as _e,s as Me,g as Z,V as Ce,G as De,gg as W,gh as A,gi as q,gj as Ne,gk as Ae,gl as Ee,gm as Ve,gn as Le,go as Pe,ev as Ue,aC as je,gp as Re}from"./tool-windows-DOIu9TAD.js";import{videoGenerationTool as qe}from"./video-generation-DnmTlWnm.js";import{getCanvasBoard as Ge,canvasInsertionTool as $e}from"./canvas-insertion-CdUQF7IV.js";import{g as z}from"./board-utils-CpAtoKn2.js";import{insertElementsToCanvas as ee,extractCodeBlock as E}from"./index-B2dttXd7.js";import{pptGenerationTool as ze}from"./ppt-generation-FzjP_rp0.js";import{v as Fe}from"./video-analyze-6v3Y-rUE.js";const rr=({items:t,language:e="zh",enableHoverPreview:r=!0,className:n,onRemove:i,removableStartIndex:s=0})=>{const[c,o]=M.useState(null),a=M.useCallback((l,p)=>{if(!r)return;const u=p.currentTarget.getBoundingClientRect(),h=u.left+u.width/2,y=u.top-10;o({type:l.type,url:l.url,text:l.text,x:h,y})},[r]),d=M.useCallback(()=>{o(null)},[]);return t.length===0?null:g.jsxDEV(g.Fragment,{children:[r&&c&&ce.createPortal(g.jsxDEV("div",{className:`selected-content-preview__hover selected-content-preview__hover--${c.type}`,style:{left:`${c.x}px`,top:`${c.y}px`,transform:"translate(-50%, -100%)"},children:[(c.type==="image"||c.type==="graphics")&&c.url&&g.jsxDEV("img",{src:c.url,alt:"Preview"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:86,columnNumber:13},void 0),c.type==="video"&&c.url&&g.jsxDEV("div",{className:"selected-content-preview__hover-video",children:g.jsxDEV("video",{src:c.url,controls:!0,autoPlay:!0,muted:!0,loop:!0,playsInline:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:92,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:91,columnNumber:13},void 0),c.type==="text"&&c.text&&g.jsxDEV("div",{className:"selected-content-preview__hover-text",children:[g.jsxDEV("div",{className:"selected-content-preview__hover-text-header",children:[g.jsxDEV(B,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:107,columnNumber:17},void 0),g.jsxDEV("span",{children:e==="zh"?"文字内容":"Text Content"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:108,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:106,columnNumber:15},void 0),g.jsxDEV("div",{className:"selected-content-preview__hover-text-content",children:c.text},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:110,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:105,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:76,columnNumber:9},void 0),document.body),g.jsxDEV("div",{className:`selected-content-preview ${n||""}`,children:t.map((l,p)=>{const u=i&&p<s;return g.jsxDEV("div",{className:`selected-content-preview__item selected-content-preview__item--${l.type}`,onMouseEnter:h=>a(l,h),onMouseLeave:d,children:[l.type==="text"?g.jsxDEV("div",{className:"selected-content-preview__text",children:[g.jsxDEV(B,{size:14,className:"selected-content-preview__text-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:136,columnNumber:19},void 0),g.jsxDEV("span",{className:"selected-content-preview__text-content",children:l.text&&l.text.length>20?`${l.text.substring(0,20)}...`:l.text},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:137,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:135,columnNumber:17},void 0):l.type==="video"?g.jsxDEV(g.Fragment,{children:[g.jsxDEV("div",{className:"selected-content-preview__video-placeholder",children:g.jsxDEV(de,{size:20},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:147,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:146,columnNumber:19},void 0),g.jsxDEV("div",{className:"selected-content-preview__video-overlay",children:g.jsxDEV(ue,{size:16,fill:"white"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:150,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:149,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:145,columnNumber:17},void 0):g.jsxDEV("img",{src:l.url,alt:l.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:155,columnNumber:17},void 0),l.type==="graphics"&&g.jsxDEV("span",{className:"selected-content-preview__label",children:e==="zh"?"图形":"Graphics"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:160,columnNumber:17},void 0),l.type==="video"&&g.jsxDEV("span",{className:"selected-content-preview__label selected-content-preview__label--video",children:e==="zh"?"视频":"Video"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:167,columnNumber:17},void 0),u&&g.jsxDEV("button",{className:"selected-content-preview__remove-btn",onClick:h=>{h.stopPropagation(),i(p)},onMouseDown:h=>h.preventDefault(),title:e==="zh"?"移除":"Remove",children:g.jsxDEV(le,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:183,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:174,columnNumber:17},void 0)]},`${l.type}-${p}`,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:126,columnNumber:13},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:120,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:73,columnNumber:5},void 0)};function _(t){return t.tagName==="TEXTAREA"||t.tagName==="INPUT"}function Oe(t){const e=t.selectionStart||0,r=t.selectionEnd||0;return t.value.substring(e,r)}function te(t){const e=window.getSelection();if(!e||e.rangeCount===0)return"";const r=e.getRangeAt(0);return t.contains(r.commonAncestorContainer)?e.toString():""}function j(t){return _(t)?Oe(t):te(t)}function nr(t,e={}){const{enableCopy:r=!0,stopPropagation:n=!0}=e,i=M.useRef(null);return M.useEffect(()=>{const s=t.current;if(!s)return;const c=m=>!m||!(m instanceof HTMLElement)?!1:!!(["BUTTON","A","INPUT","SELECT","TEXTAREA","LABEL"].includes(m.tagName)||m.onclick||m.getAttribute("role")==="button"||m.closest('button, a, [role="button"], [onclick]')),o=()=>{const m=window.getSelection();return m!==null&&m.toString().length>0},a=m=>{n&&(c(m.target)||o()&&m.stopPropagation())},d=m=>{n&&(c(m.target)||m.stopPropagation())},l=m=>{const f=(m.ctrlKey||m.metaKey)&&m.key==="c",w=(m.ctrlKey||m.metaKey)&&m.key==="x";if(r&&(f||w)){const I=j(s);I&&me(I).then(()=>{}).catch(D=>{console.error("Failed to copy text:",D)}),n&&m.stopPropagation()}},p=m=>{if(r){const f=j(s);f&&m.clipboardData&&(m.clipboardData.setData("text/plain",f),m.preventDefault())}n&&m.stopPropagation()},u=m=>{if(r){const f=j(s);f&&m.clipboardData&&m.clipboardData.setData("text/plain",f)}n&&m.stopPropagation()},h=()=>{if(_(s)){const m=s.selectionStart||0,f=s.selectionEnd||0;m!==f&&(i.current={text:s.value.substring(m,f),start:m,end:f})}else{const m=te(s);m&&(i.current={text:m})}},y=()=>{_(s)||h()};return s.addEventListener("pointerdown",d),s.addEventListener("mousedown",d),s.addEventListener("pointerup",a),s.addEventListener("pointermove",a),s.addEventListener("mouseup",a),s.addEventListener("click",a),s.addEventListener("keydown",l),s.addEventListener("copy",p),s.addEventListener("cut",u),_(s)?s.addEventListener("select",h):document.addEventListener("selectionchange",y),()=>{s.removeEventListener("pointerdown",d),s.removeEventListener("mousedown",d),s.removeEventListener("pointerup",a),s.removeEventListener("pointermove",a),s.removeEventListener("mouseup",a),s.removeEventListener("click",a),s.removeEventListener("keydown",l),s.removeEventListener("copy",p),s.removeEventListener("cut",u),_(s)?s.removeEventListener("select",h):document.removeEventListener("selectionchange",y)}},[t,r,n]),{lastSelection:i.current}}function G(){const t=V.get();return(t==null?void 0:t.audioModelName)||K()}async function Be(t){const e=Q(t.prompt);if(e)return e;try{const r=await pe.generateAudioWithPolling({model:t.model||G(),modelRef:t.modelRef||null,prompt:t.prompt,sunoAction:t.sunoAction,notifyHook:t.notifyHook,title:t.title,tags:t.tags,mv:t.mv,continueClipId:t.continueClipId,continueTaskId:t.continueTaskId,continueAt:t.continueAt,infillStartS:t.infillStartS,infillEndS:t.infillEndS,params:{...t.params||{},...t.continueSource?{continueSource:t.continueSource}:{}}}),n=he(r);return{success:!0,data:{url:n.url,urls:n.urls,resultKind:n.resultKind,title:n.title,lyricsText:n.lyricsText,lyricsTitle:n.lyricsTitle,lyricsTags:n.lyricsTags,duration:n.duration,imageUrl:n.imageUrl,format:n.format||(n.resultKind==="lyrics"?"lyrics":"mp3"),providerTaskId:n.providerTaskId,primaryClipId:n.primaryClipId,clipIds:n.clipIds,clips:n.clips},type:"audio"}}catch(r){return{success:!1,error:r.message||"音频生成失败",type:"error"}}}function We(t){return{taskType:S.AUDIO,resultType:"audio",getDefaultModel:G,maxCount:1,buildTaskPayload:()=>({prompt:t.prompt,model:t.model||G(),modelRef:t.modelRef||null,sunoAction:t.sunoAction,notifyHook:t.notifyHook,title:t.title,tags:t.tags,mv:t.mv,continueClipId:t.continueClipId,continueTaskId:t.continueTaskId,continueAt:t.continueAt,infillStartS:t.infillStartS,infillEndS:t.infillEndS,...t.params||t.continueSource?{params:{...t.params||{},...t.continueSource?{continueSource:t.continueSource}:{}}}:{}}),buildResultData:()=>({mv:t.mv})}}async function He(t,e={}){return(e.mode||"async")==="queue"?X(t,e,We(t)):Be(t)}const Xe={name:"generate_audio",description:"生成音频或音乐,可用于 Suno 音乐生成与续写",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{prompt:{type:"string",description:"音乐描述或歌词内容"},model:{type:"string",description:"音频能力模型 ID,默认 suno_music"},title:{type:"string",description:"歌曲标题"},sunoAction:{type:"string",description:"Suno 动作类型,music 或 lyrics"},notifyHook:{type:"string",description:"歌词生成完成后的回调地址"},tags:{type:"string",description:"风格标签,逗号分隔"},mv:{type:"string",description:"Suno 版本字段,如 chirp-v5-5、chirp-v5、chirp-v4-5、chirp-v4、chirp-v3-5"},continueClipId:{type:"string",description:"续写目标 clip ID"},continueTaskId:{type:"string",description:"续写目标所属任务 task_id"},continueSource:{type:"string",description:"续写来源,clip 或 upload;upload 会自动拼接 -upload 版本"},continueAt:{type:"number",description:"从第几秒开始续写"},infillStartS:{type:"number",description:"Infill 开始秒数"},infillEndS:{type:"number",description:"Infill 结束秒数"}},required:["prompt"]},async execute(t,e){return He(t,e)}};function $(){const t=V.get();return(t==null?void 0:t.textModelName)||ge()}function Qe(t){return typeof t=="object"&&t!==null&&typeof t.prompt=="string"}async function Ke(t,e={}){const r=Q(t.prompt);if(r)return r;try{return{success:!0,data:await fe.getFallbackExecutor().generateText({prompt:t.prompt,model:t.model||$(),modelRef:t.modelRef||null,referenceImages:t.referenceImages,params:t.params},void 0),type:"text"}}catch(n){return{success:!1,error:n.message||"文本生成失败",type:"error"}}}function Ye(t){return{taskType:S.CHAT,resultType:"text",getDefaultModel:$,maxCount:1,buildTaskPayload:()=>({prompt:t.prompt,model:t.model||$(),modelRef:t.modelRef||null,referenceImages:t.referenceImages,...t.params?{params:t.params}:{}})}}async function Je(t,e={}){return(e.mode||"async")==="queue"?X(t,e,Ye(t)):Ke(t,e)}const Ze={name:"generate_text",description:"生成纯文本内容,可用于文章、摘要、说明、Markdown 等文本直出场景",supportedModes:["async","queue"],execute:async(t,e)=>Qe(t)?Je(t,e):{success:!1,error:"缺少必填参数 prompt",type:"error"},inputSchema:{type:"object",properties:{prompt:{type:"string",description:"文本生成提示词"},model:{type:"string",description:"文本模型 ID,默认使用当前文本路由模型"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于图像理解后输出文本",items:{type:"string"}},params:{type:"object",description:"文本模型额外参数,如 temperature、top_p、max_tokens"}},required:["prompt"]}},et={name:"ai_analyze",description:`AI 分析工具。调用文本模型分析用户意图,决定需要执行的操作。
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-D61Le6TE.css"])))=>i.map(i=>d[i]);
2
+ import{Y as M,$ as g,eV as ce,ge as B,au as de,cT as ue,c_ as le,bQ as me,o as X,T as S,v as Q,gf as pe,gg as he,q as V,ds as K,ey as fe,d_ as ge,gh as ye,dF as xe,k as we,du as ve,am as Y,gi as Se,gj as T,gk as J,X as v,gl as Ie,gm as be,gn as Te,go as ke,D as _e,s as Me,g as Z,V as De,H as Ce,gp as W,gq as A,gr as q,gs as Ne,gt as Ae,gu as Ee,gv as Ve,gw as Le,gx as Pe,eF as Ue,aE as je,gy as Re}from"./tool-windows-BEnZdJqF.js";import{videoGenerationTool as qe}from"./video-generation-BXhS7x-a.js";import{getCanvasBoard as Ge,canvasInsertionTool as $e}from"./canvas-insertion-CKIoVZ9a.js";import{g as F}from"./board-utils-CpAtoKn2.js";import{insertElementsToCanvas as ee,extractCodeBlock as E}from"./index-D2Kc-3MO.js";import{pptGenerationTool as Fe}from"./ppt-generation-B5fKT_by.js";import{v as ze}from"./video-analyze-CpbnpSiI.js";const rr=({items:t,language:e="zh",enableHoverPreview:r=!0,className:n,onRemove:i,removableStartIndex:s=0})=>{const[c,o]=M.useState(null),a=M.useCallback((u,p)=>{if(!r)return;const l=p.currentTarget.getBoundingClientRect(),f=l.left+l.width/2,y=l.top-10;o({type:u.type,url:u.url,text:u.text,x:f,y})},[r]),d=M.useCallback(()=>{o(null)},[]);return t.length===0?null:g.jsxDEV(g.Fragment,{children:[r&&c&&ce.createPortal(g.jsxDEV("div",{className:`selected-content-preview__hover selected-content-preview__hover--${c.type}`,style:{left:`${c.x}px`,top:`${c.y}px`,transform:"translate(-50%, -100%)"},children:[(c.type==="image"||c.type==="graphics")&&c.url&&g.jsxDEV("img",{src:c.url,alt:"Preview"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:86,columnNumber:13},void 0),c.type==="video"&&c.url&&g.jsxDEV("div",{className:"selected-content-preview__hover-video",children:g.jsxDEV("video",{src:c.url,controls:!0,autoPlay:!0,muted:!0,loop:!0,playsInline:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:92,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:91,columnNumber:13},void 0),c.type==="text"&&c.text&&g.jsxDEV("div",{className:"selected-content-preview__hover-text",children:[g.jsxDEV("div",{className:"selected-content-preview__hover-text-header",children:[g.jsxDEV(B,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:107,columnNumber:17},void 0),g.jsxDEV("span",{children:e==="zh"?"文字内容":"Text Content"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:108,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:106,columnNumber:15},void 0),g.jsxDEV("div",{className:"selected-content-preview__hover-text-content",children:c.text},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:110,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:105,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:76,columnNumber:9},void 0),document.body),g.jsxDEV("div",{className:`selected-content-preview ${n||""}`,children:t.map((u,p)=>{const l=i&&p<s;return g.jsxDEV("div",{className:`selected-content-preview__item selected-content-preview__item--${u.type}`,onMouseEnter:f=>a(u,f),onMouseLeave:d,children:[u.type==="text"?g.jsxDEV("div",{className:"selected-content-preview__text",children:[g.jsxDEV(B,{size:14,className:"selected-content-preview__text-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:136,columnNumber:19},void 0),g.jsxDEV("span",{className:"selected-content-preview__text-content",children:u.text&&u.text.length>20?`${u.text.substring(0,20)}...`:u.text},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:137,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:135,columnNumber:17},void 0):u.type==="video"?g.jsxDEV(g.Fragment,{children:[g.jsxDEV("div",{className:"selected-content-preview__video-placeholder",children:g.jsxDEV(de,{size:20},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:147,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:146,columnNumber:19},void 0),g.jsxDEV("div",{className:"selected-content-preview__video-overlay",children:g.jsxDEV(ue,{size:16,fill:"white"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:150,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:149,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:145,columnNumber:17},void 0):g.jsxDEV("img",{src:u.url,alt:u.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:155,columnNumber:17},void 0),u.type==="graphics"&&g.jsxDEV("span",{className:"selected-content-preview__label",children:e==="zh"?"图形":"Graphics"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:160,columnNumber:17},void 0),u.type==="video"&&g.jsxDEV("span",{className:"selected-content-preview__label selected-content-preview__label--video",children:e==="zh"?"视频":"Video"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:167,columnNumber:17},void 0),l&&g.jsxDEV("button",{className:"selected-content-preview__remove-btn",onClick:f=>{f.stopPropagation(),i(p)},onMouseDown:f=>f.preventDefault(),title:e==="zh"?"移除":"Remove",children:g.jsxDEV(le,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:183,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:174,columnNumber:17},void 0)]},`${u.type}-${p}`,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:126,columnNumber:13},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:120,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:73,columnNumber:5},void 0)};function _(t){return t.tagName==="TEXTAREA"||t.tagName==="INPUT"}function Oe(t){const e=t.selectionStart||0,r=t.selectionEnd||0;return t.value.substring(e,r)}function te(t){const e=window.getSelection();if(!e||e.rangeCount===0)return"";const r=e.getRangeAt(0);return t.contains(r.commonAncestorContainer)?e.toString():""}function j(t){return _(t)?Oe(t):te(t)}function nr(t,e={}){const{enableCopy:r=!0,stopPropagation:n=!0}=e,i=M.useRef(null);return M.useEffect(()=>{const s=t.current;if(!s)return;const c=m=>!m||!(m instanceof HTMLElement)?!1:!!(["BUTTON","A","INPUT","SELECT","TEXTAREA","LABEL"].includes(m.tagName)||m.onclick||m.getAttribute("role")==="button"||m.closest('button, a, [role="button"], [onclick]')),o=()=>{const m=window.getSelection();return m!==null&&m.toString().length>0},a=m=>{n&&(c(m.target)||o()&&m.stopPropagation())},d=m=>{n&&(c(m.target)||m.stopPropagation())},u=m=>{const h=(m.ctrlKey||m.metaKey)&&m.key==="c",w=(m.ctrlKey||m.metaKey)&&m.key==="x";if(r&&(h||w)){const I=j(s);I&&me(I).then(()=>{}).catch(C=>{console.error("Failed to copy text:",C)}),n&&m.stopPropagation()}},p=m=>{if(r){const h=j(s);h&&m.clipboardData&&(m.clipboardData.setData("text/plain",h),m.preventDefault())}n&&m.stopPropagation()},l=m=>{if(r){const h=j(s);h&&m.clipboardData&&m.clipboardData.setData("text/plain",h)}n&&m.stopPropagation()},f=()=>{if(_(s)){const m=s.selectionStart||0,h=s.selectionEnd||0;m!==h&&(i.current={text:s.value.substring(m,h),start:m,end:h})}else{const m=te(s);m&&(i.current={text:m})}},y=()=>{_(s)||f()};return s.addEventListener("pointerdown",d),s.addEventListener("mousedown",d),s.addEventListener("pointerup",a),s.addEventListener("pointermove",a),s.addEventListener("mouseup",a),s.addEventListener("click",a),s.addEventListener("keydown",u),s.addEventListener("copy",p),s.addEventListener("cut",l),_(s)?s.addEventListener("select",f):document.addEventListener("selectionchange",y),()=>{s.removeEventListener("pointerdown",d),s.removeEventListener("mousedown",d),s.removeEventListener("pointerup",a),s.removeEventListener("pointermove",a),s.removeEventListener("mouseup",a),s.removeEventListener("click",a),s.removeEventListener("keydown",u),s.removeEventListener("copy",p),s.removeEventListener("cut",l),_(s)?s.removeEventListener("select",f):document.removeEventListener("selectionchange",y)}},[t,r,n]),{lastSelection:i.current}}function G(){const t=V.get();return(t==null?void 0:t.audioModelName)||K()}async function Be(t){const e=Q(t.prompt);if(e)return e;try{const r=await pe.generateAudioWithPolling({model:t.model||G(),modelRef:t.modelRef||null,prompt:t.prompt,sunoAction:t.sunoAction,notifyHook:t.notifyHook,title:t.title,tags:t.tags,mv:t.mv,continueClipId:t.continueClipId,continueTaskId:t.continueTaskId,continueAt:t.continueAt,infillStartS:t.infillStartS,infillEndS:t.infillEndS,params:{...t.params||{},...t.continueSource?{continueSource:t.continueSource}:{}}}),n=he(r);return{success:!0,data:{url:n.url,urls:n.urls,resultKind:n.resultKind,title:n.title,lyricsText:n.lyricsText,lyricsTitle:n.lyricsTitle,lyricsTags:n.lyricsTags,duration:n.duration,imageUrl:n.imageUrl,format:n.format||(n.resultKind==="lyrics"?"lyrics":"mp3"),providerTaskId:n.providerTaskId,primaryClipId:n.primaryClipId,clipIds:n.clipIds,clips:n.clips},type:"audio"}}catch(r){return{success:!1,error:r.message||"音频生成失败",type:"error"}}}function We(t){return{taskType:S.AUDIO,resultType:"audio",getDefaultModel:G,maxCount:1,buildTaskPayload:()=>({prompt:t.prompt,model:t.model||G(),modelRef:t.modelRef||null,sunoAction:t.sunoAction,notifyHook:t.notifyHook,title:t.title,tags:t.tags,mv:t.mv,continueClipId:t.continueClipId,continueTaskId:t.continueTaskId,continueAt:t.continueAt,infillStartS:t.infillStartS,infillEndS:t.infillEndS,promptMeta:t.promptMeta,...t.params||t.continueSource?{params:{...t.params||{},...t.continueSource?{continueSource:t.continueSource}:{}}}:{}}),buildResultData:()=>({mv:t.mv})}}async function He(t,e={}){return(e.mode||"async")==="queue"?X(t,e,We(t)):Be(t)}const Xe={name:"generate_audio",description:"生成音频或音乐,可用于 Suno 音乐生成与续写",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{prompt:{type:"string",description:"音乐描述或歌词内容"},model:{type:"string",description:"音频能力模型 ID,默认 suno_music"},title:{type:"string",description:"歌曲标题"},sunoAction:{type:"string",description:"Suno 动作类型,music 或 lyrics"},notifyHook:{type:"string",description:"歌词生成完成后的回调地址"},tags:{type:"string",description:"风格标签,逗号分隔"},mv:{type:"string",description:"Suno 版本字段,如 chirp-v5-5、chirp-v5、chirp-v4-5、chirp-v4、chirp-v3-5"},continueClipId:{type:"string",description:"续写目标 clip ID"},continueTaskId:{type:"string",description:"续写目标所属任务 task_id"},continueSource:{type:"string",description:"续写来源,clip 或 upload;upload 会自动拼接 -upload 版本"},continueAt:{type:"number",description:"从第几秒开始续写"},infillStartS:{type:"number",description:"Infill 开始秒数"},infillEndS:{type:"number",description:"Infill 结束秒数"}},required:["prompt"]},async execute(t,e){return He(t,e)}};function $(){const t=V.get();return(t==null?void 0:t.textModelName)||ge()}function Qe(t){return typeof t=="object"&&t!==null&&typeof t.prompt=="string"}async function Ke(t,e={}){const r=Q(t.prompt);if(r)return r;try{return{success:!0,data:await fe.getFallbackExecutor().generateText({prompt:t.prompt,model:t.model||$(),modelRef:t.modelRef||null,referenceImages:t.referenceImages,params:t.params},void 0),type:"text"}}catch(n){return{success:!1,error:n.message||"文本生成失败",type:"error"}}}function Ye(t){return{taskType:S.CHAT,resultType:"text",getDefaultModel:$,maxCount:1,buildTaskPayload:()=>({prompt:t.prompt,model:t.model||$(),modelRef:t.modelRef||null,referenceImages:t.referenceImages,promptMeta:t.promptMeta,...t.params?{params:t.params}:{}})}}async function Je(t,e={}){return(e.mode||"async")==="queue"?X(t,e,Ye(t)):Ke(t,e)}const Ze={name:"generate_text",description:"生成纯文本内容,可用于文章、摘要、说明、Markdown 等文本直出场景",supportedModes:["async","queue"],execute:async(t,e)=>Qe(t)?Je(t,e):{success:!1,error:"缺少必填参数 prompt",type:"error"},inputSchema:{type:"object",properties:{prompt:{type:"string",description:"文本生成提示词"},model:{type:"string",description:"文本模型 ID,默认使用当前文本路由模型"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于图像理解后输出文本",items:{type:"string"}},params:{type:"object",description:"文本模型额外参数,如 temperature、top_p、max_tokens"}},required:["prompt"]}},et={name:"ai_analyze",description:`AI 分析工具。调用文本模型分析用户意图,决定需要执行的操作。
3
3
 
4
4
  使用场景:
5
5
  - 用户输入包含额外要求或复杂指令
@@ -7,7 +7,7 @@ import{aj as M,ai as g,eK as ce,g5 as B,as as de,cI as ue,cP as le,bO as me,o as
7
7
  - 用户选择了文本内容作为生成素材
8
8
 
9
9
  不适用场景:
10
- - 简单的直接生成(使用 generate_image 或 generate_video)`,inputSchema:{type:"object",properties:{context:{type:"object",description:"Agent 执行上下文,包含用户指令、选中内容等"},textModel:{type:"string",description:"使用的文本模型 ID"},messages:{type:"array",description:"预构建的消息数组,传入时直接使用,不再生成默认系统提示词(用于 Skill 角色扮演/精准工具注入)"}},required:["context"]},supportedModes:["async"],execute:async(t,e)=>{var a;const{context:r,textModel:n,messages:i,modelRef:s}=t;if(!r)return{success:!1,error:"缺少必填参数 context",type:"error"};const c=Date.now(),o=[];try{console.log("[AIAnalyzeTool] 开始分析:",{userInstruction:(a=r.userInstruction)==null?void 0:a.substring(0,50),model:r.model,textModel:n,hasCustomMessages:!!i});const d=await ye.execute(r,{model:n||r.model.id,modelRef:s||null,messages:i,onChunk:p=>{var u;(u=e==null?void 0:e.onChunk)==null||u.call(e,p)},onToolCall:p=>{var m;const u=V.get(),h=xe(p.name,{...p.arguments},{defaultModels:r.defaultModels,defaultModelRefs:r.defaultModelRefs,contextModel:r.model,contextModelRef:s||null,fallbackModels:{image:u.imageModelName||ve(),video:u.videoModelName||we(),audio:u.audioModelName||K()}}),y={id:`step-tool-${Date.now()}-${Math.random().toString(36).substring(2,6)}`,mcp:p.name,args:h,description:tt(p.name,h),status:"running"};o.push(y),(m=e==null?void 0:e.onAddSteps)==null||m.call(e,[y])},onToolResult:p=>{var u;if(o.length>0){const h=o[o.length-1];h.status=p.success?"completed":"failed",(u=e==null?void 0:e.onUpdateStep)==null||u.call(e,h.id,h.status,p.data,p.error)}}}),l=Date.now()-c;return d.success?{success:!0,type:"text",data:{response:d.response,generatedSteps:o,duration:l}}:{success:!1,error:d.error||"AI 分析失败",type:"error",data:{duration:l,generatedSteps:o}}}catch(d){return console.error("[AIAnalyzeTool] Analysis failed:",d),{success:!1,error:d.message||"AI 分析失败",type:"error",data:{duration:Date.now()-c,generatedSteps:o}}}}};function tt(t,e){switch(t){case"generate_image":return`生成图片: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_video":return`生成视频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_audio":return`生成音频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_ppt":return`生成PPT: ${((e==null?void 0:e.topic)||"").substring(0,30)}...`;case"generate_grid_image":return`生成宫格图: ${((e==null?void 0:e.theme)||"").substring(0,30)}...`;case"insert_svg":return"插入SVG矢量图";case"canvas_insertion":case"insert_to_canvas":return"插入到画布";default:return`执行 ${t}`}}const re={loaded:!1,api:new Promise((t,e)=>{Y(()=>import("./index-C5eu4uSl.js").then(r=>r.aq),__vite__mapDeps([0]),import.meta.url).then(r=>{re.loaded=!0,t(r)}).catch(e)})};function rt(t){return E(t,"mermaid")}function nt(t){const e=t.trim().toLowerCase();return e.startsWith("flowchart")||e.startsWith("graph")?"flowchart":e.startsWith("sequencediagram")?"sequence":e.startsWith("classdiagram")?"classDiagram":e.startsWith("statediagram")?"stateDiagram":e.startsWith("erdiagram")?"erDiagram":e.startsWith("gantt")?"gantt":e.startsWith("pie")?"pie":e.startsWith("mindmap")?"mindmap":"unknown"}async function st(t){const e=z();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{mermaid:r}=t;if(!r||typeof r!="string"||r.trim()==="")return{success:!1,error:"缺少必填参数 mermaid,请提供有效的Mermaid markdown字符串",type:"error"};try{const n=rt(r),i=nt(n),s=await re.api;let c;try{c=await s.parseMermaidToDrawnix(n)}catch(d){console.warn("[MermaidTool] First parse attempt failed, retrying with quote replacement:",d.message),c=await s.parseMermaidToDrawnix(n.replace(/"/g,"'"))}const{elements:o}=c;if(!o||o.length===0)return{success:!1,error:"Mermaid代码解析成功,但未生成任何图表元素",type:"error"};const a=ee(e,o);return a.success?{success:!0,data:{diagramType:i,elementsCount:a.elementsCount,mermaidCode:n.substring(0,200)+(n.length>200?"...":"")},type:"canvas"}:{success:!1,error:a.error||"插入图表失败",type:"error"}}catch(n){return console.error("[MermaidTool] Failed to process mermaid:",n),{success:!1,error:`Mermaid转换失败: ${n.message||"未知错误"}`,type:"error"}}}const it={name:"insert_mermaid",description:`将Mermaid图表插入到画布工具。将Mermaid markdown语法转换为可视化图表并插入到画布中。
10
+ - 简单的直接生成(使用 generate_image 或 generate_video)`,inputSchema:{type:"object",properties:{context:{type:"object",description:"Agent 执行上下文,包含用户指令、选中内容等"},textModel:{type:"string",description:"使用的文本模型 ID"},messages:{type:"array",description:"预构建的消息数组,传入时直接使用,不再生成默认系统提示词(用于 Skill 角色扮演/精准工具注入)"}},required:["context"]},supportedModes:["async"],execute:async(t,e)=>{const{context:r,textModel:n,messages:i,modelRef:s}=t;if(!r)return{success:!1,error:"缺少必填参数 context",type:"error"};const c=Date.now(),o=[];try{const a=await ye.execute(r,{model:n||r.model.id,modelRef:s||null,messages:i,onChunk:u=>{var p;(p=e==null?void 0:e.onChunk)==null||p.call(e,u)},onToolCall:u=>{var y;const p=V.get(),l=xe(u.name,{...u.arguments},{defaultModels:r.defaultModels,defaultModelRefs:r.defaultModelRefs,contextModel:r.model,contextModelRef:s||null,fallbackModels:{image:p.imageModelName||ve(),video:p.videoModelName||we(),audio:p.audioModelName||K()}}),f={id:`step-tool-${Date.now()}-${Math.random().toString(36).substring(2,6)}`,mcp:u.name,args:l,description:tt(u.name,l),status:"running"};o.push(f),(y=e==null?void 0:e.onAddSteps)==null||y.call(e,[f])},onToolResult:u=>{var p;if(o.length>0){const l=o[o.length-1];l.status=u.success?"completed":"failed",(p=e==null?void 0:e.onUpdateStep)==null||p.call(e,l.id,l.status,u.data,u.error)}}}),d=Date.now()-c;return a.success?{success:!0,type:"text",data:{response:a.response,generatedSteps:o,duration:d}}:{success:!1,error:a.error||"AI 分析失败",type:"error",data:{duration:d,generatedSteps:o}}}catch(a){return console.error("[AIAnalyzeTool] Analysis failed:",a),{success:!1,error:a.message||"AI 分析失败",type:"error",data:{duration:Date.now()-c,generatedSteps:o}}}}};function tt(t,e){switch(t){case"generate_image":return`生成图片: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_video":return`生成视频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_audio":return`生成音频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_ppt":return`生成PPT: ${((e==null?void 0:e.topic)||"").substring(0,30)}...`;case"generate_grid_image":return`生成宫格图: ${((e==null?void 0:e.theme)||"").substring(0,30)}...`;case"insert_svg":return"插入SVG矢量图";case"canvas_insertion":case"insert_to_canvas":return"插入到画布";default:return`执行 ${t}`}}const re={loaded:!1,api:new Promise((t,e)=>{Y(()=>import("./index-0b_TeH8L.js").then(r=>r.aq),__vite__mapDeps([0]),import.meta.url).then(r=>{re.loaded=!0,t(r)}).catch(e)})};function rt(t){return E(t,"mermaid")}function nt(t){const e=t.trim().toLowerCase();return e.startsWith("flowchart")||e.startsWith("graph")?"flowchart":e.startsWith("sequencediagram")?"sequence":e.startsWith("classdiagram")?"classDiagram":e.startsWith("statediagram")?"stateDiagram":e.startsWith("erdiagram")?"erDiagram":e.startsWith("gantt")?"gantt":e.startsWith("pie")?"pie":e.startsWith("mindmap")?"mindmap":"unknown"}async function st(t){const e=F();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{mermaid:r}=t;if(!r||typeof r!="string"||r.trim()==="")return{success:!1,error:"缺少必填参数 mermaid,请提供有效的Mermaid markdown字符串",type:"error"};try{const n=rt(r),i=nt(n),s=await re.api;let c;try{c=await s.parseMermaidToDrawnix(n)}catch(d){console.warn("[MermaidTool] First parse attempt failed, retrying with quote replacement:",d.message),c=await s.parseMermaidToDrawnix(n.replace(/"/g,"'"))}const{elements:o}=c;if(!o||o.length===0)return{success:!1,error:"Mermaid代码解析成功,但未生成任何图表元素",type:"error"};const a=ee(e,o);return a.success?{success:!0,data:{diagramType:i,elementsCount:a.elementsCount,mermaidCode:n.substring(0,200)+(n.length>200?"...":"")},type:"canvas"}:{success:!1,error:a.error||"插入图表失败",type:"error"}}catch(n){return console.error("[MermaidTool] Failed to process mermaid:",n),{success:!1,error:`Mermaid转换失败: ${n.message||"未知错误"}`,type:"error"}}}const it={name:"insert_mermaid",description:`将Mermaid图表插入到画布工具。将Mermaid markdown语法转换为可视化图表并插入到画布中。
11
11
 
12
12
  使用场景:
13
13
  - 用户需要在画布上创建流程图、时序图、类图等图表
@@ -40,7 +40,7 @@ sequenceDiagram
40
40
  AuthServer->>Client: 返回Access Token
41
41
  Client->>ResourceServer: 携带Token请求资源
42
42
  ResourceServer->>Client: 返回资源
43
- \`\`\``,inputSchema:{type:"object",properties:{mermaid:{type:"string",description:"Mermaid markdown字符串,可以是纯Mermaid代码或包含```mermaid代码块的markdown"}},required:["mermaid"]},execute:async t=>st(t)},ne={loaded:!1,api:new Promise((t,e)=>{Y(()=>import("./index-C3qD42ws.js"),__vite__mapDeps([0]),import.meta.url).then(r=>{ne.loaded=!0,t(r)}).catch(e)})};function ot(t){const e=E(t,"markdown");return e===t.trim(),e}async function at(t){const e=z();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{markdown:r}=t;if(!r||typeof r!="string"||r.trim()==="")return{success:!1,error:"缺少必填参数 markdown,请提供有效的 Markdown 思维导图定义",type:"error"};try{const n=ot(r),i=await ne.api;let s;try{s=await i.parseMarkdownToDrawnix(n)}catch(a){console.warn("[MindmapTool] First parse attempt failed, retrying with quote replacement:",a.message),s=await i.parseMarkdownToDrawnix(n.replace(/"/g,"'"))}if(!s)return{success:!1,error:"Markdown 解析成功,但未生成思维导图元素",type:"error"};s.points=[[0,0]];const o=ee(e,[s]);return o.success?{success:!0,data:{type:"mindmap",elementsCount:o.elementsCount,markdownPreview:n.substring(0,200)+(n.length>200?"...":"")},type:"canvas"}:{success:!1,error:o.error||"插入思维导图失败",type:"error"}}catch(n){return console.error("[MindmapTool] Failed to process markdown:",n),{success:!1,error:`思维导图转换失败: ${n.message||"未知错误"}`,type:"error"}}}const ct={name:"insert_mindmap",description:`将 Markdown 思维导图插入到画布工具。将 Markdown 语法转换为可视化思维导图并插入到画布中。
43
+ \`\`\``,inputSchema:{type:"object",properties:{mermaid:{type:"string",description:"Mermaid markdown字符串,可以是纯Mermaid代码或包含```mermaid代码块的markdown"}},required:["mermaid"]},execute:async t=>st(t)},ne={loaded:!1,api:new Promise((t,e)=>{Y(()=>import("./index-CjeDxq0c.js"),__vite__mapDeps([0]),import.meta.url).then(r=>{ne.loaded=!0,t(r)}).catch(e)})};function ot(t){const e=E(t,"markdown");return e===t.trim(),e}async function at(t){const e=F();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{markdown:r}=t;if(!r||typeof r!="string"||r.trim()==="")return{success:!1,error:"缺少必填参数 markdown,请提供有效的 Markdown 思维导图定义",type:"error"};try{const n=ot(r),i=await ne.api;let s;try{s=await i.parseMarkdownToDrawnix(n)}catch(a){console.warn("[MindmapTool] First parse attempt failed, retrying with quote replacement:",a.message),s=await i.parseMarkdownToDrawnix(n.replace(/"/g,"'"))}if(!s)return{success:!1,error:"Markdown 解析成功,但未生成思维导图元素",type:"error"};s.points=[[0,0]];const o=ee(e,[s]);return o.success?{success:!0,data:{type:"mindmap",elementsCount:o.elementsCount,markdownPreview:n.substring(0,200)+(n.length>200?"...":"")},type:"canvas"}:{success:!1,error:o.error||"插入思维导图失败",type:"error"}}catch(n){return console.error("[MindmapTool] Failed to process markdown:",n),{success:!1,error:`思维导图转换失败: ${n.message||"未知错误"}`,type:"error"}}}const ct={name:"insert_mindmap",description:`将 Markdown 思维导图插入到画布工具。将 Markdown 语法转换为可视化思维导图并插入到画布中。
44
44
 
45
45
  使用场景:
46
46
  - 用户需要在画布上创建思维导图
@@ -83,7 +83,7 @@ sequenceDiagram
83
83
  - 数据安全
84
84
  - 伦理规范
85
85
  \`\`\``,inputSchema:{type:"object",properties:{markdown:{type:"string",description:"Markdown 格式的思维导图定义,支持标题和列表语法"}},required:["markdown"]},execute:async t=>at(t)};function dt(){return Se.map(t=>`- ${t.style}(${t.labelZh}):${t.description}`).join(`
86
- `)}function ut(t,e){const r=Ie.zh;return r(t,e.rows,e.cols)}function lt(t,e){const{theme:r,rows:n=T.gridConfig.rows,cols:i=T.gridConfig.cols,layoutStyle:s=T.layoutStyle,imageSize:c=T.imageSize,imageQuality:o=T.imageQuality,referenceImages:a,model:d}=t,l=d||J();if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 theme(主题描述)",type:"error"};const p=Math.min(Math.max(2,n),5),u=Math.min(Math.max(2,i),5),h={rows:p,cols:u},y=ut(r,h),m=a==null?void 0:a.map((f,w)=>({type:"url",url:f,name:`reference-${w+1}`}));try{let f;if(e.retryTaskId){if(v.retryTask(e.retryTaskId),f=v.getTask(e.retryTaskId),!f)throw new Error(`重试任务不存在: ${e.retryTaskId}`)}else f=v.createTask({prompt:y,size:c,model:l,uploadedImages:m&&m.length>0?m:void 0,params:{resolution:o},gridImageRows:p,gridImageCols:u,gridImageLayoutStyle:s,originalTheme:r,batchId:e.batchId,globalIndex:e.globalIndex||1,autoInsertToCanvas:!0},S.IMAGE);return{success:!0,data:{taskId:f.id,theme:r,gridConfig:h,layoutStyle:s,prompt:y.substring(0,100)+"..."},type:"image",taskId:f.id,task:f}}catch(f){return console.error("[GridImageTool] Failed to create task:",f),{success:!1,error:f.message||"创建宫格图任务失败",type:"error"}}}const mt={name:"generate_grid_image",description:`宫格图生成工具。根据主题描述生成一组相关图片,并按照指定布局风格排列在画板上,形成宫格图效果。
86
+ `)}function ut(t,e){const r=Ie.zh;return r(t,e.rows,e.cols)}function lt(t,e){const{theme:r,rows:n=T.gridConfig.rows,cols:i=T.gridConfig.cols,layoutStyle:s=T.layoutStyle,imageSize:c=T.imageSize,imageQuality:o=T.imageQuality,referenceImages:a,model:d}=t,u=d||J();if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 theme(主题描述)",type:"error"};const p=Math.min(Math.max(2,n),5),l=Math.min(Math.max(2,i),5),f={rows:p,cols:l},y=ut(r,f),m=a==null?void 0:a.map((h,w)=>({type:"url",url:h,name:`reference-${w+1}`}));try{let h;if(e.retryTaskId){if(v.retryTask(e.retryTaskId),h=v.getTask(e.retryTaskId),!h)throw new Error(`重试任务不存在: ${e.retryTaskId}`)}else h=v.createTask({prompt:y,size:c,model:u,uploadedImages:m&&m.length>0?m:void 0,params:{resolution:o},gridImageRows:p,gridImageCols:l,gridImageLayoutStyle:s,originalTheme:r,batchId:e.batchId,globalIndex:e.globalIndex||1,autoInsertToCanvas:!0},S.IMAGE);return{success:!0,data:{taskId:h.id,theme:r,gridConfig:f,layoutStyle:s,prompt:y.substring(0,100)+"..."},type:"image",taskId:h.id,task:h}}catch(h){return console.error("[GridImageTool] Failed to create task:",h),{success:!1,error:h.message||"创建宫格图任务失败",type:"error"}}}const mt={name:"generate_grid_image",description:`宫格图生成工具。根据主题描述生成一组相关图片,并按照指定布局风格排列在画板上,形成宫格图效果。
87
87
 
88
88
  使用场景:
89
89
  - 用户想要创建宫格图、图片墙、产品展示墙
@@ -101,7 +101,7 @@ ${dt()}
101
101
 
102
102
  不适用场景:
103
103
  - 只想生成单张图片(使用 generate_image 工具)
104
- - 想要生成视频(使用 generate_video 工具)`,inputSchema:{type:"object",properties:{theme:{type:"string",description:'宫格图主题描述,如"孟菲斯风格餐具"、"可爱猫咪表情包"、"复古相机收藏"等'},rows:{type:"number",description:"网格行数,2-5 之间,默认 3",default:3},cols:{type:"number",description:"网格列数,2-5 之间,默认 3",default:3},layoutStyle:{type:"string",description:"布局风格",enum:["scattered","grid","circular"],default:"scattered"},imageSize:{type:"string",description:"生成图片的尺寸比例",enum:["1x1","16x9","9x16","3x2","4x3"],default:"1x1"},imageQuality:{type:"string",description:"图片质量",enum:["1k","2k","4k"],default:"2k"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于风格参考",items:{type:"string"}},model:{type:"string",description:"图片生成模型名称(可选,默认使用当前设置的模型)"}},required:["theme"]},supportedModes:["queue"],promptGuidance:{whenToUse:"当用户想要生成多个相关主题的图片并以宫格图/拼贴画形式展示时使用。关键词:宫格图、九宫格、图片墙、表情包、产品展示、拼贴画、系列图片。",parameterGuidance:{theme:'主题描述应该具体且有多样性潜力。好的主题:描述一类事物的多种变体(如"不同品种的可爱猫咪"、"各种颜色的马卡龙")。避免:过于具体的单一描述(如"一只橘猫")。',rows:"根据内容数量决定:表情包通常3x3或4x4,产品展示2x3或3x4,大型展示4x4或5x5。",cols:"建议与rows相同创建正方形网格,或cols略大于rows创建横向布局。",layoutStyle:"scattered(散落)适合艺术感展示;grid(网格)适合产品目录;circular(环形)适合突出中心主题。"},bestPractices:['主题应强调多样性,如"各种姿态的猫咪"而非"一只猫"','描述具体的视觉风格,如"扁平插画风格"、"3D渲染"、"水彩画风"','对于表情包,明确情绪类型如"开心、惊讶、生气、困惑等表情"','对于产品展示,说明产品类别和风格如"北欧简约风格家具"'],examples:[{input:"生成一个猫咪表情包",args:{theme:"可爱猫咪表情包,包含开心、惊讶、生气、困惑、得意、卖萌等各种有趣表情,卡通风格",rows:4,cols:4,layoutStyle:"grid"},explanation:"表情包适合用网格布局,主题描述了多种表情变体"},{input:"做一个孟菲斯风格的餐具宫格图",args:{theme:"孟菲斯风格餐具,包含碗、盘、杯、勺等不同类型,色彩鲜艳,几何图案装饰,白色背景",rows:3,cols:3,layoutStyle:"scattered"},explanation:"散落布局增加艺术感,主题明确了风格和物品多样性"},{input:"创建花卉插画集",args:{theme:"水彩风格花卉插画,包含玫瑰、向日葵、郁金香、樱花、薰衣草等不同种类的花朵,柔和色彩",rows:4,cols:4,layoutStyle:"scattered"},explanation:"4x4网格提供更多展示空间,主题列举了多种花卉种类"},{input:"做个美食九宫格",args:{theme:"精致甜点美食摄影,包含蛋糕、马卡龙、泡芙、冰淇淋等各式甜品,俯视角度,浅色背景",rows:3,cols:3,layoutStyle:"grid"},explanation:"美食九宫格用网格布局更整齐,俯视角度适合食物展示"}],warnings:['避免主题过于抽象(如"美丽的东西"),应该具体到某类事物',"rows 和 cols 的乘积即生成图片数量,过大(如5x5=25张)会增加处理时间","生成后系统会自动拆分图片,请确保主题适合被分割成独立元素"]},execute:async(t,e)=>lt(t,e||{})};function pt(t,e){const r=Te.zh;return r(t,e)}function ht(t,e){const{theme:r,imageCount:n=be.imageCount,imageSize:i="16x9",imageQuality:s="2k",referenceImages:c,model:o}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 theme(主题描述)",type:"error"};const a=Math.min(Math.max(1,n),16),d=pt(r,a),l=o||J(),p=c==null?void 0:c.map((u,h)=>({type:"url",url:u,name:`reference-${h+1}`}));try{let u;if(e.retryTaskId){if(v.retryTask(e.retryTaskId),u=v.getTask(e.retryTaskId),!u)throw new Error(`重试任务不存在: ${e.retryTaskId}`)}else u=v.createTask({prompt:d,size:i,model:l,uploadedImages:p&&p.length>0?p:void 0,params:{resolution:s},isInspirationBoard:!0,inspirationBoardImageCount:a,inspirationBoardLayoutStyle:"inspiration-board",originalTheme:r,batchId:e.batchId,globalIndex:e.globalIndex||1,autoInsertToCanvas:!0},S.IMAGE);return{success:!0,data:{taskId:u.id,theme:r,imageCount:a,prompt:d.substring(0,100)+"..."},type:"image",taskId:u.id,task:u}}catch(u){return console.error("[InspirationBoardTool] Failed to create task:",u),{success:!1,error:u.message||"创建灵感图任务失败",type:"error"}}}const ft={name:"generate_inspiration_board",description:`灵感图生成工具。根据主题描述生成一组等大小的高质量图片,
104
+ - 想要生成视频(使用 generate_video 工具)`,inputSchema:{type:"object",properties:{theme:{type:"string",description:'宫格图主题描述,如"孟菲斯风格餐具"、"可爱猫咪表情包"、"复古相机收藏"等'},rows:{type:"number",description:"网格行数,2-5 之间,默认 3",default:3},cols:{type:"number",description:"网格列数,2-5 之间,默认 3",default:3},layoutStyle:{type:"string",description:"布局风格",enum:["scattered","grid","circular"],default:"scattered"},imageSize:{type:"string",description:"生成图片的尺寸比例",enum:["1x1","16x9","9x16","3x2","4x3"],default:"1x1"},imageQuality:{type:"string",description:"图片质量",enum:["1k","2k","4k"],default:"2k"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于风格参考",items:{type:"string"}},model:{type:"string",description:"图片生成模型名称(可选,默认使用当前设置的模型)"}},required:["theme"]},supportedModes:["queue"],promptGuidance:{whenToUse:"当用户想要生成多个相关主题的图片并以宫格图/拼贴画形式展示时使用。关键词:宫格图、九宫格、图片墙、表情包、产品展示、拼贴画、系列图片。",parameterGuidance:{theme:'主题描述应该具体且有多样性潜力。好的主题:描述一类事物的多种变体(如"不同品种的可爱猫咪"、"各种颜色的马卡龙")。避免:过于具体的单一描述(如"一只橘猫")。',rows:"根据内容数量决定:表情包通常3x3或4x4,产品展示2x3或3x4,大型展示4x4或5x5。",cols:"建议与rows相同创建正方形网格,或cols略大于rows创建横向布局。",layoutStyle:"scattered(散落)适合艺术感展示;grid(网格)适合产品目录;circular(环形)适合突出中心主题。"},bestPractices:['主题应强调多样性,如"各种姿态的猫咪"而非"一只猫"','描述具体的视觉风格,如"扁平插画风格"、"3D渲染"、"水彩画风"','对于表情包,明确情绪类型如"开心、惊讶、生气、困惑等表情"','对于产品展示,说明产品类别和风格如"北欧简约风格家具"'],examples:[{input:"生成一个猫咪表情包",args:{theme:"可爱猫咪表情包,包含开心、惊讶、生气、困惑、得意、卖萌等各种有趣表情,卡通风格",rows:4,cols:4,layoutStyle:"grid"},explanation:"表情包适合用网格布局,主题描述了多种表情变体"},{input:"做一个孟菲斯风格的餐具宫格图",args:{theme:"孟菲斯风格餐具,包含碗、盘、杯、勺等不同类型,色彩鲜艳,几何图案装饰,白色背景",rows:3,cols:3,layoutStyle:"scattered"},explanation:"散落布局增加艺术感,主题明确了风格和物品多样性"},{input:"创建花卉插画集",args:{theme:"水彩风格花卉插画,包含玫瑰、向日葵、郁金香、樱花、薰衣草等不同种类的花朵,柔和色彩",rows:4,cols:4,layoutStyle:"scattered"},explanation:"4x4网格提供更多展示空间,主题列举了多种花卉种类"},{input:"做个美食九宫格",args:{theme:"精致甜点美食摄影,包含蛋糕、马卡龙、泡芙、冰淇淋等各式甜品,俯视角度,浅色背景",rows:3,cols:3,layoutStyle:"grid"},explanation:"美食九宫格用网格布局更整齐,俯视角度适合食物展示"}],warnings:['避免主题过于抽象(如"美丽的东西"),应该具体到某类事物',"rows 和 cols 的乘积即生成图片数量,过大(如5x5=25张)会增加处理时间","生成后系统会自动拆分图片,请确保主题适合被分割成独立元素"]},execute:async(t,e)=>lt(t,e||{})};function pt(t,e){const r=Te.zh;return r(t,e)}function ht(t,e){const{theme:r,imageCount:n=be.imageCount,imageSize:i="16x9",imageQuality:s="2k",referenceImages:c,model:o}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 theme(主题描述)",type:"error"};const a=Math.min(Math.max(1,n),16),d=pt(r,a),u=o||J(),p=c==null?void 0:c.map((l,f)=>({type:"url",url:l,name:`reference-${f+1}`}));try{let l;if(e.retryTaskId){if(v.retryTask(e.retryTaskId),l=v.getTask(e.retryTaskId),!l)throw new Error(`重试任务不存在: ${e.retryTaskId}`)}else l=v.createTask({prompt:d,size:i,model:u,uploadedImages:p&&p.length>0?p:void 0,params:{resolution:s},isInspirationBoard:!0,inspirationBoardImageCount:a,inspirationBoardLayoutStyle:"inspiration-board",originalTheme:r,batchId:e.batchId,globalIndex:e.globalIndex||1,autoInsertToCanvas:!0},S.IMAGE);return{success:!0,data:{taskId:l.id,theme:r,imageCount:a,prompt:d.substring(0,100)+"..."},type:"image",taskId:l.id,task:l}}catch(l){return console.error("[InspirationBoardTool] Failed to create task:",l),{success:!1,error:l.message||"创建灵感图任务失败",type:"error"}}}const ft={name:"generate_inspiration_board",description:`灵感图生成工具。根据主题描述生成一组等大小的高质量图片,
105
105
  以散落的横向布局插入画板,形成有创意感的灵感板效果。
106
106
 
107
107
  生成策略(重要):
@@ -145,7 +145,7 @@ ${dt()}
145
145
  不适用场景:
146
146
  - 想要生成图片(使用 generate_image 工具)
147
147
  - 想要生成宫格图(使用 generate_grid_image 工具)
148
- - 图片没有分割线也不是规则网格结构`,inputSchema:{type:"object",properties:{imageUrl:{type:"string",description:"要拆分的图片 URL(支持 http/https/base64/blob 格式)"}},required:["imageUrl"]},supportedModes:["direct"],execute:async(t,e)=>yt(t)},C={DEFAULT_VERTICAL_GAP:50,SVG_DEFAULT_WIDTH:400,SVG_MAX_WIDTH:800,SVG_MIN_WIDTH:100};function wt(t){let e=E(t,"svg");if(e===t&&(e=E(t,"xml")),e===t&&!e.trim().startsWith("<svg")){const r=e.match(/<svg[\s\S]*?<\/svg>/i);r&&(e=r[0])}return e.trim()}function vt(t){if(!t||typeof t!="string")return{valid:!1,error:"缺少SVG代码"};const e=t.trim();return!e.startsWith("<svg")&&!e.startsWith("<?xml")?{valid:!1,error:"SVG代码格式无效,必须以<svg开头"}:e.includes("</svg>")?{valid:!0}:{valid:!1,error:"SVG代码不完整,缺少</svg>结束标签"}}function St(t){let e=t.trim();return e.includes("xmlns=")||(e=e.replace("<svg",'<svg xmlns="http://www.w3.org/2000/svg"')),e}function It(t){const e=t.match(/viewBox=["']([^"']+)["']/i);if(e){const[,,i,s]=e[1].split(/\s+/).map(Number);if(i&&s)return{width:i,height:s}}const r=t.match(/width=["'](\d+)(?:px)?["']/i),n=t.match(/height=["'](\d+)(?:px)?["']/i);return r&&n?{width:parseInt(r[1]),height:parseInt(n[1])}:{width:400,height:400}}function bt(t){return`data:image/svg+xml,${encodeURIComponent(t).replace(/'/g,"%27").replace(/"/g,"%22")}`}function Tt(t){const e=t.appState,r=(e==null?void 0:e.lastSelectedElementIds)||[];if(r.length===0)return;const n=r.map(i=>t.children.find(s=>s.id===i)).filter(Boolean);if(n.length!==0)try{const i=Z(t,n,!1),s=i.x+i.width/2,c=i.y+i.height+C.DEFAULT_VERTICAL_GAP;return[s,c]}catch(i){console.warn("[SvgTool] Error calculating start point:",i);return}}function kt(t){if(!t.children||t.children.length===0)return[100,100];let e=0,r=100;for(const n of t.children)try{const i=Z(t,[n],!1),s=i.y+i.height;s>e&&(e=s,r=i.x+i.width/2)}catch{}return[r,e+C.DEFAULT_VERTICAL_GAP]}async function _t(t){const e=z();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{svg:r,startPoint:n,width:i}=t,s=vt(r);if(!s.valid)return{success:!1,error:s.error||"SVG代码无效",type:"error"};try{const c=St(wt(r)),o=It(c),a=Math.min(Math.max(i||C.SVG_DEFAULT_WIDTH,C.SVG_MIN_WIDTH),C.SVG_MAX_WIDTH),d=o.height/o.width,l=a*d,p=bt(c);let u=n;u||(u=Tt(e)),u||(u=kt(e)),u=[u[0]-a/2,u[1]];const h={url:p,width:a,height:l};_e.insertImage(e,h,u);const y=[u[0]+a/2,u[1]+l/2];return requestAnimationFrame(()=>{Me(e,y)}),{success:!0,data:{width:a,height:l,position:u,svgPreview:c.substring(0,200)+(c.length>200?"...":"")},type:"canvas"}}catch(c){return console.error("[SvgTool] Failed to process SVG:",c),{success:!1,error:`SVG插入失败: ${c.message||"未知错误"}`,type:"error"}}}const Mt={name:"insert_svg",description:`将SVG矢量图插入到画布工具。将SVG代码转换为可缩放矢量图形并插入到画布中。
148
+ - 图片没有分割线也不是规则网格结构`,inputSchema:{type:"object",properties:{imageUrl:{type:"string",description:"要拆分的图片 URL(支持 http/https/base64/blob 格式)"}},required:["imageUrl"]},supportedModes:["direct"],execute:async(t,e)=>yt(t)},D={DEFAULT_VERTICAL_GAP:50,SVG_DEFAULT_WIDTH:400,SVG_MAX_WIDTH:800,SVG_MIN_WIDTH:100};function wt(t){let e=E(t,"svg");if(e===t&&(e=E(t,"xml")),e===t&&!e.trim().startsWith("<svg")){const r=e.match(/<svg[\s\S]*?<\/svg>/i);r&&(e=r[0])}return e.trim()}function vt(t){if(!t||typeof t!="string")return{valid:!1,error:"缺少SVG代码"};const e=t.trim();return!e.startsWith("<svg")&&!e.startsWith("<?xml")?{valid:!1,error:"SVG代码格式无效,必须以<svg开头"}:e.includes("</svg>")?{valid:!0}:{valid:!1,error:"SVG代码不完整,缺少</svg>结束标签"}}function St(t){let e=t.trim();return e.includes("xmlns=")||(e=e.replace("<svg",'<svg xmlns="http://www.w3.org/2000/svg"')),e}function It(t){const e=t.match(/viewBox=["']([^"']+)["']/i);if(e){const[,,i,s]=e[1].split(/\s+/).map(Number);if(i&&s)return{width:i,height:s}}const r=t.match(/width=["'](\d+)(?:px)?["']/i),n=t.match(/height=["'](\d+)(?:px)?["']/i);return r&&n?{width:parseInt(r[1]),height:parseInt(n[1])}:{width:400,height:400}}function bt(t){return`data:image/svg+xml,${encodeURIComponent(t).replace(/'/g,"%27").replace(/"/g,"%22")}`}function Tt(t){const e=t.appState,r=(e==null?void 0:e.lastSelectedElementIds)||[];if(r.length===0)return;const n=r.map(i=>t.children.find(s=>s.id===i)).filter(Boolean);if(n.length!==0)try{const i=Z(t,n,!1),s=i.x+i.width/2,c=i.y+i.height+D.DEFAULT_VERTICAL_GAP;return[s,c]}catch(i){console.warn("[SvgTool] Error calculating start point:",i);return}}function kt(t){if(!t.children||t.children.length===0)return[100,100];let e=0,r=100;for(const n of t.children)try{const i=Z(t,[n],!1),s=i.y+i.height;s>e&&(e=s,r=i.x+i.width/2)}catch{}return[r,e+D.DEFAULT_VERTICAL_GAP]}async function _t(t){const e=F();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{svg:r,startPoint:n,width:i}=t,s=vt(r);if(!s.valid)return{success:!1,error:s.error||"SVG代码无效",type:"error"};try{const c=St(wt(r)),o=It(c),a=Math.min(Math.max(i||D.SVG_DEFAULT_WIDTH,D.SVG_MIN_WIDTH),D.SVG_MAX_WIDTH),d=o.height/o.width,u=a*d,p=bt(c);let l=n;l||(l=Tt(e)),l||(l=kt(e)),l=[l[0]-a/2,l[1]];const f={url:p,width:a,height:u};_e.insertImage(e,f,l);const y=[l[0]+a/2,l[1]+u/2];return requestAnimationFrame(()=>{Me(e,y)}),{success:!0,data:{width:a,height:u,position:l,svgPreview:c.substring(0,200)+(c.length>200?"...":"")},type:"canvas"}}catch(c){return console.error("[SvgTool] Failed to process SVG:",c),{success:!1,error:`SVG插入失败: ${c.message||"未知错误"}`,type:"error"}}}const Mt={name:"insert_svg",description:`将SVG矢量图插入到画布工具。将SVG代码转换为可缩放矢量图形并插入到画布中。
149
149
 
150
150
  使用场景:
151
151
  - 用户需要在画布上创建图标、Logo、徽章等矢量图
@@ -176,7 +176,7 @@ SVG的优势:
176
176
  <path d="M50 10 L60 50 L55 50 L55 70 L45 70 L45 50 L40 50 Z" fill="#E67E22"/>
177
177
  <circle cx="50" cy="35" r="5" fill="#5A4FCF"/>
178
178
  <path d="M45 70 L40 85 L50 75 L60 85 L55 70" fill="#F39C12"/>
179
- </svg>`,width:300},explanation:"生成简约火箭图标,使用品牌色彩"}],warnings:["不要生成过于复杂的SVG,可能导致渲染性能问题","确保SVG代码格式正确,包含完整的开始和结束标签"]},execute:async t=>_t(t)},se=8,Ct="veo3.1";function Dt(t,e,r){const n=r?`
179
+ </svg>`,width:300},explanation:"生成简约火箭图标,使用品牌色彩"}],warnings:["不要生成过于复杂的SVG,可能导致渲染性能问题","确保SVG代码格式正确,包含完整的开始和结束标签"]},execute:async t=>_t(t)},se=8,Dt="veo3.1";function Ct(t,e,r){const n=r?`
180
180
  角色一致性要求(极其重要!):
181
181
  - 视频中有固定角色,描述为:"${r}"
182
182
  - 每个片段的 prompt 必须以 "The same ${r}," 开头
@@ -216,23 +216,23 @@ ${n}
216
216
  - 相邻片段的结尾和开头要能自然衔接(因为会用尾帧作为下一段首帧)
217
217
  - transition_hint 从 'cut'/'dissolve'/'match_cut'/'fade_to_black' 中选择
218
218
  - 最后一个片段的 transition_hint 设为 'fade_to_black'
219
- - 最后一个片段要有完整的收尾`}function Nt(t){try{const e=t.match(/```json\s*([\s\S]*?)\s*```/)||t.match(/\{[\s\S]*"segments"[\s\S]*\}/);if(!e)return console.error("[LongVideo] Failed to find JSON in response"),[];const r=e[1]||e[0],n=JSON.parse(r);return Array.isArray(n.segments)?n.segments.map((i,s)=>({index:i.index||s+1,prompt:i.prompt||"",duration:i.duration||se,transition_hint:i.transition_hint||void 0,end_frame_description:i.end_frame_description||void 0})):(console.error("[LongVideo] Invalid script format: segments is not an array"),[])}catch(e){return console.error("[LongVideo] Failed to parse script:",e),[]}}async function At(t,e,r,n,i){const c=V.get().textModelName,a=[{role:"system",content:[{type:"text",text:Dt(e,r,n)}]},{role:"user",content:[{type:"text",text:`视频主题:${t}`}]}];let d="";const l=await De.sendChat(a,p=>{d+=p,i==null||i(p)},void 0,c);return l.choices&&l.choices.length>0&&(d=l.choices[0].message.content||d),Nt(d)}function Et(t,e,r){const n=[];r&&n.push({slot:0,slotLabel:"首帧",url:r,name:"first-frame.png"});const i=e.characterReferenceUrls&&e.characterReferenceUrls.length>0?e.characterReferenceUrls:void 0;return v.createTask({prompt:t.prompt,size:e.size,duration:t.duration,model:e.model,uploadedImages:n.length>0?n:void 0,referenceImages:i,longVideoMeta:e,batchId:e.batchId,batchIndex:t.index,batchTotal:e.totalSegments},S.VIDEO)}async function Vt(t,e){var l,p,u,h,y,m,f,w,I,D,F,O;const{prompt:r,totalDuration:n=60,segmentDuration:i=se,model:s=Ct,size:c="16x9",firstFrameImage:o,characterDescription:a}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 prompt",type:"error"};const d=Ce[s];(!d||d.imageUpload.mode!=="frames")&&console.warn(`[LongVideo] Model ${s} does not support first/last frame, using veo3.1`);try{const b=Math.ceil(n/i);(l=e.onChunk)==null||l.call(e,`正在为您规划 ${n} 秒的长视频,分为 ${b} 个片段...
219
+ - 最后一个片段要有完整的收尾`}function Nt(t){try{const e=t.match(/```json\s*([\s\S]*?)\s*```/)||t.match(/\{[\s\S]*"segments"[\s\S]*\}/);if(!e)return console.error("[LongVideo] Failed to find JSON in response"),[];const r=e[1]||e[0],n=JSON.parse(r);return Array.isArray(n.segments)?n.segments.map((i,s)=>({index:i.index||s+1,prompt:i.prompt||"",duration:i.duration||se,transition_hint:i.transition_hint||void 0,end_frame_description:i.end_frame_description||void 0})):(console.error("[LongVideo] Invalid script format: segments is not an array"),[])}catch(e){return console.error("[LongVideo] Failed to parse script:",e),[]}}async function At(t,e,r,n,i){const c=V.get().textModelName,a=[{role:"system",content:[{type:"text",text:Ct(e,r,n)}]},{role:"user",content:[{type:"text",text:`视频主题:${t}`}]}];let d="";const u=await Ce.sendChat(a,p=>{d+=p,i==null||i(p)},void 0,c);return u.choices&&u.choices.length>0&&(d=u.choices[0].message.content||d),Nt(d)}function Et(t,e,r){const n=[];r&&n.push({slot:0,slotLabel:"首帧",url:r,name:"first-frame.png"});const i=e.characterReferenceUrls&&e.characterReferenceUrls.length>0?e.characterReferenceUrls:void 0;return v.createTask({prompt:t.prompt,size:e.size,duration:t.duration,model:e.model,uploadedImages:n.length>0?n:void 0,referenceImages:i,longVideoMeta:e,batchId:e.batchId,batchIndex:t.index,batchTotal:e.totalSegments},S.VIDEO)}async function Vt(t,e){var u,p,l,f,y,m,h,w,I,C,z,O;const{prompt:r,totalDuration:n=60,segmentDuration:i=se,model:s=Dt,size:c="16x9",firstFrameImage:o,characterDescription:a}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 prompt",type:"error"};const d=De[s];(!d||d.imageUpload.mode!=="frames")&&console.warn(`[LongVideo] Model ${s} does not support first/last frame, using veo3.1`);try{const b=Math.ceil(n/i);(u=e.onChunk)==null||u.call(e,`正在为您规划 ${n} 秒的长视频,分为 ${b} 个片段...
220
220
 
221
221
  `);const x=await At(r,b,i,a,e.onChunk);if(x.length===0)return{success:!1,error:"视频脚本生成失败,请重试",type:"error"};(p=e.onChunk)==null||p.call(e,`
222
222
 
223
223
  ✓ 脚本生成完成,共 ${x.length} 个片段
224
224
 
225
- `);const L=`long_video_${Date.now()}`,P=x[0],ae={batchId:L,segmentIndex:1,totalSegments:x.length,needsLastFrame:x.length>1,scripts:x,model:s,size:c,characterDescription:a},U=Et(P,ae,o);return(u=e.onAddSteps)==null||u.call(e,[{id:U.id,mcp:"generate_video",args:{prompt:P.prompt,model:s,size:c},description:`生成视频片段 1/${x.length}: ${P.prompt.substring(0,50)}...`,status:"completed",options:{mode:"queue",batchId:L,batchIndex:1,batchTotal:x.length,globalIndex:1}}]),(h=e.onChunk)==null||h.call(e,`
225
+ `);const L=`long_video_${Date.now()}`,P=x[0],ae={batchId:L,segmentIndex:1,totalSegments:x.length,needsLastFrame:x.length>1,scripts:x,model:s,size:c,characterDescription:a},U=Et(P,ae,o);return(l=e.onAddSteps)==null||l.call(e,[{id:U.id,mcp:"generate_video",args:{prompt:P.prompt,model:s,size:c},description:`生成视频片段 1/${x.length}: ${P.prompt.substring(0,50)}...`,status:"completed",options:{mode:"queue",batchId:L,batchIndex:1,batchTotal:x.length,globalIndex:1}}]),(f=e.onChunk)==null||f.call(e,`
226
226
  ✓ 已创建第 1 个视频生成任务
227
227
  `),(y=e.onChunk)==null||y.call(e,`
228
228
  📊 **长视频生成计划**:
229
229
  `),(m=e.onChunk)==null||m.call(e,`- 总时长:${n} 秒
230
- `),(f=e.onChunk)==null||f.call(e,`- 片段数:${x.length} 个(每段 ${i} 秒)
230
+ `),(h=e.onChunk)==null||h.call(e,`- 片段数:${x.length} 个(每段 ${i} 秒)
231
231
  `),(w=e.onChunk)==null||w.call(e,`- 生成方式:串行生成(前一段完成后自动创建下一段)
232
232
  `),(I=e.onChunk)==null||I.call(e,`
233
233
  💡 **温馨提示**:
234
- `),(D=e.onChunk)==null||D.call(e,`- 每段视频生成完成后,系统会自动提取尾帧作为下一段的首帧,确保画面连贯
235
- `),(F=e.onChunk)==null||F.call(e,`- 所有片段生成完成后会自动合并并插入画布
234
+ `),(C=e.onChunk)==null||C.call(e,`- 每段视频生成完成后,系统会自动提取尾帧作为下一段的首帧,确保画面连贯
235
+ `),(z=e.onChunk)==null||z.call(e,`- 所有片段生成完成后会自动合并并插入画布
236
236
  `),(O=e.onChunk)==null||O.call(e,`- 您可以在任务队列中查看实时进度
237
237
  `),{success:!0,data:{batchId:L,taskId:U.id,segmentCount:x.length,totalDuration:n,scripts:x},type:"video",taskId:U.id}}catch(b){return console.error("[LongVideo] Generation failed:",b),{success:!1,error:b.message||"长视频生成失败",type:"error"}}}const Lt={name:"generate_long_video",description:`生成长视频工具。用于生成超过单个模型时长限制的长视频(如1分钟)。
238
238
 
@@ -248,12 +248,12 @@ ${n}
248
248
 
249
249
  不适用场景:
250
250
  - 用户只需要一个短视频(15秒以内),使用 generate_video 工具
251
- - 用户只是在聊天,没有生成视频的意图`,inputSchema:{type:"object",properties:{prompt:{type:"string",description:"视频主题/故事描述,详细描述想要生成的视频内容、故事情节"},totalDuration:{type:"number",description:"目标总时长(秒),默认 60 秒",default:60},segmentDuration:{type:"number",description:"每个片段的时长(秒),默认 8 秒",default:8},model:{type:"string",description:"视频生成模型,默认使用 veo3.1(支持首尾帧)",default:"veo3.1"},size:{type:"string",description:"视频尺寸,默认 16x9",default:"16x9"},firstFrameImage:{type:"string",description:"第一段视频的首帧参考图片 URL(可选)"}},required:["prompt"]},supportedModes:["queue"],promptGuidance:{whenToUse:"当用户想要生成超过15秒的长视频时使用,特别是1分钟视频。关键词:长视频、1分钟、完整故事、多场景。",parameterGuidance:{prompt:"用户的视频主题或故事描述,可以是一个完整的故事大纲。工具会自动将其拆分为多个连贯的片段。",totalDuration:'默认60秒(1分钟)。用户说"1分钟视频"时设为60,"30秒"设为30。',segmentDuration:"每段视频时长,默认8秒。这个值通常不需要用户指定。",model:"默认使用 veo3.1,因为它支持首尾帧,能保证片段间的连贯性。",firstFrameImage:'可选参数。当用户选中图片并希望从该图片开始生成视频时使用。传递 "[图片1]" 等占位符,系统会自动替换为真实URL。'},bestPractices:["将用户的描述直接传给 prompt,工具会自动调用文本模型生成分段脚本","不需要用户提供详细的分段描述,工具会自动规划","建议提醒用户长视频生成需要较长时间(每段约1-3分钟)","如果用户选中了图片,可以将其作为 firstFrameImage 传递,这样第一段视频会从该图片开始"],examples:[{input:"帮我生成一个1分钟的视频,讲述一只猫咪从早到晚的一天",args:{prompt:"一只可爱的橘猫从早到晚的一天生活:清晨在窗台晒太阳、中午在厨房偷吃鱼、下午追逐蝴蝶玩耍、傍晚蜷缩在沙发上打盹、夜晚望着月亮",totalDuration:60}},{input:"创作一个30秒的日落延时视频",args:{prompt:"从太阳开始下山到完全落入地平线的日落延时摄影,天空从金色渐变为橙色再到粉紫色",totalDuration:30}},{input:"[图片1] 让这个场景动起来,生成30秒视频",args:{prompt:"Cinematic video starting from this scene, camera slowly panning around, natural ambient movement, objects gently swaying, dynamic lighting changes, smooth transitions",totalDuration:30,firstFrameImage:"[图片1]"}}],warnings:["长视频生成需要较长时间,每个片段约1-3分钟,且串行生成","生成完成后会产生多个独立的视频文件,需要用户手动下载或合并","确保使用支持首尾帧的模型(如 veo3.1)以保证片段间的连贯性"]},execute:async(t,e)=>Vt(t,e||{})},Pt=new Set([",","。","!","?","“","”","‘","’",";",":","(",")","、","-","—","《","》",",",".","!","?",'"',"'",";",":","(",")","&","-","/","\\","[","]","{","}"]),ie=new Set(["啊","哎","唉","吧","比","便","不","差不多","的","得","地","对","多少","哒","对于","诶","而","而且","二","非常","否","咯","跟","哈","哈哈","哈啊","哎呀","嘿","哼","很多","后","会","唧","或","或许","哟","几","及","假如","即使","即便","就","觉得","喀","可以","可能","啦","了","呃","吗","嘛","么","每","没","没有","哪里","那","那个","那么","呢","嗯","哦","其他","或者","呕","前","若","三","啥","什么","甚","甚至","十分","是","手","太","哇","为","为什么","无论","无","嘻嘻","些","许多","呀","哎哟","一","已经","应该","咦","因为","由","于","有","有的","咋","再","再说","怎","怎么","怎么样","这","这个","这样","总","总是","总之","a","about","above","after","again","against","all","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","between","both","but","by","can't","cannot","could","couldn't","did","didn't","do","does","doesn't","doing","don't","down","during","each","few","for","from","further","had","hadn't","has","hasn't","have","haven't","having","he","he'd","he'll","he's","her","here","here's","hers","herself","him","himself","his","how","how's","i","i'd","i'll","i'm","i've","if","in","into","is","isn't","it","it's","its","itself","let's","me","more","most","mustn't","my","myself","no","nor","not","of","off","on","once","only","or","other","ought","our","ours","ourselves","out","over","own","same","shan't","she","she'd","she'll","she's","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","to","too","under","until","up","very","was","wasn't","we","we'd","we'll","we're","we've","were","weren't","what","what's","when","when's","where","where's","which","while","who","who's","whom","why","why's","with","won't","would","wouldn't","you","you'd","you'll","you're","you've","your","yours","yourself","yourselves"]);function Ut(t,e=2){if(!t||t.length<e)return[];const r=[];for(let n=0;n<=t.length-e;n++)r.push(t.substring(n,n+e));return r}function oe(t,e={}){const{ngramSize:r=2}=e,n=[];if(!t)return n;let i=t;Pt.forEach(c=>{i=i.replace(new RegExp(c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g")," ")}),i=i.replace(/[.,!?;:()[\]{}"'`~@#$%^&*+=|\\<>\-]/g," ");const s=i.split(/\s+/).filter(Boolean);for(const c of s){const o=c.match(/[\u4e00-\u9fa5]+|[^\u4e00-\u9fa5]+/g)||[c];for(const a of o)if(/[\u4e00-\u9fa5]/.test(a))n.push(...Ut(a,r));else{const d=a.match(/^([^_\d]*)([_\d]+)$/);d?d[1]?(n.push(d[1]),n.push(d[1]+d[2])):n.push(d[2]):n.push(a)}}return n}function jt(t,e=ie,r={}){for(const n of t)n&&!e.has(n)&&(r[n]=(r[n]||0)+1);return r}function N(t,e={}){return t?jt(oe(t),ie,e):e}function k(t,e){let r=0;for(const s in t)Object.prototype.hasOwnProperty.call(e,s)&&(r+=t[s]*(e[s]||0));let n=0;for(const s in t)n+=t[s]*t[s];n=Math.sqrt(n);let i=0;for(const s in e)i+=e[s]*e[s];return i=Math.sqrt(i),n===0||i===0?0:r/(n*i)}class Rt{constructor(){this.documentFrequency={},this.idfValues={},this.docCount=0,this.isFitted=!1}fit(e){this.docCount=e.length,this.documentFrequency={},this.idfValues={};for(const r of e)for(const n of Object.keys(r))this.documentFrequency[n]=(this.documentFrequency[n]||0)+1;for(const r in this.documentFrequency){const n=this.documentFrequency[r]||0;this.idfValues[r]=Math.log((this.docCount+1)/(n+1))+1}return this.isFitted=!0,this}getIdf(e){return this.idfValues[e]||0}getIdfValues(){return this.idfValues}get fitted(){return this.isFitted}}const qt={limit:20,minSimilarity:.1,filter:{},includeContent:!1,snippetLength:200};class Gt{constructor(){this.documents=[],this.tfidfVectorizer=null,this.directoryMap=new Map,this.indexedVersions=new Map,this.isIndexed=!1,this.lastIndexTime=0}async buildIndex(){const[e,r]=await Promise.all([W(),A()]);this.directoryMap.clear();for(const i of r)this.directoryMap.set(i.id,i);this.documents=[],this.indexedVersions.clear();const n=[];for(const i of e){const s=await q(i.id),c=(s==null?void 0:s.content)||"",o=this._buildIndexedDoc(i,c);this.documents.push(o),this.indexedVersions.set(i.id,i.updatedAt),n.push(o.combinedVector)}n.length>0&&(this.tfidfVectorizer=new Rt,this.tfidfVectorizer.fit(n)),this.isIndexed=!0,this.lastIndexTime=Date.now()}async syncIndex(){const[e,r]=await Promise.all([W(),A()]);this.directoryMap.clear();for(const o of r)this.directoryMap.set(o.id,o);const n=new Set;let i=0,s=0;for(const o of e){n.add(o.id);const a=this.indexedVersions.get(o.id);if(a===void 0||a<o.updatedAt){const d=await q(o.id),l=(d==null?void 0:d.content)||"",p=this._buildIndexedDoc(o,l);if(a===void 0)this.documents.push(p),i++;else{const u=this.documents.findIndex(h=>h.id===o.id);u!==-1?this.documents[u]=p:this.documents.push(p),s++}this.indexedVersions.set(o.id,o.updatedAt)}}const c=[];for(const o of this.indexedVersions.keys())n.has(o)||c.push(o);for(const o of c)this.documents=this.documents.filter(a=>a.id!==o),this.indexedVersions.delete(o);return this.lastIndexTime=Date.now(),{added:i,updated:s,removed:c.length}}async ensureIndex(){this.isIndexed?await this.syncIndex():await this.buildIndex()}async search(e,r){var c;const n={...qt,...r};if(!e.trim())return[];if(await this.ensureIndex(),this.documents.length===0)return[];const i=N(e),s=[];for(const o of this.documents){if(n.filter.directoryId&&o.directoryId!==n.filter.directoryId||n.filter.domain&&((c=o.metadata)==null?void 0:c.domain)!==n.filter.domain)continue;const a=k(i,o.titleVector),d=k(i,o.contentVector),l=k(i,o.metadataVector),p=k(i,o.combinedVector),u=Math.max(p,a*1.5,d,l*1.3);u>=n.minSimilarity&&s.push({doc:o,similarity:u})}return s.sort((o,a)=>a.similarity-o.similarity),s.slice(0,n.limit).map(({doc:o,similarity:a})=>{var l,p;const d=this.directoryMap.get(o.directoryId);return{id:o.id,title:o.title,snippet:this._generateSnippet(o.content,e,n.snippetLength),content:n.includeContent?o.content:"",similarity:a,directoryId:o.directoryId,directoryName:d==null?void 0:d.name,sourceUrl:(l=o.metadata)==null?void 0:l.sourceUrl,domain:(p=o.metadata)==null?void 0:p.domain,updatedAt:o.updatedAt,createdAt:o.createdAt,metadata:o.metadata}})}async getRelatedNotes(e,r=5){await this.ensureIndex();const n=this.documents.find(s=>s.id===e);if(!n)return[];const i=[];for(const s of this.documents){if(s.id===e)continue;const c=k(n.combinedVector,s.combinedVector);c>.1&&i.push({doc:s,similarity:c})}return i.sort((s,c)=>c.similarity-s.similarity),i.slice(0,r).map(({doc:s,similarity:c})=>{var a,d;const o=this.directoryMap.get(s.directoryId);return{id:s.id,title:s.title,snippet:s.content.substring(0,200)+(s.content.length>200?"...":""),content:"",similarity:c,directoryId:s.directoryId,directoryName:o==null?void 0:o.name,sourceUrl:(a=s.metadata)==null?void 0:a.sourceUrl,domain:(d=s.metadata)==null?void 0:d.domain,updatedAt:s.updatedAt,createdAt:s.createdAt,metadata:s.metadata}})}addNote(e,r,n,i,s,c,o){this.documents=this.documents.filter(d=>d.id!==e);const a={id:e,title:r,directoryId:i,updatedAt:s,createdAt:c,metadata:o};this.documents.push(this._buildIndexedDoc(a,n)),this.indexedVersions.set(e,s)}removeNote(e){this.documents=this.documents.filter(r=>r.id!==e),this.indexedVersions.delete(e)}getStats(){return{documentCount:this.documents.length,isIndexed:this.isIndexed,lastIndexTime:this.lastIndexTime}}clearIndex(){this.documents=[],this.indexedVersions.clear(),this.tfidfVectorizer=null,this.isIndexed=!1,this.lastIndexTime=0}_buildIndexedDoc(e,r){const n=N(e.title),i=N(r),s=this._buildMetadataText(e.metadata),c=N(s),o={};for(const[a,d]of Object.entries(n))o[a]=(o[a]||0)+d*2;for(const[a,d]of Object.entries(i))o[a]=(o[a]||0)+d;for(const[a,d]of Object.entries(c))o[a]=(o[a]||0)+d*1.5;return{id:e.id,title:e.title,content:r,directoryId:e.directoryId,updatedAt:e.updatedAt,createdAt:e.createdAt,metadata:e.metadata,titleVector:n,contentVector:i,metadataVector:c,combinedVector:o}}_buildMetadataText(e){if(!e)return"";const r=[];return e.domain&&r.push(e.domain),e.tags&&r.push(...e.tags),r.join(" ")}_generateSnippet(e,r,n){if(!e)return"";const i=oe(r),s=e.toLowerCase();let c=0,o=0;for(const p of i){const u=s.indexOf(p.toLowerCase());if(u!==-1){const h=Math.max(0,u-50),y=Math.min(e.length,u+50),m=s.substring(h,y);let f=0;for(const w of i)m.includes(w.toLowerCase())&&f++;f>o&&(o=f,c=u)}}const a=Math.max(0,c-Math.floor(n/2)),d=Math.min(e.length,a+n);let l=e.substring(a,d);return a>0&&(l="..."+l),d<e.length&&(l=l+"..."),l}}let R=null;function $t(){return R||(R=new Gt),R}const zt={name:"search_notes",description:`在知识库中搜索笔记。使用语义搜索(TF-IDF + 余弦相似度)返回最相关的笔记摘要。
251
+ - 用户只是在聊天,没有生成视频的意图`,inputSchema:{type:"object",properties:{prompt:{type:"string",description:"视频主题/故事描述,详细描述想要生成的视频内容、故事情节"},totalDuration:{type:"number",description:"目标总时长(秒),默认 60 秒",default:60},segmentDuration:{type:"number",description:"每个片段的时长(秒),默认 8 秒",default:8},model:{type:"string",description:"视频生成模型,默认使用 veo3.1(支持首尾帧)",default:"veo3.1"},size:{type:"string",description:"视频尺寸,默认 16x9",default:"16x9"},firstFrameImage:{type:"string",description:"第一段视频的首帧参考图片 URL(可选)"}},required:["prompt"]},supportedModes:["queue"],promptGuidance:{whenToUse:"当用户想要生成超过15秒的长视频时使用,特别是1分钟视频。关键词:长视频、1分钟、完整故事、多场景。",parameterGuidance:{prompt:"用户的视频主题或故事描述,可以是一个完整的故事大纲。工具会自动将其拆分为多个连贯的片段。",totalDuration:'默认60秒(1分钟)。用户说"1分钟视频"时设为60,"30秒"设为30。',segmentDuration:"每段视频时长,默认8秒。这个值通常不需要用户指定。",model:"默认使用 veo3.1,因为它支持首尾帧,能保证片段间的连贯性。",firstFrameImage:'可选参数。当用户选中图片并希望从该图片开始生成视频时使用。传递 "[图片1]" 等占位符,系统会自动替换为真实URL。'},bestPractices:["将用户的描述直接传给 prompt,工具会自动调用文本模型生成分段脚本","不需要用户提供详细的分段描述,工具会自动规划","建议提醒用户长视频生成需要较长时间(每段约1-3分钟)","如果用户选中了图片,可以将其作为 firstFrameImage 传递,这样第一段视频会从该图片开始"],examples:[{input:"帮我生成一个1分钟的视频,讲述一只猫咪从早到晚的一天",args:{prompt:"一只可爱的橘猫从早到晚的一天生活:清晨在窗台晒太阳、中午在厨房偷吃鱼、下午追逐蝴蝶玩耍、傍晚蜷缩在沙发上打盹、夜晚望着月亮",totalDuration:60}},{input:"创作一个30秒的日落延时视频",args:{prompt:"从太阳开始下山到完全落入地平线的日落延时摄影,天空从金色渐变为橙色再到粉紫色",totalDuration:30}},{input:"[图片1] 让这个场景动起来,生成30秒视频",args:{prompt:"Cinematic video starting from this scene, camera slowly panning around, natural ambient movement, objects gently swaying, dynamic lighting changes, smooth transitions",totalDuration:30,firstFrameImage:"[图片1]"}}],warnings:["长视频生成需要较长时间,每个片段约1-3分钟,且串行生成","生成完成后会产生多个独立的视频文件,需要用户手动下载或合并","确保使用支持首尾帧的模型(如 veo3.1)以保证片段间的连贯性"]},execute:async(t,e)=>Vt(t,e||{})},Pt=new Set([",","。","!","?","“","”","‘","’",";",":","(",")","、","-","—","《","》",",",".","!","?",'"',"'",";",":","(",")","&","-","/","\\","[","]","{","}"]),ie=new Set(["啊","哎","唉","吧","比","便","不","差不多","的","得","地","对","多少","哒","对于","诶","而","而且","二","非常","否","咯","跟","哈","哈哈","哈啊","哎呀","嘿","哼","很多","后","会","唧","或","或许","哟","几","及","假如","即使","即便","就","觉得","喀","可以","可能","啦","了","呃","吗","嘛","么","每","没","没有","哪里","那","那个","那么","呢","嗯","哦","其他","或者","呕","前","若","三","啥","什么","甚","甚至","十分","是","手","太","哇","为","为什么","无论","无","嘻嘻","些","许多","呀","哎哟","一","已经","应该","咦","因为","由","于","有","有的","咋","再","再说","怎","怎么","怎么样","这","这个","这样","总","总是","总之","a","about","above","after","again","against","all","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","between","both","but","by","can't","cannot","could","couldn't","did","didn't","do","does","doesn't","doing","don't","down","during","each","few","for","from","further","had","hadn't","has","hasn't","have","haven't","having","he","he'd","he'll","he's","her","here","here's","hers","herself","him","himself","his","how","how's","i","i'd","i'll","i'm","i've","if","in","into","is","isn't","it","it's","its","itself","let's","me","more","most","mustn't","my","myself","no","nor","not","of","off","on","once","only","or","other","ought","our","ours","ourselves","out","over","own","same","shan't","she","she'd","she'll","she's","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","to","too","under","until","up","very","was","wasn't","we","we'd","we'll","we're","we've","were","weren't","what","what's","when","when's","where","where's","which","while","who","who's","whom","why","why's","with","won't","would","wouldn't","you","you'd","you'll","you're","you've","your","yours","yourself","yourselves"]);function Ut(t,e=2){if(!t||t.length<e)return[];const r=[];for(let n=0;n<=t.length-e;n++)r.push(t.substring(n,n+e));return r}function oe(t,e={}){const{ngramSize:r=2}=e,n=[];if(!t)return n;let i=t;Pt.forEach(c=>{i=i.replace(new RegExp(c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g")," ")}),i=i.replace(/[.,!?;:()[\]{}"'`~@#$%^&*+=|\\<>\-]/g," ");const s=i.split(/\s+/).filter(Boolean);for(const c of s){const o=c.match(/[\u4e00-\u9fa5]+|[^\u4e00-\u9fa5]+/g)||[c];for(const a of o)if(/[\u4e00-\u9fa5]/.test(a))n.push(...Ut(a,r));else{const d=a.match(/^([^_\d]*)([_\d]+)$/);d?d[1]?(n.push(d[1]),n.push(d[1]+d[2])):n.push(d[2]):n.push(a)}}return n}function jt(t,e=ie,r={}){for(const n of t)n&&!e.has(n)&&(r[n]=(r[n]||0)+1);return r}function N(t,e={}){return t?jt(oe(t),ie,e):e}function k(t,e){let r=0;for(const s in t)Object.prototype.hasOwnProperty.call(e,s)&&(r+=t[s]*(e[s]||0));let n=0;for(const s in t)n+=t[s]*t[s];n=Math.sqrt(n);let i=0;for(const s in e)i+=e[s]*e[s];return i=Math.sqrt(i),n===0||i===0?0:r/(n*i)}class Rt{constructor(){this.documentFrequency={},this.idfValues={},this.docCount=0,this.isFitted=!1}fit(e){this.docCount=e.length,this.documentFrequency={},this.idfValues={};for(const r of e)for(const n of Object.keys(r))this.documentFrequency[n]=(this.documentFrequency[n]||0)+1;for(const r in this.documentFrequency){const n=this.documentFrequency[r]||0;this.idfValues[r]=Math.log((this.docCount+1)/(n+1))+1}return this.isFitted=!0,this}getIdf(e){return this.idfValues[e]||0}getIdfValues(){return this.idfValues}get fitted(){return this.isFitted}}const qt={limit:20,minSimilarity:.1,filter:{},includeContent:!1,snippetLength:200};class Gt{constructor(){this.documents=[],this.tfidfVectorizer=null,this.directoryMap=new Map,this.indexedVersions=new Map,this.isIndexed=!1,this.lastIndexTime=0}async buildIndex(){const[e,r]=await Promise.all([W(),A()]);this.directoryMap.clear();for(const i of r)this.directoryMap.set(i.id,i);this.documents=[],this.indexedVersions.clear();const n=[];for(const i of e){const s=await q(i.id),c=(s==null?void 0:s.content)||"",o=this._buildIndexedDoc(i,c);this.documents.push(o),this.indexedVersions.set(i.id,i.updatedAt),n.push(o.combinedVector)}n.length>0&&(this.tfidfVectorizer=new Rt,this.tfidfVectorizer.fit(n)),this.isIndexed=!0,this.lastIndexTime=Date.now()}async syncIndex(){const[e,r]=await Promise.all([W(),A()]);this.directoryMap.clear();for(const o of r)this.directoryMap.set(o.id,o);const n=new Set;let i=0,s=0;for(const o of e){n.add(o.id);const a=this.indexedVersions.get(o.id);if(a===void 0||a<o.updatedAt){const d=await q(o.id),u=(d==null?void 0:d.content)||"",p=this._buildIndexedDoc(o,u);if(a===void 0)this.documents.push(p),i++;else{const l=this.documents.findIndex(f=>f.id===o.id);l!==-1?this.documents[l]=p:this.documents.push(p),s++}this.indexedVersions.set(o.id,o.updatedAt)}}const c=[];for(const o of this.indexedVersions.keys())n.has(o)||c.push(o);for(const o of c)this.documents=this.documents.filter(a=>a.id!==o),this.indexedVersions.delete(o);return this.lastIndexTime=Date.now(),{added:i,updated:s,removed:c.length}}async ensureIndex(){this.isIndexed?await this.syncIndex():await this.buildIndex()}async search(e,r){var c;const n={...qt,...r};if(!e.trim())return[];if(await this.ensureIndex(),this.documents.length===0)return[];const i=N(e),s=[];for(const o of this.documents){if(n.filter.directoryId&&o.directoryId!==n.filter.directoryId||n.filter.domain&&((c=o.metadata)==null?void 0:c.domain)!==n.filter.domain)continue;const a=k(i,o.titleVector),d=k(i,o.contentVector),u=k(i,o.metadataVector),p=k(i,o.combinedVector),l=Math.max(p,a*1.5,d,u*1.3);l>=n.minSimilarity&&s.push({doc:o,similarity:l})}return s.sort((o,a)=>a.similarity-o.similarity),s.slice(0,n.limit).map(({doc:o,similarity:a})=>{var u,p;const d=this.directoryMap.get(o.directoryId);return{id:o.id,title:o.title,snippet:this._generateSnippet(o.content,e,n.snippetLength),content:n.includeContent?o.content:"",similarity:a,directoryId:o.directoryId,directoryName:d==null?void 0:d.name,sourceUrl:(u=o.metadata)==null?void 0:u.sourceUrl,domain:(p=o.metadata)==null?void 0:p.domain,updatedAt:o.updatedAt,createdAt:o.createdAt,metadata:o.metadata}})}async getRelatedNotes(e,r=5){await this.ensureIndex();const n=this.documents.find(s=>s.id===e);if(!n)return[];const i=[];for(const s of this.documents){if(s.id===e)continue;const c=k(n.combinedVector,s.combinedVector);c>.1&&i.push({doc:s,similarity:c})}return i.sort((s,c)=>c.similarity-s.similarity),i.slice(0,r).map(({doc:s,similarity:c})=>{var a,d;const o=this.directoryMap.get(s.directoryId);return{id:s.id,title:s.title,snippet:s.content.substring(0,200)+(s.content.length>200?"...":""),content:"",similarity:c,directoryId:s.directoryId,directoryName:o==null?void 0:o.name,sourceUrl:(a=s.metadata)==null?void 0:a.sourceUrl,domain:(d=s.metadata)==null?void 0:d.domain,updatedAt:s.updatedAt,createdAt:s.createdAt,metadata:s.metadata}})}addNote(e,r,n,i,s,c,o){this.documents=this.documents.filter(d=>d.id!==e);const a={id:e,title:r,directoryId:i,updatedAt:s,createdAt:c,metadata:o};this.documents.push(this._buildIndexedDoc(a,n)),this.indexedVersions.set(e,s)}removeNote(e){this.documents=this.documents.filter(r=>r.id!==e),this.indexedVersions.delete(e)}getStats(){return{documentCount:this.documents.length,isIndexed:this.isIndexed,lastIndexTime:this.lastIndexTime}}clearIndex(){this.documents=[],this.indexedVersions.clear(),this.tfidfVectorizer=null,this.isIndexed=!1,this.lastIndexTime=0}_buildIndexedDoc(e,r){const n=N(e.title),i=N(r),s=this._buildMetadataText(e.metadata),c=N(s),o={};for(const[a,d]of Object.entries(n))o[a]=(o[a]||0)+d*2;for(const[a,d]of Object.entries(i))o[a]=(o[a]||0)+d;for(const[a,d]of Object.entries(c))o[a]=(o[a]||0)+d*1.5;return{id:e.id,title:e.title,content:r,directoryId:e.directoryId,updatedAt:e.updatedAt,createdAt:e.createdAt,metadata:e.metadata,titleVector:n,contentVector:i,metadataVector:c,combinedVector:o}}_buildMetadataText(e){if(!e)return"";const r=[];return e.domain&&r.push(e.domain),e.tags&&r.push(...e.tags),r.join(" ")}_generateSnippet(e,r,n){if(!e)return"";const i=oe(r),s=e.toLowerCase();let c=0,o=0;for(const p of i){const l=s.indexOf(p.toLowerCase());if(l!==-1){const f=Math.max(0,l-50),y=Math.min(e.length,l+50),m=s.substring(f,y);let h=0;for(const w of i)m.includes(w.toLowerCase())&&h++;h>o&&(o=h,c=l)}}const a=Math.max(0,c-Math.floor(n/2)),d=Math.min(e.length,a+n);let u=e.substring(a,d);return a>0&&(u="..."+u),d<e.length&&(u=u+"..."),u}}let R=null;function $t(){return R||(R=new Gt),R}const Ft={name:"search_notes",description:`在知识库中搜索笔记。使用语义搜索(TF-IDF + 余弦相似度)返回最相关的笔记摘要。
252
252
 
253
253
  使用场景:
254
254
  - 用户问到"我之前保存过…"、"关于XX的笔记"
255
255
  - 需要查找知识库中的信息用于回答问题
256
- - 查找与某个主题相关的所有笔记`,inputSchema:{type:"object",properties:{query:{type:"string",description:"搜索关键词或语义查询"},limit:{type:"number",description:"返回结果数量上限,默认 10"},directoryId:{type:"string",description:"限制在指定目录中搜索(可选)"}},required:["query"]},promptGuidance:{whenToUse:"当用户需要搜索知识库中的信息时使用,支持语义搜索",parameterGuidance:{query:"尽量使用核心关键词或简短的自然语言描述",limit:"一般用默认值即可,除非用户明确说了需要几条"},bestPractices:["优先使用核心词搜索,避免过长的句子","如果搜索不到结果,尝试换关键词","结合 get_note 工具获取完整内容"],examples:[{input:"搜索关于 React 的笔记",args:{query:"React"},explanation:"使用核心关键词搜索"},{input:"找一下上周保存的 AI 文章",args:{query:"AI 文章"},explanation:"自然语言搜索"}]},execute:async t=>{const e=t.query,r=t.limit||10,n=t.directoryId;if(!(e!=null&&e.trim()))return{success:!1,error:"搜索关键词不能为空",type:"error"};try{const s=await $t().search(e,{limit:r,filter:n?{directoryId:n}:{},includeContent:!1,snippetLength:200});return s.length>0?{success:!0,type:"text",data:s.map(d=>({id:d.id,title:d.title,excerpt:d.snippet,similarity:Math.round(d.similarity*100)/100,directoryName:d.directoryName,domain:d.domain,updatedAt:new Date(d.updatedAt).toISOString()}))}:{success:!0,type:"text",data:(await Ne(e)).slice(0,r).map(a=>({id:a.id,title:a.title,directoryId:a.directoryId,updatedAt:new Date(a.updatedAt).toISOString()}))}}catch(i){return{success:!1,error:`搜索失败: ${i.message}`,type:"error"}}}},Ft={name:"get_note",description:`获取知识库中某篇笔记的完整内容。
256
+ - 查找与某个主题相关的所有笔记`,inputSchema:{type:"object",properties:{query:{type:"string",description:"搜索关键词或语义查询"},limit:{type:"number",description:"返回结果数量上限,默认 10"},directoryId:{type:"string",description:"限制在指定目录中搜索(可选)"}},required:["query"]},promptGuidance:{whenToUse:"当用户需要搜索知识库中的信息时使用,支持语义搜索",parameterGuidance:{query:"尽量使用核心关键词或简短的自然语言描述",limit:"一般用默认值即可,除非用户明确说了需要几条"},bestPractices:["优先使用核心词搜索,避免过长的句子","如果搜索不到结果,尝试换关键词","结合 get_note 工具获取完整内容"],examples:[{input:"搜索关于 React 的笔记",args:{query:"React"},explanation:"使用核心关键词搜索"},{input:"找一下上周保存的 AI 文章",args:{query:"AI 文章"},explanation:"自然语言搜索"}]},execute:async t=>{const e=t.query,r=t.limit||10,n=t.directoryId;if(!(e!=null&&e.trim()))return{success:!1,error:"搜索关键词不能为空",type:"error"};try{const s=await $t().search(e,{limit:r,filter:n?{directoryId:n}:{},includeContent:!1,snippetLength:200});return s.length>0?{success:!0,type:"text",data:s.map(d=>({id:d.id,title:d.title,excerpt:d.snippet,similarity:Math.round(d.similarity*100)/100,directoryName:d.directoryName,domain:d.domain,updatedAt:new Date(d.updatedAt).toISOString()}))}:{success:!0,type:"text",data:(await Ne(e)).slice(0,r).map(a=>({id:a.id,title:a.title,directoryId:a.directoryId,updatedAt:new Date(a.updatedAt).toISOString()}))}}catch(i){return{success:!1,error:`搜索失败: ${i.message}`,type:"error"}}}},zt={name:"get_note",description:`获取知识库中某篇笔记的完整内容。
257
257
 
258
258
  使用场景:
259
259
  - 搜索到笔记后需要查看完整内容
@@ -264,8 +264,8 @@ ${n}
264
264
  - AI 对话中用户说"帮我记住这个"
265
265
  - 保存 AI 生成的内容供后续参考`,inputSchema:{type:"object",properties:{title:{type:"string",description:"笔记标题"},content:{type:"string",description:"笔记内容(支持 Markdown 格式)"},directoryName:{type:"string",description:'目录名称(不存在则自动创建),默认为"笔记"'},tags:{type:"array",description:"标签列表(字符串数组,不存在则自动创建)"},sourceUrl:{type:"string",description:"来源 URL(可选)"}},required:["title","content"]},promptGuidance:{whenToUse:"当用户要求将信息保存到知识库时使用",parameterGuidance:{title:"简洁明了的标题,概括笔记核心内容",content:"完整的笔记内容,建议使用 Markdown 格式",directoryName:"根据内容类型推断合适的目录名称",tags:"提取内容中的核心主题作为标签"},bestPractices:["自动为笔记生成 2-4 个有意义的标签","标题控制在 50 字以内","内容保持完整结构化"],examples:[{input:"帮我保存这段关于 React Hooks 的笔记",args:{title:"React Hooks 使用指南",content:`## React Hooks
266
266
 
267
- 核心 Hook 包括...`,directoryName:"技术笔记",tags:["React","Hooks","前端"]}}]},execute:async t=>{const e=t.title,r=t.content,n=t.directoryName||"笔记",i=t.tags,s=t.sourceUrl;if(!(e!=null&&e.trim()))return{success:!1,error:"标题不能为空",type:"error"};if(!(r!=null&&r.trim()))return{success:!1,error:"内容不能为空",type:"error"};try{let o=(await A()).find(l=>l.name===n);o||(o=await Ae(n));const a=s?{sourceUrl:s}:void 0,d=await Ee(e,o.id,r,a);if(i&&i.length>0)for(const l of i){const p=await Ve(l);await Le(d.id,p.id)}return{success:!0,type:"text",data:{id:d.id,title:d.title,message:"笔记创建成功"}}}catch(c){return{success:!1,error:`创建笔记失败: ${c.message}`,type:"error"}}}},Bt={name:"list_directories",description:`列出知识库中的所有目录。
267
+ 核心 Hook 包括...`,directoryName:"技术笔记",tags:["React","Hooks","前端"]}}]},execute:async t=>{const e=t.title,r=t.content,n=t.directoryName||"笔记",i=t.tags,s=t.sourceUrl;if(!(e!=null&&e.trim()))return{success:!1,error:"标题不能为空",type:"error"};if(!(r!=null&&r.trim()))return{success:!1,error:"内容不能为空",type:"error"};try{let o=(await A()).find(u=>u.name===n);o||(o=await Ae(n));const a=s?{sourceUrl:s}:void 0,d=await Ee(e,o.id,r,a);if(i&&i.length>0)for(const u of i){const p=await Ve(u);await Le(d.id,p.id)}return{success:!0,type:"text",data:{id:d.id,title:d.title,message:"笔记创建成功"}}}catch(c){return{success:!1,error:`创建笔记失败: ${c.message}`,type:"error"}}}},Bt={name:"list_directories",description:`列出知识库中的所有目录。
268
268
 
269
269
  使用场景:
270
270
  - 需要了解知识库的目录结构
271
- - 创建笔记前查看可用目录`,inputSchema:{type:"object",properties:{}},execute:async()=>{try{return{success:!0,type:"text",data:(await A()).map(e=>({id:e.id,name:e.name,isDefault:e.isDefault,createdAt:new Date(e.createdAt).toISOString()}))}}catch(t){return{success:!1,error:`获取目录失败: ${t.message}`,type:"error"}}}},Wt=[zt,Ft,Ot,Bt];function Ht(t){const e=t.prompt||Ue;if(!t.audioData&&!t.audioCacheUrl)return{success:!1,error:"需要提供 audioData 或 audioCacheUrl",type:"error"};const r=v.createTask({prompt:t.taskLabel||"音频分析",model:t.model,modelRef:t.modelRef||null,mimeType:t.mimeType||"audio/mpeg",audioData:t.audioData,audioCacheUrl:t.audioCacheUrl,musicAnalyzerAction:"analyze",musicAnalyzerPrompt:e,musicAnalyzerSource:t.musicAnalyzerSource,musicAnalyzerSourceLabel:t.musicAnalyzerSourceLabel,musicAnalyzerSourceSnapshot:t.musicAnalyzerSourceSnapshot,autoInsertToCanvas:!1},S.CHAT);return{success:!0,data:{taskId:r.id,prompt:t.taskLabel||"音频分析",model:t.model},type:"text",taskId:r.id,task:r}}const Xt={name:"audio_analyze",description:"分析音频内容,返回结构化的音乐风格、情绪、Suno 标签和歌词改写建议",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{audioData:{type:"string",description:"base64 编码的音频数据(不含 data: 前缀)"},mimeType:{type:"string",description:"音频 MIME 类型,默认 audio/mpeg",default:"audio/mpeg"},audioCacheUrl:{type:"string",description:"本地缓存的音频 URL(队列模式)"},prompt:{type:"string",description:"自定义分析 prompt(可选,有内置默认值)"},model:{type:"string",description:"Gemini 多模态模型 ID,默认使用当前文本模型"}},required:[]},execute:async(t,e)=>(e==null?void 0:e.mode)==="queue"?Ht(t):Pe(t)};let H=!1;function sr(){H||(H=!0,je.registerAll([Re,qe,Xe,Ze,Lt,$e,et,it,ct,mt,ft,xt,Mt,ze,...Wt,Fe,Xt]))}export{rr as S,$t as g,sr as i,nr as u};
271
+ - 创建笔记前查看可用目录`,inputSchema:{type:"object",properties:{}},execute:async()=>{try{return{success:!0,type:"text",data:(await A()).map(e=>({id:e.id,name:e.name,isDefault:e.isDefault,createdAt:new Date(e.createdAt).toISOString()}))}}catch(t){return{success:!1,error:`获取目录失败: ${t.message}`,type:"error"}}}},Wt=[Ft,zt,Ot,Bt];function Ht(t){const e=t.prompt||Ue;if(!t.audioData&&!t.audioCacheUrl)return{success:!1,error:"需要提供 audioData 或 audioCacheUrl",type:"error"};const r=v.createTask({prompt:t.taskLabel||"音频分析",model:t.model,modelRef:t.modelRef||null,mimeType:t.mimeType||"audio/mpeg",audioData:t.audioData,audioCacheUrl:t.audioCacheUrl,musicAnalyzerAction:"analyze",musicAnalyzerPrompt:e,musicAnalyzerSource:t.musicAnalyzerSource,musicAnalyzerSourceLabel:t.musicAnalyzerSourceLabel,musicAnalyzerSourceSnapshot:t.musicAnalyzerSourceSnapshot,autoInsertToCanvas:!1},S.CHAT);return{success:!0,data:{taskId:r.id,prompt:t.taskLabel||"音频分析",model:t.model},type:"text",taskId:r.id,task:r}}const Xt={name:"audio_analyze",description:"分析音频内容,返回结构化的音乐风格、情绪、Suno 标签和歌词改写建议",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{audioData:{type:"string",description:"base64 编码的音频数据(不含 data: 前缀)"},mimeType:{type:"string",description:"音频 MIME 类型,默认 audio/mpeg",default:"audio/mpeg"},audioCacheUrl:{type:"string",description:"本地缓存的音频 URL(队列模式)"},prompt:{type:"string",description:"自定义分析 prompt(可选,有内置默认值)"},model:{type:"string",description:"Gemini 多模态模型 ID,默认使用当前文本模型"}},required:[]},execute:async(t,e)=>(e==null?void 0:e.mode)==="queue"?Ht(t):Pe(t)};let H=!1;function sr(){H||(H=!0,je.registerAll([Re,qe,Xe,Ze,Lt,$e,et,it,ct,mt,ft,xt,Mt,Fe,...Wt,ze,Xt]))}export{rr as S,$t as g,sr as i,nr as u};
@@ -1,4 +1,4 @@
1
- import{L as s,E as R,a as Y,C as x}from"./index-BWrcsh8u.js";import{s as w,t as O,L as d,m as X,c as k,e as h,g as f,i as u,f as y,d as l,k as g,n as j,l as U,h as G,r as b,I as Z}from"./index-BP77pG9S.js";import"./tool-windows-DOIu9TAD.js";import"./katex-Cu_Erd72.js";import"./index-BXzGHPXz.js";import"./browser-DpICcNby.js";/* empty css */const _=177,q=179,E=184,v=12,C=13,D=17,z=20,F=25,B=53,N=95,I=142,L=144,A=145,J=148,M=10,H=13,K=32,OO=9,$=47,QO=41,eO=125,aO=new R((Q,e)=>{for(let n=0,a=Q.next;(e.context&&(a<0||a==M||a==H||a==$&&Q.peek(n+1)==$)||a==QO||a==eO)&&Q.acceptToken(_),!(a!=K&&a!=OO);)a=Q.peek(++n)},{contextual:!0});let tO=new Set([N,E,z,v,D,L,A,I,J,C,B,F]);const iO=new x({start:!1,shift:(Q,e)=>e==q?Q:tO.has(e)}),XO=w({"func interface struct chan map const type var":O.definitionKeyword,"import package":O.moduleKeyword,"switch for go select return break continue goto fallthrough case if else defer":O.controlKeyword,range:O.keyword,Bool:O.bool,String:O.string,Rune:O.character,Number:O.number,Nil:O.null,VariableName:O.variableName,DefName:O.definition(O.variableName),TypeName:O.typeName,LabelName:O.labelName,FieldName:O.propertyName,"FunctionDecl/DefName":O.function(O.definition(O.variableName)),"TypeSpec/DefName":O.definition(O.typeName),"CallExpr/VariableName":O.function(O.variableName),LineComment:O.lineComment,BlockComment:O.blockComment,LogicOp:O.logicOperator,ArithOp:O.arithmeticOperator,BitOp:O.bitwiseOperator,"DerefOp .":O.derefOperator,"UpdateOp IncDecOp":O.updateOperator,CompareOp:O.compareOperator,"= :=":O.definitionOperator,"<-":O.operator,'~ "*"':O.modifier,"; ,":O.separator,"... :":O.punctuation,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace}),nO={__proto__:null,package:10,import:18,true:380,false:380,nil:383,struct:48,func:68,interface:78,chan:94,map:118,make:157,new:159,const:204,type:212,var:224,if:236,else:238,switch:242,case:248,default:250,for:260,range:266,go:270,select:274,return:284,break:288,continue:290,goto:292,fallthrough:296,defer:300},PO=s.deserialize({version:14,states:"!=xO#{QQOOP$SOQOOO&UQTO'#CbO&]QRO'#FlO]QQOOOOQP'#Cn'#CnOOQP'#Co'#CoO&eQQO'#C|O(kQQO'#C{O)]QRO'#GiO+tQQO'#D_OOQP'#Ge'#GeO+{QQO'#GeO.aQTO'#GaO.hQQO'#D`OOQP'#Gm'#GmO.mQRO'#GdO/hQQO'#DgOOQP'#Gd'#GdO/uQQO'#DrO2bQQO'#DsO4QQTO'#GqO,^QTO'#GaO4XQQO'#DxO4^QQO'#D{OOQO'#EQ'#EQOOQO'#ER'#EROOQO'#ES'#ESOOQO'#ET'#ETO4cQQO'#EPO5}QQO'#EPOOQP'#Ga'#GaO6UQQO'#E`O6^QQO'#EcOOQP'#G`'#G`O6cQQO'#EsOOQP'#G_'#G_O&]QRO'#FnOOQO'#Fn'#FnO9QQQO'#G^QOQQOOO&]QROOO9XQQO'#C`O9^QSO'#CdO9lQQO'#C}O9tQQO'#DSO9yQQO'#D[O:kQQO'#CsO:pQQO'#DhO:uQQO'#EeO:}QQO'#EiO;VQQO'#EoO;_QQO'#EuO<uQQO'#ExO<|QQO'#FRO4cQQO'#FWO=WQQO'#FYO=]QRO'#F_O=jQRO'#FaO=uQQO'#FaOOQP'#Fe'#FeO4cQQO'#FgP=zOWO'#C^POOO)CAz)CAzOOQO'#G]'#G]OOQO,5<W,5<WOOQO-E9j-E9jO?TQTO'#CqOOQO'#C|'#C|OOQP,59g,59gO?tQQO'#D_O@fQSO'#FuO@kQQO'#C}O@pQQO'#D[O9XQQO'#FqO@uQRO,5=TOAyQQO,59yOCVQSO,5:[O@kQQO'#C}OCaQQO'#DjOOQP,59^,59^OOQO,5<a,5<aO?tQQO'#DeOOQO,5:e,5:eOOQO-E9s-E9sOOQP,59z,59zOOQP,59|,59|OCqQSO,5:QO(kQQO,5:ROC{QQO,5:RO&]QRO'#FxOOQO'#Fx'#FxOFjQQO'#GpOFwQQO,5:^OF|QQO,5:_OHdQQO,5:`OHlQQO,5:aOHvQRO'#FyOIaQRO,5=]OIuQQO'#DzOOQP,5:d,5:dOOQO'#EV'#EVOOQO'#EW'#EWOOQO'#EX'#EXOOQO'#EZ'#EZOOQO'#E['#E[O4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:wOOQP,5:x,5:xO?tQQO'#EOOOQP,5:g,5:gOOQP,5:k,5:kO9yQQO,59vO4cQQO,5:zO4cQQO,5:}OI|QRO,5;_OOQO,5<Y,5<YOOQO-E9l-E9lO]QQOOOOQP'#Cb'#CbOOQP,58z,58zOOQP'#Cf'#CfOJWQQO'#CfOJ]QSO'#CkOOQP,59O,59OOJkQQO'#DPOLZQQO,5<UOLbQQO,59iOLsQQO,5<TOMpQQO'#DUOOQP,59n,59nOOQP,59v,59vONfQQO,59vONmQQO'#CwOOQP,59_,59_O?tQQO,5:SONxQRO'#EgO! VQQO'#EhOOQP,5;P,5;PO! |QQO'#EkO!!WQQO'#EnOOQP,5;T,5;TO!!`QRO'#EqO!!mQQO'#ErOOQP,5;Z,5;ZO!!uQTO'#CbO!!|QTO,5;aO&]QRO,5;aO!#WQQO,5;jO!$yQTO,5;dO!%WQQO'#EzOOQP,5;d,5;dO&]QRO,5;dO!%cQSO,5;mO!%mQQO'#E`O!%uQQO'#EcO!%zQQO'#FTO!&UQQO'#FTOOQP,5;m,5;mO!&ZQQO,5;mO!&`QTO,5;rO!&mQQO'#F[OOQP,5;t,5;tO!&xQTO'#GqOOQP,5;y,5;yOOQP'#Et'#EtOOQP,5;{,5;{O!']QTO,5<RPOOO'#Fk'#FkP!'jOWO,58xPOOO,58x,58xO!'uQQO,59yO!'zQQO'#GgOOQP,59i,59iO(kQQO,59vOOQP,5<],5<]OOQP-E9o-E9oOOQP1G/e1G/eOOQP1G/v1G/vO!([QSO'#DlO!(lQQO'#DlO!(wQQO'#DkOOQO'#Go'#GoO!(|QQO'#GoO!)UQQO,5:UO!)ZQQO'#GnO!)fQQO,5:PPOQO'#Cq'#CqO(kQQO1G/lOOQP1G/m1G/mO(kQQO1G/mOOQO,5<d,5<dOOQO-E9v-E9vOOQP1G/x1G/xO!)kQSO1G/yOOQP'#Cy'#CyOOQP1G/z1G/zO?tQQO1G/}O!)xQSO1G/{O!*YQQO1G/|O!*gQTO,5<eOOQP-E9w-E9wOOQP,5:f,5:fO!+QQQO,5:fOOQP1G0[1G0[O!,vQTO1G0[O!.wQTO1G0[O!/OQTO1G0[O!0pQTO1G0[O!1QQTO1G0cO!1bQQO,5:jOOQP1G/b1G/bOOQP1G0f1G0fOOQP1G0i1G0iOOQP1G0y1G0yOOQP,59Q,59QO&]QRO'#FmO!1mQSO,59VOOQP,59V,59VOOQO'#DQ'#DQO?tQQO'#DQO!1{QQO'#DQOOQO'#Gh'#GhO!2SQQO'#GhO!2[QQO,59kO!2aQSO'#CqOJkQQO'#DPOOQP,5=R,5=RO@kQQO1G1pOOQP1G/w1G/wO.hQQO'#ElO!2rQRO1G1oO@kQQO1G1oO@kQQO'#DVO?tQQO'#DWOOQP'#Gk'#GkO!2}QRO'#GjOOQP'#Gj'#GjO&]QRO'#FsO!3`QQO,59pOOQP,59p,59pO!3gQRO'#CxO!3uQQO'#CxO!3|QRO'#CxO.hQQO'#CxO&]QRO'#FoO!4XQQO,59cOOQP,59c,59cO!4dQQO1G/nO4cQQO,5;RO!4iQQO,5;RO&]QRO'#FzO!4nQQO,5;SOOQP,5;S,5;SO!6aQQO'#DgO?tQQO,5;VOOQP,5;V,5;VO&]QRO'#F}O!6hQQO,5;YOOQP,5;Y,5;YO!6pQRO,5;]O4cQQO,5;]O&]QRO'#GOO!6{QQO,5;^OOQP,5;^,5;^O!7TQRO1G0{O!7`QQO1G0{O4cQQO1G1UO!8vQQO1G1UOOQP1G1O1G1OO!9OQQO'#GPO!9YQQO,5;fOOQP,5;f,5;fO4cQQO'#E{O!9eQQO'#E{O<uQQO1G1OOOQP1G1X1G1XO!9jQQO,5:zO!9jQQO,5:}O!9tQSO,5;oO!:OQQO,5;oO!:VQQO,5;oO!9OQQO'#GRO!:aQQO,5;vOOQP,5;v,5;vO!<PQQO'#F]O!<WQQO'#F]POOO-E9i-E9iPOOO1G.d1G.dO!<]QQO,5:VO!<gQQO,5=ZO!<tQQO,5=ZOOQP1G/p1G/pO!<|QQO,5=YO!=WQQO,5=YOOQP1G/k1G/kOOQP7+%W7+%WOOQP7+%X7+%XOOQP7+%e7+%eO!=cQQO7+%eO!=hQQO7+%iOOQP7+%g7+%gO!=mQQO7+%gO!=rQQO7+%hO!>PQSO7+%hOOQP7+%h7+%hO4cQQO7+%hOOQP1G0Q1G0QO!>^QQO1G0QOOQP1G0U1G0UO!>fQQO1G0UOF|QQO1G0UOOQO,5<X,5<XOOQO-E9k-E9kOOQP1G.q1G.qOOQO,59l,59lO?tQQO,59lO!?cQQO,5=SO!?jQQO,5=SOOQP1G/V1G/VO!?rQQO,59yO!?}QRO7+'[O!@YQQO'#EmO!@dQQO'#HOO!@lQQO,5;WOOQP7+'Z7+'ZO!@qQRO7+'ZOOQP,59q,59qOOQP,59r,59rOOQO'#DZ'#DZO!@]QQO'#FtO!@|QRO,59tOOQO,5<_,5<_OOQO-E9q-E9qOOQP1G/[1G/[OOQP,59d,59dOHgQQO'#FpO!3uQQO,59dO!A_QRO,59dO!AjQRO,59dOOQO,5<Z,5<ZOOQO-E9m-E9mOOQP1G.}1G.}O(kQQO7+%YOOQP1G0m1G0mO4cQQO1G0mOOQO,5<f,5<fOOQO-E9x-E9xOOQP1G0n1G0nO!AxQQO'#GdOOQP1G0q1G0qOOQO,5<i,5<iOOQO-E9{-E9{OOQP1G0t1G0tO4cQQO1G0wOOQP1G0w1G0wOOQO,5<j,5<jOOQO-E9|-E9|OOQP1G0x1G0xO!B]QQO7+&gO!BeQSO7+&gO!CsQSO7+&pO!CzQQO7+&pOOQO,5<k,5<kOOQO-E9}-E9}OOQP1G1Q1G1QO!DRQQO,5;gOOQO,5;g,5;gO!DWQSO7+&jOOQP7+&j7+&jO!DbQQO7+&pO!7`QQO1G1[O!DgQQO1G1ZOOQO1G1Z1G1ZO!DnQSO1G1ZOOQO,5<m,5<mOOQO-E:P-E:POOQP1G1b1G1bO!DxQSO'#GqO!E]QQO'#F^O!EbQQO'#F^O!EgQQO,5;wOOQO,5;w,5;wO!ElQSO1G/qOOQO1G/q1G/qO!EyQSO'#DoO!FZQQO'#DoO!FfQQO'#DnOOQO,5<c,5<cO!FkQQO1G2uOOQO-E9u-E9uOOQO,5<b,5<bO!FxQQO1G2tOOQO-E9t-E9tOOQP<<IP<<IPOOQP<<IT<<ITOOQP<<IR<<IRO!GSQSO<<ISOOQP<<IS<<ISO4cQQO<<ISO!GaQSO<<ISOOQP7+%l7+%lO!GkQQO7+%lOOQP7+%p7+%pO!GpQQO7+%pO!GuQQO7+%pOOQO1G/W1G/WOOQO,5<^,5<^O!G}QQO1G2nOOQO-E9p-E9pOOQP<<Jv<<JvO.hQQO'#F{O!@YQQO,5;XOOQO,5;X,5;XO!HUQQO,5=jO!H^QQO,5=jOOQO1G0r1G0rOOQP<<Ju<<JuOOQP,5<`,5<`OOQP-E9r-E9rOOQO,5<[,5<[OOQO-E9n-E9nO!HfQRO1G/OOOQP1G/O1G/OOOQP<<Ht<<HtOOQP7+&X7+&XO!HqQQO'#DeOOQP7+&c7+&cOOQP<<JR<<JRO!HxQRO<<JRO!ITQQO<<J[O!I]QQO<<J[OOQO1G1R1G1ROOQP<<JU<<JUO4cQQO<<J[O!IbQSO7+&vOOQO7+&u7+&uO!IlQQO7+&uO4cQQO,5;xOOQO1G1c1G1cO!<]QQO,5:YP!<]QQO'#FwP?tQQO'#FvOOQPAN>nAN>nO4cQQOAN>nO!IsQSOAN>nOOQP<<IW<<IWOOQP<<I[<<I[O!I}QQO<<I[P!>nQQO'#FrOOQO,5<g,5<gOOQO-E9y-E9yOOQO1G0s1G0sOOQO,5<h,5<hO!JVQQO1G3UOOQO-E9z-E9zOOQP7+$j7+$jO!J_QQO'#GnO!B]QQOAN?mO!JjQQOAN?vO!JqQQOAN?vO!KzQSOAN?vOOQO<<Ja<<JaO!LRQSO1G1dO!L]QSO1G/tOOQO1G/t1G/tO!LjQSOG24YOOQPG24YG24YOOQPAN>vAN>vO!LtQQOAN>vP.hQQO'#F|OOQPG25XG25XO!LyQQOG25bO!MOQQO'#FPOOQPG25bG25bO!MZQQOG25bOOQPLD)tLD)tOOQPG24bG24bO!JqQQOLD*|O!9OQQO'#GQO!McQQO,5;kOOQP,5;k,5;kO?tQQO'#FQO!MnQQO'#FQO!MsQQOLD*|OOQP!$'Nh!$'NhOOQO,5<l,5<lOOQO-E:O-E:OOOQP1G1V1G1VO!MzQQO,5;lOOQO,5;l,5;lO!NPQQO!$'NhOOQO1G1W1G1WO!JqQQO!)9DSOOQP!.K9n!.K9nO# {QTO'#CqO#!`QTO'#CqO##}QSO'#CqO#$XQSO'#CqO#&]QSO'#CqO#&gQQO'#FyO#&tQQO'#FyO#'OQQO,5=]O#'ZQQO,5=]O#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO!7`QQO,5:wO!7`QQO,5:zO!7`QQO,5:}O#(yQSO'#CbO#)}QSO'#CbO#*bQSO'#GqO#*rQSO'#GqO#+PQRO'#GgO#+yQSO,5<eO#,ZQSO,5<eO#,hQSO1G0[O#-rQTO1G0[O#-yQSO1G0[O#.TQSO1G0[O#0{QTO1G0[O#1SQSO1G0[O#2eQSO1G0[O#2lQTO1G0[O#2sQSO1G0[O#4XQSO1G0[O#4`QTO1G0[O#4jQSO1G0[O#4wQSO1G0cO#5dQTO'#CqO#5kQTO'#CqO#6bQSO'#GqO#'cQQO'#EPO!7`QQO'#EPOF|QQO'#EPO#8]QQO'#EPO#8gQQO'#EPO#8qQQO'#EPO#8{QQO'#E`O#9TQQO'#EcO@kQQO'#C}O?tQQO,5:RO#9YQQO,59vO#:iQQO,59vO?tQQO,59vO?tQQO1G/lO?tQQO1G/mO?tQQO7+%YO?tQQO'#C{O#:pQQO'#DgO#9YQQO'#D[O#:wQQO'#D[O#:|QSO,5:QO#;WQQO,5:RO#;]QQO1G/nO?tQQO,5:SO#;bQQO'#Dh",stateData:"#;m~O$yOSPOS$zPQ~OVvOX{O[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO$v%QP~OTzO~P]O$z!`O~OVeXZeX^eX^!TXj!TXnUXneX!QeX!WeX!W!TX!|eX#ReX#TeX#UeX#WUX$weX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O!a#hX~P$XOV!bO$w!bO~O[!wX^pX^!wXa!wXd!wXhpXh!wXrpXr!wXwpXw!wX!PpX!P!wX!QpX!Q!wX!WpX!W!wX!]pX!]!wX!p!wX!q!wX%OpX%O!wX%U!wX%V!wX%YpX%Y!wX%f!wX%g!wX%h!wX%i!wX%j!wX~O^!hOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%O!eO%Y!fO~On!lO#W%]XV%]X^%]Xh%]Xr%]Xw%]X!P%]X!Q%]X!W%]X!]%]X#T%]X$w%]X%O%]X%Y%]Xu%]X~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO~P*aOj!qO^%XX]%XXn%XX!V%XX~O!W!tOV%TXZ%TX^%TXn%TX!Q%TX!W%TX!|%TX#R%TX#T%TX#U%TX$w%TX%Y%TX%`%TX%f%TX%g%TX%i%TX%j%TX%k%TX%l%TX%m%TX%n%TX%o%TX%p%TX%q%TX]%TX!V%TXj%TXi%TX!a%TXu%TX~OZ!sO~P,^O%O!eO~O!W!tO^%WXj%WX]%WXn%WX!V%WXu%WXV%WX$w%WX%`%WX#T%WX[%WX!a%WX~Ou!{O!QnO!V!zO~P*aOV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlOi%dP~O^#QO~OZ#RO^#VOn#TO!Q#cO!W#SO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX$w`X~O!|#`O~P2gO^#VO~O^#eO~O!QnO~P*aO[oO^YOaoOdoOh!POr!pOw}O!QnO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!P#hO~P4jO#T#iO#U#iO~O#W#jO~O!a#kO~OVvO[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O$v%QX~P6hO%O#oO~OZ#rO[#qO^#sO%O#oO~O^#uO%O#oO~Oj#yO~O^!hOh!POr!jOw}O!P!OO!Q#|O!WaO!]!QO%O!eO%Y!fO~Oj#}O~O!W$PO~O^$RO%O#oO~O^$UO%O#oO~O^$XO%O#oO~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O$ZO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oj$`O~P;_OV$fOjcO~P;_Oj$kO~O!QnOV$RX$w$RX~P*aO%O$oOV$TX$w$TX~O%O$oO~O${$rO$|$rO$}$tO~OZeX^!TX!W!TXj!TXn!TXh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~O]!TX!V!TXu!TX#T!TXV!TX$w!TX%`!TX[!TX!a!TX~P>VO^!hOh!POr-TOw}O!P-_O!Q-`O!W-^O!]-eO%O!eO%Y!fO~OZ!sO~O^#uO~O!P$xO~On!lO#W%]aV%]a^%]ah%]ar%]aw%]a!P%]a!Q%]a!W%]a!]%]a#T%]a$w%]a%O%]a%Y%]au%]a~O]${O^#QO~OZ#RO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O]$|O!|,WO~PBROj!qOn%QO!QnOi%cP~P*aO!V%WO!|#`O~PBRO!V%YO~OV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oi%dX#p%dX#q%dX~PDQOi%]O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-QO!WaO!]!QO!phO!qhO%O+{O%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^%aO%O%_O~O!QnO!a%cO~P*aO!QnOn$mX#T$mX#U$mXV$mX$w$mX!a$mX~P*aOn#TO#T%ea#U%eaV%ea$w%ea!a%ea~O]%fO~PF|OV#ga$w#ga~PDTO[%sO~OZ#rO[#qO]%vO%O#oO~O^!hOh!POn%zOr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO]%[P~O^&OOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%Y!fO^%ZXj%ZX~O%O%}O~PKfOjcO^qa]qanqa!Vqa~O^#uO!W&SO~O^!hOh!POr-TOw}O{&WO!P-_O!Q-`O!W-^O!]-eO%O,xO%Y!fO~Oi&^O~PL{O^!hOh!POr!jOw}O!Q!kO!WaO!]!QO%O!eO%Y!fO~O!P#hO~PMwOi&eO%O,yO%Y!fO~O#T&gOV#ZX$w#ZX~P?tO]&kO%O#oO~O^!hOh!POr-TOw}O!P-_O!Q-`O!]-eO%O!eO%Y!fO~O!W&lO#T&mO~P! _O]&qO%O#oO~O#T&sOV#eX$w#eX~P?tO]&vO%O#oO~OjeX~P$XOjcO!|,XO~P2gOn!lO#W&yO#W%]X~O^#VOn#TO!Q#cO!W#SO!|,XO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX~OZ&zOj$`O$w`X~P!#cOi'OO#p'PO#q'QO~OZ#ROjcO~P!#cO#T'TO#U#iO~O#W'UO~OV'WO!QnO~P*aOV'XO~OjcO~O!|#`OV#za$w#za~PBROi'[O#p']O#q'^O~On#TO!|#`OV%eX$w%eX!a%eX~PBRO!|#`OV$Za$w$Za~PBRO${$rO$|$rO$}'`O~O]${O~O%O!eO]%ZXn%ZX!V%ZX~PKfO!|#`Oi!_Xn!_X!a!`X~PBROi!_Xn!_X!a!`X~O!a'aO~On'bOi%cX~Oi'dO~On'eO!V%bX!a%bX~O!V'gO~O]'jOn'kO!|,YO~PBROn'nO!V'mO!a'oO!|#`O~PBRO!QnO!V'qO!a'rO~P*aO!|#`On$ma#T$ma#U$maV$ma$w$ma!a$ma~PBRO]'sOu'tO~O%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi!|!xi#R!xi#T!xi#U!xi$w!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~O!V!xii!xi!a!xi~P!+YO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi!V!xii!xi!a!xi~O!|!xi~P!-TO!|#`O~P!-TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%q!xi~O!|#`O!V!xii!xi!a!xi~P!/VO!|#`OV#Pi$w#Pi!a#Pi~PBRO]'uOn'wOu'vO~OZ#rO[#qO]'zO%O#oO~Ou'|O~P?tOn'}O]%[X~O](PO~OZeX^mX^!TXj!TX!W!TX~OjcOV$]i$w$]i~O%`(ZOV%^X$w%^Xn%^X!V%^X~Oi(`O~PL{O[(aO!W!tOVlX$wlX~On(bO~P?tO[(aOVlX$wlX~Oi(hO%O,yO%Y!fO~O!V(iO~O#T(kO~O](nO%O#oO~O[oO^YOaoOdoOh!POr!pOu-bOw}O!P!OO!QnO!V-UO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O+zO~P!4vO](sO%O#oO~O#T(tOV#ea$w#ea~O](xO%O#oO~O#k(yOV#ii$w#ii~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O+xO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^(|O%O%_O~O#p%dP#q%dP~P/uOi)PO#p'PO#q'QO~O!a)RO~O!QnO#y)VO~P*aOV)WO!|#`O~PBROj#wa~P;_OV)WO!QnO~P*aOi)]O#p']O#q'^O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O,eO~P!:lO!a)bO~Oj!qO!QnO~P*aOj!qO!QnOi%ca~P*aOn)iOi%ca~O!V%ba!a%ba~P?tOn)lO!V%ba!a%ba~O])nO~O])oO~O!V)pO~O!QnO!V)rO!a)sO~P*aO!V)rO!a)sO!|#`O~PBRO])uOn)vO~O])wOn)xO~O^!hOh!POr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO~O]%[a~P!>nOn)|O]%[a~O]${O]tXntX~OjcOV$^q$w$^q~On*PO{&WO~P?tOn*SO!V%rX~O!V*UO~OjcOV$]q$w$]q~O%`(ZOV|a$w|an|a!V|a~O[*]OVla$wla~O[*]O!W!tOVla$wla~On*PO{&WO!W*`O^%WXj%WX~P! _OjcO#j!UO~OjcO!|,XO~PBROZ*dO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O!|#`O~P!BoO#^*eO~P?tO!a*fO~Oj$`O!|,XO~P!BoO#W*hO~Oj#wi~P;_OV*kO!|#`O~PBROn#TO!Q#cO!|#`O!a$QX#T%eX~PBRO#T*lO~O#W*lO~O!a*mO~O!|#`Oi!_in!_i~PBRO!|#`Oi!bXn!bX!a!cX~PBROi!bXn!bX!a!cX~O!a*nO~Oj!qO!QnOi%ci~P*aO!V%bi!a%bi~P?tO!V*qO!a*rO!|#`O~PBRO!V*qO!|#`O~PBRO]*tO~O]*uO~O]*uOu*vO~O]%[i~P!>nO%O!eO!V%ra~On*|O!V%ra~O[+OOVli$wli~O%O+yO~P!4vO#k+QOV#iy$w#iy~O^+RO%O%_O~O]+SO~O!|,XOj#xq~PBROj#wq~P;_O!V+ZO!|#`O~PBRO]+[On+]O~O%O!eO!V%ri~O^#QOn'eO!V%bX~O#^+`O~P?tOj+aO~O^#VO!W#SO!|#`O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~OZ+cO~P!JvO!|#`O!a$Qi~PBRO!|#`Oi!bin!bi~PBRO!V+dO!|#`O~PBRO]+eO~O]+fO~Oi+iO#p+jO#q+kO~O^+lO%O%_O~Oi+pO#p+jO#q+kO~O!a+rO~O#^+sO~P?tO!a+tO~O]+uO~OZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXVeXneX!QeX#ReX#TeX#UeX$weX~O]eX]!TX!VeXieX!aeX~P!NUOjeX~P!NUOZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXn!TX!VeX~O]eX!V!TX~P#!gOh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~P#!gOZeX^eX^!TXj!TXneX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O]eXueX~P#$xO]$mXn$mXu$mX~PF|Oj$mXn$mX~P!7`On+|O]%eau%ea~On+}Oj%ea~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-OO!WaO!]!QO!phO!qhO%O+yO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~OZeX]!TX^UXhUXnUXn!TXrUXuUXwUX!PUX!QUX!WUX!W!TX!]UX%OUX%YUX~OnUX!QeX!aeX#TeX#WUX~P#$xOn+|O!|,YO]%eXu%eX~PBROn+}O!|,XOj%eX~PBRO^&OOV%ZXj%ZX$w%ZX]%ZXn%ZX!V%ZXu%ZX%`%ZX#T%ZX[%ZX!a%ZX~P?wO!|,YO]$man$mau$ma~PBRO!|,XOj$man$ma~PBRO%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~Oj!xi~P!+YOn!xiu!xi~P#,hO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%p!xi%q!xi~O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xij!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi~O!|!xi~P#/_On!xiu!xi~P#.TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi%p!xi%q!xi~O!|,WO~P#1^O!|,XO~P#/_O!|,YOn!xiu!xi~P#1^O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OZ!xi]!xi^!xi!W!xi%q!xi~O!|,WO~P#3QO!|,XOj!xi~P!/VO!|,YOn!xiu!xi~P#3QO!|,XOj#Pi~PBROV!TXZeX^mX!W!TX$w!TX~O%`!TX~P#5RO[!TXhmXnmXrmXwmX!PmX!QmX!WmX!]mX%OmX%YmX~P#5ROn#TO!Q,aO!|,XO#R#dOj`X#T%eX#U%eX~PBRO[oO^YOaoOdoOh!POr!pOw}O!P#hO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO%O+yO~P#6{O!Q-PO%O+xO~P#6{O!Q-QO%O+{O~P#6{O#T,bO#U,bO~O#W,cO~O^!hOh!POr-TOw}O!P-_O!Q-WO!W-^O!]-eO%O!eO%Y!fO~O^!hOh!POr-TOw}O!Q-`O!W-^O!]-eO%O!eO%Y!fO~O!P-VO~P#9zO%O+wO~P!4vO!P-XO~O!V-YO!|#`O~PBRO!V-ZO~O!V-[O~O!W-dO~OP%ka%Oa~",goto:"!FW%sPP%tP%wP%zP'SP'XPPPP'`'cP'u'uP)w'u-_PPP0j0m0qP1V4b1VP7s8WP1VP8a8d8hP8p8w1VPP1V8{<`?vPPCY-_-_-_PCdCuCxPC{DQ'u'uDV'uES'u'u'u'uGUIW'uPPJR'uJUMjMjMj'u! r! r!#SP!$`!%d!&d'cP'cPP'cP!&yP!'V!'^!&yP!'a!'h!'n!'w!&yP!'z!(R!&y!(U!(fPP!&yP!(x!)UPP!&y!)Y!)c!&yP!)g!)gP!&yP!&yP!)j!)m!&v!&yP!&yPPP!&yP!&yP!)q!)q!)w!)}!*U!*[!*d!*j!*p!*w!*}!+T!+Z!.q!.x!/O!/X!/m!/s!/z!0Q!0W!0^!0d!0jPPPPPPPPP!0p!1f!1k!1{!2kPP!7P!:^P!>u!?Z!?_!@Z!@fP!@p!D_!Df!Di!DuPPPPPPPPPPPP!FSR!aPRyO!WXOScw!R!T!U!W#O#k#n#u$R$X&O&j&u&|'W'Y']'})W)|*k*w+gQ#pzU#r{#s%uQ#x|U$T!S$U&pQ$^!VQ$y!lR)U'RVROS#nQ#t{T%t#s%uR#t{qrOScw!U!V!W#O#k#n&|'W'Y)W*k+g%PoOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%O]OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^#u!iW^!O!h!t!z#e#h#u#v#y#|#}$P$Q$T$W$v$x%W%Y%a%x%y&O&S&W&]&`&b&d&m'e'|'}(S([(c(i(o(|)l)|*P*Q*S*p*w*|+R+^+j+l,h-U-V-W-X-Y-Z-[-]-_-d'cbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR$O!PT&c#}&dW%`#R&z*d+cQ&Q#vS&V#y&]S&`#}&dR*Y(b'cZOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d%fWOSWYacmnw!O!U!V!W!X!Z!_!q!z#O#Q#S#T#V#^#_#`#a#b#c#h#i#j#k#n#v#|$f$v$x%W%Y%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(i(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S&b#}&d!{-]!h!t#e#u#y$P$Q$T$W%a%x%y&O&W&]&`&m'e'|'}(S([(c(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-dQ#v|S$v!j!pU&P#v$v,hZ,h#x&Q&U&V-TS%{#u&OV){'})|*wR#z}T&[#y&]]&X#y&](S([(o*QZ&Z#y&](S(o*QT([&Y(]'s_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d'r_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!w^'bbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&a#}&dR(d&bS!u]fX!x`&_(e(oQ!r[Q%O!qQ)d'aU)f'b)i*oR+X*nR%R!qR%P!qV)h'b)i*oV)g'b)i*odtOScw#O#k#n&|'Y+gQ$h!WQ&R#wQ&w$[S'S$c$iQ(V&TQ*O(RQ*V(WQ*b(yQ*c(zR+_+Q%PfOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%PgOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^!q#Weg!o!y$[$_$c$j$m$q$}%^%b%d%m'V'p(z({)S)Y)^)c)e)q)t*i*s+T+V+W+Y,f,g,i,j,w,z-aR#fh#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z[,V%^,f,i,p,s,v`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q!Y#^e!y$j$m$q$}%b%d%i%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aY,Q!o,k,n,q,tl,R$[$_$c(z)S*i,g,j,l,o,r,u,w,z_,S%^,f,i,m,p,s,v!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z],V%^,f,i,p,s,v!S#ae!y$j$m$q$}%b%d%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aS,Z!o,tf,[$[$_$c(z)S*i,g,j,u,w,zX,]%^,f,i,v!Q#be!y$j$m$q$}%b%d%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aQ,^!od,_$[$_$c(z)S*i,g,j,w,zV,`%^,f,iprOScw!U!V!W#O#k#n&|'W'Y)W*k+gR)a']etOScw#O#k#n&|'Y+gQ$S!RT&i$R&jR$S!RQ$V!ST&o$U&pQ&U#xR&m$TS(T&S&lV*{*S*|+^R$V!SQ$Y!TT&t$X&uR$Y!TdsOScw#O#k#n&|'Y+gT$p![!]dtOScw#O#k#n&|'Y+gQ*b(yR+_+QQ$a!VQ&{$_Q)T'RR*g)ST&|$`&}Q+b+SQ+m+fR+v+uT+g+a+hR$i!WR$l!YT'Y$k'ZXuOSw#nQ$s!`R'_$sSSO#nR!dSQ%u#sR'y%uUwOS#nR#mwQ&d#}R(g&dQ(c&`R*Z(cS!mX$^R$z!mQ(O%{R)}(OQ&]#yR(_&]Q(]&YR*X(]'r^OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!v^S'f%T+PR)m'fQ'c%RR)j'cW#Oc&|'Y+gR%[#O^#Ue$[$_$c$m)^,zU%e#U,O,PQ,O,fR,P,gQ&j$RR(m&jS*Q(S(oR*y*QQ*T(TR*}*TQ&p$UR(r&pQ&u$XR(w&uQ&}$`R)O&}Q+h+aR+o+hQ'Z$kR)['ZQ!cRQ#luQ#nyQ%Z!|Q&x$]Q'R$bQ'x%tQ(^&[Q(f&cQ(l&iQ(q&oR(v&tVxOS#nWuOSw#nY!|c#O&|'Y+gR%r#kdtOScw#O#k#n&|'Y+gQ$]!UQ$b!VQ$g!WQ)X'WQ*j)WR+U*kdeOScw#O#k#n&|'Y+gQ!oYQ!ya`#gmn,{,|,}-O-P-QQ$[!UQ$_!VQ$c!WQ$j!Xd$m!Z#i#j&g&s'P'T'U(k(tQ$q!_Q$}!qQ%^#QQ%b#SQ%d#TW%h#^,Q,R,SQ%i#_Q%j#`Q%k#aQ%l#bQ%m#cQ'V$fQ'p%cQ(z&xQ({&yQ)S'RQ)Y'XQ)^']Q)c'aU)e'b)i*oQ)q'oQ)t'rQ*i)VQ*s)sQ+T*hQ+V*lQ+W*nQ+Y*rS,f#V'wS,g,b,cQ,i+|Q,j+}Q,k,TQ,l,UQ,m,VQ,n,WQ,o,XQ,p,YQ,q,ZQ,r,[Q,s,]Q,t,^Q,u,_Q,v,`Q,w,aU,z'W)W*kV-a&l*`-^#bZW!O!h!t!z#e#h#u#v#y#|$P$Q$T$W$v$x%W%Y%a%x%y&O&W&]&`&m'e'|'}(S([(c(i(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-d%P[OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^$zdOSacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S!gW-]Q!nYS#{!O-_Q$u!hS%T!t+jS%X!z-UQ%n#e[%o#h#|$x-V-W-XW%w#u'})|*wU&P#v$v,h[&X#y&](S([(o*QQ&f$PQ&h$QQ&n$TQ&r$WS'h%W-YS'i%Y-ZW'l%a(|+R+lS'{%x%yQ(Q&OQ(Y&WQ(d&`Q(p&mU)k'e)l*pQ)z'|Q*[(cS*^(i-[Q+P*`R-c-dS#w|!pS$w!j-TQ&T#xQ(R&QQ(W&UR(X&VT%|#u&OhqOScw!U!V#O#k#n&|'Y+gU$Q!R$R&jU$W!T$X&uQ$e!WY%y#u&O'})|*wQ)`']V-S'W)W*kS&[#y&]S*R(S(oR*z*QY&Y#y&](S(o*QR*W(['``OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&_#}&dW(S&S*S*|+^Q(e&bQ(o&lR*x*PS%U!t*`R+q+jR%S!qQ#PcQ(}&|Q)Z'YR+n+ghpOScw!U!V#O#k#n&|'Y+gQ$d!WQ$n!ZQ%g#VU%p#i'T,bU%q#j'U,cQ(j&gQ(u&sQ)Q'PQ)_']Q)y'wQ*_(kQ*a(tV-R'W)W*kT(U&S&l",nodeNames:"⚠ LineComment BlockComment SourceFile PackageClause package DefName ; ImportDecl import ImportSpec . String ) ( SpecList ExprStatement Number Bool Nil Rune VariableName TypedLiteral StructType struct } { StructBody FieldDecl FieldName , PointerType * FunctionType func Parameters Parameter ... InterfaceType interface InterfaceBody MethodElem UnderlyingType ~ TypeElem LogicOp ChannelType chan <- ParenthesizedType QualifiedType TypeName ParameterizedType ] [ TypeArgs ArrayType SliceType MapType map LiteralValue Element Key : Element Key ParenthesizedExpr FunctionLiteral Block Conversion SelectorExpr IndexExpr SliceExpr TypeAssertion CallExpr ParameterizedExpr Arguments CallExpr make new Arguments UnaryExp ArithOp LogicOp BitOp DerefOp BinaryExp ArithOp BitOp BitOp CompareOp LogicOp LogicOp SendStatement IncDecStatement IncDecOp Assignment = UpdateOp VarDecl := ConstDecl const ConstSpec SpecList TypeDecl type TypeSpec TypeParams TypeParam SpecList VarDecl var VarSpec SpecList LabeledStatement LabelName IfStatement if else SwitchStatement switch SwitchBlock Case case default TypeSwitchStatement SwitchBlock Case ForStatement for ForClause RangeClause range GoStatement go SelectStatement select SelectBlock Case ReceiveStatement ReturnStatement return GotoStatement break continue goto FallthroughStatement fallthrough DeferStatement defer FunctionDecl MethodDecl",maxTerm:218,context:iO,nodeProps:[["isolate",-3,2,12,20,""],["group",-18,12,17,18,19,20,21,22,66,67,69,70,71,72,73,74,77,81,86,"Expr",-20,16,68,93,94,96,99,101,105,111,115,117,120,126,129,134,136,141,143,147,149,"Statement",-12,23,31,33,38,46,49,50,51,52,56,57,58,"Type"],["openedBy",13,"(",25,"{",53,"["],["closedBy",14,")",26,"}",54,"]"]],propSources:[XO],skippedNodes:[0,1,2,153],repeatNodeCount:23,tokenData:":b~RvXY#iYZ#i]^#ipq#iqr#zrs$Xuv&Pvw&^wx&yxy(qyz(vz{({{|)T|})e}!O)j!O!P)u!P!Q+}!Q!R,y!R![-t![!]2^!]!^2k!^!_2p!_!`3]!`!a3e!c!}3x!}#O4j#P#Q4o#Q#R4t#R#S4|#S#T9X#T#o3x#o#p9q#p#q9v#q#r:W#r#s:]$g;'S3x;'S;=`4d<%lO3x~#nS$y~XY#iYZ#i]^#ipq#iU$PP%hQ!_!`$SS$XO!|S~$^W[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y<%lO$X~${O[~~%ORO;'S$X;'S;=`%X;=`O$X~%^X[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y;=`<%l$X<%lO$X~%|P;=`<%l$X~&UP%l~!_!`&X~&^O#U~~&cR%j~vw&l!_!`&X#Q#R&q~&qO%p~~&vP%o~!_!`&X~'OWd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k<%lO&y~'mOd~~'pRO;'S&y;'S;=`'y;=`O&y~(OXd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k;=`<%l&y<%lO&y~(nP;=`<%l&y~(vO^~~({O]~~)QP%Y~!_!`&X~)YQ%f~{|)`!_!`&X~)eO#R~~)jOn~~)oQ%g~}!O)`!_!`&X~)zRZS!O!P*T!Q![*`#R#S+w~*WP!O!P*Z~*`Ou~Q*eTaQ!Q![*`!g!h*t#R#S+w#X#Y*t#]#^+rQ*wS{|+T}!O+T!Q![+^#R#S+lQ+WQ!Q![+^#R#S+lQ+cRaQ!Q![+^#R#S+l#]#^+rQ+oP!Q![+^Q+wOaQQ+zP!Q![*`~,SR%k~z{,]!P!Q,b!_!`&X~,bO$z~~,gSP~OY,bZ;'S,b;'S;=`,s<%lO,b~,vP;=`<%l,bQ-O[aQ!O!P*`!Q![-t!d!e.c!g!h*t!q!r/Z!z!{/x#R#S.]#U#V.c#X#Y*t#]#^+r#c#d/Z#l#m/xQ-yUaQ!O!P*`!Q![-t!g!h*t#R#S.]#X#Y*t#]#^+rQ.`P!Q![-tQ.fR!Q!R.o!R!S.o#R#S/QQ.tSaQ!Q!R.o!R!S.o#R#S/Q#]#^+rQ/TQ!Q!R.o!R!S.oQ/^Q!Q!Y/d#R#S/rQ/iRaQ!Q!Y/d#R#S/r#]#^+rQ/uP!Q!Y/dQ/{T!O!P0[!Q![1c!c!i1c#R#S2Q#T#Z1cQ0_S!Q![0k!c!i0k#R#S1V#T#Z0kQ0pVaQ!Q![0k!c!i0k!r!s*t#R#S1V#T#Z0k#]#^+r#d#e*tQ1YR!Q![0k!c!i0k#T#Z0kQ1hWaQ!O!P0k!Q![1c!c!i1c!r!s*t#R#S2Q#T#Z1c#]#^+r#d#e*tQ2TR!Q![1c!c!i1c#T#Z1c~2cP!a~!_!`2f~2kO#W~~2pOV~~2uR!|S}!O3O!^!_3T!_!`$S~3TO!Q~~3YP%m~!_!`&X~3bP#T~!_!`$S~3jQ!|S!_!`$S!`!a3p~3uP%n~!_!`&X~3}V%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~4gP;=`<%l3x~4oO!W~~4tO!V~~4yP%i~!_!`&X~5RV%O~!Q![5h!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~5o^aQ%O~!O!P*`!Q![5h!c!g3x!g!h6k!h!}3x#R#S4|#T#X3x#X#Y6k#Y#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~6pX%O~{|+T}!O+T!Q![7]!c!}3x#R#S8P#T#o3x$g;'S3x;'S;=`4d<%lO3x~7dXaQ%O~!Q![7]!c!}3x#R#S8P#T#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~8UV%O~!Q![7]!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~8rVaQ%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~9[TO#S9X#S#T$v#T;'S9X;'S;=`9k<%lO9X~9nP;=`<%l9X~9vOj~~9{Q%`~!_!`&X#p#q:R~:WO%q~~:]Oi~~:bO{~",tokenizers:[aO,1,2,new Y("j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~",25,181)],topRules:{SourceFile:[0,3]},dynamicPrecedences:{19:1,51:-1,55:2,69:-1,108:-1},specialized:[{term:184,get:Q=>nO[Q]||-1}],tokenPrec:5451}),oO=[X("func ${name}(${params}) ${type} {\n ${}\n}",{label:"func",detail:"declaration",type:"keyword"}),X("func (${receiver}) ${name}(${params}) ${type} {\n ${}\n}",{label:"func",detail:"method declaration",type:"keyword"}),X("var ${name} = ${value}",{label:"var",detail:"declaration",type:"keyword"}),X("type ${name} ${type}",{label:"type",detail:"declaration",type:"keyword"}),X("const ${name} = ${value}",{label:"const",detail:"declaration",type:"keyword"}),X("type ${name} = ${type}",{label:"type",detail:"alias declaration",type:"keyword"}),X("for ${init}; ${test}; ${update} {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),X("for ${i} := range ${value} {\n ${}\n}",{label:"for",detail:"range",type:"keyword"}),X(`select {
1
+ import{L as s,E as R,a as Y,C as x}from"./index-qbS_W7PW.js";import{s as w,t as O,L as d,o as X,a as k,b as h,d as f,i as u,f as y,c as l,k as g,m as j,l as U,e as G,n as b,I as Z}from"./index-DSKRBuhn.js";import"./tool-windows-BEnZdJqF.js";import"./katex-Cu_Erd72.js";import"./index-DXqL8NRE.js";import"./browser-ZXTF4AKv.js";/* empty css */const _=177,q=179,E=184,v=12,C=13,D=17,z=20,F=25,B=53,N=95,I=142,L=144,A=145,J=148,M=10,H=13,K=32,OO=9,$=47,QO=41,eO=125,aO=new R((Q,e)=>{for(let n=0,a=Q.next;(e.context&&(a<0||a==M||a==H||a==$&&Q.peek(n+1)==$)||a==QO||a==eO)&&Q.acceptToken(_),!(a!=K&&a!=OO);)a=Q.peek(++n)},{contextual:!0});let tO=new Set([N,E,z,v,D,L,A,I,J,C,B,F]);const iO=new x({start:!1,shift:(Q,e)=>e==q?Q:tO.has(e)}),XO=w({"func interface struct chan map const type var":O.definitionKeyword,"import package":O.moduleKeyword,"switch for go select return break continue goto fallthrough case if else defer":O.controlKeyword,range:O.keyword,Bool:O.bool,String:O.string,Rune:O.character,Number:O.number,Nil:O.null,VariableName:O.variableName,DefName:O.definition(O.variableName),TypeName:O.typeName,LabelName:O.labelName,FieldName:O.propertyName,"FunctionDecl/DefName":O.function(O.definition(O.variableName)),"TypeSpec/DefName":O.definition(O.typeName),"CallExpr/VariableName":O.function(O.variableName),LineComment:O.lineComment,BlockComment:O.blockComment,LogicOp:O.logicOperator,ArithOp:O.arithmeticOperator,BitOp:O.bitwiseOperator,"DerefOp .":O.derefOperator,"UpdateOp IncDecOp":O.updateOperator,CompareOp:O.compareOperator,"= :=":O.definitionOperator,"<-":O.operator,'~ "*"':O.modifier,"; ,":O.separator,"... :":O.punctuation,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace}),nO={__proto__:null,package:10,import:18,true:380,false:380,nil:383,struct:48,func:68,interface:78,chan:94,map:118,make:157,new:159,const:204,type:212,var:224,if:236,else:238,switch:242,case:248,default:250,for:260,range:266,go:270,select:274,return:284,break:288,continue:290,goto:292,fallthrough:296,defer:300},PO=s.deserialize({version:14,states:"!=xO#{QQOOP$SOQOOO&UQTO'#CbO&]QRO'#FlO]QQOOOOQP'#Cn'#CnOOQP'#Co'#CoO&eQQO'#C|O(kQQO'#C{O)]QRO'#GiO+tQQO'#D_OOQP'#Ge'#GeO+{QQO'#GeO.aQTO'#GaO.hQQO'#D`OOQP'#Gm'#GmO.mQRO'#GdO/hQQO'#DgOOQP'#Gd'#GdO/uQQO'#DrO2bQQO'#DsO4QQTO'#GqO,^QTO'#GaO4XQQO'#DxO4^QQO'#D{OOQO'#EQ'#EQOOQO'#ER'#EROOQO'#ES'#ESOOQO'#ET'#ETO4cQQO'#EPO5}QQO'#EPOOQP'#Ga'#GaO6UQQO'#E`O6^QQO'#EcOOQP'#G`'#G`O6cQQO'#EsOOQP'#G_'#G_O&]QRO'#FnOOQO'#Fn'#FnO9QQQO'#G^QOQQOOO&]QROOO9XQQO'#C`O9^QSO'#CdO9lQQO'#C}O9tQQO'#DSO9yQQO'#D[O:kQQO'#CsO:pQQO'#DhO:uQQO'#EeO:}QQO'#EiO;VQQO'#EoO;_QQO'#EuO<uQQO'#ExO<|QQO'#FRO4cQQO'#FWO=WQQO'#FYO=]QRO'#F_O=jQRO'#FaO=uQQO'#FaOOQP'#Fe'#FeO4cQQO'#FgP=zOWO'#C^POOO)CAz)CAzOOQO'#G]'#G]OOQO,5<W,5<WOOQO-E9j-E9jO?TQTO'#CqOOQO'#C|'#C|OOQP,59g,59gO?tQQO'#D_O@fQSO'#FuO@kQQO'#C}O@pQQO'#D[O9XQQO'#FqO@uQRO,5=TOAyQQO,59yOCVQSO,5:[O@kQQO'#C}OCaQQO'#DjOOQP,59^,59^OOQO,5<a,5<aO?tQQO'#DeOOQO,5:e,5:eOOQO-E9s-E9sOOQP,59z,59zOOQP,59|,59|OCqQSO,5:QO(kQQO,5:ROC{QQO,5:RO&]QRO'#FxOOQO'#Fx'#FxOFjQQO'#GpOFwQQO,5:^OF|QQO,5:_OHdQQO,5:`OHlQQO,5:aOHvQRO'#FyOIaQRO,5=]OIuQQO'#DzOOQP,5:d,5:dOOQO'#EV'#EVOOQO'#EW'#EWOOQO'#EX'#EXOOQO'#EZ'#EZOOQO'#E['#E[O4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:pO4cQQO,5:wOOQP,5:x,5:xO?tQQO'#EOOOQP,5:g,5:gOOQP,5:k,5:kO9yQQO,59vO4cQQO,5:zO4cQQO,5:}OI|QRO,5;_OOQO,5<Y,5<YOOQO-E9l-E9lO]QQOOOOQP'#Cb'#CbOOQP,58z,58zOOQP'#Cf'#CfOJWQQO'#CfOJ]QSO'#CkOOQP,59O,59OOJkQQO'#DPOLZQQO,5<UOLbQQO,59iOLsQQO,5<TOMpQQO'#DUOOQP,59n,59nOOQP,59v,59vONfQQO,59vONmQQO'#CwOOQP,59_,59_O?tQQO,5:SONxQRO'#EgO! VQQO'#EhOOQP,5;P,5;PO! |QQO'#EkO!!WQQO'#EnOOQP,5;T,5;TO!!`QRO'#EqO!!mQQO'#ErOOQP,5;Z,5;ZO!!uQTO'#CbO!!|QTO,5;aO&]QRO,5;aO!#WQQO,5;jO!$yQTO,5;dO!%WQQO'#EzOOQP,5;d,5;dO&]QRO,5;dO!%cQSO,5;mO!%mQQO'#E`O!%uQQO'#EcO!%zQQO'#FTO!&UQQO'#FTOOQP,5;m,5;mO!&ZQQO,5;mO!&`QTO,5;rO!&mQQO'#F[OOQP,5;t,5;tO!&xQTO'#GqOOQP,5;y,5;yOOQP'#Et'#EtOOQP,5;{,5;{O!']QTO,5<RPOOO'#Fk'#FkP!'jOWO,58xPOOO,58x,58xO!'uQQO,59yO!'zQQO'#GgOOQP,59i,59iO(kQQO,59vOOQP,5<],5<]OOQP-E9o-E9oOOQP1G/e1G/eOOQP1G/v1G/vO!([QSO'#DlO!(lQQO'#DlO!(wQQO'#DkOOQO'#Go'#GoO!(|QQO'#GoO!)UQQO,5:UO!)ZQQO'#GnO!)fQQO,5:PPOQO'#Cq'#CqO(kQQO1G/lOOQP1G/m1G/mO(kQQO1G/mOOQO,5<d,5<dOOQO-E9v-E9vOOQP1G/x1G/xO!)kQSO1G/yOOQP'#Cy'#CyOOQP1G/z1G/zO?tQQO1G/}O!)xQSO1G/{O!*YQQO1G/|O!*gQTO,5<eOOQP-E9w-E9wOOQP,5:f,5:fO!+QQQO,5:fOOQP1G0[1G0[O!,vQTO1G0[O!.wQTO1G0[O!/OQTO1G0[O!0pQTO1G0[O!1QQTO1G0cO!1bQQO,5:jOOQP1G/b1G/bOOQP1G0f1G0fOOQP1G0i1G0iOOQP1G0y1G0yOOQP,59Q,59QO&]QRO'#FmO!1mQSO,59VOOQP,59V,59VOOQO'#DQ'#DQO?tQQO'#DQO!1{QQO'#DQOOQO'#Gh'#GhO!2SQQO'#GhO!2[QQO,59kO!2aQSO'#CqOJkQQO'#DPOOQP,5=R,5=RO@kQQO1G1pOOQP1G/w1G/wO.hQQO'#ElO!2rQRO1G1oO@kQQO1G1oO@kQQO'#DVO?tQQO'#DWOOQP'#Gk'#GkO!2}QRO'#GjOOQP'#Gj'#GjO&]QRO'#FsO!3`QQO,59pOOQP,59p,59pO!3gQRO'#CxO!3uQQO'#CxO!3|QRO'#CxO.hQQO'#CxO&]QRO'#FoO!4XQQO,59cOOQP,59c,59cO!4dQQO1G/nO4cQQO,5;RO!4iQQO,5;RO&]QRO'#FzO!4nQQO,5;SOOQP,5;S,5;SO!6aQQO'#DgO?tQQO,5;VOOQP,5;V,5;VO&]QRO'#F}O!6hQQO,5;YOOQP,5;Y,5;YO!6pQRO,5;]O4cQQO,5;]O&]QRO'#GOO!6{QQO,5;^OOQP,5;^,5;^O!7TQRO1G0{O!7`QQO1G0{O4cQQO1G1UO!8vQQO1G1UOOQP1G1O1G1OO!9OQQO'#GPO!9YQQO,5;fOOQP,5;f,5;fO4cQQO'#E{O!9eQQO'#E{O<uQQO1G1OOOQP1G1X1G1XO!9jQQO,5:zO!9jQQO,5:}O!9tQSO,5;oO!:OQQO,5;oO!:VQQO,5;oO!9OQQO'#GRO!:aQQO,5;vOOQP,5;v,5;vO!<PQQO'#F]O!<WQQO'#F]POOO-E9i-E9iPOOO1G.d1G.dO!<]QQO,5:VO!<gQQO,5=ZO!<tQQO,5=ZOOQP1G/p1G/pO!<|QQO,5=YO!=WQQO,5=YOOQP1G/k1G/kOOQP7+%W7+%WOOQP7+%X7+%XOOQP7+%e7+%eO!=cQQO7+%eO!=hQQO7+%iOOQP7+%g7+%gO!=mQQO7+%gO!=rQQO7+%hO!>PQSO7+%hOOQP7+%h7+%hO4cQQO7+%hOOQP1G0Q1G0QO!>^QQO1G0QOOQP1G0U1G0UO!>fQQO1G0UOF|QQO1G0UOOQO,5<X,5<XOOQO-E9k-E9kOOQP1G.q1G.qOOQO,59l,59lO?tQQO,59lO!?cQQO,5=SO!?jQQO,5=SOOQP1G/V1G/VO!?rQQO,59yO!?}QRO7+'[O!@YQQO'#EmO!@dQQO'#HOO!@lQQO,5;WOOQP7+'Z7+'ZO!@qQRO7+'ZOOQP,59q,59qOOQP,59r,59rOOQO'#DZ'#DZO!@]QQO'#FtO!@|QRO,59tOOQO,5<_,5<_OOQO-E9q-E9qOOQP1G/[1G/[OOQP,59d,59dOHgQQO'#FpO!3uQQO,59dO!A_QRO,59dO!AjQRO,59dOOQO,5<Z,5<ZOOQO-E9m-E9mOOQP1G.}1G.}O(kQQO7+%YOOQP1G0m1G0mO4cQQO1G0mOOQO,5<f,5<fOOQO-E9x-E9xOOQP1G0n1G0nO!AxQQO'#GdOOQP1G0q1G0qOOQO,5<i,5<iOOQO-E9{-E9{OOQP1G0t1G0tO4cQQO1G0wOOQP1G0w1G0wOOQO,5<j,5<jOOQO-E9|-E9|OOQP1G0x1G0xO!B]QQO7+&gO!BeQSO7+&gO!CsQSO7+&pO!CzQQO7+&pOOQO,5<k,5<kOOQO-E9}-E9}OOQP1G1Q1G1QO!DRQQO,5;gOOQO,5;g,5;gO!DWQSO7+&jOOQP7+&j7+&jO!DbQQO7+&pO!7`QQO1G1[O!DgQQO1G1ZOOQO1G1Z1G1ZO!DnQSO1G1ZOOQO,5<m,5<mOOQO-E:P-E:POOQP1G1b1G1bO!DxQSO'#GqO!E]QQO'#F^O!EbQQO'#F^O!EgQQO,5;wOOQO,5;w,5;wO!ElQSO1G/qOOQO1G/q1G/qO!EyQSO'#DoO!FZQQO'#DoO!FfQQO'#DnOOQO,5<c,5<cO!FkQQO1G2uOOQO-E9u-E9uOOQO,5<b,5<bO!FxQQO1G2tOOQO-E9t-E9tOOQP<<IP<<IPOOQP<<IT<<ITOOQP<<IR<<IRO!GSQSO<<ISOOQP<<IS<<ISO4cQQO<<ISO!GaQSO<<ISOOQP7+%l7+%lO!GkQQO7+%lOOQP7+%p7+%pO!GpQQO7+%pO!GuQQO7+%pOOQO1G/W1G/WOOQO,5<^,5<^O!G}QQO1G2nOOQO-E9p-E9pOOQP<<Jv<<JvO.hQQO'#F{O!@YQQO,5;XOOQO,5;X,5;XO!HUQQO,5=jO!H^QQO,5=jOOQO1G0r1G0rOOQP<<Ju<<JuOOQP,5<`,5<`OOQP-E9r-E9rOOQO,5<[,5<[OOQO-E9n-E9nO!HfQRO1G/OOOQP1G/O1G/OOOQP<<Ht<<HtOOQP7+&X7+&XO!HqQQO'#DeOOQP7+&c7+&cOOQP<<JR<<JRO!HxQRO<<JRO!ITQQO<<J[O!I]QQO<<J[OOQO1G1R1G1ROOQP<<JU<<JUO4cQQO<<J[O!IbQSO7+&vOOQO7+&u7+&uO!IlQQO7+&uO4cQQO,5;xOOQO1G1c1G1cO!<]QQO,5:YP!<]QQO'#FwP?tQQO'#FvOOQPAN>nAN>nO4cQQOAN>nO!IsQSOAN>nOOQP<<IW<<IWOOQP<<I[<<I[O!I}QQO<<I[P!>nQQO'#FrOOQO,5<g,5<gOOQO-E9y-E9yOOQO1G0s1G0sOOQO,5<h,5<hO!JVQQO1G3UOOQO-E9z-E9zOOQP7+$j7+$jO!J_QQO'#GnO!B]QQOAN?mO!JjQQOAN?vO!JqQQOAN?vO!KzQSOAN?vOOQO<<Ja<<JaO!LRQSO1G1dO!L]QSO1G/tOOQO1G/t1G/tO!LjQSOG24YOOQPG24YG24YOOQPAN>vAN>vO!LtQQOAN>vP.hQQO'#F|OOQPG25XG25XO!LyQQOG25bO!MOQQO'#FPOOQPG25bG25bO!MZQQOG25bOOQPLD)tLD)tOOQPG24bG24bO!JqQQOLD*|O!9OQQO'#GQO!McQQO,5;kOOQP,5;k,5;kO?tQQO'#FQO!MnQQO'#FQO!MsQQOLD*|OOQP!$'Nh!$'NhOOQO,5<l,5<lOOQO-E:O-E:OOOQP1G1V1G1VO!MzQQO,5;lOOQO,5;l,5;lO!NPQQO!$'NhOOQO1G1W1G1WO!JqQQO!)9DSOOQP!.K9n!.K9nO# {QTO'#CqO#!`QTO'#CqO##}QSO'#CqO#$XQSO'#CqO#&]QSO'#CqO#&gQQO'#FyO#&tQQO'#FyO#'OQQO,5=]O#'ZQQO,5=]O#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO#'cQQO,5:pO!7`QQO,5:pOF|QQO,5:pO!7`QQO,5:wO!7`QQO,5:zO!7`QQO,5:}O#(yQSO'#CbO#)}QSO'#CbO#*bQSO'#GqO#*rQSO'#GqO#+PQRO'#GgO#+yQSO,5<eO#,ZQSO,5<eO#,hQSO1G0[O#-rQTO1G0[O#-yQSO1G0[O#.TQSO1G0[O#0{QTO1G0[O#1SQSO1G0[O#2eQSO1G0[O#2lQTO1G0[O#2sQSO1G0[O#4XQSO1G0[O#4`QTO1G0[O#4jQSO1G0[O#4wQSO1G0cO#5dQTO'#CqO#5kQTO'#CqO#6bQSO'#GqO#'cQQO'#EPO!7`QQO'#EPOF|QQO'#EPO#8]QQO'#EPO#8gQQO'#EPO#8qQQO'#EPO#8{QQO'#E`O#9TQQO'#EcO@kQQO'#C}O?tQQO,5:RO#9YQQO,59vO#:iQQO,59vO?tQQO,59vO?tQQO1G/lO?tQQO1G/mO?tQQO7+%YO?tQQO'#C{O#:pQQO'#DgO#9YQQO'#D[O#:wQQO'#D[O#:|QSO,5:QO#;WQQO,5:RO#;]QQO1G/nO?tQQO,5:SO#;bQQO'#Dh",stateData:"#;m~O$yOSPOS$zPQ~OVvOX{O[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO$v%QP~OTzO~P]O$z!`O~OVeXZeX^eX^!TXj!TXnUXneX!QeX!WeX!W!TX!|eX#ReX#TeX#UeX#WUX$weX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O!a#hX~P$XOV!bO$w!bO~O[!wX^pX^!wXa!wXd!wXhpXh!wXrpXr!wXwpXw!wX!PpX!P!wX!QpX!Q!wX!WpX!W!wX!]pX!]!wX!p!wX!q!wX%OpX%O!wX%U!wX%V!wX%YpX%Y!wX%f!wX%g!wX%h!wX%i!wX%j!wX~O^!hOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%O!eO%Y!fO~On!lO#W%]XV%]X^%]Xh%]Xr%]Xw%]X!P%]X!Q%]X!W%]X!]%]X#T%]X$w%]X%O%]X%Y%]Xu%]X~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO~P*aOj!qO^%XX]%XXn%XX!V%XX~O!W!tOV%TXZ%TX^%TXn%TX!Q%TX!W%TX!|%TX#R%TX#T%TX#U%TX$w%TX%Y%TX%`%TX%f%TX%g%TX%i%TX%j%TX%k%TX%l%TX%m%TX%n%TX%o%TX%p%TX%q%TX]%TX!V%TXj%TXi%TX!a%TXu%TX~OZ!sO~P,^O%O!eO~O!W!tO^%WXj%WX]%WXn%WX!V%WXu%WXV%WX$w%WX%`%WX#T%WX[%WX!a%WX~Ou!{O!QnO!V!zO~P*aOV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlOi%dP~O^#QO~OZ#RO^#VOn#TO!Q#cO!W#SO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX$w`X~O!|#`O~P2gO^#VO~O^#eO~O!QnO~P*aO[oO^YOaoOdoOh!POr!pOw}O!QnO!WaO!]!QO!phO!qhO%O+wO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!P#hO~P4jO#T#iO#U#iO~O#W#jO~O!a#kO~OVvO[oO^YOaoOdoOh!POjcOr|Ow}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O$v%QX~P6hO%O#oO~OZ#rO[#qO^#sO%O#oO~O^#uO%O#oO~Oj#yO~O^!hOh!POr!jOw}O!P!OO!Q#|O!WaO!]!QO%O!eO%Y!fO~Oj#}O~O!W$PO~O^$RO%O#oO~O^$UO%O#oO~O^$XO%O#oO~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O$ZO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oj$`O~P;_OV$fOjcO~P;_Oj$kO~O!QnOV$RX$w$RX~P*aO%O$oOV$TX$w$TX~O%O$oO~O${$rO$|$rO$}$tO~OZeX^!TX!W!TXj!TXn!TXh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~O]!TX!V!TXu!TX#T!TXV!TX$w!TX%`!TX[!TX!a!TX~P>VO^!hOh!POr-TOw}O!P-_O!Q-`O!W-^O!]-eO%O!eO%Y!fO~OZ!sO~O^#uO~O!P$xO~On!lO#W%]aV%]a^%]ah%]ar%]aw%]a!P%]a!Q%]a!W%]a!]%]a#T%]a$w%]a%O%]a%Y%]au%]a~O]${O^#QO~OZ#RO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O]$|O!|,WO~PBROj!qOn%QO!QnOi%cP~P*aO!V%WO!|#`O~PBRO!V%YO~OV!}O[oO^YOaoOdoOh!POjcOr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO#Y!RO#^!SO#d!TO#j!UO#m!VO#v!WO#{!XO#}!YO$S!ZO$U![O$V![O$W!]O$Y!^O$[!_O%OQO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~Oi%dX#p%dX#q%dX~PDQOi%]O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-QO!WaO!]!QO!phO!qhO%O+{O%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^%aO%O%_O~O!QnO!a%cO~P*aO!QnOn$mX#T$mX#U$mXV$mX$w$mX!a$mX~P*aOn#TO#T%ea#U%eaV%ea$w%ea!a%ea~O]%fO~PF|OV#ga$w#ga~PDTO[%sO~OZ#rO[#qO]%vO%O#oO~O^!hOh!POn%zOr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO]%[P~O^&OOh!POr!jOw}O!P!OO!Q!kO!WaO!]!QO%Y!fO^%ZXj%ZX~O%O%}O~PKfOjcO^qa]qanqa!Vqa~O^#uO!W&SO~O^!hOh!POr-TOw}O{&WO!P-_O!Q-`O!W-^O!]-eO%O,xO%Y!fO~Oi&^O~PL{O^!hOh!POr!jOw}O!Q!kO!WaO!]!QO%O!eO%Y!fO~O!P#hO~PMwOi&eO%O,yO%Y!fO~O#T&gOV#ZX$w#ZX~P?tO]&kO%O#oO~O^!hOh!POr-TOw}O!P-_O!Q-`O!]-eO%O!eO%Y!fO~O!W&lO#T&mO~P! _O]&qO%O#oO~O#T&sOV#eX$w#eX~P?tO]&vO%O#oO~OjeX~P$XOjcO!|,XO~P2gOn!lO#W&yO#W%]X~O^#VOn#TO!Q#cO!W#SO!|,XO#R#dO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]OV`X#T%eX#U%eX~OZ&zOj$`O$w`X~P!#cOi'OO#p'PO#q'QO~OZ#ROjcO~P!#cO#T'TO#U#iO~O#W'UO~OV'WO!QnO~P*aOV'XO~OjcO~O!|#`OV#za$w#za~PBROi'[O#p']O#q'^O~On#TO!|#`OV%eX$w%eX!a%eX~PBRO!|#`OV$Za$w$Za~PBRO${$rO$|$rO$}'`O~O]${O~O%O!eO]%ZXn%ZX!V%ZX~PKfO!|#`Oi!_Xn!_X!a!`X~PBROi!_Xn!_X!a!`X~O!a'aO~On'bOi%cX~Oi'dO~On'eO!V%bX!a%bX~O!V'gO~O]'jOn'kO!|,YO~PBROn'nO!V'mO!a'oO!|#`O~PBRO!QnO!V'qO!a'rO~P*aO!|#`On$ma#T$ma#U$maV$ma$w$ma!a$ma~PBRO]'sOu'tO~O%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi!|!xi#R!xi#T!xi#U!xi$w!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~O!V!xii!xi!a!xi~P!+YO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi!V!xii!xi!a!xi~O!|!xi~P!-TO!|#`O~P!-TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OV!xiZ!xi^!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%q!xi~O!|#`O!V!xii!xi!a!xi~P!/VO!|#`OV#Pi$w#Pi!a#Pi~PBRO]'uOn'wOu'vO~OZ#rO[#qO]'zO%O#oO~Ou'|O~P?tOn'}O]%[X~O](PO~OZeX^mX^!TXj!TX!W!TX~OjcOV$]i$w$]i~O%`(ZOV%^X$w%^Xn%^X!V%^X~Oi(`O~PL{O[(aO!W!tOVlX$wlX~On(bO~P?tO[(aOVlX$wlX~Oi(hO%O,yO%Y!fO~O!V(iO~O#T(kO~O](nO%O#oO~O[oO^YOaoOdoOh!POr!pOu-bOw}O!P!OO!QnO!V-UO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O+zO~P!4vO](sO%O#oO~O#T(tOV#ea$w#ea~O](xO%O#oO~O#k(yOV#ii$w#ii~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-PO!WaO!]!QO!phO!qhO%O+xO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O^(|O%O%_O~O#p%dP#q%dP~P/uOi)PO#p'PO#q'QO~O!a)RO~O!QnO#y)VO~P*aOV)WO!|#`O~PBROj#wa~P;_OV)WO!QnO~P*aOi)]O#p']O#q'^O~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!QnO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O%O,eO~P!:lO!a)bO~Oj!qO!QnO~P*aOj!qO!QnOi%ca~P*aOn)iOi%ca~O!V%ba!a%ba~P?tOn)lO!V%ba!a%ba~O])nO~O])oO~O!V)pO~O!QnO!V)rO!a)sO~P*aO!V)rO!a)sO!|#`O~PBRO])uOn)vO~O])wOn)xO~O^!hOh!POr-TOu%xOw}O!P-_O!Q-`O!W-^O!]-eO%O,dO%Y!fO~O]%[a~P!>nOn)|O]%[a~O]${O]tXntX~OjcOV$^q$w$^q~On*PO{&WO~P?tOn*SO!V%rX~O!V*UO~OjcOV$]q$w$]q~O%`(ZOV|a$w|an|a!V|a~O[*]OVla$wla~O[*]O!W!tOVla$wla~On*PO{&WO!W*`O^%WXj%WX~P! _OjcO#j!UO~OjcO!|,XO~PBROZ*dO^#VO!W#SO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~O!|#`O~P!BoO#^*eO~P?tO!a*fO~Oj$`O!|,XO~P!BoO#W*hO~Oj#wi~P;_OV*kO!|#`O~PBROn#TO!Q#cO!|#`O!a$QX#T%eX~PBRO#T*lO~O#W*lO~O!a*mO~O!|#`Oi!_in!_i~PBRO!|#`Oi!bXn!bX!a!cX~PBROi!bXn!bX!a!cX~O!a*nO~Oj!qO!QnOi%ci~P*aO!V%bi!a%bi~P?tO!V*qO!a*rO!|#`O~PBRO!V*qO!|#`O~PBRO]*tO~O]*uO~O]*uOu*vO~O]%[i~P!>nO%O!eO!V%ra~On*|O!V%ra~O[+OOVli$wli~O%O+yO~P!4vO#k+QOV#iy$w#iy~O^+RO%O%_O~O]+SO~O!|,XOj#xq~PBROj#wq~P;_O!V+ZO!|#`O~PBRO]+[On+]O~O%O!eO!V%ri~O^#QOn'eO!V%bX~O#^+`O~P?tOj+aO~O^#VO!W#SO!|#`O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[O%q#]O~OZ+cO~P!JvO!|#`O!a$Qi~PBRO!|#`Oi!bin!bi~PBRO!V+dO!|#`O~PBRO]+eO~O]+fO~Oi+iO#p+jO#q+kO~O^+lO%O%_O~Oi+pO#p+jO#q+kO~O!a+rO~O#^+sO~P?tO!a+tO~O]+uO~OZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXVeXneX!QeX#ReX#TeX#UeX$weX~O]eX]!TX!VeXieX!aeX~P!NUOjeX~P!NUOZeX^eX^!TXj!TX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeXn!TX!VeX~O]eX!V!TX~P#!gOh!TXr!TXw!TX{!TX!P!TX!Q!TX!]!TX%O!TX%Y!TX~P#!gOZeX^eX^!TXj!TXneX!WeX!W!TX!|eX%YeX%`eX%feX%geX%ieX%jeX%keX%leX%meX%neX%oeX%peX%qeX~O]eXueX~P#$xO]$mXn$mXu$mX~PF|Oj$mXn$mX~P!7`On+|O]%eau%ea~On+}Oj%ea~O[oO^YOaoOdoOh!POr!pOw}O!P!OO!Q-OO!WaO!]!QO!phO!qhO%O+yO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~OZeX]!TX^UXhUXnUXn!TXrUXuUXwUX!PUX!QUX!WUX!W!TX!]UX%OUX%YUX~OnUX!QeX!aeX#TeX#WUX~P#$xOn+|O!|,YO]%eXu%eX~PBROn+}O!|,XOj%eX~PBRO^&OOV%ZXj%ZX$w%ZX]%ZXn%ZX!V%ZXu%ZX%`%ZX#T%ZX[%ZX!a%ZX~P?wO!|,YO]$man$mau$ma~PBRO!|,XOj$man$ma~PBRO%Y#XO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%`!xi%f!xi%g!xi%i!xi%p!xi%q!xi~Oj!xi~P!+YOn!xiu!xi~P#,hO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi!|!xi%p!xi%q!xi~O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOV!xiZ!xi^!xij!xin!xi!Q!xi!W!xi#R!xi#T!xi#U!xi$w!xi%p!xi%q!xi~O!|!xi~P#/_On!xiu!xi~P#.TO%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YOZ!xi]!xi^!xi!W!xi%p!xi%q!xi~O!|,WO~P#1^O!|,XO~P#/_O!|,YOn!xiu!xi~P#1^O%Y#XO%`#ZO%fiO%giO%i#ZO%j#YO%k#XO%l#XO%m#YO%n#YO%o#YO%p#[OZ!xi]!xi^!xi!W!xi%q!xi~O!|,WO~P#3QO!|,XOj!xi~P!/VO!|,YOn!xiu!xi~P#3QO!|,XOj#Pi~PBROV!TXZeX^mX!W!TX$w!TX~O%`!TX~P#5RO[!TXhmXnmXrmXwmX!PmX!QmX!WmX!]mX%OmX%YmX~P#5ROn#TO!Q,aO!|,XO#R#dOj`X#T%eX#U%eX~PBRO[oO^YOaoOdoOh!POr!pOw}O!P#hO!WaO!]!QO!phO!qhO%UTO%VUO%YVO%fiO%giO%hjO%ikO%jlO~O!Q-OO%O+yO~P#6{O!Q-PO%O+xO~P#6{O!Q-QO%O+{O~P#6{O#T,bO#U,bO~O#W,cO~O^!hOh!POr-TOw}O!P-_O!Q-WO!W-^O!]-eO%O!eO%Y!fO~O^!hOh!POr-TOw}O!Q-`O!W-^O!]-eO%O!eO%Y!fO~O!P-VO~P#9zO%O+wO~P!4vO!P-XO~O!V-YO!|#`O~PBRO!V-ZO~O!V-[O~O!W-dO~OP%ka%Oa~",goto:"!FW%sPP%tP%wP%zP'SP'XPPPP'`'cP'u'uP)w'u-_PPP0j0m0qP1V4b1VP7s8WP1VP8a8d8hP8p8w1VPP1V8{<`?vPPCY-_-_-_PCdCuCxPC{DQ'u'uDV'uES'u'u'u'uGUIW'uPPJR'uJUMjMjMj'u! r! r!#SP!$`!%d!&d'cP'cPP'cP!&yP!'V!'^!&yP!'a!'h!'n!'w!&yP!'z!(R!&y!(U!(fPP!&yP!(x!)UPP!&y!)Y!)c!&yP!)g!)gP!&yP!&yP!)j!)m!&v!&yP!&yPPP!&yP!&yP!)q!)q!)w!)}!*U!*[!*d!*j!*p!*w!*}!+T!+Z!.q!.x!/O!/X!/m!/s!/z!0Q!0W!0^!0d!0jPPPPPPPPP!0p!1f!1k!1{!2kPP!7P!:^P!>u!?Z!?_!@Z!@fP!@p!D_!Df!Di!DuPPPPPPPPPPPP!FSR!aPRyO!WXOScw!R!T!U!W#O#k#n#u$R$X&O&j&u&|'W'Y']'})W)|*k*w+gQ#pzU#r{#s%uQ#x|U$T!S$U&pQ$^!VQ$y!lR)U'RVROS#nQ#t{T%t#s%uR#t{qrOScw!U!V!W#O#k#n&|'W'Y)W*k+g%PoOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%O]OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^#u!iW^!O!h!t!z#e#h#u#v#y#|#}$P$Q$T$W$v$x%W%Y%a%x%y&O&S&W&]&`&b&d&m'e'|'}(S([(c(i(o(|)l)|*P*Q*S*p*w*|+R+^+j+l,h-U-V-W-X-Y-Z-[-]-_-d'cbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR$O!PT&c#}&dW%`#R&z*d+cQ&Q#vS&V#y&]S&`#}&dR*Y(b'cZOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d%fWOSWYacmnw!O!U!V!W!X!Z!_!q!z#O#Q#S#T#V#^#_#`#a#b#c#h#i#j#k#n#v#|$f$v$x%W%Y%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(i(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S&b#}&d!{-]!h!t#e#u#y$P$Q$T$W%a%x%y&O&W&]&`&m'e'|'}(S([(c(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-dQ#v|S$v!j!pU&P#v$v,hZ,h#x&Q&U&V-TS%{#u&OV){'})|*wR#z}T&[#y&]]&X#y&](S([(o*QZ&Z#y&](S(o*QT([&Y(]'s_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-d'r_OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!w^'bbOSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&a#}&dR(d&bS!u]fX!x`&_(e(oQ!r[Q%O!qQ)d'aU)f'b)i*oR+X*nR%R!qR%P!qV)h'b)i*oV)g'b)i*odtOScw#O#k#n&|'Y+gQ$h!WQ&R#wQ&w$[S'S$c$iQ(V&TQ*O(RQ*V(WQ*b(yQ*c(zR+_+Q%PfOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^%PgOSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^!q#Weg!o!y$[$_$c$j$m$q$}%^%b%d%m'V'p(z({)S)Y)^)c)e)q)t*i*s+T+V+W+Y,f,g,i,j,w,z-aR#fh#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z[,V%^,f,i,p,s,v`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q#^mOSacmnw!X!Z!_!q#O#S#T#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&y&|'P'T'U'X'Y']'a'b'o'r(k(t)i)s*`*h*l*n*o*r+g-^`,{Y,Q,T,W,Z,^,{-Ox,|!U!V!W&x'R'W)V)W*k+},R,U,X,[,_,a,b,c,|-Pg,}#Q#V'w+|,S,V,Y,],`,}-Q!Y#^e!y$j$m$q$}%b%d%i%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aY,Q!o,k,n,q,tl,R$[$_$c(z)S*i,g,j,l,o,r,u,w,z_,S%^,f,i,m,p,s,v!W#_e!y$j$m$q$}%b%d%j%k%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aW,T!o,n,q,tj,U$[$_$c(z)S*i,g,j,o,r,u,w,z],V%^,f,i,p,s,v!S#ae!y$j$m$q$}%b%d%l%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aS,Z!o,tf,[$[$_$c(z)S*i,g,j,u,w,zX,]%^,f,i,v!Q#be!y$j$m$q$}%b%d%m'V'p({)Y)^)c)e)q)t*s+T+V+W+Y-aQ,^!od,_$[$_$c(z)S*i,g,j,w,zV,`%^,f,iprOScw!U!V!W#O#k#n&|'W'Y)W*k+gR)a']etOScw#O#k#n&|'Y+gQ$S!RT&i$R&jR$S!RQ$V!ST&o$U&pQ&U#xR&m$TS(T&S&lV*{*S*|+^R$V!SQ$Y!TT&t$X&uR$Y!TdsOScw#O#k#n&|'Y+gT$p![!]dtOScw#O#k#n&|'Y+gQ*b(yR+_+QQ$a!VQ&{$_Q)T'RR*g)ST&|$`&}Q+b+SQ+m+fR+v+uT+g+a+hR$i!WR$l!YT'Y$k'ZXuOSw#nQ$s!`R'_$sSSO#nR!dSQ%u#sR'y%uUwOS#nR#mwQ&d#}R(g&dQ(c&`R*Z(cS!mX$^R$z!mQ(O%{R)}(OQ&]#yR(_&]Q(]&YR*X(]'r^OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|#}$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&S&W&]&`&b&d&g&l&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*P*Q*S*`*h*k*l*n*o*p*r*w*|+R+^+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dR!v^S'f%T+PR)m'fQ'c%RR)j'cW#Oc&|'Y+gR%[#O^#Ue$[$_$c$m)^,zU%e#U,O,PQ,O,fR,P,gQ&j$RR(m&jS*Q(S(oR*y*QQ*T(TR*}*TQ&p$UR(r&pQ&u$XR(w&uQ&}$`R)O&}Q+h+aR+o+hQ'Z$kR)['ZQ!cRQ#luQ#nyQ%Z!|Q&x$]Q'R$bQ'x%tQ(^&[Q(f&cQ(l&iQ(q&oR(v&tVxOS#nWuOSw#nY!|c#O&|'Y+gR%r#kdtOScw#O#k#n&|'Y+gQ$]!UQ$b!VQ$g!WQ)X'WQ*j)WR+U*kdeOScw#O#k#n&|'Y+gQ!oYQ!ya`#gmn,{,|,}-O-P-QQ$[!UQ$_!VQ$c!WQ$j!Xd$m!Z#i#j&g&s'P'T'U(k(tQ$q!_Q$}!qQ%^#QQ%b#SQ%d#TW%h#^,Q,R,SQ%i#_Q%j#`Q%k#aQ%l#bQ%m#cQ'V$fQ'p%cQ(z&xQ({&yQ)S'RQ)Y'XQ)^']Q)c'aU)e'b)i*oQ)q'oQ)t'rQ*i)VQ*s)sQ+T*hQ+V*lQ+W*nQ+Y*rS,f#V'wS,g,b,cQ,i+|Q,j+}Q,k,TQ,l,UQ,m,VQ,n,WQ,o,XQ,p,YQ,q,ZQ,r,[Q,s,]Q,t,^Q,u,_Q,v,`Q,w,aU,z'W)W*kV-a&l*`-^#bZW!O!h!t!z#e#h#u#v#y#|$P$Q$T$W$v$x%W%Y%a%x%y&O&W&]&`&m'e'|'}(S([(c(i(o(|)l)|*Q*p*w+R+j+l,h-U-V-W-X-Y-Z-[-]-_-d%P[OSYacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*`*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^$zdOSacmnw!U!V!W!X!Z!_!q#O#Q#S#T#V#^#_#`#a#b#c#i#j#k#n$f%c&g&l&s&x&y&|'P'R'T'U'W'X'Y']'a'b'o'r'w(k(t)V)W)i)s*h*k*l*n*o*r+g+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,{,|,}-O-P-Q-^S!gW-]Q!nYS#{!O-_Q$u!hS%T!t+jS%X!z-UQ%n#e[%o#h#|$x-V-W-XW%w#u'})|*wU&P#v$v,h[&X#y&](S([(o*QQ&f$PQ&h$QQ&n$TQ&r$WS'h%W-YS'i%Y-ZW'l%a(|+R+lS'{%x%yQ(Q&OQ(Y&WQ(d&`Q(p&mU)k'e)l*pQ)z'|Q*[(cS*^(i-[Q+P*`R-c-dS#w|!pS$w!j-TQ&T#xQ(R&QQ(W&UR(X&VT%|#u&OhqOScw!U!V#O#k#n&|'Y+gU$Q!R$R&jU$W!T$X&uQ$e!WY%y#u&O'})|*wQ)`']V-S'W)W*kS&[#y&]S*R(S(oR*z*QY&Y#y&](S(o*QR*W(['``OSWYacmnw!O!U!V!W!X!Z!_!h!q!t!z#O#Q#S#T#V#^#_#`#a#b#c#e#h#i#j#k#n#u#v#y#|$P$Q$T$W$f$v$x%W%Y%a%c%x%y&O&W&]&`&g&m&s&x&y&|'P'R'T'U'W'X'Y']'a'b'e'o'r'w'|'}(S([(c(i(k(o(t(|)V)W)i)l)s)|*Q*`*h*k*l*n*o*p*r*w+R+g+j+l+|+},Q,R,S,T,U,V,W,X,Y,Z,[,],^,_,`,a,b,c,h,{,|,}-O-P-Q-U-V-W-X-Y-Z-[-]-^-_-dS&_#}&dW(S&S*S*|+^Q(e&bQ(o&lR*x*PS%U!t*`R+q+jR%S!qQ#PcQ(}&|Q)Z'YR+n+ghpOScw!U!V#O#k#n&|'Y+gQ$d!WQ$n!ZQ%g#VU%p#i'T,bU%q#j'U,cQ(j&gQ(u&sQ)Q'PQ)_']Q)y'wQ*_(kQ*a(tV-R'W)W*kT(U&S&l",nodeNames:"⚠ LineComment BlockComment SourceFile PackageClause package DefName ; ImportDecl import ImportSpec . String ) ( SpecList ExprStatement Number Bool Nil Rune VariableName TypedLiteral StructType struct } { StructBody FieldDecl FieldName , PointerType * FunctionType func Parameters Parameter ... InterfaceType interface InterfaceBody MethodElem UnderlyingType ~ TypeElem LogicOp ChannelType chan <- ParenthesizedType QualifiedType TypeName ParameterizedType ] [ TypeArgs ArrayType SliceType MapType map LiteralValue Element Key : Element Key ParenthesizedExpr FunctionLiteral Block Conversion SelectorExpr IndexExpr SliceExpr TypeAssertion CallExpr ParameterizedExpr Arguments CallExpr make new Arguments UnaryExp ArithOp LogicOp BitOp DerefOp BinaryExp ArithOp BitOp BitOp CompareOp LogicOp LogicOp SendStatement IncDecStatement IncDecOp Assignment = UpdateOp VarDecl := ConstDecl const ConstSpec SpecList TypeDecl type TypeSpec TypeParams TypeParam SpecList VarDecl var VarSpec SpecList LabeledStatement LabelName IfStatement if else SwitchStatement switch SwitchBlock Case case default TypeSwitchStatement SwitchBlock Case ForStatement for ForClause RangeClause range GoStatement go SelectStatement select SelectBlock Case ReceiveStatement ReturnStatement return GotoStatement break continue goto FallthroughStatement fallthrough DeferStatement defer FunctionDecl MethodDecl",maxTerm:218,context:iO,nodeProps:[["isolate",-3,2,12,20,""],["group",-18,12,17,18,19,20,21,22,66,67,69,70,71,72,73,74,77,81,86,"Expr",-20,16,68,93,94,96,99,101,105,111,115,117,120,126,129,134,136,141,143,147,149,"Statement",-12,23,31,33,38,46,49,50,51,52,56,57,58,"Type"],["openedBy",13,"(",25,"{",53,"["],["closedBy",14,")",26,"}",54,"]"]],propSources:[XO],skippedNodes:[0,1,2,153],repeatNodeCount:23,tokenData:":b~RvXY#iYZ#i]^#ipq#iqr#zrs$Xuv&Pvw&^wx&yxy(qyz(vz{({{|)T|})e}!O)j!O!P)u!P!Q+}!Q!R,y!R![-t![!]2^!]!^2k!^!_2p!_!`3]!`!a3e!c!}3x!}#O4j#P#Q4o#Q#R4t#R#S4|#S#T9X#T#o3x#o#p9q#p#q9v#q#r:W#r#s:]$g;'S3x;'S;=`4d<%lO3x~#nS$y~XY#iYZ#i]^#ipq#iU$PP%hQ!_!`$SS$XO!|S~$^W[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y<%lO$X~${O[~~%ORO;'S$X;'S;=`%X;=`O$X~%^X[~OY$XZr$Xrs$vs#O$X#O#P${#P;'S$X;'S;=`%y;=`<%l$X<%lO$X~%|P;=`<%l$X~&UP%l~!_!`&X~&^O#U~~&cR%j~vw&l!_!`&X#Q#R&q~&qO%p~~&vP%o~!_!`&X~'OWd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k<%lO&y~'mOd~~'pRO;'S&y;'S;=`'y;=`O&y~(OXd~OY&yZw&ywx'hx#O&y#O#P'm#P;'S&y;'S;=`(k;=`<%l&y<%lO&y~(nP;=`<%l&y~(vO^~~({O]~~)QP%Y~!_!`&X~)YQ%f~{|)`!_!`&X~)eO#R~~)jOn~~)oQ%g~}!O)`!_!`&X~)zRZS!O!P*T!Q![*`#R#S+w~*WP!O!P*Z~*`Ou~Q*eTaQ!Q![*`!g!h*t#R#S+w#X#Y*t#]#^+rQ*wS{|+T}!O+T!Q![+^#R#S+lQ+WQ!Q![+^#R#S+lQ+cRaQ!Q![+^#R#S+l#]#^+rQ+oP!Q![+^Q+wOaQQ+zP!Q![*`~,SR%k~z{,]!P!Q,b!_!`&X~,bO$z~~,gSP~OY,bZ;'S,b;'S;=`,s<%lO,b~,vP;=`<%l,bQ-O[aQ!O!P*`!Q![-t!d!e.c!g!h*t!q!r/Z!z!{/x#R#S.]#U#V.c#X#Y*t#]#^+r#c#d/Z#l#m/xQ-yUaQ!O!P*`!Q![-t!g!h*t#R#S.]#X#Y*t#]#^+rQ.`P!Q![-tQ.fR!Q!R.o!R!S.o#R#S/QQ.tSaQ!Q!R.o!R!S.o#R#S/Q#]#^+rQ/TQ!Q!R.o!R!S.oQ/^Q!Q!Y/d#R#S/rQ/iRaQ!Q!Y/d#R#S/r#]#^+rQ/uP!Q!Y/dQ/{T!O!P0[!Q![1c!c!i1c#R#S2Q#T#Z1cQ0_S!Q![0k!c!i0k#R#S1V#T#Z0kQ0pVaQ!Q![0k!c!i0k!r!s*t#R#S1V#T#Z0k#]#^+r#d#e*tQ1YR!Q![0k!c!i0k#T#Z0kQ1hWaQ!O!P0k!Q![1c!c!i1c!r!s*t#R#S2Q#T#Z1c#]#^+r#d#e*tQ2TR!Q![1c!c!i1c#T#Z1c~2cP!a~!_!`2f~2kO#W~~2pOV~~2uR!|S}!O3O!^!_3T!_!`$S~3TO!Q~~3YP%m~!_!`&X~3bP#T~!_!`$S~3jQ!|S!_!`$S!`!a3p~3uP%n~!_!`&X~3}V%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~4gP;=`<%l3x~4oO!W~~4tO!V~~4yP%i~!_!`&X~5RV%O~!Q![5h!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~5o^aQ%O~!O!P*`!Q![5h!c!g3x!g!h6k!h!}3x#R#S4|#T#X3x#X#Y6k#Y#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~6pX%O~{|+T}!O+T!Q![7]!c!}3x#R#S8P#T#o3x$g;'S3x;'S;=`4d<%lO3x~7dXaQ%O~!Q![7]!c!}3x#R#S8P#T#]3x#]#^8k#^#o3x$g;'S3x;'S;=`4d<%lO3x~8UV%O~!Q![7]!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~8rVaQ%O~!Q![3x!c!}3x#R#S3x#T#o3x$g;'S3x;'S;=`4d<%lO3x~9[TO#S9X#S#T$v#T;'S9X;'S;=`9k<%lO9X~9nP;=`<%l9X~9vOj~~9{Q%`~!_!`&X#p#q:R~:WO%q~~:]Oi~~:bO{~",tokenizers:[aO,1,2,new Y("j~RQYZXz{^~^O$|~~aP!P!Qd~iO$}~~",25,181)],topRules:{SourceFile:[0,3]},dynamicPrecedences:{19:1,51:-1,55:2,69:-1,108:-1},specialized:[{term:184,get:Q=>nO[Q]||-1}],tokenPrec:5451}),oO=[X("func ${name}(${params}) ${type} {\n ${}\n}",{label:"func",detail:"declaration",type:"keyword"}),X("func (${receiver}) ${name}(${params}) ${type} {\n ${}\n}",{label:"func",detail:"method declaration",type:"keyword"}),X("var ${name} = ${value}",{label:"var",detail:"declaration",type:"keyword"}),X("type ${name} ${type}",{label:"type",detail:"declaration",type:"keyword"}),X("const ${name} = ${value}",{label:"const",detail:"declaration",type:"keyword"}),X("type ${name} = ${type}",{label:"type",detail:"alias declaration",type:"keyword"}),X("for ${init}; ${test}; ${update} {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),X("for ${i} := range ${value} {\n ${}\n}",{label:"for",detail:"range",type:"keyword"}),X(`select {
2
2
  \${}
3
3
  }`,{label:"select",detail:"statement",type:"keyword"}),X("case ${}:\n${}",{label:"case",type:"keyword"}),X("switch ${} {\n ${}\n}",{label:"switch",detail:"statement",type:"keyword"}),X("switch ${}.(${type}) {\n ${}\n}",{label:"switch",detail:"type statement",type:"keyword"}),X("if ${} {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),X(`if \${} {
4
4
  \${}
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-D61Le6TE.css","./main-DAuE07rf.css"])))=>i.map(i=>d[i]);
2
+ import{am as i}from"./tool-windows-BEnZdJqF.js";(async function(){await(window.__OPENTU_START_MAIN_ENTRY__||Promise.resolve()),await i(()=>import("./main-BO0HWBB1.js").then(_=>_.f),__vite__mapDeps([0,1]),import.meta.url)})();