termdock 1.4.220 → 1.4.221

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 (311) hide show
  1. package/dist/client/assets/{App-mcFsMbEy.js → App-DIKT4Uzg.js} +3 -3
  2. package/dist/client/assets/App-DIKT4Uzg.js.br +0 -0
  3. package/dist/client/assets/App-DIKT4Uzg.js.gz +0 -0
  4. package/dist/client/assets/{ChangeWalkthroughPanel-DMRwFjGh.js → ChangeWalkthroughPanel-O0PkAS-_.js} +1 -1
  5. package/dist/client/assets/ChangeWalkthroughPanel-O0PkAS-_.js.br +0 -0
  6. package/dist/client/assets/ChangeWalkthroughPanel-O0PkAS-_.js.gz +0 -0
  7. package/dist/client/assets/{DagPlayground-GpfQi2DO.js → DagPlayground-DTocdzNw.js} +1 -1
  8. package/dist/client/assets/DagPlayground-DTocdzNw.js.br +0 -0
  9. package/dist/client/assets/DagPlayground-DTocdzNw.js.gz +0 -0
  10. package/dist/client/assets/{DiffLab-Ch4AMuRr.js → DiffLab-wqbu2cMY.js} +1 -1
  11. package/dist/client/assets/DiffLab-wqbu2cMY.js.br +0 -0
  12. package/dist/client/assets/DiffLab-wqbu2cMY.js.gz +0 -0
  13. package/dist/client/assets/DiffReview-09QoF1Us.js +1 -0
  14. package/dist/client/assets/DiffReview-09QoF1Us.js.br +0 -0
  15. package/dist/client/assets/DiffReview-09QoF1Us.js.gz +0 -0
  16. package/dist/client/assets/{DiffReviewLab-kbUKtav9.js → DiffReviewLab-CFRQkWps.js} +1 -1
  17. package/dist/client/assets/DiffReviewLab-CFRQkWps.js.br +0 -0
  18. package/dist/client/assets/DiffReviewLab-CFRQkWps.js.gz +0 -0
  19. package/dist/client/assets/{DiffViewer-YXYaQJCI.js → DiffViewer-BbVWaBnT.js} +21 -21
  20. package/dist/client/assets/DiffViewer-BbVWaBnT.js.br +0 -0
  21. package/dist/client/assets/DiffViewer-BbVWaBnT.js.gz +0 -0
  22. package/dist/client/assets/{ModelPreview-lCt1e-AU.js → ModelPreview-Cn6VPtYe.js} +1 -1
  23. package/dist/client/assets/ModelPreview-Cn6VPtYe.js.br +0 -0
  24. package/dist/client/assets/ModelPreview-Cn6VPtYe.js.gz +0 -0
  25. package/dist/client/assets/{RightSidebar-By3ostnj.js → RightSidebar-DPjT4QoN.js} +4 -4
  26. package/dist/client/assets/RightSidebar-DPjT4QoN.js.br +0 -0
  27. package/dist/client/assets/RightSidebar-DPjT4QoN.js.gz +0 -0
  28. package/dist/client/assets/{abnfDiagram-VCTEODGH-Cz8zrXjt.js → abnfDiagram-VCTEODGH-DZ1cKQQj.js} +1 -1
  29. package/dist/client/assets/abnfDiagram-VCTEODGH-DZ1cKQQj.js.br +0 -0
  30. package/dist/client/assets/abnfDiagram-VCTEODGH-DZ1cKQQj.js.gz +0 -0
  31. package/dist/client/assets/{app-BAqp2ofd.js → app-BDAPxXjQ.js} +3 -3
  32. package/dist/client/assets/app-BDAPxXjQ.js.br +0 -0
  33. package/dist/client/assets/app-BDAPxXjQ.js.gz +0 -0
  34. package/dist/client/assets/{arc-qylyd9n0.js → arc-CbpXhvrR.js} +1 -1
  35. package/dist/client/assets/arc-CbpXhvrR.js.br +0 -0
  36. package/dist/client/assets/arc-CbpXhvrR.js.gz +0 -0
  37. package/dist/client/assets/{architectureDiagram-5GKGNRK7-DphqqzaZ.js → architectureDiagram-5GKGNRK7-D6KzUzjh.js} +1 -1
  38. package/dist/client/assets/architectureDiagram-5GKGNRK7-D6KzUzjh.js.br +0 -0
  39. package/dist/client/assets/architectureDiagram-5GKGNRK7-D6KzUzjh.js.gz +0 -0
  40. package/dist/client/assets/{blockDiagram-I7D4REHJ-DZFt_D_s.js → blockDiagram-I7D4REHJ-0fCpdIcv.js} +1 -1
  41. package/dist/client/assets/blockDiagram-I7D4REHJ-0fCpdIcv.js.br +0 -0
  42. package/dist/client/assets/blockDiagram-I7D4REHJ-0fCpdIcv.js.gz +0 -0
  43. package/dist/client/assets/{c4Diagram-7LVT6UL2-BqfWLwOT.js → c4Diagram-7LVT6UL2-CzNHJH89.js} +1 -1
  44. package/dist/client/assets/c4Diagram-7LVT6UL2-CzNHJH89.js.br +0 -0
  45. package/dist/client/assets/c4Diagram-7LVT6UL2-CzNHJH89.js.gz +0 -0
  46. package/dist/client/assets/channel-BUznX_Qu.js +1 -0
  47. package/dist/client/assets/{chunk-2Q5K7J3B-R3OjNMF_.js → chunk-2Q5K7J3B-DyRlaD_H.js} +1 -1
  48. package/dist/client/assets/{chunk-5VM5RSS4-D7NTQ7Kl.js → chunk-5VM5RSS4-CSvM7r1i.js} +1 -1
  49. package/dist/client/assets/{chunk-F27PBJKO-DW_Qvn7w.js → chunk-F27PBJKO-DDAMhXrP.js} +1 -1
  50. package/dist/client/assets/chunk-F27PBJKO-DDAMhXrP.js.br +0 -0
  51. package/dist/client/assets/chunk-F27PBJKO-DDAMhXrP.js.gz +0 -0
  52. package/dist/client/assets/{chunk-IMKFNOWR-Bfz2p_xi.js → chunk-IMKFNOWR-C7iiKx5i.js} +1 -1
  53. package/dist/client/assets/chunk-IMKFNOWR-C7iiKx5i.js.br +0 -0
  54. package/dist/client/assets/chunk-IMKFNOWR-C7iiKx5i.js.gz +0 -0
  55. package/dist/client/assets/{chunk-JWPE2WC7-CSp44Pbc.js → chunk-JWPE2WC7-BJspgqme.js} +1 -1
  56. package/dist/client/assets/{chunk-POPQ4Y6H-BI88Demp.js → chunk-POPQ4Y6H-D6WahVlv.js} +1 -1
  57. package/dist/client/assets/{chunk-SVP7TREG-BexqH6OU.js → chunk-SVP7TREG-MxaSmMr2.js} +1 -1
  58. package/dist/client/assets/chunk-SVP7TREG-MxaSmMr2.js.br +0 -0
  59. package/dist/client/assets/chunk-SVP7TREG-MxaSmMr2.js.gz +0 -0
  60. package/dist/client/assets/{chunk-TICWLB2K-B2oNxeky.js → chunk-TICWLB2K-C6JSvT9Z.js} +1 -1
  61. package/dist/client/assets/chunk-TICWLB2K-C6JSvT9Z.js.br +0 -0
  62. package/dist/client/assets/chunk-TICWLB2K-C6JSvT9Z.js.gz +0 -0
  63. package/dist/client/assets/{chunk-XXDRQBXY-D0FTntjS.js → chunk-XXDRQBXY-NCZs5zQH.js} +1 -1
  64. package/dist/client/assets/classDiagram-ZZMXUADV-5yilxzil.js +1 -0
  65. package/dist/client/assets/classDiagram-v2-VYDZK3BY-5yilxzil.js +1 -0
  66. package/dist/client/assets/{cose-bilkent-JH36ORCC-Dl2FsnxO.js → cose-bilkent-JH36ORCC-BSMBYXoX.js} +1 -1
  67. package/dist/client/assets/cose-bilkent-JH36ORCC-BSMBYXoX.js.br +0 -0
  68. package/dist/client/assets/cose-bilkent-JH36ORCC-BSMBYXoX.js.gz +0 -0
  69. package/dist/client/assets/{cynefin-OW5HDTMX-DXWk5ifj.js → cynefin-OW5HDTMX-hQUM5HUT.js} +1 -1
  70. package/dist/client/assets/cynefin-OW5HDTMX-hQUM5HUT.js.br +0 -0
  71. package/dist/client/assets/cynefin-OW5HDTMX-hQUM5HUT.js.gz +0 -0
  72. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CEYddPuH.js → cynefinDiagram-5FMLGOSQ-gPIXhdX6.js} +1 -1
  73. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-gPIXhdX6.js.br +0 -0
  74. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-gPIXhdX6.js.gz +0 -0
  75. package/dist/client/assets/{dagre-GXQ25YYZ-CAkxZ2t_.js → dagre-GXQ25YYZ-C0admeGa.js} +1 -1
  76. package/dist/client/assets/dagre-GXQ25YYZ-C0admeGa.js.br +0 -0
  77. package/dist/client/assets/dagre-GXQ25YYZ-C0admeGa.js.gz +0 -0
  78. package/dist/client/assets/{diagram-S7CK7UJ4-BoDv5zZs.js → diagram-S7CK7UJ4-D3U9-Vef.js} +1 -1
  79. package/dist/client/assets/diagram-S7CK7UJ4-D3U9-Vef.js.br +0 -0
  80. package/dist/client/assets/diagram-S7CK7UJ4-D3U9-Vef.js.gz +0 -0
  81. package/dist/client/assets/{diagram-UQ7AKVKN-But7mRAX.js → diagram-UQ7AKVKN-C77JpACp.js} +1 -1
  82. package/dist/client/assets/diagram-UQ7AKVKN-C77JpACp.js.br +0 -0
  83. package/dist/client/assets/diagram-UQ7AKVKN-C77JpACp.js.gz +0 -0
  84. package/dist/client/assets/{diagram-VSXAHHWV-CkrcATM1.js → diagram-VSXAHHWV-B8gLf_zl.js} +1 -1
  85. package/dist/client/assets/diagram-VSXAHHWV-B8gLf_zl.js.br +0 -0
  86. package/dist/client/assets/diagram-VSXAHHWV-B8gLf_zl.js.gz +0 -0
  87. package/dist/client/assets/{diagram-VX7I27RA-IGXTjq3m.js → diagram-VX7I27RA-BN62mHMx.js} +1 -1
  88. package/dist/client/assets/diagram-VX7I27RA-BN62mHMx.js.br +0 -0
  89. package/dist/client/assets/diagram-VX7I27RA-BN62mHMx.js.gz +0 -0
  90. package/dist/client/assets/{diagram-Z3DM3KII-D_fh0COJ.js → diagram-Z3DM3KII-CxR8HLEB.js} +1 -1
  91. package/dist/client/assets/diagram-Z3DM3KII-CxR8HLEB.js.br +0 -0
  92. package/dist/client/assets/diagram-Z3DM3KII-CxR8HLEB.js.gz +0 -0
  93. package/dist/client/assets/{ebnfDiagram-PWID7BFC-CRV8yXiQ.js → ebnfDiagram-PWID7BFC-CjyIWMU8.js} +1 -1
  94. package/dist/client/assets/ebnfDiagram-PWID7BFC-CjyIWMU8.js.br +0 -0
  95. package/dist/client/assets/ebnfDiagram-PWID7BFC-CjyIWMU8.js.gz +0 -0
  96. package/dist/client/assets/{erDiagram-RLTQ6QDP-D9OY_jrD.js → erDiagram-RLTQ6QDP-Cmf2MjIE.js} +1 -1
  97. package/dist/client/assets/erDiagram-RLTQ6QDP-Cmf2MjIE.js.br +0 -0
  98. package/dist/client/assets/erDiagram-RLTQ6QDP-Cmf2MjIE.js.gz +0 -0
  99. package/dist/client/assets/{flowDiagram-HODETNUW-BdbMQSlC.js → flowDiagram-HODETNUW-B-gmOqtm.js} +1 -1
  100. package/dist/client/assets/flowDiagram-HODETNUW-B-gmOqtm.js.br +0 -0
  101. package/dist/client/assets/flowDiagram-HODETNUW-B-gmOqtm.js.gz +0 -0
  102. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-BS_Ul0FA.js → ganttDiagram-EL5Y4UJY-DN2sD5wQ.js} +1 -1
  103. package/dist/client/assets/ganttDiagram-EL5Y4UJY-DN2sD5wQ.js.br +0 -0
  104. package/dist/client/assets/ganttDiagram-EL5Y4UJY-DN2sD5wQ.js.gz +0 -0
  105. package/dist/client/assets/{gestureArbiter-ePFTZxZl.js → gestureArbiter-DmBnoNAo.js} +1 -1
  106. package/dist/client/assets/gestureArbiter-DmBnoNAo.js.br +0 -0
  107. package/dist/client/assets/gestureArbiter-DmBnoNAo.js.gz +0 -0
  108. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-DhGnd9zG.js → gitGraphDiagram-WWUBYQGX-CsDpHqEO.js} +1 -1
  109. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CsDpHqEO.js.br +0 -0
  110. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CsDpHqEO.js.gz +0 -0
  111. package/dist/client/assets/{infoDiagram-27XIBGKW-BK8bqIG8.js → infoDiagram-27XIBGKW-CaS1hVTv.js} +1 -1
  112. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-C07kXWqR.js → ishikawaDiagram-5VMMS53U-Crs1KX5A.js} +1 -1
  113. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Crs1KX5A.js.br +0 -0
  114. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Crs1KX5A.js.gz +0 -0
  115. package/dist/client/assets/{journeyDiagram-3NMN7TZE-Bz7U7OrM.js → journeyDiagram-3NMN7TZE-DdRrQ4oB.js} +1 -1
  116. package/dist/client/assets/journeyDiagram-3NMN7TZE-DdRrQ4oB.js.br +0 -0
  117. package/dist/client/assets/journeyDiagram-3NMN7TZE-DdRrQ4oB.js.gz +0 -0
  118. package/dist/client/assets/{kanban-definition-UXKFOSKX-pTvLjgIg.js → kanban-definition-UXKFOSKX-C8jCxC5V.js} +1 -1
  119. package/dist/client/assets/kanban-definition-UXKFOSKX-C8jCxC5V.js.br +0 -0
  120. package/dist/client/assets/kanban-definition-UXKFOSKX-C8jCxC5V.js.gz +0 -0
  121. package/dist/client/assets/{layout-GtcngaAI.js → layout-DMRh-ja_.js} +1 -1
  122. package/dist/client/assets/layout-DMRh-ja_.js.br +0 -0
  123. package/dist/client/assets/layout-DMRh-ja_.js.gz +0 -0
  124. package/dist/client/assets/{linear-HK3a0BCl.js → linear-CEZOknjS.js} +1 -1
  125. package/dist/client/assets/linear-CEZOknjS.js.br +0 -0
  126. package/dist/client/assets/linear-CEZOknjS.js.gz +0 -0
  127. package/dist/client/assets/{mermaid.core-CLK1PEH_.js → mermaid.core-8UB9XznY.js} +5 -5
  128. package/dist/client/assets/mermaid.core-8UB9XznY.js.br +0 -0
  129. package/dist/client/assets/mermaid.core-8UB9XznY.js.gz +0 -0
  130. package/dist/client/assets/{mindmap-definition-YA3MSWOX-DX1SgiMM.js → mindmap-definition-YA3MSWOX-BW5H-Fud.js} +1 -1
  131. package/dist/client/assets/mindmap-definition-YA3MSWOX-BW5H-Fud.js.br +0 -0
  132. package/dist/client/assets/mindmap-definition-YA3MSWOX-BW5H-Fud.js.gz +0 -0
  133. package/dist/client/assets/{passwordBootstrap-DkJCf35_.js → passwordBootstrap-P6Gv34b5.js} +1 -1
  134. package/dist/client/assets/passwordBootstrap-P6Gv34b5.js.br +0 -0
  135. package/dist/client/assets/passwordBootstrap-P6Gv34b5.js.gz +0 -0
  136. package/dist/client/assets/{pegDiagram-XKGWAZYB-CAAkC_OB.js → pegDiagram-XKGWAZYB-CkYFOiZF.js} +1 -1
  137. package/dist/client/assets/pegDiagram-XKGWAZYB-CkYFOiZF.js.br +0 -0
  138. package/dist/client/assets/pegDiagram-XKGWAZYB-CkYFOiZF.js.gz +0 -0
  139. package/dist/client/assets/{pieDiagram-E7YTZNPT-6Q0J9_rN.js → pieDiagram-E7YTZNPT-CaD2NoWn.js} +1 -1
  140. package/dist/client/assets/pieDiagram-E7YTZNPT-CaD2NoWn.js.br +0 -0
  141. package/dist/client/assets/pieDiagram-E7YTZNPT-CaD2NoWn.js.gz +0 -0
  142. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-BRnxPE3N.js → quadrantDiagram-AXDQQJYC-Bm5NizPY.js} +1 -1
  143. package/dist/client/assets/quadrantDiagram-AXDQQJYC-Bm5NizPY.js.br +0 -0
  144. package/dist/client/assets/quadrantDiagram-AXDQQJYC-Bm5NizPY.js.gz +0 -0
  145. package/dist/client/assets/{railroadDiagram-O6MQD6OU-BXbjJWnH.js → railroadDiagram-O6MQD6OU-Yza73PGK.js} +1 -1
  146. package/dist/client/assets/railroadDiagram-O6MQD6OU-Yza73PGK.js.br +0 -0
  147. package/dist/client/assets/railroadDiagram-O6MQD6OU-Yza73PGK.js.gz +0 -0
  148. package/dist/client/assets/{referenceLongPress-BfkSH_F1.js → referenceLongPress-dSe1LayX.js} +1 -1
  149. package/dist/client/assets/referenceLongPress-dSe1LayX.js.br +0 -0
  150. package/dist/client/assets/referenceLongPress-dSe1LayX.js.gz +0 -0
  151. package/dist/client/assets/{requirementDiagram-BXWQKSXE-FzrzKWif.js → requirementDiagram-BXWQKSXE-Czxsf82E.js} +1 -1
  152. package/dist/client/assets/{requirementDiagram-BXWQKSXE-FzrzKWif.js.br → requirementDiagram-BXWQKSXE-Czxsf82E.js.br} +0 -0
  153. package/dist/client/assets/requirementDiagram-BXWQKSXE-Czxsf82E.js.gz +0 -0
  154. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-B3xvVwzt.js → sankeyDiagram-P5KCCOFB-BCPLCShp.js} +1 -1
  155. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BCPLCShp.js.br +0 -0
  156. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BCPLCShp.js.gz +0 -0
  157. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-jEMIGwGj.js → sequenceDiagram-WJ2MYXX4-yvf8wOBS.js} +1 -1
  158. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-yvf8wOBS.js.br +0 -0
  159. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-yvf8wOBS.js.gz +0 -0
  160. package/dist/client/assets/{sizeCapture-INFHLROL-CoWubC8I.js → sizeCapture-INFHLROL-B0t6lYUa.js} +1 -1
  161. package/dist/client/assets/sizeCapture-INFHLROL-B0t6lYUa.js.br +0 -0
  162. package/dist/client/assets/sizeCapture-INFHLROL-B0t6lYUa.js.gz +0 -0
  163. package/dist/client/assets/{sparkles-CLYlg6RH.js → sparkles-IRCaPwu8.js} +1 -1
  164. package/dist/client/assets/{stateDiagram-D77RDMKH-Cy6XnUne.js → stateDiagram-D77RDMKH-CV_iJ6_K.js} +1 -1
  165. package/dist/client/assets/stateDiagram-D77RDMKH-CV_iJ6_K.js.br +0 -0
  166. package/dist/client/assets/stateDiagram-D77RDMKH-CV_iJ6_K.js.gz +0 -0
  167. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BxaoXuJC.js +1 -0
  168. package/dist/client/assets/{swimlanes-42K2YHIH-c1bxhfO2.js → swimlanes-42K2YHIH-BcILDyUw.js} +1 -1
  169. package/dist/client/assets/swimlanes-42K2YHIH-BcILDyUw.js.br +0 -0
  170. package/dist/client/assets/swimlanes-42K2YHIH-BcILDyUw.js.gz +0 -0
  171. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-B4acTEOm.js +8 -0
  172. package/dist/client/assets/{timeline-definition-24CTP7MA-DYfZuxZV.js → timeline-definition-24CTP7MA-BfZvJfy2.js} +1 -1
  173. package/dist/client/assets/timeline-definition-24CTP7MA-BfZvJfy2.js.br +0 -0
  174. package/dist/client/assets/timeline-definition-24CTP7MA-BfZvJfy2.js.gz +0 -0
  175. package/dist/client/assets/{triangle-alert-C7Us66T8.js → triangle-alert-D32QbdOM.js} +1 -1
  176. package/dist/client/assets/{vennDiagram-4TSXK5OY-D4tp0lFJ.js → vennDiagram-4TSXK5OY-B8K9rfzY.js} +1 -1
  177. package/dist/client/assets/vennDiagram-4TSXK5OY-B8K9rfzY.js.br +0 -0
  178. package/dist/client/assets/vennDiagram-4TSXK5OY-B8K9rfzY.js.gz +0 -0
  179. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-UB47cPYi.js → wardleyDiagram-VM6X3IG4-DerwL20B.js} +1 -1
  180. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DerwL20B.js.br +0 -0
  181. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DerwL20B.js.gz +0 -0
  182. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-LEma2o24.js → xychartDiagram-S5SC5T6Z-CcJX8RWa.js} +1 -1
  183. package/dist/client/assets/xychartDiagram-S5SC5T6Z-CcJX8RWa.js.br +0 -0
  184. package/dist/client/assets/xychartDiagram-S5SC5T6Z-CcJX8RWa.js.gz +0 -0
  185. package/dist/client/index.html +1 -1
  186. package/dist/client/index.html.br +0 -0
  187. package/dist/client/index.html.gz +0 -0
  188. package/dist/client/sw.js +1 -1
  189. package/dist/client/sw.js.br +0 -0
  190. package/dist/client/sw.js.gz +0 -0
  191. package/package.json +1 -1
  192. package/runtime-manifest.json +2 -2
  193. package/dist/client/assets/App-mcFsMbEy.js.br +0 -0
  194. package/dist/client/assets/App-mcFsMbEy.js.gz +0 -0
  195. package/dist/client/assets/ChangeWalkthroughPanel-DMRwFjGh.js.br +0 -0
  196. package/dist/client/assets/ChangeWalkthroughPanel-DMRwFjGh.js.gz +0 -0
  197. package/dist/client/assets/DagPlayground-GpfQi2DO.js.br +0 -0
  198. package/dist/client/assets/DagPlayground-GpfQi2DO.js.gz +0 -0
  199. package/dist/client/assets/DiffLab-Ch4AMuRr.js.br +0 -0
  200. package/dist/client/assets/DiffLab-Ch4AMuRr.js.gz +0 -0
  201. package/dist/client/assets/DiffReview-DL0VoRcr.js +0 -1
  202. package/dist/client/assets/DiffReview-DL0VoRcr.js.br +0 -0
  203. package/dist/client/assets/DiffReview-DL0VoRcr.js.gz +0 -0
  204. package/dist/client/assets/DiffReviewLab-kbUKtav9.js.br +0 -0
  205. package/dist/client/assets/DiffReviewLab-kbUKtav9.js.gz +0 -0
  206. package/dist/client/assets/DiffViewer-YXYaQJCI.js.br +0 -0
  207. package/dist/client/assets/DiffViewer-YXYaQJCI.js.gz +0 -0
  208. package/dist/client/assets/ModelPreview-lCt1e-AU.js.br +0 -0
  209. package/dist/client/assets/ModelPreview-lCt1e-AU.js.gz +0 -0
  210. package/dist/client/assets/RightSidebar-By3ostnj.js.br +0 -0
  211. package/dist/client/assets/RightSidebar-By3ostnj.js.gz +0 -0
  212. package/dist/client/assets/abnfDiagram-VCTEODGH-Cz8zrXjt.js.br +0 -0
  213. package/dist/client/assets/abnfDiagram-VCTEODGH-Cz8zrXjt.js.gz +0 -0
  214. package/dist/client/assets/app-BAqp2ofd.js.br +0 -0
  215. package/dist/client/assets/app-BAqp2ofd.js.gz +0 -0
  216. package/dist/client/assets/arc-qylyd9n0.js.br +0 -0
  217. package/dist/client/assets/arc-qylyd9n0.js.gz +0 -0
  218. package/dist/client/assets/architectureDiagram-5GKGNRK7-DphqqzaZ.js.br +0 -0
  219. package/dist/client/assets/architectureDiagram-5GKGNRK7-DphqqzaZ.js.gz +0 -0
  220. package/dist/client/assets/blockDiagram-I7D4REHJ-DZFt_D_s.js.br +0 -0
  221. package/dist/client/assets/blockDiagram-I7D4REHJ-DZFt_D_s.js.gz +0 -0
  222. package/dist/client/assets/c4Diagram-7LVT6UL2-BqfWLwOT.js.br +0 -0
  223. package/dist/client/assets/c4Diagram-7LVT6UL2-BqfWLwOT.js.gz +0 -0
  224. package/dist/client/assets/channel-4SGNDyfp.js +0 -1
  225. package/dist/client/assets/chunk-F27PBJKO-DW_Qvn7w.js.br +0 -0
  226. package/dist/client/assets/chunk-F27PBJKO-DW_Qvn7w.js.gz +0 -0
  227. package/dist/client/assets/chunk-IMKFNOWR-Bfz2p_xi.js.br +0 -0
  228. package/dist/client/assets/chunk-IMKFNOWR-Bfz2p_xi.js.gz +0 -0
  229. package/dist/client/assets/chunk-SVP7TREG-BexqH6OU.js.br +0 -0
  230. package/dist/client/assets/chunk-SVP7TREG-BexqH6OU.js.gz +0 -0
  231. package/dist/client/assets/chunk-TICWLB2K-B2oNxeky.js.br +0 -0
  232. package/dist/client/assets/chunk-TICWLB2K-B2oNxeky.js.gz +0 -0
  233. package/dist/client/assets/classDiagram-ZZMXUADV-D1BYNVJt.js +0 -1
  234. package/dist/client/assets/classDiagram-v2-VYDZK3BY-D1BYNVJt.js +0 -1
  235. package/dist/client/assets/cose-bilkent-JH36ORCC-Dl2FsnxO.js.br +0 -0
  236. package/dist/client/assets/cose-bilkent-JH36ORCC-Dl2FsnxO.js.gz +0 -0
  237. package/dist/client/assets/cynefin-OW5HDTMX-DXWk5ifj.js.br +0 -0
  238. package/dist/client/assets/cynefin-OW5HDTMX-DXWk5ifj.js.gz +0 -0
  239. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CEYddPuH.js.br +0 -0
  240. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CEYddPuH.js.gz +0 -0
  241. package/dist/client/assets/dagre-GXQ25YYZ-CAkxZ2t_.js.br +0 -0
  242. package/dist/client/assets/dagre-GXQ25YYZ-CAkxZ2t_.js.gz +0 -0
  243. package/dist/client/assets/diagram-S7CK7UJ4-BoDv5zZs.js.br +0 -0
  244. package/dist/client/assets/diagram-S7CK7UJ4-BoDv5zZs.js.gz +0 -0
  245. package/dist/client/assets/diagram-UQ7AKVKN-But7mRAX.js.br +0 -0
  246. package/dist/client/assets/diagram-UQ7AKVKN-But7mRAX.js.gz +0 -0
  247. package/dist/client/assets/diagram-VSXAHHWV-CkrcATM1.js.br +0 -0
  248. package/dist/client/assets/diagram-VSXAHHWV-CkrcATM1.js.gz +0 -0
  249. package/dist/client/assets/diagram-VX7I27RA-IGXTjq3m.js.br +0 -0
  250. package/dist/client/assets/diagram-VX7I27RA-IGXTjq3m.js.gz +0 -0
  251. package/dist/client/assets/diagram-Z3DM3KII-D_fh0COJ.js.br +0 -0
  252. package/dist/client/assets/diagram-Z3DM3KII-D_fh0COJ.js.gz +0 -0
  253. package/dist/client/assets/ebnfDiagram-PWID7BFC-CRV8yXiQ.js.br +0 -0
  254. package/dist/client/assets/ebnfDiagram-PWID7BFC-CRV8yXiQ.js.gz +0 -0
  255. package/dist/client/assets/erDiagram-RLTQ6QDP-D9OY_jrD.js.br +0 -0
  256. package/dist/client/assets/erDiagram-RLTQ6QDP-D9OY_jrD.js.gz +0 -0
  257. package/dist/client/assets/flowDiagram-HODETNUW-BdbMQSlC.js.br +0 -0
  258. package/dist/client/assets/flowDiagram-HODETNUW-BdbMQSlC.js.gz +0 -0
  259. package/dist/client/assets/ganttDiagram-EL5Y4UJY-BS_Ul0FA.js.br +0 -0
  260. package/dist/client/assets/ganttDiagram-EL5Y4UJY-BS_Ul0FA.js.gz +0 -0
  261. package/dist/client/assets/gestureArbiter-ePFTZxZl.js.br +0 -0
  262. package/dist/client/assets/gestureArbiter-ePFTZxZl.js.gz +0 -0
  263. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DhGnd9zG.js.br +0 -0
  264. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DhGnd9zG.js.gz +0 -0
  265. package/dist/client/assets/ishikawaDiagram-5VMMS53U-C07kXWqR.js.br +0 -0
  266. package/dist/client/assets/ishikawaDiagram-5VMMS53U-C07kXWqR.js.gz +0 -0
  267. package/dist/client/assets/journeyDiagram-3NMN7TZE-Bz7U7OrM.js.br +0 -0
  268. package/dist/client/assets/journeyDiagram-3NMN7TZE-Bz7U7OrM.js.gz +0 -0
  269. package/dist/client/assets/kanban-definition-UXKFOSKX-pTvLjgIg.js.br +0 -0
  270. package/dist/client/assets/kanban-definition-UXKFOSKX-pTvLjgIg.js.gz +0 -0
  271. package/dist/client/assets/layout-GtcngaAI.js.br +0 -0
  272. package/dist/client/assets/layout-GtcngaAI.js.gz +0 -0
  273. package/dist/client/assets/linear-HK3a0BCl.js.br +0 -0
  274. package/dist/client/assets/linear-HK3a0BCl.js.gz +0 -0
  275. package/dist/client/assets/mermaid.core-CLK1PEH_.js.br +0 -0
  276. package/dist/client/assets/mermaid.core-CLK1PEH_.js.gz +0 -0
  277. package/dist/client/assets/mindmap-definition-YA3MSWOX-DX1SgiMM.js.br +0 -0
  278. package/dist/client/assets/mindmap-definition-YA3MSWOX-DX1SgiMM.js.gz +0 -0
  279. package/dist/client/assets/passwordBootstrap-DkJCf35_.js.br +0 -0
  280. package/dist/client/assets/passwordBootstrap-DkJCf35_.js.gz +0 -0
  281. package/dist/client/assets/pegDiagram-XKGWAZYB-CAAkC_OB.js.br +0 -0
  282. package/dist/client/assets/pegDiagram-XKGWAZYB-CAAkC_OB.js.gz +0 -0
  283. package/dist/client/assets/pieDiagram-E7YTZNPT-6Q0J9_rN.js.br +0 -0
  284. package/dist/client/assets/pieDiagram-E7YTZNPT-6Q0J9_rN.js.gz +0 -0
  285. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BRnxPE3N.js.br +0 -0
  286. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BRnxPE3N.js.gz +0 -0
  287. package/dist/client/assets/railroadDiagram-O6MQD6OU-BXbjJWnH.js.br +0 -0
  288. package/dist/client/assets/railroadDiagram-O6MQD6OU-BXbjJWnH.js.gz +0 -0
  289. package/dist/client/assets/referenceLongPress-BfkSH_F1.js.br +0 -0
  290. package/dist/client/assets/referenceLongPress-BfkSH_F1.js.gz +0 -0
  291. package/dist/client/assets/requirementDiagram-BXWQKSXE-FzrzKWif.js.gz +0 -0
  292. package/dist/client/assets/sankeyDiagram-P5KCCOFB-B3xvVwzt.js.br +0 -0
  293. package/dist/client/assets/sankeyDiagram-P5KCCOFB-B3xvVwzt.js.gz +0 -0
  294. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-jEMIGwGj.js.br +0 -0
  295. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-jEMIGwGj.js.gz +0 -0
  296. package/dist/client/assets/sizeCapture-INFHLROL-CoWubC8I.js.br +0 -0
  297. package/dist/client/assets/sizeCapture-INFHLROL-CoWubC8I.js.gz +0 -0
  298. package/dist/client/assets/stateDiagram-D77RDMKH-Cy6XnUne.js.br +0 -0
  299. package/dist/client/assets/stateDiagram-D77RDMKH-Cy6XnUne.js.gz +0 -0
  300. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C8XZVU7L.js +0 -1
  301. package/dist/client/assets/swimlanes-42K2YHIH-c1bxhfO2.js.br +0 -0
  302. package/dist/client/assets/swimlanes-42K2YHIH-c1bxhfO2.js.gz +0 -0
  303. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-C_zWU2Vj.js +0 -8
  304. package/dist/client/assets/timeline-definition-24CTP7MA-DYfZuxZV.js.br +0 -0
  305. package/dist/client/assets/timeline-definition-24CTP7MA-DYfZuxZV.js.gz +0 -0
  306. package/dist/client/assets/vennDiagram-4TSXK5OY-D4tp0lFJ.js.br +0 -0
  307. package/dist/client/assets/vennDiagram-4TSXK5OY-D4tp0lFJ.js.gz +0 -0
  308. package/dist/client/assets/wardleyDiagram-VM6X3IG4-UB47cPYi.js.br +0 -0
  309. package/dist/client/assets/wardleyDiagram-VM6X3IG4-UB47cPYi.js.gz +0 -0
  310. package/dist/client/assets/xychartDiagram-S5SC5T6Z-LEma2o24.js.br +0 -0
  311. package/dist/client/assets/xychartDiagram-S5SC5T6Z-LEma2o24.js.gz +0 -0
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/passwordBootstrap-DkJCf35_.js","assets/react-XDCjal2T.js","assets/dnd-BCFAPC0L.js","assets/terminal-C7X98Amf.js","assets/App-mcFsMbEy.js","assets/gestureArbiter-ePFTZxZl.js","assets/gestureArbiter-C2J0D0kV.css","assets/referenceLongPress-BfkSH_F1.js","assets/triangle-alert-C7Us66T8.js","assets/DagPlayground-GpfQi2DO.js","assets/ChangeWalkthroughPanel-DMRwFjGh.js","assets/sparkles-CLYlg6RH.js","assets/DiffLab-Ch4AMuRr.js","assets/DiffViewer-YXYaQJCI.js","assets/DiffViewer-T3uj2-aP.css","assets/DiffReviewLab-kbUKtav9.js","assets/DiffReview-DL0VoRcr.js"])))=>i.map(i=>d[i]);
2
- import{r as oc,a as wg,g as Du}from"./react-XDCjal2T.js";import{b as M,r as Ou,R as qe}from"./dnd-BCFAPC0L.js";import{L as yg,l as bg}from"./terminal-C7X98Amf.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(o){if(o.ep)return;o.ep=!0;const s=r(o);fetch(o.href,s)}})();const vg="modulepreload",xg=function(t){return"/"+t},al={},Wt=function(e,r,n){let o=Promise.resolve();if(r&&r.length>0){let c=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=i?.nonce||i?.getAttribute("nonce");o=c(r.map(l=>{if(l=xg(l),l in al)return;al[l]=!0;const d=l.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":vg,d||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),d)return new Promise((h,g)=>{f.addEventListener("load",h),f.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return e().catch(s)})};var ei={exports:{}},gn={};var cl;function Sg(){if(cl)return gn;cl=1;var t=oc(),e=Symbol.for("react.element"),r=Symbol.for("react.fragment"),n=Object.prototype.hasOwnProperty,o=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function i(a,c,l){var d,u={},f=null,h=null;l!==void 0&&(f=""+l),c.key!==void 0&&(f=""+c.key),c.ref!==void 0&&(h=c.ref);for(d in c)n.call(c,d)&&!s.hasOwnProperty(d)&&(u[d]=c[d]);if(a&&a.defaultProps)for(d in c=a.defaultProps,c)u[d]===void 0&&(u[d]=c[d]);return{$$typeof:e,type:a,key:f,ref:h,props:u,_owner:o.current}}return gn.Fragment=r,gn.jsx=i,gn.jsxs=i,gn}var ll;function Eg(){return ll||(ll=1,ei.exports=Sg()),ei.exports}var p=Eg();const lr="termdock-secure-target-v1",sc="termdock-secure-entry-v1",Ag=new Set([lr,sc,"termdock-color-theme","termdock:locale","termdock.federation.connections.v1"]),po=typeof Storage>"u"?void 0:Storage.prototype.getItem,ti=typeof Storage>"u"?void 0:Storage.prototype.setItem,dl="termdock-secure-legacy-owner",Rs=typeof window<"u"&&window.parent!==window&&location.pathname==="/workspace.html";function kg(){if(typeof window>"u")return null;try{if(Rs){const e=new URLSearchParams(location.search).get("termdock-workspace"),r=JSON.parse(localStorage.getItem("termdock.federation.connections.v1")||"[]"),n=Array.isArray(r)?r.find(o=>o?.targetPeerId===e):void 0;return n&&typeof n.url=="string"&&typeof n.targetPeerId=="string"?{...n,serviceName:n.label||n.serviceName}:null}const t=JSON.parse(sessionStorage.getItem(lr)??localStorage.getItem(lr)??"null");return t&&typeof t.url=="string"&&typeof t.targetPeerId=="string"?t:null}catch{return null}}let Ts=kg();const Mr=Ts?.targetPeerId??"unpaired";function jr(){return Ts}function Fu(t){if(Ts=t,Rs)return;const e=JSON.stringify(t);sessionStorage.setItem(lr,e),localStorage.setItem(lr,e)}function Cg(){Ts=null,!Rs&&(localStorage.removeItem(lr),sessionStorage.removeItem(lr),localStorage.removeItem(sc))}function jn(t,e=Mr){return Ag.has(t)||t.startsWith("termdock-secure-")?t:`termdock-service:${e}:${t}`}function Ig(t){if(!(!po||!ti))try{if(po.call(localStorage,dl))return;ti.call(localStorage,dl,t);for(const r of[localStorage,sessionStorage]){const n=Array.from({length:r.length},(o,s)=>r.key(s)).filter(o=>!!o);for(const o of n){if(o.startsWith("termdock-service:")||jn(o,t)===o)continue;const s=jn(o,t),i=po.call(r,o);i!==null&&po.call(r,s)===null&&ti.call(r,s,i)}}}catch{}}let ul=!1;function Rg(){if(ul||typeof Storage>"u")return;ul=!0;const t=Storage.prototype.getItem,e=Storage.prototype.setItem,r=Storage.prototype.removeItem;Storage.prototype.getItem=function(n){return t.call(this,jn(String(n)))},Storage.prototype.setItem=function(n,o){e.call(this,jn(String(n)),o)},Storage.prototype.removeItem=function(n){r.call(this,jn(String(n)))}}Rg();const fl={pending:0,failed:1,expired:1,delivered:2,read:3},go=32768,Yo="remote:";function Qe(t,e){return e.startsWith(Yo)?e:`${Yo}${encodeURIComponent(t)}:${encodeURIComponent(e)}`}function We(t){if(!t.startsWith(Yo))return null;const e=t.slice(Yo.length).split(":");if(e.length!==2)return null;try{return{origin:decodeURIComponent(e[0]),id:decodeURIComponent(e[1])}}catch{return null}}function ri(t,e){const r=We(e);return r?.origin===t?r.id:e}function mo(t,e){return{...t,fromSessionId:t.fromSessionId?e(t.fromSessionId):null,toSessionId:e(t.toSessionId)}}function ni(t,e){if(!t)return;const r=Object.fromEntries(Object.entries(t).map(([n,o])=>[e(n),o]));return Object.keys(r).length?r:void 0}class Tg{constructor(e){this.services=e}services;snapshots=new Map;reachable=new Set;groups=new Map;messages=new Map;sessions=new Map;diagnostics=new Map;serviceErrors=new Map;inFlight=null;catalogInFlight=null;async refresh(){return this.inFlight?this.inFlight:(this.inFlight=this.synchronize().finally(()=>{this.inFlight=null}),this.inFlight)}async refreshCatalog(){return this.catalogInFlight?this.catalogInFlight:(this.catalogInFlight=this.discover().finally(()=>{this.catalogInFlight=null}),this.catalogInFlight)}async discover(){const e=this.services();this.serviceErrors.clear();const r=await Promise.all(e.map(async n=>{let o;try{const s=await Promise.race([Promise.resolve().then(()=>n.request("/collaboration-federation")),new Promise((i,a)=>{o=setTimeout(()=>a(new Error("服务协作目录响应超时")),18e3)})]);if(!Array.isArray(s.groups)||!Array.isArray(s.sessions)||!Array.isArray(s.messages))throw new Error("协作目录响应无效,请更新服务");return{service:n,data:s}}catch(s){return this.serviceErrors.set(n.origin,s instanceof Error?s.message.slice(0,300):"协作目录请求失败"),null}finally{clearTimeout(o)}}));this.reachable.clear();for(const n of r){if(!n)continue;const{service:o,data:s}=n;for(const[i,a]of Object.entries(s.transportDiagnostics??{}))(!this.diagnostics.has(i)||a.checked_at>this.diagnostics.get(i).checked_at)&&this.diagnostics.set(i,a);this.reachable.add(o.origin),this.snapshots.set(o.origin,s);for(const i of s.groups){const a={...i,sessionIds:i.sessionIds.map(l=>Qe(o.origin,l)),roles:ni(i.roles,l=>Qe(o.origin,l))},c=this.groups.get(i.id);(!c||a.updatedAt>c.updatedAt)&&this.groups.set(i.id,a)}for(const i of s.messages)this.mergeMessage(mo(i,a=>Qe(o.origin,a)))}this.sessions.clear();for(const n of this.groups.values())for(const o of n.remoteSessions??[])this.sessions.set(o.sessionId,{...o,serviceConnected:!1,status:"offline",serviceCheckedAt:Date.now()});for(const[n,o]of this.snapshots){const s=this.reachable.has(n);for(const i of o.sessions){const a=Qe(n,i.sessionId);this.sessions.set(a,{...i,sessionId:a,serviceOrigin:n,serviceLabel:e.find(c=>c.origin===n)?.label??n,serviceConnected:s,serviceCheckedAt:Date.now(),status:s?i.status:"offline"})}}}async synchronize(){await this.refreshCatalog();const e=this.services();for(const r of this.messages.values()){const n=We(r.toSessionId)?.origin;if(r.status==="pending"&&n&&!this.reachable.has(n)){const o=this.diagnostics.get(r.id);this.diagnostics.set(r.id,{...o,relay_online:!0,peer_reachable:!1,attempt_count:o?.attempt_count??0,next_retry_at:Date.now()+2e3,last_error:"PEER_UNREACHABLE",checked_at:Date.now()})}}await Promise.all(e.filter(r=>this.reachable.has(r.origin)).map(async r=>{for(const n of this.groups.values())if(!(!this.snapshots.get(r.origin)?.groups.some(s=>s.id===n.id)&&!n.sessionIds.some(s=>We(s)?.origin===r.origin)))try{await this.push(r,n)}catch{this.reachable.delete(r.origin)}})),await Promise.all(e.filter(r=>this.reachable.has(r.origin)).map(async r=>{if(!((this.snapshots.get(r.origin)?.protocolVersion??1)<2))for(const n of this.groups.values()){if(n.deleted||!n.sessionIds.some(s=>We(s)?.origin===r.origin))continue;const o=[...this.diagnostics].filter(([s])=>this.messages.get(s)?.groupId===n.id).map(([s,i])=>({message_id:s,diagnostic:i,...this.messages.get(s)?.status==="failed"?{failure_reason:this.messages.get(s)?.failureReason}:{}}));if(o.length)try{await r.request("/collaboration-federation","POST",{group:this.groupForService(n,r.origin),messages:[],transport:o})}catch{}}}))}mergeMessage(e){const r=this.messages.get(e.id),n=fl;(!r||n[e.status]>n[r.status])&&this.messages.set(e.id,e);const o=this.messages.get(e.id);if(o&&(r?.shellConfirmed===!0||e.shellConfirmed===!0)&&(o.shellConfirmed=!0),this.messages.size>2e3){const s=[...this.messages.values()].find(i=>i.status!=="pending"&&i.status!=="failed");s&&this.messages.delete(s.id)}}groupForService(e,r){const n=e.sessionIds.filter(o=>We(o)?.origin!==r).map(o=>{const s=We(o),i=this.sessions.get(o);return{sessionId:o,name:i?.name??s.id,cwd:i?.cwd??"",status:i?.status??"offline",capability:i?.capability??"",currentTask:i?.currentTask??"",updatedAt:i?.updatedAt??0,agent:i?.agent??null,backendSessionId:null,agentNativeSessionId:null,serviceOrigin:s.origin,serviceLabel:i?.serviceLabel??s.origin,serviceConnected:this.reachable.has(s.origin),serviceCheckedAt:Date.now()}});return{...e,sessionIds:e.sessionIds.map(o=>ri(r,o)),remoteSessions:n,roles:ni(e.roles,o=>ri(r,o))}}async push(e,r){const n=fl,o=new Map((this.snapshots.get(e.origin)?.messages??[]).map(i=>[i.id,i])),s=[...this.messages.values()].filter(i=>i.groupId===r.id&&(!o.has(i.id)||n[i.status]>n[o.get(i.id).status]||i.shellConfirmed===!0&&o.get(i.id)?.shellConfirmed!==!0)).map(i=>mo(i,a=>ri(e.origin,a)));if(!s.length){await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[]});return}for(const i of s){const a=this.messages.get(i.id),c=We(a.toSessionId)?.origin===e.origin,l=this.diagnostics.get(i.id);if(c&&l?.next_retry_at&&l.next_retry_at>Date.now()&&l.last_error!=="PEER_UNREACHABLE")continue;const d={relay_online:!0,peer_reachable:!0,attempt_count:(l?.attempt_count??0)+(c?1:0),next_retry_at:null,last_error:null,checked_at:Date.now(),fragments_sent:0,fragments_total:0},u=this.snapshots.get(e.origin)?.protocolVersion??1;if(u<2&&(String(i.content??"").length>2e4||i.responseKind||i.task||i.metadata||i.expiresAt||i.status==="failed"||i.status==="expired")){c&&(this.messages.set(i.id,{...a,status:"failed",failureReason:"PEER_UPGRADE_REQUIRED"}),this.diagnostics.set(i.id,{...d,last_error:"PEER_UPGRADE_REQUIRED"}));continue}try{const f=new TextEncoder().encode(JSON.stringify(i));if(u>=2&&f.length>go&&!o.has(i.id)){const h=Math.ceil(f.length/go),g=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",f)),m=>m.toString(16).padStart(2,"0")).join("");d.fragments_total=h;for(let m=0;m<h;m++){const y=await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[],fragments:[{message_id:i.id,group_id:r.id,index:m,total:h,sha256:g,data:btoa(String.fromCharCode(...f.subarray(m*go,(m+1)*go)))}]}),w=y.fragmentReceipts?.find(C=>C.message_id===i.id);if(!w||m===h-1&&!w.complete)throw new Error("FRAGMENT_ACK_MISSING");d.fragments_sent=w.received;for(const C of y.messages??[])this.mergeMessage(mo(C,b=>Qe(e.origin,b)));if(c){this.diagnostics.set(i.id,{...d,checked_at:Date.now()});const C=this.services().find(b=>b.origin===We(a.fromSessionId??"")?.origin);C&&C.origin!==e.origin&&(this.snapshots.get(C.origin)?.protocolVersion??1)>=2&&await C.request("/collaboration-federation","POST",{group:this.groupForService(r,C.origin),messages:[],transport:[{message_id:i.id,diagnostic:d}]}).catch(()=>{})}}}else{const h=await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[i]});if(!(h.messages??[]).some(g=>g.id===i.id))throw new Error("PEER_REJECTED_MESSAGE");for(const g of h.messages??[])this.mergeMessage(mo(g,m=>Qe(e.origin,m)))}c&&this.diagnostics.set(i.id,{...d,checked_at:Date.now()})}catch(f){c&&this.diagnostics.set(i.id,{...d,checked_at:Date.now(),peer_reachable:null,last_error:f instanceof Error?f.message.slice(0,300):"RELAY_REQUEST_FAILED",next_retry_at:Date.now()+Math.min(3e4,1e3*2**Math.min(d.attempt_count,5))})}}}async peers(e){if(!this.services().some(r=>r.origin===e))throw new Error("当前服务未连接");return await this.refreshCatalog(),{protocolVersion:2,origin:e,sessions:[...this.sessions.values()].filter(r=>We(r.sessionId)?.origin!==e),services:[...this.snapshots.keys(),...this.services().map(r=>r.origin)].filter((r,n,o)=>o.indexOf(r)===n).map(r=>({origin:r,label:this.services().find(n=>n.origin===r)?.label??r,connected:this.reachable.has(r),error:this.serviceErrors.get(r)}))}}async list(e){const r=this.services().find(s=>s.origin===e);if(!r)throw new Error("当前服务未连接");const[n,o]=await Promise.all([this.peers(e),r.request("/collaboration-groups")]);return{groups:o.groups,sessions:[...n.sessions,...o.sessions]}}async save(e,r){await this.refreshCatalog();const n=this.services().find(u=>u.origin===e);if(!n)throw new Error("当前服务未连接");const o=await n.request("/collaboration-groups"),s=r.id?o.groups.find(u=>u.id===r.id):void 0;if(r.id&&!s)throw new Error("协作组已删除,请刷新列表");if(s&&r.expectedUpdatedAt!==void 0&&r.expectedUpdatedAt!==s.updatedAt)throw new Error("协作组已被修改,请重新打开成员管理后再保存");for(const u of this.sessions.keys())We(u)?.origin===e&&this.sessions.delete(u);for(const u of o.sessions){const f=Qe(e,u.sessionId);this.sessions.set(f,{...u,sessionId:f,serviceOrigin:e,serviceLabel:n.label,serviceConnected:!0})}if(!r.id?.startsWith("cross-")&&!r.sessionIds.some(u=>We(u)))return n.request("/collaboration-groups","POST",r);if(!this.reachable.has(e))throw new Error("当前服务需要升级 Termdock 后才能跨服务组队");const i=[...new Set(r.sessionIds.map(u=>Qe(e,u)))],a=new Set(s?.sessionIds.map(u=>Qe(e,u))??[]);if(!r.name?.trim()||i.length<2||i.some(u=>!a.has(u)&&(!this.sessions.has(u)||!this.reachable.has(We(u).origin))))throw new Error("所选成员已变化或服务不可达,请刷新后重新选择;尚未保存任何修改");const c=s?.federated?{...s,sessionIds:s.sessionIds.map(u=>Qe(e,u))}:void 0,l=ni(s?.roles,u=>Qe(e,u)),d={id:c?.id??`cross-${crypto.randomUUID()}`,name:r.name.trim(),sessionIds:i,...l?{roles:Object.fromEntries(Object.entries(l).filter(([u])=>i.includes(u)))}:{},createdAt:c?.createdAt??Date.now(),updatedAt:Math.max(Date.now(),(c?.updatedAt??0)+1),federated:!0};if(s&&!s.federated){if(o.capabilities?.groupPromotion!==1)throw new Error("当前服务需要升级后才能将已有组转换为跨服务组;原组和记录均未修改");const u=await n.request(`/collaboration-groups/${encodeURIComponent(s.id)}/promote`,"POST",{group:this.groupForService(d,e),expectedUpdatedAt:r.expectedUpdatedAt??s.updatedAt});d.updatedAt=u.group.updatedAt,d.createdAt=u.group.createdAt}else await n.request("/collaboration-federation","POST",{group:this.groupForService(d,e),messages:[],...c?{expectedUpdatedAt:r.expectedUpdatedAt??c.updatedAt}:{}});return this.groups.set(d.id,d),{group:this.groupForService(d,e)}}async remove(e,r){const n=this.services().find(o=>o.origin===e);if(!n)throw new Error("当前服务未连接");await n.request(`/collaboration-groups/${encodeURIComponent(r)}`,"DELETE")}}const Ps="termdock.federation.connections.v1",ca="termdock:services-changed",ic="termdock-secure-removed-services",Zo=t=>[t.id,t.targetPeerId,t.serviceOrigin||t.url].filter(e=>!!e);function ac(){try{const t=JSON.parse(localStorage.getItem(ic)||"[]");return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}function _e(t){const e=t.trim();if(!e)throw new Error("请输入服务地址。");const r=new URL(/^[a-z][a-z\d+.-]*:\/\//i.test(e)?e:`https://${e}`);r.protocol==="wss:"&&(r.protocol="https:"),r.protocol==="ws:"&&(r.protocol="http:");const n=["localhost","127.0.0.1","[::1]"].includes(r.hostname);if(!["https:","http:"].includes(r.protocol)||r.protocol==="http:"&&!n)throw new Error("请使用 HTTPS 服务地址。");if(r.username||r.password||r.search||r.hash||!["/","/api/federation/secure"].includes(r.pathname))throw new Error("请输入服务首页地址,不要包含账号或额外参数。");return r.origin}function Ns(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.url=="string")try{const r=_e(e.url),n=typeof e.targetPeerId=="string"&&e.targetPeerId?e.targetPeerId:void 0,o=(typeof e.label=="string"?e.label:typeof e.serviceName=="string"?e.serviceName:"").trim().slice(0,120)||new URL(r).host;return{id:typeof e.id=="string"&&e.id?e.id:n||r,url:r,label:o,...n?{targetPeerId:n}:{},...typeof e.serviceOrigin=="string"?{serviceOrigin:_e(e.serviceOrigin)}:{},...typeof e.entryServiceId=="string"&&e.entryServiceId?{entryServiceId:e.entryServiceId}:{},...Array.isArray(e.routes)?{routes:e.routes.slice(0,4).flatMap(s=>{try{return s&&typeof s.targetPeerId=="string"&&s.targetPeerId?[{url:_e(s.url),targetPeerId:s.targetPeerId}]:[]}catch{return[]}})}:{}}}catch{return}}function yt(t,e){return t.targetPeerId&&e.targetPeerId?t.targetPeerId===e.targetPeerId:(t.serviceOrigin||t.url)===(e.serviceOrigin||e.url)}function Mu(t){const e=[];for(const r of t){const n=e.findIndex(o=>yt(o,r));n<0?e.push(r):e[n]={...e[n],...r,id:e[n].id}}return e}function ro(){return typeof window>"u"?void 0:window.termdockDesktop}function qt(){try{const t=JSON.parse(localStorage.getItem(Ps)||"[]");return Array.isArray(t)?Mu(t.map(Ns).filter(e=>!!e)):[]}catch{return[]}}function ju(t){localStorage.setItem(Ps,JSON.stringify(t.map(e=>({...e,serviceName:e.label})))),window.dispatchEvent(new Event(ca))}let mn;async function Ze(){const t=ro();if(!t?.serviceConnections||!t.saveServiceConnection)return qt();if(mn)return mn;mn=(async()=>{let e=await t.serviceConnections();const r=qt();for(const n of r)e.some(o=>yt(o,n))||(e=await(t.importServiceConnection||t.saveServiceConnection)(n));return r.length&&localStorage.removeItem(Ps),e})();try{return await mn}finally{mn=void 0}}async function At(t){const e=Ns(t);if(!e)throw new Error("服务地址无效。");const r=ro();if(r?.saveServiceConnection)return r.saveServiceConnection(e);const n=qt(),o=n.find(a=>a.id===e.id||yt(a,e)),s=new Set([...Zo(e),...o?Zo(o):[]]);localStorage.setItem(ic,JSON.stringify(ac().filter(a=>!s.has(a))));const i=Mu([...n.filter(a=>a!==o),{...o,...e,id:o?.id||e.id}]);return ju(i),i}async function Pg(t){const e=Ns(t);if(!e)throw new Error("服务地址无效。");const r=ro();if(r?.importServiceConnection)return r.importServiceConnection(e);if(r?.serviceConnections){const n=await r.serviceConnections();return n.some(o=>yt(o,e))?At(e):n}return Zo(e).some(n=>ac().includes(n))?qt():At(e)}async function Ng(t){const e=ro();if(e?.removeServiceConnection)return e.removeServiceConnection(t);const r=qt(),n=r.find(s=>s.id===t);n&&localStorage.setItem(ic,JSON.stringify([...new Set([...ac(),...Zo(n)])].slice(-768)));const o=r.filter(s=>s.id!==t);return ju(o),o}function Uu(t){const e=n=>{(n.key===Ps||n.key===null)&&t()};window.addEventListener(ca,t),window.addEventListener("storage",e);const r=ro()?.onServiceConnections?.(t);return()=>{window.removeEventListener(ca,t),window.removeEventListener("storage",e),r?.()}}class Lg extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}}let Bg=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},ot=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};class $u extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}}class Hu extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}}class _g extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}}class Dg extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}}class Ls extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}}const qu=Symbol.for("@libp2p/peer-id");function Og(t){return typeof t?.handleEvent=="function"}function Fg(t){return t===!0||t===!1}function Mg(t){return Fg(t)?t:t?.capture??!1}function la(t){const e={capture:Mg(t),once:!!t?.once};return t?.passive!=null&&(e.passive=t?.passive),t?.signal!=null&&(e.signal=t?.signal),e}function hl(t,e){return la(t).capture===la(e).capture}class jg extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){const r=this.#e.get(e);return r==null?0:r.length}addEventListener(e,r,n){const o=la(n);if(o?.signal?.aborted===!0)return;const s=l=>{o.once&&this.removeEventListener(e,r,o),Og(r)?r.handleEvent(l):r(l)};let i=this.#e.get(e);if(i==null&&(i=[],this.#e.set(e,i)),i.some(l=>l.callback!==r?!1:hl(l.options,o)))return;super.addEventListener(e,s,o);const c=()=>{this.removeEventListener(e,r,o)};o.signal?.addEventListener("abort",c),i.push({callback:r,wrapper:s,options:o,onAbort:c})}removeEventListener(e,r,n){const o=this.#e.get(e);if(o==null){super.removeEventListener(e,r??null,n);return}this.#e.set(e,o.filter(s=>s.callback===r&&hl(s.options,n)?(super.removeEventListener(e,s.wrapper,n),s.options?.signal?.removeEventListener("abort",s.onAbort),!1):!0))}safeDispatchEvent(e,r={}){return this.dispatchEvent(new CustomEvent(e,r))}}const Ug=Symbol.for("@libp2p/service-capabilities");function $g(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function Bs(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function Hg(t){return new TextEncoder().encode(t)}function qg(t){return new TextDecoder().decode(t)}function Kg(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(r[i]!==255)throw new TypeError(s+" is ambiguous");r[i]=o}var a=t.length,c=t.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var m=0,y=0,w=0,C=g.length;w!==C&&g[w]===0;)w++,m++;for(var b=(C-w)*d+1>>>0,A=new Uint8Array(b);w!==C;){for(var L=g[w],I=0,R=b-1;(L!==0||I<y)&&R!==-1;R--,I++)L+=256*A[R]>>>0,A[R]=L%a>>>0,L=L/a>>>0;if(L!==0)throw new Error("Non-zero carry");y=I,w++}for(var E=b-y;E!==b&&A[E]===0;)E++;for(var x=c.repeat(m);E<b;++E)x+=t.charAt(A[E]);return x}function f(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var m=0;if(g[m]!==" "){for(var y=0,w=0;g[m]===c;)y++,m++;for(var C=(g.length-m)*l+1>>>0,b=new Uint8Array(C);g[m];){var A=r[g.charCodeAt(m)];if(A===255)return;for(var L=0,I=C-1;(A!==0||L<w)&&I!==-1;I--,L++)A+=a*b[I]>>>0,b[I]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");w=L,m++}if(g[m]!==" "){for(var R=C-w;R!==C&&b[R]===0;)R++;for(var E=new Uint8Array(y+(C-R)),x=y;R!==C;)E[x++]=b[R++];return E}}}function h(g){var m=f(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:h}}var zg=Kg,Wg=zg;class Vg{name;prefix;baseEncode;constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Gg{name;prefix;baseDecode;prefixCodePoint;constructor(e,r,n){this.name=e,this.prefix=r;const o=r.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ku(this,e)}}class Xg{decoders;constructor(e){this.decoders=e}or(e){return Ku(this,e)}decode(e){const r=e[0],n=this.decoders[r];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}function Ku(t,e){return new Xg({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}class Yg{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,r,n,o){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=o,this.encoder=new Vg(e,r,n),this.decoder=new Gg(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}function _s({name:t,prefix:e,encode:r,decode:n}){return new Yg(t,e,r,n)}function no({name:t,prefix:e,alphabet:r}){const{encode:n,decode:o}=Wg(r,t);return _s({prefix:e,name:t,encode:n,decode:s=>Bs(o(s))})}function Zg(t,e,r,n){let o=t.length;for(;t[o-1]==="=";)--o;const s=new Uint8Array(o*r/8|0);let i=0,a=0,c=0;for(let l=0;l<o;++l){const d=e[t[l]];if(d===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<r|d,i+=r,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=r||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function Jg(t,e,r){const n=e[e.length-1]==="=",o=(1<<r)-1;let s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>r;)i-=r,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<r-i]),n)for(;(s.length*r&7)!==0;)s+="=";return s}function Qg(t){const e={};for(let r=0;r<t.length;++r)e[t[r]]=r;return e}function Ae({name:t,prefix:e,bitsPerChar:r,alphabet:n}){const o=Qg(n);return _s({prefix:e,name:t,encode(s){return Jg(s,n,r)},decode(s){return Zg(s,o,r,t)}})}const Le=no({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),em=no({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),tm=Object.freeze(Object.defineProperty({__proto__:null,base58btc:Le,base58flickr:em},Symbol.toStringTag,{value:"Module"})),Un=Ae({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),rm=Ae({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),nm=Ae({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),om=Ae({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),sm=Ae({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),im=Ae({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),am=Ae({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),cm=Ae({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),lm=Ae({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),dm=Object.freeze(Object.defineProperty({__proto__:null,base32:Un,base32hex:sm,base32hexpad:am,base32hexpadupper:cm,base32hexupper:im,base32pad:nm,base32padupper:om,base32upper:rm,base32z:lm},Symbol.toStringTag,{value:"Module"})),jo=no({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),um=no({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),fm=Object.freeze(Object.defineProperty({__proto__:null,base36:jo,base36upper:um},Symbol.toStringTag,{value:"Module"}));var hm=zu,pl=128,pm=-128,gm=Math.pow(2,31);function zu(t,e,r){e=e||[],r=r||0;for(var n=r;t>=gm;)e[r++]=t&255|pl,t/=128;for(;t&pm;)e[r++]=t&255|pl,t>>>=7;return e[r]=t|0,zu.bytes=r-n+1,e}var mm=da,wm=128,gl=127;function da(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw da.bytes=0,new RangeError("Could not decode varint");i=t[s++],r+=o<28?(i&gl)<<o:(i&gl)*Math.pow(2,o),o+=7}while(i>=wm);return da.bytes=s-n,r}var ym=Math.pow(2,7),bm=Math.pow(2,14),vm=Math.pow(2,21),xm=Math.pow(2,28),Sm=Math.pow(2,35),Em=Math.pow(2,42),Am=Math.pow(2,49),km=Math.pow(2,56),Cm=Math.pow(2,63),Im=function(t){return t<ym?1:t<bm?2:t<vm?3:t<xm?4:t<Sm?5:t<Em?6:t<Am?7:t<km?8:t<Cm?9:10},Rm={encode:hm,decode:mm,encodingLength:Im},Jo=Rm;function ua(t,e=0){return[Jo.decode(t,e),Jo.decode.bytes]}function Qo(t,e,r=0){return Jo.encode(t,e,r),e}function es(t){return Jo.encodingLength(t)}function oo(t,e){const r=e.byteLength,n=es(t),o=n+es(r),s=new Uint8Array(o+r);return Qo(t,s,0),Qo(r,s,n),s.set(e,o),new cc(t,r,e,s)}function Wu(t){const e=Bs(t),[r,n]=ua(e),[o,s]=ua(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new cc(r,o,i,e)}function Tm(t,e){if(t===e)return!0;{const r=e;return t.code===r.code&&t.size===r.size&&r.bytes instanceof Uint8Array&&$g(t.bytes,r.bytes)}}class cc{code;size;digest;bytes;constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}}function ml(t,e){const{bytes:r,version:n}=t;return n===0?Nm(r,fa(t),e??Le.encoder):Lm(r,fa(t),e??Un.encoder)}const wl=new WeakMap;function fa(t){const e=wl.get(t);if(e==null){const r=new Map;return wl.set(t,r),r}return e}class ce{code;version;multihash;bytes;"/";constructor(e,r,n,o){this.code=r,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{const{code:e,multihash:r}=this;if(e!==wn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==Bm)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return ce.createV0(r)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{const{code:e,digest:r}=this.multihash,n=oo(e,r);return ce.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return ce.equals(this,e)}static equals(e,r){const n=r;return n!=null&&e.code===n.code&&e.version===n.version&&Tm(e.multihash,n.multihash)}toString(e){return ml(this,e)}toJSON(){return{"/":ml(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;const r=e;if(r instanceof ce)return r;if(r["/"]!=null&&r["/"]===r.bytes||r.asCID===r){const{version:n,code:o,multihash:s,bytes:i}=r;return new ce(n,o,s,i??yl(n,o,s.bytes))}else if(r[_m]===!0){const{version:n,multihash:o,code:s}=r,i=Wu(o);return ce.create(n,s,i)}else return null}static create(e,r,n){if(typeof r!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(r!==wn)throw new Error(`Version 0 CID must use dag-pb (code: ${wn}) block encoding`);return new ce(e,r,n,n.bytes)}case 1:{const o=yl(e,r,n.bytes);return new ce(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return ce.create(0,wn,e)}static createV1(e,r){return ce.create(1,e,r)}static decode(e){const[r,n]=ce.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return r}static decodeFirst(e){const r=ce.inspectBytes(e),n=r.size-r.multihashSize,o=Bs(e.subarray(n,n+r.multihashSize));if(o.byteLength!==r.multihashSize)throw new Error("Incorrect length");const s=o.subarray(r.multihashSize-r.digestSize),i=new cc(r.multihashCode,r.digestSize,s,o);return[r.version===0?ce.createV0(i):ce.createV1(r.codec,i),e.subarray(r.size)]}static inspectBytes(e){let r=0;const n=()=>{const[u,f]=ua(e.subarray(r));return r+=f,u};let o=n(),s=wn;if(o===18?(o=0,r=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);const i=r,a=n(),c=n(),l=r+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,r){const[n,o]=Pm(e,r),s=ce.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return fa(s).set(n,e),s}}function Pm(t,e){switch(t[0]){case"Q":{const r=e??Le;return[Le.prefix,r.decode(`${Le.prefix}${t}`)]}case Le.prefix:{const r=e??Le;return[Le.prefix,r.decode(t)]}case Un.prefix:{const r=e??Un;return[Un.prefix,r.decode(t)]}case jo.prefix:{const r=e??jo;return[jo.prefix,r.decode(t)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function Nm(t,e,r){const{prefix:n}=r;if(n!==Le.prefix)throw Error(`Cannot string encode V0 in ${r.name} encoding`);const o=e.get(n);if(o==null){const s=r.encode(t).slice(1);return e.set(n,s),s}else return o}function Lm(t,e,r){const{prefix:n}=r,o=e.get(n);if(o==null){const s=r.encode(t);return e.set(n,s),s}else return o}const wn=112,Bm=18;function yl(t,e,r){const n=es(t),o=n+es(e),s=new Uint8Array(o+r.byteLength);return Qo(t,s,0),Qo(e,s,n),s.set(r,o),s}const _m=Symbol.for("@ipld/js-cid/CID"),Vu=0,Dm="identity",Gu=Bs;function Om(t,e){if(e?.truncate!=null&&e.truncate!==t.byteLength){if(e.truncate<0||e.truncate>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,e.truncate)}return oo(Vu,Gu(t))}const so={code:Vu,name:Dm,encode:Gu,digest:Om};function st(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function Me(t=0){return new Uint8Array(t)}function kt(t=0){return new Uint8Array(t)}function ha(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));const r=kt(e);let n=0;for(const o of t)r.set(o,n),n+=o.length;return r}const Xu=Symbol.for("@achingbrain/uint8arraylist");function bl(t,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let r=0;for(const n of t){const o=r+n.byteLength;if(e<o)return{buf:n,index:e-r};r=o}throw new RangeError("index is out of bounds")}function wo(t){return!!t?.[Xu]}class oe{bufs;length;[Xu]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let r=0;for(const n of e)if(n instanceof Uint8Array)r+=n.byteLength,this.bufs.push(n);else if(wo(n)){r+=n.byteLength;for(const o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=r}prepend(...e){this.prependAll(e)}prependAll(e){let r=0;for(const n of e.reverse())if(n instanceof Uint8Array)r+=n.byteLength,this.bufs.unshift(n);else if(wo(n))r+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=r}get(e){const r=bl(this.bufs,e);return r.buf[r.index]}set(e,r){const n=bl(this.bufs,e);n.buf[n.index]=r}write(e,r=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(r+n,e[n]);else if(wo(e))for(let n=0;n<e.length;n++)this.set(r+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,r){const{bufs:n,length:o}=this._subList(e,r);return ha(n,o)}subarray(e,r){const{bufs:n,length:o}=this._subList(e,r);return n.length===1?n[0]:ha(n,o)}sublist(e,r){const{bufs:n,length:o}=this._subList(e,r),s=new oe;return s.length=o,s.bufs=n,s}_subList(e,r){if(e=e??0,r=r??this.length,e<0&&(e=this.length+e),r<0&&(r=this.length+r),e<0||r>this.length)throw new RangeError("index is out of bounds");if(e===r)return{bufs:[],length:0};if(e===0&&r===this.length)return{bufs:[...this.bufs],length:this.length};const n=[];let o=0;for(let s=0;s<this.bufs.length;s++){const i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;const l=e>=a&&e<c,d=r>a&&r<=c;if(l&&d){if(e===a&&r===c){n.push(i);break}const u=e-a;n.push(i.subarray(u,u+(r-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(d){if(r===c){n.push(i);break}n.push(i.subarray(0,r-a));break}n.push(i)}return{bufs:n,length:r-e}}indexOf(e,r=0){if(!wo(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');const n=e instanceof Uint8Array?e:e.subarray();if(r=Number(r??0),isNaN(r)&&(r=0),r<0&&(r=this.length+r),r<0&&(r=0),e.length===0)return r>this.length?this.length:r;const o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");const s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;const a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1;let d;for(let u=r;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){const h=this.get(u+f);if(n[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){const r=this.subarray(e,e+1);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt8(0)}setInt8(e,r){const n=kt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,r),this.write(n,e)}getInt16(e,r){const n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,r)}setInt16(e,r,n){const o=Me(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,r,n),this.write(o,e)}getInt32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,r)}setInt32(e,r,n){const o=Me(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,r,n),this.write(o,e)}getBigInt64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,r)}setBigInt64(e,r,n){const o=Me(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,r,n),this.write(o,e)}getUint8(e){const r=this.subarray(e,e+1);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint8(0)}setUint8(e,r){const n=kt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,r),this.write(n,e)}getUint16(e,r){const n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,r)}setUint16(e,r,n){const o=Me(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,r,n),this.write(o,e)}getUint32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,r)}setUint32(e,r,n){const o=Me(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,r,n),this.write(o,e)}getBigUint64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,r)}setBigUint64(e,r,n){const o=Me(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,r,n),this.write(o,e)}getFloat32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,r)}setFloat32(e,r,n){const o=Me(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,r,n),this.write(o,e)}getFloat64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,r)}setFloat64(e,r,n){const o=Me(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,r,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof oe)||e.bufs.length!==this.bufs.length)return!1;for(let r=0;r<this.bufs.length;r++)if(!st(this.bufs[r],e.bufs[r]))return!1;return!0}static fromUint8Arrays(e,r){const n=new oe;return n.bufs=e,r==null&&(r=e.reduce((o,s)=>o+s.byteLength,0)),n.length=r,n}}const Fm=no({prefix:"9",name:"base10",alphabet:"0123456789"}),Mm=Object.freeze(Object.defineProperty({__proto__:null,base10:Fm},Symbol.toStringTag,{value:"Module"})),jm=Ae({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Um=Ae({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),$m=Object.freeze(Object.defineProperty({__proto__:null,base16:jm,base16upper:Um},Symbol.toStringTag,{value:"Module"})),Hm=Ae({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),qm=Object.freeze(Object.defineProperty({__proto__:null,base2:Hm},Symbol.toStringTag,{value:"Module"})),Yu=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),Km=Yu.reduce((t,e,r)=>(t[r]=e,t),[]),zm=Yu.reduce((t,e,r)=>{const n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return t[n]=r,t},[]);function Wm(t){return t.reduce((e,r)=>(e+=Km[r],e),"")}function Vm(t){const e=[];for(const r of t){const n=r.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${r}`);const o=zm[n];if(o==null)throw new Error(`Non-base256emoji character: ${r}`);e.push(o)}return new Uint8Array(e)}const Gm=_s({prefix:"🚀",name:"base256emoji",encode:Wm,decode:Vm}),Xm=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:Gm},Symbol.toStringTag,{value:"Module"})),Ym=Ae({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Zm=Ae({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Jm=Ae({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Qm=Ae({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),ew=Object.freeze(Object.defineProperty({__proto__:null,base64:Ym,base64pad:Zm,base64url:Jm,base64urlpad:Qm},Symbol.toStringTag,{value:"Module"})),tw=Ae({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),rw=Object.freeze(Object.defineProperty({__proto__:null,base8:tw},Symbol.toStringTag,{value:"Module"})),nw=_s({prefix:"\0",name:"identity",encode:t=>qg(t),decode:t=>Hg(t)}),ow=Object.freeze(Object.defineProperty({__proto__:null,identity:nw},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const sw=20;function iw({name:t,code:e,encode:r,minDigestLength:n,maxDigestLength:o}){return new aw(t,e,r,n,o)}class aw{name;code;encode;minDigestLength;maxDigestLength;constructor(e,r,n,o,s){this.name=e,this.code=r,this.encode=n,this.minDigestLength=o??sw,this.maxDigestLength=s}digest(e,r){if(r?.truncate!=null){if(r.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&r.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){const n=this.encode(e);return n instanceof Uint8Array?vl(n,this.code,r?.truncate):n.then(o=>vl(o,this.code,r?.truncate))}else throw Error("Unknown type, must be binary type")}}function vl(t,e,r){if(r!=null&&r!==t.byteLength){if(r>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,r)}return oo(e,t)}function cw(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}const lc=iw({name:"sha2-256",code:18,encode:cw("SHA-256")}),xl={...ow,...qm,...rw,...Mm,...$m,...dm,...fm,...tm,...ew,...Xm};function Zu(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}const Sl=Zu("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),oi=Zu("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);const e=kt(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),Ju={utf8:Sl,"utf-8":Sl,hex:xl.base16,latin1:oi,ascii:oi,binary:oi,...xl};function we(t,e="utf8"){const r=Ju[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.decoder.decode(`${r.prefix}${t}`)}function Q(t,e="utf8"){const r=Ju[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.encoder.encode(t).substring(1)}const lw=parseInt("11111",2),pa=parseInt("10000000",2),dw=parseInt("01111111",2),El={0:yn,1:yn,2:uw,3:pw,4:gw,5:hw,6:fw,16:yn,22:yn,48:yn};function ln(t,e={offset:0}){const r=t[e.offset]&lw;if(e.offset++,El[r]!=null)return El[r](t,e);throw new Error("No decoder for tag "+r)}function io(t,e){let r=0;if((t[e.offset]&pa)===pa){const n=t[e.offset]&dw;let o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=t[e.offset].toString(16).padStart(2,"0");r=parseInt(o,16)}else r=t[e.offset],e.offset++;return r}function yn(t,e){io(t,e);const r=[];for(;!(e.offset>=t.byteLength);){const n=ln(t,e);if(n===null)break;r.push(n)}return r}function uw(t,e){const r=io(t,e),n=e.offset,o=e.offset+r,s=[];for(let i=n;i<o;i++)i===n&&t[i]===0||s.push(t[i]);return e.offset+=r,Uint8Array.from(s)}function fw(t,e){const r=io(t,e),n=e.offset+r,o=t[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){const l=t[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let d=0;for(let u=0;u<c.length;u++)d+=c[u]<<u*7;a+=`.${d}`,c=[]}}return a}function hw(t,e){return e.offset++,null}function pw(t,e){const r=io(t,e),n=t[e.offset];e.offset++;const o=t.subarray(e.offset,e.offset+r-1);if(e.offset+=r,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function gw(t,e){const r=io(t,e),n=t.subarray(e.offset,e.offset+r);return e.offset+=r,n}function mw(t){let e=t.toString(16);e.length%2===1&&(e="0"+e);const r=new oe;for(let n=0;n<e.length;n+=2)r.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return r}function Ds(t){if(t.byteLength<128)return Uint8Array.from([t.byteLength]);const e=mw(t.byteLength);return new oe(Uint8Array.from([e.byteLength|pa]),e)}function He(t){const e=new oe,r=128;return(t.subarray()[0]&r)===r&&e.append(Uint8Array.from([0])),e.append(t),new oe(Uint8Array.from([2]),Ds(e),e)}function dc(t){const e=Uint8Array.from([0]),r=new oe(e,t);return new oe(Uint8Array.from([3]),Ds(r),r)}function ww(t){return new oe(Uint8Array.from([4]),Ds(t),t)}function St(t,e=48){const r=new oe;for(const n of t)r.append(n);return new oe(Uint8Array.from([e]),Ds(r),r)}async function yw(t,e,r){const n=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["sign"]);r?.signal?.throwIfAborted();const o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return r?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function bw(t,e,r,n){const o=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();const s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,r.subarray());return n?.signal?.throwIfAborted(),s}const vw=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),xw=Uint8Array.from([6,5,43,129,4,0,34]),Sw=Uint8Array.from([6,5,43,129,4,0,35]),Qu={ext:!0,kty:"EC",crv:"P-256"},ef={ext:!0,kty:"EC",crv:"P-384"},tf={ext:!0,kty:"EC",crv:"P-521"},Ur=32,$r=48,Hr=66;function Ew(t){const e=ln(t);return Aw(e)}function Aw(t){const e=t[1],r=Q(e,"base64url"),n=t[2][1][0],o=1;let s,i;if(e.byteLength===Ur)return s=Q(n.subarray(o,o+Ur),"base64url"),i=Q(n.subarray(o+Ur),"base64url"),new si({...Qu,key_ops:["sign"],d:r,x:s,y:i});if(e.byteLength===$r)return s=Q(n.subarray(o,o+$r),"base64url"),i=Q(n.subarray(o+$r),"base64url"),new si({...ef,key_ops:["sign"],d:r,x:s,y:i});if(e.byteLength===Hr)return s=Q(n.subarray(o,o+Hr),"base64url"),i=Q(n.subarray(o+Hr),"base64url"),new si({...tf,key_ops:["sign"],d:r,x:s,y:i});throw new ot(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function rf(t){const e=ln(t);return kw(e)}function kw(t){const e=t[1][1][0],r=1;let n,o;if(e.byteLength===Ur*2+1)return n=Q(e.subarray(r,r+Ur),"base64url"),o=Q(e.subarray(r+Ur),"base64url"),new Uo({...Qu,key_ops:["verify"],x:n,y:o});if(e.byteLength===$r*2+1)return n=Q(e.subarray(r,r+$r),"base64url"),o=Q(e.subarray(r+$r),"base64url"),new Uo({...ef,key_ops:["verify"],x:n,y:o});if(e.byteLength===Hr*2+1)return n=Q(e.subarray(r,r+Hr),"base64url"),o=Q(e.subarray(r+Hr),"base64url"),new Uo({...tf,key_ops:["verify"],x:n,y:o});throw new ot(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Cw(t){return St([He(Uint8Array.from([1])),ww(we(t.d??"","base64url")),St([nf(t.crv)],160),St([dc(new oe(Uint8Array.from([4]),we(t.x??"","base64url"),we(t.y??"","base64url")))],161)]).subarray()}function Iw(t){return St([He(Uint8Array.from([1])),St([nf(t.crv)],160),St([dc(new oe(Uint8Array.from([4]),we(t.x??"","base64url"),we(t.y??"","base64url")))],161)]).subarray()}function nf(t){if(t==="P-256")return vw;if(t==="P-384")return xw;if(t==="P-521")return Sw;throw new ot(`Invalid curve ${t}`)}class Uo{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Iw(this.jwk)),this._raw}toMultihash(){return so.digest($s(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}async verify(e,r,n){return bw(this.jwk,r,e,n)}}class si{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new Uo({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=Cw(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}async sign(e,r){return yw(this.jwk,e,r)}}const Cr=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function ao(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function ga(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function mr(t,...e){if(!ao(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function of(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");ga(t.outputLen),ga(t.blockLen)}function ts(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Rw(t,e){mr(t);const r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function Qr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ii(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function it(t,e){return t<<32-e|t>>>e}const sf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Tw=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function sr(t){if(mr(t),sf)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=Tw[t[r]];return e}const ht={_0:48,_9:57,A:65,F:70,a:97,f:102};function Al(t){if(t>=ht._0&&t<=ht._9)return t-ht._0;if(t>=ht.A&&t<=ht.F)return t-(ht.A-10);if(t>=ht.a&&t<=ht.f)return t-(ht.a-10)}function rs(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(sf)return Uint8Array.fromHex(t);const e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){const i=Al(t.charCodeAt(s)),a=Al(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function Pw(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function uc(t){return typeof t=="string"&&(t=Pw(t)),mr(t),t}function lt(...t){let e=0;for(let n=0;n<t.length;n++){const o=t[n];mr(o),e+=o.length}const r=new Uint8Array(e);for(let n=0,o=0;n<t.length;n++){const s=t[n];r.set(s,o),o+=s.length}return r}class af{}function cf(t){const e=n=>t().update(uc(n)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}function fc(t=32){if(Cr&&typeof Cr.getRandomValues=="function")return Cr.getRandomValues(new Uint8Array(t));if(Cr&&typeof Cr.randomBytes=="function")return Uint8Array.from(Cr.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function Nw(t,e,r,n){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,r,n);const o=BigInt(32),s=BigInt(4294967295),i=Number(r>>o&s),a=Number(r&s),c=n?4:0,l=n?0:4;t.setUint32(e+c,i,n),t.setUint32(e+l,a,n)}function Lw(t,e,r){return t&e^~t&r}function Bw(t,e,r){return t&e^t&r^e&r}let lf=class extends af{constructor(e,r,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ii(this.buffer)}update(e){ts(this),e=uc(e),mr(e);const{view:r,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=ii(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ts(this),Rw(e,this),this.finished=!0;const{buffer:r,view:n,blockLen:o,isLE:s}=this;let{pos:i}=this;r[i++]=128,Qr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)r[u]=0;Nw(n,o-8,BigInt(this.length*8),s),this.process(n,0);const a=ii(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:r,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}};const Tt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ce=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),yo=BigInt(2**32-1),kl=BigInt(32);function _w(t,e=!1){return e?{h:Number(t&yo),l:Number(t>>kl&yo)}:{h:Number(t>>kl&yo)|0,l:Number(t&yo)|0}}function Dw(t,e=!1){const r=t.length;let n=new Uint32Array(r),o=new Uint32Array(r);for(let s=0;s<r;s++){const{h:i,l:a}=_w(t[s],e);[n[s],o[s]]=[i,a]}return[n,o]}const Cl=(t,e,r)=>t>>>r,Il=(t,e,r)=>t<<32-r|e>>>r,Ir=(t,e,r)=>t>>>r|e<<32-r,Rr=(t,e,r)=>t<<32-r|e>>>r,bo=(t,e,r)=>t<<64-r|e>>>r-32,vo=(t,e,r)=>t>>>r-32|e<<64-r;function pt(t,e,r,n){const o=(e>>>0)+(n>>>0);return{h:t+r+(o/2**32|0)|0,l:o|0}}const Ow=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),Fw=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,Mw=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),jw=(t,e,r,n,o)=>e+r+n+o+(t/2**32|0)|0,Uw=(t,e,r,n,o)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(o>>>0),$w=(t,e,r,n,o,s)=>e+r+n+o+s+(t/2**32|0)|0,Hw=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Pt=new Uint32Array(64);class qw extends lf{constructor(e=32){super(64,e,8,!1),this.A=Tt[0]|0,this.B=Tt[1]|0,this.C=Tt[2]|0,this.D=Tt[3]|0,this.E=Tt[4]|0,this.F=Tt[5]|0,this.G=Tt[6]|0,this.H=Tt[7]|0}get(){const{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,r){for(let u=0;u<16;u++,r+=4)Pt[u]=e.getUint32(r,!1);for(let u=16;u<64;u++){const f=Pt[u-15],h=Pt[u-2],g=it(f,7)^it(f,18)^f>>>3,m=it(h,17)^it(h,19)^h>>>10;Pt[u]=m+Pt[u-7]+g+Pt[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=it(a,6)^it(a,11)^it(a,25),h=d+f+Lw(a,c,l)+Hw[u]+Pt[u]|0,m=(it(n,2)^it(n,13)^it(n,22))+Bw(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,o,s,i,a,c,l,d)}roundClean(){Qr(Pt)}destroy(){this.set(0,0,0,0,0,0,0,0),Qr(this.buffer)}}const df=Dw(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),Kw=df[0],zw=df[1],Nt=new Uint32Array(80),Lt=new Uint32Array(80);class Ww extends lf{constructor(e=64){super(128,e,16,!1),this.Ah=Ce[0]|0,this.Al=Ce[1]|0,this.Bh=Ce[2]|0,this.Bl=Ce[3]|0,this.Ch=Ce[4]|0,this.Cl=Ce[5]|0,this.Dh=Ce[6]|0,this.Dl=Ce[7]|0,this.Eh=Ce[8]|0,this.El=Ce[9]|0,this.Fh=Ce[10]|0,this.Fl=Ce[11]|0,this.Gh=Ce[12]|0,this.Gl=Ce[13]|0,this.Hh=Ce[14]|0,this.Hl=Ce[15]|0}get(){const{Ah:e,Al:r,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:m,Hl:y}=this;return[e,r,n,o,s,i,a,c,l,d,u,f,h,g,m,y]}set(e,r,n,o,s,i,a,c,l,d,u,f,h,g,m,y){this.Ah=e|0,this.Al=r|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=m|0,this.Hl=y|0}process(e,r){for(let b=0;b<16;b++,r+=4)Nt[b]=e.getUint32(r),Lt[b]=e.getUint32(r+=4);for(let b=16;b<80;b++){const A=Nt[b-15]|0,L=Lt[b-15]|0,I=Ir(A,L,1)^Ir(A,L,8)^Cl(A,L,7),R=Rr(A,L,1)^Rr(A,L,8)^Il(A,L,7),E=Nt[b-2]|0,x=Lt[b-2]|0,S=Ir(E,x,19)^bo(E,x,61)^Cl(E,x,6),T=Rr(E,x,19)^vo(E,x,61)^Il(E,x,6),B=Mw(R,T,Lt[b-7],Lt[b-16]),v=jw(B,I,S,Nt[b-7],Nt[b-16]);Nt[b]=v|0,Lt[b]=B|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:m,Gl:y,Hh:w,Hl:C}=this;for(let b=0;b<80;b++){const A=Ir(u,f,14)^Ir(u,f,18)^bo(u,f,41),L=Rr(u,f,14)^Rr(u,f,18)^vo(u,f,41),I=u&h^~u&m,R=f&g^~f&y,E=Uw(C,L,R,zw[b],Lt[b]),x=$w(E,w,A,I,Kw[b],Nt[b]),S=E|0,T=Ir(n,o,28)^bo(n,o,34)^bo(n,o,39),B=Rr(n,o,28)^vo(n,o,34)^vo(n,o,39),v=n&s^n&a^s&a,k=o&i^o&c^i&c;w=m|0,C=y|0,m=h|0,y=g|0,h=u|0,g=f|0,{h:u,l:f}=pt(l|0,d|0,x|0,S|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;const P=Ow(S,B,k);n=Fw(P,x,T,v),o=P|0}({h:n,l:o}=pt(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=pt(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=pt(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=pt(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=pt(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=pt(this.Fh|0,this.Fl|0,h|0,g|0),{h:m,l:y}=pt(this.Gh|0,this.Gl|0,m|0,y|0),{h:w,l:C}=pt(this.Hh|0,this.Hl|0,w|0,C|0),this.set(n,o,s,i,a,c,l,d,u,f,h,g,m,y,w,C)}roundClean(){Qr(Nt,Lt)}destroy(){Qr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const uf=cf(()=>new qw),Vw=cf(()=>new Ww);const hc=BigInt(0),ma=BigInt(1);function dr(t,e=""){if(typeof t!="boolean"){const r=e&&`"${e}"`;throw new Error(r+"expected boolean, got type="+typeof t)}return t}function rt(t,e,r=""){const n=ao(t),o=t?.length,s=e!==void 0;if(!n||s&&o!==e){const i=r&&`"${r}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function xo(t){const e=t.toString(16);return e.length&1?"0"+e:e}function ff(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?hc:BigInt("0x"+t)}function Os(t){return ff(sr(t))}function Gn(t){return mr(t),ff(sr(Uint8Array.from(t).reverse()))}function pc(t,e){return rs(t.toString(16).padStart(e*2,"0"))}function hf(t,e){return pc(t,e).reverse()}function fe(t,e,r){let n;if(typeof e=="string")try{n=rs(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(ao(e))n=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const o=n.length;if(typeof r=="number"&&o!==r)throw new Error(t+" of length "+r+" expected, got "+o);return n}function Rl(t){return Uint8Array.from(t)}const ai=t=>typeof t=="bigint"&&hc<=t;function Gw(t,e,r){return ai(t)&&ai(e)&&ai(r)&&e<=t&&t<r}function wa(t,e,r,n){if(!Gw(e,r,n))throw new Error("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function pf(t){let e;for(e=0;t>hc;t>>=ma,e+=1);return e}const co=t=>(ma<<BigInt(t))-ma;function Xw(t,e,r){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof r!="function")throw new Error("hmacFn must be a function");const n=h=>new Uint8Array(h),o=h=>Uint8Array.of(h);let s=n(t),i=n(t),a=0;const c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>r(i,s,...h),d=(h=n(0))=>{i=l(o(0),h),s=l(),h.length!==0&&(i=l(o(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const g=[];for(;h<e;){s=l();const m=s.slice();g.push(m),h+=s.length}return lt(...g)};return(h,g)=>{c(),d(h);let m;for(;!(m=g(u()));)d();return c(),m}}function lo(t,e,r={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function n(o,s,i){const a=t[o];if(i&&a===void 0)return;const c=typeof a;if(c!==s||a===null)throw new Error(`param "${o}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([o,s])=>n(o,s,!1)),Object.entries(r).forEach(([o,s])=>n(o,s,!0))}function ns(t){const e=new WeakMap;return(r,...n)=>{const o=e.get(r);if(o!==void 0)return o;const s=t(r,...n);return e.set(r,s),s}}const je=BigInt(0),Ee=BigInt(1),er=BigInt(2),gf=BigInt(3),mf=BigInt(4),wf=BigInt(5),Yw=BigInt(7),yf=BigInt(8),Zw=BigInt(9),bf=BigInt(16);function ye(t,e){const r=t%e;return r>=je?r:e+r}function ue(t,e,r){let n=t;for(;e-- >je;)n*=n,n%=r;return n}function Tl(t,e){if(t===je)throw new Error("invert: expected non-zero number");if(e<=je)throw new Error("invert: expected positive modulus, got "+e);let r=ye(t,e),n=e,o=je,s=Ee;for(;r!==je;){const a=n/r,c=n%r,l=o-s*a;n=r,r=c,o=s,s=l}if(n!==Ee)throw new Error("invert: does not exist");return ye(o,e)}function gc(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}function vf(t,e){const r=(t.ORDER+Ee)/mf,n=t.pow(e,r);return gc(t,n,e),n}function Jw(t,e){const r=(t.ORDER-wf)/yf,n=t.mul(e,er),o=t.pow(n,r),s=t.mul(e,o),i=t.mul(t.mul(s,er),o),a=t.mul(s,t.sub(i,t.ONE));return gc(t,a,e),a}function Qw(t){const e=wr(t),r=xf(t),n=r(e,e.neg(e.ONE)),o=r(e,n),s=r(e,e.neg(n)),i=(t+Yw)/bf;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,n);const u=a.mul(l,o),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);const m=a.eql(a.sqr(d),c),y=a.cmov(l,d,m);return gc(a,y,c),y}}function xf(t){if(t<gf)throw new Error("sqrt is not defined for small field");let e=t-Ee,r=0;for(;e%er===je;)e/=er,r++;let n=er;const o=wr(t);for(;Pl(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return vf;let s=o.pow(n,e);const i=(e+Ee)/er;return function(c,l){if(c.is0(l))return l;if(Pl(c,l)!==1)throw new Error("Cannot find square root");let d=r,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,m=c.sqr(f);for(;!c.eql(m,c.ONE);)if(g++,m=c.sqr(m),g===d)throw new Error("Cannot find square root");const y=Ee<<BigInt(d-g-1),w=c.pow(u,y);d=g,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function ey(t){return t%mf===gf?vf:t%yf===wf?Jw:t%bf===Zw?Qw(t):xf(t)}const ty=(t,e)=>(ye(t,e)&Ee)===Ee,ry=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function ny(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},r=ry.reduce((n,o)=>(n[o]="function",n),e);return lo(t,r),t}function oy(t,e,r){if(r<je)throw new Error("invalid exponent, negatives unsupported");if(r===je)return t.ONE;if(r===Ee)return e;let n=t.ONE,o=e;for(;r>je;)r&Ee&&(n=t.mul(n,o)),o=t.sqr(o),r>>=Ee;return n}function Sf(t,e,r=!1){const n=new Array(e.length).fill(r?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(n[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(n[c]=t.mul(i,n[c]),t.mul(i,a)),s),n}function Pl(t,e){const r=(t.ORDER-Ee)/er,n=t.pow(e,r),o=t.eql(n,t.ONE),s=t.eql(n,t.ZERO),i=t.eql(n,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Ef(t,e){e!==void 0&&ga(e);const r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}function wr(t,e,r=!1,n={}){if(t<=je)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(n.sqrt||r)throw new Error("cannot specify opts in two arguments");const f=e;f.BITS&&(o=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(r=f.isLE),typeof f.modFromBytes=="boolean"&&(i=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(o=e),n.sqrt&&(s=n.sqrt);const{nBitLength:c,nByteLength:l}=Ef(t,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d;const u=Object.freeze({ORDER:t,isLE:r,BITS:c,BYTES:l,MASK:co(c),ZERO:je,ONE:Ee,allowedLengths:a,create:f=>ye(f,t),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return je<=f&&f<t},is0:f=>f===je,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Ee)===Ee,neg:f=>ye(-f,t),eql:(f,h)=>f===h,sqr:f=>ye(f*f,t),add:(f,h)=>ye(f+h,t),sub:(f,h)=>ye(f-h,t),mul:(f,h)=>ye(f*h,t),pow:(f,h)=>oy(u,f,h),div:(f,h)=>ye(f*Tl(h,t),t),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>Tl(f,t),sqrt:s||(f=>(d||(d=ey(t)),d(u,f))),toBytes:f=>r?hf(f,l):pc(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);const m=new Uint8Array(l);m.set(f,r?0:m.length-f.length),f=m}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=r?Gn(f):Os(f);if(i&&(g=ye(g,t)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>Sf(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function Af(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function kf(t){const e=Af(t);return e+Math.ceil(e/2)}function sy(t,e,r=!1){const n=t.length,o=Af(e),s=kf(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);const i=r?Gn(t):Os(t),a=ye(i,e-Ee)+Ee;return r?hf(a,o):pc(a,o)}const en=BigInt(0),tr=BigInt(1);function os(t,e){const r=e.negate();return t?r:e}function rr(t,e){const r=Sf(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function Cf(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function ci(t,e){Cf(t,e);const r=Math.ceil(e/t)+1,n=2**(t-1),o=2**t,s=co(t),i=BigInt(t);return{windows:r,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function Nl(t,e,r){const{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=r;let a=Number(t&o),c=t>>i;a>n&&(a-=s,c+=tr);const l=e*n,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function iy(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function ay(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,n)=>{if(!e.isValid(r))throw new Error("invalid scalar at index "+n)})}const li=new WeakMap,If=new WeakMap;function di(t){return If.get(t)||1}function Ll(t){if(t!==en)throw new Error("invalid wNAF")}class Rf{constructor(e,r){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=r}_unsafeLadder(e,r,n=this.ZERO){let o=e;for(;r>en;)r&tr&&(n=n.add(o)),o=o.double(),r>>=tr;return n}precomputeWindow(e,r){const{windows:n,windowSize:o}=ci(r,this.bits),s=[];let i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=ci(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=Nl(n,a,i);n=c,d?s=s.add(os(f,r[h])):o=o.add(os(u,r[l]))}return Ll(n),{p:o,f:s}}wNAFUnsafe(e,r,n,o=this.ZERO){const s=ci(e,this.bits);for(let i=0;i<s.windows&&n!==en;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=Nl(n,i,s);if(n=a,!l){const u=r[c];o=o.add(d?u.negate():u)}}return Ll(n),o}getPrecomputes(e,r,n){let o=li.get(r);return o||(o=this.precomputeWindow(r,e),e!==1&&(typeof n=="function"&&(o=n(o)),li.set(r,o))),o}cached(e,r,n){const o=di(e);return this.wNAF(o,this.getPrecomputes(o,e,n),r)}unsafe(e,r,n,o){const s=di(e);return s===1?this._unsafeLadder(e,r,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),r,o)}createCache(e,r){Cf(r,this.bits),If.set(e,r),li.delete(e)}hasCache(e){return di(e)!==1}}function cy(t,e,r,n){let o=e,s=t.ZERO,i=t.ZERO;for(;r>en||n>en;)r&tr&&(s=s.add(o)),n&tr&&(i=i.add(o)),o=o.double(),r>>=tr,n>>=tr;return{p1:s,p2:i}}function Tf(t,e,r,n){iy(r,t),ay(n,e);const o=r.length,s=n.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,a=pf(BigInt(o));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=co(c),d=new Array(Number(l)+1).fill(i),u=Math.floor((e.BITS-1)/c)*c;let f=i;for(let h=u;h>=0;h-=c){d.fill(i);for(let m=0;m<s;m++){const y=n[m],w=Number(y>>BigInt(h)&l);d[w]=d[w].add(r[m])}let g=i;for(let m=d.length-1,y=i;m>0;m--)y=y.add(d[m]),g=g.add(y);if(f=f.add(g),h!==0)for(let m=0;m<c;m++)f=f.double()}return f}function Bl(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return ny(e),e}else return wr(t,{isLE:r})}function Pf(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const c of["p","n","h"]){const l=e[c];if(!(typeof l=="bigint"&&l>en))throw new Error(`CURVE.${c} must be positive bigint`)}const o=Bl(e.p,r.Fp,n),s=Bl(e.n,r.Fn,n),a=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}const Bt=BigInt(0),be=BigInt(1),ui=BigInt(2),ly=BigInt(8);function dy(t,e,r,n){const o=t.sqr(r),s=t.sqr(n),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function uy(t,e={}){const r=Pf("edwards",t,e,e.FpFnLE),{Fp:n,Fn:o}=r;let s=r.CURVE;const{h:i}=s;lo(e,{},{uvRatio:"function"});const a=ui<<BigInt(o.BYTES*8)-be,c=y=>n.create(y),l=e.uvRatio||((y,w)=>{try{return{isValid:!0,value:n.sqrt(n.div(y,w))}}catch{return{isValid:!1,value:Bt}}});if(!dy(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(y,w,C=!1){const b=C?be:Bt;return wa("coordinate "+y,w,b,a),w}function u(y){if(!(y instanceof g))throw new Error("ExtendedPoint expected")}const f=ns((y,w)=>{const{X:C,Y:b,Z:A}=y,L=y.is0();w==null&&(w=L?ly:n.inv(A));const I=c(C*w),R=c(b*w),E=n.mul(A,w);if(L)return{x:Bt,y:be};if(E!==be)throw new Error("invZ was invalid");return{x:I,y:R}}),h=ns(y=>{const{a:w,d:C}=s;if(y.is0())throw new Error("bad point: ZERO");const{X:b,Y:A,Z:L,T:I}=y,R=c(b*b),E=c(A*A),x=c(L*L),S=c(x*x),T=c(R*w),B=c(x*c(T+E)),v=c(S+c(C*c(R*E)));if(B!==v)throw new Error("bad point: equation left != right (1)");const k=c(b*A),P=c(L*I);if(k!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(w,C,b,A){this.X=d("x",w),this.Y=d("y",C),this.Z=d("z",b,!0),this.T=d("t",A),Object.freeze(this)}static CURVE(){return s}static fromAffine(w){if(w instanceof g)throw new Error("extended point not allowed");const{x:C,y:b}=w||{};return d("x",C),d("y",b),new g(C,b,be,c(C*b))}static fromBytes(w,C=!1){const b=n.BYTES,{a:A,d:L}=s;w=Rl(rt(w,b,"point")),dr(C,"zip215");const I=Rl(w),R=w[b-1];I[b-1]=R&-129;const E=Gn(I),x=C?a:n.ORDER;wa("point.y",E,Bt,x);const S=c(E*E),T=c(S-be),B=c(L*S-A);let{isValid:v,value:k}=l(T,B);if(!v)throw new Error("bad point: invalid y coordinate");const P=(k&be)===be,N=(R&128)!==0;if(!C&&k===Bt&&N)throw new Error("bad point: x=0 and x_0=1");return N!==P&&(k=c(-k)),g.fromAffine({x:k,y:E})}static fromHex(w,C=!1){return g.fromBytes(fe("point",w),C)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,C=!0){return m.createCache(this,w),C||this.multiply(ui),this}assertValidity(){h(this)}equals(w){u(w);const{X:C,Y:b,Z:A}=this,{X:L,Y:I,Z:R}=w,E=c(C*R),x=c(L*A),S=c(b*R),T=c(I*A);return E===x&&S===T}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:w}=s,{X:C,Y:b,Z:A}=this,L=c(C*C),I=c(b*b),R=c(ui*c(A*A)),E=c(w*L),x=C+b,S=c(c(x*x)-L-I),T=E+I,B=T-R,v=E-I,k=c(S*B),P=c(T*v),N=c(S*v),j=c(B*T);return new g(k,P,j,N)}add(w){u(w);const{a:C,d:b}=s,{X:A,Y:L,Z:I,T:R}=this,{X:E,Y:x,Z:S,T}=w,B=c(A*E),v=c(L*x),k=c(R*b*T),P=c(I*S),N=c((A+L)*(E+x)-B-v),j=P-k,U=P+k,O=c(v-C*B),_=c(N*j),D=c(U*O),F=c(N*O),H=c(j*U);return new g(_,D,H,F)}subtract(w){return this.add(w.negate())}multiply(w){if(!o.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");const{p:C,f:b}=m.cached(this,w,A=>rr(g,A));return rr(g,[C,b])[0]}multiplyUnsafe(w,C=g.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===Bt?g.ZERO:this.is0()||w===be?this:m.unsafe(this,w,b=>rr(g,b),C)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===be?this:this.multiplyUnsafe(i)}toBytes(){const{x:w,y:C}=this.toAffine(),b=n.toBytes(C);return b[b.length-1]|=w&be?128:0,b}toHex(){return sr(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(w){return rr(g,w)}static msm(w,C){return Tf(g,o,w,C)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,be,c(s.Gx*s.Gy)),g.ZERO=new g(Bt,be,be,Bt),g.Fp=n,g.Fn=o;const m=new Rf(g,o.BITS);return g.BASE.precompute(8),g}function fy(t,e,r={}){if(typeof e!="function")throw new Error('"hash" function param is required');lo(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:n}=r,{BASE:o,Fp:s,Fn:i}=t,a=r.randomBytes||fc,c=r.adjustScalarBytes||(x=>x),l=r.domain||((x,S,T)=>{if(dr(T,"phflag"),S.length||T)throw new Error("Contexts/pre-hash are not supported");return x});function d(x){return i.create(Gn(x))}function u(x){const S=b.secretKey;x=fe("private key",x,S);const T=fe("hashed private key",e(x),2*S),B=c(T.slice(0,S)),v=T.slice(S,2*S),k=d(B);return{head:B,prefix:v,scalar:k}}function f(x){const{head:S,prefix:T,scalar:B}=u(x),v=o.multiply(B),k=v.toBytes();return{head:S,prefix:T,scalar:B,point:v,pointBytes:k}}function h(x){return f(x).pointBytes}function g(x=Uint8Array.of(),...S){const T=lt(...S);return d(e(l(T,fe("context",x),!!n)))}function m(x,S,T={}){x=fe("message",x),n&&(x=n(x));const{prefix:B,scalar:v,pointBytes:k}=f(S),P=g(T.context,B,x),N=o.multiply(P).toBytes(),j=g(T.context,N,k,x),U=i.create(P+j*v);if(!i.isValid(U))throw new Error("sign failed: invalid s");const O=lt(N,i.toBytes(U));return rt(O,b.signature,"result")}const y={zip215:!0};function w(x,S,T,B=y){const{context:v,zip215:k}=B,P=b.signature;x=fe("signature",x,P),S=fe("message",S),T=fe("publicKey",T,b.publicKey),k!==void 0&&dr(k,"zip215"),n&&(S=n(S));const N=P/2,j=x.subarray(0,N),U=Gn(x.subarray(N,P));let O,_,D;try{O=t.fromBytes(T,k),_=t.fromBytes(j,k),D=o.multiplyUnsafe(U)}catch{return!1}if(!k&&O.isSmallOrder())return!1;const F=g(v,_.toBytes(),O.toBytes(),S);return _.add(O.multiplyUnsafe(F)).subtract(D).clearCofactor().is0()}const C=s.BYTES,b={secretKey:C,publicKey:C,signature:2*C,seed:C};function A(x=a(b.seed)){return rt(x,b.seed,"seed")}function L(x){const S=E.randomSecretKey(x);return{secretKey:S,publicKey:h(S)}}function I(x){return ao(x)&&x.length===i.BYTES}function R(x,S){try{return!!t.fromBytes(x,S)}catch{return!1}}const E={getExtendedPublicKey:f,randomSecretKey:A,isValidSecretKey:I,isValidPublicKey:R,toMontgomery(x){const{y:S}=t.fromBytes(x),T=b.publicKey,B=T===32;if(!B&&T!==57)throw new Error("only defined for 25519 and 448");const v=B?s.div(be+S,be-S):s.div(S-be,S+be);return s.toBytes(v)},toMontgomerySecret(x){const S=b.secretKey;rt(x,S);const T=e(x.subarray(0,S));return c(T).subarray(0,S)},randomPrivateKey:A,precompute(x=8,S=t.BASE){return S.precompute(x,!1)}};return Object.freeze({keygen:L,getPublicKey:h,sign:m,verify:w,utils:E,Point:t,lengths:b})}function hy(t){const e={a:t.a,d:t.d,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},r=t.Fp,n=wr(e.n,t.nBitLength,!0),o={Fp:r,Fn:n,uvRatio:t.uvRatio},s={randomBytes:t.randomBytes,adjustScalarBytes:t.adjustScalarBytes,domain:t.domain,prehash:t.prehash,mapToCurve:t.mapToCurve};return{CURVE:e,curveOpts:o,hash:t.hash,eddsaOpts:s}}function py(t,e){const r=e.Point;return Object.assign({},e,{ExtendedPoint:r,CURVE:t,nBitLength:r.Fn.BITS,nByteLength:r.Fn.BYTES})}function gy(t){const{CURVE:e,curveOpts:r,hash:n,eddsaOpts:o}=hy(t),s=uy(e,r),i=fy(s,n,o);return py(t,i)}const my=BigInt(1),_l=BigInt(2);BigInt(3);const wy=BigInt(5),yy=BigInt(8),mc=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Nf={p:mc,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:yy,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function by(t){const e=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),s=mc,a=t*t%s*t%s,c=ue(a,_l,s)*a%s,l=ue(c,my,s)*t%s,d=ue(l,wy,s)*l%s,u=ue(d,e,s)*d%s,f=ue(u,r,s)*u%s,h=ue(f,n,s)*f%s,g=ue(h,o,s)*h%s,m=ue(g,o,s)*h%s,y=ue(m,e,s)*d%s;return{pow_p_5_8:ue(y,_l,s)*t%s,b2:a}}function vy(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Dl=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function xy(t,e){const r=mc,n=ye(e*e*e,r),o=ye(n*n*e,r),s=by(t*o).pow_p_5_8;let i=ye(t*n*s,r);const a=ye(e*i*i,r),c=i,l=ye(i*Dl,r),d=a===t,u=a===ye(-t,r),f=a===ye(-t*Dl,r);return d&&(i=c),(u||f)&&(i=l),ty(i,r)&&(i=ye(-i,r)),{isValid:d||u,value:i}}const Sy=wr(Nf.p,{isLE:!0}),Ey={...Nf,Fp:Sy,hash:Vw,adjustScalarBytes:vy,uvRatio:xy},ss=gy(Ey);class Ol extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}}class Fl extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}}class Ay extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}}const Ct={get(t=globalThis){const e=t.crypto;if(e?.subtle==null)throw new Ay("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}},is=32,mt=64,ya=32;let qr;const Lf=(async()=>{try{return await Ct.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function ky(){const t=ss.utils.randomPrivateKey(),e=ss.getPublicKey(t);return{privateKey:Ly(t,e),publicKey:e}}async function Cy(t,e){let r;t.length===mt?r=t.subarray(0,32):r=t;const n={crv:"Ed25519",kty:"OKP",x:Q(t.subarray(32),"base64url"),d:Q(r,"base64url"),ext:!0,key_ops:["sign"]},o=await Ct.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await Ct.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function Iy(t,e){const r=t.subarray(0,ya);return ss.sign(e instanceof Uint8Array?e:e.subarray(),r)}async function Ry(t,e){return qr==null&&(qr=await Lf),qr?Cy(t,e):Iy(t,e)}async function Ty(t,e,r){if(t.buffer instanceof ArrayBuffer){const n=await Ct.get().subtle.importKey("raw",t.buffer,{name:"Ed25519"},!1,["verify"]);return await Ct.get().subtle.verify({name:"Ed25519"},n,e,r instanceof Uint8Array?r:r.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function Py(t,e,r){return ss.verify(e,r instanceof Uint8Array?r:r.subarray(),t)}async function Ny(t,e,r){return qr==null&&(qr=await Lf),qr?Ty(t,e,r):Py(t,e,r)}function Ly(t,e){const r=new Uint8Array(mt);for(let n=0;n<ya;n++)r[n]=t[n],r[ya+n]=e[n];return r}function Fs(t){return t==null?!1:typeof t.then=="function"&&typeof t.catch=="function"&&typeof t.finally=="function"}class Bf{type="Ed25519";raw;constructor(e){this.raw=Xn(e,is)}toMultihash(){return so.digest($s(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}verify(e,r,n){n?.signal?.throwIfAborted();const o=Ny(this.raw,r,e);return Fs(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}}class ba{type="Ed25519";raw;publicKey;constructor(e,r){this.raw=Xn(e,mt),this.publicKey=new Bf(r)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}sign(e,r){r?.signal?.throwIfAborted();const n=Ry(this.raw,e);return Fs(n)?n.then(o=>(r?.signal?.throwIfAborted(),o)):(r?.signal?.throwIfAborted(),n)}}function By(t){if(t.length>mt){t=Xn(t,mt+is);const n=t.subarray(0,mt),o=t.subarray(mt,t.length);return new ba(n,o)}t=Xn(t,mt);const e=t.subarray(0,mt),r=t.subarray(is);return new ba(e,r)}function _f(t){return t=Xn(t,is),new Bf(t)}async function _y(){const{privateKey:t,publicKey:e}=ky();return new ba(t,e)}function Xn(t,e){if(t=Uint8Array.from(t??[]),t.length!==e)throw new ot(`Key must be a Uint8Array of length ${e}, got ${t.length}`);return t}const Dy=Math.pow(2,7),Oy=Math.pow(2,14),Fy=Math.pow(2,21),wc=Math.pow(2,28),yc=Math.pow(2,35),bc=Math.pow(2,42),vc=Math.pow(2,49),re=128,Ie=127;function yr(t){if(t<Dy)return 1;if(t<Oy)return 2;if(t<Fy)return 3;if(t<wc)return 4;if(t<yc)return 5;if(t<bc)return 6;if(t<vc)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Df(t,e,r=0){switch(yr(t)){case 8:e[r++]=t&255|re,t/=128;case 7:e[r++]=t&255|re,t/=128;case 6:e[r++]=t&255|re,t/=128;case 5:e[r++]=t&255|re,t/=128;case 4:e[r++]=t&255|re,t>>>=7;case 3:e[r++]=t&255|re,t>>>=7;case 2:e[r++]=t&255|re,t>>>=7;case 1:{e[r++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function My(t,e,r=0){switch(yr(t)){case 8:e.set(r++,t&255|re),t/=128;case 7:e.set(r++,t&255|re),t/=128;case 6:e.set(r++,t&255|re),t/=128;case 5:e.set(r++,t&255|re),t/=128;case 4:e.set(r++,t&255|re),t>>>=7;case 3:e.set(r++,t&255|re),t>>>=7;case 2:e.set(r++,t&255|re),t>>>=7;case 1:{e.set(r++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function Of(t,e){let r=t[e],n=0;if(n+=r&Ie,r<re||(r=t[e+1],n+=(r&Ie)<<7,r<re)||(r=t[e+2],n+=(r&Ie)<<14,r<re)||(r=t[e+3],n+=(r&Ie)<<21,r<re)||(r=t[e+4],n+=(r&Ie)*wc,r<re)||(r=t[e+5],n+=(r&Ie)*yc,r<re)||(r=t[e+6],n+=(r&Ie)*bc,r<re)||(r=t[e+7],n+=(r&Ie)*vc,r<re))return n;throw new RangeError("Could not decode varint")}function jy(t,e){let r=t.get(e),n=0;if(n+=r&Ie,r<re||(r=t.get(e+1),n+=(r&Ie)<<7,r<re)||(r=t.get(e+2),n+=(r&Ie)<<14,r<re)||(r=t.get(e+3),n+=(r&Ie)<<21,r<re)||(r=t.get(e+4),n+=(r&Ie)*wc,r<re)||(r=t.get(e+5),n+=(r&Ie)*yc,r<re)||(r=t.get(e+6),n+=(r&Ie)*bc,r<re)||(r=t.get(e+7),n+=(r&Ie)*vc,r<re))return n;throw new RangeError("Could not decode varint")}function Uy(t,e,r=0){return e==null&&(e=kt(yr(t))),e instanceof Uint8Array?Df(t,e,r):My(t,e,r)}function Ff(t,e=0){return t instanceof Uint8Array?Of(t,e):jy(t,e)}const xc=new Float32Array([-0]),$t=new Uint8Array(xc.buffer);function $y(t,e,r){xc[0]=t,e[r]=$t[0],e[r+1]=$t[1],e[r+2]=$t[2],e[r+3]=$t[3]}function Hy(t,e){return $t[0]=t[e],$t[1]=t[e+1],$t[2]=t[e+2],$t[3]=t[e+3],xc[0]}const Sc=new Float64Array([-0]),Re=new Uint8Array(Sc.buffer);function qy(t,e,r){Sc[0]=t,e[r]=Re[0],e[r+1]=Re[1],e[r+2]=Re[2],e[r+3]=Re[3],e[r+4]=Re[4],e[r+5]=Re[5],e[r+6]=Re[6],e[r+7]=Re[7]}function Ky(t,e){return Re[0]=t[e],Re[1]=t[e+1],Re[2]=t[e+2],Re[3]=t[e+3],Re[4]=t[e+4],Re[5]=t[e+5],Re[6]=t[e+6],Re[7]=t[e+7],Sc[0]}const zy=BigInt(Number.MAX_SAFE_INTEGER),Wy=BigInt(Number.MIN_SAFE_INTEGER);class Te{lo;hi;constructor(e,r){this.lo=e|0,this.hi=r|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){const r=~this.lo+1>>>0;let n=~this.hi>>>0;return r===0&&(n=n+1>>>0),-(r+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){const r=~this.lo+1>>>0;let n=~this.hi>>>0;return r===0&&(n=n+1>>>0),-(BigInt(r)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){const e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){const e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){const e=this.lo,r=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?r===0?e<16384?e<128?1:2:e<2097152?3:4:r<16384?r<128?5:6:r<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return ir;if(e<zy&&e>Wy)return this.fromNumber(Number(e));const r=e<0n;r&&(e=-e);let n=e>>32n,o=e-(n<<32n);return r&&(n=~n|0n,o=~o|0n,++o>Ml&&(o=0n,++n>Ml&&(n=0n))),new Te(Number(o),Number(n))}static fromNumber(e){if(e===0)return ir;const r=e<0;r&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return r&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new Te(n,o)}static from(e){return typeof e=="number"?Te.fromNumber(e):typeof e=="bigint"?Te.fromBigInt(e):typeof e=="string"?Te.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new Te(e.low>>>0,e.high>>>0):ir}}const ir=new Te(0,0);ir.toBigInt=function(){return 0n};ir.zzEncode=ir.zzDecode=function(){return this};ir.length=function(){return 1};const Ml=4294967296n;function Vy(t){let e=0,r=0;for(let n=0;n<t.length;++n)r=t.charCodeAt(n),r<128?e+=1:r<2048?e+=2:(r&64512)===55296&&(t.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Gy(t,e,r){if(r-e<1)return"";let o;const s=[];let i=0,a;for(;e<r;)a=t[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|t[e++]&63:a>239&&a<365?(a=((a&7)<<18|(t[e++]&63)<<12|(t[e++]&63)<<6|t[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(t[e++]&63)<<6|t[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Mf(t,e,r){const n=r;let o,s;for(let i=0;i<t.length;++i)o=t.charCodeAt(i),o<128?e[r++]=o:o<2048?(e[r++]=o>>6|192,e[r++]=o&63|128):(o&64512)===55296&&((s=t.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[r++]=o>>18|240,e[r++]=o>>12&63|128,e[r++]=o>>6&63|128,e[r++]=o&63|128):(e[r++]=o>>12|224,e[r++]=o>>6&63|128,e[r++]=o&63|128);return r-n}function et(t,e){return RangeError(`index out of range: ${t.pos} + ${e??1} > ${t.len}`)}function So(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}class Xy{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,et(this,10);return e}int32(){return this.uint32()|0}sint32(){const e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw et(this,4);return So(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw et(this,4);return So(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw et(this,4);const e=Hy(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw et(this,4);const e=Ky(this.buf,this.pos);return this.pos+=8,e}bytes(){const e=this.uint32(),r=this.pos,n=this.pos+e;if(n>this.len)throw et(this,e);return this.pos+=e,r===n?new Uint8Array(0):this.buf.subarray(r,n)}string(){const e=this.bytes();return Gy(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw et(this,e);this.pos+=e}else do if(this.pos>=this.len)throw et(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){const e=new Te(0,0);let r=0;if(this.len-this.pos>4){for(;r<4;++r)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<r*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;r=0}else{for(;r<3;++r){if(this.pos>=this.len)throw et(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<r*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<r*7)>>>0,e}if(this.len-this.pos>4){for(;r<5;++r)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<r*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;r<5;++r){if(this.pos>=this.len)throw et(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<r*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw et(this,8);const e=So(this.buf,this.pos+=4),r=So(this.buf,this.pos+=4);return new Te(e,r)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){const e=Of(this.buf,this.pos);return this.pos+=yr(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}function Yy(t){return new Xy(t instanceof Uint8Array?t:t.subarray())}function Ms(t,e,r){const n=Yy(t);return e.decode(n,void 0,r)}function Zy(t){let n,o=8192;return function(i){if(i<1||i>4096)return kt(i);o+i>8192&&(n=kt(8192),o=0);const a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}class _n{fn;len;next;val;constructor(e,r,n){this.fn=e,this.len=r,this.next=void 0,this.val=n}}function fi(){}class Jy{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}}const Qy=Zy();function eb(t){return globalThis.Buffer!=null?kt(t):Qy(t)}class va{len;head;tail;states;constructor(){this.len=0,this.head=new _n(fi,0,0),this.tail=this.head,this.states=null}_push(e,r,n){return this.tail=this.tail.next=new _n(e,r,n),this.len+=r,this}uint32(e){return this.len+=(this.tail=this.tail.next=new rb((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Eo,10,Te.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){const r=Te.fromBigInt(e);return this._push(Eo,r.length(),r)}uint64Number(e){return this._push(Df,yr(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){const r=Te.fromBigInt(e).zzEncode();return this._push(Eo,r.length(),r)}sint64Number(e){const r=Te.fromNumber(e).zzEncode();return this._push(Eo,r.length(),r)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(hi,1,e?1:0)}fixed32(e){return this._push(bn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){const r=Te.fromBigInt(e);return this._push(bn,4,r.lo)._push(bn,4,r.hi)}fixed64Number(e){const r=Te.fromNumber(e);return this._push(bn,4,r.lo)._push(bn,4,r.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push($y,4,e)}double(e){return this._push(qy,8,e)}bytes(e){const r=e.length>>>0;return r===0?this._push(hi,1,0):this.uint32(r)._push(nb,r,e)}string(e){const r=Vy(e);return r!==0?this.uint32(r)._push(Mf,r,e):this._push(hi,1,0)}fork(){return this.states=new Jy(this),this.head=this.tail=new _n(fi,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new _n(fi,0,0),this.len=0),this}ldelim(){const e=this.head,r=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=r,this.len+=n),this}finish(){let e=this.head.next;const r=eb(this.len);let n=0;for(;e!=null;)e.fn(e.val,r,n),n+=e.len,e=e.next;return r}}function hi(t,e,r){e[r]=t&255}function tb(t,e,r){for(;t>127;)e[r++]=t&127|128,t>>>=7;e[r]=t}class rb extends _n{next;constructor(e,r){super(tb,e,r),this.next=void 0}}function Eo(t,e,r){for(;t.hi!==0;)e[r++]=t.lo&127|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[r++]=t.lo&127|128,t.lo=t.lo>>>7;e[r++]=t.lo}function bn(t,e,r){e[r]=t&255,e[r+1]=t>>>8&255,e[r+2]=t>>>16&255,e[r+3]=t>>>24}function nb(t,e,r){e.set(t,r)}globalThis.Buffer!=null&&(va.prototype.bytes=function(t){const e=t.length>>>0;return this.uint32(e),e>0&&this._push(ob,e,t),this},va.prototype.string=function(t){const e=globalThis.Buffer.byteLength(t);return this.uint32(e),e>0&&this._push(sb,e,t),this});function ob(t,e,r){e.set(t,r)}function sb(t,e,r){t.length<40?Mf(t,e,r):e.utf8Write!=null?e.utf8Write(t,r):e.set(we(t),r)}function ib(){return new va}function js(t,e){const r=ib();return e.encode(t,r,{lengthDelimited:!1}),r.finish()}var as;(function(t){t[t.VARINT=0]="VARINT",t[t.BIT64=1]="BIT64",t[t.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",t[t.START_GROUP=3]="START_GROUP",t[t.END_GROUP=4]="END_GROUP",t[t.BIT32=5]="BIT32"})(as||(as={}));function jf(t,e,r,n){return{name:t,type:e,encode:r,decode:n}}function ab(t){function e(o){if(t[o.toString()]==null)throw new Error("Invalid enum value");return t[o]}const r=function(s,i){const a=e(s);i.int32(a)},n=function(s){const i=s.int32();return e(i)};return jf("enum",as.VARINT,r,n)}function Us(t,e){return jf("message",as.LENGTH_DELIMITED,t,e)}class jl extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"}var le;(function(t){t.RSA="RSA",t.Ed25519="Ed25519",t.secp256k1="secp256k1",t.ECDSA="ECDSA"})(le||(le={}));var xa;(function(t){t[t.RSA=0]="RSA",t[t.Ed25519=1]="Ed25519",t[t.secp256k1=2]="secp256k1",t[t.ECDSA=3]="ECDSA"})(xa||(xa={}));(function(t){t.codec=()=>ab(xa)})(le||(le={}));var ur;(function(t){let e;t.codec=()=>(e==null&&(e=Us((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.Type!=null&&(n.uint32(8),le.codec().encode(r.Type,n)),r.Data!=null&&(n.uint32(18),n.bytes(r.Data)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.Type=le.codec().decode(r);break}case 2:{s.Data=r.bytes();break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>js(r,t.codec()),t.decode=(r,n)=>Ms(r,t.codec(),n)})(ur||(ur={}));var cs;(function(t){let e;t.codec=()=>(e==null&&(e=Us((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.Type!=null&&(n.uint32(8),le.codec().encode(r.Type,n)),r.Data!=null&&(n.uint32(18),n.bytes(r.Data)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.Type=le.codec().decode(r);break}case 2:{s.Data=r.bytes();break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>js(r,t.codec()),t.decode=(r,n)=>Ms(r,t.codec(),n)})(cs||(cs={}));const Uf=uf;class $f{type="RSA";jwk;_raw;_multihash;constructor(e,r){this.jwk=e,this._multihash=r}get raw(){return this._raw==null&&(this._raw=qf(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ce.createV1(114,this._multihash)}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}verify(e,r,n){return Sb(this.jwk,r,e,n)}}class cb{type="RSA";jwk;_raw;publicKey;constructor(e,r){this.jwk=e,this.publicKey=r}get raw(){return this._raw==null&&(this._raw=hb(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}sign(e,r){return xb(this.jwk,e,r)}}const lb=8192,Hf=18,db=1062,ub=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function fb(t){return{n:Q(t[1],"base64url"),e:Q(t[2],"base64url"),d:Q(t[3],"base64url"),p:Q(t[4],"base64url"),q:Q(t[5],"base64url"),dp:Q(t[6],"base64url"),dq:Q(t[7],"base64url"),qi:Q(t[8],"base64url"),kty:"RSA"}}function hb(t){if(t.n==null||t.e==null||t.d==null||t.p==null||t.q==null||t.dp==null||t.dq==null||t.qi==null)throw new ot("JWK was missing components");return St([He(Uint8Array.from([0])),He(we(t.n,"base64url")),He(we(t.e,"base64url")),He(we(t.d,"base64url")),He(we(t.p,"base64url")),He(we(t.q,"base64url")),He(we(t.dp,"base64url")),He(we(t.dq,"base64url")),He(we(t.qi,"base64url"))]).subarray()}function pb(t){const e=ln(t[1],{offset:0});return{kty:"RSA",n:Q(e[0],"base64url"),e:Q(e[1],"base64url")}}function qf(t){if(t.n==null||t.e==null)throw new ot("JWK was missing components");return St([ub,dc(St([He(we(t.n,"base64url")),He(we(t.e,"base64url"))]))]).subarray()}function gb(t){const e=ln(t);return mb(e)}function mb(t){const e=fb(t);return bb(e)}function wb(t,e){if(t.byteLength>=db)throw new $u("Key size is too large");const r=ln(t,{offset:0});return yb(r,t,e)}function yb(t,e,r){const n=pb(t);if(r==null){const o=Uf(ur.encode({Type:le.RSA,Data:e}));r=oo(Hf,o)}return new $f(n,r)}function bb(t){if(Eb(t)>lb)throw new ot("Key size is too large");const e=vb(t),r=Uf(ur.encode({Type:le.RSA,Data:qf(e.publicKey)})),n=oo(Hf,r);return new cb(e.privateKey,new $f(e.publicKey,n))}function vb(t){if(t==null)throw new ot("Missing key parameter");return{privateKey:t,publicKey:{kty:t.kty,n:t.n,e:t.e}}}async function xb(t,e,r){const n=await Ct.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);r?.signal?.throwIfAborted();const o=await Ct.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return r?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Sb(t,e,r,n){const o=await Ct.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();const s=await Ct.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,r instanceof Uint8Array?r:r.subarray());return n?.signal?.throwIfAborted(),s}function Eb(t){if(t.kty!=="RSA")throw new ot("invalid key type");if(t.n==null)throw new ot("invalid key modulus");return we(t.n,"base64url").length*8}class Kf extends af{constructor(e,r){super(),this.finished=!1,this.destroyed=!1,of(e);const n=uc(r);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?e.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),Qr(s)}update(e){return ts(this),this.iHash.update(e),this}digestInto(e){ts(this),mr(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:r,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const zf=(t,e,r)=>new Kf(t,e).update(r).digest();zf.create=(t,e)=>new Kf(t,e);const Ul=(t,e)=>(t+(t>=0?e:-e)/Wf)/e;function Ab(t,e,r){const[[n,o],[s,i]]=e,a=Ul(i*t,r),c=Ul(-o*t,r);let l=t-a*n-c*s,d=-a*o-c*i;const u=l<bt,f=d<bt;u&&(l=-l),f&&(d=-d);const h=co(Math.ceil(pf(r)/2))+Kr;if(l<bt||l>=h||d<bt||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Sa(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function pi(t,e){const r={};for(let n of Object.keys(e))r[n]=t[n]===void 0?e[n]:t[n];return dr(r.lowS,"lowS"),dr(r.prehash,"prehash"),r.format!==void 0&&Sa(r.format),r}class kb extends Error{constructor(e=""){super(e)}}const wt={Err:kb,_tlv:{encode:(t,e)=>{const{Err:r}=wt;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length&1)throw new r("tlv.encode: unpadded data");const n=e.length/2,o=xo(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");const s=n>127?xo(o.length/2|128):"";return xo(t)+s+o+e},decode(t,e){const{Err:r}=wt;let n=0;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length<2||e[n++]!==t)throw new r("tlv.decode: wrong tlv");const o=e[n++],s=!!(o&128);let i=0;if(!s)i=o;else{const c=o&127;if(!c)throw new r("tlv.decode(long): indefinite length not supported");if(c>4)throw new r("tlv.decode(long): byte length is too big");const l=e.subarray(n,n+c);if(l.length!==c)throw new r("tlv.decode: length bytes not complete");if(l[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(const d of l)i=i<<8|d;if(n+=c,i<128)throw new r("tlv.decode(long): not minimal encoding")}const a=e.subarray(n,n+i);if(a.length!==i)throw new r("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(t){const{Err:e}=wt;if(t<bt)throw new e("integer: negative integers are not allowed");let r=xo(t);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return r},decode(t){const{Err:e}=wt;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Os(t)}},toSig(t){const{Err:e,_int:r,_tlv:n}=wt,o=fe("signature",t),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:a,l:c}=n.decode(2,s),{v:l,l:d}=n.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:r.decode(a),s:r.decode(l)}},hexFromSig(t){const{_tlv:e,_int:r}=wt,n=e.encode(2,r.encode(t.r)),o=e.encode(2,r.encode(t.s)),s=n+o;return e.encode(48,s)}},bt=BigInt(0),Kr=BigInt(1),Wf=BigInt(2),Ao=BigInt(3),Cb=BigInt(4);function Dr(t,e){const{BYTES:r}=t;let n;if(typeof e=="bigint")n=e;else{let o=fe("private key",e);try{n=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${r}, got ${typeof e}`)}}if(!t.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function Ib(t,e={}){const r=Pf("weierstrass",t,e),{Fp:n,Fn:o}=r;let s=r.CURVE;const{h:i,n:a}=s;lo(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Gf(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(B,v,k){const{x:P,y:N}=v.toAffine(),j=n.toBytes(P);if(dr(k,"isCompressed"),k){d();const U=!n.isOdd(N);return lt(Vf(U),j)}else return lt(Uint8Array.of(4),j,n.toBytes(N))}function f(B){rt(B,void 0,"Point");const{publicKey:v,publicKeyUncompressed:k}=l,P=B.length,N=B[0],j=B.subarray(1);if(P===v&&(N===2||N===3)){const U=n.fromBytes(j);if(!n.isValid(U))throw new Error("bad point: is not on curve, wrong x");const O=m(U);let _;try{_=n.sqrt(O)}catch(H){const q=H instanceof Error?": "+H.message:"";throw new Error("bad point: is not on curve, sqrt error"+q)}d();const D=n.isOdd(_);return(N&1)===1!==D&&(_=n.neg(_)),{x:U,y:_}}else if(P===k&&N===4){const U=n.BYTES,O=n.fromBytes(j.subarray(0,U)),_=n.fromBytes(j.subarray(U,U*2));if(!y(O,_))throw new Error("bad point: is not on curve");return{x:O,y:_}}else throw new Error(`bad point: got length ${P}, expected compressed=${v} or uncompressed=${k}`)}const h=e.toBytes||u,g=e.fromBytes||f;function m(B){const v=n.sqr(B),k=n.mul(v,B);return n.add(n.add(k,n.mul(B,s.a)),s.b)}function y(B,v){const k=n.sqr(v),P=m(B);return n.eql(k,P)}if(!y(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const w=n.mul(n.pow(s.a,Ao),Cb),C=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(w,C)))throw new Error("bad curve params: a or b");function b(B,v,k=!1){if(!n.isValid(v)||k&&n.is0(v))throw new Error(`bad point coordinate ${B}`);return v}function A(B){if(!(B instanceof x))throw new Error("ProjectivePoint expected")}function L(B){if(!c||!c.basises)throw new Error("no endo");return Ab(B,c.basises,o.ORDER)}const I=ns((B,v)=>{const{X:k,Y:P,Z:N}=B;if(n.eql(N,n.ONE))return{x:k,y:P};const j=B.is0();v==null&&(v=j?n.ONE:n.inv(N));const U=n.mul(k,v),O=n.mul(P,v),_=n.mul(N,v);if(j)return{x:n.ZERO,y:n.ZERO};if(!n.eql(_,n.ONE))throw new Error("invZ was invalid");return{x:U,y:O}}),R=ns(B=>{if(B.is0()){if(e.allowInfinityPoint&&!n.is0(B.Y))return;throw new Error("bad point: ZERO")}const{x:v,y:k}=B.toAffine();if(!n.isValid(v)||!n.isValid(k))throw new Error("bad point: x or y not field elements");if(!y(v,k))throw new Error("bad point: equation left != right");if(!B.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function E(B,v,k,P,N){return k=new x(n.mul(k.X,B),k.Y,k.Z),v=os(P,v),k=os(N,k),v.add(k)}class x{constructor(v,k,P){this.X=b("x",v),this.Y=b("y",k,!0),this.Z=b("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(v){const{x:k,y:P}=v||{};if(!v||!n.isValid(k)||!n.isValid(P))throw new Error("invalid affine point");if(v instanceof x)throw new Error("projective point not allowed");return n.is0(k)&&n.is0(P)?x.ZERO:new x(k,P,n.ONE)}static fromBytes(v){const k=x.fromAffine(g(rt(v,void 0,"point")));return k.assertValidity(),k}static fromHex(v){return x.fromBytes(fe("pointHex",v))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=8,k=!0){return T.createCache(this,v),k||this.multiply(Ao),this}assertValidity(){R(this)}hasEvenY(){const{y:v}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(v)}equals(v){A(v);const{X:k,Y:P,Z:N}=this,{X:j,Y:U,Z:O}=v,_=n.eql(n.mul(k,O),n.mul(j,N)),D=n.eql(n.mul(P,O),n.mul(U,N));return _&&D}negate(){return new x(this.X,n.neg(this.Y),this.Z)}double(){const{a:v,b:k}=s,P=n.mul(k,Ao),{X:N,Y:j,Z:U}=this;let O=n.ZERO,_=n.ZERO,D=n.ZERO,F=n.mul(N,N),H=n.mul(j,j),q=n.mul(U,U),K=n.mul(N,j);return K=n.add(K,K),D=n.mul(N,U),D=n.add(D,D),O=n.mul(v,D),_=n.mul(P,q),_=n.add(O,_),O=n.sub(H,_),_=n.add(H,_),_=n.mul(O,_),O=n.mul(K,O),D=n.mul(P,D),q=n.mul(v,q),K=n.sub(F,q),K=n.mul(v,K),K=n.add(K,D),D=n.add(F,F),F=n.add(D,F),F=n.add(F,q),F=n.mul(F,K),_=n.add(_,F),q=n.mul(j,U),q=n.add(q,q),F=n.mul(q,K),O=n.sub(O,F),D=n.mul(q,H),D=n.add(D,D),D=n.add(D,D),new x(O,_,D)}add(v){A(v);const{X:k,Y:P,Z:N}=this,{X:j,Y:U,Z:O}=v;let _=n.ZERO,D=n.ZERO,F=n.ZERO;const H=s.a,q=n.mul(s.b,Ao);let K=n.mul(k,j),W=n.mul(P,U),V=n.mul(N,O),G=n.add(k,P),X=n.add(j,U);G=n.mul(G,X),X=n.add(K,W),G=n.sub(G,X),X=n.add(k,N);let Z=n.add(j,O);return X=n.mul(X,Z),Z=n.add(K,V),X=n.sub(X,Z),Z=n.add(P,N),_=n.add(U,O),Z=n.mul(Z,_),_=n.add(W,V),Z=n.sub(Z,_),F=n.mul(H,X),_=n.mul(q,V),F=n.add(_,F),_=n.sub(W,F),F=n.add(W,F),D=n.mul(_,F),W=n.add(K,K),W=n.add(W,K),V=n.mul(H,V),X=n.mul(q,X),W=n.add(W,V),V=n.sub(K,V),V=n.mul(H,V),X=n.add(X,V),K=n.mul(W,X),D=n.add(D,K),K=n.mul(Z,X),_=n.mul(G,_),_=n.sub(_,K),K=n.mul(G,W),F=n.mul(Z,F),F=n.add(F,K),new x(_,D,F)}subtract(v){return this.add(v.negate())}is0(){return this.equals(x.ZERO)}multiply(v){const{endo:k}=e;if(!o.isValidNot0(v))throw new Error("invalid scalar: out of range");let P,N;const j=U=>T.cached(this,U,O=>rr(x,O));if(k){const{k1neg:U,k1:O,k2neg:_,k2:D}=L(v),{p:F,f:H}=j(O),{p:q,f:K}=j(D);N=H.add(K),P=E(k.beta,F,q,U,_)}else{const{p:U,f:O}=j(v);P=U,N=O}return rr(x,[P,N])[0]}multiplyUnsafe(v){const{endo:k}=e,P=this;if(!o.isValid(v))throw new Error("invalid scalar: out of range");if(v===bt||P.is0())return x.ZERO;if(v===Kr)return P;if(T.hasCache(this))return this.multiply(v);if(k){const{k1neg:N,k1:j,k2neg:U,k2:O}=L(v),{p1:_,p2:D}=cy(x,P,j,O);return E(k.beta,_,D,N,U)}else return T.unsafe(P,v)}multiplyAndAddUnsafe(v,k,P){const N=this.multiplyUnsafe(k).add(v.multiplyUnsafe(P));return N.is0()?void 0:N}toAffine(v){return I(this,v)}isTorsionFree(){const{isTorsionFree:v}=e;return i===Kr?!0:v?v(x,this):T.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:v}=e;return i===Kr?this:v?v(x,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(v=!0){return dr(v,"isCompressed"),this.assertValidity(),h(x,this,v)}toHex(v=!0){return sr(this.toBytes(v))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(v=!0){return this.toBytes(v)}_setWindowSize(v){this.precompute(v)}static normalizeZ(v){return rr(x,v)}static msm(v,k){return Tf(x,o,v,k)}static fromPrivateKey(v){return x.BASE.multiply(Dr(o,v))}}x.BASE=new x(s.Gx,s.Gy,n.ONE),x.ZERO=new x(n.ZERO,n.ONE,n.ZERO),x.Fp=n,x.Fn=o;const S=o.BITS,T=new Rf(x,e.endo?Math.ceil(S/2):S);return x.BASE.precompute(8),x}function Vf(t){return Uint8Array.of(t?2:3)}function Gf(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function Rb(t,e={}){const{Fn:r}=t,n=e.randomBytes||fc,o=Object.assign(Gf(t.Fp,r),{seed:kf(r.ORDER)});function s(h){try{return!!Dr(r,h)}catch{return!1}}function i(h,g){const{publicKey:m,publicKeyUncompressed:y}=o;try{const w=h.length;return g===!0&&w!==m||g===!1&&w!==y?!1:!!t.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return sy(rt(h,o.seed,"seed"),r.ORDER)}function c(h,g=!0){return t.BASE.multiply(Dr(r,h)).toBytes(g)}function l(h){const g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof t)return!0;const{secretKey:g,publicKey:m,publicKeyUncompressed:y}=o;if(r.allowedLengths||g===m)return;const w=fe("key",h).length;return w===m||w===y}function u(h,g,m=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");const y=Dr(r,h);return t.fromHex(g).multiply(y).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:t,utils:{isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>Dr(r,h),precompute(h=8,g=t.BASE){return g.precompute(h,!1)}},lengths:o})}function Tb(t,e,r={}){of(e),lo(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const n=r.randomBytes||fc,o=r.hmac||((k,...P)=>zf(e,k,lt(...P))),{Fp:s,Fn:i}=t,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=Rb(t,r),g={prehash:!1,lowS:typeof r.lowS=="boolean"?r.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function y(k){const P=a>>Kr;return k>P}function w(k,P){if(!i.isValidNot0(P))throw new Error(`invalid signature ${k}: out of range 1..Point.Fn.ORDER`);return P}function C(k,P){Sa(P);const N=h.signature,j=P==="compact"?N:P==="recovered"?N+1:void 0;return rt(k,j,`${P} signature`)}class b{constructor(P,N,j){this.r=w("r",P),this.s=w("s",N),j!=null&&(this.recovery=j),Object.freeze(this)}static fromBytes(P,N=m){C(P,N);let j;if(N==="der"){const{r:D,s:F}=wt.toSig(rt(P));return new b(D,F)}N==="recovered"&&(j=P[0],N="compact",P=P.subarray(1));const U=i.BYTES,O=P.subarray(0,U),_=P.subarray(U,U*2);return new b(i.fromBytes(O),i.fromBytes(_),j)}static fromHex(P,N){return this.fromBytes(rs(P),N)}addRecoveryBit(P){return new b(this.r,this.s,P)}recoverPublicKey(P){const N=s.ORDER,{r:j,s:U,recovery:O}=this;if(O==null||![0,1,2,3].includes(O))throw new Error("recovery id invalid");if(a*Wf<N&&O>1)throw new Error("recovery id is ambiguous for h>1 curve");const D=O===2||O===3?j+a:j;if(!s.isValid(D))throw new Error("recovery id 2 or 3 invalid");const F=s.toBytes(D),H=t.fromBytes(lt(Vf((O&1)===0),F)),q=i.inv(D),K=L(fe("msgHash",P)),W=i.create(-K*q),V=i.create(U*q),G=t.BASE.multiplyUnsafe(W).add(H.multiplyUnsafe(V));if(G.is0())throw new Error("point at infinify");return G.assertValidity(),G}hasHighS(){return y(this.s)}toBytes(P=m){if(Sa(P),P==="der")return rs(wt.hexFromSig(this));const N=i.toBytes(this.r),j=i.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return lt(Uint8Array.of(this.recovery),N,j)}return lt(N,j)}toHex(P){return sr(this.toBytes(P))}assertValidity(){}static fromCompact(P){return b.fromBytes(fe("sig",P),"compact")}static fromDER(P){return b.fromBytes(fe("sig",P),"der")}normalizeS(){return this.hasHighS()?new b(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return sr(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return sr(this.toBytes("compact"))}}const A=r.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");const N=Os(P),j=P.length*8-c;return j>0?N>>BigInt(j):N},L=r.bits2int_modN||function(P){return i.create(A(P))},I=co(c);function R(k){return wa("num < 2^"+c,k,bt,I),i.toBytes(k)}function E(k,P){return rt(k,void 0,"message"),P?rt(e(k),void 0,"prehashed message"):k}function x(k,P,N){if(["recovered","canonical"].some(W=>W in N))throw new Error("sign() legacy options not supported");const{lowS:j,prehash:U,extraEntropy:O}=pi(N,g);k=E(k,U);const _=L(k),D=Dr(i,P),F=[R(D),R(_)];if(O!=null&&O!==!1){const W=O===!0?n(h.secretKey):O;F.push(fe("extraEntropy",W))}const H=lt(...F),q=_;function K(W){const V=A(W);if(!i.isValidNot0(V))return;const G=i.inv(V),X=t.BASE.multiply(V).toAffine(),Z=i.create(X.x);if(Z===bt)return;const ae=i.create(G*i.create(q+Z*D));if(ae===bt)return;let ke=(X.x===Z?0:2)|Number(X.y&Kr),Oe=ae;return j&&y(ae)&&(Oe=i.neg(ae),ke^=1),new b(Z,Oe,ke)}return{seed:H,k2sig:K}}function S(k,P,N={}){k=fe("message",k);const{seed:j,k2sig:U}=x(k,P,N);return Xw(e.outputLen,i.BYTES,o)(j,U)}function T(k){let P;const N=typeof k=="string"||ao(k),j=!N&&k!==null&&typeof k=="object"&&typeof k.r=="bigint"&&typeof k.s=="bigint";if(!N&&!j)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(j)P=new b(k.r,k.s);else if(N){try{P=b.fromBytes(fe("sig",k),"der")}catch(U){if(!(U instanceof wt.Err))throw U}if(!P)try{P=b.fromBytes(fe("sig",k),"compact")}catch{return!1}}return P||!1}function B(k,P,N,j={}){const{lowS:U,prehash:O,format:_}=pi(j,g);if(N=fe("publicKey",N),P=E(fe("message",P),O),"strict"in j)throw new Error("options.strict was renamed to lowS");const D=_===void 0?T(k):b.fromBytes(fe("sig",k),_);if(D===!1)return!1;try{const F=t.fromBytes(N);if(U&&D.hasHighS())return!1;const{r:H,s:q}=D,K=L(P),W=i.inv(q),V=i.create(K*W),G=i.create(H*W),X=t.BASE.multiplyUnsafe(V).add(F.multiplyUnsafe(G));return X.is0()?!1:i.create(X.x)===H}catch{return!1}}function v(k,P,N={}){const{prehash:j}=pi(N,g);return P=E(P,j),b.fromBytes(k,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:t,sign:S,verify:B,recoverPublicKey:v,Signature:b,hash:e})}function Pb(t){const e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},r=t.Fp;let n=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0;const o=wr(e.n,{BITS:t.nBitLength,allowedLengths:n,modFromBytes:t.wrapPrivateKey}),s={Fp:r,Fn:o,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:s}}function Nb(t){const{CURVE:e,curveOpts:r}=Pb(t),n={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:r,hash:t.hash,ecdsaOpts:n}}function Lb(t,e){const r=e.Point;return Object.assign({},e,{ProjectivePoint:r,CURVE:Object.assign({},t,Ef(r.Fn.ORDER,r.Fn.BITS))})}function Bb(t){const{CURVE:e,curveOpts:r,hash:n,ecdsaOpts:o}=Nb(t),s=Ib(e,r),i=Tb(s,n,o);return Lb(t,i)}function _b(t,e){const r=n=>Bb({...t,hash:n});return{...r(e),create:r}}const Ec={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Db={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},$l=BigInt(2);function Ob(t){const e=Ec.p,r=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=ue(d,r,e)*d%e,f=ue(u,r,e)*d%e,h=ue(f,$l,e)*l%e,g=ue(h,o,e)*h%e,m=ue(g,s,e)*g%e,y=ue(m,a,e)*m%e,w=ue(y,c,e)*y%e,C=ue(w,a,e)*m%e,b=ue(C,r,e)*d%e,A=ue(b,i,e)*g%e,L=ue(A,n,e)*l%e,I=ue(L,$l,e);if(!Ea.eql(Ea.sqr(I),t))throw new Error("Cannot find square root");return I}const Ea=wr(Ec.p,{sqrt:Ob}),Kt=_b({...Ec,Fp:Ea,lowS:!0,endo:Db},uf);function Fb(t,e,r){const n=lc.digest(e instanceof Uint8Array?e:e.subarray());if(Fs(n))return n.then(({digest:o})=>(r?.signal?.throwIfAborted(),Kt.sign(o,t).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new Ol(String(o))});try{return Kt.sign(n.digest,t).toDERRawBytes()}catch(o){throw new Ol(String(o))}}function Mb(t,e,r,n){const o=lc.digest(r instanceof Uint8Array?r:r.subarray());if(Fs(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),Kt.verify(e,s,t))).catch(s=>{throw s.name==="AbortError"?s:new Fl(String(s))});try{return n?.signal?.throwIfAborted(),Kt.verify(e,o.digest,t)}catch(s){throw new Fl(String(s))}}class Xf{type="secp256k1";raw;_key;constructor(e){this._key=qb(e),this.raw=$b(this._key)}toMultihash(){return so.digest($s(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}verify(e,r,n){return Mb(this._key,r,e,n)}}class jb{type="secp256k1";raw;publicKey;constructor(e,r){this.raw=Hb(e),this.publicKey=new Xf(r??Kb(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}sign(e,r){return Fb(this.raw,e,r)}}function Ub(t){return new jb(t)}function Yf(t){return new Xf(t)}function $b(t){return Kt.ProjectivePoint.fromHex(t).toRawBytes(!0)}function Hb(t){try{return Kt.getPublicKey(t,!0),t}catch(e){throw new Hu(String(e))}}function qb(t){try{return Kt.ProjectivePoint.fromHex(t),t}catch(e){throw new $u(String(e))}}function Kb(t){try{return Kt.getPublicKey(t,!0)}catch(e){throw new Hu(String(e))}}async function zb(t,e){return _y()}function Aa(t,e){const{Type:r,Data:n}=ur.decode(t),o=n??new Uint8Array;switch(r){case le.RSA:return wb(o,e);case le.Ed25519:return _f(o);case le.secp256k1:return Yf(o);case le.ECDSA:return rf(o);default:throw new Ls}}function Wb(t){const{Type:e,Data:r}=ur.decode(t.digest),n=r??new Uint8Array;switch(e){case le.Ed25519:return _f(n);case le.secp256k1:return Yf(n);case le.ECDSA:return rf(n);default:throw new Ls}}function $s(t){return ur.encode({Type:le[t.type],Data:t.raw})}function Vb(t){const e=cs.decode(t),r=e.Data??new Uint8Array;switch(e.Type){case le.RSA:return gb(r);case le.Ed25519:return By(r);case le.secp256k1:return Ub(r);case le.ECDSA:return Ew(r);default:throw new Ls}}function Gb(t){return cs.encode({Type:le[t.type],Data:t.raw})}const Zf=Symbol.for("nodejs.util.inspect.custom"),Xb=114;class Ac{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[qu]=!0;toString(){return this.string==null&&(this.string=Le.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ce.createV1(Xb,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return st(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return st(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[Zf](){return`PeerId(${this.toString()})`}}class Jf extends Ac{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}}class Qf extends Ac{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}}class eh extends Ac{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}}const Yb=2336;class th{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=so.digest(we(this.url))}[Zf](){return`PeerId(${this.url})`}[qu]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ce.createV1(Yb,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=Q(e)),e.toString()===this.toString())}}const Zb=114,Hl=2336;function Jb(t,e){let r;if(t.charAt(0)==="1"||t.charAt(0)==="Q")r=Wu(Le.decode(`z${t}`));else{if(t.startsWith("k51qzi5uqu5")||t.startsWith("kzwfwjn5ji4")||t.startsWith("k2k4r8")||t.startsWith("bafz"))return Qb(ce.parse(t));throw new ot('Please pass a multibase decoder for strings that do not start with "1" or "Q"')}return rh(r)}function tn(t){if(t.type==="Ed25519")return new Qf({multihash:t.toCID().multihash,publicKey:t});if(t.type==="secp256k1")return new eh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="RSA")return new Jf({multihash:t.toCID().multihash,publicKey:t});throw new Ls}function rh(t){if(t0(t))return new Jf({multihash:t});if(e0(t))try{const e=Wb(t);if(e.type==="Ed25519")return new Qf({multihash:t,publicKey:e});if(e.type==="secp256k1")return new eh({multihash:t,publicKey:e})}catch{const r=Q(t.digest);return new th(new URL(r))}throw new Dg("Supplied PeerID Multihash is invalid")}function Qb(t){if(t?.multihash==null||t.version==null||t.version===1&&t.code!==Zb&&t.code!==Hl)throw new _g("Supplied PeerID CID is invalid");if(t.code===Hl){const e=Q(t.multihash.digest);return new th(new URL(e))}return rh(t.multihash)}function e0(t){return t.code===so.code}function t0(t){return t.code===lc.code}class nh extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}}class r0 extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}}class vn extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}}class ql extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}}class n0 extends Event{data;constructor(e,r){super("message",r),this.data=e}}class kc extends Event{error;local;constructor(e,r,n){super("close",n),this.error=r,this.local=e}}class o0 extends kc{constructor(e,r){super(!0,e,r)}}class s0 extends kc{constructor(e,r){super(!1,e,r)}}const i0=t=>t/2**32|0,a0=t=>t>>>0;function c0(t,e,r,n){const o=i0(r),s=a0(r);t.setUint32(e,n?s:o,n),t.setUint32(e+4,n?o:s,n)}function ka(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Ca=t=>t?`"${t}" `:"";function It(t,e=""){if(typeof t!="number")throw new TypeError(Ca(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Ca(e)+"expected integer >= 0, got "+t);return t}function Rt(t,e,r=""){if(ka(t)&&(e===void 0||t.length===e))return t;e!==void 0&&It(e,"length");const n=ka(t),o=e!==void 0?` of length ${e}`:"",s=n?`length=${t.length}`:`type=${typeof t}`,i=Ca(r)+"expected Uint8Array"+o+", got "+s;throw n?new RangeError(i):new TypeError(i)}function Cc(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(It(t.outputLen),It(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const l0=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Kl=(t,e)=>{l0(t,e);const r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function ls(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function oh(t,e){Rt(t,void 0,"output");const r=e.outputLen;if(!(t.length>=r))throw new RangeError('"output" expected length >= '+r)}function aC(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function ar(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function gi(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function at(t,e){return t<<32-e|t>>>e}function cC(t,e){return t<<e|t>>>32-e>>>0}const d0=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function u0(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function f0(t){for(let e=0;e<t.length;e++)t[e]=u0(t[e]);return t}const lC=d0?t=>t:f0,sh=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",h0=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Ic(t){if(Rt(t),sh)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=h0[t[r]];return e}function zl(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function ih(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(sh)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,r=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){const i=zl(t.charCodeAt(s)),a=zl(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function p0(t){const e=globalThis;if(typeof e.scheduler?.yield=="function"){const r=e.scheduler.yield();return t&&r.catch(t),r}return new Promise(r=>e.setTimeout(r,0))}async function dC(t,e,r,n){if(It(t,"iters"),It(e,"tick"),typeof r!="function")throw new TypeError("callback must be a function");let o=Date.now();for(let s=0;s<t;s++){r(s);const i=Date.now()-o;i>=0&&i<e||(await p0(n),o=Date.now())}}function g0(t){if(typeof t!="string")throw new TypeError("string expected");const e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{ar(e)}}function uC(t,e=""){return typeof t=="string"?g0(t):Rt(t,void 0,e)}function m0(t,e,r="opts"){return Kl(t,"defaults"),e!==void 0&&Kl(e,r),Object.assign(Object.create(null),t,e)}function w0(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=m0({},e,"info");const r=(o,s)=>t(s).update(o).digest(),n=t(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.canXOF=n.canXOF,r.create=o=>t(o),Object.assign(r,e),Object.freeze(r)}function y0(t=32){It(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const b0=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function v0(t,e,r){return t&e^~t&r}function x0(t,e,r){return t&e^t&r^e&r}class S0{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,r,n,o){this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=gi(this.buffer)}update(e){ls(this),Rt(e);const{view:r,buffer:n,blockLen:o}=this,s=e.length;let i=!1;for(let a=0;a<s;){const c=Math.min(o-this.pos,s-a);if(c===o){const l=gi(e);for(;o<=s-a;a+=o)this.process(l,a);i=!0;continue}n.set(a===0&&c===s?e:e.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===o&&(this.process(r,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){ls(this),oh(e,this),this.finished=!0;const{buffer:r,view:n,blockLen:o,isLE:s}=this;let{pos:i}=this;r[i++]=128,r.fill(0,i),this.padOffset>o-i&&(this.process(n,0),r.fill(0)),c0(n,o-8,this.length*8,s),this.process(n,0),this.roundClean();const a=e===r?n:gi(e),c=this.outputLen,l=c/4,d=this.get();if(c%4||l>d.length)throw new Error("invalid outputLen");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneIntoMeta(e){const{buffer:r,length:n,finished:o,destroyed:s,pos:i}=this;return e.destroyed=s,e.finished=o,e.length=n,e.pos=i,i&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const E0=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),A0=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),_t=new Uint32Array(64);class k0 extends S0{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,r){super(64,e,8,!1),this.A=r[0]|0,this.B=r[1]|0,this.C=r[2]|0,this.D=r[3]|0,this.E=r[4]|0,this.F=r[5]|0,this.G=r[6]|0,this.H=r[7]|0}get(){const{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,r){for(let u=0;u<16;u++,r+=4)_t[u]=e.getUint32(r,!1);for(let u=16;u<64;u++){const f=_t[u-15],h=_t[u-2],g=at(f,7)^at(f,18)^f>>>3,m=at(h,17)^at(h,19)^h>>>10;_t[u]=m+_t[u-7]+g+_t[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=at(a,6)^at(a,11)^at(a,25),h=d+f+v0(a,c,l)+A0[u]+_t[u]|0,m=(at(n,2)^at(n,13)^at(n,22))+x0(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,o,s,i,a,c,l,d)}roundClean(){ar(_t)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),ar(this.buffer)}}class C0 extends k0{constructor(){super(32,E0)}}const mi=w0(()=>new C0,b0(1));function ah(t,e,r=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let n=0;n<t.length;n++)r(t[n],`${e}[${n}]`);return t}const zr=(t,e,r)=>Rt(t,e,r),ch=It;function Wr(t,e="object"){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`);return t}function $n(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const I0=Ic,R0=t=>ih(t),lh=ka,dh=t=>y0(t),ds=BigInt(0),Wl=BigInt(1),T0=t=>t?`"${t}" `:"";function Hs(t,e=""){if(typeof t!="boolean")throw new TypeError(T0(e)+"expected boolean, got type="+typeof t);return t}function P0(t){if(typeof t=="bigint"){if(!cr(t))throw new RangeError("positive bigint expected, got "+t)}else ch(t);return t}function Ia(t,e=""){if(typeof t!="number"){const r=e&&`"${e}" `;throw new TypeError(r+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const r=e&&`"${e}" `;throw new RangeError(r+"expected safe integer, got "+t)}}function uh(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?ds:BigInt("0x"+t)}function fh(t){return uh(Ic(t))}function us(t){return uh(Ic(Yn(Rt(t)).reverse()))}function hh(t,e){if(It(e),e===0)throw new Error("zero output length is invalid");t=P0(t);const r=e*2,n=t.toString(16);if(n.length>r)throw new RangeError("number is too large");return ih(n.padStart(r,"0"))}function ph(t,e){return hh(t,e).reverse()}function Yn(t){return Uint8Array.from(zr(t))}function cr(t){return typeof t=="bigint"&&ds<=t}function gh(t,e,r){return cr(t)&&cr(e)&&cr(r)&&e<=t&&t<r}function Hn(t,e,r,n){if(!gh(e,r,n))throw new RangeError("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function N0(t){if(t<ds)throw new Error("expected non-negative bigint, got "+t);return t===ds?0:t.toString(2).length}const L0=t=>(Ia(t,"n"),(Wl<<BigInt(t))-Wl);function fs(t,e={},r={},n="object"){Wr(t,n),Wr(e,"fields"),Wr(r,"optFields");function o(i,a,c){const l=n==="object"?`param "${String(i)}"`:`"${n}.${String(i)}"`,d=t[i];if(!Object.hasOwn(t,i)&&(c?d!==void 0:a!=="function"))throw new TypeError(`${l} is invalid: expected own property`);if(c&&d===void 0)return;const u=typeof d;if(u!==a||d===null)throw new TypeError(`${l} is invalid: expected ${a}, got ${u}`)}const s=(i,a)=>Object.entries(i).forEach(([c,l])=>o(c,l,a));s(e,!1),s(r,!0)}const xe=BigInt(0),ie=BigInt(1),nr=BigInt(2),mh=BigInt(3),Rc=BigInt(4),wh=BigInt(5),B0=BigInt(7),yh=BigInt(8),_0=BigInt(9),D0=BigInt(15),bh=BigInt(16),O0=BigInt("0x10000000000000000");function se(t,e){if(e<=xe)throw new Error("mod: expected positive modulus, got "+e);const r=t%e;return r>=xe?r:e+r}function F0(t,e,r){if(r<=ie)throw new Error("pow: expected modulus > 1, got "+r);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<xe)throw new Error("invalid exponent, negatives unsupported");if(e===xe)return ie;if(e===ie)return t;let n=t%r;if(n<xe&&(n+=r),e<O0){let a=ie;for(;e>xe;)e&ie&&(a=a*n%r),n=n*n%r,e>>=ie;return a}const o=[];for(;e>xe;)o.push(Number(e&D0)),e>>=Rc;const s=new Array(16);s[0]=ie,s[1]=n;for(let a=2;a<16;a++)s[a]=s[a-1]*n%r;let i=s[o[o.length-1]];for(let a=o.length-2;a>=0;a--){i=i*i%r,i=i*i%r,i=i*i%r,i=i*i%r;const c=o[a];c!==0&&(i=i*s[c]%r)}return i}function tt(t,e,r){if(r<=ie)throw new Error("pow2: expected modulus > 1, got "+r);if(e<xe)throw new Error("pow2: expected non-negative exponent, got "+e);let n=t;for(;e-- >xe;)n*=n,n%=r;return n}function Vl(t,e){if(t===xe)throw new Error("invert: expected non-zero number");if(e<=ie)throw new Error("invert: expected modulus > 1, got "+e);let r=se(t,e),n=e,o=xe,s=ie;for(;r!==xe;){const a=n/r,c=n-r*a,l=o-s*a;n=r,r=c,o=s,s=l}if(n!==ie)throw new Error("invert: does not exist");return se(o,e)}function Tc(t,e,r){const n=t;if(!n.eql(n.sqr(e),r))throw new Error("Cannot find square root")}function Pc(t,e){if((t&ie)===xe)throw new Error(e+": expected odd modulus, got "+t)}function vh(t,e){const r=t,n=(r.ORDER+ie)/Rc,o=r.pow(e,n);return Tc(r,o,e),o}function M0(t,e){const r=t,n=(r.ORDER-wh)/yh,o=r.mul(e,nr),s=r.pow(o,n),i=r.mul(e,s),a=r.mul(r.mul(i,nr),s),c=r.mul(i,r.sub(a,r.ONE));return Tc(r,c,e),c}function j0(t){const e=Nc(t),r=xh(t),n=r(e,e.neg(e.ONE)),o=r(e,n),s=r(e,e.neg(n)),i=(t+B0)/bh;return((a,c)=>{const l=a;let d=l.pow(c,i),u=l.mul(d,n);const f=l.mul(d,o),h=l.mul(d,s),g=l.eql(l.sqr(u),c),m=l.eql(l.sqr(f),c);d=l.cmov(d,u,g),u=l.cmov(h,f,m);const y=l.eql(l.sqr(u),c),w=l.cmov(d,u,y);return Tc(l,w,c),w})}function xh(t){if(t<mh)throw new Error("sqrt is not defined for small field");Pc(t,"tonelliShanks");let e=t-ie,r=0;for(;e%nr===xe;)e/=nr,r++;let n=nr;const o=Nc(t);for(;hs(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return vh;let s=o.pow(n,e);const i=(e+ie)/nr;return function(c,l){const d=c;if(d.is0(l))return l;if(hs(d,l)!==1)throw new Error("Cannot find square root");let u=r,f=d.mul(d.ONE,s),h=d.pow(l,e),g=d.pow(l,i);for(;!d.eql(h,d.ONE);){if(d.is0(h))throw new Error("Cannot find square root: probably non-prime P");let m=1,y=d.sqr(h);for(;!d.eql(y,d.ONE);)if(m++,y=d.sqr(y),m===u)throw new Error("Cannot find square root");const w=ie<<BigInt(u-m-1),C=d.pow(f,w);u=m,f=d.sqr(C),h=d.mul(h,f),g=d.mul(g,C)}return g}}function U0(t){return Pc(t,"Fp.sqrt"),t%Rc===mh?vh:t%yh===wh?M0:t%bh===_0?j0(t):xh(t)}const $0=(t,e)=>(se(t,e)&ie)===ie,H0=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Zn(t){if(Wr(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);Ia(t.BYTES,"BYTES"),Ia(t.BITS,"BITS");for(const e of H0)$n(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=ie)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function Sh(t,e,r=!1){Zn(t),ah(e,"nums"),Hs(r,"passZero");const n=t,o=new Array(e.length).fill(r?n.ZERO:void 0),s=e.reduce((a,c,l)=>n.is0(c)?a:(o[l]=a,n.mul(a,c)),n.ONE),i=n.inv(s);return e.reduceRight((a,c,l)=>n.is0(c)?a:(o[l]=n.mul(a,o[l]),n.mul(a,c)),i),o}function hs(t,e){Zn(t);const r=t;Pc(r.ORDER,"FpLegendre");const n=(r.ORDER-ie)/nr,o=r.pow(e,n),s=r.eql(o,r.ONE),i=r.eql(o,r.ZERO),a=r.eql(o,r.neg(r.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function q0(t,e){if(e!==void 0&&ch(e),t<=xe)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const r=N0(t);if(e!==void 0&&e<r)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${r})`);const n=e!==void 0?e:r,o=Math.ceil(n/8);return{nBitLength:n,nByteLength:o}}const Gl=new WeakMap;class Xl{ORDER;BITS;BYTES;isLE;ZERO=xe;ONE=ie;_lengths;_mod;constructor(e,r={}){if(e<=ie)throw new Error("invalid field: expected ORDER > 1, got "+e);let n;this.isLE=!1,r!=null&&typeof r=="object"&&(typeof r.BITS=="number"&&(n=r.BITS),typeof r.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:r.sqrt,enumerable:!0}),typeof r.isLE=="boolean"&&(this.isLE=r.isLE),r.allowedLengths&&(this._lengths=Object.freeze(r.allowedLengths.slice())),typeof r.modFromBytes=="boolean"&&(this._mod=r.modFromBytes));const{nBitLength:o,nByteLength:s}=q0(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return se(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return xe<=e&&e<this.ORDER}is0(e){return e===xe}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ie)===ie}neg(e){return se(-e,this.ORDER)}eql(e,r){return e===r}sqr(e){return se(e*e,this.ORDER)}add(e,r){return se(e+r,this.ORDER)}sub(e,r){return se(e-r,this.ORDER)}mul(e,r){return se(e*r,this.ORDER)}pow(e,r){return F0(e,r,this.ORDER)}div(e,r){return se(e*Vl(r,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,r){return e+r}subN(e,r){return e-r}mulN(e,r){return e*r}inv(e){return Vl(e,this.ORDER)}sqrt(e){let r=Gl.get(this);return r||Gl.set(this,r=U0(this.ORDER)),r(this,e)}toBytes(e){return this.isLE?ph(e,this.BYTES):hh(e,this.BYTES)}fromBytes(e,r=!1){zr(e);const{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(e.length<1||!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);const l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?us(e):fh(e);if(a&&(c=se(c,i)),!r&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return Sh(this,e,!0)}cmov(e,r,n){return Hs(n,"condition"),n?r:e}}function Nc(t,e={}){return Object.freeze(Xl.prototype),new Xl(t,e)}const Lc=BigInt(0),Jn=BigInt(1),K0=BigInt(4),wi=16,Yl=128,z0=5,Zl=2**31;function Bc(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);$n(e.fromAffine,"Point.fromAffine"),$n(e.fromBytes,"Point.fromBytes"),$n(e.fromHex,"Point.fromHex"),Wr(e.BASE,"Point.BASE"),Wr(e.ZERO,"Point.ZERO"),Zn(e.Fp),Zn(e.Fn)}function W0(t,e){Bc(t),Eh(e,t);const r=Sh(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function V0(t,e,r=1){if(!Number.isSafeInteger(t)||t<r||t>e)throw new Error("invalid window size, expected ["+r+".."+e+"], got W="+t)}function G0(t,e){const r=t*(4*e+128);if(r>Zl)throw new Error("invalid window size: table would need ~"+Math.ceil(r/2**20)+" MiB, max "+Zl/2**20+" MiB")}function X0(t,e){if(t!==void 0){$n(t,"randomBytes");try{const r=t(e);if(!lh(r)||r.length!==e)return}catch{return}return t}}function Eh(t,e){ah(t,"points"),t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function Y0(t,e,r){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,o)=>{if(!(r===void 0?e.isValid(n):cr(n)&&n<r))throw new Error("invalid scalar at index "+o)})}const Ah=new WeakMap;function yi(t){return Ah.get(t)||1}function Z0(t,e){const r=t.double(),n=[t];for(let o=1;o<e;o++)n.push(n[o-1].add(r));return n}function J0(t,e){const r=2**e,n=r/2,o=BigInt(r-1),s=[];for(;t>Lc;){let i=0;t&Jn&&(i=Number(t&o),i>=n&&(i-=r),t-=BigInt(i)),s.push(i),t>>=Jn}return s}function Q0(t,e,r){const n=2**e,o=n/2,s=BigInt(n-1),i=BigInt(e),a=[];for(let c=0;c<r;c++){let l=Number(t&s);t>>=i,l>o&&(l-=n,t+=Jn),a.push(l)}if(t!==Lc)throw new Error("invalid wnaf");return a}function ev(t,e,r){let n=0;for(const s of r)n=Math.max(n,s.length);let o=t;for(let s=n-1;s>=0;s--){s!==n-1&&(o=o.double());for(let i=0;i<r.length;i++){const a=r[i][s];if(a){const c=e[i][Math.abs(a)-1>>1];o=o.add(a<0?c.negate():c)}}}return o}class tv{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,r){Bc(e),this.randomBytes=X0(r,wi),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,r,n){const o=Math.ceil(n/r)+1,s=2**(r-1),i=[];let a=e;for(let c=0;c<o;c++){let l=a;for(let d=0;d<s;d++)i.push(l),l=l.add(a);a=i[i.length-1].double()}return{W:r,bits:n,windows:o,comp:i}}wnafCachedCT(e,r){const{W:n,windows:o,comp:s}=e,i=2**(n-1),a=Q0(r,n,o);let c=this.ZERO,l=this.BASE;for(let d=0;d<o;d++){const u=a[d],f=d*i,h=Math.abs(u)-1;let g=s[f];for(let y=1;y<i;y++)g=y===h?s[f+y]:g;const m=g.negate();u===0?l=l.add(s[f]):c=c.add(u<0?m:g)}return{p:c,f:l}}getWnafPrecomputes(e,r,n,o){let s=this.wnafPrecomputes.get(r),i=s?.find(a=>a.W===e&&a.bits===n);return i||(i=this.buildWnafTable(r,e,n),typeof o=="function"&&(i={...i,comp:o(i.comp)}),s||(s=[],this.wnafPrecomputes.set(r,s)),s.push(i)),i}assertPoint(e){if(!(e instanceof this.Point))throw new TypeError('"point" expected Point instance, got type='+typeof e)}validateMulInput(e,r){if(this.assertPoint(e),!gh(r,Jn,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,r,n,o){const s=yi(e);return s===1?this.fixedWindowCT(e,r,n):this.wnafCachedCT(this.getWnafPrecomputes(s,e,n,o),r)}mulCT(e,r,n){return this.validateMulInput(e,r),this.runCT(e,r,this.bits,n)}mulCTBlinded(e,r,n){if(this.validateMulInput(e,r),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const o=this.Point.Fn.BITS+Yl,s=this.randomBytes(wi);if(!lh(s)||s.length!==wi)throw new Error("randomBytes returned invalid byte array");s[0]=s[0]&63|128;const i=r+fh(s)*this.Point.Fn.ORDER;return this.runCT(e,i,o,n)}fixedWindowCT(e,r,n){const o=z0,s=1<<o,i=L0(o),a=new Array(s);a[0]=this.ZERO;for(let d=1;d<s;d++)a[d]=a[d-1].add(e);const c=Math.ceil(n/o);let l=this.ZERO;for(let d=c-1;d>=0;d--){if(d!==c-1)for(let h=0;h<o;h++)l=l.double();const u=Number(r>>BigInt(d*o)&i);let f=a[0];for(let h=1;h<s;h++)f=h===u?a[h]:f;l=l.add(f)}return{p:l,f:l}}shouldBlind(e,r){return this.randomBytes===void 0?!1:r===Jn?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,r,n,o){return this.shouldBlind(e,n)?this.mulCTBlinded(e,r,o):this.mulCT(e,r,o)}mulUnsafe(e,r,n){if(this.assertPoint(e),!cr(r))throw new Error("invalid scalar");const o=yi(e);if(o===1||r>=this.Point.Fn.ORDER)return rv(this.Point,[e],[r],!0);const s=this.getWnafPrecomputes(o,e,this.bits,n);return this.wnafCachedCT(s,r).p}setWindowSize(e,r){this.assertPoint(e),V0(r,this.bits);const n=Math.ceil((this.bits+Yl)/r)+1;G0(n*2**(r-1),this.Point.Fp.BYTES),Ah.set(e,r),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return yi(e)!==1}}function rv(t,e,r,n=!1){if(Bc(t),Eh(e,t),Hs(n,"allowOversized"),Y0(r,t.Fn,n?t.Fn.ORDER**K0:void 0),e.length!==r.length)throw new Error("arrays of points and scalars must have equal length");const o=e.map(i=>Z0(i,4)),s=r.map(i=>J0(i,4));return ev(t.ZERO,o,s)}function Jl(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Zn(e),e}else return Nc(t,{isLE:r})}function nv(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);fs(r);for(const c of["p","n","h"]){const l=e[c];if(!(cr(l)&&l!==Lc))throw new Error(`CURVE.${c} must be positive bigint`)}const o=Jl(e.p,r.Fp,n),s=Jl(e.n,r.Fn,n),a=["Gx","Gy","a","d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function ov(t,e){return function(n){const o=t(n);return{secretKey:o,publicKey:e(o)}}}const ko=BigInt(0),Co=BigInt(1),Io=BigInt(2),sv=BigInt(4),Ql=BigInt(8);function iv(t,e,r,n){const o=t.sqr(r),s=t.sqr(n),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function av(t,e={}){fs(e,{},{},"extraOpts");const r=e,n=nv("edwards",t,r,r.FpFnLE),{Fp:o,Fn:s}=n;let i=n.CURVE;const{h:a}=i;if(hs(o,i.a)!==1)throw new Error("edwards: CURVE.a must be a square in Fp for complete addition formulas");if(hs(o,i.d)!==-1)throw new Error("edwards: CURVE.d must be a non-square in Fp for complete addition formulas");fs(r,{},{uvRatio:"function",randomBytes:"function"});const c=r.randomBytes===void 0?dh:r.randomBytes,l=Io<<BigInt(o.BYTES*8)-Co;function d(C){if(!o.isOdd)throw new Error("Field does not have .isOdd()");return o.isOdd(C)}const u=r.uvRatio===void 0?(C,b)=>{try{return{isValid:!0,value:o.sqrt(o.div(C,b))}}catch{return{isValid:!1,value:ko}}}:r.uvRatio;if(!iv(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");const f=o.eql(i.a,o.neg(o.ONE))?C=>o.neg(C):o.eql(i.a,o.ONE)?C=>C:C=>o.mul(i.a,C);function h(C,b,A=!1){const L=A?Co:ko;return Hn("coordinate "+C,b,L,l),b}function g(C){if(!(C instanceof m))throw new Error("EdwardsPoint expected")}class m{static BASE=new m(i.Gx,i.Gy,o.ONE,o.mul(i.Gx,i.Gy));static ZERO=new m(o.ZERO,o.ONE,o.ONE,o.ZERO);static Fp=o;static Fn=s;X;Y;Z;T;constructor(b,A,L,I){this.X=h("x",b),this.Y=h("y",A),this.Z=h("z",L,!0),this.T=h("t",I),Object.freeze(this)}static CURVE(){return i}static fromAffine(b){if(b instanceof m)throw new Error("extended point not allowed");const{x:A,y:L}=b||{};return h("x",A),h("y",L),new m(A,L,o.ONE,o.mul(A,L))}static fromBytes(b,A=!1){const L=o.BYTES,{a:I,d:R}=i;b=Yn(zr(b,L,"point")),Hs(A,"zip215");const E=Yn(b),x=b[L-1];E[L-1]=x&-129;const S=us(E),T=A?l:o.ORDER;Hn("point.y",S,ko,T);const B=o.sqr(S),v=o.sub(B,o.ONE),k=o.sub(o.mulN(R,B),I);let{isValid:P,value:N}=u(v,k);if(!P)throw new Error("bad point: invalid y coordinate");const j=d(N),U=(x&128)!==0;if(!A&&o.is0(N)&&U)throw new Error("bad point: x=0 and x_0=1");return U!==j&&(N=o.neg(N)),m.fromAffine({x:N,y:S})}static fromHex(b,A=!1){return m.fromBytes(R0(b),A)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(b=6,A=!0){return w.setWindowSize(this,b),A||this.multiply(Io),this}assertValidity(){const b=this,{a:A,d:L}=i;if(b.is0())throw new Error("bad point: ZERO");const{X:I,Y:R,Z:E,T:x}=b,S=o.sqr(I),T=o.sqr(R),B=o.sqr(E),v=o.sqr(B),k=o.mul(S,A),P=o.mul(o.add(k,T),B),N=o.add(v,o.mul(L,o.mul(S,T)));if(!o.eql(P,N))throw new Error("bad point: equation left != right (1)");const j=o.mul(I,R),U=o.mul(E,x);if(!o.eql(j,U))throw new Error("bad point: equation left != right (2)")}equals(b){g(b);const{X:A,Y:L,Z:I}=this,{X:R,Y:E,Z:x}=b,S=o.mul(A,x),T=o.mul(R,I),B=o.mul(L,x),v=o.mul(E,I);return o.eql(S,T)&&o.eql(B,v)}is0(){return this.equals(m.ZERO)}negate(){return new m(o.neg(this.X),this.Y,this.Z,o.neg(this.T))}double(){const{X:b,Y:A,Z:L}=this,I=o.sqr(b),R=o.sqr(A),E=o.mul(o.sqr(L),Io),x=f(I),S=o.addN(b,A),T=o.sub(o.subN(o.sqr(S),I),R),B=o.addN(x,R),v=o.subN(B,E),k=o.subN(x,R),P=o.mul(T,v),N=o.mul(B,k),j=o.mul(T,k),U=o.mul(v,B);return new m(P,N,U,j)}add(b){g(b);const{d:A}=i,{X:L,Y:I,Z:R,T:E}=this,{X:x,Y:S,Z:T,T:B}=b,v=o.mul(L,x),k=o.mul(I,S),P=o.mul(o.mulN(E,A),B),N=o.mul(R,T),j=o.sub(o.subN(o.mulN(o.addN(L,I),o.addN(x,S)),v),k),U=o.subN(N,P),O=o.addN(N,P),_=o.sub(k,f(v)),D=o.mul(j,U),F=o.mul(O,_),H=o.mul(j,_),q=o.mul(U,O);return new m(D,F,q,H)}subtract(b){return g(b),this.add(b.negate())}multiply(b){if(!s.isValidNot0(b))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:A,f:L}=w.mulSecret(this,b,a,y);return y([A,L])[0]}multiplyUnsafe(b){if(!s.isValid(b))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return b===ko?m.ZERO:this.is0()||b===Co?this:w.mulUnsafe(this,b,y)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return w.mulUnsafe(this,i.n).is0()}toAffine(b){const A=this;let L=b;if(L!=null&&typeof L!="bigint")throw new TypeError('"invertedZ" expected bigint, got type='+typeof L);const{X:I,Y:R,Z:E}=A,x=A.is0();L==null&&(L=x?o.create(Ql):o.inv(E));const S=o.mul(I,L),T=o.mul(R,L),B=o.mul(E,L);if(x)return{x:o.ZERO,y:o.ONE};if(!o.eql(B,o.ONE))throw new Error("invZ was invalid");return{x:S,y:T}}clearCofactor(){return a===Co?this:a===Io?this.double():a===sv?this.double().double():a===Ql?this.double().double().double():this.multiplyUnsafe(a)}toBytes(){const{x:b,y:A}=this.toAffine(),L=o.toBytes(A);return L[L.length-1]|=d(b)?128:0,L}toHex(){return I0(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const y=C=>W0(m,C),w=new tv(m,c);return w.bits>=6&&m.BASE.precompute(6),Object.freeze(m.prototype),Object.freeze(m),m}const Jt=BigInt(0),Ge=BigInt(1),Ro=BigInt(2);function ed(t,e){return t+e-(e>>Ge<<Ge)}function cv(t){const e=BigInt(6)*t;return(r,n,o)=>{const s=n+o,a=((e+o-n)*r+n)%t;return{x_2:a,x_3:s-a}}}function lv(t){return fs(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function",scalarMultBase:"function"}),Object.freeze({...t})}function dv(t){const e=lv(t),{P:r,type:n,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=e.scalarMultBase,c=n==="x25519";if(!c&&n!=="x448")throw new Error("invalid type");const l=i===void 0?dh:i,d=c?255:448,u=cv(r),f=c?32:56,h=BigInt(c?9:5),g=BigInt(c?121665:39081),m=c?Ro**BigInt(254):Ro**BigInt(447),y=c?BigInt(8)*(Ro**BigInt(251)-Ge):BigInt(4)*(Ro**BigInt(445)-Ge),w=m+y+Ge,C=N=>se(N,r),b=A(h);function A(N){return ph(C(N),f)}function L(N){const j=Yn(zr(N,f,"uCoordinate"));return c&&(j[31]&=127),C(us(j))}function I(N){return us(o(Yn(zr(N,f,"scalar"))))}const R=new Set(c?[Jt,Ge,r-Ge,BigInt("325606250916557431795983626356110631294008115727848805560023387167927233504"),BigInt("39382357235489614581723060781553021112529911719440698176882885853963445705823")]:[Jt,Ge,r-Ge]);function E(N,j){const U=L(j);if(R.has(U))throw new Error("invalid private or public key received");const O=B(U,I(N));if(O===Jt)throw new Error("invalid private or public key received");return A(O)}function x(N){if(a===void 0)return E(N,b);const j=I(N);Hn("scalar",j,m,w);const U=C(a(j));if(U===Jt)throw new Error("invalid private or public key received");return A(U)}const S=x,T=E;function B(N,j){Hn("u",N,Jt,r),Hn("scalar",j,m,w);const U=j,O=N;let _=Ge,D=Jt,F=N,H=Ge;const q=U^U>>Ge;for(let V=BigInt(d-1);V>=Jt;V--){const G=ed(r,q>>V);({x_2:_,x_3:F}=u(G,_,F)),{x_2:D,x_3:H}=u(G,D,H);const X=_+D,Z=C(X*X),ae=_-D,ke=C(ae*ae),Oe=Z-ke,te=F+H,ze=F-H,Gt=C(ze*X),Xt=C(te*ae),Fe=Gt+Xt,Yt=Gt-Xt;F=C(Fe*Fe),H=C(O*C(Yt*Yt)),_=C(Z*ke),D=C(Oe*(Z+C(g*Oe)))}const K=ed(r,U);({x_2:_,x_3:F}=u(K,_,F)),{x_2:D,x_3:H}=u(K,D,H);const W=s(D);return C(_*W)}const v={secretKey:f,publicKey:f,seed:f},k=N=>(N=N===void 0?l(f):N,zr(N,v.seed,"seed"),N),P={randomSecretKey:k};return Object.freeze(v),Object.freeze(P),Object.freeze({keygen:ov(k,S),getSharedSecret:T,getPublicKey:S,scalarMult:E,scalarMultBase:x,utils:P,GuBytes:b.slice(),lengths:v})}const td=BigInt(0),uv=BigInt(1),rd=BigInt(2),fv=BigInt(3),hv=BigInt(5),pv=BigInt(8),qs=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),gv={p:qs,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:pv,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function kh(t){const e=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),s=qs,a=t*t%s*t%s,c=tt(a,rd,s)*a%s,l=tt(c,uv,s)*t%s,d=tt(l,hv,s)*l%s,u=tt(d,e,s)*d%s,f=tt(u,r,s)*u%s,h=tt(f,n,s)*f%s,g=tt(h,o,s)*h%s,m=tt(g,o,s)*h%s,y=tt(m,e,s)*d%s;return{pow_p_5_8:tt(y,rd,s)*t%s,b2:a}}function mv(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const nd=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function wv(t,e){const r=qs,n=se(e*e*e,r),o=se(n*n*e,r),s=kh(t*o).pow_p_5_8;let i=se(t*n*s,r);const a=se(e*i*i,r),c=i,l=se(i*nd,r),d=a===t,u=a===se(-t,r),f=a===se(-t*nd,r);return d&&(i=c),(u||f)&&(i=l),$0(i,r)&&(i=se(-i,r)),{isValid:d||u,value:i}}const od=av(gv,{uvRatio:wv}),To=(()=>{const t=qs,e=r=>{const{pow_p_5_8:n,b2:o}=kh(r);return se(tt(n,fv,t)*o,t)};return dv({P:t,type:"x25519",powPminus2:e,adjustScalarBytes:mv,scalarMultBase:r=>{const n=se(r,od.Fn.ORDER);if(n===td)return td;const o=od.BASE.multiply(n);return se((o.Z+o.Y)*e(se(o.Z-o.Y,t)),t)}})})();class sd{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,r){if(Cc(e),Rt(r,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("expected Hash instance");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?e.create().update(r).digest():r);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),ar(o)}update(e){return ls(this),this.iHash.update(e),this}digestInto(e){ls(this),oh(e,this),this.finished=!0;const r=e.subarray(0,this.outputLen);this.iHash.digestInto(r),this.oHash.update(r),this.oHash.digestInto(r),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:r,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a,canXOF:c}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.canXOF=c,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ch=(()=>{const t=((e,r,n)=>new sd(e,r).update(n).digest());return t.create=(e,r)=>new sd(e,r),t})();function id(){const t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}class ad{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){const e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}}class bi{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new ad(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){const r=this.head;this.head=r.next=new ad(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){const r=this.tail.next;this.tail.next=null,this.tail=r,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}}class yv extends Error{type;code;constructor(e,r){super(e??"The operation was aborted"),this.type="aborted",this.code=r??"ABORT_ERR"}}function bv(t={}){return vv(r=>{const n=r.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},t)}function vv(t,e){e=e??{};let r=e.onEnd,n=new bi,o,s,i,a=id();const c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=C=>{s=null,n.push(C);try{y(t(n))}catch(b){w(b)}return o}}):t(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=id()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new bi,s!=null?s({error:y}):(n.push({error:y}),o)),u=y=>{if(i)return o;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:y})},f=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),h=()=>(n=new bi,f(),{done:!0}),g=y=>(f(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:u,end:f,get readableLength(){return n.size},onEmpty:async y=>{const w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let C,b;w!=null&&(C=new Promise((A,L)=>{b=()=>{L(new yv)},w.addEventListener("abort",b)}));try{await Promise.race([a.promise,C])}finally{b!=null&&w!=null&&w?.removeEventListener("abort",b)}}},r==null)return o;const m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(y){return m.throw(y),r!=null&&(r(y),r=void 0),{done:!0}},return(){return m.return(),r!=null&&(r(),r=void 0),{done:!0}},push:u,end(y){return m.end(y),r!=null&&(r(y),r=void 0),o},get readableLength(){return m.readableLength},onEmpty:y=>m.onEmpty(y)},o}class _c extends Error{name="TimeoutError";constructor(e,r){super(e,r),Error.captureStackTrace?.(this,_c)}}const cd=t=>t.reason??new DOMException("This operation was aborted.","AbortError");function xv(t,e){const{milliseconds:r,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e;let a,c;const d=new Promise((u,f)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(i?.aborted){f(cd(i));return}if(i&&(c=()=>{f(cd(i))},i.addEventListener("abort",c,{once:!0})),t.then(u,f),r===Number.POSITIVE_INFINITY)return;const h=new _c;a=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(g){f(g)}return}typeof t.cancel=="function"&&t.cancel(),o===!1?u():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${r} milliseconds`,f(h))},r)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}const Sv=t=>{const e=t.addEventListener||t.on||t.addListener,r=t.removeEventListener||t.off||t.removeListener;if(!e||!r)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:r.bind(t)}};function Ev(t,e,r){let n;const o=new Promise((s,i)=>{if(r={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...r},!(r.count>=0&&(r.count===Number.POSITIVE_INFINITY||Number.isInteger(r.count))))throw new TypeError("The `count` option should be at least 0 or more");r.signal?.throwIfAborted();const a=[e].flat(),c=[],{addListener:l,removeListener:d}=Sv(t),u=async(...h)=>{const g=r.multiArgs?h:h[0];if(r.filter)try{if(!await r.filter(g))return}catch(m){n(),i(m);return}c.push(g),r.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(r.rejectionMultiArgs?h:h[0])};n=()=>{for(const h of a)d(h,u);for(const h of r.rejectionEvents)a.includes(h)||d(h,f)};for(const h of a)l(h,u);for(const h of r.rejectionEvents)a.includes(h)||l(h,f);r.signal&&r.signal.addEventListener("abort",()=>{f(r.signal.reason)},{once:!0}),r.resolveImmediately&&s(c)});if(o.cancel=n,typeof r.timeout=="number"){const s=xv(o,{milliseconds:r.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Av(t,e,r){typeof r=="function"&&(r={filter:r}),r={...r,count:1,resolveImmediately:!1};const n=Ev(t,e,r),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}class ps extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"}class kv extends Error{static name="StreamClosedError";name="StreamClosedError"}function Cv(t){return t.reason}function Ih(t,e,r){if(e==null||t==null)return t;const n=Cv;if(e.aborted)return t.catch(()=>{}),Promise.reject(n(e));let o;return Promise.race([t,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})]).finally(()=>{o!=null&&e.removeEventListener("abort",o)})}const Iv=Math.pow(2,20)*4;class Rh extends jg{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??Iv,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new oe,this.writeBuffer=new oe,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);const r=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",r);const n=o=>{this.onDrainPromise?.reject(o.error??new kv)};this.addEventListener("close",n)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),Ih(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;const e=bv(),r=s=>{e.push(s.data)};this.addEventListener("message",r);const n=s=>{e.end(s.error)};this.addEventListener("close",n);const o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",r),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new vn(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(r){this.log("failed to send reset to remote - %e",r)}this.dispatchEvent(new o0(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new vn("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new vn("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new vn(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new vn(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");const e=new r0;this.dispatchEvent(new s0(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new kc))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0;const r=this.writeBuffer.byteLength;let n=0;for(;this.writeBuffer.byteLength>0;){const o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}const s=this.writeBuffer.sublist(0,o),i=new oe(s);this.writeBuffer.consume(s.byteLength);const a=this.sendData(s);if(e=a.canSendMore,n+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",n,r,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}const e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new n0(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new ql(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new ql(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}}const Rv=4194304;class ld extends Error{static name="UnwrappedError";name="UnwrappedError"}class Th extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"}class Tv extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"}class Pv extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"}function Nv(t){return typeof t?.closeRead=="function"}function Lv(t){return typeof t?.close=="function"}function vi(t){return Nv(t)?t.remoteWriteStatus!=="writable"&&t.readBufferLength===0:Lv(t)?t.status!=="open":!1}function Bv(t){return t?.addEventListener!=null&&t?.removeEventListener!=null&&t?.send!=null&&t?.push!=null&&t?.log!=null}function _v(t,e){const r=e?.maxBufferSize??Rv,n=new oe;let o,s=!1;if(!Bv(t))throw new nh("Argument should be a Stream or a Multiaddr");const i=d=>{if(n.append(d.data),n.byteLength>r){const u=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${r}`))}o?.resolve()};t.addEventListener("message",i);const a=d=>{d.error!=null?o?.reject(d.error):o?.resolve()};t.addEventListener("close",a);const c=()=>{o?.resolve()};t.addEventListener("remoteCloseWrite",c);const l={readBuffer:n,async read(d){if(s===!0)throw new ld("Stream was unwrapped");if(vi(t)){if(d?.bytes==null)return null;if(n.byteLength<d.bytes)throw t.log.error("closed after reading %d/%d bytes",n.byteLength,d.bytes),new ps(`Unexpected EOF - stream closed after reading ${n.byteLength}/${d.bytes} bytes`)}const u=d?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=u){o.resolve();break}if(await Ih(o.promise,d?.signal),vi(t)){if(n.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}const f=d?.bytes??n.byteLength;if(n.byteLength<f){if(vi(t))throw t.log.error("closed while reading %d/%d bytes",n.byteLength,f),new ps(`Unexpected EOF - stream closed while reading ${n.byteLength}/${f} bytes`);return l.read(d)}const h=n.sublist(0,f);return n.consume(f),h},async write(d,u){if(s===!0)throw new ld("Stream was unwrapped");t.send(d)||await Av(t,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,t.removeEventListener("message",i),t.removeEventListener("close",a),t.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(t.log("stream unwrapped with %d unread bytes",n.byteLength),t.push(n))),t}};return l}function dd(t,e={}){const r=_v(t,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=yr(e.maxDataLength));const n=e?.lengthDecoder??Ff,o=e?.lengthEncoder??Uy;return{async read(i){let a=-1;const c=new oe;for(;;){const d=await r.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Th("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Pv(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Tv(`Message length too long - ${a} > ${e.maxDataLength}`);const l=await r.read({...i,bytes:a});if(l==null)throw t.log.error("tried to read %d bytes but the stream closed",a),new ps(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw t.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new ps(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await r.write(new oe(o(i.byteLength),i),a)},async writeV(i,a){const c=new oe(...i.flatMap(l=>[o(l.byteLength),l]));await r.write(c,a)},unwrap(){return r.unwrap()}}}const Dv=1024*1024*4,Ov=1024*1024*4;class Fv{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new oe,this.maxBufferSize=e.maxBufferSize??Dv,this.maxDataLength=e.maxDataLength??Ov,this.lengthDecoder=e.lengthDecoder??Ff,this.encodingLength=e.encodingLength??yr}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new nh(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let r;try{r=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(r<0||r>this.maxDataLength)throw new Th("Invalid message length");const n=this.encodingLength(r),o=n+r;if(this.buffer.byteLength>=o){const s=this.buffer.sublist(n,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}}var Mv={};const Qn=65535,ud=Qn-16,uo=!!Mv?.DUMP_SESSION_KEYS,fd=16;function Ra(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const gs=t=>t?`"${t}" `:"";function Ta(t,e=""){if(typeof t!="boolean")throw new TypeError(gs(e)+"expected boolean, got type="+typeof t);return t}function Vr(t,e=""){if(typeof t!="number")throw new TypeError(gs(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(gs(e)+"expected integer >= 0, got "+t);return t}function ve(t,e,r=""){if(Ra(t)&&(e===void 0||t.length===e))return t;e!==void 0&&Vr(e,"length");const n=Ra(t),o=e!==void 0?` of length ${e}`:"",s=n?`length=${t.length}`:`type=${typeof t}`,i=gs(r)+"expected Uint8Array"+o+", got "+s;throw n?new RangeError(i):new TypeError(i)}const hd=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`)};function pd(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function jv(t,e){ve(t,void 0,"output");const r=e.outputLen;if(!(t.length>=r))throw new RangeError('"output" expected length >= '+r)}function vt(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Ht(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Uv(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const Gr=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function $v(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Hv(t){for(let e=0;e<t.length;e++)t[e]=$v(t[e]);return t}const or=Gr?t=>t:Hv;function qv(t,e){return!t.byteLength||!e.byteLength?!1:t.buffer===e.buffer&&t.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<t.byteOffset+t.byteLength}function Kv(t,e){if(qv(t,e)&&t.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function zv(t,e){return hd(t,"defaults"),hd(e,"opts"),Object.assign(t,e)}function Wv(t,e){if(t=ve(t),e=ve(e),t.length!==e.length)return!1;let r=0;for(let n=0;n<t.length;n++)r|=t[n]^e[n];return r===0}function Vv(t,e,r){const n=e,o=(()=>[]),s=(a,c)=>n(c,...o(a)).update(a).digest(),i=n(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>n(a,...c),s}const Gv=(t,e)=>{function r(n,...o){if(ve(n,void 0,"key"),t.nonceLength!==void 0){const u=o[0];ve(u,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength,i=t.nonceLength!==void 0?1:0;if(!t.withAAD){for(let u=i;u<o.length;u++)if(Ra(o[u]))throw new Error("AAD not supported")}t.withAAD&&o[i]!==void 0&&ve(o[i],void 0,"AAD");const a=e(n,...o),c=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");ve(f,void 0,"output")}};let l=!1;return{encrypt(u,f){if(l)throw new Error("cannot encrypt() twice with same key + nonce");return l=!0,ve(u,void 0,"data"),c(a.encrypt.length,f),a.encrypt(u,f)},decrypt(u,f){if(ve(u,void 0,"data"),s&&u.length<s)throw new Error('"ciphertext" expected length >= tagLength='+s);return c(a.decrypt.length,f),a.decrypt(u,f)}}}return Object.assign(r,t),r};function Pa(t,e,r=!0){if(e===void 0)return new Uint8Array(t);if(ve(e,t,"output"),r&&!ms(e))throw new Error("invalid output, must be aligned");return e}function Xv(t,e,r){Vr(t),Vr(e),Ta(r);const n=new Uint8Array(16),o=Uv(n);return o.setBigUint64(0,BigInt(e),r),o.setBigUint64(8,BigInt(t),r),n}function ms(t){return t.byteOffset%4===0}function ws(t){return Uint8Array.from(ve(t))}const Ph=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),Yv=or(vt(Ph("expand 16-byte k"))),Zv=or(vt(Ph("expand 32-byte k")));function ee(t,e){return t<<e|t>>>32-e}const xn=64,Jv=16,Na=2**32-1,gd=Uint32Array.of();function Qv(t,e,r,n,o,s,i,a){const c=o.length,l=new Uint8Array(xn),d=vt(l),u=Gr&&ms(o)&&ms(s),f=u?vt(o):gd,h=u?vt(s):gd;if(!Gr){for(let g=0;g<c;i++){if(t(e,r,n,d,i,a),or(d),i>=Na)throw new Error("arx: counter overflow");const m=Math.min(xn,c-g);for(let y=0,w;y<m;y++)w=g+y,s[w]=o[w]^l[y];g+=m}return}for(let g=0;g<c;i++){if(t(e,r,n,d,i,a),i>=Na)throw new Error("arx: counter overflow");const m=Math.min(xn,c-g);if(u&&m===xn){const y=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let w=0,C;w<Jv;w++)C=y+w,h[C]=f[C]^d[w];g+=xn;continue}for(let y=0,w;y<m;y++)w=g+y,s[w]=o[w]^l[y];g+=m}}function ex(t,e){const{allowShortKeys:r,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=zv({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return Vr(o),Vr(i),Ta(s),Ta(r),(a,c,l,d,u=0)=>{ve(a,void 0,"key"),ve(c,void 0,"nonce"),ve(l,void 0,"data");const f=l.length,h=d!==void 0;if(d=Pa(f,d,!1),h&&Kv(l,d),Vr(u),u<0||u>=Na)throw new Error("arx: counter overflow");const g=[];let m=a.length,y,w;if(m===32)g.push(y=ws(a)),w=Zv;else if(m===16&&r)y=new Uint8Array(32),y.set(a),y.set(a,16),w=Yv,g.push(y);else throw ve(a,32,"arx key"),new Error("invalid key size");(!Gr||!ms(c))&&g.push(c=ws(c));let C=vt(y);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");const L=c.subarray(0,16);if(Gr)n(w,C,vt(L),C);else{const I=or(Uint32Array.from(w));n(I,C,vt(L),C),Ht(I),or(C)}c=c.subarray(16)}else Gr||or(C);const b=16-o;if(b!==c.length)throw new Error(`arx: nonce must be ${b} or 16 bytes`);if(b!==12){const L=new Uint8Array(12);L.set(c,s?0:12-c.length),c=L,g.push(c)}const A=or(vt(c));try{return Qv(t,w,C,A,l,d,u,i),d}finally{Ht(...g)}}}function Se(t,e){return t[e++]&255|(t[e++]&255)<<8}class tx{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=ws(ve(e,32,"key"));const r=Se(e,0),n=Se(e,2),o=Se(e,4),s=Se(e,6),i=Se(e,8),a=Se(e,10),c=Se(e,12),l=Se(e,14);this.r[0]=r&8191,this.r[1]=(r>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=Se(e,16+2*d)}process(e,r,n=!1){const o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],f=i[5],h=i[6],g=i[7],m=i[8],y=i[9],w=Se(e,r+0),C=Se(e,r+2),b=Se(e,r+4),A=Se(e,r+6),L=Se(e,r+8),I=Se(e,r+10),R=Se(e,r+12),E=Se(e,r+14);let x=s[0]+(w&8191),S=s[1]+((w>>>13|C<<3)&8191),T=s[2]+((C>>>10|b<<6)&8191),B=s[3]+((b>>>7|A<<9)&8191),v=s[4]+((A>>>4|L<<12)&8191),k=s[5]+(L>>>1&8191),P=s[6]+((L>>>14|I<<2)&8191),N=s[7]+((I>>>11|R<<5)&8191),j=s[8]+((R>>>8|E<<8)&8191),U=s[9]+(E>>>5|o),O=0,_=O+x*a+S*(5*y)+T*(5*m)+B*(5*g)+v*(5*h);O=_>>>13,_&=8191,_+=k*(5*f)+P*(5*u)+N*(5*d)+j*(5*l)+U*(5*c),O+=_>>>13,_&=8191;let D=O+x*c+S*a+T*(5*y)+B*(5*m)+v*(5*g);O=D>>>13,D&=8191,D+=k*(5*h)+P*(5*f)+N*(5*u)+j*(5*d)+U*(5*l),O+=D>>>13,D&=8191;let F=O+x*l+S*c+T*a+B*(5*y)+v*(5*m);O=F>>>13,F&=8191,F+=k*(5*g)+P*(5*h)+N*(5*f)+j*(5*u)+U*(5*d),O+=F>>>13,F&=8191;let H=O+x*d+S*l+T*c+B*a+v*(5*y);O=H>>>13,H&=8191,H+=k*(5*m)+P*(5*g)+N*(5*h)+j*(5*f)+U*(5*u),O+=H>>>13,H&=8191;let q=O+x*u+S*d+T*l+B*c+v*a;O=q>>>13,q&=8191,q+=k*(5*y)+P*(5*m)+N*(5*g)+j*(5*h)+U*(5*f),O+=q>>>13,q&=8191;let K=O+x*f+S*u+T*d+B*l+v*c;O=K>>>13,K&=8191,K+=k*a+P*(5*y)+N*(5*m)+j*(5*g)+U*(5*h),O+=K>>>13,K&=8191;let W=O+x*h+S*f+T*u+B*d+v*l;O=W>>>13,W&=8191,W+=k*c+P*a+N*(5*y)+j*(5*m)+U*(5*g),O+=W>>>13,W&=8191;let V=O+x*g+S*h+T*f+B*u+v*d;O=V>>>13,V&=8191,V+=k*l+P*c+N*a+j*(5*y)+U*(5*m),O+=V>>>13,V&=8191;let G=O+x*m+S*g+T*h+B*f+v*u;O=G>>>13,G&=8191,G+=k*d+P*l+N*c+j*a+U*(5*y),O+=G>>>13,G&=8191;let X=O+x*y+S*m+T*g+B*h+v*f;O=X>>>13,X&=8191,X+=k*u+P*d+N*l+j*c+U*a,O+=X>>>13,X&=8191,O=(O<<2)+O|0,O=O+_|0,_=O&8191,O=O>>>13,D+=O,s[0]=_,s[1]=D,s[2]=F,s[3]=H,s[4]=q,s[5]=K,s[6]=W,s[7]=V,s[8]=G,s[9]=X}finalize(){const{h:e,pad:r}=this,n=new Uint16Array(10);let o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+r[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+r[a]|0)+(i>>>16)|0,e[a]=i&65535;Ht(n)}update(e){pd(this),ve(e),e=ws(e);const{buffer:r,blockLen:n}=this,o=e.length;for(let s=0;s<o;){const i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}r.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(r,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,Ht(this.h,this.r,this.buffer,this.pad)}digestInto(e){pd(this),jv(e,this),this.finished=!0;const{buffer:r,h:n}=this;let{pos:o}=this;if(o){for(r[o++]=1;o<16;o++)r[o]=0;this.process(r,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}}const rx=Vv(32,t=>new tx(t));function nx(t,e,r,n,o,s=20){let i=t[0],a=t[1],c=t[2],l=t[3],d=e[0],u=e[1],f=e[2],h=e[3],g=e[4],m=e[5],y=e[6],w=e[7],C=o,b=r[0],A=r[1],L=r[2],I=i,R=a,E=c,x=l,S=d,T=u,B=f,v=h,k=g,P=m,N=y,j=w,U=C,O=b,_=A,D=L;for(let H=0;H<s;H+=2)I=I+S|0,U=ee(U^I,16),k=k+U|0,S=ee(S^k,12),I=I+S|0,U=ee(U^I,8),k=k+U|0,S=ee(S^k,7),R=R+T|0,O=ee(O^R,16),P=P+O|0,T=ee(T^P,12),R=R+T|0,O=ee(O^R,8),P=P+O|0,T=ee(T^P,7),E=E+B|0,_=ee(_^E,16),N=N+_|0,B=ee(B^N,12),E=E+B|0,_=ee(_^E,8),N=N+_|0,B=ee(B^N,7),x=x+v|0,D=ee(D^x,16),j=j+D|0,v=ee(v^j,12),x=x+v|0,D=ee(D^x,8),j=j+D|0,v=ee(v^j,7),I=I+T|0,D=ee(D^I,16),N=N+D|0,T=ee(T^N,12),I=I+T|0,D=ee(D^I,8),N=N+D|0,T=ee(T^N,7),R=R+B|0,U=ee(U^R,16),j=j+U|0,B=ee(B^j,12),R=R+B|0,U=ee(U^R,8),j=j+U|0,B=ee(B^j,7),E=E+v|0,O=ee(O^E,16),k=k+O|0,v=ee(v^k,12),E=E+v|0,O=ee(O^E,8),k=k+O|0,v=ee(v^k,7),x=x+S|0,_=ee(_^x,16),P=P+_|0,S=ee(S^P,12),x=x+S|0,_=ee(_^x,8),P=P+_|0,S=ee(S^P,7);let F=0;n[F++]=i+I|0,n[F++]=a+R|0,n[F++]=c+E|0,n[F++]=l+x|0,n[F++]=d+S|0,n[F++]=u+T|0,n[F++]=f+B|0,n[F++]=h+v|0,n[F++]=g+k|0,n[F++]=m+P|0,n[F++]=y+N|0,n[F++]=w+j|0,n[F++]=C+U|0,n[F++]=b+O|0,n[F++]=A+_|0,n[F++]=L+D|0}const ox=ex(nx,{counterRight:!1,counterLength:4,allowShortKeys:!1}),sx=new Uint8Array(16),md=(t,e)=>{t.update(e);const r=e.length%16;r&&t.update(sx.subarray(r))},ix=new Uint8Array(32);function wd(t,e,r,n,o){o!==void 0&&ve(o,void 0,"AAD");const s=t(e,r,ix),i=Xv(n.length,o?o.length:0,!0),a=rx.create(s);o&&md(a,o),md(a,n),a.update(i);const c=a.digest();return Ht(s,i),c}const ax=t=>(e,r,n)=>({encrypt(s,i){const a=s.length;i=Pa(a+16,i,!1),i.set(s);const c=i.subarray(0,-16);t(e,r,c,c,1);const l=wd(t,e,r,c,n);return i.set(l,a),Ht(l),i},decrypt(s,i){i=Pa(s.length-16,i,!1);const a=s.subarray(0,-16),c=s.subarray(-16),l=wd(t,e,r,a,n);if(!Wv(c,l))throw Ht(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),t(e,r,i,i,1),Ht(l),i}}),yd=Gv({blockSize:64,nonceLength:12,tagLength:16,withAAD:!0},ax(ox));function cx(t,e,r){return Cc(t),r===void 0&&(r=new Uint8Array(t.outputLen)),Ch(t,r,e)}const Sn=Uint8Array.of(0),lx=Uint8Array.of();function dx(t,e,r,n=32,o){Cc(t),It(n,"length"),Rt(e,void 0,"prk");const s=t.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(n>255*s)throw new Error("Length must be <= 255*HashLen");const i=Math.ceil(n/s);if(r===void 0?r=lx:Rt(r,void 0,"info"),!i)return new Uint8Array;const a=new Uint8Array(i*s),{iHash:c,oHash:l}=Ch.create(t,e),d=new Uint8Array(s),u=i>1?t.create():void 0;for(let h=0;h<i-1;h++){Sn[0]=h+1;const g=c._cloneInto(u);h&&g.update(d),g.update(r).update(Sn).digestInto(d),l._cloneInto(u).update(d).digestInto(d),a.set(d,s*h)}if(Sn[0]=i,i>1&&c.update(d),c.update(r).update(Sn).digestInto(d),l.update(d).digestInto(d),a.set(d,s*(i-1)),c.destroy(),l.destroy(),u?.destroy(),d!==a&&ar(d),ar(Sn),n===a.length)return a;const f=a.slice(0,n);return ar(a),f}const Nh={hashSHA256(t){return mi(t.subarray())},getHKDF(t,e){const r=cx(mi,e,t),o=dx(mi,r,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){const t=To.utils.randomSecretKey();return{publicKey:To.getPublicKey(t),privateKey:t}},generateX25519KeyPairFromSeed(t){return{publicKey:To.getPublicKey(t),privateKey:t}},generateX25519SharedKey(t,e){return To.getSharedSecret(t.subarray(),e.subarray())},chaCha20Poly1305Encrypt(t,e,r,n){return yd(n,e,r).encrypt(t.subarray())},chaCha20Poly1305Decrypt(t,e,r,n,o){return yd(n,e,r).decrypt(t.subarray(),o)}},ux=Nh;function fx(t){return{generateKeypair:t.generateX25519KeyPair,dh:(e,r)=>t.generateX25519SharedKey(e.privateKey,r).subarray(0,32),encrypt:t.chaCha20Poly1305Encrypt,decrypt:t.chaCha20Poly1305Decrypt,hash:t.hashSHA256,hkdf:t.getHKDF}}const ys=t=>{const e=kt(2);return e[0]=t>>8,e[1]=t,e};ys.bytes=2;const bs=t=>{if(t.length<2)throw RangeError("Could not decode int16BE");if(t instanceof Uint8Array){let e=0;return e+=t[0]<<8,e+=t[1],e}return t.getUint16(0)};bs.bytes=2;function hx(t){return{xxHandshakeSuccesses:t.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:t.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:t.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:t.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:t.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function Lh(t,e){!e.enabled||!uo||(t?(e(`LOCAL_STATIC_PUBLIC_KEY ${Q(t.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${Q(t.privateKey,"hex")}`)):e("Missing local static keys."))}function Bh(t,e){!e.enabled||!uo||(t?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${Q(t.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${Q(t.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function px(t,e){!e.enabled||!uo||e(t?`REMOTE_STATIC_PUBLIC_KEY ${Q(t.subarray(),"hex")}`:"Missing remote static public key.")}function _h(t,e){!e.enabled||!uo||e(t?`REMOTE_EPHEMERAL_PUBLIC_KEY ${Q(t.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function Dh(t,e,r){!r.enabled||!uo||(r(`CIPHER_STATE_1 ${t.n.getUint64()} ${t.k&&Q(t.k,"hex")}`),r(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&Q(e.k,"hex")}`))}class qn extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=qn.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"}const gx=0,mx=4294967295,wx="Cipherstate has reached maximum n, a new handshake must be performed";class yx{n;bytes;view;constructor(e=gx){this.n=e,this.bytes=Me(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>mx)throw new Error(wx)}}const Xr=Me(0);class Po{k;n;crypto;constructor(e,r=void 0,n=0){this.crypto=e,this.k=r,this.n=new yx(n)}hasKey(){return!!this.k}encryptWithAd(e,r){if(!this.hasKey())return r;this.n.assertValue();const n=this.crypto.encrypt(r,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,r,n){if(!this.hasKey())return r;this.n.assertValue();const o=this.crypto.decrypt(r,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}}class bx{cs;ck;h;crypto;constructor(e,r){this.crypto=e;const n=we(r,"utf-8");this.h=xx(e,n),this.ck=this.h,this.cs=new Po(e)}mixKey(e){const[r,n]=this.crypto.hkdf(this.ck,e);this.ck=r,this.cs=new Po(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new oe(this.h,e))}encryptAndHash(e){const r=this.cs.encryptWithAd(this.h,e);return this.mixHash(r),r}decryptAndHash(e){const r=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),r}split(){const[e,r]=this.crypto.hkdf(this.ck,Xr);return[new Po(this.crypto,e),new Po(this.crypto,r)]}}class vx{ss;s;e;rs;re;initiator;crypto;constructor(e){const{crypto:r,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=r,this.ss=new bx(r,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");const e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,r=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<r+32)throw new Error("message is not long enough");this.re=e.sublist(r,r+32),this.ss.mixHash(this.re)}readS(e,r=0){if(this.rs)throw new Error("remote static public key is already set");const n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<r+n)throw new Error("message is not long enough");const o=e.sublist(r,r+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}}class Oh extends vx{writeMessageA(e){return new oe(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){const r=this.writeE();this.writeEE();const n=this.writeS();return this.writeES(),new oe(r,n,this.ss.encryptAndHash(e))}writeMessageC(e){const r=this.writeS();return this.writeSE(),new oe(r,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(r){throw new qn(`handshake stage 0 validation fail: ${r.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();const r=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+r))}catch(r){throw new qn(`handshake stage 1 validation fail: ${r.message}`)}}readMessageC(e){try{const r=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(r))}catch(r){throw new qn(`handshake stage 2 validation fail: ${r.message}`)}}}function xx(t,e){if(e.length<=32){const r=Me(32);return r.set(e),r}else return t.hash(e)}var vs;(function(t){let e;t.codec=()=>(e==null&&(e=Us((r,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),r.webtransportCerthashes!=null)for(const s of r.webtransportCerthashes)n.uint32(10),n.bytes(s);if(r.streamMuxers!=null)for(const s of r.streamMuxers)n.uint32(18),n.string(s);o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={webtransportCerthashes:[],streamMuxers:[]},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new jl('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(r.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new jl('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(r.string());break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>js(r,t.codec()),t.decode=(r,n)=>Ms(r,t.codec(),n)})(vs||(vs={}));var xs;(function(t){let e;t.codec=()=>(e==null&&(e=Us((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.identityKey!=null&&r.identityKey.byteLength>0&&(n.uint32(10),n.bytes(r.identityKey)),r.identitySig!=null&&r.identitySig.byteLength>0&&(n.uint32(18),n.bytes(r.identitySig)),r.extensions!=null&&(n.uint32(34),vs.codec().encode(r.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={identityKey:Me(0),identitySig:Me(0)},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.identityKey=r.bytes();break}case 2:{s.identitySig=r.bytes();break}case 4:{s.extensions=vs.codec().decode(r,r.uint32(),{limits:o.limits?.extensions});break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>js(r,t.codec()),t.decode=(r,n)=>Ms(r,t.codec(),n)})(xs||(xs={}));async function Fh(t,e,r){const n=await t.sign(jh(e));return xs.encode({identityKey:$s(t.publicKey),identitySig:n,extensions:r})}async function Mh(t,e,r){try{const n=xs.decode(t),o=Aa(n.identityKey);if(r?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${r}`);if(!e)throw new Error("Remote static does not exist");const s=jh(e);if(!await o.verify(s,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new Lg(n.message)}}function jh(t){const e=we("noise-libp2p-static-key:");return t instanceof Uint8Array?ha([e,t],e.length+t.length):(t.prepend(e),t)}class Sx extends Rh{stream;handshake;metrics;decoder;constructor(e,r,n){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=r,this.metrics=n,this.decoder=new Fv({lengthDecoder:bs,maxBufferSize:16*1024*1024,encodingLength:()=>2});const o=c=>{try{for(const l of this.decoder.decode(c.data))this.onData(this.decrypt(l))}catch(l){this.abort(l)}};this.stream.addEventListener("message",o);const s=c=>{c.error!=null?c.local===!0?this.abort(c.error):this.onRemoteReset():this.onTransportClosed()};this.stream.addEventListener("close",s);const i=()=>{this.safeDispatchEvent("drain")};this.stream.addEventListener("drain",i);const a=()=>{this.onRemoteCloseWrite()};this.stream.addEventListener("remoteCloseWrite",a)}encrypt(e){const r=new oe;for(let n=0;n<e.byteLength;n+=ud){let o=n+ud;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(n,o)):s=this.handshake.encrypt(e.sublist(n,o)),this.metrics?.encryptedPackets.increment(),r.append(ys(s.byteLength)),r.append(s)}return r}decrypt(e){const r=new oe;for(let n=0;n<e.byteLength;n+=Qn){let o=n+Qn;if(o>e.byteLength&&(o=e.byteLength),o-fd<n)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(n,o):s=e.sublist(n,o);const i=e.subarray(n,o-fd);try{const a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),r.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return r}close(e){return this.stream.close(e)}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}sendReset(e){this.stream.abort(e)}sendData(e){return{sentBytes:e.byteLength,canSendMore:this.stream.send(this.encrypt(e))}}}function bd(t,e,r){return new Sx(t,e,r)}async function Ex(t,e){const{log:r,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Fh(s,a.publicKey,l),u=new Oh({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});Lh(u.s,r),r.trace("Stage 0 - Initiator starting to send first message."),await n.write(u.writeMessageA(Xr),e),r.trace("Stage 0 - Initiator finished sending first message."),Bh(u.e,r),r.trace("Stage 1 - Initiator waiting to receive first message from responder...");const f=u.readMessageB(await n.read(e));r.trace("Stage 1 - Initiator received the message."),_h(u.re,r),px(u.rs,r),r.trace("Initiator going to check remote's signature...");const h=await Mh(f,u.rs,c);r.trace("All good with the signature!"),r.trace("Stage 2 - Initiator sending third handshake message."),await n.write(u.writeMessageC(d),e),r.trace("Stage 2 - Initiator sent message with signed payload.");const[g,m]=u.ss.split();return Dh(g,m,r),{payload:h,encrypt:y=>g.encryptWithAd(Xr,y),decrypt:(y,w)=>m.decryptWithAd(Xr,y,w)}}async function Ax(t,e){const{log:r,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Fh(s,a.publicKey,l),u=new Oh({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});Lh(u.s,r),r.trace("Stage 0 - Responder waiting to receive first message."),u.readMessageA(await n.read(e)),r.trace("Stage 0 - Responder received first message."),_h(u.re,r),r.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(u.writeMessageB(d),e),r.trace("Stage 1 - Responder sent the second handshake message with signed payload."),Bh(u.e,r),r.trace("Stage 2 - Responder waiting for third handshake message...");const f=u.readMessageC(await n.read(e));r.trace("Stage 2 - Responder received the message, finished handshake.");const h=await Mh(f,u.rs,c),[g,m]=u.ss.split();return Dh(g,m,r),{payload:h,encrypt:y=>m.encryptWithAd(Xr,y),decrypt:(y,w)=>g.decryptWithAd(Xr,y,w)}}class kx{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,r={}){const{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=r,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");const c=s??ux;this.crypto=fx(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?hx(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Me(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[Ug]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,r){const n=e.log?.newScope("noise")??this.log,o=dd(e,{lengthEncoder:ys,lengthDecoder:bs,maxDataLength:Qn}),s=await this.performHandshakeInitiator(o,this.components.privateKey,n,r?.remotePeer?.publicKey,r),i=Aa(s.payload.identityKey);return{connection:bd(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:tn(i),streamMuxer:r?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;const r=this.components.upgrader.getStreamMuxers();if(r!=null)for(const n of e){const o=r.get(n);if(o!=null)return o}if(e.length)throw new Bg("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,r){const n=e.log?.newScope("noise")??this.log,o=dd(e,{lengthEncoder:ys,lengthDecoder:bs,maxDataLength:Qn}),s=await this.performHandshakeResponder(o,this.components.privateKey,n,r?.remotePeer?.publicKey,r),i=Aa(s.payload.identityKey);return{connection:bd(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:tn(i),streamMuxer:r?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,r,n,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Ex({connection:e,privateKey:r,remoteIdentityKey:o,log:n.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}async performHandshakeResponder(e,r,n,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Ax({connection:e,privateKey:r,remoteIdentityKey:o,log:n.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}}function Cx(t={}){return e=>new kx(e,t)}const Ix="termdock-e2ee-v1",La=3600*1e3,vd=512*1024*1024,Ba=4*1024*1024,$o=()=>{},Ks=Object.assign($o,{enabled:!1,error:$o,trace:$o,newScope:()=>Ks});Object.freeze(Ks);async function Uh(){const t=await zb();return{privateKey:t,peerId:tn(t.publicKey).toString()}}function Rx(t){return btoa(String.fromCharCode(...Gb(t.privateKey)))}function xd(t){if(t.length>512||!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Invalid identity encoding");const e=Vb(Uint8Array.from(atob(t),r=>r.charCodeAt(0)));if(e.type!=="Ed25519")throw new Error("Only Ed25519 device identities are supported");return{privateKey:e,peerId:tn(e.publicKey).toString()}}class $h{constructor(e=$o){this.consumed=e}consumed;chunks=[];size=0;ended=!1;error;wake;push(e){if(this.ended)throw this.error??new Error("Byte stream closed");if(this.size+e.byteLength>Ba)throw new Error("Secure stream buffer limit exceeded");this.chunks.push(e.slice()),this.size+=e.byteLength,this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.chunks.shift();if(e)this.size-=e.byteLength,yield e,this.consumed();else{if(this.ended)return;await new Promise(r=>{this.wake=r})}}}}class Tx extends Rh{constructor(e,r){super({log:Ks,direction:r?"outbound":"inbound",maxReadBufferLength:Ba,maxWriteBufferLength:Ba}),this.duplex=e,this.finished=e.sink(this.outgoing).catch(n=>{this.abort(rn(n))}),this.readTransport()}duplex;outgoing=new $h(()=>this.onMuxerDrain());finished;async readTransport(){try{for await(const e of this.duplex.source)this.onData(e.slice());this.onTransportClosed()}catch(e){this.onTransportClosed(rn(e))}}sendData(e){return this.outgoing.push(e.subarray()),{sentBytes:e.byteLength,canSendMore:!1}}sendReset(e){this.outgoing.end(e),this.duplex.close?.(e)}sendPause(){}sendResume(){}async close(){this.outgoing.end(),this.duplex.close?.(),this.onTransportClosed(),await this.finished}}function rn(t){return t instanceof Error?t:new Error("Secure transport failed")}class Px extends Error{code="E2EE_REHANDSHAKE_REQUIRED";constructor(){super("Encrypted connection lifetime reached; establish a new handshake without replaying pending input")}}function Nx(t){const e=t?.maxAgeMs??La,r=t?.maxBytesPerDirection??vd;if(!Number.isSafeInteger(e)||e<=0||e>La||!Number.isSafeInteger(r)||r<=0||r>vd)throw new Error("Encrypted connection limits cannot exceed the production maximum");return{maxAgeMs:e,maxBytesPerDirection:r}}async function Lx(t){const{identity:e,duplex:r,initiator:n,targetPinnedPeerId:o,signal:s}=t,i=Nx(t.limits);if(typeof Reflect.get(Promise,"withResolvers")!="function"||typeof globalThis.crypto?.getRandomValues!="function")throw new Error("End-to-end encryption requires Node.js 22+ or a modern browser with Promise.withResolvers and secure random support");if(n&&!o)throw new Error("A pinned target identity is required");const a=o?Jb(o):void 0;if(a&&a.type!=="Ed25519")throw new Error("Only Ed25519 target identities are supported");if(e.peerId!==tn(e.privateKey.publicKey).toString())throw new Error("Local identity mismatch");if(s?.aborted)throw s.reason??new Error("Connection aborted");const c=new Tx(r,n),l=new AbortController,d=setTimeout(()=>{const h=new Error("Encrypted handshake timed out");l.abort(h),c.abort(h)},15e3),u=()=>{l.abort(s?.reason),c.abort(rn(s?.reason))};s?.addEventListener("abort",u,{once:!0}),c.addEventListener("close",()=>s?.removeEventListener("abort",u),{once:!0});const f=Cx({crypto:Nh,prologueBytes:new TextEncoder().encode(Ix)})({privateKey:e.privateKey,peerId:tn(e.privateKey.publicKey),logger:{forComponent:()=>Ks},upgrader:{getStreamMuxers:()=>new Map}});try{const h=await(n?f.secureOutbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}):f.secureInbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}));if(h.remotePeer.type!=="Ed25519")throw new Error("Unsupported remote identity");return{authenticatedPeerId:h.remotePeer.toString(),duplex:Bx(h.connection,i)}}catch(h){throw c.abort(rn(h)),h}finally{clearTimeout(d),s?.removeEventListener("abort",u)}}function Bx(t,e){const r=new $h,n=performance.now(),o=Date.now();let s=0,i=0,a;const c=()=>(a??=new Px,r.end(a),t.abort(a),a),l=setTimeout(c,e.maxAgeMs);typeof l=="object"&&l.unref?.();const d=(f,h)=>{if(a)throw a;if(Math.max(performance.now()-n,Date.now()-o)>=e.maxAgeMs||f+h>=e.maxBytesPerDirection)throw c()};t.addEventListener("message",f=>{try{d(i,f.data.byteLength),i+=f.data.byteLength,r.push(f.data.subarray())}catch(h){t.abort(rn(h))}}),t.addEventListener("close",f=>{clearTimeout(l),r.end(f.error)},{once:!0});let u=!1;return{source:r,async sink(f){if(u)throw new Error("Secure sink already consumed");u=!0;try{for await(const h of f)d(s,h.byteLength),s+=h.byteLength,t.send(h)||await t.onDrain()}catch(h){throw t.abort(rn(h)),h}},close(f){f?t.abort(f):t.close()}}}const Hh=1012,qh="Encrypted transport renewed";class Dc{constructor(e=64){this.limit=e}limit;items=[];wake;ended=!1;error;push(e){if(this.ended)throw new Error("Channel closed");if(this.items.length>=this.limit)throw this.end(new Error("Channel queue exceeded")),this.error;this.items.push(e),this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.items.shift();if(e!==void 0){yield e;continue}if(this.ended)return;await new Promise(r=>{this.wake=r}),this.wake=void 0}}}const xi=2*1024*1024,_x=new TextEncoder,Dx=new TextDecoder("utf-8",{fatal:!0});class Ox{constructor(e){this.duplex=e;const r=this;this.done=e.sink((async function*(){for await(const n of r.outgoing)try{yield n}finally{r.outgoingBytes-=n.byteLength}})()),this.done.catch(n=>this.close(n instanceof Error?n:new Error("Transport failed")))}duplex;outgoing=new Dc(256);outgoingBytes=0;get hasPendingWrites(){return this.outgoingBytes>0}done;send(e){const r=_x.encode(JSON.stringify(e));if(r.length>xi)throw new Error("Record too large");const n=new Uint8Array(r.length+4);if(new DataView(n.buffer).setUint32(0,r.length),n.set(r,4),this.outgoingBytes+n.byteLength>4*1024*1024)throw new Error("Record queue byte budget exceeded");this.outgoingBytes+=n.byteLength;try{this.outgoing.push(n)}catch(o){throw this.outgoingBytes-=n.byteLength,o}}close(e){this.outgoing.end(e),this.duplex.close?.(e)}async*read(){let e=new Uint8Array(0);for await(const r of this.duplex.source){if(e.length+r.length>xi*2+8)throw new Error("Record buffer exceeded");const n=new Uint8Array(e.length+r.length);for(n.set(e),n.set(r,e.length),e=n;e.length>=4;){const o=new DataView(e.buffer,e.byteOffset,4).getUint32(0);if(o>xi||o===0)throw new Error("Invalid record size");if(e.length<o+4)break;const s=JSON.parse(Dx.decode(e.subarray(4,o+4)));if(!s||typeof s!="object"||typeof s.id!="string"||typeof s.type!="string")throw new Error("Invalid record");yield s,e=e.slice(o+4)}}if(e.length)throw new Error("Truncated record")}}function Kh(t){let e="";for(let r=0;r<t.length;r+=8192)e+=String.fromCharCode(...t.subarray(r,r+8192));return btoa(e)}function zh(t){const e=atob(t);return Uint8Array.from(e,r=>r.charCodeAt(0))}function Fx(t){const e=new Dc(64);t.binaryType="arraybuffer";const r=n=>{e.end(n),t.close(1e3)};return t.addEventListener("message",n=>{try{if(!(n.data instanceof ArrayBuffer)||n.data.byteLength>1024*1024)throw new Error("Invalid encrypted frame");e.push(new Uint8Array(n.data))}catch{r(new Error("Encrypted transport rejected frame"))}}),t.addEventListener("close",()=>e.end()),t.addEventListener("error",()=>e.end(new Error("Encrypted transport disconnected"))),{source:e,close:r,async sink(n){try{for await(const o of n)for(let s=0;s<o.length;s+=64*1024){const i=Date.now();for(;t.bufferedAmount>256*1024;){if(t.readyState!==1||Date.now()-i>15e3)throw new Error("Encrypted transport congested");await new Promise(a=>setTimeout(a,10))}if(t.readyState!==1)throw new Error("Encrypted transport closed");t.send(o.subarray(s,s+64*1024))}}catch(o){throw r(o instanceof Error?o:new Error("Encrypted transport failed")),o}}}}const Wh=8,Vh=128,Mx=5*1024*1024,jx=Vh+Wh+8,Ux=256,No=3e4,En=64*1024;function Mt(t){return t instanceof Error?t:new Error(String(t??"Secure connection closed"))}function Sd(t){if(!t.startsWith("/")||t.startsWith("//")||t.includes("#"))throw new Error("A local API path is required");return t}class Gh extends EventTarget{constructor(e,r,n){super(),this.url=e,this.transmit=r,this.disconnect=n}url;transmit;disconnect;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;binaryType="arraybuffer";bufferedAmount=0;protocol="termdock-e2ee-v1";extensions="";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;send(e){if(this.readyState!==1)throw new Error("Secure socket is not open");if(typeof e!="string"||new TextEncoder().encode(e).length>1024*1024)throw new Error("Unsupported socket payload");this.transmit(e)}close(e=1e3,r=""){this.readyState!==3&&(this.disconnect(),this.finish(e,r))}accept(e){if(this.readyState!==3)if(e.type==="ws-ready"){this.readyState=1;const r=new Event("open");this.dispatchEvent(r),this.onopen?.(r)}else if(e.type==="ws-data"&&typeof e.data=="string"){const r=new MessageEvent("message",{data:e.data});this.dispatchEvent(r),this.onmessage?.(r)}else e.type==="ws-close"?this.finish(typeof e.code=="number"?e.code:1e3,typeof e.reason=="string"?e.reason:""):e.type==="error"&&this.fail(Mt(e.error))}fail(e){if(this.readyState===3)return;const r=new Event("error");this.dispatchEvent(r),this.onerror?.(r),this.finish(1006,e.message)}finish(e,r){if(this.readyState===3)return;this.readyState=3;const n=new CloseEvent("close",{code:e,reason:r,wasClean:e===1e3});this.dispatchEvent(n),this.onclose?.(n)}}class $x{constructor(e,r,n){this.channel=e,this.identity=r,this.targetPeerId=n,this.read().catch(o=>this.close(Mt(o))),e.done.catch(o=>this.close(Mt(o)))}channel;identity;targetPeerId;establishedAt=performance.now();establishedWallTime=Date.now();lastInputAt=-1/0;pending=new Map;waiting=[];stopped=!1;closeReason;get canSwitchTransport(){return!this.channel.hasPendingWrites&&performance.now()-this.lastInputAt>=2e3&&![...this.pending.values()].some(e=>e.kind!=="socket")&&!this.waiting.some(e=>e.kind!=="socket")}get renewalDue(){return!this.stopped&&Math.max(performance.now()-this.establishedAt,Date.now()-this.establishedWallTime)>=La-5*6e4}get closed(){return this.stopped}hasCapacity(e){if(this.pending.size>=jx)return!1;const r=[...this.pending.values()].filter(n=>n.kind===e).length;return e==="http"?r<Wh:e==="socket"?r<Vh:!0}allocate(e){if(this.stopped)throw this.closeReason??new Error("Secure connection closed");const r=crypto.randomUUID(),n=new Dc(4);return this.pending.set(r,{queue:n,kind:e}),{id:r,queue:n}}reserve(e,r){return r?.aborted?Promise.reject(r.reason):this.stopped?Promise.reject(this.closeReason??new Error("Secure connection closed")):this.hasCapacity(e)?Promise.resolve(this.allocate(e)):this.waiting.length>=Ux?Promise.reject(new Error("连接繁忙,请稍后重试。")):new Promise((n,o)=>{const s=l=>{this.waiting=this.waiting.filter(d=>d!==c),c.cleanup(),o(l)},i=()=>s(r?.reason??new Error("Request aborted")),a=setTimeout(()=>s(new Error("连接等待超时,请重试。")),No),c={kind:e,resolve:n,reject:o,cleanup:()=>{clearTimeout(a),r?.removeEventListener("abort",i)}};this.waiting.push(c),r?.addEventListener("abort",i,{once:!0})})}dispatchWaiting(){if(!this.stopped)for(let e=0;e<this.waiting.length;){const r=this.waiting[e];if(!this.hasCapacity(r.kind)){e++;continue}this.waiting.splice(e,1),r.cleanup(),r.resolve(this.allocate(r.kind))}}async read(){try{for await(const e of this.channel.read()){const r=this.pending.get(e.id);r&&(r.socket?(r.socket.accept(e),(e.type==="ws-close"||e.type==="error")&&this.release(e.id)):(r.queue.push(e),(e.type==="end"||e.type==="error")&&(r.cancelUpload?.(),this.release(e.id))))}}finally{this.close(new Error("Secure connection closed"))}}release(e){this.pending.get(e)?.queue.end(),this.pending.delete(e),this.dispatchWaiting()}async request(e,r){const{id:n,queue:o}=await this.reserve("request"),s=setTimeout(()=>this.close(new Error("Secure connection timed out")),Math.max(1e3,Math.min(No,r?.timeoutMs??No)));try{if(this.stopped)throw this.closeReason;this.channel.send({...e,id:n});const i=(await o[Symbol.asyncIterator]().next()).value;if(!i)throw new Error("Secure request closed");if(i.type==="error")throw Mt(i.error);return i}finally{clearTimeout(s),this.release(n)}}openSocket(e){Sd(e);let r;const n=new AbortController,o=new Gh(e,s=>{if(r){try{JSON.parse(s)?.type==="input"&&(this.lastInputAt=performance.now())}catch{}this.channel.send({id:r,type:"ws-data",data:s})}},()=>{if(n.abort(),r)try{this.channel.send({id:r,type:"ws-close"})}finally{this.release(r)}});return this.reserve("socket",n.signal).then(s=>{if(r=s.id,o.readyState===3){this.release(r);return}const i=this.pending.get(r);if(!i)throw new Error("Secure connection closed");i.socket=o,this.channel.send({id:r,type:"ws-open",path:e})}).catch(s=>{r&&this.release(r),o.fail(Mt(s))}),o}async fetch(e,r){const n=typeof location>"u"?"https://termdock.invalid":location.origin,o=e instanceof Request?e:null,s=new URL(o?.url??String(e),n);if(s.origin!==n)throw new Error("Only current-service API requests are supported");const i=new Request(s,o?new Request(o,r):r),a=i.method.toUpperCase(),c=Sd(s.pathname+s.search),l=s.pathname==="/api/terminal/fs/upload"?110*1024*1024:Mx;if(i.signal.aborted)throw i.signal.reason;const d={};i.headers.forEach((A,L)=>{["cookie","authorization","host","connection","content-length"].includes(L)||(d[L]=A)});const{id:u,queue:f}=await this.reserve("http",i.signal),h=f[Symbol.asyncIterator]();let g;const m=()=>{g?.cancel().catch(()=>{})},y=this.pending.get(u);if(!y)throw new Error("Secure connection closed");y.cancelUpload=m;const w=()=>{m();try{this.channel.send({id:u,type:"cancel"})}catch{}f.end(Mt(i.signal.reason??"Request aborted")),this.release(u)};i.signal.addEventListener("abort",w,{once:!0});const C=()=>{i.signal.removeEventListener("abort",w),this.release(u)},b=async()=>{let A;try{const L=(await Promise.race([h.next(),new Promise((I,R)=>{A=setTimeout(()=>R(new Error("服务响应超时,请重试。")),No)})])).value;if(!L)throw new Error("Secure response ended unexpectedly");if(L.type==="error")throw Mt(L.error);return L}finally{clearTimeout(A)}};try{if(i.signal.aborted)throw i.signal.reason;if(this.channel.send({id:u,type:"http",method:a,path:c,headers:d}),i.body){const E=i.body.getReader();g=E;let x=0,S=0;try{for(;;){const{done:T,value:B}=await E.read();if(T)break;if(x+=B.byteLength,x>l)throw new Error("Request body exceeds upload limit");for(let v=0;v<B.byteLength;v+=En){if(this.channel.send({id:u,type:"upload",data:Kh(B.subarray(v,v+En))}),(await b()).type!=="upload-ack")throw new Error("Invalid upload acknowledgement");S+=Math.min(En,B.byteLength-v),r?.onUploadProgress?.(S)}}}catch(T){throw await E.cancel(T).catch(()=>{}),T}finally{g=void 0,E.releaseLock()}}if(i.signal.aborted||this.stopped)throw new Error("Request aborted");this.channel.send({id:u,type:"upload-end"});const A=await b();if(A.type!=="head"||typeof A.status!="number")throw new Error("Invalid response header");const L=new Headers(A.headers);if(a==="HEAD"||[204,205,304].includes(A.status)){if((await b()).type!=="end")throw new Error("Unexpected response body");return C(),new Response(null,{status:A.status,headers:L})}let I=!1;const R=new ReadableStream({pull:async E=>{try{I&&(this.channel.send({id:u,type:"ack"}),I=!1);const x=await b();if(x.type==="end"){E.close(),C();return}if(x.type!=="chunk"||typeof x.data!="string")throw new Error("Invalid response chunk");const S=zh(x.data);if(S.length>En)throw new Error("Response chunk exceeds budget");E.enqueue(S),I=!0}catch(x){E.error(x),w(),C()}},cancel:()=>{w(),C()}},{highWaterMark:En,size:E=>E.byteLength});return new Response(R,{status:A.status,headers:L})}catch(A){throw w(),C(),A}}retire(){for(const e of this.pending.values())e.socket?.accept({id:"",type:"ws-close",code:Hh,reason:qh});this.close()}close(e=new Error("Secure connection closed")){if(!this.stopped){this.stopped=!0,this.closeReason=e;for(const r of this.waiting.splice(0))r.cleanup(),r.reject(e);for(const r of this.pending.values())r.queue.end(e),r.cancelUpload?.(),r.socket?.fail(e);this.pending.clear(),this.channel.close(e)}}}async function fr(t){const e=new URL(t.url);if(!["wss:","ws:"].includes(e.protocol))throw new Error("A WebSocket endpoint is required");if(e.protocol==="ws:"&&!["127.0.0.1","localhost","[::1]"].includes(e.hostname))throw new Error("Remote secure channels require WSS");const r=t.identity??await Uh(),n=(t.socketFactory??(c=>new WebSocket(c)))(e.href),o=Fx(n),s=new AbortController,i=setTimeout(()=>s.abort(new Error("Secure handshake timed out")),2e4),a=t.signal?AbortSignal.any([t.signal,s.signal]):s.signal;try{await new Promise((d,u)=>{if(a.aborted){u(a.reason);return}const f=()=>{a.removeEventListener("abort",m),n.removeEventListener("open",h),n.removeEventListener("error",g),n.removeEventListener("close",g)},h=()=>{f(),d()},g=()=>{f(),u(new Error("Secure transport unavailable"))},m=()=>{f(),u(a.reason)};a.addEventListener("abort",m,{once:!0}),n.addEventListener("open",h),n.addEventListener("error",g),n.addEventListener("close",g),n.readyState===1&&h()});const c=await Lx({identity:r,duplex:o,initiator:!0,targetPinnedPeerId:t.targetPeerId,signal:a}),l=new $x(new Ox(c.duplex),r,c.authenticatedPeerId);if(t.pairingCode)try{await l.request({type:"pair",code:t.pairingCode})}catch(d){throw l.close(Mt(d)),d}return l}catch(c){throw n.close(),c}finally{clearTimeout(i)}}const Ed=256*1024,Hx=1024*1024;class qx extends EventTarget{constructor(e,r,n=o=>new WebSocket(o)){if(super(),this.url=e,!/^[a-zA-Z0-9_.:-]{1,160}$/.test(r))throw new Error("Invalid target identity");this.upstream=n(e),this.deadline=setTimeout(()=>this.fail("Relay connection timed out"),2e4),this.upstream.addEventListener("message",o=>{if(this.readyState!==3)try{if(typeof o.data!="string"||new TextEncoder().encode(o.data).length>Ed)throw new Error("Invalid relay envelope");const s=JSON.parse(o.data);if(s.type==="ready"&&!this.requested){this.requested=!0,this.transmit({type:"open",streamId:this.streamId,serviceId:r});return}if(s.streamId!==this.streamId)return;if(s.type==="opened"&&this.readyState===0){clearTimeout(this.deadline),this.readyState=1;const l=new Event("open");this.dispatchEvent(l),this.onopen?.(l);return}if(s.type==="close"){this.finish(1001,"Relay route closed"),this.upstream.close();return}if(s.type!=="data"||this.readyState!==1||s.encoding!=="base64"||typeof s.payload!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s.payload))throw new Error("Invalid ciphertext relay frame");const i=zh(s.payload),a=this.binaryType==="blob"?new Blob([i]):i.buffer,c=new MessageEvent("message",{data:a});this.dispatchEvent(c),this.onmessage?.(c)}catch{this.fail("Relay protocol rejected frame")}}),this.upstream.addEventListener("close",o=>this.finish(o.code||1006,"Relay disconnected")),this.upstream.addEventListener("error",()=>this.fail("Relay transport unavailable"))}url;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;protocol="";extensions="";binaryType="arraybuffer";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;upstream;streamId=crypto.randomUUID();requested=!1;deadline;get bufferedAmount(){return this.upstream.bufferedAmount}transmit(e){const r=JSON.stringify(e);if(this.upstream.readyState!==1||this.upstream.bufferedAmount+r.length>Hx||r.length>Ed)throw new Error("Relay unavailable or congested");this.upstream.send(r)}send(e){if(this.readyState!==1)throw new Error("Relay socket is not open");let r;if(ArrayBuffer.isView(e))r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else if(e instanceof ArrayBuffer)r=new Uint8Array(e);else throw new Error("Relay secure transport requires binary bytes");try{this.transmit({type:"data",streamId:this.streamId,encoding:"base64",payload:Kh(r)})}catch(n){throw this.fail("Relay transport congested"),n}}close(e=1e3,r=""){if(this.readyState!==3){try{this.requested&&this.transmit({type:"close",streamId:this.streamId})}catch{}this.finish(e,r),this.upstream.close()}}fail(e){if(this.readyState===3)return;const r=new Event("error");this.dispatchEvent(r),this.onerror?.(r),this.finish(1006,e),this.upstream.close()}finish(e,r){if(this.readyState===3)return;clearTimeout(this.deadline),this.readyState=3;const n=new CloseEvent("close",{code:e,reason:r,wasClean:e===1e3});this.dispatchEvent(n),this.onclose?.(n)}}function Xh(t){return e=>new qx(e,t)}function Kx(t){if(typeof t!="string"||!t.startsWith("/api/")||/[\\\x00-\x20\x7f#]/.test(t))return null;const e=t.split("?")[0];if(e.includes("//"))return null;try{const n=e.split("/").map((o,s)=>{if(s===0||o===""&&s===e.split("/").length-1)return o;const i=decodeURIComponent(o);if(!i||i==="."||i===".."||/[\\/\x00-\x1f\x7f]/.test(i)||/%[a-f0-9]{2}/i.test(i))throw new Error("Ambiguous API path");return i}).join("/");return n.endsWith("/")&&!n.startsWith("/api/terminal/fs/preview/")?null:n}catch{return null}}function zx(t){if(!("serviceWorker"in navigator))return()=>{};const e=new Set,r=n=>{if(n.source!==navigator.serviceWorker.controller||n.data?.type!=="termdock-secure-fetch"||n.ports.length!==1)return;const o=n.ports[0],{path:s,method:i,headers:a,body:c,expectedTargetPeerId:l,previewPrefix:d}=n.data;let u;try{u=new URL(s,location.origin)}catch{o.close();return}if(u.origin!==location.origin||!u.pathname.startsWith("/api/")||e.size>=32||typeof i!="string"||c!==void 0&&(!(c instanceof ArrayBuffer)||c.byteLength>5*1024*1024)){o.postMessage({type:"error"}),o.close();return}if(d!==void 0&&(typeof d!="string"||!d.endsWith("/")||!/^\/api\/terminal\/fs\/preview\/[a-f0-9]{32}\//.test(d)||!["GET","HEAD"].includes(i)||!Kx(u.pathname)?.startsWith(d))){o.postMessage({type:"error"}),o.close();return}const f=new AbortController;let h,g,m=!1,y=!1;const w=()=>{y||(y=!0,e.delete(w),f.abort(),h?.cancel().catch(()=>{}),o.close())};e.add(w),o.onmessage=C=>{if(C.data?.type==="cancel"){w();return}C.data?.type!=="pull"||m||y||(m=!0,(async()=>{if(!h){o.postMessage({type:"end"}),w();return}if(!g?.length){const A=await h.read();if(A.done){o.postMessage({type:"end"}),w();return}g=A.value}const b=g.slice(0,64*1024);g=g.subarray(b.length),o.postMessage({type:"chunk",data:b.buffer},[b.buffer])})().catch(()=>{o.postMessage({type:"error"}),w()}).finally(()=>{m=!1}))},o.onmessageerror=w,o.start(),(async()=>{const C=await t();if(y)return;if(l&&l!==C.targetPeerId)throw new Error("Preview target changed");const b=await C.fetch(u.pathname+u.search,{method:i,headers:a,body:["GET","HEAD"].includes(i)?void 0:c,signal:f.signal});if(y){await b.body?.cancel();return}h=b.body?.getReader();const A={};b.headers.forEach((L,I)=>{A[I]=L}),o.postMessage({type:"head",status:b.status,headers:A,bodyless:!h,targetPeerId:C.targetPeerId})})().catch(()=>{y||(o.postMessage({type:"error"}),w())})};return navigator.serviceWorker.addEventListener("message",r),()=>{navigator.serviceWorker.removeEventListener("message",r);for(const n of[...e])n()}}class Ye extends Error{constructor(){super("Device authorization expired or revoked")}}const Lo=new WeakMap;function dn(t,e={}){const r=Lo.get(t);if(!t.closed&&r&&(!r.settled||Date.now()-r.at<(e.maxAgeMs??1e3)))return r.pending;const n={at:Date.now(),settled:!1,pending:void 0},o=Wx(t,e.timeoutMs??5e3).then(s=>(n.at=Date.now(),n.settled=!0,s),s=>{throw Lo.get(t)===n&&Lo.delete(t),s});return n.pending=o,Lo.set(t,n),o}async function Wx(t,e){const r=await t.request({type:"permissions"},{timeoutMs:e});if(r.type!=="result"||typeof r.fullService!="boolean"||!Array.isArray(r.grants))throw new Error("Invalid permission response");const n=r.grants,o=r.fullService===!0;if(!o&&n.length===0)throw new Ye;return{fullService:o,grants:n,canManage:o&&n.length>0||n.some(s=>s.actions.includes("authorization.manage"))}}const Yh="termdock-secure-last-path:",Vx=10*6e4;function Zh(t){try{const e=JSON.parse(sessionStorage.getItem(Yh+t)||"null");return e&&typeof e.key=="string"&&Date.now()-e.at<Vx?e.key:void 0}catch{return}}function _a(t,e){try{sessionStorage.setItem(Yh+t,JSON.stringify({key:e,at:Date.now()}))}catch{}}function Jh(t,e,r=!1){return new Promise((n,o)=>{let s=0,i=0,a=!1,c,l;const d=new Set,u=()=>{clearTimeout(l);for(const h of d)h.abort();d.clear()},f=()=>{if(a)return;if(s>=t.length){i||(a=!0,u(),o(c||new Error("没有可用的连接路线。")));return}if(i>=(r?1:2))return;const h=t[s++],g=performance.now(),m=w=>{performance.getEntriesByName("termdock:connection-path").length>64&&performance.clearMeasures("termdock:connection-path"),performance.measure("termdock:connection-path",{start:g,end:performance.now(),detail:{path:h.key.startsWith("relay:")?"relay":"direct",ok:w}})},y=new AbortController;d.add(y),i++,h.run(y.signal).then(w=>{if(m(!0),d.delete(y),a){e(w);return}a=!0,u(),n({value:w,key:h.key})},w=>{if(m(!1),d.delete(y),i--,!a){if(c=w,w instanceof Ye){a=!0,u(),o(w);return}f()}}),clearTimeout(l),!r&&s<t.length&&(l=setTimeout(f,400))};f()})}const Gx=3,Xx=1/0,Yx=10,Qh="termdock-secure-workspace-limit";function ep(t){return t===1/0||Number.isInteger(t)&&t>=3&&t<=Yx}function Zx(){try{const t=localStorage.getItem(Qh),e=t==="unlimited"?1/0:Number(t);if(ep(e))return e}catch{}return navigator.maxTouchPoints>0?Gx:Xx}function Jx(t,e,r,n){if(t.length<=n)return t;const o=new Set(["root",e,...r?[r]:[]]),s=[...t].reverse().sort((i,a)=>a.touchedAt-i.touchedAt);for(const i of s){if(o.size>=n)break;o.add(i.key)}return t.filter(i=>o.has(i.key))}const tp="termdock-workspace",Da="termdock:workspace-visibility",Oa="termdock:workspace-activate";function zs(){return window.parent!==window&&location.pathname==="/workspace.html"&&new URLSearchParams(location.search).get(tp)||"root"}let Ad,kd;function Et(){try{if(window.parent===window)return window.__termdockWorkspaceHost;const t=window.parent.__termdockWorkspaceHost;return t&&t!==Ad&&(Ad=t,kd={...t,subscribe(e){const r=t.subscribe(e,zs()),n=o=>{o.persisted||r()};return window.addEventListener("pagehide",n),()=>{r(),window.removeEventListener("pagehide",n)}}}),t?kd:void 0}catch{return}}function Si(){const t=Et();return!t||t.snapshot().activeKey===zs()}function Ss(t,e=!0){return Et()?.activate(t,e)??!1}function Lr(t){Et()?.report(zs(),t)}const Fa="termdock-secure-workspace-session:",rp="termdock-secure-last-workspace";function Qx(){for(const t of["sessionStorage","localStorage"])try{const e=window[t].getItem(rp);if(e)return e}catch{}return null}function eS(t){for(const e of["sessionStorage","localStorage"])try{window[e].setItem(rp,t)}catch{}}function fC(t){if(t)try{const e=JSON.parse(localStorage.getItem(Fa+t)||"null");return localStorage.removeItem(Fa+t),e&&typeof e.sessionId=="string"&&Date.now()-e.at<6e4?e.sessionId:void 0}catch{return}}function tS(t){if(window.parent!==window||window.termdockDesktop)return;if(window.__termdockWorkspaceHost)return window.__termdockWorkspaceHost;let e={activeKey:"root",items:[{key:"root",service:t,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]};try{const u=Qx(),f=t&&u!==t.targetPeerId?qt().find(h=>h.targetPeerId===u):void 0;f?.targetPeerId&&(e={activeKey:f.targetPeerId,items:[...e.items,{key:f.targetPeerId,service:f,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]})}catch{}let r=Zx(),n=e.activeKey==="root"?"root":null;const o=new Map,s=new Map([["root",window]]),i=new Set,a=()=>{for(const u of[...o.keys()])u()},c=()=>{const u=Jx(e.items,e.activeKey,n,r),f=new Set(u.map(h=>h.key));e={...e,items:u};for(const[h,g]of o)g&&!f.has(g)&&o.delete(h);for(const h of s.keys())f.has(h)||s.delete(h);for(const h of i)f.has(h)||i.delete(h)},l=(u,f)=>{try{const h=f.document.createEvent("CustomEvent");if(h.initCustomEvent(Da,!1,!1,{active:e.activeKey===u}),f.dispatchEvent(h),e.activeKey===u){const g=f.document.createEvent("Event");if(g.initEvent("resize",!1,!1),f.dispatchEvent(g),i.delete(u)){const m=f.document.createEvent("Event");m.initEvent(Oa,!1,!1),f.dispatchEvent(m)}}else f.document.activeElement?.blur?.()}catch{}},d={snapshot:()=>e,subscribe:(u,f)=>(o.set(u,f),()=>{o.delete(u)}),present(u){n=u},retentionLimit:()=>r,setRetentionLimit(u){if(ep(u)){r=u;try{localStorage.setItem(Qh,u===1/0?"unlimited":String(u))}catch{}c(),a()}},activate(u,f=!0){const h=Ns(u);if(!h?.targetPeerId)return!1;const g=e.items.find(w=>w.service?.targetPeerId===h.targetPeerId),m=g?.key||h.targetPeerId,y=g?{...g,service:h,touchedAt:Date.now()}:{key:m,service:h,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()};e={activeKey:m,items:g?e.items.map(w=>w===g?y:w):[...e.items,y]},c(),eS(h.targetPeerId),f&&i.add(m),a();for(const[w,C]of s)l(w,C);return!0},report(u,f){const h=e.items.find(m=>m.key===u);if(!h||f.service&&h.service?.targetPeerId&&f.service.targetPeerId!==h.service.targetPeerId)return;const g={...h,...f};JSON.stringify(g)!==JSON.stringify(h)&&(e={...e,items:e.items.map(m=>m===h?g:m)},a())},attach(u,f){f&&e.items.some(h=>h.key===u)?(s.set(u,f),l(u,f)):s.delete(u)},focusSession(u,f){const h=qt().find(m=>m.targetPeerId===u);if(!h)return!1;try{localStorage.setItem(Fa+u,JSON.stringify({sessionId:f,at:Date.now()}))}catch{return!1}d.activate(h,!1);const g=s.get(e.activeKey);if(g){const m=g.document.createEvent("CustomEvent");m.initCustomEvent("termdock:workspace-session",!1,!1,null),g.dispatchEvent(m)}return!0}};return window.__termdockWorkspaceHost=d,d}let Ei;async function Je(){return Ei||(Ei=(async()=>{const t=await new Promise((e,r)=>{const n=indexedDB.open("termdock-device-identity",1);n.onupgradeneeded=()=>n.result.createObjectStore("keys"),n.onsuccess=()=>e(n.result),n.onerror=()=>r(n.error)});try{const e=await new Promise((o,s)=>{const i=t.transaction("keys").objectStore("keys").get("identity");i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});if(e)return xd(e);const r=await Uh();let n=r;return await new Promise((o,s)=>{const i=t.transaction("keys","readwrite"),a=i.objectStore("keys"),c=a.get("identity");c.onsuccess=()=>{typeof c.result=="string"?n=xd(c.result):a.put(Rx(r),"identity")},i.oncomplete=()=>o(),i.onerror=()=>s(i.error)}),n}finally{t.close()}})()),Ei}const zt="termdock:secure-state";let J,Br,Be,nn="direct",Ho=!1,Cd=0,qo=!1,Id=-1/0;const on=globalThis.fetch.bind(globalThis);function ne(){return jr()}function An(){return J}function rS(){return Be}function np(){J?.close(),Be?.close(),J=void 0,Be=void 0}async function op(){const t=await on("/api/auth/status",{signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error("Failed to query auth status");return t.json()}async function nS(){if(ne()){await nt();return}if((await op()).enabled)return;const t=await on("/api/auth/open/parameters",{cache:"no-store"});if(!t.ok)throw new Error("Open service unavailable");const{serviceIdentity:e}=await t.json();if(typeof e!="string"||!e)throw new Error("Invalid service identity");await Xe({url:location.origin,targetPeerId:e,serviceName:location.hostname})}async function oS(t,e){const{startPasswordBootstrap:r,finishPasswordBootstrap:n}=await Wt(async()=>{const{startPasswordBootstrap:l,finishPasswordBootstrap:d}=await import("./passwordBootstrap-DkJCf35_.js");return{startPasswordBootstrap:l,finishPasswordBootstrap:d}},__vite__mapDeps([0,1,2,3])),o=l=>t===location.origin?l:new URL(l,t).href,s=async(l,d)=>{const u=await on(o(l),{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(15e3),...d?{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)}:{}});if(!u.ok)throw new Error(u.status===429?"尝试次数较多,请稍后再试。":u.status===401?"密码不正确,请重新输入。":"暂时无法登录这台服务,请稍后重试。");return u.json()},{saltHex:i}=await s("/api/auth/password/parameters"),a=await Je(),c=await r(e,i);try{const l=await s("/api/auth/password/start",{startLoginRequest:c.startLoginRequest,clientIdentity:a.peerId});let d;try{d=await n(c,l,{clientIdentity:a.peerId,origin:location.origin})}catch{throw new Error("密码不正确,或服务身份无法验证。请检查后重试。")}return await s("/api/auth/password/finish",{attemptId:d.attemptId,finishLoginRequest:d.finishLoginRequest}),{url:t,targetPeerId:d.serverIdentity,serviceName:new URL(t).host,serviceOrigin:t}}finally{c.passwordKey=""}}async function Oc(t,e){const r=ne();if(r&&(r.serviceOrigin||r.url)===t)return await Ma(r,e),r;try{return await oS(t,e)}catch(n){if(!(n instanceof TypeError)&&!(n instanceof DOMException))throw n;const o=(await Ze()).find(i=>i.targetPeerId&&(i.serviceOrigin||i.url)===t);if(!o?.targetPeerId)throw new Error("暂时连不上这台服务,请检查地址和网络。");const s={...o,targetPeerId:o.targetPeerId,serviceName:o.label};return await Ma(s,e),s}}async function Ma(t,e){const r=await sp(t),{startPasswordBootstrap:n,finishPasswordBootstrap:o}=await Wt(async()=>{const{startPasswordBootstrap:i,finishPasswordBootstrap:a}=await import("./passwordBootstrap-DkJCf35_.js");return{startPasswordBootstrap:i,finishPasswordBootstrap:a}},__vite__mapDeps([0,1,2,3]));let s;try{const i=await r.request({type:"password-parameters"},{timeoutMs:5e3});s=await n(e,String(i.saltHex));const a=await r.request({type:"password-start",startLoginRequest:s.startLoginRequest,origin:location.origin}),c=await o(s,a,{clientIdentity:(await Je()).peerId,origin:location.origin});if(c.serverIdentity!==t.targetPeerId)throw new Error("服务身份发生变化。");await r.request({type:"password-finish",attemptId:c.attemptId,finishLoginRequest:c.finishLoginRequest})}catch{throw new Error("暂时无法登录,请检查目标服务密码与入口授权后重试。")}finally{s&&(s.passwordKey=""),r.close()}}async function sS(t){try{const e=ne(),r=e?.serviceOrigin||location.origin,n=await Oc(r,t);return await Xe({...n,routes:e?.routes,serviceName:e?.serviceName||n.serviceName}),Response.json({ok:!0})}catch(e){return Response.json({error:e instanceof Error?e.message:"暂时无法登录,请重试。",code:"INVALID_PASSWORD"},{status:401})}}async function Rd(t,e){const r=_e(t),n=(await Ze()).find(i=>(i.serviceOrigin||i.url)===r&&i.targetPeerId);if(e===void 0&&n?.targetPeerId)try{return await Xe({...n,targetPeerId:n.targetPeerId,serviceName:n.label}),{}}catch(i){if(!(i instanceof Ye))throw i}if(e!==void 0){const i=await Oc(r,e);if(n?.targetPeerId&&n.targetPeerId!==i.targetPeerId)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Xe({...i,routes:n?.routes,serviceName:n?.label||i.serviceName}),{}}const o=await on(new URL("/api/auth/open/parameters",r).href,{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(1e4)}).catch(()=>{throw new Error("暂时连不上这台服务,请检查地址和网络后重试。")});if(o.status===403)return{passwordRequired:!0};if(!o.ok)throw new Error("这台服务暂时不可用,请稍后重试。");const{serviceIdentity:s}=await o.json();if(typeof s!="string"||!s)throw new Error("这不是可连接的 Termdock 服务。");if(n?.targetPeerId&&n.targetPeerId!==s)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Xe({url:r,targetPeerId:s,serviceName:n?.label||new URL(r).host,serviceOrigin:r}),{}}function hr(t){const e=[...t.routes||[]];if(t.entryServiceId&&t.entryServiceId!==t.targetPeerId&&e.unshift({url:t.url,targetPeerId:t.entryServiceId}),!e.length&&t.routes===void 0)try{const r=JSON.parse(localStorage.getItem(sc)||"null");r&&r.targetPeerId!==t.targetPeerId&&new URL(r.url).host===new URL(t.url).host&&e.push(r)}catch{}return e.flatMap((r,n)=>{try{return r.targetPeerId&&r.targetPeerId!==t.targetPeerId&&e.findIndex(o=>o.targetPeerId===r.targetPeerId)===n?[{url:_e(r.url),targetPeerId:r.targetPeerId}]:[]}catch{return[]}}).slice(0,4)}function fo(t){const e=hr(t),r=[t.serviceOrigin||t.url,...(t.routes||[]).slice(0,4).filter(o=>o.targetPeerId===t.targetPeerId).map(o=>o.url)],n=new Set;for(const o of r)try{const s=_e(o);e.some(i=>i.url===s)||n.add(s)}catch{}return[...n]}function pr(t){const e=new URL("/api/federation/secure",_e(t));return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.href}async function Vt(t,e){return fr({url:pr(t.url),targetPeerId:t.targetPeerId,identity:await Je(),signal:e?AbortSignal.any([e,AbortSignal.timeout(5e3)]):AbortSignal.timeout(5e3)})}async function sp(t,e){const r=await Je(),n=fo(t).map(i=>({key:`direct:${i}`,run:a=>fr({url:pr(i),targetPeerId:t.targetPeerId,identity:r,signal:AbortSignal.any([a,AbortSignal.timeout(8e3),...e?[e]:[]])})}));for(const i of hr(t))n.push({key:`relay:${i.targetPeerId}:${i.url}`,run:async a=>{e&&(a=AbortSignal.any([a,e]));const c=[J,Be].find(d=>d&&!d.closed&&d.targetPeerId===i.targetPeerId),l=c||await Vt(i,a);try{if(a.aborted)throw a.reason;const d=await l.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(a.aborted)throw a.reason;if(typeof d.routeToken!="string")throw new Error("入口未允许此设备连接该服务。");const u=new URL(pr(i.url));return u.pathname="/api/federation/relay",u.searchParams.set("routeToken",d.routeToken),await fr({url:u.href,targetPeerId:t.targetPeerId,identity:r,socketFactory:Xh(t.targetPeerId),signal:AbortSignal.any([a,AbortSignal.timeout(8e3)])})}finally{c||l.close()}}});const o=Zh(t.targetPeerId);n.sort((i,a)=>+(a.key===o)-+(i.key===o));const s=await Jh(n,i=>i.close());return _a(t.targetPeerId,s.key),s.value}async function iS(t,e){const r=await sp(t,e),n=()=>r.close();e.addEventListener("abort",n,{once:!0});try{if(e.aborted||(await dn(r,{timeoutMs:3e3}),e.aborted))throw e.reason;return r}catch(o){throw r.close(),o}finally{e.removeEventListener("abort",n)}}async function Xe(t,e={}){const r=J,n=Be,o=await Je(),s=_e(t.serviceOrigin||t.url),i=(await Ze()).find(w=>w.targetPeerId===t.targetPeerId),a={...t,routes:t.routes??i?.routes},c=hr(a),l=fo(a);let d,u,f=t.pairingCode,h="direct";const g=new Set,m=new Map,y=async(w,C)=>{if(r&&!r.closed&&r.targetPeerId===w.targetPeerId)return r;if(n&&!n.closed&&n.targetPeerId===w.targetPeerId)return n;const b=m.get(w.targetPeerId);if(b&&!b.closed)return b;const A=await Vt(w,C);return g.add(A),m.set(w.targetPeerId,A),A};try{if(t.routeCode&&t.entryServiceId){const E=c.find(T=>T.targetPeerId===t.entryServiceId);if(!E)throw new Error("邀请缺少入口信息。");if((await(await y(E)).request({type:"route-pair",code:t.routeCode})).serviceId!==t.targetPeerId)throw new Error("邀请的目标服务不一致。");t.routeOnly&&await At({id:t.targetPeerId,url:s,label:t.serviceName||new URL(s).host,targetPeerId:t.targetPeerId,serviceOrigin:s,routes:c})}const w=[],C=async(E,x)=>{const S=()=>E.close();x.addEventListener("abort",S,{once:!0});try{if(x.aborted||(await dn(E),x.aborted))throw x.reason}catch(T){throw E.close(),T}finally{x.removeEventListener("abort",S)}};for(const E of l)w.push({key:`direct:${E}`,run:async x=>{const S=await fr({url:pr(E),targetPeerId:t.targetPeerId,pairingCode:f,identity:o,signal:AbortSignal.any([x,AbortSignal.timeout(8e3)])});return f=void 0,await C(S,x),{client:S,path:"direct"}}});for(const E of c)w.push({key:`relay:${E.targetPeerId}:${E.url}`,run:async x=>{let S,T;try{if(S=await y(E,x),x.aborted)throw x.reason;const B=await S.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(x.aborted)throw x.reason;if(typeof B.routeToken!="string"||!B.routeToken)throw new Error("入口未允许此设备连接该服务。");const v=new URL(pr(E.url));return v.pathname="/api/federation/relay",v.searchParams.set("routeToken",B.routeToken),T=await fr({url:v.href,targetPeerId:t.targetPeerId,pairingCode:f,identity:o,socketFactory:Xh(t.targetPeerId),signal:AbortSignal.any([x,AbortSignal.timeout(8e3)])}),f=void 0,await C(T,x),{client:T,entry:S,path:"relay"}}catch(B){throw T?.close(),S&&S!==n&&S!==r&&S.close(),B}}});const b=Zh(t.targetPeerId);w.sort((E,x)=>+(x.key===b)-+(E.key===b));const A=await Jh(w,E=>{E.client.close(),E.entry&&E.entry!==r&&E.entry!==n&&E.entry.close()},!!f);if(d=A.value.client,u=A.value.entry,h=A.value.path,e.renewIfCurrent){if(J!==e.renewIfCurrent||r!==e.renewIfCurrent||r.closed||!r.canSwitchTransport||ne()?.targetPeerId!==t.targetPeerId){d.close();for(const E of g)E!==Be&&E!==J&&E.close();return J??r}J=d,nn=h,Be=u,_a(t.targetPeerId,A.key),r.retire();for(const E of new Set([n,...g]))E&&E!==r&&E!==d&&E!==u&&E.close();return window.dispatchEvent(new Event(zt)),d}if(_a(t.targetPeerId,A.key),J!==r&&J&&!J.closed&&J.targetPeerId===t.targetPeerId){d.close();for(const E of g)E!==Be&&E.close();return J}h==="direct"&&new URL(s).host===location.host&&Ig(t.targetPeerId);const L=(await Ze()).find(E=>E.targetPeerId===t.targetPeerId||!E.targetPeerId&&(E.serviceOrigin||E.url)===s),I=L?.label||t.serviceName||new URL(s).host,R={url:s,targetPeerId:t.targetPeerId,serviceName:I,serviceOrigin:s,routes:a.routes??c};if(await(e.rememberOnly?Pg:At)({id:L?.id||t.targetPeerId,...R,label:I}),Mr!=="unpaired"&&Mr!==t.targetPeerId&&Et()&&Ss({id:L?.id||t.targetPeerId,...R,label:I})){d.close();for(const E of g)E!==r&&E!==n&&E.close();return r||d}Fu(R),J=d,nn=h,Be=u;for(const E of new Set([r,n,...g]))E&&E!==d&&E!==u&&E.close();return Mr!==t.targetPeerId?(location.reload(),new Promise(()=>{})):(window.dispatchEvent(new Event(zt)),d)}catch(w){d?.close();for(const C of g)C!==n&&C.close();throw w}}async function aS(){const t=J,e=ne();if(!(qo||Ho||Br||!t?.renewalDue||!t.canSwitchTransport||!e||performance.now()-Id<3e4)){Id=performance.now(),qo=!0;try{await Xe(e,{renewIfCurrent:t})}catch(r){console.debug("[connection] renewal deferred",{reason:r instanceof Error?r.message:"unknown"})}finally{qo=!1}}}async function cS(){const t=J,e=ne();if(Date.now()-Cd<6e4||qo||Ho||nn!=="relay"||!t||t.closed||!t.canSwitchTransport||!e?.serviceOrigin)return;Ho=!0,Cd=Date.now();let r;try{for(const o of fo(e))try{r=await fr({url:pr(o),targetPeerId:e.targetPeerId,identity:await Je(),signal:AbortSignal.timeout(3e3)}),await dn(r);break}catch(s){if(r?.close(),r=void 0,s instanceof Ye)throw s}if(!r||J!==t||!t.canSwitchTransport)return;const n=Be;J=r,r=void 0,Be=void 0,nn="direct",t.close(),n?.close(),window.dispatchEvent(new Event(zt))}catch(n){n instanceof Ye&&J===t&&(np(),window.dispatchEvent(new Event("auth:unauthorized")))}finally{r?.close(),Ho=!1}}function lS(){return nn}async function dS(t){return t?(t.throwIfAborted(),new Promise((e,r)=>{const n=()=>r(t.reason);t.addEventListener("abort",n,{once:!0}),nt().then(o=>{t.removeEventListener("abort",n),t.aborted?r(t.reason):e(o)},o=>{t.removeEventListener("abort",n),r(o)})})):nt()}async function nt(){if(J&&!J.closed){const e=J;return aS(),e}if(J=void 0,Br)return Br;const t=ne();if(!t)throw new Error("DEVICE_PAIRING_REQUIRED");return Br=Xe(t,{rememberOnly:!0}).catch(e=>{if(J&&!J.closed&&J.targetPeerId===t.targetPeerId)return J;throw e}).finally(()=>{Br=void 0}),Br}function uS(t){const e=new URL(t,location.href);if(J&&!J.closed)return J.openSocket(e.pathname+e.search);let r;const n=new Gh(t,o=>r?.send(o),()=>r?.close());return nt().then(o=>{n.readyState!==3&&(r=o.openSocket(e.pathname+e.search),r.onopen=()=>n.accept({type:"ws-ready",id:""}),r.onmessage=s=>n.accept({type:"ws-data",id:"",data:s.data}),r.onclose=s=>n.accept({type:"ws-close",id:"",code:s.code,reason:s.reason}),r.onerror=()=>n.fail(new Error("Encrypted connection unavailable")))}).catch(o=>n.fail(o)),n}function fS(){zx(nt),window.fetch=async(t,e)=>{const r=new URL(t instanceof Request?t.url:String(t),location.href);if(!r.pathname.startsWith("/api/"))return on(t,e);if(r.origin!==location.origin)throw new Error("Remote business API requires a paired encrypted service");if(r.pathname==="/api/meta")return on(t,e);if(r.pathname==="/api/auth/status"){if(!ne()){const s=await op();return Response.json({enabled:s.enabled,authenticated:!1})}try{const s=await dn(await nt());return Response.json({enabled:s.grants.length>0,authenticated:!0})}catch(s){if(s instanceof Ye)return Response.json({enabled:!0,authenticated:!1});throw s}}if(r.pathname==="/api/auth/login"){const i=await new Request(t instanceof Request?t:r.href,e).json();return sS(typeof i.password=="string"?i.password:"")}if(r.pathname==="/api/csrf-token")return Response.json({csrfToken:"encrypted-device-channel"});if(r.pathname==="/api/auth/logout")return J&&!J.closed&&await J.request({type:"logout"}),J?.close(),Be?.close(),J=void 0,Be=void 0,Cg(),location.reload(),Response.json({ok:!0});const n=e?.signal!==void 0?e.signal:t instanceof Request?t.signal:void 0,o=await dS(n);return t instanceof Request?o.fetch(t,e):o.fetch(r.pathname+r.search,e)}}async function hS(t){if(!t.targetPeerId)throw new Error("请先连接这台服务,再查看可中转的服务。");for(const e of fo({...t,targetPeerId:t.targetPeerId})){let r;const n={url:e,targetPeerId:t.targetPeerId};try{r=await Vt(n)}catch{continue}try{const o=await r.request({type:"route-targets"},{timeoutMs:5e3});if(!Array.isArray(o.items))throw new Error("入口服务需要更新后才能查看中转列表。");return{route:n,canManage:o.canManage===!0,items:o.items}}catch(o){throw o instanceof Error&&/UNKNOWN|UNSUPPORTED/i.test(o.message)?new Error("入口服务需要更新后才能查看中转列表。"):o}finally{r.close()}}throw new Error("暂时连不上中转入口,请检查地址和网络后重试。")}async function pS(t,e){const r=await Vt(t);try{const n=await r.request({type:"route-targets"},{timeoutMs:5e3}),o=(Array.isArray(n.items)?n.items:[]).find(c=>c.serviceId===e);if(!o)throw new Error("该服务已不可见,请刷新列表或请入口管理员授权。");if(!o.available)throw new Error("入口暂时无法中转到这台服务,请稍后重试。");const s=(await Ze()).find(c=>c.targetPeerId===o.serviceId),i=[t,...(s?.routes||[]).filter(c=>c.targetPeerId!==t.targetPeerId)];if(i.length>4)throw new Error("这台服务已保存 4 个备用连接,请先移除一个后重试。");if(!o.authorized){if(!n.canManage)throw new Error("请先让入口管理员授权此设备。");await r.request({type:"route-grant",serviceId:o.serviceId,subjectId:(await Je()).peerId})}const a=s?.serviceOrigin||s?.url||o.url||t.url;return{url:a,serviceOrigin:a,targetPeerId:o.serviceId,serviceName:s?.label||o.label||(o.url?new URL(o.url).host:`中转服务 ${o.serviceId.slice(0,8)}`),routes:i}}finally{r.close()}}async function gS(t,e){const r=await Vt(t);try{const n=await r.request({type:"route-access"},{timeoutMs:5e3}),o=(await Je()).peerId;return{canManage:n.canManage===!0,grants:(Array.isArray(n.grants)?n.grants:[]).filter(s=>s.subjectId===o&&s.targetServiceId===e)}}finally{r.close()}}async function mS(t,e,r){if(r!==void 0&&(await Oc(_e(e.url),r)).targetPeerId!==e.targetPeerId)throw new Error("入口服务的身份已改变,请重新连接并确认。");const n=await Vt(e);try{await n.request({type:"route-grant",serviceId:t.targetPeerId,subjectId:(await Je()).peerId,url:_e(t.serviceOrigin||t.url)})}finally{n.close()}}async function wS(t,e){const r=await Vt(e);try{const n=await r.request({type:"route-access"},{timeoutMs:5e3}),o=(await Je()).peerId,s=(Array.isArray(n.grants)?n.grants:[]).filter(i=>i.subjectId===o&&i.targetServiceId===t&&i.active);for(const i of s)await r.request({type:"route-revoke",grantId:i.id})}finally{r.close()}}async function ip(t,e){const r=await Vt(e);try{const n=await r.request({type:"route-invite-create",serviceId:t.targetPeerId});if(typeof n.routeCode!="string"||typeof n.expiresAt!="number")throw new Error("暂时无法生成备用连接邀请。");return{routeCode:n.routeCode,expiresAt:n.expiresAt}}finally{r.close()}}async function Ko(t,e){const r=(await Ze()).find(o=>o.id===t.id||t.targetPeerId&&o.targetPeerId===t.targetPeerId)||t;await At({...r,url:r.serviceOrigin||r.url,entryServiceId:void 0,routes:e});const n=ne();n&&n.targetPeerId===t.targetPeerId&&Fu({...n,url:n.serviceOrigin||n.url,entryServiceId:void 0,routes:e})}async function yS(t,e){const r=t.targetPeerId;if(!r)throw new Error("请先连接这台服务,再添加备用地址。");let n;try{n=_e(e)}catch{throw new Error("请输入有效的 HTTPS 地址,例如 https://电脑地址:9834。")}const o=async()=>(await Ze()).find(a=>a.targetPeerId===r)||t,s=a=>{const c=a.routes??hr({...a,targetPeerId:r});if(_e(a.serviceOrigin||a.url)===n||c.some(l=>_e(l.url)===n))throw new Error("这个地址已经在连接列表中。");if(c.length>=4)throw new Error("最多保存 4 个备用地址或入口,请先移除不再使用的连接。");return[...c,{url:n,targetPeerId:r}]};s(await o());let i;try{try{i=await fr({url:pr(n),targetPeerId:r,identity:await Je(),signal:AbortSignal.timeout(5e3)}),await dn(i)}catch(l){throw l instanceof Ye?new Error("这台服务尚未授权当前设备,请先恢复设备授权。"):new Error("无法验证这个地址。请确认能访问该地址、HTTPS 证书受信任,且运行的是同一台 Termdock 服务。")}const a=await o(),c=s(a);if(await Ko(a,c),ne()?.targetPeerId===r&&Mr===r&&(!J||J.closed)){const l=J,d=Be;J=i,i=void 0,Be=void 0,nn="direct",l?.close(),d?.close(),window.dispatchEvent(new Event(zt))}return c}finally{i?.close()}}async function Td(t,e){await Ma(t,e),await Xe({...t,pairingCode:void 0,routeCode:void 0})}function bS(t,e){return e.aborted?Promise.reject(e.reason):new Promise((r,n)=>{const o=()=>n(e.reason);e.addEventListener("abort",o,{once:!0}),t.then(r,n).finally(()=>e.removeEventListener("abort",o))})}function ap(){if(window.termdockDesktop||window.parent!==window)return;if(window.__termdockCollaboration)return window.__termdockCollaboration;const t=new Map;let e=[],r=!1;const n=l=>{const d=l.targetPeerId;if(ne()?.targetPeerId===d)return nt();const u=t.get(d);if(u)return u.then(h=>h.closed?(t.get(d)===u&&t.delete(d),n(l)):h);const f=iS({...l,targetPeerId:d},AbortSignal.timeout(12e3)).then(h=>{if(r||t.get(d)!==f)throw h.close(),new Error("服务连接已移除");return h}).catch(h=>{throw t.get(d)===f&&t.delete(d),h});return t.set(d,f),f},o=()=>{const l=ne(),d=qt();l&&!d.some(f=>f.targetPeerId===l.targetPeerId)&&d.push({...l,id:l.targetPeerId,label:l.serviceName||l.serviceOrigin||l.url});const u=new Set(d.map(f=>f.targetPeerId));for(const[f,h]of t)u.has(f)||(t.delete(f),h.then(g=>g.close()).catch(()=>{}));e=d.filter(f=>!!f.targetPeerId).map(f=>({origin:f.serviceOrigin||f.url,label:f.label,request:async(h,g="GET",m)=>{if(!/^\/collaboration-(?:federation|groups)(?:\/[^?#]*)?$/.test(h))throw new Error("无效的协作请求");const y=AbortSignal.timeout(18e3),w=await bS(n(f),y),C=new Headers({"Content-Type":"application/json"});if(g!=="GET"&&g!=="HEAD"){const L=await w.fetch("/api/csrf-token",{signal:y});if(!L.ok)throw new Error("无法读取目标服务的请求令牌");const I=await L.json();if(typeof I.csrfToken!="string")throw new Error("目标服务的请求令牌无效");C.set("X-XSRF-TOKEN",I.csrfToken)}const b=await w.fetch(`/api/terminal/operations${h}`,{method:g,headers:C,signal:y,...m===void 0?{}:{body:JSON.stringify(m)}}),A=b.status===204?void 0:await b.json();if(!b.ok)throw new Error(A?.error||"服务不可达或未授权协作访问");return A}}))},s=new Tg(()=>e),i={peers:l=>(o(),s.peers(l)),save:async(l,d)=>{o();const u=await s.save(l,d);return a(),u}},a=async()=>{r||document.hidden||!navigator.onLine||!ne()||(o(),!(e.length<2)&&await s.refresh().catch(()=>{}))};window.__termdockCollaboration=i;const c=window.setInterval(()=>{a()},2e3);return document.addEventListener("visibilitychange",a),window.addEventListener("online",a),window.addEventListener("pageshow",a),window.addEventListener("pagehide",l=>{if(!l.persisted){r=!0,clearInterval(c);for(const d of t.values())d.then(u=>u.close()).catch(()=>{});t.clear()}}),a(),i}function cp(){if(!window.termdockDesktop)try{if(window.parent===window)return ap();if(location.pathname==="/workspace.html"&&window.parent.location.origin===location.origin)return window.parent.__termdockCollaboration}catch{}}var Bo={},Pd;function vS(){if(Pd)return Bo;Pd=1;var t=wg();return Bo.createRoot=t.createRoot,Bo.hydrateRoot=t.hydrateRoot,Bo}var xS=vS();const SS=Du(xS);const lp=(...t)=>t.filter((e,r,n)=>!!e&&e.trim()!==""&&n.indexOf(e)===r).join(" ").trim();const ES=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const AS=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,n)=>n?n.toUpperCase():r.toLowerCase());const Nd=t=>{const e=AS(t);return e.charAt(0).toUpperCase()+e.slice(1)};var Ai={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const kS=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},CS=M.createContext({}),IS=()=>M.useContext(CS),RS=M.forwardRef(({color:t,size:e,strokeWidth:r,absoluteStrokeWidth:n,className:o="",children:s,iconNode:i,...a},c)=>{const{size:l=24,strokeWidth:d=2,absoluteStrokeWidth:u=!1,color:f="currentColor",className:h=""}=IS()??{},g=n??u?Number(r??d)*24/Number(e??l):r??d;return M.createElement("svg",{ref:c,...Ai,width:e??l??Ai.width,height:e??l??Ai.height,stroke:t??f,strokeWidth:g,className:lp("lucide",h,o),...!s&&!kS(a)&&{"aria-hidden":"true"},...a},[...i.map(([m,y])=>M.createElement(m,y)),...Array.isArray(s)?s:[s]])});const Pe=(t,e)=>{const r=M.forwardRef(({className:n,...o},s)=>M.createElement(RS,{ref:s,iconNode:e,className:lp(`lucide-${ES(Nd(t))}`,`lucide-${t}`,n),...o}));return r.displayName=Nd(t),r};const TS=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],dp=Pe("arrow-left",TS);const PS=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],NS=Pe("arrow-right",PS);const LS=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M11.68 2.009A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673c-.824-.85-1.678-1.731-2.21-3.348",key:"xaq59h"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],BS=Pe("bell-dot",LS);const _S=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Fc=Pe("check",_S);const DS=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],OS=Pe("chevron-down",DS);const FS=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],gr=Pe("chevron-right",FS);const MS=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],up=Pe("copy",MS);const jS=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],fp=Pe("ellipsis",jS);const US=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],De=Pe("loader-circle",US);const $S=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],HS=Pe("monitor",$S);const qS=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],KS=Pe("pencil",qS);const zS=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],hp=Pe("plus",zS);const WS=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],Ws=Pe("server",WS);const VS=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],pp=Pe("smartphone",VS);const GS=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],XS=Pe("terminal",GS);const YS=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],ZS=Pe("x",YS);let Or=null;function JS(t){return!Or||!t?!1:(Or(t),!0)}function hC(t){Or=t;const e=r=>{const{text:n,nonce:o}=r.detail??{};!n||Or!==t||(t(n),r.stopImmediatePropagation(),o&&window.dispatchEvent(new CustomEvent("termdock-insert-reference-ack",{detail:{nonce:o,ok:!0}})))};return window.addEventListener("termdock-insert-reference",e,!0),()=>{Or===t&&(Or=null),window.removeEventListener("termdock-insert-reference",e,!0)}}const QS=/^[A-Za-z0-9_@%+=:,./-]$/;function eE(t){return Array.from(t,e=>(e.codePointAt(0)??0)>127||QS.test(e)?e:`\\${e}`).join("")}function tE(t,e){if(!e)return!1;try{const r=new URL(e.serviceOrigin||e.url);return r.origin===t&&/^(localhost|\[::1\]|127(?:\.\d{1,3}){3})$/.test(r.hostname)&&!(e.routes??[]).some(n=>n.targetPeerId!==e.targetPeerId)}catch{return!1}}function rE(t){const e=s=>s.target instanceof Element?s.target.closest("[data-termdock-terminal-dropzone]"):null,r=()=>!tE(location.origin,jr()),n=s=>{const i=e(s);!i||!r()||!s.dataTransfer?.types.includes("Files")||(s.preventDefault(),s.stopImmediatePropagation(),s.dataTransfer.dropEffect="copy",i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="remote")},o=s=>{const i=e(s),a=Array.from(s.dataTransfer?.files??[]);if(!i||!a.length||!r())return;s.preventDefault(),s.stopImmediatePropagation();const c=i.dataset.termdockTerminalDropzone??"";i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="uploading",Wt(async()=>{const{uploadFiles:l}=await Promise.resolve().then(()=>yA);return{uploadFiles:l}},void 0).then(({uploadFiles:l})=>l("/tmp",a)).then(l=>{if(l.files.length!==a.length||l.files.some(d=>!d.path))throw new Error("Upload did not return every file path");delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState,t({sessionKey:c,paths:l.files.map(d=>d.path)})}).catch(l=>{i.dataset.nativeFileDropState="error",i.dispatchEvent(new CustomEvent("termdock:file-drop-error",{bubbles:!0,detail:l instanceof Error?l.message:"File upload failed"})),window.setTimeout(()=>{i.dataset.nativeFileDropState==="error"&&(delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState)},3e3)})};return window.addEventListener("dragover",n,!0),window.addEventListener("drop",o,!0),()=>{window.removeEventListener("dragover",n,!0),window.removeEventListener("drop",o,!0)}}function gp(){return typeof window>"u"?null:window.termdockDesktop??null}const ki=new Set;let Ld=!1;function pC(t){const e=gp();if(!e)return()=>{};if(ki.add(t),!Ld){const r=n=>{if(!JS(n.paths.map(eE).join(" ")+" "))for(const o of ki)o(n)};rE(r),e.onNativeFileDrop(r),Ld=!0}return()=>{ki.delete(t)}}function mp(t=navigator.userAgent,e=navigator.maxTouchPoints){const r=/iPad/.test(t)||/Macintosh/.test(t)&&e>1?"iPad":/iPhone/.test(t)?"iPhone":/Android/.test(t)?"Android":/Windows/.test(t)?"Windows":/Macintosh|Mac OS X/.test(t)?"Mac":/Linux/.test(t)?"Linux":"设备",n=/Electron/.test(t)?"Termdock":/Edg\//.test(t)?"Edge":/Firefox|FxiOS/.test(t)?"Firefox":/Chrome|CriOS/.test(t)?"Chrome":/Safari/.test(t)?"Safari":"浏览器";return`${r} · ${n}`}let nE;function oE(){return nE??=(async()=>{const t=navigator.userAgent,[e,r]=mp().split(" · "),n=/(?:Edg|Firefox|FxiOS|Chrome|CriOS|Version)\/([\d.]+)/g,o=[...t.matchAll(n)],s=/(?:CPU (?:iPhone )?OS |Mac OS X |Android )([\d._]+)/.exec(t)?.[1]?.replaceAll("_","."),i={system:`${e}${s?` ${s}`:""}`,client:`${r}${o.length?` ${o.at(-1)[1]}`:""}`,mode:matchMedia("(display-mode: standalone)").matches||navigator.standalone?"已安装的网页应用":"网页"},a=gp();if(a){i.mode="桌面客户端";const l=/Electron\/([\d.]+)/.exec(t)?.[1];i.client=l?`Termdock(Electron ${l})`:"Termdock";try{Object.assign(i,await a.deviceInfo?.())}catch{}return i}const c=navigator.userAgentData;try{const l=await c?.getHighEntropyValues(["model","architecture","bitness","platformVersion"]);typeof l?.model=="string"&&l.model&&(i.model=l.model),typeof l?.architecture=="string"&&l.architecture&&(i.arch=`${l.architecture}${l.bitness?` ${l.bitness} 位`:""}`)}catch{}return i})()}function sE({service:t,onBusyChange:e,onConnect:r,onConnectWithPassword:n}){const[o,s]=M.useState(),[i,a]=M.useState(!0),[c,l]=M.useState(!1),[d,u]=M.useState(""),[f,h]=M.useState(0),[g,m]=M.useState(),[y,w]=M.useState("");M.useEffect(()=>{let A=!1;return a(!0),u(""),s(void 0),hS(t).then(L=>{A||s(L)}).catch(L=>{A||u(L instanceof Error?L.message:"暂时无法读取中转列表,请重试。")}).finally(()=>{A||a(!1)}),()=>{A=!0}},[t.id,t.url,f]);const C=async A=>{if(!c){l(!0),e(!0),u("");try{await A()}catch(L){u(L instanceof Error?L.message:"暂时无法连接,请重试。")}finally{l(!1),e(!1)}}},b=async A=>{const L=await pS(o.route,A.serviceId);try{await r(L)}catch(I){if(!(I instanceof Ye))throw I;m(L)}};return p.jsxs("div",{className:"service-form",children:[g?p.jsxs("form",{className:"service-form",onSubmit:A=>{A.preventDefault(),C(async()=>{try{await n?.(g,y)}finally{w("")}})},children:[p.jsxs("p",{className:"service-help",children:["已通过“",t.label,"”连接到“",g.serviceName,"”。请登录目标服务,完成此设备的访问授权。"]}),n?p.jsxs(p.Fragment,{children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"目标服务密码"}),p.jsx("input",{type:"password",autoFocus:!0,required:!0,autoComplete:"current-password",value:y,disabled:c,onChange:A=>w(A.target.value)})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:c||!y,children:c?"正在登录…":"登录并连接"})]}):p.jsx("p",{className:"service-help",children:"请让目标服务管理员邀请此设备后再连接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>{m(void 0),w(""),u(""),h(A=>A+1)},children:"返回中转列表"})]}):p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["通过“",t.label,"”连接下方服务。",o?.canManage?"选择未授权的服务会授权此设备使用该中转。":"这里只显示已授权给此设备的中转。","目标服务会单独验证访问权限。"]}),i?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在读取可中转的服务…"]}):o&&p.jsxs("div",{className:"service-list",children:[o.items.map(A=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:c||!A.available,onClick:()=>{C(()=>b(A))},children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ws,{size:19})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:A.label||(A.url?new URL(A.url).host:`中转服务 ${A.serviceId.slice(0,8)}`)}),p.jsx("span",{className:"service-description",children:A.available?A.authorized?"已获中转授权 · 连接":"授权此设备并连接":"中转暂不可用"})]}),p.jsx(gr,{size:16})]},A.serviceId)),o.items.length===0&&p.jsx("p",{className:"service-empty",children:o.canManage?"暂无可中转的服务。可在本机 Mac 客户端连接目标服务,或在目标服务的“备用连接”中启用本入口。":"暂无已授权的中转服务,请让入口管理员分享备用连接邀请。"})]}),c&&p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在授权并连接目标服务…"]}),!i&&p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>h(A=>A+1),children:"刷新列表"})]}),d&&p.jsx("p",{className:"service-error",role:"alert",children:d})]})}const ja="#termdock-invite=";function wp(t){const e=new URL(t.entryUrl);e.hash="",e.search="",e.pathname="/";const r=new TextEncoder().encode(JSON.stringify(t));return e.hash=ja.slice(1)+btoa(String.fromCharCode(...r)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.href}function Es(t){const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||!e.hash.startsWith(ja))throw new Error("这不是有效的 Termdock 邀请链接");const r=e.hash.slice(ja.length);if(r.length>8192)throw new Error("邀请链接过长");let n;try{const i=r.replace(/-/g,"+").replace(/_/g,"/");n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i),a=>a.charCodeAt(0))))}catch{throw new Error("邀请链接不完整,请重新复制")}if(n.v!==1||typeof n.serviceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(n.serviceId)||n.routeOnly!==!0&&(typeof n.code!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(n.code)))throw new Error("邀请信息无效或版本不兼容");const o=new URL(n.entryUrl);if(o.origin!==e.origin||o.username||o.password||!["https:","http:"].includes(o.protocol))throw new Error("邀请地址与服务不一致");if(o.protocol==="http:"&&!["localhost","127.0.0.1","[::1]"].includes(o.hostname))throw new Error("远程邀请需要 HTTPS");if(n.entryServiceId!==void 0&&(typeof n.entryServiceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(n.entryServiceId)))throw new Error("邀请入口身份无效");if(n.routeCode!==void 0&&(typeof n.routeCode!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(n.routeCode)||!n.entryServiceId))throw new Error("邀请入口权限无效");if(n.routeOnly===!0&&(!n.entryServiceId||!n.routeCode||n.code!==void 0))throw new Error("备用连接邀请不完整");let s=o.origin;if(n.serviceUrl!==void 0){const i=new URL(n.serviceUrl);if(!["https:","http:"].includes(i.protocol)||i.username||i.password)throw new Error("目标服务地址无效");s=n.entryServiceId&&n.entryServiceId!==n.serviceId?i.origin:o.origin}return{url:o.origin,targetPeerId:n.serviceId,pairingCode:n.code,...n.routeOnly===!0?{routeOnly:!0}:{},serviceOrigin:s,serviceName:typeof n.name=="string"?n.name.slice(0,120):void 0,entryServiceId:n.entryServiceId,routeCode:n.routeCode}}function iE({service:t,onBusyChange:e}){const r={...t,targetPeerId:t.targetPeerId,serviceName:t.label},[n,o]=M.useState(()=>t.routes??hr(r)),[s,i]=M.useState([]),[a,c]=M.useState(!0),[l,d]=M.useState(!1),[u,f]=M.useState(""),h=_=>{d(_),e(_)},[g,m]=M.useState(),[y,w]=M.useState(""),[C,b]=M.useState(""),[A,L]=M.useState(""),[I,R]=M.useState(!1),[E,x]=M.useState(),[S,T]=M.useState(),[B,v]=M.useState(!1);M.useEffect(()=>{let _=!1;return Ze().then(D=>{_||i(D.filter(F=>F.targetPeerId&&F.targetPeerId!==t.targetPeerId))}).catch(()=>{_||f("暂时无法读取可用服务。")}).finally(()=>{_||c(!1)}),()=>{_=!0}},[t.targetPeerId]);const k=_=>s.find(D=>D.targetPeerId===_.targetPeerId)?.label||new URL(_.url).host,P=async _=>{h(!0),f(""),L("");try{await _()}catch(D){const F=D instanceof Error?D.message:"";f(/AUTHORIZATION|DENIED/.test(F)?"当前设备没有入口管理权限。请让管理员分享备用连接邀请,或使用入口密码授权。":"暂时无法完成。请确认入口能连接目标服务,且目标地址、证书和授权有效。")}finally{h(!1)}},N=async(_,D)=>{const F={url:_.serviceOrigin||_.url,targetPeerId:_.targetPeerId};await P(async()=>{const H=await gS(F,r.targetPeerId);if(!H.grants.some(K=>K.active)){if(!H.canManage&&D===void 0){m(_);return}await mS(r,F,D)}const q=[...n.filter(K=>K.targetPeerId!==F.targetPeerId),F];await Ko(t,q),o(q),m(void 0),w("")})};if(S)return p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["把链接发给需要使用此备用连接的人。它只允许通过入口连接“",t.label,"”,对方仍需获得目标服务的访问权限。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用连接邀请"}),p.jsx("input",{readOnly:!0,value:S,onFocus:_=>_.target.select()})]}),p.jsxs("button",{type:"button",className:"service-button service-primary",onClick:()=>{navigator.clipboard.writeText(S).then(()=>v(!0)).catch(()=>f("无法自动复制,请长按链接复制。"))},children:[p.jsx(up,{size:16}),B?"已复制":"复制邀请链接"]}),p.jsx("button",{type:"button",className:"service-button service-secondary",onClick:()=>{T(void 0),v(!1)},children:"返回备用连接"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});if(g)return p.jsxs("form",{className:"service-form",onSubmit:_=>{_.preventDefault(),N(g,y).finally(()=>w(""))},children:[p.jsxs("p",{className:"service-help",children:["需要“",g.label,"”的管理员授权。若这是你的服务,可以使用它的密码;否则请管理员分享备用连接邀请。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"入口服务密码"}),p.jsx("input",{type:"password",required:!0,value:y,onChange:_=>w(_.target.value),autoComplete:"current-password",disabled:l,autoFocus:!0})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||!y,children:l?"正在授权…":"授权并启用"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{m(void 0),w("")},children:"取消"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});const j=n.filter(_=>_.targetPeerId===r.targetPeerId),U=n.filter(_=>_.targetPeerId!==r.targetPeerId),O=async()=>{if(!l){h(!0),R(!0),f(""),L("");try{o(await yS({...t,routes:n},C)),b(""),L("备用地址已验证并保存。")}catch(_){f(_ instanceof Error?_.message:"暂时无法添加地址,请重试。")}finally{h(!1),R(!1)}}};return p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"电脑换了网络?添加它在新网络下的地址,原地址连不上时会自动尝试。只接受同一台服务。"}),p.jsxs("form",{className:"service-form",onSubmit:_=>{_.preventDefault(),O()},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用地址"}),p.jsx("input",{value:C,onChange:_=>{b(_.target.value),f(""),L("")},required:!0,disabled:l||n.length>=4,inputMode:"url",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:192.168.10.20:9834"})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||n.length>=4||!C.trim(),children:I?p.jsxs(p.Fragment,{children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在验证…"]}):"验证并添加"})]}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u}),A&&p.jsx("p",{role:"status",className:"service-help",children:A}),n.length>=4&&p.jsx("p",{className:"service-help",children:"已保存 4 个备用连接。移除不再使用的地址或入口后,可以继续添加。"}),p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"首选地址"}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url})]}),j.length>0&&p.jsx("div",{className:"service-list",children:j.map(_=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-address service-route-address",children:_.url}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`移除地址 ${_.url}`,disabled:l,onClick:()=>x(_),children:"移除"})]}),E?.targetPeerId===_.targetPeerId&&E.url===_.url&&p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"从备用连接中移除此地址?不会停止正在运行的终端。"}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>x(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{const D=n.filter(F=>F.targetPeerId!==_.targetPeerId||F.url!==_.url);await Ko(t,D),o(D),x(void 0)})},children:"确认移除"})]})]})]},_.url))}),p.jsxs("details",{className:"service-relay-options",children:[p.jsxs("summary",{children:["通过其他服务中转",U.length?`(${U.length})`:""]}),p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"所有直连地址都不可用时,尝试下方已授权入口;直连恢复后自动切回。"}),U.length>0&&p.jsx("div",{className:"service-list",children:U.map(_=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ws,{size:18})}),p.jsx("span",{className:"service-name",children:k(_)}),p.jsx(Fc,{size:16,className:"service-selected"})]}),E?.targetPeerId===_.targetPeerId?p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["撤销此设备经“",k(_),"”连接目标的权限?如当前无法直连,目标服务将断开。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>x(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{await wS(r.targetPeerId,_);const D=n.filter(F=>F.targetPeerId!==_.targetPeerId);await Ko(t,D),o(D),x(void 0)})},children:"确认撤销"})]})]}):p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{P(async()=>{const D=await ip(r,_);T(wp({v:1,routeOnly:!0,serviceId:r.targetPeerId,name:t.label,serviceUrl:t.serviceOrigin||t.url,entryUrl:_.url,entryServiceId:_.targetPeerId,routeCode:D.routeCode}))})},children:"分享备用连接"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>x(_),children:"撤销授权"})]})]},_.targetPeerId))}),a?p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"添加中转入口"}),s.filter(_=>!n.some(D=>D.targetPeerId===_.targetPeerId)).map(_=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:l||n.length>=4,onClick:()=>{N(_)},children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:_.label}),p.jsx("span",{className:"service-description",children:"验证并授权后启用"})]}),p.jsx(gr,{size:16})]},_.id)),s.length===0&&p.jsx("p",{className:"service-empty",children:"添加并登录另一台服务后,可以将它设为中转入口。"})]})]})]}),l&&!I&&p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在验证连接与授权…"]})]})}function aE({current:t,renderRoutes:e,renderRelayServices:r,onOpen:n,onAdd:o,onInvite:s,hideHeader:i,onNavigation:a,onBusyChange:c,initiallyAdding:l=!1}){const[d,u]=M.useState([]),[f,h]=M.useState(!0),[g,m]=M.useState(l?{kind:"add"}:{kind:"list"}),[y,w]=M.useState(!1),C=M.useCallback(v=>{w(v),c?.(v)},[c]),[b,A]=M.useState(""),L=M.useCallback(()=>{m(v=>v.kind==="routes"||v.kind==="relay-services"?{kind:"edit",service:v.service}:{kind:"list"}),A("")},[]),I=g.kind==="add"?"添加服务":g.kind==="edit"?"服务设置":g.kind==="routes"?"备用连接":g.kind==="relay-services"?"可中转的服务":void 0;M.useEffect(()=>{a?.({title:I,...I?{back:L}:{}})},[I,L,a]),M.useEffect(()=>{let v=!1,k=0;const P=async()=>{const j=++k;try{const U=await Ze();!v&&k===j&&(u(U),A(""))}catch{!v&&k===j&&A("暂时无法读取服务列表,请重试。")}finally{!v&&k===j&&h(!1)}};P();const N=Uu(()=>{P()});return()=>{v=!0,N()}},[]);const R=async v=>{if(!y){C(!0),A("");try{await v()}catch(k){A(k instanceof Error?k.message:"暂时无法完成,请重试。")}finally{C(!1)}}},E=g.kind==="edit"||g.kind==="routes"||g.kind==="relay-services"?d.find(v=>yt(v,g.service))||g.service:void 0,x=t?d.find(v=>yt(v,t))||t:void 0,S=d.filter(v=>!t||!yt(v,t)),T=x?[x,...S]:S,B=p.jsxs(p.Fragment,{children:[f?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{className:"service-list",children:[T.map(v=>{const k=!!t&&yt(v,t);return p.jsxs("div",{className:"service-row",children:[p.jsxs("button",{type:"button",className:"service-row-open",disabled:y||k,onClick:()=>{R(async()=>{(await n(v))?.passwordRequired&&m({kind:"add",input:v.serviceOrigin||v.url,passwordRequired:!0})})},"aria-label":k?`当前服务 ${v.label}`:`打开 ${v.label}`,children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ws,{size:20})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:v.label}),p.jsx("span",{className:"service-description",children:k?"当前服务":new URL(v.serviceOrigin||v.url).host})]}),k?p.jsx(Fc,{size:17,className:"service-selected"}):p.jsx(gr,{size:16,className:"service-muted"})]}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`管理 ${v.label}`,disabled:y,onClick:()=>{m({kind:"edit",service:v}),A("")},children:p.jsx(fp,{size:19})})]},v.id)}),T.length===0&&p.jsx("p",{className:"service-empty",children:"还没有添加服务。连接你的电脑,或粘贴收到的邀请链接。"})]}),p.jsxs("div",{className:`service-actions${s?" service-actions-pair":""}`,children:[p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:y,onClick:()=>{m({kind:"add"}),A("")},children:[p.jsx(hp,{size:16}),"添加服务"]}),s&&p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:y,onClick:s,children:[p.jsx(pp,{size:16}),"邀请设备"]})]})]});return p.jsxs("div",{className:"service-manager",children:[!i&&p.jsxs("div",{className:"service-heading",children:[I&&p.jsx("button",{type:"button",className:"service-icon-button","aria-label":"返回服务",disabled:y,onClick:L,children:p.jsx(dp,{size:20})}),p.jsx("h2",{children:I||"服务"})]}),g.kind==="relay-services"?r?.(E,C):g.kind==="routes"?e?.(E,C):g.kind==="list"?B:g.kind==="add"?p.jsx(cE,{onSave:v=>R(async()=>{const k=_e(v);u(await At({id:k,url:k,label:new URL(k).host})),L()}),initialInput:g.input,passwordRequired:g.passwordRequired,busy:y,onSubmit:async(v,k)=>{let P;return await R(async()=>{P=await o(v,k),P?.passwordRequired||L()}),P}}):p.jsx(lE,{onRelayServices:r&&g.service.targetPeerId?()=>m({kind:"relay-services",service:g.service}):void 0,onRoutes:e&&g.service.targetPeerId?()=>m({kind:"routes",service:g.service}):void 0,service:E,busy:y,canRemove:!t||!yt(g.service,t),onSave:v=>{R(async()=>{u(await At({...E,label:v})),L()})},onRemove:()=>{R(async()=>{u(await Ng(g.service.id)),L()})}}),b&&p.jsx("p",{className:"service-error",role:"alert",children:b})]})}function cE({busy:t,onSubmit:e,onSave:r,initialInput:n="",passwordRequired:o=!1}){const[s,i]=M.useState(n),[a,c]=M.useState(""),[l,d]=M.useState(o);return p.jsxs("form",{className:"service-form",onSubmit:async u=>{u.preventDefault(),(await e(s.trim(),l?a:void 0))?.passwordRequired&&d(!0),c("")},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务地址或邀请链接"}),p.jsx("input",{value:s,onChange:u=>{i(u.target.value),d(!1),c("")},disabled:t,required:!0,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:电脑地址:9834 或 https://…"})]}),l?p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务密码"}),p.jsx("input",{type:"password",value:a,onChange:u=>c(u.target.value),disabled:t,required:!0,autoFocus:!0,autoComplete:"current-password",placeholder:"输入这台服务的密码"})]}):p.jsx("p",{className:"service-help",children:"连接自己的服务,输入地址即可;收到邀请时,粘贴完整链接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:t||!s.trim()||s.includes("#termdock-invite="),onClick:()=>{r(s.trim())},children:"仅保存,不连接"}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:t||!s.trim()||l&&!a,children:t?p.jsxs(p.Fragment,{children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在连接…"]}):l?"登录并连接":"继续"})]})}function lE({service:t,busy:e,canRemove:r,onSave:n,onRemove:o,onRoutes:s,onRelayServices:i}){const[a,c]=M.useState(t.label),[l,d]=M.useState(!1);return p.jsxs("form",{className:"service-form",onSubmit:u=>{u.preventDefault(),n(a.trim())},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务名称"}),p.jsx("input",{value:a,onChange:u=>c(u.target.value),disabled:e,required:!0,maxLength:120,placeholder:"例如:办公室电脑"})]}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:e||!a.trim(),children:"保存名称"}),i&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:i,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"可中转的服务"}),p.jsx("span",{className:"service-description",children:"通过这台服务连接其他电脑"})]}),p.jsx(gr,{size:16})]}),s&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:s,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"备用连接"}),p.jsx("span",{className:"service-description",children:"添加其他网络地址或授权入口"})]}),p.jsx(gr,{size:16})]}),r&&p.jsx("div",{className:"service-remove",children:l?p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["从列表移除“",t.label,"”?不会停止服务或删除终端。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:e,onClick:()=>d(!1),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:o,children:"确认移除"})]})]}):p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:()=>d(!0),children:"移除服务"})})]})}var Tr={},Ci,Bd;function dE(){return Bd||(Bd=1,Ci=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Ci}var Ii={},Dt={},_d;function br(){if(_d)return Dt;_d=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return Dt.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},Dt.getSymbolTotalCodewords=function(n){return e[n]},Dt.getBCHDigit=function(r){let n=0;for(;r!==0;)n++,r>>>=1;return n},Dt.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');t=n},Dt.isKanjiModeEnabled=function(){return typeof t<"u"},Dt.toSJIS=function(n){return t(n)},Dt}var Ri={},Dd;function Mc(){return Dd||(Dd=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+r)}}t.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},t.from=function(n,o){if(t.isValid(n))return n;try{return e(n)}catch{return o}}})(Ri)),Ri}var Ti,Od;function uE(){if(Od)return Ti;Od=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const r=Math.floor(e/8);return(this.buffer[r]>>>7-e%8&1)===1},put:function(e,r){for(let n=0;n<r;n++)this.putBit((e>>>r-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),e&&(this.buffer[r]|=128>>>this.length%8),this.length++}},Ti=t,Ti}var Pi,Fd;function fE(){if(Fd)return Pi;Fd=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,r,n,o){const s=e*this.size+r;this.data[s]=n,o&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,r){return this.data[e*this.size+r]},t.prototype.xor=function(e,r,n){this.data[e*this.size+r]^=n},t.prototype.isReserved=function(e,r){return this.reservedBit[e*this.size+r]},Pi=t,Pi}var Ni={},Md;function hE(){return Md||(Md=1,(function(t){const e=br().getSymbolSize;t.getRowColCoords=function(n){if(n===1)return[];const o=Math.floor(n/7)+2,s=e(n),i=s===145?26:Math.ceil((s-13)/(2*o-2))*2,a=[s-7];for(let c=1;c<o-1;c++)a[c]=a[c-1]-i;return a.push(6),a.reverse()},t.getPositions=function(n){const o=[],s=t.getRowColCoords(n),i=s.length;for(let a=0;a<i;a++)for(let c=0;c<i;c++)a===0&&c===0||a===0&&c===i-1||a===i-1&&c===0||o.push([s[a],s[c]]);return o}})(Ni)),Ni}var Li={},jd;function pE(){if(jd)return Li;jd=1;const t=br().getSymbolSize,e=7;return Li.getPositions=function(n){const o=t(n);return[[0,0],[o-e,0],[0,o-e]]},Li}var Bi={},Ud;function gE(){return Ud||(Ud=1,(function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const e={N1:3,N2:3,N3:40,N4:10};t.isValid=function(o){return o!=null&&o!==""&&!isNaN(o)&&o>=0&&o<=7},t.from=function(o){return t.isValid(o)?parseInt(o,10):void 0},t.getPenaltyN1=function(o){const s=o.size;let i=0,a=0,c=0,l=null,d=null;for(let u=0;u<s;u++){a=c=0,l=d=null;for(let f=0;f<s;f++){let h=o.get(u,f);h===l?a++:(a>=5&&(i+=e.N1+(a-5)),l=h,a=1),h=o.get(f,u),h===d?c++:(c>=5&&(i+=e.N1+(c-5)),d=h,c=1)}a>=5&&(i+=e.N1+(a-5)),c>=5&&(i+=e.N1+(c-5))}return i},t.getPenaltyN2=function(o){const s=o.size;let i=0;for(let a=0;a<s-1;a++)for(let c=0;c<s-1;c++){const l=o.get(a,c)+o.get(a,c+1)+o.get(a+1,c)+o.get(a+1,c+1);(l===4||l===0)&&i++}return i*e.N2},t.getPenaltyN3=function(o){const s=o.size;let i=0,a=0,c=0;for(let l=0;l<s;l++){a=c=0;for(let d=0;d<s;d++)a=a<<1&2047|o.get(l,d),d>=10&&(a===1488||a===93)&&i++,c=c<<1&2047|o.get(d,l),d>=10&&(c===1488||c===93)&&i++}return i*e.N3},t.getPenaltyN4=function(o){let s=0;const i=o.data.length;for(let c=0;c<i;c++)s+=o.data[c];return Math.abs(Math.ceil(s*100/i/5)-10)*e.N4};function r(n,o,s){switch(n){case t.Patterns.PATTERN000:return(o+s)%2===0;case t.Patterns.PATTERN001:return o%2===0;case t.Patterns.PATTERN010:return s%3===0;case t.Patterns.PATTERN011:return(o+s)%3===0;case t.Patterns.PATTERN100:return(Math.floor(o/2)+Math.floor(s/3))%2===0;case t.Patterns.PATTERN101:return o*s%2+o*s%3===0;case t.Patterns.PATTERN110:return(o*s%2+o*s%3)%2===0;case t.Patterns.PATTERN111:return(o*s%3+(o+s)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}t.applyMask=function(o,s){const i=s.size;for(let a=0;a<i;a++)for(let c=0;c<i;c++)s.isReserved(c,a)||s.xor(c,a,r(o,c,a))},t.getBestMask=function(o,s){const i=Object.keys(t.Patterns).length;let a=0,c=1/0;for(let l=0;l<i;l++){s(l),t.applyMask(l,o);const d=t.getPenaltyN1(o)+t.getPenaltyN2(o)+t.getPenaltyN3(o)+t.getPenaltyN4(o);t.applyMask(l,o),d<c&&(c=d,a=l)}return a}})(Bi)),Bi}var _o={},$d;function yp(){if($d)return _o;$d=1;const t=Mc(),e=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return _o.getBlocksCount=function(o,s){switch(s){case t.L:return e[(o-1)*4+0];case t.M:return e[(o-1)*4+1];case t.Q:return e[(o-1)*4+2];case t.H:return e[(o-1)*4+3];default:return}},_o.getTotalCodewordsCount=function(o,s){switch(s){case t.L:return r[(o-1)*4+0];case t.M:return r[(o-1)*4+1];case t.Q:return r[(o-1)*4+2];case t.H:return r[(o-1)*4+3];default:return}},_o}var _i={},kn={},Hd;function mE(){if(Hd)return kn;Hd=1;const t=new Uint8Array(512),e=new Uint8Array(256);return(function(){let n=1;for(let o=0;o<255;o++)t[o]=n,e[n]=o,n<<=1,n&256&&(n^=285);for(let o=255;o<512;o++)t[o]=t[o-255]})(),kn.log=function(n){if(n<1)throw new Error("log("+n+")");return e[n]},kn.exp=function(n){return t[n]},kn.mul=function(n,o){return n===0||o===0?0:t[e[n]+e[o]]},kn}var qd;function wE(){return qd||(qd=1,(function(t){const e=mE();t.mul=function(n,o){const s=new Uint8Array(n.length+o.length-1);for(let i=0;i<n.length;i++)for(let a=0;a<o.length;a++)s[i+a]^=e.mul(n[i],o[a]);return s},t.mod=function(n,o){let s=new Uint8Array(n);for(;s.length-o.length>=0;){const i=s[0];for(let c=0;c<o.length;c++)s[c]^=e.mul(o[c],i);let a=0;for(;a<s.length&&s[a]===0;)a++;s=s.slice(a)}return s},t.generateECPolynomial=function(n){let o=new Uint8Array([1]);for(let s=0;s<n;s++)o=t.mul(o,new Uint8Array([1,e.exp(s)]));return o}})(_i)),_i}var Di,Kd;function yE(){if(Kd)return Di;Kd=1;const t=wE();function e(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(n){this.degree=n,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const o=new Uint8Array(n.length+this.degree);o.set(n);const s=t.mod(o,this.genPoly),i=this.degree-s.length;if(i>0){const a=new Uint8Array(this.degree);return a.set(s,i),a}return s},Di=e,Di}var Oi={},Fi={},Mi={},zd;function bp(){return zd||(zd=1,Mi.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),Mi}var ct={},Wd;function vp(){if(Wd)return ct;Wd=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let r="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";r=r.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+r+`)(?:.|[\r
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/passwordBootstrap-P6Gv34b5.js","assets/react-XDCjal2T.js","assets/dnd-BCFAPC0L.js","assets/terminal-C7X98Amf.js","assets/App-DIKT4Uzg.js","assets/gestureArbiter-DmBnoNAo.js","assets/gestureArbiter-C2J0D0kV.css","assets/referenceLongPress-dSe1LayX.js","assets/triangle-alert-D32QbdOM.js","assets/DagPlayground-DTocdzNw.js","assets/ChangeWalkthroughPanel-O0PkAS-_.js","assets/sparkles-IRCaPwu8.js","assets/DiffLab-wqbu2cMY.js","assets/DiffViewer-BbVWaBnT.js","assets/DiffViewer-T3uj2-aP.css","assets/DiffReviewLab-CFRQkWps.js","assets/DiffReview-09QoF1Us.js"])))=>i.map(i=>d[i]);
2
+ import{r as oc,a as wg,g as Du}from"./react-XDCjal2T.js";import{b as M,r as Ou,R as qe}from"./dnd-BCFAPC0L.js";import{L as yg,l as bg}from"./terminal-C7X98Amf.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(o){if(o.ep)return;o.ep=!0;const s=r(o);fetch(o.href,s)}})();const vg="modulepreload",xg=function(t){return"/"+t},al={},Wt=function(e,r,n){let o=Promise.resolve();if(r&&r.length>0){let c=function(l){return Promise.all(l.map(d=>Promise.resolve(d).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=i?.nonce||i?.getAttribute("nonce");o=c(r.map(l=>{if(l=xg(l),l in al)return;al[l]=!0;const d=l.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":vg,d||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),d)return new Promise((h,g)=>{f.addEventListener("load",h),f.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return e().catch(s)})};var ei={exports:{}},gn={};var cl;function Sg(){if(cl)return gn;cl=1;var t=oc(),e=Symbol.for("react.element"),r=Symbol.for("react.fragment"),n=Object.prototype.hasOwnProperty,o=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function i(a,c,l){var d,u={},f=null,h=null;l!==void 0&&(f=""+l),c.key!==void 0&&(f=""+c.key),c.ref!==void 0&&(h=c.ref);for(d in c)n.call(c,d)&&!s.hasOwnProperty(d)&&(u[d]=c[d]);if(a&&a.defaultProps)for(d in c=a.defaultProps,c)u[d]===void 0&&(u[d]=c[d]);return{$$typeof:e,type:a,key:f,ref:h,props:u,_owner:o.current}}return gn.Fragment=r,gn.jsx=i,gn.jsxs=i,gn}var ll;function Eg(){return ll||(ll=1,ei.exports=Sg()),ei.exports}var p=Eg();const lr="termdock-secure-target-v1",sc="termdock-secure-entry-v1",Ag=new Set([lr,sc,"termdock-color-theme","termdock:locale","termdock.federation.connections.v1"]),po=typeof Storage>"u"?void 0:Storage.prototype.getItem,ti=typeof Storage>"u"?void 0:Storage.prototype.setItem,dl="termdock-secure-legacy-owner",Rs=typeof window<"u"&&window.parent!==window&&location.pathname==="/workspace.html";function kg(){if(typeof window>"u")return null;try{if(Rs){const e=new URLSearchParams(location.search).get("termdock-workspace"),r=JSON.parse(localStorage.getItem("termdock.federation.connections.v1")||"[]"),n=Array.isArray(r)?r.find(o=>o?.targetPeerId===e):void 0;return n&&typeof n.url=="string"&&typeof n.targetPeerId=="string"?{...n,serviceName:n.label||n.serviceName}:null}const t=JSON.parse(sessionStorage.getItem(lr)??localStorage.getItem(lr)??"null");return t&&typeof t.url=="string"&&typeof t.targetPeerId=="string"?t:null}catch{return null}}let Ts=kg();const Mr=Ts?.targetPeerId??"unpaired";function jr(){return Ts}function Fu(t){if(Ts=t,Rs)return;const e=JSON.stringify(t);sessionStorage.setItem(lr,e),localStorage.setItem(lr,e)}function Cg(){Ts=null,!Rs&&(localStorage.removeItem(lr),sessionStorage.removeItem(lr),localStorage.removeItem(sc))}function jn(t,e=Mr){return Ag.has(t)||t.startsWith("termdock-secure-")?t:`termdock-service:${e}:${t}`}function Ig(t){if(!(!po||!ti))try{if(po.call(localStorage,dl))return;ti.call(localStorage,dl,t);for(const r of[localStorage,sessionStorage]){const n=Array.from({length:r.length},(o,s)=>r.key(s)).filter(o=>!!o);for(const o of n){if(o.startsWith("termdock-service:")||jn(o,t)===o)continue;const s=jn(o,t),i=po.call(r,o);i!==null&&po.call(r,s)===null&&ti.call(r,s,i)}}}catch{}}let ul=!1;function Rg(){if(ul||typeof Storage>"u")return;ul=!0;const t=Storage.prototype.getItem,e=Storage.prototype.setItem,r=Storage.prototype.removeItem;Storage.prototype.getItem=function(n){return t.call(this,jn(String(n)))},Storage.prototype.setItem=function(n,o){e.call(this,jn(String(n)),o)},Storage.prototype.removeItem=function(n){r.call(this,jn(String(n)))}}Rg();const fl={pending:0,failed:1,expired:1,delivered:2,read:3},go=32768,Yo="remote:";function Qe(t,e){return e.startsWith(Yo)?e:`${Yo}${encodeURIComponent(t)}:${encodeURIComponent(e)}`}function We(t){if(!t.startsWith(Yo))return null;const e=t.slice(Yo.length).split(":");if(e.length!==2)return null;try{return{origin:decodeURIComponent(e[0]),id:decodeURIComponent(e[1])}}catch{return null}}function ri(t,e){const r=We(e);return r?.origin===t?r.id:e}function mo(t,e){return{...t,fromSessionId:t.fromSessionId?e(t.fromSessionId):null,toSessionId:e(t.toSessionId)}}function ni(t,e){if(!t)return;const r=Object.fromEntries(Object.entries(t).map(([n,o])=>[e(n),o]));return Object.keys(r).length?r:void 0}class Tg{constructor(e){this.services=e}services;snapshots=new Map;reachable=new Set;groups=new Map;messages=new Map;sessions=new Map;diagnostics=new Map;serviceErrors=new Map;inFlight=null;catalogInFlight=null;async refresh(){return this.inFlight?this.inFlight:(this.inFlight=this.synchronize().finally(()=>{this.inFlight=null}),this.inFlight)}async refreshCatalog(){return this.catalogInFlight?this.catalogInFlight:(this.catalogInFlight=this.discover().finally(()=>{this.catalogInFlight=null}),this.catalogInFlight)}async discover(){const e=this.services();this.serviceErrors.clear();const r=await Promise.all(e.map(async n=>{let o;try{const s=await Promise.race([Promise.resolve().then(()=>n.request("/collaboration-federation")),new Promise((i,a)=>{o=setTimeout(()=>a(new Error("服务协作目录响应超时")),18e3)})]);if(!Array.isArray(s.groups)||!Array.isArray(s.sessions)||!Array.isArray(s.messages))throw new Error("协作目录响应无效,请更新服务");return{service:n,data:s}}catch(s){return this.serviceErrors.set(n.origin,s instanceof Error?s.message.slice(0,300):"协作目录请求失败"),null}finally{clearTimeout(o)}}));this.reachable.clear();for(const n of r){if(!n)continue;const{service:o,data:s}=n;for(const[i,a]of Object.entries(s.transportDiagnostics??{}))(!this.diagnostics.has(i)||a.checked_at>this.diagnostics.get(i).checked_at)&&this.diagnostics.set(i,a);this.reachable.add(o.origin),this.snapshots.set(o.origin,s);for(const i of s.groups){const a={...i,sessionIds:i.sessionIds.map(l=>Qe(o.origin,l)),roles:ni(i.roles,l=>Qe(o.origin,l))},c=this.groups.get(i.id);(!c||a.updatedAt>c.updatedAt)&&this.groups.set(i.id,a)}for(const i of s.messages)this.mergeMessage(mo(i,a=>Qe(o.origin,a)))}this.sessions.clear();for(const n of this.groups.values())for(const o of n.remoteSessions??[])this.sessions.set(o.sessionId,{...o,serviceConnected:!1,status:"offline",serviceCheckedAt:Date.now()});for(const[n,o]of this.snapshots){const s=this.reachable.has(n);for(const i of o.sessions){const a=Qe(n,i.sessionId);this.sessions.set(a,{...i,sessionId:a,serviceOrigin:n,serviceLabel:e.find(c=>c.origin===n)?.label??n,serviceConnected:s,serviceCheckedAt:Date.now(),status:s?i.status:"offline"})}}}async synchronize(){await this.refreshCatalog();const e=this.services();for(const r of this.messages.values()){const n=We(r.toSessionId)?.origin;if(r.status==="pending"&&n&&!this.reachable.has(n)){const o=this.diagnostics.get(r.id);this.diagnostics.set(r.id,{...o,relay_online:!0,peer_reachable:!1,attempt_count:o?.attempt_count??0,next_retry_at:Date.now()+2e3,last_error:"PEER_UNREACHABLE",checked_at:Date.now()})}}await Promise.all(e.filter(r=>this.reachable.has(r.origin)).map(async r=>{for(const n of this.groups.values())if(!(!this.snapshots.get(r.origin)?.groups.some(s=>s.id===n.id)&&!n.sessionIds.some(s=>We(s)?.origin===r.origin)))try{await this.push(r,n)}catch{this.reachable.delete(r.origin)}})),await Promise.all(e.filter(r=>this.reachable.has(r.origin)).map(async r=>{if(!((this.snapshots.get(r.origin)?.protocolVersion??1)<2))for(const n of this.groups.values()){if(n.deleted||!n.sessionIds.some(s=>We(s)?.origin===r.origin))continue;const o=[...this.diagnostics].filter(([s])=>this.messages.get(s)?.groupId===n.id).map(([s,i])=>({message_id:s,diagnostic:i,...this.messages.get(s)?.status==="failed"?{failure_reason:this.messages.get(s)?.failureReason}:{}}));if(o.length)try{await r.request("/collaboration-federation","POST",{group:this.groupForService(n,r.origin),messages:[],transport:o})}catch{}}}))}mergeMessage(e){const r=this.messages.get(e.id),n=fl;(!r||n[e.status]>n[r.status])&&this.messages.set(e.id,e);const o=this.messages.get(e.id);if(o&&(r?.shellConfirmed===!0||e.shellConfirmed===!0)&&(o.shellConfirmed=!0),this.messages.size>2e3){const s=[...this.messages.values()].find(i=>i.status!=="pending"&&i.status!=="failed");s&&this.messages.delete(s.id)}}groupForService(e,r){const n=e.sessionIds.filter(o=>We(o)?.origin!==r).map(o=>{const s=We(o),i=this.sessions.get(o);return{sessionId:o,name:i?.name??s.id,cwd:i?.cwd??"",status:i?.status??"offline",capability:i?.capability??"",currentTask:i?.currentTask??"",updatedAt:i?.updatedAt??0,agent:i?.agent??null,backendSessionId:null,agentNativeSessionId:null,serviceOrigin:s.origin,serviceLabel:i?.serviceLabel??s.origin,serviceConnected:this.reachable.has(s.origin),serviceCheckedAt:Date.now()}});return{...e,sessionIds:e.sessionIds.map(o=>ri(r,o)),remoteSessions:n,roles:ni(e.roles,o=>ri(r,o))}}async push(e,r){const n=fl,o=new Map((this.snapshots.get(e.origin)?.messages??[]).map(i=>[i.id,i])),s=[...this.messages.values()].filter(i=>i.groupId===r.id&&(!o.has(i.id)||n[i.status]>n[o.get(i.id).status]||i.shellConfirmed===!0&&o.get(i.id)?.shellConfirmed!==!0)).map(i=>mo(i,a=>ri(e.origin,a)));if(!s.length){await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[]});return}for(const i of s){const a=this.messages.get(i.id),c=We(a.toSessionId)?.origin===e.origin,l=this.diagnostics.get(i.id);if(c&&l?.next_retry_at&&l.next_retry_at>Date.now()&&l.last_error!=="PEER_UNREACHABLE")continue;const d={relay_online:!0,peer_reachable:!0,attempt_count:(l?.attempt_count??0)+(c?1:0),next_retry_at:null,last_error:null,checked_at:Date.now(),fragments_sent:0,fragments_total:0},u=this.snapshots.get(e.origin)?.protocolVersion??1;if(u<2&&(String(i.content??"").length>2e4||i.responseKind||i.task||i.metadata||i.expiresAt||i.status==="failed"||i.status==="expired")){c&&(this.messages.set(i.id,{...a,status:"failed",failureReason:"PEER_UPGRADE_REQUIRED"}),this.diagnostics.set(i.id,{...d,last_error:"PEER_UPGRADE_REQUIRED"}));continue}try{const f=new TextEncoder().encode(JSON.stringify(i));if(u>=2&&f.length>go&&!o.has(i.id)){const h=Math.ceil(f.length/go),g=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-256",f)),m=>m.toString(16).padStart(2,"0")).join("");d.fragments_total=h;for(let m=0;m<h;m++){const y=await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[],fragments:[{message_id:i.id,group_id:r.id,index:m,total:h,sha256:g,data:btoa(String.fromCharCode(...f.subarray(m*go,(m+1)*go)))}]}),w=y.fragmentReceipts?.find(C=>C.message_id===i.id);if(!w||m===h-1&&!w.complete)throw new Error("FRAGMENT_ACK_MISSING");d.fragments_sent=w.received;for(const C of y.messages??[])this.mergeMessage(mo(C,b=>Qe(e.origin,b)));if(c){this.diagnostics.set(i.id,{...d,checked_at:Date.now()});const C=this.services().find(b=>b.origin===We(a.fromSessionId??"")?.origin);C&&C.origin!==e.origin&&(this.snapshots.get(C.origin)?.protocolVersion??1)>=2&&await C.request("/collaboration-federation","POST",{group:this.groupForService(r,C.origin),messages:[],transport:[{message_id:i.id,diagnostic:d}]}).catch(()=>{})}}}else{const h=await e.request("/collaboration-federation","POST",{group:this.groupForService(r,e.origin),messages:[i]});if(!(h.messages??[]).some(g=>g.id===i.id))throw new Error("PEER_REJECTED_MESSAGE");for(const g of h.messages??[])this.mergeMessage(mo(g,m=>Qe(e.origin,m)))}c&&this.diagnostics.set(i.id,{...d,checked_at:Date.now()})}catch(f){c&&this.diagnostics.set(i.id,{...d,checked_at:Date.now(),peer_reachable:null,last_error:f instanceof Error?f.message.slice(0,300):"RELAY_REQUEST_FAILED",next_retry_at:Date.now()+Math.min(3e4,1e3*2**Math.min(d.attempt_count,5))})}}}async peers(e){if(!this.services().some(r=>r.origin===e))throw new Error("当前服务未连接");return await this.refreshCatalog(),{protocolVersion:2,origin:e,sessions:[...this.sessions.values()].filter(r=>We(r.sessionId)?.origin!==e),services:[...this.snapshots.keys(),...this.services().map(r=>r.origin)].filter((r,n,o)=>o.indexOf(r)===n).map(r=>({origin:r,label:this.services().find(n=>n.origin===r)?.label??r,connected:this.reachable.has(r),error:this.serviceErrors.get(r)}))}}async list(e){const r=this.services().find(s=>s.origin===e);if(!r)throw new Error("当前服务未连接");const[n,o]=await Promise.all([this.peers(e),r.request("/collaboration-groups")]);return{groups:o.groups,sessions:[...n.sessions,...o.sessions]}}async save(e,r){await this.refreshCatalog();const n=this.services().find(u=>u.origin===e);if(!n)throw new Error("当前服务未连接");const o=await n.request("/collaboration-groups"),s=r.id?o.groups.find(u=>u.id===r.id):void 0;if(r.id&&!s)throw new Error("协作组已删除,请刷新列表");if(s&&r.expectedUpdatedAt!==void 0&&r.expectedUpdatedAt!==s.updatedAt)throw new Error("协作组已被修改,请重新打开成员管理后再保存");for(const u of this.sessions.keys())We(u)?.origin===e&&this.sessions.delete(u);for(const u of o.sessions){const f=Qe(e,u.sessionId);this.sessions.set(f,{...u,sessionId:f,serviceOrigin:e,serviceLabel:n.label,serviceConnected:!0})}if(!r.id?.startsWith("cross-")&&!r.sessionIds.some(u=>We(u)))return n.request("/collaboration-groups","POST",r);if(!this.reachable.has(e))throw new Error("当前服务需要升级 Termdock 后才能跨服务组队");const i=[...new Set(r.sessionIds.map(u=>Qe(e,u)))],a=new Set(s?.sessionIds.map(u=>Qe(e,u))??[]);if(!r.name?.trim()||i.length<2||i.some(u=>!a.has(u)&&(!this.sessions.has(u)||!this.reachable.has(We(u).origin))))throw new Error("所选成员已变化或服务不可达,请刷新后重新选择;尚未保存任何修改");const c=s?.federated?{...s,sessionIds:s.sessionIds.map(u=>Qe(e,u))}:void 0,l=ni(s?.roles,u=>Qe(e,u)),d={id:c?.id??`cross-${crypto.randomUUID()}`,name:r.name.trim(),sessionIds:i,...l?{roles:Object.fromEntries(Object.entries(l).filter(([u])=>i.includes(u)))}:{},createdAt:c?.createdAt??Date.now(),updatedAt:Math.max(Date.now(),(c?.updatedAt??0)+1),federated:!0};if(s&&!s.federated){if(o.capabilities?.groupPromotion!==1)throw new Error("当前服务需要升级后才能将已有组转换为跨服务组;原组和记录均未修改");const u=await n.request(`/collaboration-groups/${encodeURIComponent(s.id)}/promote`,"POST",{group:this.groupForService(d,e),expectedUpdatedAt:r.expectedUpdatedAt??s.updatedAt});d.updatedAt=u.group.updatedAt,d.createdAt=u.group.createdAt}else await n.request("/collaboration-federation","POST",{group:this.groupForService(d,e),messages:[],...c?{expectedUpdatedAt:r.expectedUpdatedAt??c.updatedAt}:{}});return this.groups.set(d.id,d),{group:this.groupForService(d,e)}}async remove(e,r){const n=this.services().find(o=>o.origin===e);if(!n)throw new Error("当前服务未连接");await n.request(`/collaboration-groups/${encodeURIComponent(r)}`,"DELETE")}}const Ps="termdock.federation.connections.v1",ca="termdock:services-changed",ic="termdock-secure-removed-services",Zo=t=>[t.id,t.targetPeerId,t.serviceOrigin||t.url].filter(e=>!!e);function ac(){try{const t=JSON.parse(localStorage.getItem(ic)||"[]");return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}catch{return[]}}function _e(t){const e=t.trim();if(!e)throw new Error("请输入服务地址。");const r=new URL(/^[a-z][a-z\d+.-]*:\/\//i.test(e)?e:`https://${e}`);r.protocol==="wss:"&&(r.protocol="https:"),r.protocol==="ws:"&&(r.protocol="http:");const n=["localhost","127.0.0.1","[::1]"].includes(r.hostname);if(!["https:","http:"].includes(r.protocol)||r.protocol==="http:"&&!n)throw new Error("请使用 HTTPS 服务地址。");if(r.username||r.password||r.search||r.hash||!["/","/api/federation/secure"].includes(r.pathname))throw new Error("请输入服务首页地址,不要包含账号或额外参数。");return r.origin}function Ns(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.url=="string")try{const r=_e(e.url),n=typeof e.targetPeerId=="string"&&e.targetPeerId?e.targetPeerId:void 0,o=(typeof e.label=="string"?e.label:typeof e.serviceName=="string"?e.serviceName:"").trim().slice(0,120)||new URL(r).host;return{id:typeof e.id=="string"&&e.id?e.id:n||r,url:r,label:o,...n?{targetPeerId:n}:{},...typeof e.serviceOrigin=="string"?{serviceOrigin:_e(e.serviceOrigin)}:{},...typeof e.entryServiceId=="string"&&e.entryServiceId?{entryServiceId:e.entryServiceId}:{},...Array.isArray(e.routes)?{routes:e.routes.slice(0,4).flatMap(s=>{try{return s&&typeof s.targetPeerId=="string"&&s.targetPeerId?[{url:_e(s.url),targetPeerId:s.targetPeerId}]:[]}catch{return[]}})}:{}}}catch{return}}function yt(t,e){return t.targetPeerId&&e.targetPeerId?t.targetPeerId===e.targetPeerId:(t.serviceOrigin||t.url)===(e.serviceOrigin||e.url)}function Mu(t){const e=[];for(const r of t){const n=e.findIndex(o=>yt(o,r));n<0?e.push(r):e[n]={...e[n],...r,id:e[n].id}}return e}function ro(){return typeof window>"u"?void 0:window.termdockDesktop}function qt(){try{const t=JSON.parse(localStorage.getItem(Ps)||"[]");return Array.isArray(t)?Mu(t.map(Ns).filter(e=>!!e)):[]}catch{return[]}}function ju(t){localStorage.setItem(Ps,JSON.stringify(t.map(e=>({...e,serviceName:e.label})))),window.dispatchEvent(new Event(ca))}let mn;async function Ze(){const t=ro();if(!t?.serviceConnections||!t.saveServiceConnection)return qt();if(mn)return mn;mn=(async()=>{let e=await t.serviceConnections();const r=qt();for(const n of r)e.some(o=>yt(o,n))||(e=await(t.importServiceConnection||t.saveServiceConnection)(n));return r.length&&localStorage.removeItem(Ps),e})();try{return await mn}finally{mn=void 0}}async function At(t){const e=Ns(t);if(!e)throw new Error("服务地址无效。");const r=ro();if(r?.saveServiceConnection)return r.saveServiceConnection(e);const n=qt(),o=n.find(a=>a.id===e.id||yt(a,e)),s=new Set([...Zo(e),...o?Zo(o):[]]);localStorage.setItem(ic,JSON.stringify(ac().filter(a=>!s.has(a))));const i=Mu([...n.filter(a=>a!==o),{...o,...e,id:o?.id||e.id}]);return ju(i),i}async function Pg(t){const e=Ns(t);if(!e)throw new Error("服务地址无效。");const r=ro();if(r?.importServiceConnection)return r.importServiceConnection(e);if(r?.serviceConnections){const n=await r.serviceConnections();return n.some(o=>yt(o,e))?At(e):n}return Zo(e).some(n=>ac().includes(n))?qt():At(e)}async function Ng(t){const e=ro();if(e?.removeServiceConnection)return e.removeServiceConnection(t);const r=qt(),n=r.find(s=>s.id===t);n&&localStorage.setItem(ic,JSON.stringify([...new Set([...ac(),...Zo(n)])].slice(-768)));const o=r.filter(s=>s.id!==t);return ju(o),o}function Uu(t){const e=n=>{(n.key===Ps||n.key===null)&&t()};window.addEventListener(ca,t),window.addEventListener("storage",e);const r=ro()?.onServiceConnections?.(t);return()=>{window.removeEventListener(ca,t),window.removeEventListener("storage",e),r?.()}}class Lg extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}}let Bg=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},ot=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}};class $u extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}}class Hu extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}}class _g extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}}class Dg extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}}class Ls extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}}const qu=Symbol.for("@libp2p/peer-id");function Og(t){return typeof t?.handleEvent=="function"}function Fg(t){return t===!0||t===!1}function Mg(t){return Fg(t)?t:t?.capture??!1}function la(t){const e={capture:Mg(t),once:!!t?.once};return t?.passive!=null&&(e.passive=t?.passive),t?.signal!=null&&(e.signal=t?.signal),e}function hl(t,e){return la(t).capture===la(e).capture}class jg extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){const r=this.#e.get(e);return r==null?0:r.length}addEventListener(e,r,n){const o=la(n);if(o?.signal?.aborted===!0)return;const s=l=>{o.once&&this.removeEventListener(e,r,o),Og(r)?r.handleEvent(l):r(l)};let i=this.#e.get(e);if(i==null&&(i=[],this.#e.set(e,i)),i.some(l=>l.callback!==r?!1:hl(l.options,o)))return;super.addEventListener(e,s,o);const c=()=>{this.removeEventListener(e,r,o)};o.signal?.addEventListener("abort",c),i.push({callback:r,wrapper:s,options:o,onAbort:c})}removeEventListener(e,r,n){const o=this.#e.get(e);if(o==null){super.removeEventListener(e,r??null,n);return}this.#e.set(e,o.filter(s=>s.callback===r&&hl(s.options,n)?(super.removeEventListener(e,s.wrapper,n),s.options?.signal?.removeEventListener("abort",s.onAbort),!1):!0))}safeDispatchEvent(e,r={}){return this.dispatchEvent(new CustomEvent(e,r))}}const Ug=Symbol.for("@libp2p/service-capabilities");function $g(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function Bs(t){if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")}function Hg(t){return new TextEncoder().encode(t)}function qg(t){return new TextDecoder().decode(t)}function Kg(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var o=0;o<t.length;o++){var s=t.charAt(o),i=s.charCodeAt(0);if(r[i]!==255)throw new TypeError(s+" is ambiguous");r[i]=o}var a=t.length,c=t.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var m=0,y=0,w=0,C=g.length;w!==C&&g[w]===0;)w++,m++;for(var b=(C-w)*d+1>>>0,A=new Uint8Array(b);w!==C;){for(var L=g[w],I=0,R=b-1;(L!==0||I<y)&&R!==-1;R--,I++)L+=256*A[R]>>>0,A[R]=L%a>>>0,L=L/a>>>0;if(L!==0)throw new Error("Non-zero carry");y=I,w++}for(var E=b-y;E!==b&&A[E]===0;)E++;for(var x=c.repeat(m);E<b;++E)x+=t.charAt(A[E]);return x}function f(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var m=0;if(g[m]!==" "){for(var y=0,w=0;g[m]===c;)y++,m++;for(var C=(g.length-m)*l+1>>>0,b=new Uint8Array(C);g[m];){var A=r[g.charCodeAt(m)];if(A===255)return;for(var L=0,I=C-1;(A!==0||L<w)&&I!==-1;I--,L++)A+=a*b[I]>>>0,b[I]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");w=L,m++}if(g[m]!==" "){for(var R=C-w;R!==C&&b[R]===0;)R++;for(var E=new Uint8Array(y+(C-R)),x=y;R!==C;)E[x++]=b[R++];return E}}}function h(g){var m=f(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:h}}var zg=Kg,Wg=zg;class Vg{name;prefix;baseEncode;constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Gg{name;prefix;baseDecode;prefixCodePoint;constructor(e,r,n){this.name=e,this.prefix=r;const o=r.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ku(this,e)}}class Xg{decoders;constructor(e){this.decoders=e}or(e){return Ku(this,e)}decode(e){const r=e[0],n=this.decoders[r];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}function Ku(t,e){return new Xg({...t.decoders??{[t.prefix]:t},...e.decoders??{[e.prefix]:e}})}class Yg{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,r,n,o){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=o,this.encoder=new Vg(e,r,n),this.decoder=new Gg(e,r,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}function _s({name:t,prefix:e,encode:r,decode:n}){return new Yg(t,e,r,n)}function no({name:t,prefix:e,alphabet:r}){const{encode:n,decode:o}=Wg(r,t);return _s({prefix:e,name:t,encode:n,decode:s=>Bs(o(s))})}function Zg(t,e,r,n){let o=t.length;for(;t[o-1]==="=";)--o;const s=new Uint8Array(o*r/8|0);let i=0,a=0,c=0;for(let l=0;l<o;++l){const d=e[t[l]];if(d===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<r|d,i+=r,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=r||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function Jg(t,e,r){const n=e[e.length-1]==="=",o=(1<<r)-1;let s="",i=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],i+=8;i>r;)i-=r,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<r-i]),n)for(;(s.length*r&7)!==0;)s+="=";return s}function Qg(t){const e={};for(let r=0;r<t.length;++r)e[t[r]]=r;return e}function Ae({name:t,prefix:e,bitsPerChar:r,alphabet:n}){const o=Qg(n);return _s({prefix:e,name:t,encode(s){return Jg(s,n,r)},decode(s){return Zg(s,o,r,t)}})}const Le=no({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),em=no({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),tm=Object.freeze(Object.defineProperty({__proto__:null,base58btc:Le,base58flickr:em},Symbol.toStringTag,{value:"Module"})),Un=Ae({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),rm=Ae({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),nm=Ae({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),om=Ae({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),sm=Ae({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),im=Ae({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),am=Ae({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),cm=Ae({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),lm=Ae({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),dm=Object.freeze(Object.defineProperty({__proto__:null,base32:Un,base32hex:sm,base32hexpad:am,base32hexpadupper:cm,base32hexupper:im,base32pad:nm,base32padupper:om,base32upper:rm,base32z:lm},Symbol.toStringTag,{value:"Module"})),jo=no({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),um=no({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),fm=Object.freeze(Object.defineProperty({__proto__:null,base36:jo,base36upper:um},Symbol.toStringTag,{value:"Module"}));var hm=zu,pl=128,pm=-128,gm=Math.pow(2,31);function zu(t,e,r){e=e||[],r=r||0;for(var n=r;t>=gm;)e[r++]=t&255|pl,t/=128;for(;t&pm;)e[r++]=t&255|pl,t>>>=7;return e[r]=t|0,zu.bytes=r-n+1,e}var mm=da,wm=128,gl=127;function da(t,n){var r=0,n=n||0,o=0,s=n,i,a=t.length;do{if(s>=a)throw da.bytes=0,new RangeError("Could not decode varint");i=t[s++],r+=o<28?(i&gl)<<o:(i&gl)*Math.pow(2,o),o+=7}while(i>=wm);return da.bytes=s-n,r}var ym=Math.pow(2,7),bm=Math.pow(2,14),vm=Math.pow(2,21),xm=Math.pow(2,28),Sm=Math.pow(2,35),Em=Math.pow(2,42),Am=Math.pow(2,49),km=Math.pow(2,56),Cm=Math.pow(2,63),Im=function(t){return t<ym?1:t<bm?2:t<vm?3:t<xm?4:t<Sm?5:t<Em?6:t<Am?7:t<km?8:t<Cm?9:10},Rm={encode:hm,decode:mm,encodingLength:Im},Jo=Rm;function ua(t,e=0){return[Jo.decode(t,e),Jo.decode.bytes]}function Qo(t,e,r=0){return Jo.encode(t,e,r),e}function es(t){return Jo.encodingLength(t)}function oo(t,e){const r=e.byteLength,n=es(t),o=n+es(r),s=new Uint8Array(o+r);return Qo(t,s,0),Qo(r,s,n),s.set(e,o),new cc(t,r,e,s)}function Wu(t){const e=Bs(t),[r,n]=ua(e),[o,s]=ua(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new cc(r,o,i,e)}function Tm(t,e){if(t===e)return!0;{const r=e;return t.code===r.code&&t.size===r.size&&r.bytes instanceof Uint8Array&&$g(t.bytes,r.bytes)}}class cc{code;size;digest;bytes;constructor(e,r,n,o){this.code=e,this.size=r,this.digest=n,this.bytes=o}}function ml(t,e){const{bytes:r,version:n}=t;return n===0?Nm(r,fa(t),e??Le.encoder):Lm(r,fa(t),e??Un.encoder)}const wl=new WeakMap;function fa(t){const e=wl.get(t);if(e==null){const r=new Map;return wl.set(t,r),r}return e}class ce{code;version;multihash;bytes;"/";constructor(e,r,n,o){this.code=r,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{const{code:e,multihash:r}=this;if(e!==wn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(r.code!==Bm)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return ce.createV0(r)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{const{code:e,digest:r}=this.multihash,n=oo(e,r);return ce.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return ce.equals(this,e)}static equals(e,r){const n=r;return n!=null&&e.code===n.code&&e.version===n.version&&Tm(e.multihash,n.multihash)}toString(e){return ml(this,e)}toJSON(){return{"/":ml(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;const r=e;if(r instanceof ce)return r;if(r["/"]!=null&&r["/"]===r.bytes||r.asCID===r){const{version:n,code:o,multihash:s,bytes:i}=r;return new ce(n,o,s,i??yl(n,o,s.bytes))}else if(r[_m]===!0){const{version:n,multihash:o,code:s}=r,i=Wu(o);return ce.create(n,s,i)}else return null}static create(e,r,n){if(typeof r!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(r!==wn)throw new Error(`Version 0 CID must use dag-pb (code: ${wn}) block encoding`);return new ce(e,r,n,n.bytes)}case 1:{const o=yl(e,r,n.bytes);return new ce(e,r,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return ce.create(0,wn,e)}static createV1(e,r){return ce.create(1,e,r)}static decode(e){const[r,n]=ce.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return r}static decodeFirst(e){const r=ce.inspectBytes(e),n=r.size-r.multihashSize,o=Bs(e.subarray(n,n+r.multihashSize));if(o.byteLength!==r.multihashSize)throw new Error("Incorrect length");const s=o.subarray(r.multihashSize-r.digestSize),i=new cc(r.multihashCode,r.digestSize,s,o);return[r.version===0?ce.createV0(i):ce.createV1(r.codec,i),e.subarray(r.size)]}static inspectBytes(e){let r=0;const n=()=>{const[u,f]=ua(e.subarray(r));return r+=f,u};let o=n(),s=wn;if(o===18?(o=0,r=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);const i=r,a=n(),c=n(),l=r+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,r){const[n,o]=Pm(e,r),s=ce.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return fa(s).set(n,e),s}}function Pm(t,e){switch(t[0]){case"Q":{const r=e??Le;return[Le.prefix,r.decode(`${Le.prefix}${t}`)]}case Le.prefix:{const r=e??Le;return[Le.prefix,r.decode(t)]}case Un.prefix:{const r=e??Un;return[Un.prefix,r.decode(t)]}case jo.prefix:{const r=e??jo;return[jo.prefix,r.decode(t)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[t[0],e.decode(t)]}}}function Nm(t,e,r){const{prefix:n}=r;if(n!==Le.prefix)throw Error(`Cannot string encode V0 in ${r.name} encoding`);const o=e.get(n);if(o==null){const s=r.encode(t).slice(1);return e.set(n,s),s}else return o}function Lm(t,e,r){const{prefix:n}=r,o=e.get(n);if(o==null){const s=r.encode(t);return e.set(n,s),s}else return o}const wn=112,Bm=18;function yl(t,e,r){const n=es(t),o=n+es(e),s=new Uint8Array(o+r.byteLength);return Qo(t,s,0),Qo(e,s,n),s.set(r,o),s}const _m=Symbol.for("@ipld/js-cid/CID"),Vu=0,Dm="identity",Gu=Bs;function Om(t,e){if(e?.truncate!=null&&e.truncate!==t.byteLength){if(e.truncate<0||e.truncate>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,e.truncate)}return oo(Vu,Gu(t))}const so={code:Vu,name:Dm,encode:Gu,digest:Om};function st(t,e){if(t===e)return!0;if(t.byteLength!==e.byteLength)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0}function Me(t=0){return new Uint8Array(t)}function kt(t=0){return new Uint8Array(t)}function ha(t,e){e==null&&(e=t.reduce((o,s)=>o+s.length,0));const r=kt(e);let n=0;for(const o of t)r.set(o,n),n+=o.length;return r}const Xu=Symbol.for("@achingbrain/uint8arraylist");function bl(t,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let r=0;for(const n of t){const o=r+n.byteLength;if(e<o)return{buf:n,index:e-r};r=o}throw new RangeError("index is out of bounds")}function wo(t){return!!t?.[Xu]}class oe{bufs;length;[Xu]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let r=0;for(const n of e)if(n instanceof Uint8Array)r+=n.byteLength,this.bufs.push(n);else if(wo(n)){r+=n.byteLength;for(const o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=r}prepend(...e){this.prependAll(e)}prependAll(e){let r=0;for(const n of e.reverse())if(n instanceof Uint8Array)r+=n.byteLength,this.bufs.unshift(n);else if(wo(n))r+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=r}get(e){const r=bl(this.bufs,e);return r.buf[r.index]}set(e,r){const n=bl(this.bufs,e);n.buf[n.index]=r}write(e,r=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(r+n,e[n]);else if(wo(e))for(let n=0;n<e.length;n++)this.set(r+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,r){const{bufs:n,length:o}=this._subList(e,r);return ha(n,o)}subarray(e,r){const{bufs:n,length:o}=this._subList(e,r);return n.length===1?n[0]:ha(n,o)}sublist(e,r){const{bufs:n,length:o}=this._subList(e,r),s=new oe;return s.length=o,s.bufs=n,s}_subList(e,r){if(e=e??0,r=r??this.length,e<0&&(e=this.length+e),r<0&&(r=this.length+r),e<0||r>this.length)throw new RangeError("index is out of bounds");if(e===r)return{bufs:[],length:0};if(e===0&&r===this.length)return{bufs:[...this.bufs],length:this.length};const n=[];let o=0;for(let s=0;s<this.bufs.length;s++){const i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;const l=e>=a&&e<c,d=r>a&&r<=c;if(l&&d){if(e===a&&r===c){n.push(i);break}const u=e-a;n.push(i.subarray(u,u+(r-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(d){if(r===c){n.push(i);break}n.push(i.subarray(0,r-a));break}n.push(i)}return{bufs:n,length:r-e}}indexOf(e,r=0){if(!wo(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');const n=e instanceof Uint8Array?e:e.subarray();if(r=Number(r??0),isNaN(r)&&(r=0),r<0&&(r=this.length+r),r<0&&(r=0),e.length===0)return r>this.length?this.length:r;const o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");const s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;const a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1;let d;for(let u=r;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){const h=this.get(u+f);if(n[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){const r=this.subarray(e,e+1);return new DataView(r.buffer,r.byteOffset,r.byteLength).getInt8(0)}setInt8(e,r){const n=kt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,r),this.write(n,e)}getInt16(e,r){const n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,r)}setInt16(e,r,n){const o=Me(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,r,n),this.write(o,e)}getInt32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,r)}setInt32(e,r,n){const o=Me(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,r,n),this.write(o,e)}getBigInt64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,r)}setBigInt64(e,r,n){const o=Me(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,r,n),this.write(o,e)}getUint8(e){const r=this.subarray(e,e+1);return new DataView(r.buffer,r.byteOffset,r.byteLength).getUint8(0)}setUint8(e,r){const n=kt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,r),this.write(n,e)}getUint16(e,r){const n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,r)}setUint16(e,r,n){const o=Me(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,r,n),this.write(o,e)}getUint32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,r)}setUint32(e,r,n){const o=Me(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,r,n),this.write(o,e)}getBigUint64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,r)}setBigUint64(e,r,n){const o=Me(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,r,n),this.write(o,e)}getFloat32(e,r){const n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,r)}setFloat32(e,r,n){const o=Me(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,r,n),this.write(o,e)}getFloat64(e,r){const n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,r)}setFloat64(e,r,n){const o=Me(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,r,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof oe)||e.bufs.length!==this.bufs.length)return!1;for(let r=0;r<this.bufs.length;r++)if(!st(this.bufs[r],e.bufs[r]))return!1;return!0}static fromUint8Arrays(e,r){const n=new oe;return n.bufs=e,r==null&&(r=e.reduce((o,s)=>o+s.byteLength,0)),n.length=r,n}}const Fm=no({prefix:"9",name:"base10",alphabet:"0123456789"}),Mm=Object.freeze(Object.defineProperty({__proto__:null,base10:Fm},Symbol.toStringTag,{value:"Module"})),jm=Ae({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Um=Ae({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),$m=Object.freeze(Object.defineProperty({__proto__:null,base16:jm,base16upper:Um},Symbol.toStringTag,{value:"Module"})),Hm=Ae({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),qm=Object.freeze(Object.defineProperty({__proto__:null,base2:Hm},Symbol.toStringTag,{value:"Module"})),Yu=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),Km=Yu.reduce((t,e,r)=>(t[r]=e,t),[]),zm=Yu.reduce((t,e,r)=>{const n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return t[n]=r,t},[]);function Wm(t){return t.reduce((e,r)=>(e+=Km[r],e),"")}function Vm(t){const e=[];for(const r of t){const n=r.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${r}`);const o=zm[n];if(o==null)throw new Error(`Non-base256emoji character: ${r}`);e.push(o)}return new Uint8Array(e)}const Gm=_s({prefix:"🚀",name:"base256emoji",encode:Wm,decode:Vm}),Xm=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:Gm},Symbol.toStringTag,{value:"Module"})),Ym=Ae({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Zm=Ae({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Jm=Ae({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Qm=Ae({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),ew=Object.freeze(Object.defineProperty({__proto__:null,base64:Ym,base64pad:Zm,base64url:Jm,base64urlpad:Qm},Symbol.toStringTag,{value:"Module"})),tw=Ae({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),rw=Object.freeze(Object.defineProperty({__proto__:null,base8:tw},Symbol.toStringTag,{value:"Module"})),nw=_s({prefix:"\0",name:"identity",encode:t=>qg(t),decode:t=>Hg(t)}),ow=Object.freeze(Object.defineProperty({__proto__:null,identity:nw},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const sw=20;function iw({name:t,code:e,encode:r,minDigestLength:n,maxDigestLength:o}){return new aw(t,e,r,n,o)}class aw{name;code;encode;minDigestLength;maxDigestLength;constructor(e,r,n,o,s){this.name=e,this.code=r,this.encode=n,this.minDigestLength=o??sw,this.maxDigestLength=s}digest(e,r){if(r?.truncate!=null){if(r.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&r.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){const n=this.encode(e);return n instanceof Uint8Array?vl(n,this.code,r?.truncate):n.then(o=>vl(o,this.code,r?.truncate))}else throw Error("Unknown type, must be binary type")}}function vl(t,e,r){if(r!=null&&r!==t.byteLength){if(r>t.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${t.byteLength}`);t=t.subarray(0,r)}return oo(e,t)}function cw(t){return async e=>new Uint8Array(await crypto.subtle.digest(t,e))}const lc=iw({name:"sha2-256",code:18,encode:cw("SHA-256")}),xl={...ow,...qm,...rw,...Mm,...$m,...dm,...fm,...tm,...ew,...Xm};function Zu(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}const Sl=Zu("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),oi=Zu("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);const e=kt(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),Ju={utf8:Sl,"utf-8":Sl,hex:xl.base16,latin1:oi,ascii:oi,binary:oi,...xl};function we(t,e="utf8"){const r=Ju[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.decoder.decode(`${r.prefix}${t}`)}function Q(t,e="utf8"){const r=Ju[e];if(r==null)throw new Error(`Unsupported encoding "${e}"`);return r.encoder.encode(t).substring(1)}const lw=parseInt("11111",2),pa=parseInt("10000000",2),dw=parseInt("01111111",2),El={0:yn,1:yn,2:uw,3:pw,4:gw,5:hw,6:fw,16:yn,22:yn,48:yn};function ln(t,e={offset:0}){const r=t[e.offset]&lw;if(e.offset++,El[r]!=null)return El[r](t,e);throw new Error("No decoder for tag "+r)}function io(t,e){let r=0;if((t[e.offset]&pa)===pa){const n=t[e.offset]&dw;let o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=t[e.offset].toString(16).padStart(2,"0");r=parseInt(o,16)}else r=t[e.offset],e.offset++;return r}function yn(t,e){io(t,e);const r=[];for(;!(e.offset>=t.byteLength);){const n=ln(t,e);if(n===null)break;r.push(n)}return r}function uw(t,e){const r=io(t,e),n=e.offset,o=e.offset+r,s=[];for(let i=n;i<o;i++)i===n&&t[i]===0||s.push(t[i]);return e.offset+=r,Uint8Array.from(s)}function fw(t,e){const r=io(t,e),n=e.offset+r,o=t[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){const l=t[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let d=0;for(let u=0;u<c.length;u++)d+=c[u]<<u*7;a+=`.${d}`,c=[]}}return a}function hw(t,e){return e.offset++,null}function pw(t,e){const r=io(t,e),n=t[e.offset];e.offset++;const o=t.subarray(e.offset,e.offset+r-1);if(e.offset+=r,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function gw(t,e){const r=io(t,e),n=t.subarray(e.offset,e.offset+r);return e.offset+=r,n}function mw(t){let e=t.toString(16);e.length%2===1&&(e="0"+e);const r=new oe;for(let n=0;n<e.length;n+=2)r.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return r}function Ds(t){if(t.byteLength<128)return Uint8Array.from([t.byteLength]);const e=mw(t.byteLength);return new oe(Uint8Array.from([e.byteLength|pa]),e)}function He(t){const e=new oe,r=128;return(t.subarray()[0]&r)===r&&e.append(Uint8Array.from([0])),e.append(t),new oe(Uint8Array.from([2]),Ds(e),e)}function dc(t){const e=Uint8Array.from([0]),r=new oe(e,t);return new oe(Uint8Array.from([3]),Ds(r),r)}function ww(t){return new oe(Uint8Array.from([4]),Ds(t),t)}function St(t,e=48){const r=new oe;for(const n of t)r.append(n);return new oe(Uint8Array.from([e]),Ds(r),r)}async function yw(t,e,r){const n=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["sign"]);r?.signal?.throwIfAborted();const o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return r?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function bw(t,e,r,n){const o=await crypto.subtle.importKey("jwk",t,{name:"ECDSA",namedCurve:t.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();const s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,r.subarray());return n?.signal?.throwIfAborted(),s}const vw=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),xw=Uint8Array.from([6,5,43,129,4,0,34]),Sw=Uint8Array.from([6,5,43,129,4,0,35]),Qu={ext:!0,kty:"EC",crv:"P-256"},ef={ext:!0,kty:"EC",crv:"P-384"},tf={ext:!0,kty:"EC",crv:"P-521"},Ur=32,$r=48,Hr=66;function Ew(t){const e=ln(t);return Aw(e)}function Aw(t){const e=t[1],r=Q(e,"base64url"),n=t[2][1][0],o=1;let s,i;if(e.byteLength===Ur)return s=Q(n.subarray(o,o+Ur),"base64url"),i=Q(n.subarray(o+Ur),"base64url"),new si({...Qu,key_ops:["sign"],d:r,x:s,y:i});if(e.byteLength===$r)return s=Q(n.subarray(o,o+$r),"base64url"),i=Q(n.subarray(o+$r),"base64url"),new si({...ef,key_ops:["sign"],d:r,x:s,y:i});if(e.byteLength===Hr)return s=Q(n.subarray(o,o+Hr),"base64url"),i=Q(n.subarray(o+Hr),"base64url"),new si({...tf,key_ops:["sign"],d:r,x:s,y:i});throw new ot(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function rf(t){const e=ln(t);return kw(e)}function kw(t){const e=t[1][1][0],r=1;let n,o;if(e.byteLength===Ur*2+1)return n=Q(e.subarray(r,r+Ur),"base64url"),o=Q(e.subarray(r+Ur),"base64url"),new Uo({...Qu,key_ops:["verify"],x:n,y:o});if(e.byteLength===$r*2+1)return n=Q(e.subarray(r,r+$r),"base64url"),o=Q(e.subarray(r+$r),"base64url"),new Uo({...ef,key_ops:["verify"],x:n,y:o});if(e.byteLength===Hr*2+1)return n=Q(e.subarray(r,r+Hr),"base64url"),o=Q(e.subarray(r+Hr),"base64url"),new Uo({...tf,key_ops:["verify"],x:n,y:o});throw new ot(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function Cw(t){return St([He(Uint8Array.from([1])),ww(we(t.d??"","base64url")),St([nf(t.crv)],160),St([dc(new oe(Uint8Array.from([4]),we(t.x??"","base64url"),we(t.y??"","base64url")))],161)]).subarray()}function Iw(t){return St([He(Uint8Array.from([1])),St([nf(t.crv)],160),St([dc(new oe(Uint8Array.from([4]),we(t.x??"","base64url"),we(t.y??"","base64url")))],161)]).subarray()}function nf(t){if(t==="P-256")return vw;if(t==="P-384")return xw;if(t==="P-521")return Sw;throw new ot(`Invalid curve ${t}`)}class Uo{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=Iw(this.jwk)),this._raw}toMultihash(){return so.digest($s(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}async verify(e,r,n){return bw(this.jwk,r,e,n)}}class si{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new Uo({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=Cw(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}async sign(e,r){return yw(this.jwk,e,r)}}const Cr=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function ao(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function ga(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function mr(t,...e){if(!ao(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function of(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");ga(t.outputLen),ga(t.blockLen)}function ts(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Rw(t,e){mr(t);const r=e.outputLen;if(t.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function Qr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ii(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function it(t,e){return t<<32-e|t>>>e}const sf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Tw=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function sr(t){if(mr(t),sf)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=Tw[t[r]];return e}const ht={_0:48,_9:57,A:65,F:70,a:97,f:102};function Al(t){if(t>=ht._0&&t<=ht._9)return t-ht._0;if(t>=ht.A&&t<=ht.F)return t-(ht.A-10);if(t>=ht.a&&t<=ht.f)return t-(ht.a-10)}function rs(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(sf)return Uint8Array.fromHex(t);const e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){const i=Al(t.charCodeAt(s)),a=Al(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function Pw(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function uc(t){return typeof t=="string"&&(t=Pw(t)),mr(t),t}function lt(...t){let e=0;for(let n=0;n<t.length;n++){const o=t[n];mr(o),e+=o.length}const r=new Uint8Array(e);for(let n=0,o=0;n<t.length;n++){const s=t[n];r.set(s,o),o+=s.length}return r}class af{}function cf(t){const e=n=>t().update(uc(n)).digest(),r=t();return e.outputLen=r.outputLen,e.blockLen=r.blockLen,e.create=()=>t(),e}function fc(t=32){if(Cr&&typeof Cr.getRandomValues=="function")return Cr.getRandomValues(new Uint8Array(t));if(Cr&&typeof Cr.randomBytes=="function")return Uint8Array.from(Cr.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}function Nw(t,e,r,n){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,r,n);const o=BigInt(32),s=BigInt(4294967295),i=Number(r>>o&s),a=Number(r&s),c=n?4:0,l=n?0:4;t.setUint32(e+c,i,n),t.setUint32(e+l,a,n)}function Lw(t,e,r){return t&e^~t&r}function Bw(t,e,r){return t&e^t&r^e&r}let lf=class extends af{constructor(e,r,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ii(this.buffer)}update(e){ts(this),e=uc(e),mr(e);const{view:r,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){const a=Math.min(o-this.pos,s-i);if(a===o){const c=ii(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ts(this),Rw(e,this),this.finished=!0;const{buffer:r,view:n,blockLen:o,isLE:s}=this;let{pos:i}=this;r[i++]=128,Qr(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)r[u]=0;Nw(n,o-8,BigInt(this.length*8),s),this.process(n,0);const a=ii(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:r,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}};const Tt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ce=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),yo=BigInt(2**32-1),kl=BigInt(32);function _w(t,e=!1){return e?{h:Number(t&yo),l:Number(t>>kl&yo)}:{h:Number(t>>kl&yo)|0,l:Number(t&yo)|0}}function Dw(t,e=!1){const r=t.length;let n=new Uint32Array(r),o=new Uint32Array(r);for(let s=0;s<r;s++){const{h:i,l:a}=_w(t[s],e);[n[s],o[s]]=[i,a]}return[n,o]}const Cl=(t,e,r)=>t>>>r,Il=(t,e,r)=>t<<32-r|e>>>r,Ir=(t,e,r)=>t>>>r|e<<32-r,Rr=(t,e,r)=>t<<32-r|e>>>r,bo=(t,e,r)=>t<<64-r|e>>>r-32,vo=(t,e,r)=>t>>>r-32|e<<64-r;function pt(t,e,r,n){const o=(e>>>0)+(n>>>0);return{h:t+r+(o/2**32|0)|0,l:o|0}}const Ow=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),Fw=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,Mw=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),jw=(t,e,r,n,o)=>e+r+n+o+(t/2**32|0)|0,Uw=(t,e,r,n,o)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(o>>>0),$w=(t,e,r,n,o,s)=>e+r+n+o+s+(t/2**32|0)|0,Hw=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Pt=new Uint32Array(64);class qw extends lf{constructor(e=32){super(64,e,8,!1),this.A=Tt[0]|0,this.B=Tt[1]|0,this.C=Tt[2]|0,this.D=Tt[3]|0,this.E=Tt[4]|0,this.F=Tt[5]|0,this.G=Tt[6]|0,this.H=Tt[7]|0}get(){const{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,r){for(let u=0;u<16;u++,r+=4)Pt[u]=e.getUint32(r,!1);for(let u=16;u<64;u++){const f=Pt[u-15],h=Pt[u-2],g=it(f,7)^it(f,18)^f>>>3,m=it(h,17)^it(h,19)^h>>>10;Pt[u]=m+Pt[u-7]+g+Pt[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=it(a,6)^it(a,11)^it(a,25),h=d+f+Lw(a,c,l)+Hw[u]+Pt[u]|0,m=(it(n,2)^it(n,13)^it(n,22))+Bw(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,o,s,i,a,c,l,d)}roundClean(){Qr(Pt)}destroy(){this.set(0,0,0,0,0,0,0,0),Qr(this.buffer)}}const df=Dw(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),Kw=df[0],zw=df[1],Nt=new Uint32Array(80),Lt=new Uint32Array(80);class Ww extends lf{constructor(e=64){super(128,e,16,!1),this.Ah=Ce[0]|0,this.Al=Ce[1]|0,this.Bh=Ce[2]|0,this.Bl=Ce[3]|0,this.Ch=Ce[4]|0,this.Cl=Ce[5]|0,this.Dh=Ce[6]|0,this.Dl=Ce[7]|0,this.Eh=Ce[8]|0,this.El=Ce[9]|0,this.Fh=Ce[10]|0,this.Fl=Ce[11]|0,this.Gh=Ce[12]|0,this.Gl=Ce[13]|0,this.Hh=Ce[14]|0,this.Hl=Ce[15]|0}get(){const{Ah:e,Al:r,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:g,Hh:m,Hl:y}=this;return[e,r,n,o,s,i,a,c,l,d,u,f,h,g,m,y]}set(e,r,n,o,s,i,a,c,l,d,u,f,h,g,m,y){this.Ah=e|0,this.Al=r|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=m|0,this.Hl=y|0}process(e,r){for(let b=0;b<16;b++,r+=4)Nt[b]=e.getUint32(r),Lt[b]=e.getUint32(r+=4);for(let b=16;b<80;b++){const A=Nt[b-15]|0,L=Lt[b-15]|0,I=Ir(A,L,1)^Ir(A,L,8)^Cl(A,L,7),R=Rr(A,L,1)^Rr(A,L,8)^Il(A,L,7),E=Nt[b-2]|0,x=Lt[b-2]|0,S=Ir(E,x,19)^bo(E,x,61)^Cl(E,x,6),T=Rr(E,x,19)^vo(E,x,61)^Il(E,x,6),B=Mw(R,T,Lt[b-7],Lt[b-16]),v=jw(B,I,S,Nt[b-7],Nt[b-16]);Nt[b]=v|0,Lt[b]=B|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:g,Gh:m,Gl:y,Hh:w,Hl:C}=this;for(let b=0;b<80;b++){const A=Ir(u,f,14)^Ir(u,f,18)^bo(u,f,41),L=Rr(u,f,14)^Rr(u,f,18)^vo(u,f,41),I=u&h^~u&m,R=f&g^~f&y,E=Uw(C,L,R,zw[b],Lt[b]),x=$w(E,w,A,I,Kw[b],Nt[b]),S=E|0,T=Ir(n,o,28)^bo(n,o,34)^bo(n,o,39),B=Rr(n,o,28)^vo(n,o,34)^vo(n,o,39),v=n&s^n&a^s&a,k=o&i^o&c^i&c;w=m|0,C=y|0,m=h|0,y=g|0,h=u|0,g=f|0,{h:u,l:f}=pt(l|0,d|0,x|0,S|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;const P=Ow(S,B,k);n=Fw(P,x,T,v),o=P|0}({h:n,l:o}=pt(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=pt(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=pt(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=pt(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=pt(this.Eh|0,this.El|0,u|0,f|0),{h,l:g}=pt(this.Fh|0,this.Fl|0,h|0,g|0),{h:m,l:y}=pt(this.Gh|0,this.Gl|0,m|0,y|0),{h:w,l:C}=pt(this.Hh|0,this.Hl|0,w|0,C|0),this.set(n,o,s,i,a,c,l,d,u,f,h,g,m,y,w,C)}roundClean(){Qr(Nt,Lt)}destroy(){Qr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const uf=cf(()=>new qw),Vw=cf(()=>new Ww);const hc=BigInt(0),ma=BigInt(1);function dr(t,e=""){if(typeof t!="boolean"){const r=e&&`"${e}"`;throw new Error(r+"expected boolean, got type="+typeof t)}return t}function rt(t,e,r=""){const n=ao(t),o=t?.length,s=e!==void 0;if(!n||s&&o!==e){const i=r&&`"${r}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof t}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return t}function xo(t){const e=t.toString(16);return e.length&1?"0"+e:e}function ff(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?hc:BigInt("0x"+t)}function Os(t){return ff(sr(t))}function Gn(t){return mr(t),ff(sr(Uint8Array.from(t).reverse()))}function pc(t,e){return rs(t.toString(16).padStart(e*2,"0"))}function hf(t,e){return pc(t,e).reverse()}function fe(t,e,r){let n;if(typeof e=="string")try{n=rs(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(ao(e))n=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const o=n.length;if(typeof r=="number"&&o!==r)throw new Error(t+" of length "+r+" expected, got "+o);return n}function Rl(t){return Uint8Array.from(t)}const ai=t=>typeof t=="bigint"&&hc<=t;function Gw(t,e,r){return ai(t)&&ai(e)&&ai(r)&&e<=t&&t<r}function wa(t,e,r,n){if(!Gw(e,r,n))throw new Error("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function pf(t){let e;for(e=0;t>hc;t>>=ma,e+=1);return e}const co=t=>(ma<<BigInt(t))-ma;function Xw(t,e,r){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof r!="function")throw new Error("hmacFn must be a function");const n=h=>new Uint8Array(h),o=h=>Uint8Array.of(h);let s=n(t),i=n(t),a=0;const c=()=>{s.fill(1),i.fill(0),a=0},l=(...h)=>r(i,s,...h),d=(h=n(0))=>{i=l(o(0),h),s=l(),h.length!==0&&(i=l(o(1),h),s=l())},u=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const g=[];for(;h<e;){s=l();const m=s.slice();g.push(m),h+=s.length}return lt(...g)};return(h,g)=>{c(),d(h);let m;for(;!(m=g(u()));)d();return c(),m}}function lo(t,e,r={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function n(o,s,i){const a=t[o];if(i&&a===void 0)return;const c=typeof a;if(c!==s||a===null)throw new Error(`param "${o}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([o,s])=>n(o,s,!1)),Object.entries(r).forEach(([o,s])=>n(o,s,!0))}function ns(t){const e=new WeakMap;return(r,...n)=>{const o=e.get(r);if(o!==void 0)return o;const s=t(r,...n);return e.set(r,s),s}}const je=BigInt(0),Ee=BigInt(1),er=BigInt(2),gf=BigInt(3),mf=BigInt(4),wf=BigInt(5),Yw=BigInt(7),yf=BigInt(8),Zw=BigInt(9),bf=BigInt(16);function ye(t,e){const r=t%e;return r>=je?r:e+r}function ue(t,e,r){let n=t;for(;e-- >je;)n*=n,n%=r;return n}function Tl(t,e){if(t===je)throw new Error("invert: expected non-zero number");if(e<=je)throw new Error("invert: expected positive modulus, got "+e);let r=ye(t,e),n=e,o=je,s=Ee;for(;r!==je;){const a=n/r,c=n%r,l=o-s*a;n=r,r=c,o=s,s=l}if(n!==Ee)throw new Error("invert: does not exist");return ye(o,e)}function gc(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}function vf(t,e){const r=(t.ORDER+Ee)/mf,n=t.pow(e,r);return gc(t,n,e),n}function Jw(t,e){const r=(t.ORDER-wf)/yf,n=t.mul(e,er),o=t.pow(n,r),s=t.mul(e,o),i=t.mul(t.mul(s,er),o),a=t.mul(s,t.sub(i,t.ONE));return gc(t,a,e),a}function Qw(t){const e=wr(t),r=xf(t),n=r(e,e.neg(e.ONE)),o=r(e,n),s=r(e,e.neg(n)),i=(t+Yw)/bf;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,n);const u=a.mul(l,o),f=a.mul(l,s),h=a.eql(a.sqr(d),c),g=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,g);const m=a.eql(a.sqr(d),c),y=a.cmov(l,d,m);return gc(a,y,c),y}}function xf(t){if(t<gf)throw new Error("sqrt is not defined for small field");let e=t-Ee,r=0;for(;e%er===je;)e/=er,r++;let n=er;const o=wr(t);for(;Pl(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return vf;let s=o.pow(n,e);const i=(e+Ee)/er;return function(c,l){if(c.is0(l))return l;if(Pl(c,l)!==1)throw new Error("Cannot find square root");let d=r,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let g=1,m=c.sqr(f);for(;!c.eql(m,c.ONE);)if(g++,m=c.sqr(m),g===d)throw new Error("Cannot find square root");const y=Ee<<BigInt(d-g-1),w=c.pow(u,y);d=g,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function ey(t){return t%mf===gf?vf:t%yf===wf?Jw:t%bf===Zw?Qw(t):xf(t)}const ty=(t,e)=>(ye(t,e)&Ee)===Ee,ry=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function ny(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},r=ry.reduce((n,o)=>(n[o]="function",n),e);return lo(t,r),t}function oy(t,e,r){if(r<je)throw new Error("invalid exponent, negatives unsupported");if(r===je)return t.ONE;if(r===Ee)return e;let n=t.ONE,o=e;for(;r>je;)r&Ee&&(n=t.mul(n,o)),o=t.sqr(o),r>>=Ee;return n}function Sf(t,e,r=!1){const n=new Array(e.length).fill(r?t.ZERO:void 0),o=e.reduce((i,a,c)=>t.is0(a)?i:(n[c]=i,t.mul(i,a)),t.ONE),s=t.inv(o);return e.reduceRight((i,a,c)=>t.is0(a)?i:(n[c]=t.mul(i,n[c]),t.mul(i,a)),s),n}function Pl(t,e){const r=(t.ORDER-Ee)/er,n=t.pow(e,r),o=t.eql(n,t.ONE),s=t.eql(n,t.ZERO),i=t.eql(n,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Ef(t,e){e!==void 0&&ga(e);const r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}function wr(t,e,r=!1,n={}){if(t<=je)throw new Error("invalid field: expected ORDER > 0, got "+t);let o,s,i=!1,a;if(typeof e=="object"&&e!=null){if(n.sqrt||r)throw new Error("cannot specify opts in two arguments");const f=e;f.BITS&&(o=f.BITS),f.sqrt&&(s=f.sqrt),typeof f.isLE=="boolean"&&(r=f.isLE),typeof f.modFromBytes=="boolean"&&(i=f.modFromBytes),a=f.allowedLengths}else typeof e=="number"&&(o=e),n.sqrt&&(s=n.sqrt);const{nBitLength:c,nByteLength:l}=Ef(t,o);if(l>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let d;const u=Object.freeze({ORDER:t,isLE:r,BITS:c,BYTES:l,MASK:co(c),ZERO:je,ONE:Ee,allowedLengths:a,create:f=>ye(f,t),isValid:f=>{if(typeof f!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof f);return je<=f&&f<t},is0:f=>f===je,isValidNot0:f=>!u.is0(f)&&u.isValid(f),isOdd:f=>(f&Ee)===Ee,neg:f=>ye(-f,t),eql:(f,h)=>f===h,sqr:f=>ye(f*f,t),add:(f,h)=>ye(f+h,t),sub:(f,h)=>ye(f-h,t),mul:(f,h)=>ye(f*h,t),pow:(f,h)=>oy(u,f,h),div:(f,h)=>ye(f*Tl(h,t),t),sqrN:f=>f*f,addN:(f,h)=>f+h,subN:(f,h)=>f-h,mulN:(f,h)=>f*h,inv:f=>Tl(f,t),sqrt:s||(f=>(d||(d=ey(t)),d(u,f))),toBytes:f=>r?hf(f,l):pc(f,l),fromBytes:(f,h=!0)=>{if(a){if(!a.includes(f.length)||f.length>l)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+f.length);const m=new Uint8Array(l);m.set(f,r?0:m.length-f.length),f=m}if(f.length!==l)throw new Error("Field.fromBytes: expected "+l+" bytes, got "+f.length);let g=r?Gn(f):Os(f);if(i&&(g=ye(g,t)),!h&&!u.isValid(g))throw new Error("invalid field element: outside of range 0..ORDER");return g},invertBatch:f=>Sf(u,f),cmov:(f,h,g)=>g?h:f});return Object.freeze(u)}function Af(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function kf(t){const e=Af(t);return e+Math.ceil(e/2)}function sy(t,e,r=!1){const n=t.length,o=Af(e),s=kf(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);const i=r?Gn(t):Os(t),a=ye(i,e-Ee)+Ee;return r?hf(a,o):pc(a,o)}const en=BigInt(0),tr=BigInt(1);function os(t,e){const r=e.negate();return t?r:e}function rr(t,e){const r=Sf(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function Cf(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function ci(t,e){Cf(t,e);const r=Math.ceil(e/t)+1,n=2**(t-1),o=2**t,s=co(t),i=BigInt(t);return{windows:r,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function Nl(t,e,r){const{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=r;let a=Number(t&o),c=t>>i;a>n&&(a-=s,c+=tr);const l=e*n,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}function iy(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function ay(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((r,n)=>{if(!e.isValid(r))throw new Error("invalid scalar at index "+n)})}const li=new WeakMap,If=new WeakMap;function di(t){return If.get(t)||1}function Ll(t){if(t!==en)throw new Error("invalid wNAF")}class Rf{constructor(e,r){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=r}_unsafeLadder(e,r,n=this.ZERO){let o=e;for(;r>en;)r&tr&&(n=n.add(o)),o=o.double(),r>>=tr;return n}precomputeWindow(e,r){const{windows:n,windowSize:o}=ci(r,this.bits),s=[];let i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE;const i=ci(e,this.bits);for(let a=0;a<i.windows;a++){const{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=Nl(n,a,i);n=c,d?s=s.add(os(f,r[h])):o=o.add(os(u,r[l]))}return Ll(n),{p:o,f:s}}wNAFUnsafe(e,r,n,o=this.ZERO){const s=ci(e,this.bits);for(let i=0;i<s.windows&&n!==en;i++){const{nextN:a,offset:c,isZero:l,isNeg:d}=Nl(n,i,s);if(n=a,!l){const u=r[c];o=o.add(d?u.negate():u)}}return Ll(n),o}getPrecomputes(e,r,n){let o=li.get(r);return o||(o=this.precomputeWindow(r,e),e!==1&&(typeof n=="function"&&(o=n(o)),li.set(r,o))),o}cached(e,r,n){const o=di(e);return this.wNAF(o,this.getPrecomputes(o,e,n),r)}unsafe(e,r,n,o){const s=di(e);return s===1?this._unsafeLadder(e,r,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),r,o)}createCache(e,r){Cf(r,this.bits),If.set(e,r),li.delete(e)}hasCache(e){return di(e)!==1}}function cy(t,e,r,n){let o=e,s=t.ZERO,i=t.ZERO;for(;r>en||n>en;)r&tr&&(s=s.add(o)),n&tr&&(i=i.add(o)),o=o.double(),r>>=tr,n>>=tr;return{p1:s,p2:i}}function Tf(t,e,r,n){iy(r,t),ay(n,e);const o=r.length,s=n.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,a=pf(BigInt(o));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=co(c),d=new Array(Number(l)+1).fill(i),u=Math.floor((e.BITS-1)/c)*c;let f=i;for(let h=u;h>=0;h-=c){d.fill(i);for(let m=0;m<s;m++){const y=n[m],w=Number(y>>BigInt(h)&l);d[w]=d[w].add(r[m])}let g=i;for(let m=d.length-1,y=i;m>0;m--)y=y.add(d[m]),g=g.add(y);if(f=f.add(g),h!==0)for(let m=0;m<c;m++)f=f.double()}return f}function Bl(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return ny(e),e}else return wr(t,{isLE:r})}function Pf(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(const c of["p","n","h"]){const l=e[c];if(!(typeof l=="bigint"&&l>en))throw new Error(`CURVE.${c} must be positive bigint`)}const o=Bl(e.p,r.Fp,n),s=Bl(e.n,r.Fn,n),a=["Gx","Gy","a",t==="weierstrass"?"b":"d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}const Bt=BigInt(0),be=BigInt(1),ui=BigInt(2),ly=BigInt(8);function dy(t,e,r,n){const o=t.sqr(r),s=t.sqr(n),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function uy(t,e={}){const r=Pf("edwards",t,e,e.FpFnLE),{Fp:n,Fn:o}=r;let s=r.CURVE;const{h:i}=s;lo(e,{},{uvRatio:"function"});const a=ui<<BigInt(o.BYTES*8)-be,c=y=>n.create(y),l=e.uvRatio||((y,w)=>{try{return{isValid:!0,value:n.sqrt(n.div(y,w))}}catch{return{isValid:!1,value:Bt}}});if(!dy(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(y,w,C=!1){const b=C?be:Bt;return wa("coordinate "+y,w,b,a),w}function u(y){if(!(y instanceof g))throw new Error("ExtendedPoint expected")}const f=ns((y,w)=>{const{X:C,Y:b,Z:A}=y,L=y.is0();w==null&&(w=L?ly:n.inv(A));const I=c(C*w),R=c(b*w),E=n.mul(A,w);if(L)return{x:Bt,y:be};if(E!==be)throw new Error("invZ was invalid");return{x:I,y:R}}),h=ns(y=>{const{a:w,d:C}=s;if(y.is0())throw new Error("bad point: ZERO");const{X:b,Y:A,Z:L,T:I}=y,R=c(b*b),E=c(A*A),x=c(L*L),S=c(x*x),T=c(R*w),B=c(x*c(T+E)),v=c(S+c(C*c(R*E)));if(B!==v)throw new Error("bad point: equation left != right (1)");const k=c(b*A),P=c(L*I);if(k!==P)throw new Error("bad point: equation left != right (2)");return!0});class g{constructor(w,C,b,A){this.X=d("x",w),this.Y=d("y",C),this.Z=d("z",b,!0),this.T=d("t",A),Object.freeze(this)}static CURVE(){return s}static fromAffine(w){if(w instanceof g)throw new Error("extended point not allowed");const{x:C,y:b}=w||{};return d("x",C),d("y",b),new g(C,b,be,c(C*b))}static fromBytes(w,C=!1){const b=n.BYTES,{a:A,d:L}=s;w=Rl(rt(w,b,"point")),dr(C,"zip215");const I=Rl(w),R=w[b-1];I[b-1]=R&-129;const E=Gn(I),x=C?a:n.ORDER;wa("point.y",E,Bt,x);const S=c(E*E),T=c(S-be),B=c(L*S-A);let{isValid:v,value:k}=l(T,B);if(!v)throw new Error("bad point: invalid y coordinate");const P=(k&be)===be,N=(R&128)!==0;if(!C&&k===Bt&&N)throw new Error("bad point: x=0 and x_0=1");return N!==P&&(k=c(-k)),g.fromAffine({x:k,y:E})}static fromHex(w,C=!1){return g.fromBytes(fe("point",w),C)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,C=!0){return m.createCache(this,w),C||this.multiply(ui),this}assertValidity(){h(this)}equals(w){u(w);const{X:C,Y:b,Z:A}=this,{X:L,Y:I,Z:R}=w,E=c(C*R),x=c(L*A),S=c(b*R),T=c(I*A);return E===x&&S===T}is0(){return this.equals(g.ZERO)}negate(){return new g(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:w}=s,{X:C,Y:b,Z:A}=this,L=c(C*C),I=c(b*b),R=c(ui*c(A*A)),E=c(w*L),x=C+b,S=c(c(x*x)-L-I),T=E+I,B=T-R,v=E-I,k=c(S*B),P=c(T*v),N=c(S*v),j=c(B*T);return new g(k,P,j,N)}add(w){u(w);const{a:C,d:b}=s,{X:A,Y:L,Z:I,T:R}=this,{X:E,Y:x,Z:S,T}=w,B=c(A*E),v=c(L*x),k=c(R*b*T),P=c(I*S),N=c((A+L)*(E+x)-B-v),j=P-k,U=P+k,O=c(v-C*B),_=c(N*j),D=c(U*O),F=c(N*O),H=c(j*U);return new g(_,D,H,F)}subtract(w){return this.add(w.negate())}multiply(w){if(!o.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");const{p:C,f:b}=m.cached(this,w,A=>rr(g,A));return rr(g,[C,b])[0]}multiplyUnsafe(w,C=g.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===Bt?g.ZERO:this.is0()||w===be?this:m.unsafe(this,w,b=>rr(g,b),C)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return m.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===be?this:this.multiplyUnsafe(i)}toBytes(){const{x:w,y:C}=this.toAffine(),b=n.toBytes(C);return b[b.length-1]|=w&be?128:0,b}toHex(){return sr(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(w){return rr(g,w)}static msm(w,C){return Tf(g,o,w,C)}_setWindowSize(w){this.precompute(w)}toRawBytes(){return this.toBytes()}}g.BASE=new g(s.Gx,s.Gy,be,c(s.Gx*s.Gy)),g.ZERO=new g(Bt,be,be,Bt),g.Fp=n,g.Fn=o;const m=new Rf(g,o.BITS);return g.BASE.precompute(8),g}function fy(t,e,r={}){if(typeof e!="function")throw new Error('"hash" function param is required');lo(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:n}=r,{BASE:o,Fp:s,Fn:i}=t,a=r.randomBytes||fc,c=r.adjustScalarBytes||(x=>x),l=r.domain||((x,S,T)=>{if(dr(T,"phflag"),S.length||T)throw new Error("Contexts/pre-hash are not supported");return x});function d(x){return i.create(Gn(x))}function u(x){const S=b.secretKey;x=fe("private key",x,S);const T=fe("hashed private key",e(x),2*S),B=c(T.slice(0,S)),v=T.slice(S,2*S),k=d(B);return{head:B,prefix:v,scalar:k}}function f(x){const{head:S,prefix:T,scalar:B}=u(x),v=o.multiply(B),k=v.toBytes();return{head:S,prefix:T,scalar:B,point:v,pointBytes:k}}function h(x){return f(x).pointBytes}function g(x=Uint8Array.of(),...S){const T=lt(...S);return d(e(l(T,fe("context",x),!!n)))}function m(x,S,T={}){x=fe("message",x),n&&(x=n(x));const{prefix:B,scalar:v,pointBytes:k}=f(S),P=g(T.context,B,x),N=o.multiply(P).toBytes(),j=g(T.context,N,k,x),U=i.create(P+j*v);if(!i.isValid(U))throw new Error("sign failed: invalid s");const O=lt(N,i.toBytes(U));return rt(O,b.signature,"result")}const y={zip215:!0};function w(x,S,T,B=y){const{context:v,zip215:k}=B,P=b.signature;x=fe("signature",x,P),S=fe("message",S),T=fe("publicKey",T,b.publicKey),k!==void 0&&dr(k,"zip215"),n&&(S=n(S));const N=P/2,j=x.subarray(0,N),U=Gn(x.subarray(N,P));let O,_,D;try{O=t.fromBytes(T,k),_=t.fromBytes(j,k),D=o.multiplyUnsafe(U)}catch{return!1}if(!k&&O.isSmallOrder())return!1;const F=g(v,_.toBytes(),O.toBytes(),S);return _.add(O.multiplyUnsafe(F)).subtract(D).clearCofactor().is0()}const C=s.BYTES,b={secretKey:C,publicKey:C,signature:2*C,seed:C};function A(x=a(b.seed)){return rt(x,b.seed,"seed")}function L(x){const S=E.randomSecretKey(x);return{secretKey:S,publicKey:h(S)}}function I(x){return ao(x)&&x.length===i.BYTES}function R(x,S){try{return!!t.fromBytes(x,S)}catch{return!1}}const E={getExtendedPublicKey:f,randomSecretKey:A,isValidSecretKey:I,isValidPublicKey:R,toMontgomery(x){const{y:S}=t.fromBytes(x),T=b.publicKey,B=T===32;if(!B&&T!==57)throw new Error("only defined for 25519 and 448");const v=B?s.div(be+S,be-S):s.div(S-be,S+be);return s.toBytes(v)},toMontgomerySecret(x){const S=b.secretKey;rt(x,S);const T=e(x.subarray(0,S));return c(T).subarray(0,S)},randomPrivateKey:A,precompute(x=8,S=t.BASE){return S.precompute(x,!1)}};return Object.freeze({keygen:L,getPublicKey:h,sign:m,verify:w,utils:E,Point:t,lengths:b})}function hy(t){const e={a:t.a,d:t.d,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},r=t.Fp,n=wr(e.n,t.nBitLength,!0),o={Fp:r,Fn:n,uvRatio:t.uvRatio},s={randomBytes:t.randomBytes,adjustScalarBytes:t.adjustScalarBytes,domain:t.domain,prehash:t.prehash,mapToCurve:t.mapToCurve};return{CURVE:e,curveOpts:o,hash:t.hash,eddsaOpts:s}}function py(t,e){const r=e.Point;return Object.assign({},e,{ExtendedPoint:r,CURVE:t,nBitLength:r.Fn.BITS,nByteLength:r.Fn.BYTES})}function gy(t){const{CURVE:e,curveOpts:r,hash:n,eddsaOpts:o}=hy(t),s=uy(e,r),i=fy(s,n,o);return py(t,i)}const my=BigInt(1),_l=BigInt(2);BigInt(3);const wy=BigInt(5),yy=BigInt(8),mc=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),Nf={p:mc,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:yy,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function by(t){const e=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),s=mc,a=t*t%s*t%s,c=ue(a,_l,s)*a%s,l=ue(c,my,s)*t%s,d=ue(l,wy,s)*l%s,u=ue(d,e,s)*d%s,f=ue(u,r,s)*u%s,h=ue(f,n,s)*f%s,g=ue(h,o,s)*h%s,m=ue(g,o,s)*h%s,y=ue(m,e,s)*d%s;return{pow_p_5_8:ue(y,_l,s)*t%s,b2:a}}function vy(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Dl=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function xy(t,e){const r=mc,n=ye(e*e*e,r),o=ye(n*n*e,r),s=by(t*o).pow_p_5_8;let i=ye(t*n*s,r);const a=ye(e*i*i,r),c=i,l=ye(i*Dl,r),d=a===t,u=a===ye(-t,r),f=a===ye(-t*Dl,r);return d&&(i=c),(u||f)&&(i=l),ty(i,r)&&(i=ye(-i,r)),{isValid:d||u,value:i}}const Sy=wr(Nf.p,{isLE:!0}),Ey={...Nf,Fp:Sy,hash:Vw,adjustScalarBytes:vy,uvRatio:xy},ss=gy(Ey);class Ol extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}}class Fl extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}}class Ay extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}}const Ct={get(t=globalThis){const e=t.crypto;if(e?.subtle==null)throw new Ay("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}},is=32,mt=64,ya=32;let qr;const Lf=(async()=>{try{return await Ct.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function ky(){const t=ss.utils.randomPrivateKey(),e=ss.getPublicKey(t);return{privateKey:Ly(t,e),publicKey:e}}async function Cy(t,e){let r;t.length===mt?r=t.subarray(0,32):r=t;const n={crv:"Ed25519",kty:"OKP",x:Q(t.subarray(32),"base64url"),d:Q(r,"base64url"),ext:!0,key_ops:["sign"]},o=await Ct.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await Ct.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function Iy(t,e){const r=t.subarray(0,ya);return ss.sign(e instanceof Uint8Array?e:e.subarray(),r)}async function Ry(t,e){return qr==null&&(qr=await Lf),qr?Cy(t,e):Iy(t,e)}async function Ty(t,e,r){if(t.buffer instanceof ArrayBuffer){const n=await Ct.get().subtle.importKey("raw",t.buffer,{name:"Ed25519"},!1,["verify"]);return await Ct.get().subtle.verify({name:"Ed25519"},n,e,r instanceof Uint8Array?r:r.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function Py(t,e,r){return ss.verify(e,r instanceof Uint8Array?r:r.subarray(),t)}async function Ny(t,e,r){return qr==null&&(qr=await Lf),qr?Ty(t,e,r):Py(t,e,r)}function Ly(t,e){const r=new Uint8Array(mt);for(let n=0;n<ya;n++)r[n]=t[n],r[ya+n]=e[n];return r}function Fs(t){return t==null?!1:typeof t.then=="function"&&typeof t.catch=="function"&&typeof t.finally=="function"}class Bf{type="Ed25519";raw;constructor(e){this.raw=Xn(e,is)}toMultihash(){return so.digest($s(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}verify(e,r,n){n?.signal?.throwIfAborted();const o=Ny(this.raw,r,e);return Fs(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}}class ba{type="Ed25519";raw;publicKey;constructor(e,r){this.raw=Xn(e,mt),this.publicKey=new Bf(r)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}sign(e,r){r?.signal?.throwIfAborted();const n=Ry(this.raw,e);return Fs(n)?n.then(o=>(r?.signal?.throwIfAborted(),o)):(r?.signal?.throwIfAborted(),n)}}function By(t){if(t.length>mt){t=Xn(t,mt+is);const n=t.subarray(0,mt),o=t.subarray(mt,t.length);return new ba(n,o)}t=Xn(t,mt);const e=t.subarray(0,mt),r=t.subarray(is);return new ba(e,r)}function _f(t){return t=Xn(t,is),new Bf(t)}async function _y(){const{privateKey:t,publicKey:e}=ky();return new ba(t,e)}function Xn(t,e){if(t=Uint8Array.from(t??[]),t.length!==e)throw new ot(`Key must be a Uint8Array of length ${e}, got ${t.length}`);return t}const Dy=Math.pow(2,7),Oy=Math.pow(2,14),Fy=Math.pow(2,21),wc=Math.pow(2,28),yc=Math.pow(2,35),bc=Math.pow(2,42),vc=Math.pow(2,49),re=128,Ie=127;function yr(t){if(t<Dy)return 1;if(t<Oy)return 2;if(t<Fy)return 3;if(t<wc)return 4;if(t<yc)return 5;if(t<bc)return 6;if(t<vc)return 7;if(Number.MAX_SAFE_INTEGER!=null&&t>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Df(t,e,r=0){switch(yr(t)){case 8:e[r++]=t&255|re,t/=128;case 7:e[r++]=t&255|re,t/=128;case 6:e[r++]=t&255|re,t/=128;case 5:e[r++]=t&255|re,t/=128;case 4:e[r++]=t&255|re,t>>>=7;case 3:e[r++]=t&255|re,t>>>=7;case 2:e[r++]=t&255|re,t>>>=7;case 1:{e[r++]=t&255,t>>>=7;break}default:throw new Error("unreachable")}return e}function My(t,e,r=0){switch(yr(t)){case 8:e.set(r++,t&255|re),t/=128;case 7:e.set(r++,t&255|re),t/=128;case 6:e.set(r++,t&255|re),t/=128;case 5:e.set(r++,t&255|re),t/=128;case 4:e.set(r++,t&255|re),t>>>=7;case 3:e.set(r++,t&255|re),t>>>=7;case 2:e.set(r++,t&255|re),t>>>=7;case 1:{e.set(r++,t&255),t>>>=7;break}default:throw new Error("unreachable")}return e}function Of(t,e){let r=t[e],n=0;if(n+=r&Ie,r<re||(r=t[e+1],n+=(r&Ie)<<7,r<re)||(r=t[e+2],n+=(r&Ie)<<14,r<re)||(r=t[e+3],n+=(r&Ie)<<21,r<re)||(r=t[e+4],n+=(r&Ie)*wc,r<re)||(r=t[e+5],n+=(r&Ie)*yc,r<re)||(r=t[e+6],n+=(r&Ie)*bc,r<re)||(r=t[e+7],n+=(r&Ie)*vc,r<re))return n;throw new RangeError("Could not decode varint")}function jy(t,e){let r=t.get(e),n=0;if(n+=r&Ie,r<re||(r=t.get(e+1),n+=(r&Ie)<<7,r<re)||(r=t.get(e+2),n+=(r&Ie)<<14,r<re)||(r=t.get(e+3),n+=(r&Ie)<<21,r<re)||(r=t.get(e+4),n+=(r&Ie)*wc,r<re)||(r=t.get(e+5),n+=(r&Ie)*yc,r<re)||(r=t.get(e+6),n+=(r&Ie)*bc,r<re)||(r=t.get(e+7),n+=(r&Ie)*vc,r<re))return n;throw new RangeError("Could not decode varint")}function Uy(t,e,r=0){return e==null&&(e=kt(yr(t))),e instanceof Uint8Array?Df(t,e,r):My(t,e,r)}function Ff(t,e=0){return t instanceof Uint8Array?Of(t,e):jy(t,e)}const xc=new Float32Array([-0]),$t=new Uint8Array(xc.buffer);function $y(t,e,r){xc[0]=t,e[r]=$t[0],e[r+1]=$t[1],e[r+2]=$t[2],e[r+3]=$t[3]}function Hy(t,e){return $t[0]=t[e],$t[1]=t[e+1],$t[2]=t[e+2],$t[3]=t[e+3],xc[0]}const Sc=new Float64Array([-0]),Re=new Uint8Array(Sc.buffer);function qy(t,e,r){Sc[0]=t,e[r]=Re[0],e[r+1]=Re[1],e[r+2]=Re[2],e[r+3]=Re[3],e[r+4]=Re[4],e[r+5]=Re[5],e[r+6]=Re[6],e[r+7]=Re[7]}function Ky(t,e){return Re[0]=t[e],Re[1]=t[e+1],Re[2]=t[e+2],Re[3]=t[e+3],Re[4]=t[e+4],Re[5]=t[e+5],Re[6]=t[e+6],Re[7]=t[e+7],Sc[0]}const zy=BigInt(Number.MAX_SAFE_INTEGER),Wy=BigInt(Number.MIN_SAFE_INTEGER);class Te{lo;hi;constructor(e,r){this.lo=e|0,this.hi=r|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){const r=~this.lo+1>>>0;let n=~this.hi>>>0;return r===0&&(n=n+1>>>0),-(r+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){const r=~this.lo+1>>>0;let n=~this.hi>>>0;return r===0&&(n=n+1>>>0),-(BigInt(r)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){const e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){const e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){const e=this.lo,r=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?r===0?e<16384?e<128?1:2:e<2097152?3:4:r<16384?r<128?5:6:r<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return ir;if(e<zy&&e>Wy)return this.fromNumber(Number(e));const r=e<0n;r&&(e=-e);let n=e>>32n,o=e-(n<<32n);return r&&(n=~n|0n,o=~o|0n,++o>Ml&&(o=0n,++n>Ml&&(n=0n))),new Te(Number(o),Number(n))}static fromNumber(e){if(e===0)return ir;const r=e<0;r&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return r&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new Te(n,o)}static from(e){return typeof e=="number"?Te.fromNumber(e):typeof e=="bigint"?Te.fromBigInt(e):typeof e=="string"?Te.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new Te(e.low>>>0,e.high>>>0):ir}}const ir=new Te(0,0);ir.toBigInt=function(){return 0n};ir.zzEncode=ir.zzDecode=function(){return this};ir.length=function(){return 1};const Ml=4294967296n;function Vy(t){let e=0,r=0;for(let n=0;n<t.length;++n)r=t.charCodeAt(n),r<128?e+=1:r<2048?e+=2:(r&64512)===55296&&(t.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Gy(t,e,r){if(r-e<1)return"";let o;const s=[];let i=0,a;for(;e<r;)a=t[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|t[e++]&63:a>239&&a<365?(a=((a&7)<<18|(t[e++]&63)<<12|(t[e++]&63)<<6|t[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(t[e++]&63)<<6|t[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function Mf(t,e,r){const n=r;let o,s;for(let i=0;i<t.length;++i)o=t.charCodeAt(i),o<128?e[r++]=o:o<2048?(e[r++]=o>>6|192,e[r++]=o&63|128):(o&64512)===55296&&((s=t.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[r++]=o>>18|240,e[r++]=o>>12&63|128,e[r++]=o>>6&63|128,e[r++]=o&63|128):(e[r++]=o>>12|224,e[r++]=o>>6&63|128,e[r++]=o&63|128);return r-n}function et(t,e){return RangeError(`index out of range: ${t.pos} + ${e??1} > ${t.len}`)}function So(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}class Xy{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,et(this,10);return e}int32(){return this.uint32()|0}sint32(){const e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw et(this,4);return So(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw et(this,4);return So(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw et(this,4);const e=Hy(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw et(this,4);const e=Ky(this.buf,this.pos);return this.pos+=8,e}bytes(){const e=this.uint32(),r=this.pos,n=this.pos+e;if(n>this.len)throw et(this,e);return this.pos+=e,r===n?new Uint8Array(0):this.buf.subarray(r,n)}string(){const e=this.bytes();return Gy(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw et(this,e);this.pos+=e}else do if(this.pos>=this.len)throw et(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){const e=new Te(0,0);let r=0;if(this.len-this.pos>4){for(;r<4;++r)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<r*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;r=0}else{for(;r<3;++r){if(this.pos>=this.len)throw et(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<r*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<r*7)>>>0,e}if(this.len-this.pos>4){for(;r<5;++r)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<r*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;r<5;++r){if(this.pos>=this.len)throw et(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<r*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw et(this,8);const e=So(this.buf,this.pos+=4),r=So(this.buf,this.pos+=4);return new Te(e,r)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){const e=Of(this.buf,this.pos);return this.pos+=yr(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}}function Yy(t){return new Xy(t instanceof Uint8Array?t:t.subarray())}function Ms(t,e,r){const n=Yy(t);return e.decode(n,void 0,r)}function Zy(t){let n,o=8192;return function(i){if(i<1||i>4096)return kt(i);o+i>8192&&(n=kt(8192),o=0);const a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}class _n{fn;len;next;val;constructor(e,r,n){this.fn=e,this.len=r,this.next=void 0,this.val=n}}function fi(){}class Jy{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}}const Qy=Zy();function eb(t){return globalThis.Buffer!=null?kt(t):Qy(t)}class va{len;head;tail;states;constructor(){this.len=0,this.head=new _n(fi,0,0),this.tail=this.head,this.states=null}_push(e,r,n){return this.tail=this.tail.next=new _n(e,r,n),this.len+=r,this}uint32(e){return this.len+=(this.tail=this.tail.next=new rb((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Eo,10,Te.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){const r=Te.fromBigInt(e);return this._push(Eo,r.length(),r)}uint64Number(e){return this._push(Df,yr(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){const r=Te.fromBigInt(e).zzEncode();return this._push(Eo,r.length(),r)}sint64Number(e){const r=Te.fromNumber(e).zzEncode();return this._push(Eo,r.length(),r)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(hi,1,e?1:0)}fixed32(e){return this._push(bn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){const r=Te.fromBigInt(e);return this._push(bn,4,r.lo)._push(bn,4,r.hi)}fixed64Number(e){const r=Te.fromNumber(e);return this._push(bn,4,r.lo)._push(bn,4,r.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push($y,4,e)}double(e){return this._push(qy,8,e)}bytes(e){const r=e.length>>>0;return r===0?this._push(hi,1,0):this.uint32(r)._push(nb,r,e)}string(e){const r=Vy(e);return r!==0?this.uint32(r)._push(Mf,r,e):this._push(hi,1,0)}fork(){return this.states=new Jy(this),this.head=this.tail=new _n(fi,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new _n(fi,0,0),this.len=0),this}ldelim(){const e=this.head,r=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=r,this.len+=n),this}finish(){let e=this.head.next;const r=eb(this.len);let n=0;for(;e!=null;)e.fn(e.val,r,n),n+=e.len,e=e.next;return r}}function hi(t,e,r){e[r]=t&255}function tb(t,e,r){for(;t>127;)e[r++]=t&127|128,t>>>=7;e[r]=t}class rb extends _n{next;constructor(e,r){super(tb,e,r),this.next=void 0}}function Eo(t,e,r){for(;t.hi!==0;)e[r++]=t.lo&127|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)e[r++]=t.lo&127|128,t.lo=t.lo>>>7;e[r++]=t.lo}function bn(t,e,r){e[r]=t&255,e[r+1]=t>>>8&255,e[r+2]=t>>>16&255,e[r+3]=t>>>24}function nb(t,e,r){e.set(t,r)}globalThis.Buffer!=null&&(va.prototype.bytes=function(t){const e=t.length>>>0;return this.uint32(e),e>0&&this._push(ob,e,t),this},va.prototype.string=function(t){const e=globalThis.Buffer.byteLength(t);return this.uint32(e),e>0&&this._push(sb,e,t),this});function ob(t,e,r){e.set(t,r)}function sb(t,e,r){t.length<40?Mf(t,e,r):e.utf8Write!=null?e.utf8Write(t,r):e.set(we(t),r)}function ib(){return new va}function js(t,e){const r=ib();return e.encode(t,r,{lengthDelimited:!1}),r.finish()}var as;(function(t){t[t.VARINT=0]="VARINT",t[t.BIT64=1]="BIT64",t[t.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",t[t.START_GROUP=3]="START_GROUP",t[t.END_GROUP=4]="END_GROUP",t[t.BIT32=5]="BIT32"})(as||(as={}));function jf(t,e,r,n){return{name:t,type:e,encode:r,decode:n}}function ab(t){function e(o){if(t[o.toString()]==null)throw new Error("Invalid enum value");return t[o]}const r=function(s,i){const a=e(s);i.int32(a)},n=function(s){const i=s.int32();return e(i)};return jf("enum",as.VARINT,r,n)}function Us(t,e){return jf("message",as.LENGTH_DELIMITED,t,e)}class jl extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"}var le;(function(t){t.RSA="RSA",t.Ed25519="Ed25519",t.secp256k1="secp256k1",t.ECDSA="ECDSA"})(le||(le={}));var xa;(function(t){t[t.RSA=0]="RSA",t[t.Ed25519=1]="Ed25519",t[t.secp256k1=2]="secp256k1",t[t.ECDSA=3]="ECDSA"})(xa||(xa={}));(function(t){t.codec=()=>ab(xa)})(le||(le={}));var ur;(function(t){let e;t.codec=()=>(e==null&&(e=Us((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.Type!=null&&(n.uint32(8),le.codec().encode(r.Type,n)),r.Data!=null&&(n.uint32(18),n.bytes(r.Data)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.Type=le.codec().decode(r);break}case 2:{s.Data=r.bytes();break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>js(r,t.codec()),t.decode=(r,n)=>Ms(r,t.codec(),n)})(ur||(ur={}));var cs;(function(t){let e;t.codec=()=>(e==null&&(e=Us((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.Type!=null&&(n.uint32(8),le.codec().encode(r.Type,n)),r.Data!=null&&(n.uint32(18),n.bytes(r.Data)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.Type=le.codec().decode(r);break}case 2:{s.Data=r.bytes();break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>js(r,t.codec()),t.decode=(r,n)=>Ms(r,t.codec(),n)})(cs||(cs={}));const Uf=uf;class $f{type="RSA";jwk;_raw;_multihash;constructor(e,r){this.jwk=e,this._multihash=r}get raw(){return this._raw==null&&(this._raw=qf(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ce.createV1(114,this._multihash)}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}verify(e,r,n){return Sb(this.jwk,r,e,n)}}class cb{type="RSA";jwk;_raw;publicKey;constructor(e,r){this.jwk=e,this.publicKey=r}get raw(){return this._raw==null&&(this._raw=hb(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}sign(e,r){return xb(this.jwk,e,r)}}const lb=8192,Hf=18,db=1062,ub=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function fb(t){return{n:Q(t[1],"base64url"),e:Q(t[2],"base64url"),d:Q(t[3],"base64url"),p:Q(t[4],"base64url"),q:Q(t[5],"base64url"),dp:Q(t[6],"base64url"),dq:Q(t[7],"base64url"),qi:Q(t[8],"base64url"),kty:"RSA"}}function hb(t){if(t.n==null||t.e==null||t.d==null||t.p==null||t.q==null||t.dp==null||t.dq==null||t.qi==null)throw new ot("JWK was missing components");return St([He(Uint8Array.from([0])),He(we(t.n,"base64url")),He(we(t.e,"base64url")),He(we(t.d,"base64url")),He(we(t.p,"base64url")),He(we(t.q,"base64url")),He(we(t.dp,"base64url")),He(we(t.dq,"base64url")),He(we(t.qi,"base64url"))]).subarray()}function pb(t){const e=ln(t[1],{offset:0});return{kty:"RSA",n:Q(e[0],"base64url"),e:Q(e[1],"base64url")}}function qf(t){if(t.n==null||t.e==null)throw new ot("JWK was missing components");return St([ub,dc(St([He(we(t.n,"base64url")),He(we(t.e,"base64url"))]))]).subarray()}function gb(t){const e=ln(t);return mb(e)}function mb(t){const e=fb(t);return bb(e)}function wb(t,e){if(t.byteLength>=db)throw new $u("Key size is too large");const r=ln(t,{offset:0});return yb(r,t,e)}function yb(t,e,r){const n=pb(t);if(r==null){const o=Uf(ur.encode({Type:le.RSA,Data:e}));r=oo(Hf,o)}return new $f(n,r)}function bb(t){if(Eb(t)>lb)throw new ot("Key size is too large");const e=vb(t),r=Uf(ur.encode({Type:le.RSA,Data:qf(e.publicKey)})),n=oo(Hf,r);return new cb(e.privateKey,new $f(e.publicKey,n))}function vb(t){if(t==null)throw new ot("Missing key parameter");return{privateKey:t,publicKey:{kty:t.kty,n:t.n,e:t.e}}}async function xb(t,e,r){const n=await Ct.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);r?.signal?.throwIfAborted();const o=await Ct.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return r?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Sb(t,e,r,n){const o=await Ct.get().subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();const s=await Ct.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,r instanceof Uint8Array?r:r.subarray());return n?.signal?.throwIfAborted(),s}function Eb(t){if(t.kty!=="RSA")throw new ot("invalid key type");if(t.n==null)throw new ot("invalid key modulus");return we(t.n,"base64url").length*8}class Kf extends af{constructor(e,r){super(),this.finished=!1,this.destroyed=!1,of(e);const n=uc(r);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?e.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),Qr(s)}update(e){return ts(this),this.iHash.update(e),this}digestInto(e){ts(this),mr(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:r,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const zf=(t,e,r)=>new Kf(t,e).update(r).digest();zf.create=(t,e)=>new Kf(t,e);const Ul=(t,e)=>(t+(t>=0?e:-e)/Wf)/e;function Ab(t,e,r){const[[n,o],[s,i]]=e,a=Ul(i*t,r),c=Ul(-o*t,r);let l=t-a*n-c*s,d=-a*o-c*i;const u=l<bt,f=d<bt;u&&(l=-l),f&&(d=-d);const h=co(Math.ceil(pf(r)/2))+Kr;if(l<bt||l>=h||d<bt||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+t);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Sa(t){if(!["compact","recovered","der"].includes(t))throw new Error('Signature format must be "compact", "recovered", or "der"');return t}function pi(t,e){const r={};for(let n of Object.keys(e))r[n]=t[n]===void 0?e[n]:t[n];return dr(r.lowS,"lowS"),dr(r.prehash,"prehash"),r.format!==void 0&&Sa(r.format),r}class kb extends Error{constructor(e=""){super(e)}}const wt={Err:kb,_tlv:{encode:(t,e)=>{const{Err:r}=wt;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length&1)throw new r("tlv.encode: unpadded data");const n=e.length/2,o=xo(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");const s=n>127?xo(o.length/2|128):"";return xo(t)+s+o+e},decode(t,e){const{Err:r}=wt;let n=0;if(t<0||t>256)throw new r("tlv.encode: wrong tag");if(e.length<2||e[n++]!==t)throw new r("tlv.decode: wrong tlv");const o=e[n++],s=!!(o&128);let i=0;if(!s)i=o;else{const c=o&127;if(!c)throw new r("tlv.decode(long): indefinite length not supported");if(c>4)throw new r("tlv.decode(long): byte length is too big");const l=e.subarray(n,n+c);if(l.length!==c)throw new r("tlv.decode: length bytes not complete");if(l[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(const d of l)i=i<<8|d;if(n+=c,i<128)throw new r("tlv.decode(long): not minimal encoding")}const a=e.subarray(n,n+i);if(a.length!==i)throw new r("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(t){const{Err:e}=wt;if(t<bt)throw new e("integer: negative integers are not allowed");let r=xo(t);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return r},decode(t){const{Err:e}=wt;if(t[0]&128)throw new e("invalid signature integer: negative");if(t[0]===0&&!(t[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Os(t)}},toSig(t){const{Err:e,_int:r,_tlv:n}=wt,o=fe("signature",t),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");const{v:a,l:c}=n.decode(2,s),{v:l,l:d}=n.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:r.decode(a),s:r.decode(l)}},hexFromSig(t){const{_tlv:e,_int:r}=wt,n=e.encode(2,r.encode(t.r)),o=e.encode(2,r.encode(t.s)),s=n+o;return e.encode(48,s)}},bt=BigInt(0),Kr=BigInt(1),Wf=BigInt(2),Ao=BigInt(3),Cb=BigInt(4);function Dr(t,e){const{BYTES:r}=t;let n;if(typeof e=="bigint")n=e;else{let o=fe("private key",e);try{n=t.fromBytes(o)}catch{throw new Error(`invalid private key: expected ui8a of size ${r}, got ${typeof e}`)}}if(!t.isValidNot0(n))throw new Error("invalid private key: out of range [1..N-1]");return n}function Ib(t,e={}){const r=Pf("weierstrass",t,e),{Fp:n,Fn:o}=r;let s=r.CURVE;const{h:i,n:a}=s;lo(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');const l=Gf(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(B,v,k){const{x:P,y:N}=v.toAffine(),j=n.toBytes(P);if(dr(k,"isCompressed"),k){d();const U=!n.isOdd(N);return lt(Vf(U),j)}else return lt(Uint8Array.of(4),j,n.toBytes(N))}function f(B){rt(B,void 0,"Point");const{publicKey:v,publicKeyUncompressed:k}=l,P=B.length,N=B[0],j=B.subarray(1);if(P===v&&(N===2||N===3)){const U=n.fromBytes(j);if(!n.isValid(U))throw new Error("bad point: is not on curve, wrong x");const O=m(U);let _;try{_=n.sqrt(O)}catch(H){const q=H instanceof Error?": "+H.message:"";throw new Error("bad point: is not on curve, sqrt error"+q)}d();const D=n.isOdd(_);return(N&1)===1!==D&&(_=n.neg(_)),{x:U,y:_}}else if(P===k&&N===4){const U=n.BYTES,O=n.fromBytes(j.subarray(0,U)),_=n.fromBytes(j.subarray(U,U*2));if(!y(O,_))throw new Error("bad point: is not on curve");return{x:O,y:_}}else throw new Error(`bad point: got length ${P}, expected compressed=${v} or uncompressed=${k}`)}const h=e.toBytes||u,g=e.fromBytes||f;function m(B){const v=n.sqr(B),k=n.mul(v,B);return n.add(n.add(k,n.mul(B,s.a)),s.b)}function y(B,v){const k=n.sqr(v),P=m(B);return n.eql(k,P)}if(!y(s.Gx,s.Gy))throw new Error("bad curve params: generator point");const w=n.mul(n.pow(s.a,Ao),Cb),C=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(w,C)))throw new Error("bad curve params: a or b");function b(B,v,k=!1){if(!n.isValid(v)||k&&n.is0(v))throw new Error(`bad point coordinate ${B}`);return v}function A(B){if(!(B instanceof x))throw new Error("ProjectivePoint expected")}function L(B){if(!c||!c.basises)throw new Error("no endo");return Ab(B,c.basises,o.ORDER)}const I=ns((B,v)=>{const{X:k,Y:P,Z:N}=B;if(n.eql(N,n.ONE))return{x:k,y:P};const j=B.is0();v==null&&(v=j?n.ONE:n.inv(N));const U=n.mul(k,v),O=n.mul(P,v),_=n.mul(N,v);if(j)return{x:n.ZERO,y:n.ZERO};if(!n.eql(_,n.ONE))throw new Error("invZ was invalid");return{x:U,y:O}}),R=ns(B=>{if(B.is0()){if(e.allowInfinityPoint&&!n.is0(B.Y))return;throw new Error("bad point: ZERO")}const{x:v,y:k}=B.toAffine();if(!n.isValid(v)||!n.isValid(k))throw new Error("bad point: x or y not field elements");if(!y(v,k))throw new Error("bad point: equation left != right");if(!B.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function E(B,v,k,P,N){return k=new x(n.mul(k.X,B),k.Y,k.Z),v=os(P,v),k=os(N,k),v.add(k)}class x{constructor(v,k,P){this.X=b("x",v),this.Y=b("y",k,!0),this.Z=b("z",P),Object.freeze(this)}static CURVE(){return s}static fromAffine(v){const{x:k,y:P}=v||{};if(!v||!n.isValid(k)||!n.isValid(P))throw new Error("invalid affine point");if(v instanceof x)throw new Error("projective point not allowed");return n.is0(k)&&n.is0(P)?x.ZERO:new x(k,P,n.ONE)}static fromBytes(v){const k=x.fromAffine(g(rt(v,void 0,"point")));return k.assertValidity(),k}static fromHex(v){return x.fromBytes(fe("pointHex",v))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=8,k=!0){return T.createCache(this,v),k||this.multiply(Ao),this}assertValidity(){R(this)}hasEvenY(){const{y:v}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(v)}equals(v){A(v);const{X:k,Y:P,Z:N}=this,{X:j,Y:U,Z:O}=v,_=n.eql(n.mul(k,O),n.mul(j,N)),D=n.eql(n.mul(P,O),n.mul(U,N));return _&&D}negate(){return new x(this.X,n.neg(this.Y),this.Z)}double(){const{a:v,b:k}=s,P=n.mul(k,Ao),{X:N,Y:j,Z:U}=this;let O=n.ZERO,_=n.ZERO,D=n.ZERO,F=n.mul(N,N),H=n.mul(j,j),q=n.mul(U,U),K=n.mul(N,j);return K=n.add(K,K),D=n.mul(N,U),D=n.add(D,D),O=n.mul(v,D),_=n.mul(P,q),_=n.add(O,_),O=n.sub(H,_),_=n.add(H,_),_=n.mul(O,_),O=n.mul(K,O),D=n.mul(P,D),q=n.mul(v,q),K=n.sub(F,q),K=n.mul(v,K),K=n.add(K,D),D=n.add(F,F),F=n.add(D,F),F=n.add(F,q),F=n.mul(F,K),_=n.add(_,F),q=n.mul(j,U),q=n.add(q,q),F=n.mul(q,K),O=n.sub(O,F),D=n.mul(q,H),D=n.add(D,D),D=n.add(D,D),new x(O,_,D)}add(v){A(v);const{X:k,Y:P,Z:N}=this,{X:j,Y:U,Z:O}=v;let _=n.ZERO,D=n.ZERO,F=n.ZERO;const H=s.a,q=n.mul(s.b,Ao);let K=n.mul(k,j),W=n.mul(P,U),V=n.mul(N,O),G=n.add(k,P),X=n.add(j,U);G=n.mul(G,X),X=n.add(K,W),G=n.sub(G,X),X=n.add(k,N);let Z=n.add(j,O);return X=n.mul(X,Z),Z=n.add(K,V),X=n.sub(X,Z),Z=n.add(P,N),_=n.add(U,O),Z=n.mul(Z,_),_=n.add(W,V),Z=n.sub(Z,_),F=n.mul(H,X),_=n.mul(q,V),F=n.add(_,F),_=n.sub(W,F),F=n.add(W,F),D=n.mul(_,F),W=n.add(K,K),W=n.add(W,K),V=n.mul(H,V),X=n.mul(q,X),W=n.add(W,V),V=n.sub(K,V),V=n.mul(H,V),X=n.add(X,V),K=n.mul(W,X),D=n.add(D,K),K=n.mul(Z,X),_=n.mul(G,_),_=n.sub(_,K),K=n.mul(G,W),F=n.mul(Z,F),F=n.add(F,K),new x(_,D,F)}subtract(v){return this.add(v.negate())}is0(){return this.equals(x.ZERO)}multiply(v){const{endo:k}=e;if(!o.isValidNot0(v))throw new Error("invalid scalar: out of range");let P,N;const j=U=>T.cached(this,U,O=>rr(x,O));if(k){const{k1neg:U,k1:O,k2neg:_,k2:D}=L(v),{p:F,f:H}=j(O),{p:q,f:K}=j(D);N=H.add(K),P=E(k.beta,F,q,U,_)}else{const{p:U,f:O}=j(v);P=U,N=O}return rr(x,[P,N])[0]}multiplyUnsafe(v){const{endo:k}=e,P=this;if(!o.isValid(v))throw new Error("invalid scalar: out of range");if(v===bt||P.is0())return x.ZERO;if(v===Kr)return P;if(T.hasCache(this))return this.multiply(v);if(k){const{k1neg:N,k1:j,k2neg:U,k2:O}=L(v),{p1:_,p2:D}=cy(x,P,j,O);return E(k.beta,_,D,N,U)}else return T.unsafe(P,v)}multiplyAndAddUnsafe(v,k,P){const N=this.multiplyUnsafe(k).add(v.multiplyUnsafe(P));return N.is0()?void 0:N}toAffine(v){return I(this,v)}isTorsionFree(){const{isTorsionFree:v}=e;return i===Kr?!0:v?v(x,this):T.unsafe(this,a).is0()}clearCofactor(){const{clearCofactor:v}=e;return i===Kr?this:v?v(x,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(v=!0){return dr(v,"isCompressed"),this.assertValidity(),h(x,this,v)}toHex(v=!0){return sr(this.toBytes(v))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(v=!0){return this.toBytes(v)}_setWindowSize(v){this.precompute(v)}static normalizeZ(v){return rr(x,v)}static msm(v,k){return Tf(x,o,v,k)}static fromPrivateKey(v){return x.BASE.multiply(Dr(o,v))}}x.BASE=new x(s.Gx,s.Gy,n.ONE),x.ZERO=new x(n.ZERO,n.ONE,n.ZERO),x.Fp=n,x.Fn=o;const S=o.BITS,T=new Rf(x,e.endo?Math.ceil(S/2):S);return x.BASE.precompute(8),x}function Vf(t){return Uint8Array.of(t?2:3)}function Gf(t,e){return{secretKey:e.BYTES,publicKey:1+t.BYTES,publicKeyUncompressed:1+2*t.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function Rb(t,e={}){const{Fn:r}=t,n=e.randomBytes||fc,o=Object.assign(Gf(t.Fp,r),{seed:kf(r.ORDER)});function s(h){try{return!!Dr(r,h)}catch{return!1}}function i(h,g){const{publicKey:m,publicKeyUncompressed:y}=o;try{const w=h.length;return g===!0&&w!==m||g===!1&&w!==y?!1:!!t.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return sy(rt(h,o.seed,"seed"),r.ORDER)}function c(h,g=!0){return t.BASE.multiply(Dr(r,h)).toBytes(g)}function l(h){const g=a(h);return{secretKey:g,publicKey:c(g)}}function d(h){if(typeof h=="bigint")return!1;if(h instanceof t)return!0;const{secretKey:g,publicKey:m,publicKeyUncompressed:y}=o;if(r.allowedLengths||g===m)return;const w=fe("key",h).length;return w===m||w===y}function u(h,g,m=!0){if(d(h)===!0)throw new Error("first arg must be private key");if(d(g)===!1)throw new Error("second arg must be public key");const y=Dr(r,h);return t.fromHex(g).multiply(y).toBytes(m)}return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:l,Point:t,utils:{isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a,isValidPrivateKey:s,randomPrivateKey:a,normPrivateKeyToScalar:h=>Dr(r,h),precompute(h=8,g=t.BASE){return g.precompute(h,!1)}},lengths:o})}function Tb(t,e,r={}){of(e),lo(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const n=r.randomBytes||fc,o=r.hmac||((k,...P)=>zf(e,k,lt(...P))),{Fp:s,Fn:i}=t,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=Rb(t,r),g={prehash:!1,lowS:typeof r.lowS=="boolean"?r.lowS:!1,format:void 0,extraEntropy:!1},m="compact";function y(k){const P=a>>Kr;return k>P}function w(k,P){if(!i.isValidNot0(P))throw new Error(`invalid signature ${k}: out of range 1..Point.Fn.ORDER`);return P}function C(k,P){Sa(P);const N=h.signature,j=P==="compact"?N:P==="recovered"?N+1:void 0;return rt(k,j,`${P} signature`)}class b{constructor(P,N,j){this.r=w("r",P),this.s=w("s",N),j!=null&&(this.recovery=j),Object.freeze(this)}static fromBytes(P,N=m){C(P,N);let j;if(N==="der"){const{r:D,s:F}=wt.toSig(rt(P));return new b(D,F)}N==="recovered"&&(j=P[0],N="compact",P=P.subarray(1));const U=i.BYTES,O=P.subarray(0,U),_=P.subarray(U,U*2);return new b(i.fromBytes(O),i.fromBytes(_),j)}static fromHex(P,N){return this.fromBytes(rs(P),N)}addRecoveryBit(P){return new b(this.r,this.s,P)}recoverPublicKey(P){const N=s.ORDER,{r:j,s:U,recovery:O}=this;if(O==null||![0,1,2,3].includes(O))throw new Error("recovery id invalid");if(a*Wf<N&&O>1)throw new Error("recovery id is ambiguous for h>1 curve");const D=O===2||O===3?j+a:j;if(!s.isValid(D))throw new Error("recovery id 2 or 3 invalid");const F=s.toBytes(D),H=t.fromBytes(lt(Vf((O&1)===0),F)),q=i.inv(D),K=L(fe("msgHash",P)),W=i.create(-K*q),V=i.create(U*q),G=t.BASE.multiplyUnsafe(W).add(H.multiplyUnsafe(V));if(G.is0())throw new Error("point at infinify");return G.assertValidity(),G}hasHighS(){return y(this.s)}toBytes(P=m){if(Sa(P),P==="der")return rs(wt.hexFromSig(this));const N=i.toBytes(this.r),j=i.toBytes(this.s);if(P==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return lt(Uint8Array.of(this.recovery),N,j)}return lt(N,j)}toHex(P){return sr(this.toBytes(P))}assertValidity(){}static fromCompact(P){return b.fromBytes(fe("sig",P),"compact")}static fromDER(P){return b.fromBytes(fe("sig",P),"der")}normalizeS(){return this.hasHighS()?new b(this.r,i.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return sr(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return sr(this.toBytes("compact"))}}const A=r.bits2int||function(P){if(P.length>8192)throw new Error("input is too large");const N=Os(P),j=P.length*8-c;return j>0?N>>BigInt(j):N},L=r.bits2int_modN||function(P){return i.create(A(P))},I=co(c);function R(k){return wa("num < 2^"+c,k,bt,I),i.toBytes(k)}function E(k,P){return rt(k,void 0,"message"),P?rt(e(k),void 0,"prehashed message"):k}function x(k,P,N){if(["recovered","canonical"].some(W=>W in N))throw new Error("sign() legacy options not supported");const{lowS:j,prehash:U,extraEntropy:O}=pi(N,g);k=E(k,U);const _=L(k),D=Dr(i,P),F=[R(D),R(_)];if(O!=null&&O!==!1){const W=O===!0?n(h.secretKey):O;F.push(fe("extraEntropy",W))}const H=lt(...F),q=_;function K(W){const V=A(W);if(!i.isValidNot0(V))return;const G=i.inv(V),X=t.BASE.multiply(V).toAffine(),Z=i.create(X.x);if(Z===bt)return;const ae=i.create(G*i.create(q+Z*D));if(ae===bt)return;let ke=(X.x===Z?0:2)|Number(X.y&Kr),Oe=ae;return j&&y(ae)&&(Oe=i.neg(ae),ke^=1),new b(Z,Oe,ke)}return{seed:H,k2sig:K}}function S(k,P,N={}){k=fe("message",k);const{seed:j,k2sig:U}=x(k,P,N);return Xw(e.outputLen,i.BYTES,o)(j,U)}function T(k){let P;const N=typeof k=="string"||ao(k),j=!N&&k!==null&&typeof k=="object"&&typeof k.r=="bigint"&&typeof k.s=="bigint";if(!N&&!j)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(j)P=new b(k.r,k.s);else if(N){try{P=b.fromBytes(fe("sig",k),"der")}catch(U){if(!(U instanceof wt.Err))throw U}if(!P)try{P=b.fromBytes(fe("sig",k),"compact")}catch{return!1}}return P||!1}function B(k,P,N,j={}){const{lowS:U,prehash:O,format:_}=pi(j,g);if(N=fe("publicKey",N),P=E(fe("message",P),O),"strict"in j)throw new Error("options.strict was renamed to lowS");const D=_===void 0?T(k):b.fromBytes(fe("sig",k),_);if(D===!1)return!1;try{const F=t.fromBytes(N);if(U&&D.hasHighS())return!1;const{r:H,s:q}=D,K=L(P),W=i.inv(q),V=i.create(K*W),G=i.create(H*W),X=t.BASE.multiplyUnsafe(V).add(F.multiplyUnsafe(G));return X.is0()?!1:i.create(X.x)===H}catch{return!1}}function v(k,P,N={}){const{prehash:j}=pi(N,g);return P=E(P,j),b.fromBytes(k,"recovered").recoverPublicKey(P).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:t,sign:S,verify:B,recoverPublicKey:v,Signature:b,hash:e})}function Pb(t){const e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},r=t.Fp;let n=t.allowedPrivateKeyLengths?Array.from(new Set(t.allowedPrivateKeyLengths.map(i=>Math.ceil(i/2)))):void 0;const o=wr(e.n,{BITS:t.nBitLength,allowedLengths:n,modFromBytes:t.wrapPrivateKey}),s={Fp:r,Fn:o,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:s}}function Nb(t){const{CURVE:e,curveOpts:r}=Pb(t),n={hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:r,hash:t.hash,ecdsaOpts:n}}function Lb(t,e){const r=e.Point;return Object.assign({},e,{ProjectivePoint:r,CURVE:Object.assign({},t,Ef(r.Fn.ORDER,r.Fn.BITS))})}function Bb(t){const{CURVE:e,curveOpts:r,hash:n,ecdsaOpts:o}=Nb(t),s=Ib(e,r),i=Tb(s,n,o);return Lb(t,i)}function _b(t,e){const r=n=>Bb({...t,hash:n});return{...r(e),create:r}}const Ec={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Db={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},$l=BigInt(2);function Ob(t){const e=Ec.p,r=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=t*t*t%e,d=l*l*t%e,u=ue(d,r,e)*d%e,f=ue(u,r,e)*d%e,h=ue(f,$l,e)*l%e,g=ue(h,o,e)*h%e,m=ue(g,s,e)*g%e,y=ue(m,a,e)*m%e,w=ue(y,c,e)*y%e,C=ue(w,a,e)*m%e,b=ue(C,r,e)*d%e,A=ue(b,i,e)*g%e,L=ue(A,n,e)*l%e,I=ue(L,$l,e);if(!Ea.eql(Ea.sqr(I),t))throw new Error("Cannot find square root");return I}const Ea=wr(Ec.p,{sqrt:Ob}),Kt=_b({...Ec,Fp:Ea,lowS:!0,endo:Db},uf);function Fb(t,e,r){const n=lc.digest(e instanceof Uint8Array?e:e.subarray());if(Fs(n))return n.then(({digest:o})=>(r?.signal?.throwIfAborted(),Kt.sign(o,t).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new Ol(String(o))});try{return Kt.sign(n.digest,t).toDERRawBytes()}catch(o){throw new Ol(String(o))}}function Mb(t,e,r,n){const o=lc.digest(r instanceof Uint8Array?r:r.subarray());if(Fs(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),Kt.verify(e,s,t))).catch(s=>{throw s.name==="AbortError"?s:new Fl(String(s))});try{return n?.signal?.throwIfAborted(),Kt.verify(e,o.digest,t)}catch(s){throw new Fl(String(s))}}class Xf{type="secp256k1";raw;_key;constructor(e){this._key=qb(e),this.raw=$b(this._key)}toMultihash(){return so.digest($s(this))}toCID(){return ce.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}verify(e,r,n){return Mb(this._key,r,e,n)}}class jb{type="secp256k1";raw;publicKey;constructor(e,r){this.raw=Hb(e),this.publicKey=new Xf(r??Kb(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:st(this.raw,e.raw)}sign(e,r){return Fb(this.raw,e,r)}}function Ub(t){return new jb(t)}function Yf(t){return new Xf(t)}function $b(t){return Kt.ProjectivePoint.fromHex(t).toRawBytes(!0)}function Hb(t){try{return Kt.getPublicKey(t,!0),t}catch(e){throw new Hu(String(e))}}function qb(t){try{return Kt.ProjectivePoint.fromHex(t),t}catch(e){throw new $u(String(e))}}function Kb(t){try{return Kt.getPublicKey(t,!0)}catch(e){throw new Hu(String(e))}}async function zb(t,e){return _y()}function Aa(t,e){const{Type:r,Data:n}=ur.decode(t),o=n??new Uint8Array;switch(r){case le.RSA:return wb(o,e);case le.Ed25519:return _f(o);case le.secp256k1:return Yf(o);case le.ECDSA:return rf(o);default:throw new Ls}}function Wb(t){const{Type:e,Data:r}=ur.decode(t.digest),n=r??new Uint8Array;switch(e){case le.Ed25519:return _f(n);case le.secp256k1:return Yf(n);case le.ECDSA:return rf(n);default:throw new Ls}}function $s(t){return ur.encode({Type:le[t.type],Data:t.raw})}function Vb(t){const e=cs.decode(t),r=e.Data??new Uint8Array;switch(e.Type){case le.RSA:return gb(r);case le.Ed25519:return By(r);case le.secp256k1:return Ub(r);case le.ECDSA:return Ew(r);default:throw new Ls}}function Gb(t){return cs.encode({Type:le[t.type],Data:t.raw})}const Zf=Symbol.for("nodejs.util.inspect.custom"),Xb=114;class Ac{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[qu]=!0;toString(){return this.string==null&&(this.string=Le.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ce.createV1(Xb,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return st(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return st(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[Zf](){return`PeerId(${this.toString()})`}}class Jf extends Ac{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}}class Qf extends Ac{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}}class eh extends Ac{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}}const Yb=2336;class th{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=so.digest(we(this.url))}[Zf](){return`PeerId(${this.url})`}[qu]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ce.createV1(Yb,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=Q(e)),e.toString()===this.toString())}}const Zb=114,Hl=2336;function Jb(t,e){let r;if(t.charAt(0)==="1"||t.charAt(0)==="Q")r=Wu(Le.decode(`z${t}`));else{if(t.startsWith("k51qzi5uqu5")||t.startsWith("kzwfwjn5ji4")||t.startsWith("k2k4r8")||t.startsWith("bafz"))return Qb(ce.parse(t));throw new ot('Please pass a multibase decoder for strings that do not start with "1" or "Q"')}return rh(r)}function tn(t){if(t.type==="Ed25519")return new Qf({multihash:t.toCID().multihash,publicKey:t});if(t.type==="secp256k1")return new eh({multihash:t.toCID().multihash,publicKey:t});if(t.type==="RSA")return new Jf({multihash:t.toCID().multihash,publicKey:t});throw new Ls}function rh(t){if(t0(t))return new Jf({multihash:t});if(e0(t))try{const e=Wb(t);if(e.type==="Ed25519")return new Qf({multihash:t,publicKey:e});if(e.type==="secp256k1")return new eh({multihash:t,publicKey:e})}catch{const r=Q(t.digest);return new th(new URL(r))}throw new Dg("Supplied PeerID Multihash is invalid")}function Qb(t){if(t?.multihash==null||t.version==null||t.version===1&&t.code!==Zb&&t.code!==Hl)throw new _g("Supplied PeerID CID is invalid");if(t.code===Hl){const e=Q(t.multihash.digest);return new th(new URL(e))}return rh(t.multihash)}function e0(t){return t.code===so.code}function t0(t){return t.code===lc.code}class nh extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}}class r0 extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}}class vn extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}}class ql extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}}class n0 extends Event{data;constructor(e,r){super("message",r),this.data=e}}class kc extends Event{error;local;constructor(e,r,n){super("close",n),this.error=r,this.local=e}}class o0 extends kc{constructor(e,r){super(!0,e,r)}}class s0 extends kc{constructor(e,r){super(!1,e,r)}}const i0=t=>t/2**32|0,a0=t=>t>>>0;function c0(t,e,r,n){const o=i0(r),s=a0(r);t.setUint32(e,n?s:o,n),t.setUint32(e+4,n?o:s,n)}function ka(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const Ca=t=>t?`"${t}" `:"";function It(t,e=""){if(typeof t!="number")throw new TypeError(Ca(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(Ca(e)+"expected integer >= 0, got "+t);return t}function Rt(t,e,r=""){if(ka(t)&&(e===void 0||t.length===e))return t;e!==void 0&&It(e,"length");const n=ka(t),o=e!==void 0?` of length ${e}`:"",s=n?`length=${t.length}`:`type=${typeof t}`,i=Ca(r)+"expected Uint8Array"+o+", got "+s;throw n?new RangeError(i):new TypeError(i)}function Cc(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("expected hash wrapped by utils.createHasher");if(It(t.outputLen),It(t.blockLen),t.outputLen<1||t.blockLen<1)throw new Error("hash blockLen / outputLen must be >= 1")}const l0=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Kl=(t,e)=>{l0(t,e);const r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function ls(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function oh(t,e){Rt(t,void 0,"output");const r=e.outputLen;if(!(t.length>=r))throw new RangeError('"output" expected length >= '+r)}function aC(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function ar(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function gi(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function at(t,e){return t<<32-e|t>>>e}function cC(t,e){return t<<e|t>>>32-e>>>0}const d0=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function u0(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function f0(t){for(let e=0;e<t.length;e++)t[e]=u0(t[e]);return t}const lC=d0?t=>t:f0,sh=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",h0=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Ic(t){if(Rt(t),sh)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=h0[t[r]];return e}function zl(t){return t>=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:void 0}function ih(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(sh)try{return Uint8Array.fromHex(t)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}const e=t.length,r=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);const n=new Uint8Array(r);for(let o=0,s=0;o<r;o++,s+=2){const i=zl(t.charCodeAt(s)),a=zl(t.charCodeAt(s+1));if(i===void 0||a===void 0){const c=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function p0(t){const e=globalThis;if(typeof e.scheduler?.yield=="function"){const r=e.scheduler.yield();return t&&r.catch(t),r}return new Promise(r=>e.setTimeout(r,0))}async function dC(t,e,r,n){if(It(t,"iters"),It(e,"tick"),typeof r!="function")throw new TypeError("callback must be a function");let o=Date.now();for(let s=0;s<t;s++){r(s);const i=Date.now()-o;i>=0&&i<e||(await p0(n),o=Date.now())}}function g0(t){if(typeof t!="string")throw new TypeError("string expected");const e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{ar(e)}}function uC(t,e=""){return typeof t=="string"?g0(t):Rt(t,void 0,e)}function m0(t,e,r="opts"){return Kl(t,"defaults"),e!==void 0&&Kl(e,r),Object.assign(Object.create(null),t,e)}function w0(t,e={}){if(typeof t!="function")throw new TypeError('"hashCons" expected function, got type='+typeof t);e=m0({},e,"info");const r=(o,s)=>t(s).update(o).digest(),n=t(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.canXOF=n.canXOF,r.create=o=>t(o),Object.assign(r,e),Object.freeze(r)}function y0(t=32){It(t,"bytesLength");const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}const b0=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});function v0(t,e,r){return t&e^~t&r}function x0(t,e,r){return t&e^t&r^e&r}class S0{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,r,n,o){this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=gi(this.buffer)}update(e){ls(this),Rt(e);const{view:r,buffer:n,blockLen:o}=this,s=e.length;let i=!1;for(let a=0;a<s;){const c=Math.min(o-this.pos,s-a);if(c===o){const l=gi(e);for(;o<=s-a;a+=o)this.process(l,a);i=!0;continue}n.set(a===0&&c===s?e:e.subarray(a,a+c),this.pos),this.pos+=c,a+=c,this.pos===o&&(this.process(r,0),this.pos=0,i=!0)}return this.length+=e.length,i&&this.roundClean(),this}digestInto(e){ls(this),oh(e,this),this.finished=!0;const{buffer:r,view:n,blockLen:o,isLE:s}=this;let{pos:i}=this;r[i++]=128,r.fill(0,i),this.padOffset>o-i&&(this.process(n,0),r.fill(0)),c0(n,o-8,this.length*8,s),this.process(n,0),this.roundClean();const a=e===r?n:gi(e),c=this.outputLen,l=c/4,d=this.get();if(c%4||l>d.length)throw new Error("invalid outputLen");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}_cloneIntoMeta(e){const{buffer:r,length:n,finished:o,destroyed:s,pos:i}=this;return e.destroyed=s,e.finished=o,e.length=n,e.pos=i,i&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const E0=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),A0=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),_t=new Uint32Array(64);class k0 extends S0{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,r){super(64,e,8,!1),this.A=r[0]|0,this.B=r[1]|0,this.C=r[2]|0,this.D=r[3]|0,this.E=r[4]|0,this.F=r[5]|0,this.G=r[6]|0,this.H=r[7]|0}get(){const{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,r){for(let u=0;u<16;u++,r+=4)_t[u]=e.getUint32(r,!1);for(let u=16;u<64;u++){const f=_t[u-15],h=_t[u-2],g=at(f,7)^at(f,18)^f>>>3,m=at(h,17)^at(h,19)^h>>>10;_t[u]=m+_t[u-7]+g+_t[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){const f=at(a,6)^at(a,11)^at(a,25),h=d+f+v0(a,c,l)+A0[u]+_t[u]|0,m=(at(n,2)^at(n,13)^at(n,22))+x0(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+m|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,o,s,i,a,c,l,d)}roundClean(){ar(_t)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),ar(this.buffer)}}class C0 extends k0{constructor(){super(32,E0)}}const mi=w0(()=>new C0,b0(1));function ah(t,e,r=()=>{}){if(!Array.isArray(t))throw new TypeError(`"${e}" expected array, got type=${typeof t}`);for(let n=0;n<t.length;n++)r(t[n],`${e}[${n}]`);return t}const zr=(t,e,r)=>Rt(t,e,r),ch=It;function Wr(t,e="object"){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`);return t}function $n(t,e){if(typeof t!="function")throw new TypeError(`"${e}" is invalid: expected function, got ${typeof t}`);return t}const I0=Ic,R0=t=>ih(t),lh=ka,dh=t=>y0(t),ds=BigInt(0),Wl=BigInt(1),T0=t=>t?`"${t}" `:"";function Hs(t,e=""){if(typeof t!="boolean")throw new TypeError(T0(e)+"expected boolean, got type="+typeof t);return t}function P0(t){if(typeof t=="bigint"){if(!cr(t))throw new RangeError("positive bigint expected, got "+t)}else ch(t);return t}function Ia(t,e=""){if(typeof t!="number"){const r=e&&`"${e}" `;throw new TypeError(r+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){const r=e&&`"${e}" `;throw new RangeError(r+"expected safe integer, got "+t)}}function uh(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?ds:BigInt("0x"+t)}function fh(t){return uh(Ic(t))}function us(t){return uh(Ic(Yn(Rt(t)).reverse()))}function hh(t,e){if(It(e),e===0)throw new Error("zero output length is invalid");t=P0(t);const r=e*2,n=t.toString(16);if(n.length>r)throw new RangeError("number is too large");return ih(n.padStart(r,"0"))}function ph(t,e){return hh(t,e).reverse()}function Yn(t){return Uint8Array.from(zr(t))}function cr(t){return typeof t=="bigint"&&ds<=t}function gh(t,e,r){return cr(t)&&cr(e)&&cr(r)&&e<=t&&t<r}function Hn(t,e,r,n){if(!gh(e,r,n))throw new RangeError("expected valid "+t+": "+r+" <= n < "+n+", got "+e)}function N0(t){if(t<ds)throw new Error("expected non-negative bigint, got "+t);return t===ds?0:t.toString(2).length}const L0=t=>(Ia(t,"n"),(Wl<<BigInt(t))-Wl);function fs(t,e={},r={},n="object"){Wr(t,n),Wr(e,"fields"),Wr(r,"optFields");function o(i,a,c){const l=n==="object"?`param "${String(i)}"`:`"${n}.${String(i)}"`,d=t[i];if(!Object.hasOwn(t,i)&&(c?d!==void 0:a!=="function"))throw new TypeError(`${l} is invalid: expected own property`);if(c&&d===void 0)return;const u=typeof d;if(u!==a||d===null)throw new TypeError(`${l} is invalid: expected ${a}, got ${u}`)}const s=(i,a)=>Object.entries(i).forEach(([c,l])=>o(c,l,a));s(e,!1),s(r,!0)}const xe=BigInt(0),ie=BigInt(1),nr=BigInt(2),mh=BigInt(3),Rc=BigInt(4),wh=BigInt(5),B0=BigInt(7),yh=BigInt(8),_0=BigInt(9),D0=BigInt(15),bh=BigInt(16),O0=BigInt("0x10000000000000000");function se(t,e){if(e<=xe)throw new Error("mod: expected positive modulus, got "+e);const r=t%e;return r>=xe?r:e+r}function F0(t,e,r){if(r<=ie)throw new Error("pow: expected modulus > 1, got "+r);if(typeof e!="bigint")throw new TypeError("invalid exponent: expected bigint, got "+typeof e);if(e<xe)throw new Error("invalid exponent, negatives unsupported");if(e===xe)return ie;if(e===ie)return t;let n=t%r;if(n<xe&&(n+=r),e<O0){let a=ie;for(;e>xe;)e&ie&&(a=a*n%r),n=n*n%r,e>>=ie;return a}const o=[];for(;e>xe;)o.push(Number(e&D0)),e>>=Rc;const s=new Array(16);s[0]=ie,s[1]=n;for(let a=2;a<16;a++)s[a]=s[a-1]*n%r;let i=s[o[o.length-1]];for(let a=o.length-2;a>=0;a--){i=i*i%r,i=i*i%r,i=i*i%r,i=i*i%r;const c=o[a];c!==0&&(i=i*s[c]%r)}return i}function tt(t,e,r){if(r<=ie)throw new Error("pow2: expected modulus > 1, got "+r);if(e<xe)throw new Error("pow2: expected non-negative exponent, got "+e);let n=t;for(;e-- >xe;)n*=n,n%=r;return n}function Vl(t,e){if(t===xe)throw new Error("invert: expected non-zero number");if(e<=ie)throw new Error("invert: expected modulus > 1, got "+e);let r=se(t,e),n=e,o=xe,s=ie;for(;r!==xe;){const a=n/r,c=n-r*a,l=o-s*a;n=r,r=c,o=s,s=l}if(n!==ie)throw new Error("invert: does not exist");return se(o,e)}function Tc(t,e,r){const n=t;if(!n.eql(n.sqr(e),r))throw new Error("Cannot find square root")}function Pc(t,e){if((t&ie)===xe)throw new Error(e+": expected odd modulus, got "+t)}function vh(t,e){const r=t,n=(r.ORDER+ie)/Rc,o=r.pow(e,n);return Tc(r,o,e),o}function M0(t,e){const r=t,n=(r.ORDER-wh)/yh,o=r.mul(e,nr),s=r.pow(o,n),i=r.mul(e,s),a=r.mul(r.mul(i,nr),s),c=r.mul(i,r.sub(a,r.ONE));return Tc(r,c,e),c}function j0(t){const e=Nc(t),r=xh(t),n=r(e,e.neg(e.ONE)),o=r(e,n),s=r(e,e.neg(n)),i=(t+B0)/bh;return((a,c)=>{const l=a;let d=l.pow(c,i),u=l.mul(d,n);const f=l.mul(d,o),h=l.mul(d,s),g=l.eql(l.sqr(u),c),m=l.eql(l.sqr(f),c);d=l.cmov(d,u,g),u=l.cmov(h,f,m);const y=l.eql(l.sqr(u),c),w=l.cmov(d,u,y);return Tc(l,w,c),w})}function xh(t){if(t<mh)throw new Error("sqrt is not defined for small field");Pc(t,"tonelliShanks");let e=t-ie,r=0;for(;e%nr===xe;)e/=nr,r++;let n=nr;const o=Nc(t);for(;hs(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return vh;let s=o.pow(n,e);const i=(e+ie)/nr;return function(c,l){const d=c;if(d.is0(l))return l;if(hs(d,l)!==1)throw new Error("Cannot find square root");let u=r,f=d.mul(d.ONE,s),h=d.pow(l,e),g=d.pow(l,i);for(;!d.eql(h,d.ONE);){if(d.is0(h))throw new Error("Cannot find square root: probably non-prime P");let m=1,y=d.sqr(h);for(;!d.eql(y,d.ONE);)if(m++,y=d.sqr(y),m===u)throw new Error("Cannot find square root");const w=ie<<BigInt(u-m-1),C=d.pow(f,w);u=m,f=d.sqr(C),h=d.mul(h,f),g=d.mul(g,C)}return g}}function U0(t){return Pc(t,"Fp.sqrt"),t%Rc===mh?vh:t%yh===wh?M0:t%bh===_0?j0(t):xh(t)}const $0=(t,e)=>(se(t,e)&ie)===ie,H0=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Zn(t){if(Wr(t,"field"),typeof t.ORDER!="bigint")throw new TypeError('param "ORDER" is invalid: expected bigint, got '+typeof t.ORDER);Ia(t.BYTES,"BYTES"),Ia(t.BITS,"BITS");for(const e of H0)$n(t[e],"field."+e);if(t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=ie)throw new Error("invalid field: expected ORDER > 1, got "+t.ORDER);return t}function Sh(t,e,r=!1){Zn(t),ah(e,"nums"),Hs(r,"passZero");const n=t,o=new Array(e.length).fill(r?n.ZERO:void 0),s=e.reduce((a,c,l)=>n.is0(c)?a:(o[l]=a,n.mul(a,c)),n.ONE),i=n.inv(s);return e.reduceRight((a,c,l)=>n.is0(c)?a:(o[l]=n.mul(a,o[l]),n.mul(a,c)),i),o}function hs(t,e){Zn(t);const r=t;Pc(r.ORDER,"FpLegendre");const n=(r.ORDER-ie)/nr,o=r.pow(e,n),s=r.eql(o,r.ONE),i=r.eql(o,r.ZERO),a=r.eql(o,r.neg(r.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function q0(t,e){if(e!==void 0&&ch(e),t<=xe)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);const r=N0(t);if(e!==void 0&&e<r)throw new Error(`invalid n length: expected nBitLength (${e}) >= bitLen(n) (${r})`);const n=e!==void 0?e:r,o=Math.ceil(n/8);return{nBitLength:n,nByteLength:o}}const Gl=new WeakMap;class Xl{ORDER;BITS;BYTES;isLE;ZERO=xe;ONE=ie;_lengths;_mod;constructor(e,r={}){if(e<=ie)throw new Error("invalid field: expected ORDER > 1, got "+e);let n;this.isLE=!1,r!=null&&typeof r=="object"&&(typeof r.BITS=="number"&&(n=r.BITS),typeof r.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:r.sqrt,enumerable:!0}),typeof r.isLE=="boolean"&&(this.isLE=r.isLE),r.allowedLengths&&(this._lengths=Object.freeze(r.allowedLengths.slice())),typeof r.modFromBytes=="boolean"&&(this._mod=r.modFromBytes));const{nBitLength:o,nByteLength:s}=q0(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return se(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return xe<=e&&e<this.ORDER}is0(e){return e===xe}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ie)===ie}neg(e){return se(-e,this.ORDER)}eql(e,r){return e===r}sqr(e){return se(e*e,this.ORDER)}add(e,r){return se(e+r,this.ORDER)}sub(e,r){return se(e-r,this.ORDER)}mul(e,r){return se(e*r,this.ORDER)}pow(e,r){return F0(e,r,this.ORDER)}div(e,r){return se(e*Vl(r,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,r){return e+r}subN(e,r){return e-r}mulN(e,r){return e*r}inv(e){return Vl(e,this.ORDER)}sqrt(e){let r=Gl.get(this);return r||Gl.set(this,r=U0(this.ORDER)),r(this,e)}toBytes(e){return this.isLE?ph(e,this.BYTES):hh(e,this.BYTES)}fromBytes(e,r=!1){zr(e);const{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(e.length<1||!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);const l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?us(e):fh(e);if(a&&(c=se(c,i)),!r&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return Sh(this,e,!0)}cmov(e,r,n){return Hs(n,"condition"),n?r:e}}function Nc(t,e={}){return Object.freeze(Xl.prototype),new Xl(t,e)}const Lc=BigInt(0),Jn=BigInt(1),K0=BigInt(4),wi=16,Yl=128,z0=5,Zl=2**31;function Bc(t){const e=t;if(typeof e!="function")throw new TypeError('"Point" expected constructor, got type='+typeof t);$n(e.fromAffine,"Point.fromAffine"),$n(e.fromBytes,"Point.fromBytes"),$n(e.fromHex,"Point.fromHex"),Wr(e.BASE,"Point.BASE"),Wr(e.ZERO,"Point.ZERO"),Zn(e.Fp),Zn(e.Fn)}function W0(t,e){Bc(t),Eh(e,t);const r=Sh(t.Fp,e.map(n=>n.Z));return e.map((n,o)=>t.fromAffine(n.toAffine(r[o])))}function V0(t,e,r=1){if(!Number.isSafeInteger(t)||t<r||t>e)throw new Error("invalid window size, expected ["+r+".."+e+"], got W="+t)}function G0(t,e){const r=t*(4*e+128);if(r>Zl)throw new Error("invalid window size: table would need ~"+Math.ceil(r/2**20)+" MiB, max "+Zl/2**20+" MiB")}function X0(t,e){if(t!==void 0){$n(t,"randomBytes");try{const r=t(e);if(!lh(r)||r.length!==e)return}catch{return}return t}}function Eh(t,e){ah(t,"points"),t.forEach((r,n)=>{if(!(r instanceof e))throw new Error("invalid point at index "+n)})}function Y0(t,e,r){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,o)=>{if(!(r===void 0?e.isValid(n):cr(n)&&n<r))throw new Error("invalid scalar at index "+o)})}const Ah=new WeakMap;function yi(t){return Ah.get(t)||1}function Z0(t,e){const r=t.double(),n=[t];for(let o=1;o<e;o++)n.push(n[o-1].add(r));return n}function J0(t,e){const r=2**e,n=r/2,o=BigInt(r-1),s=[];for(;t>Lc;){let i=0;t&Jn&&(i=Number(t&o),i>=n&&(i-=r),t-=BigInt(i)),s.push(i),t>>=Jn}return s}function Q0(t,e,r){const n=2**e,o=n/2,s=BigInt(n-1),i=BigInt(e),a=[];for(let c=0;c<r;c++){let l=Number(t&s);t>>=i,l>o&&(l-=n,t+=Jn),a.push(l)}if(t!==Lc)throw new Error("invalid wnaf");return a}function ev(t,e,r){let n=0;for(const s of r)n=Math.max(n,s.length);let o=t;for(let s=n-1;s>=0;s--){s!==n-1&&(o=o.double());for(let i=0;i<r.length;i++){const a=r[i][s];if(a){const c=e[i][Math.abs(a)-1>>1];o=o.add(a<0?c.negate():c)}}}return o}class tv{Point;BASE;ZERO;randomBytes;wnafPrecomputes=new WeakMap;baseCanBeBlinded;bits;constructor(e,r){Bc(e),this.randomBytes=X0(r,wi),this.Point=e,this.BASE=e.BASE,this.ZERO=e.ZERO,this.bits=e.Fn.BITS}buildWnafTable(e,r,n){const o=Math.ceil(n/r)+1,s=2**(r-1),i=[];let a=e;for(let c=0;c<o;c++){let l=a;for(let d=0;d<s;d++)i.push(l),l=l.add(a);a=i[i.length-1].double()}return{W:r,bits:n,windows:o,comp:i}}wnafCachedCT(e,r){const{W:n,windows:o,comp:s}=e,i=2**(n-1),a=Q0(r,n,o);let c=this.ZERO,l=this.BASE;for(let d=0;d<o;d++){const u=a[d],f=d*i,h=Math.abs(u)-1;let g=s[f];for(let y=1;y<i;y++)g=y===h?s[f+y]:g;const m=g.negate();u===0?l=l.add(s[f]):c=c.add(u<0?m:g)}return{p:c,f:l}}getWnafPrecomputes(e,r,n,o){let s=this.wnafPrecomputes.get(r),i=s?.find(a=>a.W===e&&a.bits===n);return i||(i=this.buildWnafTable(r,e,n),typeof o=="function"&&(i={...i,comp:o(i.comp)}),s||(s=[],this.wnafPrecomputes.set(r,s)),s.push(i)),i}assertPoint(e){if(!(e instanceof this.Point))throw new TypeError('"point" expected Point instance, got type='+typeof e)}validateMulInput(e,r){if(this.assertPoint(e),!gh(r,Jn,this.Point.Fn.ORDER))throw new Error("invalid scalar")}runCT(e,r,n,o){const s=yi(e);return s===1?this.fixedWindowCT(e,r,n):this.wnafCachedCT(this.getWnafPrecomputes(s,e,n,o),r)}mulCT(e,r,n){return this.validateMulInput(e,r),this.runCT(e,r,this.bits,n)}mulCTBlinded(e,r,n){if(this.validateMulInput(e,r),this.randomBytes===void 0)throw new Error("randomBytes is required for scalar blinding");const o=this.Point.Fn.BITS+Yl,s=this.randomBytes(wi);if(!lh(s)||s.length!==wi)throw new Error("randomBytes returned invalid byte array");s[0]=s[0]&63|128;const i=r+fh(s)*this.Point.Fn.ORDER;return this.runCT(e,i,o,n)}fixedWindowCT(e,r,n){const o=z0,s=1<<o,i=L0(o),a=new Array(s);a[0]=this.ZERO;for(let d=1;d<s;d++)a[d]=a[d-1].add(e);const c=Math.ceil(n/o);let l=this.ZERO;for(let d=c-1;d>=0;d--){if(d!==c-1)for(let h=0;h<o;h++)l=l.double();const u=Number(r>>BigInt(d*o)&i);let f=a[0];for(let h=1;h<s;h++)f=h===u?a[h]:f;l=l.add(f)}return{p:l,f:l}}shouldBlind(e,r){return this.randomBytes===void 0?!1:r===Jn?!0:e!==this.BASE?!1:(this.baseCanBeBlinded===void 0&&(this.baseCanBeBlinded=this.mulUnsafe(this.BASE,this.Point.Fn.ORDER).is0()),this.baseCanBeBlinded)}mulSecret(e,r,n,o){return this.shouldBlind(e,n)?this.mulCTBlinded(e,r,o):this.mulCT(e,r,o)}mulUnsafe(e,r,n){if(this.assertPoint(e),!cr(r))throw new Error("invalid scalar");const o=yi(e);if(o===1||r>=this.Point.Fn.ORDER)return rv(this.Point,[e],[r],!0);const s=this.getWnafPrecomputes(o,e,this.bits,n);return this.wnafCachedCT(s,r).p}setWindowSize(e,r){this.assertPoint(e),V0(r,this.bits);const n=Math.ceil((this.bits+Yl)/r)+1;G0(n*2**(r-1),this.Point.Fp.BYTES),Ah.set(e,r),this.wnafPrecomputes.delete(e)}hasWindowSize(e){return yi(e)!==1}}function rv(t,e,r,n=!1){if(Bc(t),Eh(e,t),Hs(n,"allowOversized"),Y0(r,t.Fn,n?t.Fn.ORDER**K0:void 0),e.length!==r.length)throw new Error("arrays of points and scalars must have equal length");const o=e.map(i=>Z0(i,4)),s=r.map(i=>J0(i,4));return ev(t.ZERO,o,s)}function Jl(t,e,r){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Zn(e),e}else return Nc(t,{isLE:r})}function nv(t,e,r={},n){if(n===void 0&&(n=t==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);fs(r);for(const c of["p","n","h"]){const l=e[c];if(!(cr(l)&&l!==Lc))throw new Error(`CURVE.${c} must be positive bigint`)}const o=Jl(e.p,r.Fp,n),s=Jl(e.n,r.Fn,n),a=["Gx","Gy","a","d"];for(const c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function ov(t,e){return function(n){const o=t(n);return{secretKey:o,publicKey:e(o)}}}const ko=BigInt(0),Co=BigInt(1),Io=BigInt(2),sv=BigInt(4),Ql=BigInt(8);function iv(t,e,r,n){const o=t.sqr(r),s=t.sqr(n),i=t.add(t.mul(e.a,o),s),a=t.add(t.ONE,t.mul(e.d,t.mul(o,s)));return t.eql(i,a)}function av(t,e={}){fs(e,{},{},"extraOpts");const r=e,n=nv("edwards",t,r,r.FpFnLE),{Fp:o,Fn:s}=n;let i=n.CURVE;const{h:a}=i;if(hs(o,i.a)!==1)throw new Error("edwards: CURVE.a must be a square in Fp for complete addition formulas");if(hs(o,i.d)!==-1)throw new Error("edwards: CURVE.d must be a non-square in Fp for complete addition formulas");fs(r,{},{uvRatio:"function",randomBytes:"function"});const c=r.randomBytes===void 0?dh:r.randomBytes,l=Io<<BigInt(o.BYTES*8)-Co;function d(C){if(!o.isOdd)throw new Error("Field does not have .isOdd()");return o.isOdd(C)}const u=r.uvRatio===void 0?(C,b)=>{try{return{isValid:!0,value:o.sqrt(o.div(C,b))}}catch{return{isValid:!1,value:ko}}}:r.uvRatio;if(!iv(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");const f=o.eql(i.a,o.neg(o.ONE))?C=>o.neg(C):o.eql(i.a,o.ONE)?C=>C:C=>o.mul(i.a,C);function h(C,b,A=!1){const L=A?Co:ko;return Hn("coordinate "+C,b,L,l),b}function g(C){if(!(C instanceof m))throw new Error("EdwardsPoint expected")}class m{static BASE=new m(i.Gx,i.Gy,o.ONE,o.mul(i.Gx,i.Gy));static ZERO=new m(o.ZERO,o.ONE,o.ONE,o.ZERO);static Fp=o;static Fn=s;X;Y;Z;T;constructor(b,A,L,I){this.X=h("x",b),this.Y=h("y",A),this.Z=h("z",L,!0),this.T=h("t",I),Object.freeze(this)}static CURVE(){return i}static fromAffine(b){if(b instanceof m)throw new Error("extended point not allowed");const{x:A,y:L}=b||{};return h("x",A),h("y",L),new m(A,L,o.ONE,o.mul(A,L))}static fromBytes(b,A=!1){const L=o.BYTES,{a:I,d:R}=i;b=Yn(zr(b,L,"point")),Hs(A,"zip215");const E=Yn(b),x=b[L-1];E[L-1]=x&-129;const S=us(E),T=A?l:o.ORDER;Hn("point.y",S,ko,T);const B=o.sqr(S),v=o.sub(B,o.ONE),k=o.sub(o.mulN(R,B),I);let{isValid:P,value:N}=u(v,k);if(!P)throw new Error("bad point: invalid y coordinate");const j=d(N),U=(x&128)!==0;if(!A&&o.is0(N)&&U)throw new Error("bad point: x=0 and x_0=1");return U!==j&&(N=o.neg(N)),m.fromAffine({x:N,y:S})}static fromHex(b,A=!1){return m.fromBytes(R0(b),A)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(b=6,A=!0){return w.setWindowSize(this,b),A||this.multiply(Io),this}assertValidity(){const b=this,{a:A,d:L}=i;if(b.is0())throw new Error("bad point: ZERO");const{X:I,Y:R,Z:E,T:x}=b,S=o.sqr(I),T=o.sqr(R),B=o.sqr(E),v=o.sqr(B),k=o.mul(S,A),P=o.mul(o.add(k,T),B),N=o.add(v,o.mul(L,o.mul(S,T)));if(!o.eql(P,N))throw new Error("bad point: equation left != right (1)");const j=o.mul(I,R),U=o.mul(E,x);if(!o.eql(j,U))throw new Error("bad point: equation left != right (2)")}equals(b){g(b);const{X:A,Y:L,Z:I}=this,{X:R,Y:E,Z:x}=b,S=o.mul(A,x),T=o.mul(R,I),B=o.mul(L,x),v=o.mul(E,I);return o.eql(S,T)&&o.eql(B,v)}is0(){return this.equals(m.ZERO)}negate(){return new m(o.neg(this.X),this.Y,this.Z,o.neg(this.T))}double(){const{X:b,Y:A,Z:L}=this,I=o.sqr(b),R=o.sqr(A),E=o.mul(o.sqr(L),Io),x=f(I),S=o.addN(b,A),T=o.sub(o.subN(o.sqr(S),I),R),B=o.addN(x,R),v=o.subN(B,E),k=o.subN(x,R),P=o.mul(T,v),N=o.mul(B,k),j=o.mul(T,k),U=o.mul(v,B);return new m(P,N,U,j)}add(b){g(b);const{d:A}=i,{X:L,Y:I,Z:R,T:E}=this,{X:x,Y:S,Z:T,T:B}=b,v=o.mul(L,x),k=o.mul(I,S),P=o.mul(o.mulN(E,A),B),N=o.mul(R,T),j=o.sub(o.subN(o.mulN(o.addN(L,I),o.addN(x,S)),v),k),U=o.subN(N,P),O=o.addN(N,P),_=o.sub(k,f(v)),D=o.mul(j,U),F=o.mul(O,_),H=o.mul(j,_),q=o.mul(U,O);return new m(D,F,q,H)}subtract(b){return g(b),this.add(b.negate())}multiply(b){if(!s.isValidNot0(b))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:A,f:L}=w.mulSecret(this,b,a,y);return y([A,L])[0]}multiplyUnsafe(b){if(!s.isValid(b))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return b===ko?m.ZERO:this.is0()||b===Co?this:w.mulUnsafe(this,b,y)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return w.mulUnsafe(this,i.n).is0()}toAffine(b){const A=this;let L=b;if(L!=null&&typeof L!="bigint")throw new TypeError('"invertedZ" expected bigint, got type='+typeof L);const{X:I,Y:R,Z:E}=A,x=A.is0();L==null&&(L=x?o.create(Ql):o.inv(E));const S=o.mul(I,L),T=o.mul(R,L),B=o.mul(E,L);if(x)return{x:o.ZERO,y:o.ONE};if(!o.eql(B,o.ONE))throw new Error("invZ was invalid");return{x:S,y:T}}clearCofactor(){return a===Co?this:a===Io?this.double():a===sv?this.double().double():a===Ql?this.double().double().double():this.multiplyUnsafe(a)}toBytes(){const{x:b,y:A}=this.toAffine(),L=o.toBytes(A);return L[L.length-1]|=d(b)?128:0,L}toHex(){return I0(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const y=C=>W0(m,C),w=new tv(m,c);return w.bits>=6&&m.BASE.precompute(6),Object.freeze(m.prototype),Object.freeze(m),m}const Jt=BigInt(0),Ge=BigInt(1),Ro=BigInt(2);function ed(t,e){return t+e-(e>>Ge<<Ge)}function cv(t){const e=BigInt(6)*t;return(r,n,o)=>{const s=n+o,a=((e+o-n)*r+n)%t;return{x_2:a,x_3:s-a}}}function lv(t){return fs(t,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function",scalarMultBase:"function"}),Object.freeze({...t})}function dv(t){const e=lv(t),{P:r,type:n,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=e.scalarMultBase,c=n==="x25519";if(!c&&n!=="x448")throw new Error("invalid type");const l=i===void 0?dh:i,d=c?255:448,u=cv(r),f=c?32:56,h=BigInt(c?9:5),g=BigInt(c?121665:39081),m=c?Ro**BigInt(254):Ro**BigInt(447),y=c?BigInt(8)*(Ro**BigInt(251)-Ge):BigInt(4)*(Ro**BigInt(445)-Ge),w=m+y+Ge,C=N=>se(N,r),b=A(h);function A(N){return ph(C(N),f)}function L(N){const j=Yn(zr(N,f,"uCoordinate"));return c&&(j[31]&=127),C(us(j))}function I(N){return us(o(Yn(zr(N,f,"scalar"))))}const R=new Set(c?[Jt,Ge,r-Ge,BigInt("325606250916557431795983626356110631294008115727848805560023387167927233504"),BigInt("39382357235489614581723060781553021112529911719440698176882885853963445705823")]:[Jt,Ge,r-Ge]);function E(N,j){const U=L(j);if(R.has(U))throw new Error("invalid private or public key received");const O=B(U,I(N));if(O===Jt)throw new Error("invalid private or public key received");return A(O)}function x(N){if(a===void 0)return E(N,b);const j=I(N);Hn("scalar",j,m,w);const U=C(a(j));if(U===Jt)throw new Error("invalid private or public key received");return A(U)}const S=x,T=E;function B(N,j){Hn("u",N,Jt,r),Hn("scalar",j,m,w);const U=j,O=N;let _=Ge,D=Jt,F=N,H=Ge;const q=U^U>>Ge;for(let V=BigInt(d-1);V>=Jt;V--){const G=ed(r,q>>V);({x_2:_,x_3:F}=u(G,_,F)),{x_2:D,x_3:H}=u(G,D,H);const X=_+D,Z=C(X*X),ae=_-D,ke=C(ae*ae),Oe=Z-ke,te=F+H,ze=F-H,Gt=C(ze*X),Xt=C(te*ae),Fe=Gt+Xt,Yt=Gt-Xt;F=C(Fe*Fe),H=C(O*C(Yt*Yt)),_=C(Z*ke),D=C(Oe*(Z+C(g*Oe)))}const K=ed(r,U);({x_2:_,x_3:F}=u(K,_,F)),{x_2:D,x_3:H}=u(K,D,H);const W=s(D);return C(_*W)}const v={secretKey:f,publicKey:f,seed:f},k=N=>(N=N===void 0?l(f):N,zr(N,v.seed,"seed"),N),P={randomSecretKey:k};return Object.freeze(v),Object.freeze(P),Object.freeze({keygen:ov(k,S),getSharedSecret:T,getPublicKey:S,scalarMult:E,scalarMultBase:x,utils:P,GuBytes:b.slice(),lengths:v})}const td=BigInt(0),uv=BigInt(1),rd=BigInt(2),fv=BigInt(3),hv=BigInt(5),pv=BigInt(8),qs=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),gv={p:qs,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:pv,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function kh(t){const e=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),s=qs,a=t*t%s*t%s,c=tt(a,rd,s)*a%s,l=tt(c,uv,s)*t%s,d=tt(l,hv,s)*l%s,u=tt(d,e,s)*d%s,f=tt(u,r,s)*u%s,h=tt(f,n,s)*f%s,g=tt(h,o,s)*h%s,m=tt(g,o,s)*h%s,y=tt(m,e,s)*d%s;return{pow_p_5_8:tt(y,rd,s)*t%s,b2:a}}function mv(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const nd=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function wv(t,e){const r=qs,n=se(e*e*e,r),o=se(n*n*e,r),s=kh(t*o).pow_p_5_8;let i=se(t*n*s,r);const a=se(e*i*i,r),c=i,l=se(i*nd,r),d=a===t,u=a===se(-t,r),f=a===se(-t*nd,r);return d&&(i=c),(u||f)&&(i=l),$0(i,r)&&(i=se(-i,r)),{isValid:d||u,value:i}}const od=av(gv,{uvRatio:wv}),To=(()=>{const t=qs,e=r=>{const{pow_p_5_8:n,b2:o}=kh(r);return se(tt(n,fv,t)*o,t)};return dv({P:t,type:"x25519",powPminus2:e,adjustScalarBytes:mv,scalarMultBase:r=>{const n=se(r,od.Fn.ORDER);if(n===td)return td;const o=od.BASE.multiply(n);return se((o.Z+o.Y)*e(se(o.Z-o.Y,t)),t)}})})();class sd{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,r){if(Cc(e),Rt(r,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("expected Hash instance");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?e.create().update(r).digest():r);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),ar(o)}update(e){return ls(this),this.iHash.update(e),this}digestInto(e){ls(this),oh(e,this),this.finished=!0;const r=e.subarray(0,this.outputLen);this.iHash.digestInto(r),this.oHash.update(r),this.oHash.digestInto(r),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});const{oHash:r,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a,canXOF:c}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.canXOF=c,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}const Ch=(()=>{const t=((e,r,n)=>new sd(e,r).update(n).digest());return t.create=(e,r)=>new sd(e,r),t})();function id(){const t={};return t.promise=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t}class ad{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){const e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}}class bi{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new ad(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){const r=this.head;this.head=r.next=new ad(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){const r=this.tail.next;this.tail.next=null,this.tail=r,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}}class yv extends Error{type;code;constructor(e,r){super(e??"The operation was aborted"),this.type="aborted",this.code=r??"ABORT_ERR"}}function bv(t={}){return vv(r=>{const n=r.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},t)}function vv(t,e){e=e??{};let r=e.onEnd,n=new bi,o,s,i,a=id();const c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=C=>{s=null,n.push(C);try{y(t(n))}catch(b){w(b)}return o}}):t(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=id()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new bi,s!=null?s({error:y}):(n.push({error:y}),o)),u=y=>{if(i)return o;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:y})},f=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),h=()=>(n=new bi,f(),{done:!0}),g=y=>(f(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:u,end:f,get readableLength(){return n.size},onEmpty:async y=>{const w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let C,b;w!=null&&(C=new Promise((A,L)=>{b=()=>{L(new yv)},w.addEventListener("abort",b)}));try{await Promise.race([a.promise,C])}finally{b!=null&&w!=null&&w?.removeEventListener("abort",b)}}},r==null)return o;const m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(y){return m.throw(y),r!=null&&(r(y),r=void 0),{done:!0}},return(){return m.return(),r!=null&&(r(),r=void 0),{done:!0}},push:u,end(y){return m.end(y),r!=null&&(r(y),r=void 0),o},get readableLength(){return m.readableLength},onEmpty:y=>m.onEmpty(y)},o}class _c extends Error{name="TimeoutError";constructor(e,r){super(e,r),Error.captureStackTrace?.(this,_c)}}const cd=t=>t.reason??new DOMException("This operation was aborted.","AbortError");function xv(t,e){const{milliseconds:r,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e;let a,c;const d=new Promise((u,f)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(i?.aborted){f(cd(i));return}if(i&&(c=()=>{f(cd(i))},i.addEventListener("abort",c,{once:!0})),t.then(u,f),r===Number.POSITIVE_INFINITY)return;const h=new _c;a=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(g){f(g)}return}typeof t.cancel=="function"&&t.cancel(),o===!1?u():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${r} milliseconds`,f(h))},r)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}const Sv=t=>{const e=t.addEventListener||t.on||t.addListener,r=t.removeEventListener||t.off||t.removeListener;if(!e||!r)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(t),removeListener:r.bind(t)}};function Ev(t,e,r){let n;const o=new Promise((s,i)=>{if(r={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...r},!(r.count>=0&&(r.count===Number.POSITIVE_INFINITY||Number.isInteger(r.count))))throw new TypeError("The `count` option should be at least 0 or more");r.signal?.throwIfAborted();const a=[e].flat(),c=[],{addListener:l,removeListener:d}=Sv(t),u=async(...h)=>{const g=r.multiArgs?h:h[0];if(r.filter)try{if(!await r.filter(g))return}catch(m){n(),i(m);return}c.push(g),r.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(r.rejectionMultiArgs?h:h[0])};n=()=>{for(const h of a)d(h,u);for(const h of r.rejectionEvents)a.includes(h)||d(h,f)};for(const h of a)l(h,u);for(const h of r.rejectionEvents)a.includes(h)||l(h,f);r.signal&&r.signal.addEventListener("abort",()=>{f(r.signal.reason)},{once:!0}),r.resolveImmediately&&s(c)});if(o.cancel=n,typeof r.timeout=="number"){const s=xv(o,{milliseconds:r.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Av(t,e,r){typeof r=="function"&&(r={filter:r}),r={...r,count:1,resolveImmediately:!1};const n=Ev(t,e,r),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}class ps extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"}class kv extends Error{static name="StreamClosedError";name="StreamClosedError"}function Cv(t){return t.reason}function Ih(t,e,r){if(e==null||t==null)return t;const n=Cv;if(e.aborted)return t.catch(()=>{}),Promise.reject(n(e));let o;return Promise.race([t,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})]).finally(()=>{o!=null&&e.removeEventListener("abort",o)})}const Iv=Math.pow(2,20)*4;class Rh extends jg{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??Iv,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new oe,this.writeBuffer=new oe,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);const r=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",r);const n=o=>{this.onDrainPromise?.reject(o.error??new kv)};this.addEventListener("close",n)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),Ih(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;const e=bv(),r=s=>{e.push(s.data)};this.addEventListener("message",r);const n=s=>{e.end(s.error)};this.addEventListener("close",n);const o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",r),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new vn(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(r){this.log("failed to send reset to remote - %e",r)}this.dispatchEvent(new o0(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new vn("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new vn("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new vn(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new vn(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");const e=new r0;this.dispatchEvent(new s0(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new kc))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0;const r=this.writeBuffer.byteLength;let n=0;for(;this.writeBuffer.byteLength>0;){const o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}const s=this.writeBuffer.sublist(0,o),i=new oe(s);this.writeBuffer.consume(s.byteLength);const a=this.sendData(s);if(e=a.canSendMore,n+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",n,r,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}const e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new n0(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new ql(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new ql(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}}const Rv=4194304;class ld extends Error{static name="UnwrappedError";name="UnwrappedError"}class Th extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"}class Tv extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"}class Pv extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"}function Nv(t){return typeof t?.closeRead=="function"}function Lv(t){return typeof t?.close=="function"}function vi(t){return Nv(t)?t.remoteWriteStatus!=="writable"&&t.readBufferLength===0:Lv(t)?t.status!=="open":!1}function Bv(t){return t?.addEventListener!=null&&t?.removeEventListener!=null&&t?.send!=null&&t?.push!=null&&t?.log!=null}function _v(t,e){const r=e?.maxBufferSize??Rv,n=new oe;let o,s=!1;if(!Bv(t))throw new nh("Argument should be a Stream or a Multiaddr");const i=d=>{if(n.append(d.data),n.byteLength>r){const u=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${r}`))}o?.resolve()};t.addEventListener("message",i);const a=d=>{d.error!=null?o?.reject(d.error):o?.resolve()};t.addEventListener("close",a);const c=()=>{o?.resolve()};t.addEventListener("remoteCloseWrite",c);const l={readBuffer:n,async read(d){if(s===!0)throw new ld("Stream was unwrapped");if(vi(t)){if(d?.bytes==null)return null;if(n.byteLength<d.bytes)throw t.log.error("closed after reading %d/%d bytes",n.byteLength,d.bytes),new ps(`Unexpected EOF - stream closed after reading ${n.byteLength}/${d.bytes} bytes`)}const u=d?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=u){o.resolve();break}if(await Ih(o.promise,d?.signal),vi(t)){if(n.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}const f=d?.bytes??n.byteLength;if(n.byteLength<f){if(vi(t))throw t.log.error("closed while reading %d/%d bytes",n.byteLength,f),new ps(`Unexpected EOF - stream closed while reading ${n.byteLength}/${f} bytes`);return l.read(d)}const h=n.sublist(0,f);return n.consume(f),h},async write(d,u){if(s===!0)throw new ld("Stream was unwrapped");t.send(d)||await Av(t,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,t.removeEventListener("message",i),t.removeEventListener("close",a),t.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(t.log("stream unwrapped with %d unread bytes",n.byteLength),t.push(n))),t}};return l}function dd(t,e={}){const r=_v(t,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=yr(e.maxDataLength));const n=e?.lengthDecoder??Ff,o=e?.lengthEncoder??Uy;return{async read(i){let a=-1;const c=new oe;for(;;){const d=await r.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Th("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Pv(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Tv(`Message length too long - ${a} > ${e.maxDataLength}`);const l=await r.read({...i,bytes:a});if(l==null)throw t.log.error("tried to read %d bytes but the stream closed",a),new ps(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw t.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new ps(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await r.write(new oe(o(i.byteLength),i),a)},async writeV(i,a){const c=new oe(...i.flatMap(l=>[o(l.byteLength),l]));await r.write(c,a)},unwrap(){return r.unwrap()}}}const Dv=1024*1024*4,Ov=1024*1024*4;class Fv{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new oe,this.maxBufferSize=e.maxBufferSize??Dv,this.maxDataLength=e.maxDataLength??Ov,this.lengthDecoder=e.lengthDecoder??Ff,this.encodingLength=e.encodingLength??yr}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new nh(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let r;try{r=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(r<0||r>this.maxDataLength)throw new Th("Invalid message length");const n=this.encodingLength(r),o=n+r;if(this.buffer.byteLength>=o){const s=this.buffer.sublist(n,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}}var Mv={};const Qn=65535,ud=Qn-16,uo=!!Mv?.DUMP_SESSION_KEYS,fd=16;function Ra(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}const gs=t=>t?`"${t}" `:"";function Ta(t,e=""){if(typeof t!="boolean")throw new TypeError(gs(e)+"expected boolean, got type="+typeof t);return t}function Vr(t,e=""){if(typeof t!="number")throw new TypeError(gs(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(gs(e)+"expected integer >= 0, got "+t);return t}function ve(t,e,r=""){if(Ra(t)&&(e===void 0||t.length===e))return t;e!==void 0&&Vr(e,"length");const n=Ra(t),o=e!==void 0?` of length ${e}`:"",s=n?`length=${t.length}`:`type=${typeof t}`,i=gs(r)+"expected Uint8Array"+o+", got "+s;throw n?new RangeError(i):new TypeError(i)}const hd=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError(e==="object"?"expected valid options object":`"${e}" expected object, got type=${typeof t}`)};function pd(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function jv(t,e){ve(t,void 0,"output");const r=e.outputLen;if(!(t.length>=r))throw new RangeError('"output" expected length >= '+r)}function vt(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Ht(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function Uv(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}const Gr=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function $v(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Hv(t){for(let e=0;e<t.length;e++)t[e]=$v(t[e]);return t}const or=Gr?t=>t:Hv;function qv(t,e){return!t.byteLength||!e.byteLength?!1:t.buffer===e.buffer&&t.byteOffset<e.byteOffset+e.byteLength&&e.byteOffset<t.byteOffset+t.byteLength}function Kv(t,e){if(qv(t,e)&&t.byteOffset<e.byteOffset)throw new Error("complex overlap of input and output is not supported")}function zv(t,e){return hd(t,"defaults"),hd(e,"opts"),Object.assign(t,e)}function Wv(t,e){if(t=ve(t),e=ve(e),t.length!==e.length)return!1;let r=0;for(let n=0;n<t.length;n++)r|=t[n]^e[n];return r===0}function Vv(t,e,r){const n=e,o=(()=>[]),s=(a,c)=>n(c,...o(a)).update(a).digest(),i=n(new Uint8Array(t),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>n(a,...c),s}const Gv=(t,e)=>{function r(n,...o){if(ve(n,void 0,"key"),t.nonceLength!==void 0){const u=o[0];ve(u,t.varSizeNonce?void 0:t.nonceLength,"nonce")}const s=t.tagLength,i=t.nonceLength!==void 0?1:0;if(!t.withAAD){for(let u=i;u<o.length;u++)if(Ra(o[u]))throw new Error("AAD not supported")}t.withAAD&&o[i]!==void 0&&ve(o[i],void 0,"AAD");const a=e(n,...o),c=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");ve(f,void 0,"output")}};let l=!1;return{encrypt(u,f){if(l)throw new Error("cannot encrypt() twice with same key + nonce");return l=!0,ve(u,void 0,"data"),c(a.encrypt.length,f),a.encrypt(u,f)},decrypt(u,f){if(ve(u,void 0,"data"),s&&u.length<s)throw new Error('"ciphertext" expected length >= tagLength='+s);return c(a.decrypt.length,f),a.decrypt(u,f)}}}return Object.assign(r,t),r};function Pa(t,e,r=!0){if(e===void 0)return new Uint8Array(t);if(ve(e,t,"output"),r&&!ms(e))throw new Error("invalid output, must be aligned");return e}function Xv(t,e,r){Vr(t),Vr(e),Ta(r);const n=new Uint8Array(16),o=Uv(n);return o.setBigUint64(0,BigInt(e),r),o.setBigUint64(8,BigInt(t),r),n}function ms(t){return t.byteOffset%4===0}function ws(t){return Uint8Array.from(ve(t))}const Ph=t=>Uint8Array.from(t.split(""),e=>e.charCodeAt(0)),Yv=or(vt(Ph("expand 16-byte k"))),Zv=or(vt(Ph("expand 32-byte k")));function ee(t,e){return t<<e|t>>>32-e}const xn=64,Jv=16,Na=2**32-1,gd=Uint32Array.of();function Qv(t,e,r,n,o,s,i,a){const c=o.length,l=new Uint8Array(xn),d=vt(l),u=Gr&&ms(o)&&ms(s),f=u?vt(o):gd,h=u?vt(s):gd;if(!Gr){for(let g=0;g<c;i++){if(t(e,r,n,d,i,a),or(d),i>=Na)throw new Error("arx: counter overflow");const m=Math.min(xn,c-g);for(let y=0,w;y<m;y++)w=g+y,s[w]=o[w]^l[y];g+=m}return}for(let g=0;g<c;i++){if(t(e,r,n,d,i,a),i>=Na)throw new Error("arx: counter overflow");const m=Math.min(xn,c-g);if(u&&m===xn){const y=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let w=0,C;w<Jv;w++)C=y+w,h[C]=f[C]^d[w];g+=xn;continue}for(let y=0,w;y<m;y++)w=g+y,s[w]=o[w]^l[y];g+=m}}function ex(t,e){const{allowShortKeys:r,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=zv({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof t!="function")throw new Error("core must be a function");return Vr(o),Vr(i),Ta(s),Ta(r),(a,c,l,d,u=0)=>{ve(a,void 0,"key"),ve(c,void 0,"nonce"),ve(l,void 0,"data");const f=l.length,h=d!==void 0;if(d=Pa(f,d,!1),h&&Kv(l,d),Vr(u),u<0||u>=Na)throw new Error("arx: counter overflow");const g=[];let m=a.length,y,w;if(m===32)g.push(y=ws(a)),w=Zv;else if(m===16&&r)y=new Uint8Array(32),y.set(a),y.set(a,16),w=Yv,g.push(y);else throw ve(a,32,"arx key"),new Error("invalid key size");(!Gr||!ms(c))&&g.push(c=ws(c));let C=vt(y);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");const L=c.subarray(0,16);if(Gr)n(w,C,vt(L),C);else{const I=or(Uint32Array.from(w));n(I,C,vt(L),C),Ht(I),or(C)}c=c.subarray(16)}else Gr||or(C);const b=16-o;if(b!==c.length)throw new Error(`arx: nonce must be ${b} or 16 bytes`);if(b!==12){const L=new Uint8Array(12);L.set(c,s?0:12-c.length),c=L,g.push(c)}const A=or(vt(c));try{return Qv(t,w,C,A,l,d,u,i),d}finally{Ht(...g)}}}function Se(t,e){return t[e++]&255|(t[e++]&255)<<8}class tx{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=ws(ve(e,32,"key"));const r=Se(e,0),n=Se(e,2),o=Se(e,4),s=Se(e,6),i=Se(e,8),a=Se(e,10),c=Se(e,12),l=Se(e,14);this.r[0]=r&8191,this.r[1]=(r>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=Se(e,16+2*d)}process(e,r,n=!1){const o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],f=i[5],h=i[6],g=i[7],m=i[8],y=i[9],w=Se(e,r+0),C=Se(e,r+2),b=Se(e,r+4),A=Se(e,r+6),L=Se(e,r+8),I=Se(e,r+10),R=Se(e,r+12),E=Se(e,r+14);let x=s[0]+(w&8191),S=s[1]+((w>>>13|C<<3)&8191),T=s[2]+((C>>>10|b<<6)&8191),B=s[3]+((b>>>7|A<<9)&8191),v=s[4]+((A>>>4|L<<12)&8191),k=s[5]+(L>>>1&8191),P=s[6]+((L>>>14|I<<2)&8191),N=s[7]+((I>>>11|R<<5)&8191),j=s[8]+((R>>>8|E<<8)&8191),U=s[9]+(E>>>5|o),O=0,_=O+x*a+S*(5*y)+T*(5*m)+B*(5*g)+v*(5*h);O=_>>>13,_&=8191,_+=k*(5*f)+P*(5*u)+N*(5*d)+j*(5*l)+U*(5*c),O+=_>>>13,_&=8191;let D=O+x*c+S*a+T*(5*y)+B*(5*m)+v*(5*g);O=D>>>13,D&=8191,D+=k*(5*h)+P*(5*f)+N*(5*u)+j*(5*d)+U*(5*l),O+=D>>>13,D&=8191;let F=O+x*l+S*c+T*a+B*(5*y)+v*(5*m);O=F>>>13,F&=8191,F+=k*(5*g)+P*(5*h)+N*(5*f)+j*(5*u)+U*(5*d),O+=F>>>13,F&=8191;let H=O+x*d+S*l+T*c+B*a+v*(5*y);O=H>>>13,H&=8191,H+=k*(5*m)+P*(5*g)+N*(5*h)+j*(5*f)+U*(5*u),O+=H>>>13,H&=8191;let q=O+x*u+S*d+T*l+B*c+v*a;O=q>>>13,q&=8191,q+=k*(5*y)+P*(5*m)+N*(5*g)+j*(5*h)+U*(5*f),O+=q>>>13,q&=8191;let K=O+x*f+S*u+T*d+B*l+v*c;O=K>>>13,K&=8191,K+=k*a+P*(5*y)+N*(5*m)+j*(5*g)+U*(5*h),O+=K>>>13,K&=8191;let W=O+x*h+S*f+T*u+B*d+v*l;O=W>>>13,W&=8191,W+=k*c+P*a+N*(5*y)+j*(5*m)+U*(5*g),O+=W>>>13,W&=8191;let V=O+x*g+S*h+T*f+B*u+v*d;O=V>>>13,V&=8191,V+=k*l+P*c+N*a+j*(5*y)+U*(5*m),O+=V>>>13,V&=8191;let G=O+x*m+S*g+T*h+B*f+v*u;O=G>>>13,G&=8191,G+=k*d+P*l+N*c+j*a+U*(5*y),O+=G>>>13,G&=8191;let X=O+x*y+S*m+T*g+B*h+v*f;O=X>>>13,X&=8191,X+=k*u+P*d+N*l+j*c+U*a,O+=X>>>13,X&=8191,O=(O<<2)+O|0,O=O+_|0,_=O&8191,O=O>>>13,D+=O,s[0]=_,s[1]=D,s[2]=F,s[3]=H,s[4]=q,s[5]=K,s[6]=W,s[7]=V,s[8]=G,s[9]=X}finalize(){const{h:e,pad:r}=this,n=new Uint16Array(10);let o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+r[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+r[a]|0)+(i>>>16)|0,e[a]=i&65535;Ht(n)}update(e){pd(this),ve(e),e=ws(e);const{buffer:r,blockLen:n}=this,o=e.length;for(let s=0;s<o;){const i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}r.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(r,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,Ht(this.h,this.r,this.buffer,this.pad)}digestInto(e){pd(this),jv(e,this),this.finished=!0;const{buffer:r,h:n}=this;let{pos:o}=this;if(o){for(r[o++]=1;o<16;o++)r[o]=0;this.process(r,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8}digest(){const{buffer:e,outputLen:r}=this;this.digestInto(e);const n=e.slice(0,r);return this.destroy(),n}}const rx=Vv(32,t=>new tx(t));function nx(t,e,r,n,o,s=20){let i=t[0],a=t[1],c=t[2],l=t[3],d=e[0],u=e[1],f=e[2],h=e[3],g=e[4],m=e[5],y=e[6],w=e[7],C=o,b=r[0],A=r[1],L=r[2],I=i,R=a,E=c,x=l,S=d,T=u,B=f,v=h,k=g,P=m,N=y,j=w,U=C,O=b,_=A,D=L;for(let H=0;H<s;H+=2)I=I+S|0,U=ee(U^I,16),k=k+U|0,S=ee(S^k,12),I=I+S|0,U=ee(U^I,8),k=k+U|0,S=ee(S^k,7),R=R+T|0,O=ee(O^R,16),P=P+O|0,T=ee(T^P,12),R=R+T|0,O=ee(O^R,8),P=P+O|0,T=ee(T^P,7),E=E+B|0,_=ee(_^E,16),N=N+_|0,B=ee(B^N,12),E=E+B|0,_=ee(_^E,8),N=N+_|0,B=ee(B^N,7),x=x+v|0,D=ee(D^x,16),j=j+D|0,v=ee(v^j,12),x=x+v|0,D=ee(D^x,8),j=j+D|0,v=ee(v^j,7),I=I+T|0,D=ee(D^I,16),N=N+D|0,T=ee(T^N,12),I=I+T|0,D=ee(D^I,8),N=N+D|0,T=ee(T^N,7),R=R+B|0,U=ee(U^R,16),j=j+U|0,B=ee(B^j,12),R=R+B|0,U=ee(U^R,8),j=j+U|0,B=ee(B^j,7),E=E+v|0,O=ee(O^E,16),k=k+O|0,v=ee(v^k,12),E=E+v|0,O=ee(O^E,8),k=k+O|0,v=ee(v^k,7),x=x+S|0,_=ee(_^x,16),P=P+_|0,S=ee(S^P,12),x=x+S|0,_=ee(_^x,8),P=P+_|0,S=ee(S^P,7);let F=0;n[F++]=i+I|0,n[F++]=a+R|0,n[F++]=c+E|0,n[F++]=l+x|0,n[F++]=d+S|0,n[F++]=u+T|0,n[F++]=f+B|0,n[F++]=h+v|0,n[F++]=g+k|0,n[F++]=m+P|0,n[F++]=y+N|0,n[F++]=w+j|0,n[F++]=C+U|0,n[F++]=b+O|0,n[F++]=A+_|0,n[F++]=L+D|0}const ox=ex(nx,{counterRight:!1,counterLength:4,allowShortKeys:!1}),sx=new Uint8Array(16),md=(t,e)=>{t.update(e);const r=e.length%16;r&&t.update(sx.subarray(r))},ix=new Uint8Array(32);function wd(t,e,r,n,o){o!==void 0&&ve(o,void 0,"AAD");const s=t(e,r,ix),i=Xv(n.length,o?o.length:0,!0),a=rx.create(s);o&&md(a,o),md(a,n),a.update(i);const c=a.digest();return Ht(s,i),c}const ax=t=>(e,r,n)=>({encrypt(s,i){const a=s.length;i=Pa(a+16,i,!1),i.set(s);const c=i.subarray(0,-16);t(e,r,c,c,1);const l=wd(t,e,r,c,n);return i.set(l,a),Ht(l),i},decrypt(s,i){i=Pa(s.length-16,i,!1);const a=s.subarray(0,-16),c=s.subarray(-16),l=wd(t,e,r,a,n);if(!Wv(c,l))throw Ht(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),t(e,r,i,i,1),Ht(l),i}}),yd=Gv({blockSize:64,nonceLength:12,tagLength:16,withAAD:!0},ax(ox));function cx(t,e,r){return Cc(t),r===void 0&&(r=new Uint8Array(t.outputLen)),Ch(t,r,e)}const Sn=Uint8Array.of(0),lx=Uint8Array.of();function dx(t,e,r,n=32,o){Cc(t),It(n,"length"),Rt(e,void 0,"prk");const s=t.outputLen;if(e.length<s)throw new Error('"prk" must be at least HashLen octets');if(n>255*s)throw new Error("Length must be <= 255*HashLen");const i=Math.ceil(n/s);if(r===void 0?r=lx:Rt(r,void 0,"info"),!i)return new Uint8Array;const a=new Uint8Array(i*s),{iHash:c,oHash:l}=Ch.create(t,e),d=new Uint8Array(s),u=i>1?t.create():void 0;for(let h=0;h<i-1;h++){Sn[0]=h+1;const g=c._cloneInto(u);h&&g.update(d),g.update(r).update(Sn).digestInto(d),l._cloneInto(u).update(d).digestInto(d),a.set(d,s*h)}if(Sn[0]=i,i>1&&c.update(d),c.update(r).update(Sn).digestInto(d),l.update(d).digestInto(d),a.set(d,s*(i-1)),c.destroy(),l.destroy(),u?.destroy(),d!==a&&ar(d),ar(Sn),n===a.length)return a;const f=a.slice(0,n);return ar(a),f}const Nh={hashSHA256(t){return mi(t.subarray())},getHKDF(t,e){const r=cx(mi,e,t),o=dx(mi,r,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){const t=To.utils.randomSecretKey();return{publicKey:To.getPublicKey(t),privateKey:t}},generateX25519KeyPairFromSeed(t){return{publicKey:To.getPublicKey(t),privateKey:t}},generateX25519SharedKey(t,e){return To.getSharedSecret(t.subarray(),e.subarray())},chaCha20Poly1305Encrypt(t,e,r,n){return yd(n,e,r).encrypt(t.subarray())},chaCha20Poly1305Decrypt(t,e,r,n,o){return yd(n,e,r).decrypt(t.subarray(),o)}},ux=Nh;function fx(t){return{generateKeypair:t.generateX25519KeyPair,dh:(e,r)=>t.generateX25519SharedKey(e.privateKey,r).subarray(0,32),encrypt:t.chaCha20Poly1305Encrypt,decrypt:t.chaCha20Poly1305Decrypt,hash:t.hashSHA256,hkdf:t.getHKDF}}const ys=t=>{const e=kt(2);return e[0]=t>>8,e[1]=t,e};ys.bytes=2;const bs=t=>{if(t.length<2)throw RangeError("Could not decode int16BE");if(t instanceof Uint8Array){let e=0;return e+=t[0]<<8,e+=t[1],e}return t.getUint16(0)};bs.bytes=2;function hx(t){return{xxHandshakeSuccesses:t.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:t.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:t.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:t.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:t.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function Lh(t,e){!e.enabled||!uo||(t?(e(`LOCAL_STATIC_PUBLIC_KEY ${Q(t.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${Q(t.privateKey,"hex")}`)):e("Missing local static keys."))}function Bh(t,e){!e.enabled||!uo||(t?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${Q(t.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${Q(t.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function px(t,e){!e.enabled||!uo||e(t?`REMOTE_STATIC_PUBLIC_KEY ${Q(t.subarray(),"hex")}`:"Missing remote static public key.")}function _h(t,e){!e.enabled||!uo||e(t?`REMOTE_EPHEMERAL_PUBLIC_KEY ${Q(t.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function Dh(t,e,r){!r.enabled||!uo||(r(`CIPHER_STATE_1 ${t.n.getUint64()} ${t.k&&Q(t.k,"hex")}`),r(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&Q(e.k,"hex")}`))}class qn extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=qn.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"}const gx=0,mx=4294967295,wx="Cipherstate has reached maximum n, a new handshake must be performed";class yx{n;bytes;view;constructor(e=gx){this.n=e,this.bytes=Me(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>mx)throw new Error(wx)}}const Xr=Me(0);class Po{k;n;crypto;constructor(e,r=void 0,n=0){this.crypto=e,this.k=r,this.n=new yx(n)}hasKey(){return!!this.k}encryptWithAd(e,r){if(!this.hasKey())return r;this.n.assertValue();const n=this.crypto.encrypt(r,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,r,n){if(!this.hasKey())return r;this.n.assertValue();const o=this.crypto.decrypt(r,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}}class bx{cs;ck;h;crypto;constructor(e,r){this.crypto=e;const n=we(r,"utf-8");this.h=xx(e,n),this.ck=this.h,this.cs=new Po(e)}mixKey(e){const[r,n]=this.crypto.hkdf(this.ck,e);this.ck=r,this.cs=new Po(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new oe(this.h,e))}encryptAndHash(e){const r=this.cs.encryptWithAd(this.h,e);return this.mixHash(r),r}decryptAndHash(e){const r=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),r}split(){const[e,r]=this.crypto.hkdf(this.ck,Xr);return[new Po(this.crypto,e),new Po(this.crypto,r)]}}class vx{ss;s;e;rs;re;initiator;crypto;constructor(e){const{crypto:r,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=r,this.ss=new bx(r,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");const e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,r=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<r+32)throw new Error("message is not long enough");this.re=e.sublist(r,r+32),this.ss.mixHash(this.re)}readS(e,r=0){if(this.rs)throw new Error("remote static public key is already set");const n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<r+n)throw new Error("message is not long enough");const o=e.sublist(r,r+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}}class Oh extends vx{writeMessageA(e){return new oe(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){const r=this.writeE();this.writeEE();const n=this.writeS();return this.writeES(),new oe(r,n,this.ss.encryptAndHash(e))}writeMessageC(e){const r=this.writeS();return this.writeSE(),new oe(r,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(r){throw new qn(`handshake stage 0 validation fail: ${r.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();const r=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+r))}catch(r){throw new qn(`handshake stage 1 validation fail: ${r.message}`)}}readMessageC(e){try{const r=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(r))}catch(r){throw new qn(`handshake stage 2 validation fail: ${r.message}`)}}}function xx(t,e){if(e.length<=32){const r=Me(32);return r.set(e),r}else return t.hash(e)}var vs;(function(t){let e;t.codec=()=>(e==null&&(e=Us((r,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),r.webtransportCerthashes!=null)for(const s of r.webtransportCerthashes)n.uint32(10),n.bytes(s);if(r.streamMuxers!=null)for(const s of r.streamMuxers)n.uint32(18),n.string(s);o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={webtransportCerthashes:[],streamMuxers:[]},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new jl('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(r.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new jl('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(r.string());break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>js(r,t.codec()),t.decode=(r,n)=>Ms(r,t.codec(),n)})(vs||(vs={}));var xs;(function(t){let e;t.codec=()=>(e==null&&(e=Us((r,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),r.identityKey!=null&&r.identityKey.byteLength>0&&(n.uint32(10),n.bytes(r.identityKey)),r.identitySig!=null&&r.identitySig.byteLength>0&&(n.uint32(18),n.bytes(r.identitySig)),r.extensions!=null&&(n.uint32(34),vs.codec().encode(r.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(r,n,o={})=>{const s={identityKey:Me(0),identitySig:Me(0)},i=n==null?r.len:r.pos+n;for(;r.pos<i;){const a=r.uint32();switch(a>>>3){case 1:{s.identityKey=r.bytes();break}case 2:{s.identitySig=r.bytes();break}case 4:{s.extensions=vs.codec().decode(r,r.uint32(),{limits:o.limits?.extensions});break}default:{r.skipType(a&7);break}}}return s})),e),t.encode=r=>js(r,t.codec()),t.decode=(r,n)=>Ms(r,t.codec(),n)})(xs||(xs={}));async function Fh(t,e,r){const n=await t.sign(jh(e));return xs.encode({identityKey:$s(t.publicKey),identitySig:n,extensions:r})}async function Mh(t,e,r){try{const n=xs.decode(t),o=Aa(n.identityKey);if(r?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${r}`);if(!e)throw new Error("Remote static does not exist");const s=jh(e);if(!await o.verify(s,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new Lg(n.message)}}function jh(t){const e=we("noise-libp2p-static-key:");return t instanceof Uint8Array?ha([e,t],e.length+t.length):(t.prepend(e),t)}class Sx extends Rh{stream;handshake;metrics;decoder;constructor(e,r,n){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=r,this.metrics=n,this.decoder=new Fv({lengthDecoder:bs,maxBufferSize:16*1024*1024,encodingLength:()=>2});const o=c=>{try{for(const l of this.decoder.decode(c.data))this.onData(this.decrypt(l))}catch(l){this.abort(l)}};this.stream.addEventListener("message",o);const s=c=>{c.error!=null?c.local===!0?this.abort(c.error):this.onRemoteReset():this.onTransportClosed()};this.stream.addEventListener("close",s);const i=()=>{this.safeDispatchEvent("drain")};this.stream.addEventListener("drain",i);const a=()=>{this.onRemoteCloseWrite()};this.stream.addEventListener("remoteCloseWrite",a)}encrypt(e){const r=new oe;for(let n=0;n<e.byteLength;n+=ud){let o=n+ud;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(n,o)):s=this.handshake.encrypt(e.sublist(n,o)),this.metrics?.encryptedPackets.increment(),r.append(ys(s.byteLength)),r.append(s)}return r}decrypt(e){const r=new oe;for(let n=0;n<e.byteLength;n+=Qn){let o=n+Qn;if(o>e.byteLength&&(o=e.byteLength),o-fd<n)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(n,o):s=e.sublist(n,o);const i=e.subarray(n,o-fd);try{const a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),r.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return r}close(e){return this.stream.close(e)}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}sendReset(e){this.stream.abort(e)}sendData(e){return{sentBytes:e.byteLength,canSendMore:this.stream.send(this.encrypt(e))}}}function bd(t,e,r){return new Sx(t,e,r)}async function Ex(t,e){const{log:r,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Fh(s,a.publicKey,l),u=new Oh({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});Lh(u.s,r),r.trace("Stage 0 - Initiator starting to send first message."),await n.write(u.writeMessageA(Xr),e),r.trace("Stage 0 - Initiator finished sending first message."),Bh(u.e,r),r.trace("Stage 1 - Initiator waiting to receive first message from responder...");const f=u.readMessageB(await n.read(e));r.trace("Stage 1 - Initiator received the message."),_h(u.re,r),px(u.rs,r),r.trace("Initiator going to check remote's signature...");const h=await Mh(f,u.rs,c);r.trace("All good with the signature!"),r.trace("Stage 2 - Initiator sending third handshake message."),await n.write(u.writeMessageC(d),e),r.trace("Stage 2 - Initiator sent message with signed payload.");const[g,m]=u.ss.split();return Dh(g,m,r),{payload:h,encrypt:y=>g.encryptWithAd(Xr,y),decrypt:(y,w)=>m.decryptWithAd(Xr,y,w)}}async function Ax(t,e){const{log:r,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=t,d=await Fh(s,a.publicKey,l),u=new Oh({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});Lh(u.s,r),r.trace("Stage 0 - Responder waiting to receive first message."),u.readMessageA(await n.read(e)),r.trace("Stage 0 - Responder received first message."),_h(u.re,r),r.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(u.writeMessageB(d),e),r.trace("Stage 1 - Responder sent the second handshake message with signed payload."),Bh(u.e,r),r.trace("Stage 2 - Responder waiting for third handshake message...");const f=u.readMessageC(await n.read(e));r.trace("Stage 2 - Responder received the message, finished handshake.");const h=await Mh(f,u.rs,c),[g,m]=u.ss.split();return Dh(g,m,r),{payload:h,encrypt:y=>m.encryptWithAd(Xr,y),decrypt:(y,w)=>g.decryptWithAd(Xr,y,w)}}class kx{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,r={}){const{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=r,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");const c=s??ux;this.crypto=fx(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?hx(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Me(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[Ug]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,r){const n=e.log?.newScope("noise")??this.log,o=dd(e,{lengthEncoder:ys,lengthDecoder:bs,maxDataLength:Qn}),s=await this.performHandshakeInitiator(o,this.components.privateKey,n,r?.remotePeer?.publicKey,r),i=Aa(s.payload.identityKey);return{connection:bd(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:tn(i),streamMuxer:r?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;const r=this.components.upgrader.getStreamMuxers();if(r!=null)for(const n of e){const o=r.get(n);if(o!=null)return o}if(e.length)throw new Bg("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,r){const n=e.log?.newScope("noise")??this.log,o=dd(e,{lengthEncoder:ys,lengthDecoder:bs,maxDataLength:Qn}),s=await this.performHandshakeResponder(o,this.components.privateKey,n,r?.remotePeer?.publicKey,r),i=Aa(s.payload.identityKey);return{connection:bd(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:tn(i),streamMuxer:r?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,r,n,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Ex({connection:e,privateKey:r,remoteIdentityKey:o,log:n.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}async performHandshakeResponder(e,r,n,o,s){let i;const a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Ax({connection:e,privateKey:r,remoteIdentityKey:o,log:n.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}}function Cx(t={}){return e=>new kx(e,t)}const Ix="termdock-e2ee-v1",La=3600*1e3,vd=512*1024*1024,Ba=4*1024*1024,$o=()=>{},Ks=Object.assign($o,{enabled:!1,error:$o,trace:$o,newScope:()=>Ks});Object.freeze(Ks);async function Uh(){const t=await zb();return{privateKey:t,peerId:tn(t.publicKey).toString()}}function Rx(t){return btoa(String.fromCharCode(...Gb(t.privateKey)))}function xd(t){if(t.length>512||!/^[A-Za-z0-9+/]+={0,2}$/.test(t))throw new Error("Invalid identity encoding");const e=Vb(Uint8Array.from(atob(t),r=>r.charCodeAt(0)));if(e.type!=="Ed25519")throw new Error("Only Ed25519 device identities are supported");return{privateKey:e,peerId:tn(e.publicKey).toString()}}class $h{constructor(e=$o){this.consumed=e}consumed;chunks=[];size=0;ended=!1;error;wake;push(e){if(this.ended)throw this.error??new Error("Byte stream closed");if(this.size+e.byteLength>Ba)throw new Error("Secure stream buffer limit exceeded");this.chunks.push(e.slice()),this.size+=e.byteLength,this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.chunks.shift();if(e)this.size-=e.byteLength,yield e,this.consumed();else{if(this.ended)return;await new Promise(r=>{this.wake=r})}}}}class Tx extends Rh{constructor(e,r){super({log:Ks,direction:r?"outbound":"inbound",maxReadBufferLength:Ba,maxWriteBufferLength:Ba}),this.duplex=e,this.finished=e.sink(this.outgoing).catch(n=>{this.abort(rn(n))}),this.readTransport()}duplex;outgoing=new $h(()=>this.onMuxerDrain());finished;async readTransport(){try{for await(const e of this.duplex.source)this.onData(e.slice());this.onTransportClosed()}catch(e){this.onTransportClosed(rn(e))}}sendData(e){return this.outgoing.push(e.subarray()),{sentBytes:e.byteLength,canSendMore:!1}}sendReset(e){this.outgoing.end(e),this.duplex.close?.(e)}sendPause(){}sendResume(){}async close(){this.outgoing.end(),this.duplex.close?.(),this.onTransportClosed(),await this.finished}}function rn(t){return t instanceof Error?t:new Error("Secure transport failed")}class Px extends Error{code="E2EE_REHANDSHAKE_REQUIRED";constructor(){super("Encrypted connection lifetime reached; establish a new handshake without replaying pending input")}}function Nx(t){const e=t?.maxAgeMs??La,r=t?.maxBytesPerDirection??vd;if(!Number.isSafeInteger(e)||e<=0||e>La||!Number.isSafeInteger(r)||r<=0||r>vd)throw new Error("Encrypted connection limits cannot exceed the production maximum");return{maxAgeMs:e,maxBytesPerDirection:r}}async function Lx(t){const{identity:e,duplex:r,initiator:n,targetPinnedPeerId:o,signal:s}=t,i=Nx(t.limits);if(typeof Reflect.get(Promise,"withResolvers")!="function"||typeof globalThis.crypto?.getRandomValues!="function")throw new Error("End-to-end encryption requires Node.js 22+ or a modern browser with Promise.withResolvers and secure random support");if(n&&!o)throw new Error("A pinned target identity is required");const a=o?Jb(o):void 0;if(a&&a.type!=="Ed25519")throw new Error("Only Ed25519 target identities are supported");if(e.peerId!==tn(e.privateKey.publicKey).toString())throw new Error("Local identity mismatch");if(s?.aborted)throw s.reason??new Error("Connection aborted");const c=new Tx(r,n),l=new AbortController,d=setTimeout(()=>{const h=new Error("Encrypted handshake timed out");l.abort(h),c.abort(h)},15e3),u=()=>{l.abort(s?.reason),c.abort(rn(s?.reason))};s?.addEventListener("abort",u,{once:!0}),c.addEventListener("close",()=>s?.removeEventListener("abort",u),{once:!0});const f=Cx({crypto:Nh,prologueBytes:new TextEncoder().encode(Ix)})({privateKey:e.privateKey,peerId:tn(e.privateKey.publicKey),logger:{forComponent:()=>Ks},upgrader:{getStreamMuxers:()=>new Map}});try{const h=await(n?f.secureOutbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}):f.secureInbound(c,{remotePeer:a,signal:l.signal,skipStreamMuxerNegotiation:!0}));if(h.remotePeer.type!=="Ed25519")throw new Error("Unsupported remote identity");return{authenticatedPeerId:h.remotePeer.toString(),duplex:Bx(h.connection,i)}}catch(h){throw c.abort(rn(h)),h}finally{clearTimeout(d),s?.removeEventListener("abort",u)}}function Bx(t,e){const r=new $h,n=performance.now(),o=Date.now();let s=0,i=0,a;const c=()=>(a??=new Px,r.end(a),t.abort(a),a),l=setTimeout(c,e.maxAgeMs);typeof l=="object"&&l.unref?.();const d=(f,h)=>{if(a)throw a;if(Math.max(performance.now()-n,Date.now()-o)>=e.maxAgeMs||f+h>=e.maxBytesPerDirection)throw c()};t.addEventListener("message",f=>{try{d(i,f.data.byteLength),i+=f.data.byteLength,r.push(f.data.subarray())}catch(h){t.abort(rn(h))}}),t.addEventListener("close",f=>{clearTimeout(l),r.end(f.error)},{once:!0});let u=!1;return{source:r,async sink(f){if(u)throw new Error("Secure sink already consumed");u=!0;try{for await(const h of f)d(s,h.byteLength),s+=h.byteLength,t.send(h)||await t.onDrain()}catch(h){throw t.abort(rn(h)),h}},close(f){f?t.abort(f):t.close()}}}const Hh=1012,qh="Encrypted transport renewed";class Dc{constructor(e=64){this.limit=e}limit;items=[];wake;ended=!1;error;push(e){if(this.ended)throw new Error("Channel closed");if(this.items.length>=this.limit)throw this.end(new Error("Channel queue exceeded")),this.error;this.items.push(e),this.wake?.()}end(e){this.ended=!0,this.error??=e,this.wake?.()}async*[Symbol.asyncIterator](){for(;;){if(this.error)throw this.error;const e=this.items.shift();if(e!==void 0){yield e;continue}if(this.ended)return;await new Promise(r=>{this.wake=r}),this.wake=void 0}}}const xi=2*1024*1024,_x=new TextEncoder,Dx=new TextDecoder("utf-8",{fatal:!0});class Ox{constructor(e){this.duplex=e;const r=this;this.done=e.sink((async function*(){for await(const n of r.outgoing)try{yield n}finally{r.outgoingBytes-=n.byteLength}})()),this.done.catch(n=>this.close(n instanceof Error?n:new Error("Transport failed")))}duplex;outgoing=new Dc(256);outgoingBytes=0;get hasPendingWrites(){return this.outgoingBytes>0}done;send(e){const r=_x.encode(JSON.stringify(e));if(r.length>xi)throw new Error("Record too large");const n=new Uint8Array(r.length+4);if(new DataView(n.buffer).setUint32(0,r.length),n.set(r,4),this.outgoingBytes+n.byteLength>4*1024*1024)throw new Error("Record queue byte budget exceeded");this.outgoingBytes+=n.byteLength;try{this.outgoing.push(n)}catch(o){throw this.outgoingBytes-=n.byteLength,o}}close(e){this.outgoing.end(e),this.duplex.close?.(e)}async*read(){let e=new Uint8Array(0);for await(const r of this.duplex.source){if(e.length+r.length>xi*2+8)throw new Error("Record buffer exceeded");const n=new Uint8Array(e.length+r.length);for(n.set(e),n.set(r,e.length),e=n;e.length>=4;){const o=new DataView(e.buffer,e.byteOffset,4).getUint32(0);if(o>xi||o===0)throw new Error("Invalid record size");if(e.length<o+4)break;const s=JSON.parse(Dx.decode(e.subarray(4,o+4)));if(!s||typeof s!="object"||typeof s.id!="string"||typeof s.type!="string")throw new Error("Invalid record");yield s,e=e.slice(o+4)}}if(e.length)throw new Error("Truncated record")}}function Kh(t){let e="";for(let r=0;r<t.length;r+=8192)e+=String.fromCharCode(...t.subarray(r,r+8192));return btoa(e)}function zh(t){const e=atob(t);return Uint8Array.from(e,r=>r.charCodeAt(0))}function Fx(t){const e=new Dc(64);t.binaryType="arraybuffer";const r=n=>{e.end(n),t.close(1e3)};return t.addEventListener("message",n=>{try{if(!(n.data instanceof ArrayBuffer)||n.data.byteLength>1024*1024)throw new Error("Invalid encrypted frame");e.push(new Uint8Array(n.data))}catch{r(new Error("Encrypted transport rejected frame"))}}),t.addEventListener("close",()=>e.end()),t.addEventListener("error",()=>e.end(new Error("Encrypted transport disconnected"))),{source:e,close:r,async sink(n){try{for await(const o of n)for(let s=0;s<o.length;s+=64*1024){const i=Date.now();for(;t.bufferedAmount>256*1024;){if(t.readyState!==1||Date.now()-i>15e3)throw new Error("Encrypted transport congested");await new Promise(a=>setTimeout(a,10))}if(t.readyState!==1)throw new Error("Encrypted transport closed");t.send(o.subarray(s,s+64*1024))}}catch(o){throw r(o instanceof Error?o:new Error("Encrypted transport failed")),o}}}}const Wh=8,Vh=128,Mx=5*1024*1024,jx=Vh+Wh+8,Ux=256,No=3e4,En=64*1024;function Mt(t){return t instanceof Error?t:new Error(String(t??"Secure connection closed"))}function Sd(t){if(!t.startsWith("/")||t.startsWith("//")||t.includes("#"))throw new Error("A local API path is required");return t}class Gh extends EventTarget{constructor(e,r,n){super(),this.url=e,this.transmit=r,this.disconnect=n}url;transmit;disconnect;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;binaryType="arraybuffer";bufferedAmount=0;protocol="termdock-e2ee-v1";extensions="";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;send(e){if(this.readyState!==1)throw new Error("Secure socket is not open");if(typeof e!="string"||new TextEncoder().encode(e).length>1024*1024)throw new Error("Unsupported socket payload");this.transmit(e)}close(e=1e3,r=""){this.readyState!==3&&(this.disconnect(),this.finish(e,r))}accept(e){if(this.readyState!==3)if(e.type==="ws-ready"){this.readyState=1;const r=new Event("open");this.dispatchEvent(r),this.onopen?.(r)}else if(e.type==="ws-data"&&typeof e.data=="string"){const r=new MessageEvent("message",{data:e.data});this.dispatchEvent(r),this.onmessage?.(r)}else e.type==="ws-close"?this.finish(typeof e.code=="number"?e.code:1e3,typeof e.reason=="string"?e.reason:""):e.type==="error"&&this.fail(Mt(e.error))}fail(e){if(this.readyState===3)return;const r=new Event("error");this.dispatchEvent(r),this.onerror?.(r),this.finish(1006,e.message)}finish(e,r){if(this.readyState===3)return;this.readyState=3;const n=new CloseEvent("close",{code:e,reason:r,wasClean:e===1e3});this.dispatchEvent(n),this.onclose?.(n)}}class $x{constructor(e,r,n){this.channel=e,this.identity=r,this.targetPeerId=n,this.read().catch(o=>this.close(Mt(o))),e.done.catch(o=>this.close(Mt(o)))}channel;identity;targetPeerId;establishedAt=performance.now();establishedWallTime=Date.now();lastInputAt=-1/0;pending=new Map;waiting=[];stopped=!1;closeReason;get canSwitchTransport(){return!this.channel.hasPendingWrites&&performance.now()-this.lastInputAt>=2e3&&![...this.pending.values()].some(e=>e.kind!=="socket")&&!this.waiting.some(e=>e.kind!=="socket")}get renewalDue(){return!this.stopped&&Math.max(performance.now()-this.establishedAt,Date.now()-this.establishedWallTime)>=La-5*6e4}get closed(){return this.stopped}hasCapacity(e){if(this.pending.size>=jx)return!1;const r=[...this.pending.values()].filter(n=>n.kind===e).length;return e==="http"?r<Wh:e==="socket"?r<Vh:!0}allocate(e){if(this.stopped)throw this.closeReason??new Error("Secure connection closed");const r=crypto.randomUUID(),n=new Dc(4);return this.pending.set(r,{queue:n,kind:e}),{id:r,queue:n}}reserve(e,r){return r?.aborted?Promise.reject(r.reason):this.stopped?Promise.reject(this.closeReason??new Error("Secure connection closed")):this.hasCapacity(e)?Promise.resolve(this.allocate(e)):this.waiting.length>=Ux?Promise.reject(new Error("连接繁忙,请稍后重试。")):new Promise((n,o)=>{const s=l=>{this.waiting=this.waiting.filter(d=>d!==c),c.cleanup(),o(l)},i=()=>s(r?.reason??new Error("Request aborted")),a=setTimeout(()=>s(new Error("连接等待超时,请重试。")),No),c={kind:e,resolve:n,reject:o,cleanup:()=>{clearTimeout(a),r?.removeEventListener("abort",i)}};this.waiting.push(c),r?.addEventListener("abort",i,{once:!0})})}dispatchWaiting(){if(!this.stopped)for(let e=0;e<this.waiting.length;){const r=this.waiting[e];if(!this.hasCapacity(r.kind)){e++;continue}this.waiting.splice(e,1),r.cleanup(),r.resolve(this.allocate(r.kind))}}async read(){try{for await(const e of this.channel.read()){const r=this.pending.get(e.id);r&&(r.socket?(r.socket.accept(e),(e.type==="ws-close"||e.type==="error")&&this.release(e.id)):(r.queue.push(e),(e.type==="end"||e.type==="error")&&(r.cancelUpload?.(),this.release(e.id))))}}finally{this.close(new Error("Secure connection closed"))}}release(e){this.pending.get(e)?.queue.end(),this.pending.delete(e),this.dispatchWaiting()}async request(e,r){const{id:n,queue:o}=await this.reserve("request"),s=setTimeout(()=>this.close(new Error("Secure connection timed out")),Math.max(1e3,Math.min(No,r?.timeoutMs??No)));try{if(this.stopped)throw this.closeReason;this.channel.send({...e,id:n});const i=(await o[Symbol.asyncIterator]().next()).value;if(!i)throw new Error("Secure request closed");if(i.type==="error")throw Mt(i.error);return i}finally{clearTimeout(s),this.release(n)}}openSocket(e){Sd(e);let r;const n=new AbortController,o=new Gh(e,s=>{if(r){try{JSON.parse(s)?.type==="input"&&(this.lastInputAt=performance.now())}catch{}this.channel.send({id:r,type:"ws-data",data:s})}},()=>{if(n.abort(),r)try{this.channel.send({id:r,type:"ws-close"})}finally{this.release(r)}});return this.reserve("socket",n.signal).then(s=>{if(r=s.id,o.readyState===3){this.release(r);return}const i=this.pending.get(r);if(!i)throw new Error("Secure connection closed");i.socket=o,this.channel.send({id:r,type:"ws-open",path:e})}).catch(s=>{r&&this.release(r),o.fail(Mt(s))}),o}async fetch(e,r){const n=typeof location>"u"?"https://termdock.invalid":location.origin,o=e instanceof Request?e:null,s=new URL(o?.url??String(e),n);if(s.origin!==n)throw new Error("Only current-service API requests are supported");const i=new Request(s,o?new Request(o,r):r),a=i.method.toUpperCase(),c=Sd(s.pathname+s.search),l=s.pathname==="/api/terminal/fs/upload"?110*1024*1024:Mx;if(i.signal.aborted)throw i.signal.reason;const d={};i.headers.forEach((A,L)=>{["cookie","authorization","host","connection","content-length"].includes(L)||(d[L]=A)});const{id:u,queue:f}=await this.reserve("http",i.signal),h=f[Symbol.asyncIterator]();let g;const m=()=>{g?.cancel().catch(()=>{})},y=this.pending.get(u);if(!y)throw new Error("Secure connection closed");y.cancelUpload=m;const w=()=>{m();try{this.channel.send({id:u,type:"cancel"})}catch{}f.end(Mt(i.signal.reason??"Request aborted")),this.release(u)};i.signal.addEventListener("abort",w,{once:!0});const C=()=>{i.signal.removeEventListener("abort",w),this.release(u)},b=async()=>{let A;try{const L=(await Promise.race([h.next(),new Promise((I,R)=>{A=setTimeout(()=>R(new Error("服务响应超时,请重试。")),No)})])).value;if(!L)throw new Error("Secure response ended unexpectedly");if(L.type==="error")throw Mt(L.error);return L}finally{clearTimeout(A)}};try{if(i.signal.aborted)throw i.signal.reason;if(this.channel.send({id:u,type:"http",method:a,path:c,headers:d}),i.body){const E=i.body.getReader();g=E;let x=0,S=0;try{for(;;){const{done:T,value:B}=await E.read();if(T)break;if(x+=B.byteLength,x>l)throw new Error("Request body exceeds upload limit");for(let v=0;v<B.byteLength;v+=En){if(this.channel.send({id:u,type:"upload",data:Kh(B.subarray(v,v+En))}),(await b()).type!=="upload-ack")throw new Error("Invalid upload acknowledgement");S+=Math.min(En,B.byteLength-v),r?.onUploadProgress?.(S)}}}catch(T){throw await E.cancel(T).catch(()=>{}),T}finally{g=void 0,E.releaseLock()}}if(i.signal.aborted||this.stopped)throw new Error("Request aborted");this.channel.send({id:u,type:"upload-end"});const A=await b();if(A.type!=="head"||typeof A.status!="number")throw new Error("Invalid response header");const L=new Headers(A.headers);if(a==="HEAD"||[204,205,304].includes(A.status)){if((await b()).type!=="end")throw new Error("Unexpected response body");return C(),new Response(null,{status:A.status,headers:L})}let I=!1;const R=new ReadableStream({pull:async E=>{try{I&&(this.channel.send({id:u,type:"ack"}),I=!1);const x=await b();if(x.type==="end"){E.close(),C();return}if(x.type!=="chunk"||typeof x.data!="string")throw new Error("Invalid response chunk");const S=zh(x.data);if(S.length>En)throw new Error("Response chunk exceeds budget");E.enqueue(S),I=!0}catch(x){E.error(x),w(),C()}},cancel:()=>{w(),C()}},{highWaterMark:En,size:E=>E.byteLength});return new Response(R,{status:A.status,headers:L})}catch(A){throw w(),C(),A}}retire(){for(const e of this.pending.values())e.socket?.accept({id:"",type:"ws-close",code:Hh,reason:qh});this.close()}close(e=new Error("Secure connection closed")){if(!this.stopped){this.stopped=!0,this.closeReason=e;for(const r of this.waiting.splice(0))r.cleanup(),r.reject(e);for(const r of this.pending.values())r.queue.end(e),r.cancelUpload?.(),r.socket?.fail(e);this.pending.clear(),this.channel.close(e)}}}async function fr(t){const e=new URL(t.url);if(!["wss:","ws:"].includes(e.protocol))throw new Error("A WebSocket endpoint is required");if(e.protocol==="ws:"&&!["127.0.0.1","localhost","[::1]"].includes(e.hostname))throw new Error("Remote secure channels require WSS");const r=t.identity??await Uh(),n=(t.socketFactory??(c=>new WebSocket(c)))(e.href),o=Fx(n),s=new AbortController,i=setTimeout(()=>s.abort(new Error("Secure handshake timed out")),2e4),a=t.signal?AbortSignal.any([t.signal,s.signal]):s.signal;try{await new Promise((d,u)=>{if(a.aborted){u(a.reason);return}const f=()=>{a.removeEventListener("abort",m),n.removeEventListener("open",h),n.removeEventListener("error",g),n.removeEventListener("close",g)},h=()=>{f(),d()},g=()=>{f(),u(new Error("Secure transport unavailable"))},m=()=>{f(),u(a.reason)};a.addEventListener("abort",m,{once:!0}),n.addEventListener("open",h),n.addEventListener("error",g),n.addEventListener("close",g),n.readyState===1&&h()});const c=await Lx({identity:r,duplex:o,initiator:!0,targetPinnedPeerId:t.targetPeerId,signal:a}),l=new $x(new Ox(c.duplex),r,c.authenticatedPeerId);if(t.pairingCode)try{await l.request({type:"pair",code:t.pairingCode})}catch(d){throw l.close(Mt(d)),d}return l}catch(c){throw n.close(),c}finally{clearTimeout(i)}}const Ed=256*1024,Hx=1024*1024;class qx extends EventTarget{constructor(e,r,n=o=>new WebSocket(o)){if(super(),this.url=e,!/^[a-zA-Z0-9_.:-]{1,160}$/.test(r))throw new Error("Invalid target identity");this.upstream=n(e),this.deadline=setTimeout(()=>this.fail("Relay connection timed out"),2e4),this.upstream.addEventListener("message",o=>{if(this.readyState!==3)try{if(typeof o.data!="string"||new TextEncoder().encode(o.data).length>Ed)throw new Error("Invalid relay envelope");const s=JSON.parse(o.data);if(s.type==="ready"&&!this.requested){this.requested=!0,this.transmit({type:"open",streamId:this.streamId,serviceId:r});return}if(s.streamId!==this.streamId)return;if(s.type==="opened"&&this.readyState===0){clearTimeout(this.deadline),this.readyState=1;const l=new Event("open");this.dispatchEvent(l),this.onopen?.(l);return}if(s.type==="close"){this.finish(1001,"Relay route closed"),this.upstream.close();return}if(s.type!=="data"||this.readyState!==1||s.encoding!=="base64"||typeof s.payload!="string"||!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(s.payload))throw new Error("Invalid ciphertext relay frame");const i=zh(s.payload),a=this.binaryType==="blob"?new Blob([i]):i.buffer,c=new MessageEvent("message",{data:a});this.dispatchEvent(c),this.onmessage?.(c)}catch{this.fail("Relay protocol rejected frame")}}),this.upstream.addEventListener("close",o=>this.finish(o.code||1006,"Relay disconnected")),this.upstream.addEventListener("error",()=>this.fail("Relay transport unavailable"))}url;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;protocol="";extensions="";binaryType="arraybuffer";readyState=0;onopen=null;onmessage=null;onerror=null;onclose=null;upstream;streamId=crypto.randomUUID();requested=!1;deadline;get bufferedAmount(){return this.upstream.bufferedAmount}transmit(e){const r=JSON.stringify(e);if(this.upstream.readyState!==1||this.upstream.bufferedAmount+r.length>Hx||r.length>Ed)throw new Error("Relay unavailable or congested");this.upstream.send(r)}send(e){if(this.readyState!==1)throw new Error("Relay socket is not open");let r;if(ArrayBuffer.isView(e))r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else if(e instanceof ArrayBuffer)r=new Uint8Array(e);else throw new Error("Relay secure transport requires binary bytes");try{this.transmit({type:"data",streamId:this.streamId,encoding:"base64",payload:Kh(r)})}catch(n){throw this.fail("Relay transport congested"),n}}close(e=1e3,r=""){if(this.readyState!==3){try{this.requested&&this.transmit({type:"close",streamId:this.streamId})}catch{}this.finish(e,r),this.upstream.close()}}fail(e){if(this.readyState===3)return;const r=new Event("error");this.dispatchEvent(r),this.onerror?.(r),this.finish(1006,e),this.upstream.close()}finish(e,r){if(this.readyState===3)return;clearTimeout(this.deadline),this.readyState=3;const n=new CloseEvent("close",{code:e,reason:r,wasClean:e===1e3});this.dispatchEvent(n),this.onclose?.(n)}}function Xh(t){return e=>new qx(e,t)}function Kx(t){if(typeof t!="string"||!t.startsWith("/api/")||/[\\\x00-\x20\x7f#]/.test(t))return null;const e=t.split("?")[0];if(e.includes("//"))return null;try{const n=e.split("/").map((o,s)=>{if(s===0||o===""&&s===e.split("/").length-1)return o;const i=decodeURIComponent(o);if(!i||i==="."||i===".."||/[\\/\x00-\x1f\x7f]/.test(i)||/%[a-f0-9]{2}/i.test(i))throw new Error("Ambiguous API path");return i}).join("/");return n.endsWith("/")&&!n.startsWith("/api/terminal/fs/preview/")?null:n}catch{return null}}function zx(t){if(!("serviceWorker"in navigator))return()=>{};const e=new Set,r=n=>{if(n.source!==navigator.serviceWorker.controller||n.data?.type!=="termdock-secure-fetch"||n.ports.length!==1)return;const o=n.ports[0],{path:s,method:i,headers:a,body:c,expectedTargetPeerId:l,previewPrefix:d}=n.data;let u;try{u=new URL(s,location.origin)}catch{o.close();return}if(u.origin!==location.origin||!u.pathname.startsWith("/api/")||e.size>=32||typeof i!="string"||c!==void 0&&(!(c instanceof ArrayBuffer)||c.byteLength>5*1024*1024)){o.postMessage({type:"error"}),o.close();return}if(d!==void 0&&(typeof d!="string"||!d.endsWith("/")||!/^\/api\/terminal\/fs\/preview\/[a-f0-9]{32}\//.test(d)||!["GET","HEAD"].includes(i)||!Kx(u.pathname)?.startsWith(d))){o.postMessage({type:"error"}),o.close();return}const f=new AbortController;let h,g,m=!1,y=!1;const w=()=>{y||(y=!0,e.delete(w),f.abort(),h?.cancel().catch(()=>{}),o.close())};e.add(w),o.onmessage=C=>{if(C.data?.type==="cancel"){w();return}C.data?.type!=="pull"||m||y||(m=!0,(async()=>{if(!h){o.postMessage({type:"end"}),w();return}if(!g?.length){const A=await h.read();if(A.done){o.postMessage({type:"end"}),w();return}g=A.value}const b=g.slice(0,64*1024);g=g.subarray(b.length),o.postMessage({type:"chunk",data:b.buffer},[b.buffer])})().catch(()=>{o.postMessage({type:"error"}),w()}).finally(()=>{m=!1}))},o.onmessageerror=w,o.start(),(async()=>{const C=await t();if(y)return;if(l&&l!==C.targetPeerId)throw new Error("Preview target changed");const b=await C.fetch(u.pathname+u.search,{method:i,headers:a,body:["GET","HEAD"].includes(i)?void 0:c,signal:f.signal});if(y){await b.body?.cancel();return}h=b.body?.getReader();const A={};b.headers.forEach((L,I)=>{A[I]=L}),o.postMessage({type:"head",status:b.status,headers:A,bodyless:!h,targetPeerId:C.targetPeerId})})().catch(()=>{y||(o.postMessage({type:"error"}),w())})};return navigator.serviceWorker.addEventListener("message",r),()=>{navigator.serviceWorker.removeEventListener("message",r);for(const n of[...e])n()}}class Ye extends Error{constructor(){super("Device authorization expired or revoked")}}const Lo=new WeakMap;function dn(t,e={}){const r=Lo.get(t);if(!t.closed&&r&&(!r.settled||Date.now()-r.at<(e.maxAgeMs??1e3)))return r.pending;const n={at:Date.now(),settled:!1,pending:void 0},o=Wx(t,e.timeoutMs??5e3).then(s=>(n.at=Date.now(),n.settled=!0,s),s=>{throw Lo.get(t)===n&&Lo.delete(t),s});return n.pending=o,Lo.set(t,n),o}async function Wx(t,e){const r=await t.request({type:"permissions"},{timeoutMs:e});if(r.type!=="result"||typeof r.fullService!="boolean"||!Array.isArray(r.grants))throw new Error("Invalid permission response");const n=r.grants,o=r.fullService===!0;if(!o&&n.length===0)throw new Ye;return{fullService:o,grants:n,canManage:o&&n.length>0||n.some(s=>s.actions.includes("authorization.manage"))}}const Yh="termdock-secure-last-path:",Vx=10*6e4;function Zh(t){try{const e=JSON.parse(sessionStorage.getItem(Yh+t)||"null");return e&&typeof e.key=="string"&&Date.now()-e.at<Vx?e.key:void 0}catch{return}}function _a(t,e){try{sessionStorage.setItem(Yh+t,JSON.stringify({key:e,at:Date.now()}))}catch{}}function Jh(t,e,r=!1){return new Promise((n,o)=>{let s=0,i=0,a=!1,c,l;const d=new Set,u=()=>{clearTimeout(l);for(const h of d)h.abort();d.clear()},f=()=>{if(a)return;if(s>=t.length){i||(a=!0,u(),o(c||new Error("没有可用的连接路线。")));return}if(i>=(r?1:2))return;const h=t[s++],g=performance.now(),m=w=>{performance.getEntriesByName("termdock:connection-path").length>64&&performance.clearMeasures("termdock:connection-path"),performance.measure("termdock:connection-path",{start:g,end:performance.now(),detail:{path:h.key.startsWith("relay:")?"relay":"direct",ok:w}})},y=new AbortController;d.add(y),i++,h.run(y.signal).then(w=>{if(m(!0),d.delete(y),a){e(w);return}a=!0,u(),n({value:w,key:h.key})},w=>{if(m(!1),d.delete(y),i--,!a){if(c=w,w instanceof Ye){a=!0,u(),o(w);return}f()}}),clearTimeout(l),!r&&s<t.length&&(l=setTimeout(f,400))};f()})}const Gx=3,Xx=1/0,Yx=10,Qh="termdock-secure-workspace-limit";function ep(t){return t===1/0||Number.isInteger(t)&&t>=3&&t<=Yx}function Zx(){try{const t=localStorage.getItem(Qh),e=t==="unlimited"?1/0:Number(t);if(ep(e))return e}catch{}return navigator.maxTouchPoints>0?Gx:Xx}function Jx(t,e,r,n){if(t.length<=n)return t;const o=new Set(["root",e,...r?[r]:[]]),s=[...t].reverse().sort((i,a)=>a.touchedAt-i.touchedAt);for(const i of s){if(o.size>=n)break;o.add(i.key)}return t.filter(i=>o.has(i.key))}const tp="termdock-workspace",Da="termdock:workspace-visibility",Oa="termdock:workspace-activate";function zs(){return window.parent!==window&&location.pathname==="/workspace.html"&&new URLSearchParams(location.search).get(tp)||"root"}let Ad,kd;function Et(){try{if(window.parent===window)return window.__termdockWorkspaceHost;const t=window.parent.__termdockWorkspaceHost;return t&&t!==Ad&&(Ad=t,kd={...t,subscribe(e){const r=t.subscribe(e,zs()),n=o=>{o.persisted||r()};return window.addEventListener("pagehide",n),()=>{r(),window.removeEventListener("pagehide",n)}}}),t?kd:void 0}catch{return}}function Si(){const t=Et();return!t||t.snapshot().activeKey===zs()}function Ss(t,e=!0){return Et()?.activate(t,e)??!1}function Lr(t){Et()?.report(zs(),t)}const Fa="termdock-secure-workspace-session:",rp="termdock-secure-last-workspace";function Qx(){for(const t of["sessionStorage","localStorage"])try{const e=window[t].getItem(rp);if(e)return e}catch{}return null}function eS(t){for(const e of["sessionStorage","localStorage"])try{window[e].setItem(rp,t)}catch{}}function fC(t){if(t)try{const e=JSON.parse(localStorage.getItem(Fa+t)||"null");return localStorage.removeItem(Fa+t),e&&typeof e.sessionId=="string"&&Date.now()-e.at<6e4?e.sessionId:void 0}catch{return}}function tS(t){if(window.parent!==window||window.termdockDesktop)return;if(window.__termdockWorkspaceHost)return window.__termdockWorkspaceHost;let e={activeKey:"root",items:[{key:"root",service:t,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]};try{const u=Qx(),f=t&&u!==t.targetPeerId?qt().find(h=>h.targetPeerId===u):void 0;f?.targetPeerId&&(e={activeKey:f.targetPeerId,items:[...e.items,{key:f.targetPeerId,service:f,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()}]})}catch{}let r=Zx(),n=e.activeKey==="root"?"root":null;const o=new Map,s=new Map([["root",window]]),i=new Set,a=()=>{for(const u of[...o.keys()])u()},c=()=>{const u=Jx(e.items,e.activeKey,n,r),f=new Set(u.map(h=>h.key));e={...e,items:u};for(const[h,g]of o)g&&!f.has(g)&&o.delete(h);for(const h of s.keys())f.has(h)||s.delete(h);for(const h of i)f.has(h)||i.delete(h)},l=(u,f)=>{try{const h=f.document.createEvent("CustomEvent");if(h.initCustomEvent(Da,!1,!1,{active:e.activeKey===u}),f.dispatchEvent(h),e.activeKey===u){const g=f.document.createEvent("Event");if(g.initEvent("resize",!1,!1),f.dispatchEvent(g),i.delete(u)){const m=f.document.createEvent("Event");m.initEvent(Oa,!1,!1),f.dispatchEvent(m)}}else f.document.activeElement?.blur?.()}catch{}},d={snapshot:()=>e,subscribe:(u,f)=>(o.set(u,f),()=>{o.delete(u)}),present(u){n=u},retentionLimit:()=>r,setRetentionLimit(u){if(ep(u)){r=u;try{localStorage.setItem(Qh,u===1/0?"unlimited":String(u))}catch{}c(),a()}},activate(u,f=!0){const h=Ns(u);if(!h?.targetPeerId)return!1;const g=e.items.find(w=>w.service?.targetPeerId===h.targetPeerId),m=g?.key||h.targetPeerId,y=g?{...g,service:h,touchedAt:Date.now()}:{key:m,service:h,phase:"connecting",runningCount:0,reviewCount:0,touchedAt:Date.now()};e={activeKey:m,items:g?e.items.map(w=>w===g?y:w):[...e.items,y]},c(),eS(h.targetPeerId),f&&i.add(m),a();for(const[w,C]of s)l(w,C);return!0},report(u,f){const h=e.items.find(m=>m.key===u);if(!h||f.service&&h.service?.targetPeerId&&f.service.targetPeerId!==h.service.targetPeerId)return;const g={...h,...f};JSON.stringify(g)!==JSON.stringify(h)&&(e={...e,items:e.items.map(m=>m===h?g:m)},a())},attach(u,f){f&&e.items.some(h=>h.key===u)?(s.set(u,f),l(u,f)):s.delete(u)},focusSession(u,f){const h=qt().find(m=>m.targetPeerId===u);if(!h)return!1;try{localStorage.setItem(Fa+u,JSON.stringify({sessionId:f,at:Date.now()}))}catch{return!1}d.activate(h,!1);const g=s.get(e.activeKey);if(g){const m=g.document.createEvent("CustomEvent");m.initCustomEvent("termdock:workspace-session",!1,!1,null),g.dispatchEvent(m)}return!0}};return window.__termdockWorkspaceHost=d,d}let Ei;async function Je(){return Ei||(Ei=(async()=>{const t=await new Promise((e,r)=>{const n=indexedDB.open("termdock-device-identity",1);n.onupgradeneeded=()=>n.result.createObjectStore("keys"),n.onsuccess=()=>e(n.result),n.onerror=()=>r(n.error)});try{const e=await new Promise((o,s)=>{const i=t.transaction("keys").objectStore("keys").get("identity");i.onsuccess=()=>o(i.result),i.onerror=()=>s(i.error)});if(e)return xd(e);const r=await Uh();let n=r;return await new Promise((o,s)=>{const i=t.transaction("keys","readwrite"),a=i.objectStore("keys"),c=a.get("identity");c.onsuccess=()=>{typeof c.result=="string"?n=xd(c.result):a.put(Rx(r),"identity")},i.oncomplete=()=>o(),i.onerror=()=>s(i.error)}),n}finally{t.close()}})()),Ei}const zt="termdock:secure-state";let J,Br,Be,nn="direct",Ho=!1,Cd=0,qo=!1,Id=-1/0;const on=globalThis.fetch.bind(globalThis);function ne(){return jr()}function An(){return J}function rS(){return Be}function np(){J?.close(),Be?.close(),J=void 0,Be=void 0}async function op(){const t=await on("/api/auth/status",{signal:AbortSignal.timeout(5e3)});if(!t.ok)throw new Error("Failed to query auth status");return t.json()}async function nS(){if(ne()){await nt();return}if((await op()).enabled)return;const t=await on("/api/auth/open/parameters",{cache:"no-store"});if(!t.ok)throw new Error("Open service unavailable");const{serviceIdentity:e}=await t.json();if(typeof e!="string"||!e)throw new Error("Invalid service identity");await Xe({url:location.origin,targetPeerId:e,serviceName:location.hostname})}async function oS(t,e){const{startPasswordBootstrap:r,finishPasswordBootstrap:n}=await Wt(async()=>{const{startPasswordBootstrap:l,finishPasswordBootstrap:d}=await import("./passwordBootstrap-P6Gv34b5.js");return{startPasswordBootstrap:l,finishPasswordBootstrap:d}},__vite__mapDeps([0,1,2,3])),o=l=>t===location.origin?l:new URL(l,t).href,s=async(l,d)=>{const u=await on(o(l),{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(15e3),...d?{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)}:{}});if(!u.ok)throw new Error(u.status===429?"尝试次数较多,请稍后再试。":u.status===401?"密码不正确,请重新输入。":"暂时无法登录这台服务,请稍后重试。");return u.json()},{saltHex:i}=await s("/api/auth/password/parameters"),a=await Je(),c=await r(e,i);try{const l=await s("/api/auth/password/start",{startLoginRequest:c.startLoginRequest,clientIdentity:a.peerId});let d;try{d=await n(c,l,{clientIdentity:a.peerId,origin:location.origin})}catch{throw new Error("密码不正确,或服务身份无法验证。请检查后重试。")}return await s("/api/auth/password/finish",{attemptId:d.attemptId,finishLoginRequest:d.finishLoginRequest}),{url:t,targetPeerId:d.serverIdentity,serviceName:new URL(t).host,serviceOrigin:t}}finally{c.passwordKey=""}}async function Oc(t,e){const r=ne();if(r&&(r.serviceOrigin||r.url)===t)return await Ma(r,e),r;try{return await oS(t,e)}catch(n){if(!(n instanceof TypeError)&&!(n instanceof DOMException))throw n;const o=(await Ze()).find(i=>i.targetPeerId&&(i.serviceOrigin||i.url)===t);if(!o?.targetPeerId)throw new Error("暂时连不上这台服务,请检查地址和网络。");const s={...o,targetPeerId:o.targetPeerId,serviceName:o.label};return await Ma(s,e),s}}async function Ma(t,e){const r=await sp(t),{startPasswordBootstrap:n,finishPasswordBootstrap:o}=await Wt(async()=>{const{startPasswordBootstrap:i,finishPasswordBootstrap:a}=await import("./passwordBootstrap-P6Gv34b5.js");return{startPasswordBootstrap:i,finishPasswordBootstrap:a}},__vite__mapDeps([0,1,2,3]));let s;try{const i=await r.request({type:"password-parameters"},{timeoutMs:5e3});s=await n(e,String(i.saltHex));const a=await r.request({type:"password-start",startLoginRequest:s.startLoginRequest,origin:location.origin}),c=await o(s,a,{clientIdentity:(await Je()).peerId,origin:location.origin});if(c.serverIdentity!==t.targetPeerId)throw new Error("服务身份发生变化。");await r.request({type:"password-finish",attemptId:c.attemptId,finishLoginRequest:c.finishLoginRequest})}catch{throw new Error("暂时无法登录,请检查目标服务密码与入口授权后重试。")}finally{s&&(s.passwordKey=""),r.close()}}async function sS(t){try{const e=ne(),r=e?.serviceOrigin||location.origin,n=await Oc(r,t);return await Xe({...n,routes:e?.routes,serviceName:e?.serviceName||n.serviceName}),Response.json({ok:!0})}catch(e){return Response.json({error:e instanceof Error?e.message:"暂时无法登录,请重试。",code:"INVALID_PASSWORD"},{status:401})}}async function Rd(t,e){const r=_e(t),n=(await Ze()).find(i=>(i.serviceOrigin||i.url)===r&&i.targetPeerId);if(e===void 0&&n?.targetPeerId)try{return await Xe({...n,targetPeerId:n.targetPeerId,serviceName:n.label}),{}}catch(i){if(!(i instanceof Ye))throw i}if(e!==void 0){const i=await Oc(r,e);if(n?.targetPeerId&&n.targetPeerId!==i.targetPeerId)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Xe({...i,routes:n?.routes,serviceName:n?.label||i.serviceName}),{}}const o=await on(new URL("/api/auth/open/parameters",r).href,{credentials:"omit",cache:"no-store",signal:AbortSignal.timeout(1e4)}).catch(()=>{throw new Error("暂时连不上这台服务,请检查地址和网络后重试。")});if(o.status===403)return{passwordRequired:!0};if(!o.ok)throw new Error("这台服务暂时不可用,请稍后重试。");const{serviceIdentity:s}=await o.json();if(typeof s!="string"||!s)throw new Error("这不是可连接的 Termdock 服务。");if(n?.targetPeerId&&n.targetPeerId!==s)throw new Error("这台服务的身份已改变。请先移除旧记录,再重新添加。");return await Xe({url:r,targetPeerId:s,serviceName:n?.label||new URL(r).host,serviceOrigin:r}),{}}function hr(t){const e=[...t.routes||[]];if(t.entryServiceId&&t.entryServiceId!==t.targetPeerId&&e.unshift({url:t.url,targetPeerId:t.entryServiceId}),!e.length&&t.routes===void 0)try{const r=JSON.parse(localStorage.getItem(sc)||"null");r&&r.targetPeerId!==t.targetPeerId&&new URL(r.url).host===new URL(t.url).host&&e.push(r)}catch{}return e.flatMap((r,n)=>{try{return r.targetPeerId&&r.targetPeerId!==t.targetPeerId&&e.findIndex(o=>o.targetPeerId===r.targetPeerId)===n?[{url:_e(r.url),targetPeerId:r.targetPeerId}]:[]}catch{return[]}}).slice(0,4)}function fo(t){const e=hr(t),r=[t.serviceOrigin||t.url,...(t.routes||[]).slice(0,4).filter(o=>o.targetPeerId===t.targetPeerId).map(o=>o.url)],n=new Set;for(const o of r)try{const s=_e(o);e.some(i=>i.url===s)||n.add(s)}catch{}return[...n]}function pr(t){const e=new URL("/api/federation/secure",_e(t));return e.protocol=e.protocol==="https:"?"wss:":"ws:",e.href}async function Vt(t,e){return fr({url:pr(t.url),targetPeerId:t.targetPeerId,identity:await Je(),signal:e?AbortSignal.any([e,AbortSignal.timeout(5e3)]):AbortSignal.timeout(5e3)})}async function sp(t,e){const r=await Je(),n=fo(t).map(i=>({key:`direct:${i}`,run:a=>fr({url:pr(i),targetPeerId:t.targetPeerId,identity:r,signal:AbortSignal.any([a,AbortSignal.timeout(8e3),...e?[e]:[]])})}));for(const i of hr(t))n.push({key:`relay:${i.targetPeerId}:${i.url}`,run:async a=>{e&&(a=AbortSignal.any([a,e]));const c=[J,Be].find(d=>d&&!d.closed&&d.targetPeerId===i.targetPeerId),l=c||await Vt(i,a);try{if(a.aborted)throw a.reason;const d=await l.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(a.aborted)throw a.reason;if(typeof d.routeToken!="string")throw new Error("入口未允许此设备连接该服务。");const u=new URL(pr(i.url));return u.pathname="/api/federation/relay",u.searchParams.set("routeToken",d.routeToken),await fr({url:u.href,targetPeerId:t.targetPeerId,identity:r,socketFactory:Xh(t.targetPeerId),signal:AbortSignal.any([a,AbortSignal.timeout(8e3)])})}finally{c||l.close()}}});const o=Zh(t.targetPeerId);n.sort((i,a)=>+(a.key===o)-+(i.key===o));const s=await Jh(n,i=>i.close());return _a(t.targetPeerId,s.key),s.value}async function iS(t,e){const r=await sp(t,e),n=()=>r.close();e.addEventListener("abort",n,{once:!0});try{if(e.aborted||(await dn(r,{timeoutMs:3e3}),e.aborted))throw e.reason;return r}catch(o){throw r.close(),o}finally{e.removeEventListener("abort",n)}}async function Xe(t,e={}){const r=J,n=Be,o=await Je(),s=_e(t.serviceOrigin||t.url),i=(await Ze()).find(w=>w.targetPeerId===t.targetPeerId),a={...t,routes:t.routes??i?.routes},c=hr(a),l=fo(a);let d,u,f=t.pairingCode,h="direct";const g=new Set,m=new Map,y=async(w,C)=>{if(r&&!r.closed&&r.targetPeerId===w.targetPeerId)return r;if(n&&!n.closed&&n.targetPeerId===w.targetPeerId)return n;const b=m.get(w.targetPeerId);if(b&&!b.closed)return b;const A=await Vt(w,C);return g.add(A),m.set(w.targetPeerId,A),A};try{if(t.routeCode&&t.entryServiceId){const E=c.find(T=>T.targetPeerId===t.entryServiceId);if(!E)throw new Error("邀请缺少入口信息。");if((await(await y(E)).request({type:"route-pair",code:t.routeCode})).serviceId!==t.targetPeerId)throw new Error("邀请的目标服务不一致。");t.routeOnly&&await At({id:t.targetPeerId,url:s,label:t.serviceName||new URL(s).host,targetPeerId:t.targetPeerId,serviceOrigin:s,routes:c})}const w=[],C=async(E,x)=>{const S=()=>E.close();x.addEventListener("abort",S,{once:!0});try{if(x.aborted||(await dn(E),x.aborted))throw x.reason}catch(T){throw E.close(),T}finally{x.removeEventListener("abort",S)}};for(const E of l)w.push({key:`direct:${E}`,run:async x=>{const S=await fr({url:pr(E),targetPeerId:t.targetPeerId,pairingCode:f,identity:o,signal:AbortSignal.any([x,AbortSignal.timeout(8e3)])});return f=void 0,await C(S,x),{client:S,path:"direct"}}});for(const E of c)w.push({key:`relay:${E.targetPeerId}:${E.url}`,run:async x=>{let S,T;try{if(S=await y(E,x),x.aborted)throw x.reason;const B=await S.request({type:"route-ticket",serviceId:t.targetPeerId},{timeoutMs:5e3});if(x.aborted)throw x.reason;if(typeof B.routeToken!="string"||!B.routeToken)throw new Error("入口未允许此设备连接该服务。");const v=new URL(pr(E.url));return v.pathname="/api/federation/relay",v.searchParams.set("routeToken",B.routeToken),T=await fr({url:v.href,targetPeerId:t.targetPeerId,pairingCode:f,identity:o,socketFactory:Xh(t.targetPeerId),signal:AbortSignal.any([x,AbortSignal.timeout(8e3)])}),f=void 0,await C(T,x),{client:T,entry:S,path:"relay"}}catch(B){throw T?.close(),S&&S!==n&&S!==r&&S.close(),B}}});const b=Zh(t.targetPeerId);w.sort((E,x)=>+(x.key===b)-+(E.key===b));const A=await Jh(w,E=>{E.client.close(),E.entry&&E.entry!==r&&E.entry!==n&&E.entry.close()},!!f);if(d=A.value.client,u=A.value.entry,h=A.value.path,e.renewIfCurrent){if(J!==e.renewIfCurrent||r!==e.renewIfCurrent||r.closed||!r.canSwitchTransport||ne()?.targetPeerId!==t.targetPeerId){d.close();for(const E of g)E!==Be&&E!==J&&E.close();return J??r}J=d,nn=h,Be=u,_a(t.targetPeerId,A.key),r.retire();for(const E of new Set([n,...g]))E&&E!==r&&E!==d&&E!==u&&E.close();return window.dispatchEvent(new Event(zt)),d}if(_a(t.targetPeerId,A.key),J!==r&&J&&!J.closed&&J.targetPeerId===t.targetPeerId){d.close();for(const E of g)E!==Be&&E.close();return J}h==="direct"&&new URL(s).host===location.host&&Ig(t.targetPeerId);const L=(await Ze()).find(E=>E.targetPeerId===t.targetPeerId||!E.targetPeerId&&(E.serviceOrigin||E.url)===s),I=L?.label||t.serviceName||new URL(s).host,R={url:s,targetPeerId:t.targetPeerId,serviceName:I,serviceOrigin:s,routes:a.routes??c};if(await(e.rememberOnly?Pg:At)({id:L?.id||t.targetPeerId,...R,label:I}),Mr!=="unpaired"&&Mr!==t.targetPeerId&&Et()&&Ss({id:L?.id||t.targetPeerId,...R,label:I})){d.close();for(const E of g)E!==r&&E!==n&&E.close();return r||d}Fu(R),J=d,nn=h,Be=u;for(const E of new Set([r,n,...g]))E&&E!==d&&E!==u&&E.close();return Mr!==t.targetPeerId?(location.reload(),new Promise(()=>{})):(window.dispatchEvent(new Event(zt)),d)}catch(w){d?.close();for(const C of g)C!==n&&C.close();throw w}}async function aS(){const t=J,e=ne();if(!(qo||Ho||Br||!t?.renewalDue||!t.canSwitchTransport||!e||performance.now()-Id<3e4)){Id=performance.now(),qo=!0;try{await Xe(e,{renewIfCurrent:t})}catch(r){console.debug("[connection] renewal deferred",{reason:r instanceof Error?r.message:"unknown"})}finally{qo=!1}}}async function cS(){const t=J,e=ne();if(Date.now()-Cd<6e4||qo||Ho||nn!=="relay"||!t||t.closed||!t.canSwitchTransport||!e?.serviceOrigin)return;Ho=!0,Cd=Date.now();let r;try{for(const o of fo(e))try{r=await fr({url:pr(o),targetPeerId:e.targetPeerId,identity:await Je(),signal:AbortSignal.timeout(3e3)}),await dn(r);break}catch(s){if(r?.close(),r=void 0,s instanceof Ye)throw s}if(!r||J!==t||!t.canSwitchTransport)return;const n=Be;J=r,r=void 0,Be=void 0,nn="direct",t.close(),n?.close(),window.dispatchEvent(new Event(zt))}catch(n){n instanceof Ye&&J===t&&(np(),window.dispatchEvent(new Event("auth:unauthorized")))}finally{r?.close(),Ho=!1}}function lS(){return nn}async function dS(t){return t?(t.throwIfAborted(),new Promise((e,r)=>{const n=()=>r(t.reason);t.addEventListener("abort",n,{once:!0}),nt().then(o=>{t.removeEventListener("abort",n),t.aborted?r(t.reason):e(o)},o=>{t.removeEventListener("abort",n),r(o)})})):nt()}async function nt(){if(J&&!J.closed){const e=J;return aS(),e}if(J=void 0,Br)return Br;const t=ne();if(!t)throw new Error("DEVICE_PAIRING_REQUIRED");return Br=Xe(t,{rememberOnly:!0}).catch(e=>{if(J&&!J.closed&&J.targetPeerId===t.targetPeerId)return J;throw e}).finally(()=>{Br=void 0}),Br}function uS(t){const e=new URL(t,location.href);if(J&&!J.closed)return J.openSocket(e.pathname+e.search);let r;const n=new Gh(t,o=>r?.send(o),()=>r?.close());return nt().then(o=>{n.readyState!==3&&(r=o.openSocket(e.pathname+e.search),r.onopen=()=>n.accept({type:"ws-ready",id:""}),r.onmessage=s=>n.accept({type:"ws-data",id:"",data:s.data}),r.onclose=s=>n.accept({type:"ws-close",id:"",code:s.code,reason:s.reason}),r.onerror=()=>n.fail(new Error("Encrypted connection unavailable")))}).catch(o=>n.fail(o)),n}function fS(){zx(nt),window.fetch=async(t,e)=>{const r=new URL(t instanceof Request?t.url:String(t),location.href);if(!r.pathname.startsWith("/api/"))return on(t,e);if(r.origin!==location.origin)throw new Error("Remote business API requires a paired encrypted service");if(r.pathname==="/api/meta")return on(t,e);if(r.pathname==="/api/auth/status"){if(!ne()){const s=await op();return Response.json({enabled:s.enabled,authenticated:!1})}try{const s=await dn(await nt());return Response.json({enabled:s.grants.length>0,authenticated:!0})}catch(s){if(s instanceof Ye)return Response.json({enabled:!0,authenticated:!1});throw s}}if(r.pathname==="/api/auth/login"){const i=await new Request(t instanceof Request?t:r.href,e).json();return sS(typeof i.password=="string"?i.password:"")}if(r.pathname==="/api/csrf-token")return Response.json({csrfToken:"encrypted-device-channel"});if(r.pathname==="/api/auth/logout")return J&&!J.closed&&await J.request({type:"logout"}),J?.close(),Be?.close(),J=void 0,Be=void 0,Cg(),location.reload(),Response.json({ok:!0});const n=e?.signal!==void 0?e.signal:t instanceof Request?t.signal:void 0,o=await dS(n);return t instanceof Request?o.fetch(t,e):o.fetch(r.pathname+r.search,e)}}async function hS(t){if(!t.targetPeerId)throw new Error("请先连接这台服务,再查看可中转的服务。");for(const e of fo({...t,targetPeerId:t.targetPeerId})){let r;const n={url:e,targetPeerId:t.targetPeerId};try{r=await Vt(n)}catch{continue}try{const o=await r.request({type:"route-targets"},{timeoutMs:5e3});if(!Array.isArray(o.items))throw new Error("入口服务需要更新后才能查看中转列表。");return{route:n,canManage:o.canManage===!0,items:o.items}}catch(o){throw o instanceof Error&&/UNKNOWN|UNSUPPORTED/i.test(o.message)?new Error("入口服务需要更新后才能查看中转列表。"):o}finally{r.close()}}throw new Error("暂时连不上中转入口,请检查地址和网络后重试。")}async function pS(t,e){const r=await Vt(t);try{const n=await r.request({type:"route-targets"},{timeoutMs:5e3}),o=(Array.isArray(n.items)?n.items:[]).find(c=>c.serviceId===e);if(!o)throw new Error("该服务已不可见,请刷新列表或请入口管理员授权。");if(!o.available)throw new Error("入口暂时无法中转到这台服务,请稍后重试。");const s=(await Ze()).find(c=>c.targetPeerId===o.serviceId),i=[t,...(s?.routes||[]).filter(c=>c.targetPeerId!==t.targetPeerId)];if(i.length>4)throw new Error("这台服务已保存 4 个备用连接,请先移除一个后重试。");if(!o.authorized){if(!n.canManage)throw new Error("请先让入口管理员授权此设备。");await r.request({type:"route-grant",serviceId:o.serviceId,subjectId:(await Je()).peerId})}const a=s?.serviceOrigin||s?.url||o.url||t.url;return{url:a,serviceOrigin:a,targetPeerId:o.serviceId,serviceName:s?.label||o.label||(o.url?new URL(o.url).host:`中转服务 ${o.serviceId.slice(0,8)}`),routes:i}}finally{r.close()}}async function gS(t,e){const r=await Vt(t);try{const n=await r.request({type:"route-access"},{timeoutMs:5e3}),o=(await Je()).peerId;return{canManage:n.canManage===!0,grants:(Array.isArray(n.grants)?n.grants:[]).filter(s=>s.subjectId===o&&s.targetServiceId===e)}}finally{r.close()}}async function mS(t,e,r){if(r!==void 0&&(await Oc(_e(e.url),r)).targetPeerId!==e.targetPeerId)throw new Error("入口服务的身份已改变,请重新连接并确认。");const n=await Vt(e);try{await n.request({type:"route-grant",serviceId:t.targetPeerId,subjectId:(await Je()).peerId,url:_e(t.serviceOrigin||t.url)})}finally{n.close()}}async function wS(t,e){const r=await Vt(e);try{const n=await r.request({type:"route-access"},{timeoutMs:5e3}),o=(await Je()).peerId,s=(Array.isArray(n.grants)?n.grants:[]).filter(i=>i.subjectId===o&&i.targetServiceId===t&&i.active);for(const i of s)await r.request({type:"route-revoke",grantId:i.id})}finally{r.close()}}async function ip(t,e){const r=await Vt(e);try{const n=await r.request({type:"route-invite-create",serviceId:t.targetPeerId});if(typeof n.routeCode!="string"||typeof n.expiresAt!="number")throw new Error("暂时无法生成备用连接邀请。");return{routeCode:n.routeCode,expiresAt:n.expiresAt}}finally{r.close()}}async function Ko(t,e){const r=(await Ze()).find(o=>o.id===t.id||t.targetPeerId&&o.targetPeerId===t.targetPeerId)||t;await At({...r,url:r.serviceOrigin||r.url,entryServiceId:void 0,routes:e});const n=ne();n&&n.targetPeerId===t.targetPeerId&&Fu({...n,url:n.serviceOrigin||n.url,entryServiceId:void 0,routes:e})}async function yS(t,e){const r=t.targetPeerId;if(!r)throw new Error("请先连接这台服务,再添加备用地址。");let n;try{n=_e(e)}catch{throw new Error("请输入有效的 HTTPS 地址,例如 https://电脑地址:9834。")}const o=async()=>(await Ze()).find(a=>a.targetPeerId===r)||t,s=a=>{const c=a.routes??hr({...a,targetPeerId:r});if(_e(a.serviceOrigin||a.url)===n||c.some(l=>_e(l.url)===n))throw new Error("这个地址已经在连接列表中。");if(c.length>=4)throw new Error("最多保存 4 个备用地址或入口,请先移除不再使用的连接。");return[...c,{url:n,targetPeerId:r}]};s(await o());let i;try{try{i=await fr({url:pr(n),targetPeerId:r,identity:await Je(),signal:AbortSignal.timeout(5e3)}),await dn(i)}catch(l){throw l instanceof Ye?new Error("这台服务尚未授权当前设备,请先恢复设备授权。"):new Error("无法验证这个地址。请确认能访问该地址、HTTPS 证书受信任,且运行的是同一台 Termdock 服务。")}const a=await o(),c=s(a);if(await Ko(a,c),ne()?.targetPeerId===r&&Mr===r&&(!J||J.closed)){const l=J,d=Be;J=i,i=void 0,Be=void 0,nn="direct",l?.close(),d?.close(),window.dispatchEvent(new Event(zt))}return c}finally{i?.close()}}async function Td(t,e){await Ma(t,e),await Xe({...t,pairingCode:void 0,routeCode:void 0})}function bS(t,e){return e.aborted?Promise.reject(e.reason):new Promise((r,n)=>{const o=()=>n(e.reason);e.addEventListener("abort",o,{once:!0}),t.then(r,n).finally(()=>e.removeEventListener("abort",o))})}function ap(){if(window.termdockDesktop||window.parent!==window)return;if(window.__termdockCollaboration)return window.__termdockCollaboration;const t=new Map;let e=[],r=!1;const n=l=>{const d=l.targetPeerId;if(ne()?.targetPeerId===d)return nt();const u=t.get(d);if(u)return u.then(h=>h.closed?(t.get(d)===u&&t.delete(d),n(l)):h);const f=iS({...l,targetPeerId:d},AbortSignal.timeout(12e3)).then(h=>{if(r||t.get(d)!==f)throw h.close(),new Error("服务连接已移除");return h}).catch(h=>{throw t.get(d)===f&&t.delete(d),h});return t.set(d,f),f},o=()=>{const l=ne(),d=qt();l&&!d.some(f=>f.targetPeerId===l.targetPeerId)&&d.push({...l,id:l.targetPeerId,label:l.serviceName||l.serviceOrigin||l.url});const u=new Set(d.map(f=>f.targetPeerId));for(const[f,h]of t)u.has(f)||(t.delete(f),h.then(g=>g.close()).catch(()=>{}));e=d.filter(f=>!!f.targetPeerId).map(f=>({origin:f.serviceOrigin||f.url,label:f.label,request:async(h,g="GET",m)=>{if(!/^\/collaboration-(?:federation|groups)(?:\/[^?#]*)?$/.test(h))throw new Error("无效的协作请求");const y=AbortSignal.timeout(18e3),w=await bS(n(f),y),C=new Headers({"Content-Type":"application/json"});if(g!=="GET"&&g!=="HEAD"){const L=await w.fetch("/api/csrf-token",{signal:y});if(!L.ok)throw new Error("无法读取目标服务的请求令牌");const I=await L.json();if(typeof I.csrfToken!="string")throw new Error("目标服务的请求令牌无效");C.set("X-XSRF-TOKEN",I.csrfToken)}const b=await w.fetch(`/api/terminal/operations${h}`,{method:g,headers:C,signal:y,...m===void 0?{}:{body:JSON.stringify(m)}}),A=b.status===204?void 0:await b.json();if(!b.ok)throw new Error(A?.error||"服务不可达或未授权协作访问");return A}}))},s=new Tg(()=>e),i={peers:l=>(o(),s.peers(l)),save:async(l,d)=>{o();const u=await s.save(l,d);return a(),u}},a=async()=>{r||document.hidden||!navigator.onLine||!ne()||(o(),!(e.length<2)&&await s.refresh().catch(()=>{}))};window.__termdockCollaboration=i;const c=window.setInterval(()=>{a()},2e3);return document.addEventListener("visibilitychange",a),window.addEventListener("online",a),window.addEventListener("pageshow",a),window.addEventListener("pagehide",l=>{if(!l.persisted){r=!0,clearInterval(c);for(const d of t.values())d.then(u=>u.close()).catch(()=>{});t.clear()}}),a(),i}function cp(){if(!window.termdockDesktop)try{if(window.parent===window)return ap();if(location.pathname==="/workspace.html"&&window.parent.location.origin===location.origin)return window.parent.__termdockCollaboration}catch{}}var Bo={},Pd;function vS(){if(Pd)return Bo;Pd=1;var t=wg();return Bo.createRoot=t.createRoot,Bo.hydrateRoot=t.hydrateRoot,Bo}var xS=vS();const SS=Du(xS);const lp=(...t)=>t.filter((e,r,n)=>!!e&&e.trim()!==""&&n.indexOf(e)===r).join(" ").trim();const ES=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const AS=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,n)=>n?n.toUpperCase():r.toLowerCase());const Nd=t=>{const e=AS(t);return e.charAt(0).toUpperCase()+e.slice(1)};var Ai={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const kS=t=>{for(const e in t)if(e.startsWith("aria-")||e==="role"||e==="title")return!0;return!1},CS=M.createContext({}),IS=()=>M.useContext(CS),RS=M.forwardRef(({color:t,size:e,strokeWidth:r,absoluteStrokeWidth:n,className:o="",children:s,iconNode:i,...a},c)=>{const{size:l=24,strokeWidth:d=2,absoluteStrokeWidth:u=!1,color:f="currentColor",className:h=""}=IS()??{},g=n??u?Number(r??d)*24/Number(e??l):r??d;return M.createElement("svg",{ref:c,...Ai,width:e??l??Ai.width,height:e??l??Ai.height,stroke:t??f,strokeWidth:g,className:lp("lucide",h,o),...!s&&!kS(a)&&{"aria-hidden":"true"},...a},[...i.map(([m,y])=>M.createElement(m,y)),...Array.isArray(s)?s:[s]])});const Pe=(t,e)=>{const r=M.forwardRef(({className:n,...o},s)=>M.createElement(RS,{ref:s,iconNode:e,className:lp(`lucide-${ES(Nd(t))}`,`lucide-${t}`,n),...o}));return r.displayName=Nd(t),r};const TS=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],dp=Pe("arrow-left",TS);const PS=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],NS=Pe("arrow-right",PS);const LS=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M11.68 2.009A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673c-.824-.85-1.678-1.731-2.21-3.348",key:"xaq59h"}],["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}]],BS=Pe("bell-dot",LS);const _S=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Fc=Pe("check",_S);const DS=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],OS=Pe("chevron-down",DS);const FS=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],gr=Pe("chevron-right",FS);const MS=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],up=Pe("copy",MS);const jS=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],fp=Pe("ellipsis",jS);const US=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],De=Pe("loader-circle",US);const $S=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],HS=Pe("monitor",$S);const qS=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],KS=Pe("pencil",qS);const zS=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],hp=Pe("plus",zS);const WS=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],Ws=Pe("server",WS);const VS=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],pp=Pe("smartphone",VS);const GS=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],XS=Pe("terminal",GS);const YS=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],ZS=Pe("x",YS);let Or=null;function JS(t){return!Or||!t?!1:(Or(t),!0)}function hC(t){Or=t;const e=r=>{const{text:n,nonce:o}=r.detail??{};!n||Or!==t||(t(n),r.stopImmediatePropagation(),o&&window.dispatchEvent(new CustomEvent("termdock-insert-reference-ack",{detail:{nonce:o,ok:!0}})))};return window.addEventListener("termdock-insert-reference",e,!0),()=>{Or===t&&(Or=null),window.removeEventListener("termdock-insert-reference",e,!0)}}const QS=/^[A-Za-z0-9_@%+=:,./-]$/;function eE(t){return Array.from(t,e=>(e.codePointAt(0)??0)>127||QS.test(e)?e:`\\${e}`).join("")}function tE(t,e){if(!e)return!1;try{const r=new URL(e.serviceOrigin||e.url);return r.origin===t&&/^(localhost|\[::1\]|127(?:\.\d{1,3}){3})$/.test(r.hostname)&&!(e.routes??[]).some(n=>n.targetPeerId!==e.targetPeerId)}catch{return!1}}function rE(t){const e=s=>s.target instanceof Element?s.target.closest("[data-termdock-terminal-dropzone]"):null,r=()=>!tE(location.origin,jr()),n=s=>{const i=e(s);!i||!r()||!s.dataTransfer?.types.includes("Files")||(s.preventDefault(),s.stopImmediatePropagation(),s.dataTransfer.dropEffect="copy",i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="remote")},o=s=>{const i=e(s),a=Array.from(s.dataTransfer?.files??[]);if(!i||!a.length||!r())return;s.preventDefault(),s.stopImmediatePropagation();const c=i.dataset.termdockTerminalDropzone??"";i.dataset.nativeFileDrag="true",i.dataset.nativeFileDropState="uploading",Wt(async()=>{const{uploadFiles:l}=await Promise.resolve().then(()=>yA);return{uploadFiles:l}},void 0).then(({uploadFiles:l})=>l("/tmp",a)).then(l=>{if(l.files.length!==a.length||l.files.some(d=>!d.path))throw new Error("Upload did not return every file path");delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState,t({sessionKey:c,paths:l.files.map(d=>d.path)})}).catch(l=>{i.dataset.nativeFileDropState="error",i.dispatchEvent(new CustomEvent("termdock:file-drop-error",{bubbles:!0,detail:l instanceof Error?l.message:"File upload failed"})),window.setTimeout(()=>{i.dataset.nativeFileDropState==="error"&&(delete i.dataset.nativeFileDrag,delete i.dataset.nativeFileDropState)},3e3)})};return window.addEventListener("dragover",n,!0),window.addEventListener("drop",o,!0),()=>{window.removeEventListener("dragover",n,!0),window.removeEventListener("drop",o,!0)}}function gp(){return typeof window>"u"?null:window.termdockDesktop??null}const ki=new Set;let Ld=!1;function pC(t){const e=gp();if(!e)return()=>{};if(ki.add(t),!Ld){const r=n=>{if(!JS(n.paths.map(eE).join(" ")+" "))for(const o of ki)o(n)};rE(r),e.onNativeFileDrop(r),Ld=!0}return()=>{ki.delete(t)}}function mp(t=navigator.userAgent,e=navigator.maxTouchPoints){const r=/iPad/.test(t)||/Macintosh/.test(t)&&e>1?"iPad":/iPhone/.test(t)?"iPhone":/Android/.test(t)?"Android":/Windows/.test(t)?"Windows":/Macintosh|Mac OS X/.test(t)?"Mac":/Linux/.test(t)?"Linux":"设备",n=/Electron/.test(t)?"Termdock":/Edg\//.test(t)?"Edge":/Firefox|FxiOS/.test(t)?"Firefox":/Chrome|CriOS/.test(t)?"Chrome":/Safari/.test(t)?"Safari":"浏览器";return`${r} · ${n}`}let nE;function oE(){return nE??=(async()=>{const t=navigator.userAgent,[e,r]=mp().split(" · "),n=/(?:Edg|Firefox|FxiOS|Chrome|CriOS|Version)\/([\d.]+)/g,o=[...t.matchAll(n)],s=/(?:CPU (?:iPhone )?OS |Mac OS X |Android )([\d._]+)/.exec(t)?.[1]?.replaceAll("_","."),i={system:`${e}${s?` ${s}`:""}`,client:`${r}${o.length?` ${o.at(-1)[1]}`:""}`,mode:matchMedia("(display-mode: standalone)").matches||navigator.standalone?"已安装的网页应用":"网页"},a=gp();if(a){i.mode="桌面客户端";const l=/Electron\/([\d.]+)/.exec(t)?.[1];i.client=l?`Termdock(Electron ${l})`:"Termdock";try{Object.assign(i,await a.deviceInfo?.())}catch{}return i}const c=navigator.userAgentData;try{const l=await c?.getHighEntropyValues(["model","architecture","bitness","platformVersion"]);typeof l?.model=="string"&&l.model&&(i.model=l.model),typeof l?.architecture=="string"&&l.architecture&&(i.arch=`${l.architecture}${l.bitness?` ${l.bitness} 位`:""}`)}catch{}return i})()}function sE({service:t,onBusyChange:e,onConnect:r,onConnectWithPassword:n}){const[o,s]=M.useState(),[i,a]=M.useState(!0),[c,l]=M.useState(!1),[d,u]=M.useState(""),[f,h]=M.useState(0),[g,m]=M.useState(),[y,w]=M.useState("");M.useEffect(()=>{let A=!1;return a(!0),u(""),s(void 0),hS(t).then(L=>{A||s(L)}).catch(L=>{A||u(L instanceof Error?L.message:"暂时无法读取中转列表,请重试。")}).finally(()=>{A||a(!1)}),()=>{A=!0}},[t.id,t.url,f]);const C=async A=>{if(!c){l(!0),e(!0),u("");try{await A()}catch(L){u(L instanceof Error?L.message:"暂时无法连接,请重试。")}finally{l(!1),e(!1)}}},b=async A=>{const L=await pS(o.route,A.serviceId);try{await r(L)}catch(I){if(!(I instanceof Ye))throw I;m(L)}};return p.jsxs("div",{className:"service-form",children:[g?p.jsxs("form",{className:"service-form",onSubmit:A=>{A.preventDefault(),C(async()=>{try{await n?.(g,y)}finally{w("")}})},children:[p.jsxs("p",{className:"service-help",children:["已通过“",t.label,"”连接到“",g.serviceName,"”。请登录目标服务,完成此设备的访问授权。"]}),n?p.jsxs(p.Fragment,{children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"目标服务密码"}),p.jsx("input",{type:"password",autoFocus:!0,required:!0,autoComplete:"current-password",value:y,disabled:c,onChange:A=>w(A.target.value)})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:c||!y,children:c?"正在登录…":"登录并连接"})]}):p.jsx("p",{className:"service-help",children:"请让目标服务管理员邀请此设备后再连接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>{m(void 0),w(""),u(""),h(A=>A+1)},children:"返回中转列表"})]}):p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["通过“",t.label,"”连接下方服务。",o?.canManage?"选择未授权的服务会授权此设备使用该中转。":"这里只显示已授权给此设备的中转。","目标服务会单独验证访问权限。"]}),i?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在读取可中转的服务…"]}):o&&p.jsxs("div",{className:"service-list",children:[o.items.map(A=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:c||!A.available,onClick:()=>{C(()=>b(A))},children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ws,{size:19})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:A.label||(A.url?new URL(A.url).host:`中转服务 ${A.serviceId.slice(0,8)}`)}),p.jsx("span",{className:"service-description",children:A.available?A.authorized?"已获中转授权 · 连接":"授权此设备并连接":"中转暂不可用"})]}),p.jsx(gr,{size:16})]},A.serviceId)),o.items.length===0&&p.jsx("p",{className:"service-empty",children:o.canManage?"暂无可中转的服务。可在本机 Mac 客户端连接目标服务,或在目标服务的“备用连接”中启用本入口。":"暂无已授权的中转服务,请让入口管理员分享备用连接邀请。"})]}),c&&p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在授权并连接目标服务…"]}),!i&&p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:c,onClick:()=>h(A=>A+1),children:"刷新列表"})]}),d&&p.jsx("p",{className:"service-error",role:"alert",children:d})]})}const ja="#termdock-invite=";function wp(t){const e=new URL(t.entryUrl);e.hash="",e.search="",e.pathname="/";const r=new TextEncoder().encode(JSON.stringify(t));return e.hash=ja.slice(1)+btoa(String.fromCharCode(...r)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.href}function Es(t){const e=new URL(t);if(!["https:","http:"].includes(e.protocol)||!e.hash.startsWith(ja))throw new Error("这不是有效的 Termdock 邀请链接");const r=e.hash.slice(ja.length);if(r.length>8192)throw new Error("邀请链接过长");let n;try{const i=r.replace(/-/g,"+").replace(/_/g,"/");n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i),a=>a.charCodeAt(0))))}catch{throw new Error("邀请链接不完整,请重新复制")}if(n.v!==1||typeof n.serviceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(n.serviceId)||n.routeOnly!==!0&&(typeof n.code!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(n.code)))throw new Error("邀请信息无效或版本不兼容");const o=new URL(n.entryUrl);if(o.origin!==e.origin||o.username||o.password||!["https:","http:"].includes(o.protocol))throw new Error("邀请地址与服务不一致");if(o.protocol==="http:"&&!["localhost","127.0.0.1","[::1]"].includes(o.hostname))throw new Error("远程邀请需要 HTTPS");if(n.entryServiceId!==void 0&&(typeof n.entryServiceId!="string"||!/^12D3KooW[1-9A-HJ-NP-Za-km-z]{44}$/.test(n.entryServiceId)))throw new Error("邀请入口身份无效");if(n.routeCode!==void 0&&(typeof n.routeCode!="string"||!/^[A-Za-z0-9_-]{32,128}$/.test(n.routeCode)||!n.entryServiceId))throw new Error("邀请入口权限无效");if(n.routeOnly===!0&&(!n.entryServiceId||!n.routeCode||n.code!==void 0))throw new Error("备用连接邀请不完整");let s=o.origin;if(n.serviceUrl!==void 0){const i=new URL(n.serviceUrl);if(!["https:","http:"].includes(i.protocol)||i.username||i.password)throw new Error("目标服务地址无效");s=n.entryServiceId&&n.entryServiceId!==n.serviceId?i.origin:o.origin}return{url:o.origin,targetPeerId:n.serviceId,pairingCode:n.code,...n.routeOnly===!0?{routeOnly:!0}:{},serviceOrigin:s,serviceName:typeof n.name=="string"?n.name.slice(0,120):void 0,entryServiceId:n.entryServiceId,routeCode:n.routeCode}}function iE({service:t,onBusyChange:e}){const r={...t,targetPeerId:t.targetPeerId,serviceName:t.label},[n,o]=M.useState(()=>t.routes??hr(r)),[s,i]=M.useState([]),[a,c]=M.useState(!0),[l,d]=M.useState(!1),[u,f]=M.useState(""),h=_=>{d(_),e(_)},[g,m]=M.useState(),[y,w]=M.useState(""),[C,b]=M.useState(""),[A,L]=M.useState(""),[I,R]=M.useState(!1),[E,x]=M.useState(),[S,T]=M.useState(),[B,v]=M.useState(!1);M.useEffect(()=>{let _=!1;return Ze().then(D=>{_||i(D.filter(F=>F.targetPeerId&&F.targetPeerId!==t.targetPeerId))}).catch(()=>{_||f("暂时无法读取可用服务。")}).finally(()=>{_||c(!1)}),()=>{_=!0}},[t.targetPeerId]);const k=_=>s.find(D=>D.targetPeerId===_.targetPeerId)?.label||new URL(_.url).host,P=async _=>{h(!0),f(""),L("");try{await _()}catch(D){const F=D instanceof Error?D.message:"";f(/AUTHORIZATION|DENIED/.test(F)?"当前设备没有入口管理权限。请让管理员分享备用连接邀请,或使用入口密码授权。":"暂时无法完成。请确认入口能连接目标服务,且目标地址、证书和授权有效。")}finally{h(!1)}},N=async(_,D)=>{const F={url:_.serviceOrigin||_.url,targetPeerId:_.targetPeerId};await P(async()=>{const H=await gS(F,r.targetPeerId);if(!H.grants.some(K=>K.active)){if(!H.canManage&&D===void 0){m(_);return}await mS(r,F,D)}const q=[...n.filter(K=>K.targetPeerId!==F.targetPeerId),F];await Ko(t,q),o(q),m(void 0),w("")})};if(S)return p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["把链接发给需要使用此备用连接的人。它只允许通过入口连接“",t.label,"”,对方仍需获得目标服务的访问权限。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用连接邀请"}),p.jsx("input",{readOnly:!0,value:S,onFocus:_=>_.target.select()})]}),p.jsxs("button",{type:"button",className:"service-button service-primary",onClick:()=>{navigator.clipboard.writeText(S).then(()=>v(!0)).catch(()=>f("无法自动复制,请长按链接复制。"))},children:[p.jsx(up,{size:16}),B?"已复制":"复制邀请链接"]}),p.jsx("button",{type:"button",className:"service-button service-secondary",onClick:()=>{T(void 0),v(!1)},children:"返回备用连接"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});if(g)return p.jsxs("form",{className:"service-form",onSubmit:_=>{_.preventDefault(),N(g,y).finally(()=>w(""))},children:[p.jsxs("p",{className:"service-help",children:["需要“",g.label,"”的管理员授权。若这是你的服务,可以使用它的密码;否则请管理员分享备用连接邀请。"]}),p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"入口服务密码"}),p.jsx("input",{type:"password",required:!0,value:y,onChange:_=>w(_.target.value),autoComplete:"current-password",disabled:l,autoFocus:!0})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||!y,children:l?"正在授权…":"授权并启用"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{m(void 0),w("")},children:"取消"}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u})]});const j=n.filter(_=>_.targetPeerId===r.targetPeerId),U=n.filter(_=>_.targetPeerId!==r.targetPeerId),O=async()=>{if(!l){h(!0),R(!0),f(""),L("");try{o(await yS({...t,routes:n},C)),b(""),L("备用地址已验证并保存。")}catch(_){f(_ instanceof Error?_.message:"暂时无法添加地址,请重试。")}finally{h(!1),R(!1)}}};return p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"电脑换了网络?添加它在新网络下的地址,原地址连不上时会自动尝试。只接受同一台服务。"}),p.jsxs("form",{className:"service-form",onSubmit:_=>{_.preventDefault(),O()},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"备用地址"}),p.jsx("input",{value:C,onChange:_=>{b(_.target.value),f(""),L("")},required:!0,disabled:l||n.length>=4,inputMode:"url",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:192.168.10.20:9834"})]}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:l||n.length>=4||!C.trim(),children:I?p.jsxs(p.Fragment,{children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在验证…"]}):"验证并添加"})]}),u&&p.jsx("p",{role:"alert",className:"service-error",children:u}),A&&p.jsx("p",{role:"status",className:"service-help",children:A}),n.length>=4&&p.jsx("p",{className:"service-help",children:"已保存 4 个备用连接。移除不再使用的地址或入口后,可以继续添加。"}),p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"首选地址"}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url})]}),j.length>0&&p.jsx("div",{className:"service-list",children:j.map(_=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-address service-route-address",children:_.url}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`移除地址 ${_.url}`,disabled:l,onClick:()=>x(_),children:"移除"})]}),E?.targetPeerId===_.targetPeerId&&E.url===_.url&&p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"从备用连接中移除此地址?不会停止正在运行的终端。"}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>x(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{const D=n.filter(F=>F.targetPeerId!==_.targetPeerId||F.url!==_.url);await Ko(t,D),o(D),x(void 0)})},children:"确认移除"})]})]})]},_.url))}),p.jsxs("details",{className:"service-relay-options",children:[p.jsxs("summary",{children:["通过其他服务中转",U.length?`(${U.length})`:""]}),p.jsxs("div",{className:"service-form",children:[p.jsx("p",{className:"service-help",children:"所有直连地址都不可用时,尝试下方已授权入口;直连恢复后自动切回。"}),U.length>0&&p.jsx("div",{className:"service-list",children:U.map(_=>p.jsxs("div",{className:"service-route-item",children:[p.jsxs("div",{className:"service-route-line",children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ws,{size:18})}),p.jsx("span",{className:"service-name",children:k(_)}),p.jsx(Fc,{size:16,className:"service-selected"})]}),E?.targetPeerId===_.targetPeerId?p.jsxs("div",{className:"service-form",children:[p.jsxs("p",{className:"service-help",children:["撤销此设备经“",k(_),"”连接目标的权限?如当前无法直连,目标服务将断开。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>x(void 0),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>{P(async()=>{await wS(r.targetPeerId,_);const D=n.filter(F=>F.targetPeerId!==_.targetPeerId);await Ko(t,D),o(D),x(void 0)})},children:"确认撤销"})]})]}):p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:l,onClick:()=>{P(async()=>{const D=await ip(r,_);T(wp({v:1,routeOnly:!0,serviceId:r.targetPeerId,name:t.label,serviceUrl:t.serviceOrigin||t.url,entryUrl:_.url,entryServiceId:_.targetPeerId,routeCode:D.routeCode}))})},children:"分享备用连接"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:l,onClick:()=>x(_),children:"撤销授权"})]})]},_.targetPeerId))}),a?p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{children:[p.jsx("p",{className:"service-help",children:"添加中转入口"}),s.filter(_=>!n.some(D=>D.targetPeerId===_.targetPeerId)).map(_=>p.jsxs("button",{type:"button",className:"service-row-open service-full-width",disabled:l||n.length>=4,onClick:()=>{N(_)},children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:_.label}),p.jsx("span",{className:"service-description",children:"验证并授权后启用"})]}),p.jsx(gr,{size:16})]},_.id)),s.length===0&&p.jsx("p",{className:"service-empty",children:"添加并登录另一台服务后,可以将它设为中转入口。"})]})]})]}),l&&!I&&p.jsxs("p",{role:"status",className:"service-feedback",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在验证连接与授权…"]})]})}function aE({current:t,renderRoutes:e,renderRelayServices:r,onOpen:n,onAdd:o,onInvite:s,hideHeader:i,onNavigation:a,onBusyChange:c,initiallyAdding:l=!1}){const[d,u]=M.useState([]),[f,h]=M.useState(!0),[g,m]=M.useState(l?{kind:"add"}:{kind:"list"}),[y,w]=M.useState(!1),C=M.useCallback(v=>{w(v),c?.(v)},[c]),[b,A]=M.useState(""),L=M.useCallback(()=>{m(v=>v.kind==="routes"||v.kind==="relay-services"?{kind:"edit",service:v.service}:{kind:"list"}),A("")},[]),I=g.kind==="add"?"添加服务":g.kind==="edit"?"服务设置":g.kind==="routes"?"备用连接":g.kind==="relay-services"?"可中转的服务":void 0;M.useEffect(()=>{a?.({title:I,...I?{back:L}:{}})},[I,L,a]),M.useEffect(()=>{let v=!1,k=0;const P=async()=>{const j=++k;try{const U=await Ze();!v&&k===j&&(u(U),A(""))}catch{!v&&k===j&&A("暂时无法读取服务列表,请重试。")}finally{!v&&k===j&&h(!1)}};P();const N=Uu(()=>{P()});return()=>{v=!0,N()}},[]);const R=async v=>{if(!y){C(!0),A("");try{await v()}catch(k){A(k instanceof Error?k.message:"暂时无法完成,请重试。")}finally{C(!1)}}},E=g.kind==="edit"||g.kind==="routes"||g.kind==="relay-services"?d.find(v=>yt(v,g.service))||g.service:void 0,x=t?d.find(v=>yt(v,t))||t:void 0,S=d.filter(v=>!t||!yt(v,t)),T=x?[x,...S]:S,B=p.jsxs(p.Fragment,{children:[f?p.jsxs("p",{className:"service-feedback",role:"status",children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在读取服务…"]}):p.jsxs("div",{className:"service-list",children:[T.map(v=>{const k=!!t&&yt(v,t);return p.jsxs("div",{className:"service-row",children:[p.jsxs("button",{type:"button",className:"service-row-open",disabled:y||k,onClick:()=>{R(async()=>{(await n(v))?.passwordRequired&&m({kind:"add",input:v.serviceOrigin||v.url,passwordRequired:!0})})},"aria-label":k?`当前服务 ${v.label}`:`打开 ${v.label}`,children:[p.jsx("span",{className:"service-icon",children:p.jsx(Ws,{size:20})}),p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:v.label}),p.jsx("span",{className:"service-description",children:k?"当前服务":new URL(v.serviceOrigin||v.url).host})]}),k?p.jsx(Fc,{size:17,className:"service-selected"}):p.jsx(gr,{size:16,className:"service-muted"})]}),p.jsx("button",{type:"button",className:"service-icon-button","aria-label":`管理 ${v.label}`,disabled:y,onClick:()=>{m({kind:"edit",service:v}),A("")},children:p.jsx(fp,{size:19})})]},v.id)}),T.length===0&&p.jsx("p",{className:"service-empty",children:"还没有添加服务。连接你的电脑,或粘贴收到的邀请链接。"})]}),p.jsxs("div",{className:`service-actions${s?" service-actions-pair":""}`,children:[p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:y,onClick:()=>{m({kind:"add"}),A("")},children:[p.jsx(hp,{size:16}),"添加服务"]}),s&&p.jsxs("button",{type:"button",className:"service-button service-secondary",disabled:y,onClick:s,children:[p.jsx(pp,{size:16}),"邀请设备"]})]})]});return p.jsxs("div",{className:"service-manager",children:[!i&&p.jsxs("div",{className:"service-heading",children:[I&&p.jsx("button",{type:"button",className:"service-icon-button","aria-label":"返回服务",disabled:y,onClick:L,children:p.jsx(dp,{size:20})}),p.jsx("h2",{children:I||"服务"})]}),g.kind==="relay-services"?r?.(E,C):g.kind==="routes"?e?.(E,C):g.kind==="list"?B:g.kind==="add"?p.jsx(cE,{onSave:v=>R(async()=>{const k=_e(v);u(await At({id:k,url:k,label:new URL(k).host})),L()}),initialInput:g.input,passwordRequired:g.passwordRequired,busy:y,onSubmit:async(v,k)=>{let P;return await R(async()=>{P=await o(v,k),P?.passwordRequired||L()}),P}}):p.jsx(lE,{onRelayServices:r&&g.service.targetPeerId?()=>m({kind:"relay-services",service:g.service}):void 0,onRoutes:e&&g.service.targetPeerId?()=>m({kind:"routes",service:g.service}):void 0,service:E,busy:y,canRemove:!t||!yt(g.service,t),onSave:v=>{R(async()=>{u(await At({...E,label:v})),L()})},onRemove:()=>{R(async()=>{u(await Ng(g.service.id)),L()})}}),b&&p.jsx("p",{className:"service-error",role:"alert",children:b})]})}function cE({busy:t,onSubmit:e,onSave:r,initialInput:n="",passwordRequired:o=!1}){const[s,i]=M.useState(n),[a,c]=M.useState(""),[l,d]=M.useState(o);return p.jsxs("form",{className:"service-form",onSubmit:async u=>{u.preventDefault(),(await e(s.trim(),l?a:void 0))?.passwordRequired&&d(!0),c("")},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务地址或邀请链接"}),p.jsx("input",{value:s,onChange:u=>{i(u.target.value),d(!1),c("")},disabled:t,required:!0,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,placeholder:"例如:电脑地址:9834 或 https://…"})]}),l?p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务密码"}),p.jsx("input",{type:"password",value:a,onChange:u=>c(u.target.value),disabled:t,required:!0,autoFocus:!0,autoComplete:"current-password",placeholder:"输入这台服务的密码"})]}):p.jsx("p",{className:"service-help",children:"连接自己的服务,输入地址即可;收到邀请时,粘贴完整链接。"}),p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:t||!s.trim()||s.includes("#termdock-invite="),onClick:()=>{r(s.trim())},children:"仅保存,不连接"}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:t||!s.trim()||l&&!a,children:t?p.jsxs(p.Fragment,{children:[p.jsx(De,{size:16,className:"service-spinning"}),"正在连接…"]}):l?"登录并连接":"继续"})]})}function lE({service:t,busy:e,canRemove:r,onSave:n,onRemove:o,onRoutes:s,onRelayServices:i}){const[a,c]=M.useState(t.label),[l,d]=M.useState(!1);return p.jsxs("form",{className:"service-form",onSubmit:u=>{u.preventDefault(),n(a.trim())},children:[p.jsxs("label",{className:"service-field",children:[p.jsx("span",{children:"服务名称"}),p.jsx("input",{value:a,onChange:u=>c(u.target.value),disabled:e,required:!0,maxLength:120,placeholder:"例如:办公室电脑"})]}),p.jsx("p",{className:"service-address",children:t.serviceOrigin||t.url}),p.jsx("button",{type:"submit",className:"service-button service-primary",disabled:e||!a.trim(),children:"保存名称"}),i&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:i,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"可中转的服务"}),p.jsx("span",{className:"service-description",children:"通过这台服务连接其他电脑"})]}),p.jsx(gr,{size:16})]}),s&&p.jsxs("button",{type:"button",className:"service-row-open",disabled:e,onClick:s,children:[p.jsxs("span",{className:"service-row-copy",children:[p.jsx("span",{className:"service-name",children:"备用连接"}),p.jsx("span",{className:"service-description",children:"添加其他网络地址或授权入口"})]}),p.jsx(gr,{size:16})]}),r&&p.jsx("div",{className:"service-remove",children:l?p.jsxs(p.Fragment,{children:[p.jsxs("p",{className:"service-help",children:["从列表移除“",t.label,"”?不会停止服务或删除终端。"]}),p.jsxs("div",{className:"service-actions service-actions-pair",children:[p.jsx("button",{type:"button",className:"service-button service-secondary",disabled:e,onClick:()=>d(!1),children:"取消"}),p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:o,children:"确认移除"})]})]}):p.jsx("button",{type:"button",className:"service-button service-danger",disabled:e,onClick:()=>d(!0),children:"移除服务"})})]})}var Tr={},Ci,Bd;function dE(){return Bd||(Bd=1,Ci=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Ci}var Ii={},Dt={},_d;function br(){if(_d)return Dt;_d=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return Dt.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},Dt.getSymbolTotalCodewords=function(n){return e[n]},Dt.getBCHDigit=function(r){let n=0;for(;r!==0;)n++,r>>>=1;return n},Dt.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');t=n},Dt.isKanjiModeEnabled=function(){return typeof t<"u"},Dt.toSJIS=function(n){return t(n)},Dt}var Ri={},Dd;function Mc(){return Dd||(Dd=1,(function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+r)}}t.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},t.from=function(n,o){if(t.isValid(n))return n;try{return e(n)}catch{return o}}})(Ri)),Ri}var Ti,Od;function uE(){if(Od)return Ti;Od=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const r=Math.floor(e/8);return(this.buffer[r]>>>7-e%8&1)===1},put:function(e,r){for(let n=0;n<r;n++)this.putBit((e>>>r-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),e&&(this.buffer[r]|=128>>>this.length%8),this.length++}},Ti=t,Ti}var Pi,Fd;function fE(){if(Fd)return Pi;Fd=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,r,n,o){const s=e*this.size+r;this.data[s]=n,o&&(this.reservedBit[s]=!0)},t.prototype.get=function(e,r){return this.data[e*this.size+r]},t.prototype.xor=function(e,r,n){this.data[e*this.size+r]^=n},t.prototype.isReserved=function(e,r){return this.reservedBit[e*this.size+r]},Pi=t,Pi}var Ni={},Md;function hE(){return Md||(Md=1,(function(t){const e=br().getSymbolSize;t.getRowColCoords=function(n){if(n===1)return[];const o=Math.floor(n/7)+2,s=e(n),i=s===145?26:Math.ceil((s-13)/(2*o-2))*2,a=[s-7];for(let c=1;c<o-1;c++)a[c]=a[c-1]-i;return a.push(6),a.reverse()},t.getPositions=function(n){const o=[],s=t.getRowColCoords(n),i=s.length;for(let a=0;a<i;a++)for(let c=0;c<i;c++)a===0&&c===0||a===0&&c===i-1||a===i-1&&c===0||o.push([s[a],s[c]]);return o}})(Ni)),Ni}var Li={},jd;function pE(){if(jd)return Li;jd=1;const t=br().getSymbolSize,e=7;return Li.getPositions=function(n){const o=t(n);return[[0,0],[o-e,0],[0,o-e]]},Li}var Bi={},Ud;function gE(){return Ud||(Ud=1,(function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const e={N1:3,N2:3,N3:40,N4:10};t.isValid=function(o){return o!=null&&o!==""&&!isNaN(o)&&o>=0&&o<=7},t.from=function(o){return t.isValid(o)?parseInt(o,10):void 0},t.getPenaltyN1=function(o){const s=o.size;let i=0,a=0,c=0,l=null,d=null;for(let u=0;u<s;u++){a=c=0,l=d=null;for(let f=0;f<s;f++){let h=o.get(u,f);h===l?a++:(a>=5&&(i+=e.N1+(a-5)),l=h,a=1),h=o.get(f,u),h===d?c++:(c>=5&&(i+=e.N1+(c-5)),d=h,c=1)}a>=5&&(i+=e.N1+(a-5)),c>=5&&(i+=e.N1+(c-5))}return i},t.getPenaltyN2=function(o){const s=o.size;let i=0;for(let a=0;a<s-1;a++)for(let c=0;c<s-1;c++){const l=o.get(a,c)+o.get(a,c+1)+o.get(a+1,c)+o.get(a+1,c+1);(l===4||l===0)&&i++}return i*e.N2},t.getPenaltyN3=function(o){const s=o.size;let i=0,a=0,c=0;for(let l=0;l<s;l++){a=c=0;for(let d=0;d<s;d++)a=a<<1&2047|o.get(l,d),d>=10&&(a===1488||a===93)&&i++,c=c<<1&2047|o.get(d,l),d>=10&&(c===1488||c===93)&&i++}return i*e.N3},t.getPenaltyN4=function(o){let s=0;const i=o.data.length;for(let c=0;c<i;c++)s+=o.data[c];return Math.abs(Math.ceil(s*100/i/5)-10)*e.N4};function r(n,o,s){switch(n){case t.Patterns.PATTERN000:return(o+s)%2===0;case t.Patterns.PATTERN001:return o%2===0;case t.Patterns.PATTERN010:return s%3===0;case t.Patterns.PATTERN011:return(o+s)%3===0;case t.Patterns.PATTERN100:return(Math.floor(o/2)+Math.floor(s/3))%2===0;case t.Patterns.PATTERN101:return o*s%2+o*s%3===0;case t.Patterns.PATTERN110:return(o*s%2+o*s%3)%2===0;case t.Patterns.PATTERN111:return(o*s%3+(o+s)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}t.applyMask=function(o,s){const i=s.size;for(let a=0;a<i;a++)for(let c=0;c<i;c++)s.isReserved(c,a)||s.xor(c,a,r(o,c,a))},t.getBestMask=function(o,s){const i=Object.keys(t.Patterns).length;let a=0,c=1/0;for(let l=0;l<i;l++){s(l),t.applyMask(l,o);const d=t.getPenaltyN1(o)+t.getPenaltyN2(o)+t.getPenaltyN3(o)+t.getPenaltyN4(o);t.applyMask(l,o),d<c&&(c=d,a=l)}return a}})(Bi)),Bi}var _o={},$d;function yp(){if($d)return _o;$d=1;const t=Mc(),e=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return _o.getBlocksCount=function(o,s){switch(s){case t.L:return e[(o-1)*4+0];case t.M:return e[(o-1)*4+1];case t.Q:return e[(o-1)*4+2];case t.H:return e[(o-1)*4+3];default:return}},_o.getTotalCodewordsCount=function(o,s){switch(s){case t.L:return r[(o-1)*4+0];case t.M:return r[(o-1)*4+1];case t.Q:return r[(o-1)*4+2];case t.H:return r[(o-1)*4+3];default:return}},_o}var _i={},kn={},Hd;function mE(){if(Hd)return kn;Hd=1;const t=new Uint8Array(512),e=new Uint8Array(256);return(function(){let n=1;for(let o=0;o<255;o++)t[o]=n,e[n]=o,n<<=1,n&256&&(n^=285);for(let o=255;o<512;o++)t[o]=t[o-255]})(),kn.log=function(n){if(n<1)throw new Error("log("+n+")");return e[n]},kn.exp=function(n){return t[n]},kn.mul=function(n,o){return n===0||o===0?0:t[e[n]+e[o]]},kn}var qd;function wE(){return qd||(qd=1,(function(t){const e=mE();t.mul=function(n,o){const s=new Uint8Array(n.length+o.length-1);for(let i=0;i<n.length;i++)for(let a=0;a<o.length;a++)s[i+a]^=e.mul(n[i],o[a]);return s},t.mod=function(n,o){let s=new Uint8Array(n);for(;s.length-o.length>=0;){const i=s[0];for(let c=0;c<o.length;c++)s[c]^=e.mul(o[c],i);let a=0;for(;a<s.length&&s[a]===0;)a++;s=s.slice(a)}return s},t.generateECPolynomial=function(n){let o=new Uint8Array([1]);for(let s=0;s<n;s++)o=t.mul(o,new Uint8Array([1,e.exp(s)]));return o}})(_i)),_i}var Di,Kd;function yE(){if(Kd)return Di;Kd=1;const t=wE();function e(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(n){this.degree=n,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const o=new Uint8Array(n.length+this.degree);o.set(n);const s=t.mod(o,this.genPoly),i=this.degree-s.length;if(i>0){const a=new Uint8Array(this.degree);return a.set(s,i),a}return s},Di=e,Di}var Oi={},Fi={},Mi={},zd;function bp(){return zd||(zd=1,Mi.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),Mi}var ct={},Wd;function vp(){if(Wd)return ct;Wd=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let r="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";r=r.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+r+`)(?:.|[\r
3
3
  ]))+`;ct.KANJI=new RegExp(r,"g"),ct.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),ct.BYTE=new RegExp(n,"g"),ct.NUMERIC=new RegExp(t,"g"),ct.ALPHANUMERIC=new RegExp(e,"g");const o=new RegExp("^"+r+"$"),s=new RegExp("^"+t+"$"),i=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return ct.testKanji=function(c){return o.test(c)},ct.testNumeric=function(c){return s.test(c)},ct.testAlphanumeric=function(c){return i.test(c)},ct}var Vd;function vr(){return Vd||(Vd=1,(function(t){const e=bp(),r=vp();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(s,i){if(!s.ccBits)throw new Error("Invalid mode: "+s);if(!e.isValid(i))throw new Error("Invalid version: "+i);return i>=1&&i<10?s.ccBits[0]:i<27?s.ccBits[1]:s.ccBits[2]},t.getBestModeForData=function(s){return r.testNumeric(s)?t.NUMERIC:r.testAlphanumeric(s)?t.ALPHANUMERIC:r.testKanji(s)?t.KANJI:t.BYTE},t.toString=function(s){if(s&&s.id)return s.id;throw new Error("Invalid mode")},t.isValid=function(s){return s&&s.bit&&s.ccBits};function n(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+o)}}t.from=function(s,i){if(t.isValid(s))return s;try{return n(s)}catch{return i}}})(Fi)),Fi}var Gd;function bE(){return Gd||(Gd=1,(function(t){const e=br(),r=yp(),n=Mc(),o=vr(),s=bp(),i=7973,a=e.getBCHDigit(i);function c(f,h,g){for(let m=1;m<=40;m++)if(h<=t.getCapacity(m,g,f))return m}function l(f,h){return o.getCharCountIndicator(f,h)+4}function d(f,h){let g=0;return f.forEach(function(m){const y=l(m.mode,h);g+=y+m.getBitsLength()}),g}function u(f,h){for(let g=1;g<=40;g++)if(d(f,g)<=t.getCapacity(g,h,o.MIXED))return g}t.from=function(h,g){return s.isValid(h)?parseInt(h,10):g},t.getCapacity=function(h,g,m){if(!s.isValid(h))throw new Error("Invalid QR Code version");typeof m>"u"&&(m=o.BYTE);const y=e.getSymbolTotalCodewords(h),w=r.getTotalCodewordsCount(h,g),C=(y-w)*8;if(m===o.MIXED)return C;const b=C-l(m,h);switch(m){case o.NUMERIC:return Math.floor(b/10*3);case o.ALPHANUMERIC:return Math.floor(b/11*2);case o.KANJI:return Math.floor(b/13);case o.BYTE:default:return Math.floor(b/8)}},t.getBestVersionForData=function(h,g){let m;const y=n.from(g,n.M);if(Array.isArray(h)){if(h.length>1)return u(h,y);if(h.length===0)return 1;m=h[0]}else m=h;return c(m.mode,m.getLength(),y)},t.getEncodedBits=function(h){if(!s.isValid(h)||h<7)throw new Error("Invalid QR Code version");let g=h<<12;for(;e.getBCHDigit(g)-a>=0;)g^=i<<e.getBCHDigit(g)-a;return h<<12|g}})(Oi)),Oi}var ji={},Xd;function vE(){if(Xd)return ji;Xd=1;const t=br(),e=1335,r=21522,n=t.getBCHDigit(e);return ji.getEncodedBits=function(s,i){const a=s.bit<<3|i;let c=a<<10;for(;t.getBCHDigit(c)-n>=0;)c^=e<<t.getBCHDigit(c)-n;return(a<<10|c)^r},ji}var Ui={},$i,Yd;function xE(){if(Yd)return $i;Yd=1;const t=vr();function e(r){this.mode=t.NUMERIC,this.data=r.toString()}return e.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(n){let o,s,i;for(o=0;o+3<=this.data.length;o+=3)s=this.data.substr(o,3),i=parseInt(s,10),n.put(i,10);const a=this.data.length-o;a>0&&(s=this.data.substr(o),i=parseInt(s,10),n.put(i,a*3+1))},$i=e,$i}var Hi,Zd;function SE(){if(Zd)return Hi;Zd=1;const t=vr(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function r(n){this.mode=t.ALPHANUMERIC,this.data=n}return r.getBitsLength=function(o){return 11*Math.floor(o/2)+6*(o%2)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(o){let s;for(s=0;s+2<=this.data.length;s+=2){let i=e.indexOf(this.data[s])*45;i+=e.indexOf(this.data[s+1]),o.put(i,11)}this.data.length%2&&o.put(e.indexOf(this.data[s]),6)},Hi=r,Hi}var qi,Jd;function EE(){if(Jd)return qi;Jd=1;const t=vr();function e(r){this.mode=t.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}return e.getBitsLength=function(n){return n*8},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(r){for(let n=0,o=this.data.length;n<o;n++)r.put(this.data[n],8)},qi=e,qi}var Ki,Qd;function AE(){if(Qd)return Ki;Qd=1;const t=vr(),e=br();function r(n){this.mode=t.KANJI,this.data=n}return r.getBitsLength=function(o){return o*13},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let o;for(o=0;o<this.data.length;o++){let s=e.toSJIS(this.data[o]);if(s>=33088&&s<=40956)s-=33088;else if(s>=57408&&s<=60351)s-=49472;else throw new Error("Invalid SJIS character: "+this.data[o]+`
4
4
  Make sure your charset is UTF-8`);s=(s>>>8&255)*192+(s&255),n.put(s,13)}},Ki=r,Ki}var zi={exports:{}},eu;function kE(){return eu||(eu=1,(function(t){var e={single_source_shortest_paths:function(r,n,o){var s={},i={};i[n]=0;var a=e.PriorityQueue.make();a.push(n,0);for(var c,l,d,u,f,h,g,m,y;!a.empty();){c=a.pop(),l=c.value,u=c.cost,f=r[l]||{};for(d in f)f.hasOwnProperty(d)&&(h=f[d],g=u+h,m=i[d],y=typeof i[d]>"u",(y||m>g)&&(i[d]=g,a.push(d,g),s[d]=l))}if(typeof o<"u"&&typeof i[o]>"u"){var w=["Could not find a path from ",n," to ",o,"."].join("");throw new Error(w)}return s},extract_shortest_path_from_predecessor_list:function(r,n){for(var o=[],s=n;s;)o.push(s),r[s],s=r[s];return o.reverse(),o},find_path:function(r,n,o){var s=e.single_source_shortest_paths(r,n,o);return e.extract_shortest_path_from_predecessor_list(s,o)},PriorityQueue:{make:function(r){var n=e.PriorityQueue,o={},s;r=r||{};for(s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);return o.queue=[],o.sorter=r.sorter||n.default_sorter,o},default_sorter:function(r,n){return r.cost-n.cost},push:function(r,n){var o={value:r,cost:n};this.queue.push(o),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t.exports=e})(zi)),zi.exports}var tu;function CE(){return tu||(tu=1,(function(t){const e=vr(),r=xE(),n=SE(),o=EE(),s=AE(),i=vp(),a=br(),c=kE();function l(w){return unescape(encodeURIComponent(w)).length}function d(w,C,b){const A=[];let L;for(;(L=w.exec(b))!==null;)A.push({data:L[0],index:L.index,mode:C,length:L[0].length});return A}function u(w){const C=d(i.NUMERIC,e.NUMERIC,w),b=d(i.ALPHANUMERIC,e.ALPHANUMERIC,w);let A,L;return a.isKanjiModeEnabled()?(A=d(i.BYTE,e.BYTE,w),L=d(i.KANJI,e.KANJI,w)):(A=d(i.BYTE_KANJI,e.BYTE,w),L=[]),C.concat(b,A,L).sort(function(R,E){return R.index-E.index}).map(function(R){return{data:R.data,mode:R.mode,length:R.length}})}function f(w,C){switch(C){case e.NUMERIC:return r.getBitsLength(w);case e.ALPHANUMERIC:return n.getBitsLength(w);case e.KANJI:return s.getBitsLength(w);case e.BYTE:return o.getBitsLength(w)}}function h(w){return w.reduce(function(C,b){const A=C.length-1>=0?C[C.length-1]:null;return A&&A.mode===b.mode?(C[C.length-1].data+=b.data,C):(C.push(b),C)},[])}function g(w){const C=[];for(let b=0;b<w.length;b++){const A=w[b];switch(A.mode){case e.NUMERIC:C.push([A,{data:A.data,mode:e.ALPHANUMERIC,length:A.length},{data:A.data,mode:e.BYTE,length:A.length}]);break;case e.ALPHANUMERIC:C.push([A,{data:A.data,mode:e.BYTE,length:A.length}]);break;case e.KANJI:C.push([A,{data:A.data,mode:e.BYTE,length:l(A.data)}]);break;case e.BYTE:C.push([{data:A.data,mode:e.BYTE,length:l(A.data)}])}}return C}function m(w,C){const b={},A={start:{}};let L=["start"];for(let I=0;I<w.length;I++){const R=w[I],E=[];for(let x=0;x<R.length;x++){const S=R[x],T=""+I+x;E.push(T),b[T]={node:S,lastCount:0},A[T]={};for(let B=0;B<L.length;B++){const v=L[B];b[v]&&b[v].node.mode===S.mode?(A[v][T]=f(b[v].lastCount+S.length,S.mode)-f(b[v].lastCount,S.mode),b[v].lastCount+=S.length):(b[v]&&(b[v].lastCount=S.length),A[v][T]=f(S.length,S.mode)+4+e.getCharCountIndicator(S.mode,C))}}L=E}for(let I=0;I<L.length;I++)A[L[I]].end=0;return{map:A,table:b}}function y(w,C){let b;const A=e.getBestModeForData(w);if(b=e.from(C,A),b!==e.BYTE&&b.bit<A.bit)throw new Error('"'+w+'" cannot be encoded with mode '+e.toString(b)+`.
5
5
  Suggested mode is: `+e.toString(A));switch(b===e.KANJI&&!a.isKanjiModeEnabled()&&(b=e.BYTE),b){case e.NUMERIC:return new r(w);case e.ALPHANUMERIC:return new n(w);case e.KANJI:return new s(w);case e.BYTE:return new o(w)}}t.fromArray=function(C){return C.reduce(function(b,A){return typeof A=="string"?b.push(y(A,null)):A.data&&b.push(y(A.data,A.mode)),b},[])},t.fromString=function(C,b){const A=u(C,a.isKanjiModeEnabled()),L=g(A),I=m(L,b),R=c.find_path(I.map,"start","end"),E=[];for(let x=1;x<R.length-1;x++)E.push(I.table[R[x]].node);return t.fromArray(h(E))},t.rawSplit=function(C){return t.fromArray(u(C,a.isKanjiModeEnabled()))}})(Ui)),Ui}var ru;function IE(){if(ru)return Ii;ru=1;const t=br(),e=Mc(),r=uE(),n=fE(),o=hE(),s=pE(),i=gE(),a=yp(),c=yE(),l=bE(),d=vE(),u=vr(),f=CE();function h(I,R){const E=I.size,x=s.getPositions(R);for(let S=0;S<x.length;S++){const T=x[S][0],B=x[S][1];for(let v=-1;v<=7;v++)if(!(T+v<=-1||E<=T+v))for(let k=-1;k<=7;k++)B+k<=-1||E<=B+k||(v>=0&&v<=6&&(k===0||k===6)||k>=0&&k<=6&&(v===0||v===6)||v>=2&&v<=4&&k>=2&&k<=4?I.set(T+v,B+k,!0,!0):I.set(T+v,B+k,!1,!0))}}function g(I){const R=I.size;for(let E=8;E<R-8;E++){const x=E%2===0;I.set(E,6,x,!0),I.set(6,E,x,!0)}}function m(I,R){const E=o.getPositions(R);for(let x=0;x<E.length;x++){const S=E[x][0],T=E[x][1];for(let B=-2;B<=2;B++)for(let v=-2;v<=2;v++)B===-2||B===2||v===-2||v===2||B===0&&v===0?I.set(S+B,T+v,!0,!0):I.set(S+B,T+v,!1,!0)}}function y(I,R){const E=I.size,x=l.getEncodedBits(R);let S,T,B;for(let v=0;v<18;v++)S=Math.floor(v/3),T=v%3+E-8-3,B=(x>>v&1)===1,I.set(S,T,B,!0),I.set(T,S,B,!0)}function w(I,R,E){const x=I.size,S=d.getEncodedBits(R,E);let T,B;for(T=0;T<15;T++)B=(S>>T&1)===1,T<6?I.set(T,8,B,!0):T<8?I.set(T+1,8,B,!0):I.set(x-15+T,8,B,!0),T<8?I.set(8,x-T-1,B,!0):T<9?I.set(8,15-T-1+1,B,!0):I.set(8,15-T-1,B,!0);I.set(x-8,8,1,!0)}function C(I,R){const E=I.size;let x=-1,S=E-1,T=7,B=0;for(let v=E-1;v>0;v-=2)for(v===6&&v--;;){for(let k=0;k<2;k++)if(!I.isReserved(S,v-k)){let P=!1;B<R.length&&(P=(R[B]>>>T&1)===1),I.set(S,v-k,P),T--,T===-1&&(B++,T=7)}if(S+=x,S<0||E<=S){S-=x,x=-x;break}}}function b(I,R,E){const x=new r;E.forEach(function(k){x.put(k.mode.bit,4),x.put(k.getLength(),u.getCharCountIndicator(k.mode,I)),k.write(x)});const S=t.getSymbolTotalCodewords(I),T=a.getTotalCodewordsCount(I,R),B=(S-T)*8;for(x.getLengthInBits()+4<=B&&x.put(0,4);x.getLengthInBits()%8!==0;)x.putBit(0);const v=(B-x.getLengthInBits())/8;for(let k=0;k<v;k++)x.put(k%2?17:236,8);return A(x,I,R)}function A(I,R,E){const x=t.getSymbolTotalCodewords(R),S=a.getTotalCodewordsCount(R,E),T=x-S,B=a.getBlocksCount(R,E),v=x%B,k=B-v,P=Math.floor(x/B),N=Math.floor(T/B),j=N+1,U=P-N,O=new c(U);let _=0;const D=new Array(B),F=new Array(B);let H=0;const q=new Uint8Array(I.buffer);for(let X=0;X<B;X++){const Z=X<k?N:j;D[X]=q.slice(_,_+Z),F[X]=O.encode(D[X]),_+=Z,H=Math.max(H,Z)}const K=new Uint8Array(x);let W=0,V,G;for(V=0;V<H;V++)for(G=0;G<B;G++)V<D[G].length&&(K[W++]=D[G][V]);for(V=0;V<U;V++)for(G=0;G<B;G++)K[W++]=F[G][V];return K}function L(I,R,E,x){let S;if(Array.isArray(I))S=f.fromArray(I);else if(typeof I=="string"){let P=R;if(!P){const N=f.rawSplit(I);P=l.getBestVersionForData(N,E)}S=f.fromString(I,P||40)}else throw new Error("Invalid data");const T=l.getBestVersionForData(S,E);if(!T)throw new Error("The amount of data is too big to be stored in a QR Code");if(!R)R=T;else if(R<T)throw new Error(`
@@ -31,4 +31,4 @@ Stack:
31
31
  ${t.stack}`:"",e?`
32
32
  React component stack:
33
33
  ${e.trim()}`:""].filter(Boolean).join(`
34
- `)}async function Ck(t){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(t),!0}catch{}const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select();try{return document.execCommand("copy")}catch{return!1}finally{e.remove()}}function Ik({error:t,componentStack:e}){const{t:r}=Zc(),[n,o]=qe.useState("idle"),s=async()=>{const i=kk(t,e,{url:window.location.href,userAgent:navigator.userAgent,capturedAt:new Date().toISOString()});o(await Ck(i)?"copied":"failed")};return p.jsx("div",{className:"flex h-full items-center justify-center p-4",children:p.jsxs("div",{className:"flex flex-col items-center gap-3 text-center max-w-md",children:[p.jsx("div",{className:"w-12 h-12 rounded-full bg-destructive/10 flex items-center justify-center",children:p.jsx("svg",{className:"w-6 h-6 text-destructive",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:p.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),p.jsxs("div",{className:"space-y-1",children:[p.jsx("h3",{className:"font-medium text-foreground",children:r("errorBoundary.title")}),p.jsx("p",{className:"text-sm text-muted-foreground",children:t?.message||r("errorBoundary.unexpected")})]}),p.jsxs("div",{className:"mt-2 flex flex-wrap items-center justify-center gap-2",children:[p.jsx("button",{type:"button",onClick:()=>{s()},className:"rounded-full bg-surface-2 px-5 py-2.5 text-sm font-medium text-foreground ring-1 ring-border/15 transition hover:bg-surface-elevated active:scale-[0.97]",children:r(n==="copied"?"errorBoundary.copied":n==="failed"?"errorBoundary.copyFailed":"errorBoundary.copyDetails")}),p.jsx("button",{type:"button",onClick:()=>window.location.reload(),className:"rounded-full bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground shadow-sm transition-all hover:bg-primary/90 active:scale-[0.97]",children:r("errorBoundary.retry")})]})]})})}class Rk extends qe.Component{state={hasError:!1,error:null,componentStack:""};static getDerivedStateFromError(e){return{hasError:!0,error:e,componentStack:""}}componentDidCatch(e,r){console.error("Terminal error caught by boundary:",e,r),this.setState({componentStack:r.componentStack??""})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:p.jsx(Ik,{error:this.state.error,componentStack:this.state.componentStack}):this.props.children}}function pe(){try{if(window.parent!==window&&location.pathname==="/workspace.html"&&window.parent.location.origin===location.origin&&window.parent.__termdockWorkspaceHost)return window.parent}catch{}return window}const Tk="debug",Pk="termdock:debug";function Ru(t){return t?new Set(t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)):new Set}function Nk(){if(typeof window>"u")return new Set;const t=Ru(new URLSearchParams(window.location.search).get(Tk));let e=new Set;try{e=Ru(window.localStorage.getItem(Pk))}catch{e=new Set}const r=new Set([...t,...e]);return r.has("1")||r.has("true")||r.has("*")||r.has("all")?new Set(["*"]):r}function Lk(t){const e=Nk();return e.has("*")||e.has(t)}function Bk(t){const e=Lk(t);return(...r)=>{e&&console.log(`[debug:${t}]`,...r)}}const Tu=80,_k=60,Dk="termdock:viewport-keyboard-change",Ok="termdock:viewport-layout-change",xt=240,Pu=640,Nu=360,Fk=1500;function Mk({measuredHeight:t,documentVisible:e,editableFocused:r}){return e&&r&&t>0}function aa(){if(typeof document>"u")return!1;const t=document.activeElement;return t instanceof HTMLElement&&t.matches('input:not([type="hidden"]), textarea, select, [contenteditable]:not([contenteditable="false"])')}const Is=t=>{const e=typeof t=="number"?t:Number.parseFloat(typeof t=="string"?t:"0");return Number.isFinite(e)&&e>0?Math.round(e):0},rg=(t,e)=>{const r=t.map(Is).filter(n=>n>0);return r.find(n=>n>=xt)??r[0]??e},Vn=()=>typeof window>"u"?Pu:rg([pe().innerHeight,document.documentElement?.clientHeight,document.body?.clientHeight,pe().visualViewport?.height,window.screen?.availHeight,window.screen?.height],Pu),ng=()=>typeof window>"u"?Nu:rg([pe().innerWidth,document.documentElement?.clientWidth,document.body?.clientWidth,pe().visualViewport?.width,window.screen?.availWidth,window.screen?.width],Nu),Ft=t=>{const e=Number.parseFloat(t||"0");return Number.isFinite(e)?Math.max(0,Math.round(e)):0},og=()=>typeof navigator>"u"?!1:/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1,jk=()=>typeof window>"u"?!1:pe().navigator.standalone===!0||pe().matchMedia?.("(display-mode: standalone)").matches===!0,sg=()=>{if(typeof window>"u"||!og()||!jk())return{top:0,right:0,bottom:0,left:0};if(!(Vn()>=ng()))return{top:0,right:0,bottom:0,left:0};const e=window.screen?.width||window.innerWidth,r=window.screen?.height||window.innerHeight,n=Math.min(e,r),o=Math.max(e,r);return n>=700?{top:20,right:0,bottom:20,left:0}:o<780?{top:20,right:0,bottom:0,left:0}:{top:o>=852?59:o>=844?47:44,right:0,bottom:34,left:0}};function Uk(t="--app-vh"){if(typeof window>"u"||typeof document>"u")return;const e=Is(pe().visualViewport?.height),r=Math.max(0,Math.round(pe().visualViewport?.offsetTop??0)),n=Vn(),s=e>=xt?Math.min(n,e+r):n,i=Math.max(n,s),a=document.documentElement.style;a.setProperty(t,`${Math.max(s,xt)}px`),a.setProperty("--app-base-vh",`${Math.max(i,xt)}px`),a.setProperty("--app-visible-vh",`${Math.max(s,xt)}px`),a.setProperty("--app-vv-offset-top",`${r}px`),a.setProperty("--kb-translate-y","0px"),a.setProperty("--kb-margin-top","0px"),a.setProperty("--kb-height","0px");const c=sg();c.top>0&&a.setProperty("--safe-top-inset",`${c.top}px`),c.right>0&&a.setProperty("--safe-right-inset",`${c.right}px`),c.bottom>0&&a.setProperty("--safe-bottom-inset",`${c.bottom}px`),c.left>0&&a.setProperty("--safe-left-inset",`${c.left}px`)}function AC(t={}){const{cssVarName:e="--app-vh"}=t,r=qe.useMemo(()=>Bk("viewport"),[]),n=qe.useCallback(()=>{if(typeof window>"u")return 0;const d=pe().visualViewport,u=Vn();if(!d)return u;const f=Is(d.height);if(f<xt&&u>=xt)return u;const h=d.offsetTop,m=f<u-1&&h>0&&h<=96?f+h:f,y=Math.max(0,Math.min(u,m));return y>0?Math.round(y):u},[]),[o,s]=qe.useState(n),i=qe.useRef(0),a=qe.useRef(0),c=qe.useRef(0),l=qe.useRef(!1);return qe.useEffect(()=>{if(typeof window>"u")return;let d=null,u=0,f=null,h="",g=null;const m=()=>{if(g?.isConnected)return g;try{return g=document.createElement("div"),g.setAttribute("aria-hidden","true"),g.style.cssText=["position:fixed","top:0","left:0","width:0","height:0","visibility:hidden","pointer-events:none","padding-top:constant(safe-area-inset-top)","padding-top:env(safe-area-inset-top,0px)","padding-right:constant(safe-area-inset-right)","padding-right:env(safe-area-inset-right,0px)","padding-bottom:constant(safe-area-inset-bottom)","padding-bottom:env(safe-area-inset-bottom,0px)","padding-left:constant(safe-area-inset-left)","padding-left:env(safe-area-inset-left,0px)"].join(";"),(document.body||document.documentElement).appendChild(g),g}catch{}return null},y=()=>{let N={top:0,right:0,bottom:0,left:0};try{const _=m();if(_){const D=getComputedStyle(_);N={top:Ft(D.paddingTop),right:Ft(D.paddingRight),bottom:Ft(D.paddingBottom),left:Ft(D.paddingLeft)}}}catch{}const j=pe();if(j!==window){const _=j.getComputedStyle(j.document.documentElement);N={top:Math.max(N.top,Ft(_.getPropertyValue("--safe-top-inset"))),right:Math.max(N.right,Ft(_.getPropertyValue("--safe-right-inset"))),bottom:Math.max(N.bottom,Ft(_.getPropertyValue("--safe-bottom-inset"))),left:Math.max(N.left,Ft(_.getPropertyValue("--safe-left-inset")))}}const U=sg(),O={top:Math.max(N.top,U.top),right:Math.max(N.right,U.right),bottom:Math.max(N.bottom,U.bottom),left:Math.max(N.left,U.left)};return document.documentElement.style.setProperty("--safe-top-inset",`${O.top}px`),document.documentElement.style.setProperty("--safe-right-inset",`${O.right}px`),document.documentElement.style.setProperty("--safe-bottom-inset",`${O.bottom}px`),document.documentElement.style.setProperty("--safe-left-inset",`${O.left}px`),O},w=(N,j,U,O)=>{const _=Math.max(j,U);if(i.current===0){i.current=_,a.current=N,document.documentElement.style.setProperty("--app-base-vh",`${_}px`);return}const D=Math.abs(N-a.current),F=O<=Tu;(D>_k||F)&&(i.current=_,a.current=N,document.documentElement.style.setProperty("--app-base-vh",`${_}px`))},C=(N="event")=>{d=null;const j=n(),U=Math.round(pe().visualViewport?.offsetTop??0),O=Is(pe().visualViewport?.height),_=O>=xt?O:j,D=Vn(),F=ng(),H=Math.max(0,_+U),q=y(),K=q.bottom,W=Math.max(0,i.current-H-K);w(F,D,H,W),s(Er=>Er===j?Er:j);const V=Number.parseInt(document.documentElement.style.getPropertyValue(e)||"0",10);document.documentElement.style.setProperty(e,`${j}px`),document.documentElement.style.setProperty("--app-vv-offset-top",`${U}px`);const G=i.current,X=Math.min(j,_),Z=Math.max(0,Math.min(G,H)),ae=Math.max(0,Math.round(G-X-K)),ke=aa(),Oe=Mk({measuredHeight:ae,documentVisible:document.visibilityState==="visible",editableFocused:ke}),te=Oe?ae:0,ze=te>=Tu,Gt=-te,Xt=te;document.documentElement.style.setProperty("--kb-translate-y",`${Gt}px`),document.documentElement.style.setProperty("--kb-margin-top",`${Xt}px`),document.documentElement.style.setProperty("--kb-height",`${te}px`),document.documentElement.style.setProperty("--app-visible-vh",`${Z}px`);const Fe=Math.abs(te-c.current)>1,Yt=ze!==l.current;(Fe||Yt)&&(c.current=te,l.current=ze,document.dispatchEvent(new CustomEvent(Dk,{detail:{baseHeight:G,visibleHeight:Z,visualViewportHeight:_,offsetTop:U,keyboardHeight:te,isOpen:ze,source:N}}))),(V!==j||U>0||Fe||Yt)&&r("sync",{cssVarName:e,innerHeight:D,baseHeight:G,rawViewportHeight:_,offsetTop:U,visibleHeight:Z,rawHeight:j,appliedHeight:j,keyboardViewportHeight:X,measuredKeyboardHeight:ae,editableFocused:ke,applyKeyboardInset:Oe,keyboardHeight:te,isKeyboardOpen:ze,safeAreaInsets:q,source:N}),document.dispatchEvent(new CustomEvent(Ok,{detail:{height:j,baseHeight:G,visibleHeight:Z,offsetTop:U,source:N}}))},b=()=>{d===null&&(d=window.requestAnimationFrame(()=>{d=null;const N=pe(),j=N.visualViewport,U=[N.innerWidth,N.innerHeight,j?.width,j?.height,j?.offsetTop,j?.offsetLeft,document.visibilityState,aa()].join(":"),O=f;f=null,(O||U!==h)&&(h=U,C(O||"viewport.settle")),performance.now()<u&&b()}))},A=(N="event")=>{(N.includes("visibilitychange")||N.includes("pageshow"))&&r("schedule",{source:N}),f=N,og()&&document.visibilityState==="visible"&&(u=performance.now()+Fk),b()};A("mount");const L=()=>A("resize"),I=()=>A("orientationchange"),R=()=>A("visualViewport.resize"),E=()=>A("visualViewport.scroll"),x=()=>A("focusin"),S=()=>A("focusout"),T=N=>{u=0;const j=document.activeElement;j instanceof HTMLElement&&aa()&&j.blur(),c.current=0,l.current=!1;const U=Math.max(i.current,Vn(),xt),O=document.documentElement.style;O.setProperty(e,`${U}px`),O.setProperty("--app-visible-vh",`${U}px`),O.setProperty("--app-vv-offset-top","0px"),O.setProperty("--kb-translate-y","0px"),O.setProperty("--kb-margin-top","0px"),O.setProperty("--kb-height","0px"),s(_=>_===U?_:U),r("keyboard session reset",{source:N,baseHeight:U})};window.addEventListener("resize",L),window.addEventListener("orientationchange",I),pe().visualViewport?.addEventListener("resize",R),pe().visualViewport?.addEventListener("scroll",E),document.addEventListener("focusin",x),document.addEventListener("focusout",S);const B=N=>{r("resume",{source:N,innerHeight:Math.round(window.innerHeight),visualViewport:pe().visualViewport?{width:Math.round(pe().visualViewport.width),height:Math.round(pe().visualViewport.height),offsetTop:Math.round(pe().visualViewport.offsetTop)}:null,hidden:document.hidden}),A(N)},v=()=>{document.hidden?T("visibilitychange:hidden"):B("visibilitychange")},k=()=>B("pageshow"),P=()=>T("pagehide");return document.addEventListener("visibilitychange",v),window.addEventListener("pageshow",k),window.addEventListener("pagehide",P),()=>{window.removeEventListener("resize",L),window.removeEventListener("orientationchange",I),pe().visualViewport?.removeEventListener("resize",R),pe().visualViewport?.removeEventListener("scroll",E),document.removeEventListener("focusin",x),document.removeEventListener("focusout",S),document.removeEventListener("visibilitychange",v),window.removeEventListener("pageshow",k),window.removeEventListener("pagehide",P),d!==null&&window.cancelAnimationFrame(d),g?.remove()}},[e,r,n]),o}const Lu=5*6e4;let rc,ig=!1,ag=!1,Bu=!1;const nc=new Set;function _u(){ig=!0,nc.forEach(t=>t())}function $k(){return M.useSyncExternalStore(t=>(nc.add(t),()=>{nc.delete(t)}),()=>ig,()=>!1)}function Hk(){window.dispatchEvent(new Event("termdock:before-update")),ag=!0,rc?.waiting?rc.waiting.postMessage({type:"SKIP_WAITING"}):window.location.reload()}function qk(t,e){let r=t;return()=>{if(!r){r=!0;return}e()}}function Kk(){if(Bu||typeof window>"u"||!("serviceWorker"in navigator))return;Bu=!0,navigator.serviceWorker.addEventListener("controllerchange",qk(!!navigator.serviceWorker.controller,()=>{ag?window.location.reload():_u()}));const t=()=>{navigator.serviceWorker.register("/sw.js",{scope:"/",updateViaCache:"none"}).then(e=>{rc=e;const r=()=>{e.waiting&&_u()},n=()=>{const i=e.installing;i?.addEventListener("statechange",()=>{i.state==="installed"&&navigator.serviceWorker.controller&&r()})};e.addEventListener("updatefound",n),n(),r();let o=0;const s=()=>{document.visibilityState!=="visible"||Date.now()-o<Lu||(o=Date.now(),e.update().then(r).catch(()=>{}))};s(),window.setInterval(s,Lu),document.addEventListener("visibilitychange",s)}).catch(()=>{})};document.readyState==="complete"?t():window.addEventListener("load",t,{once:!0})}function zk(){const t=$k(),[e,r]=M.useState(!1),{locale:n}=Zc();if(!t||e)return null;const o=n==="zh";return p.jsxs("div",{role:"status",className:"fixed bottom-16 left-1/2 z-toast flex max-w-[calc(100%-2rem)] -translate-x-1/2 items-center gap-3 rounded-lg border border-border bg-background px-4 py-3 text-sm text-foreground shadow-lg",children:[p.jsx("span",{children:o?"新版本已就绪":"An update is ready"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-primary",onClick:Hk,children:o?"重新加载":"Reload"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-muted-foreground",onClick:()=>r(!0),children:o?"稍后":"Later"})]})}function cg(t){const e=document.querySelector('meta[name="theme-color"]');e&&e.setAttribute("content",t==="light"?"#FFFCF0":"#1C1B1A")}const lg=M.createContext(void 0);function kC({children:t}){const e=M.useContext(lg),r=e===void 0?typeof document>"u"?null:document.body:e;return r?Ou.createPortal(t,r):null}const Wk={activeKey:"root",items:[]},Vk=()=>()=>{},Gk=()=>Wk;function Xk({host:t,item:e,visible:r,active:n}){const o=M.useRef(null);return M.useEffect(()=>{o.current?.toggleAttribute("inert",!n)},[n]),M.useLayoutEffect(()=>{const s=o.current;return()=>{try{const i=s?.contentWindow,a=i?.document.createEvent("Event");a&&(a.initEvent("termdock:before-update",!1,!1),i?.dispatchEvent(a))}catch{}t.attach(e.key,null)}},[t,e.key]),p.jsx("iframe",{ref:o,title:e.service?.label||"服务工作区","data-workspace-key":e.key,src:`/workspace.html?${tp}=${encodeURIComponent(e.key)}`,className:"fixed inset-0 w-full border-0 bg-[var(--chrome-bg)]",style:{height:"var(--app-base-vh, 100%)",visibility:r?"visible":"hidden",pointerEvents:n?"auto":"none"},"aria-hidden":!n,tabIndex:n?0:-1,allow:"clipboard-read; clipboard-write; fullscreen"})}function Yk({children:t}){const e=window.parent===window?Et():void 0,r=M.useSyncExternalStore(e?.subscribe||Vk,e?.snapshot||Gk),[n,o]=M.useState(null),[s,i]=M.useState(()=>r.activeKey==="root"?"root":null),[a,c]=M.useState(),[l,d]=M.useState(!1),[u,f]=M.useState(),h=r.items.find(b=>b.key===r.activeKey),g=h?.rendered||a===r.activeKey?r.activeKey:s,m=g!==r.activeKey,y=m&&s===null;M.useLayoutEffect(()=>{if(!m||y){f(void 0);return}const b=()=>{const A=Array.from(document.querySelectorAll("iframe[data-workspace-key]")).find(T=>T.dataset.workspaceKey===s),E=(s==="root"?n:A?.contentDocument)?.querySelector('nav[aria-label="切换服务"]')?.closest("[data-sidebar-gesture-ignore]")?.getBoundingClientRect();if(!E||E.width===0||E.right<=0){f(void 0);return}const x=A?.getBoundingClientRect(),S=E.top+(x?.top??0)>=160;f({left:E.left+(x?.left??0)+12,top:(S?E.top-8:E.bottom+8)+(x?.top??0),width:Math.max(0,E.width-24),transform:S?"translateY(-100%)":"none"})};return b(),window.addEventListener("resize",b),()=>window.removeEventListener("resize",b)},[m,y,s,n]),M.useLayoutEffect(()=>{e?.present(g),m||i(g),n?.toggleAttribute("inert",g!=="root"||m)},[e,n,g,m]),M.useEffect(()=>{if(d(!1),!m)return;const b=setTimeout(()=>d(!0),8e3);return()=>clearTimeout(b)},[r.activeKey,m]),M.useEffect(()=>{c(void 0)},[r.activeKey]);const w=r.items.find(b=>b.key===s),C=h?.phase==="offline"?"网络已断开,等待恢复…":h?.phase==="reconnecting"?"连接暂未恢复,正在重试…":l?"连接时间较长,仍在等待服务…":y?"正在恢复服务…":"正在切换服务…";return M.useEffect(()=>{if(!e)return;const b=()=>{try{const A=JSON.parse(localStorage.getItem("termdock-color-theme")||"null");(A==="dark"||A==="light")&&(document.documentElement.dataset.theme=A,cg(A))}catch{}};return window.addEventListener("storage",b),()=>window.removeEventListener("storage",b)},[e]),M.useEffect(()=>{if(!e||!("serviceWorker"in navigator))return;const b=I=>{if(I.source!==navigator.serviceWorker.controller)return;const R=I.data;R?.type==="termdock:focus-session"&&typeof R.targetPeerId=="string"&&typeof R.sessionId=="string"&&e.focusSession(R.targetPeerId,R.sessionId)&&(I.ports[0]?.postMessage({type:"termdock:focus-session-ack"}),I.stopImmediatePropagation())},A=async()=>{if("caches"in window)try{const I=await caches.open("termdock-notification-target-v1"),R=await I.match("/__termdock-notification-target");if(!R)return;const E=await R.json();typeof E.targetPeerId=="string"&&typeof E.sessionId=="string"&&Date.now()-E.clickedAt<3e4&&e.focusSession(E.targetPeerId,E.sessionId)&&await I.delete("/__termdock-notification-target")}catch{}},L=()=>{document.hidden||A()};return navigator.serviceWorker.addEventListener("message",b),document.addEventListener("visibilitychange",L),A(),()=>{navigator.serviceWorker.removeEventListener("message",b),document.removeEventListener("visibilitychange",L)}},[e]),e?p.jsxs("div",{className:"relative h-full w-full overflow-hidden bg-[var(--chrome-bg)]",children:[p.jsx("div",{ref:o,className:"isolate h-full w-full","aria-hidden":g!=="root"||m,style:{visibility:g==="root"?"visible":"hidden"},children:p.jsx(lg.Provider,{value:n,children:t})}),r.items.filter(b=>b.key!=="root").map(b=>p.jsx(Xk,{host:e,item:b,visible:g===b.key,active:!m&&g===b.key},b.key)),y&&p.jsx("div",{className:"termdock-boot z-modal-panel",role:"status","aria-live":"polite",children:l||h?.phase==="offline"||h?.phase==="reconnecting"?p.jsxs("div",{className:"flex max-w-xs flex-col items-center gap-3 text-center",children:[p.jsx(De,{size:16,className:"animate-spin motion-reduce:animate-none","aria-hidden":"true"}),p.jsx("div",{className:"max-w-full truncate text-sm",children:h?.service?.label||"Termdock"}),p.jsx("div",{className:"text-xs text-muted-foreground",children:C}),p.jsx("button",{type:"button",className:"min-h-11 rounded-lg bg-surface-2 px-4 text-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>c(r.activeKey),children:"查看连接页面"})]}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"termdock-boot-spinner","aria-hidden":"true"}),p.jsx("span",{children:"Loading Termdock"})]})}),m&&!y&&p.jsx("div",{className:"fixed inset-0 z-modal-panel flex items-end justify-center px-3 pb-[calc(env(safe-area-inset-bottom)+96px)]",role:"dialog","aria-modal":"true","aria-label":"切换服务",onKeyDown:b=>{if(b.key==="Escape"&&w?.service&&(b.preventDefault(),e.activate(w.service)),b.key==="Tab"){const A=Array.from(b.currentTarget.querySelectorAll("button")),L=A[0],I=A[A.length-1];b.shiftKey&&document.activeElement===L?(b.preventDefault(),I?.focus()):!b.shiftKey&&document.activeElement===I&&(b.preventDefault(),L?.focus())}},children:p.jsxs("div",{style:u?{position:"absolute",...u}:void 0,className:"flex w-full max-w-sm flex-wrap items-center gap-x-2 gap-y-1 rounded-xl border border-border bg-surface-elevated px-3 py-1.5 text-foreground shadow-lg",children:[p.jsxs("div",{role:"status","aria-live":"polite",className:"flex min-w-0 flex-1 items-center gap-2",children:[p.jsx(De,{size:16,className:"shrink-0 animate-spin text-primary motion-reduce:animate-none","aria-hidden":"true"}),p.jsxs("div",{className:"min-w-0",children:[p.jsx("div",{className:"truncate text-sm font-medium",children:h?.service?.label||"服务工作区"}),p.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:C})]})]}),p.jsxs("div",{className:"flex items-center justify-end gap-1",children:[l&&p.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2",onClick:()=>c(r.activeKey),children:"查看连接页面"}),w?.service&&p.jsx("button",{type:"button",autoFocus:!0,"aria-label":"取消切换",className:"min-h-11 shrink-0 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>e.activate(w.service),children:"取消"})]})]})})]}):t}const Zk=M.lazy(()=>Wt(()=>import("./App-mcFsMbEy.js").then(t=>t.A),__vite__mapDeps([4,2,1,5,6,3,7,8]))),Jk=M.lazy(()=>Wt(()=>import("./DagPlayground-GpfQi2DO.js"),__vite__mapDeps([9,10,2,1,11,8,3])).then(t=>({default:t.DagPlayground}))),Qk=M.lazy(()=>Wt(()=>import("./DiffLab-Ch4AMuRr.js"),__vite__mapDeps([12,2,1,13,7,14,3])).then(t=>({default:t.DiffLab}))),eC=M.lazy(()=>Wt(()=>import("./DiffReviewLab-kbUKtav9.js"),__vite__mapDeps([15,2,1,16,5,6,11,13,7,14,3])).then(t=>({default:t.DiffReviewLab})));Uk();fS();window.parent===window&&Kk();const Mn=ne();Mn&&Wt(()=>import("./App-mcFsMbEy.js").then(t=>t.A),__vite__mapDeps([4,2,1,5,6,3,7,8])).catch(()=>{});!new URLSearchParams(location.search).has("dag-playground")&&!new URLSearchParams(location.search).has("diff-lab")&&!new URLSearchParams(location.search).has("diff-review-lab")&&(tS(Mn?{...Mn,id:Mn.targetPeerId,label:Mn.serviceName||location.host}:void 0),ap());try{const t=JSON.parse(window.localStorage.getItem("termdock-color-theme")||"null");(t==="dark"||t==="light")&&(document.documentElement.dataset.theme=t,cg(t))}catch{}SS.createRoot(document.getElementById("root")).render(p.jsx(qe.StrictMode,{children:p.jsxs(AA,{children:[window.parent===window&&p.jsx(zk,{}),p.jsx(Rk,{children:p.jsx(M.Suspense,{fallback:p.jsx("div",{className:"termdock-boot",role:"status",children:"Loading Termdock"}),children:(()=>{const t=new URLSearchParams(window.location.search);return t.get("dag-playground")==="1"?p.jsx(Jk,{}):t.get("diff-review-lab")==="1"?p.jsx(eC,{}):t.get("diff-lab")==="1"?p.jsx(Qk,{}):p.jsx(Yk,{children:p.jsx(Ak,{children:p.jsx(Zk,{})})})})()})})]})}));export{Bk as $,zc as A,BS as B,Fc as C,T1 as D,Cp as E,vC as F,ar as G,Y2 as H,X2 as I,H1 as J,I1 as K,De as L,Yx as M,ZE as N,g1 as O,XA as P,fo as Q,hr as R,Ws as S,XS as T,fC as U,Ok as V,Da as W,ZS as X,zA as Y,e2 as Z,Wt as _,dp as a,gA as a$,Pe as a0,p1 as a1,gi as a2,s2 as a3,F2 as a4,D1 as a5,o2 as a6,O2 as a7,eE as a8,Ap as a9,XE as aA,ME as aB,z1 as aC,L1 as aD,q1 as aE,Z2 as aF,Fp as aG,Et as aH,aa as aI,ih as aJ,Ch as aK,_2 as aL,Z1 as aM,t2 as aN,Op as aO,x2 as aP,E2 as aQ,m2 as aR,v2 as aS,y2 as aT,Si as aU,p as aV,uC as aW,B1 as aX,rA as aY,a2 as aZ,lA as a_,JE as aa,WA as ab,P1 as ac,nt as ad,Y1 as ae,X1 as af,Q1 as ag,h1 as ah,G2 as ai,z2 as aj,K2 as ak,W2 as al,W1 as am,S2 as an,H2 as ao,eA as ap,N2 as aq,J2 as ar,q2 as as,j2 as at,f2 as au,V2 as av,Cs as aw,F1 as ax,zn as ay,gp as az,NS as b,pC as b$,C2 as b0,N1 as b1,G1 as b2,uA as b3,U2 as b4,Sp as b5,M1 as b6,c2 as b7,w1 as b8,ut as b9,i2 as bA,cA as bB,cC as bC,JS as bD,oA as bE,Q2 as bF,nA as bG,dA as bH,ne as bI,I2 as bJ,wA as bK,uS as bL,E1 as bM,mA as bN,A1 as bO,v1 as bP,m1 as bQ,S1 as bR,C1 as bS,sA as bT,hA as bU,Bp as bV,f1 as bW,mi as bX,bC as bY,fA as bZ,aA as b_,B2 as ba,P2 as bb,L2 as bc,D2 as bd,EC as be,SC as bf,gC as bg,y1 as bh,QE as bi,hC as bj,$a as bk,iA as bl,l2 as bm,pA as bn,$1 as bo,U1 as bp,h2 as bq,d2 as br,K1 as bs,Lr as bt,p2 as bu,u2 as bv,k1 as bw,xC as bx,R1 as by,_1 as bz,OS as c,b1 as c0,lC as c1,cg as c2,aC as c3,J1 as c4,n2 as c5,V1 as c6,j1 as c7,Ut as c8,M2 as c9,Zc as ca,wC as cb,Ne as cc,AC as cd,pe as ce,R2 as cf,zs as cg,Ke as ch,yC as ci,mC as cj,gr as d,up as e,fp as f,Rk as g,kp as h,KS as i,hp as j,NA as k,ge as l,kC as m,x1 as n,Cc as o,It as p,tA as q,dC as r,A2 as s,b2 as t,Ic as u,T2 as v,Kx as w,r2 as x,m0 as y,YE as z};
34
+ `)}async function Ck(t){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(t),!0}catch{}const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select();try{return document.execCommand("copy")}catch{return!1}finally{e.remove()}}function Ik({error:t,componentStack:e}){const{t:r}=Zc(),[n,o]=qe.useState("idle"),s=async()=>{const i=kk(t,e,{url:window.location.href,userAgent:navigator.userAgent,capturedAt:new Date().toISOString()});o(await Ck(i)?"copied":"failed")};return p.jsx("div",{className:"flex h-full items-center justify-center p-4",children:p.jsxs("div",{className:"flex flex-col items-center gap-3 text-center max-w-md",children:[p.jsx("div",{className:"w-12 h-12 rounded-full bg-destructive/10 flex items-center justify-center",children:p.jsx("svg",{className:"w-6 h-6 text-destructive",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:p.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),p.jsxs("div",{className:"space-y-1",children:[p.jsx("h3",{className:"font-medium text-foreground",children:r("errorBoundary.title")}),p.jsx("p",{className:"text-sm text-muted-foreground",children:t?.message||r("errorBoundary.unexpected")})]}),p.jsxs("div",{className:"mt-2 flex flex-wrap items-center justify-center gap-2",children:[p.jsx("button",{type:"button",onClick:()=>{s()},className:"rounded-full bg-surface-2 px-5 py-2.5 text-sm font-medium text-foreground ring-1 ring-border/15 transition hover:bg-surface-elevated active:scale-[0.97]",children:r(n==="copied"?"errorBoundary.copied":n==="failed"?"errorBoundary.copyFailed":"errorBoundary.copyDetails")}),p.jsx("button",{type:"button",onClick:()=>window.location.reload(),className:"rounded-full bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground shadow-sm transition-all hover:bg-primary/90 active:scale-[0.97]",children:r("errorBoundary.retry")})]})]})})}class Rk extends qe.Component{state={hasError:!1,error:null,componentStack:""};static getDerivedStateFromError(e){return{hasError:!0,error:e,componentStack:""}}componentDidCatch(e,r){console.error("Terminal error caught by boundary:",e,r),this.setState({componentStack:r.componentStack??""})}render(){return this.state.hasError?this.props.fallback?this.props.fallback:p.jsx(Ik,{error:this.state.error,componentStack:this.state.componentStack}):this.props.children}}function pe(){try{if(window.parent!==window&&location.pathname==="/workspace.html"&&window.parent.location.origin===location.origin&&window.parent.__termdockWorkspaceHost)return window.parent}catch{}return window}const Tk="debug",Pk="termdock:debug";function Ru(t){return t?new Set(t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)):new Set}function Nk(){if(typeof window>"u")return new Set;const t=Ru(new URLSearchParams(window.location.search).get(Tk));let e=new Set;try{e=Ru(window.localStorage.getItem(Pk))}catch{e=new Set}const r=new Set([...t,...e]);return r.has("1")||r.has("true")||r.has("*")||r.has("all")?new Set(["*"]):r}function Lk(t){const e=Nk();return e.has("*")||e.has(t)}function Bk(t){const e=Lk(t);return(...r)=>{e&&console.log(`[debug:${t}]`,...r)}}const Tu=80,_k=60,Dk="termdock:viewport-keyboard-change",Ok="termdock:viewport-layout-change",xt=240,Pu=640,Nu=360,Fk=1500;function Mk({measuredHeight:t,documentVisible:e,editableFocused:r}){return e&&r&&t>0}function aa(){if(typeof document>"u")return!1;const t=document.activeElement;return t instanceof HTMLElement&&t.matches('input:not([type="hidden"]), textarea, select, [contenteditable]:not([contenteditable="false"])')}const Is=t=>{const e=typeof t=="number"?t:Number.parseFloat(typeof t=="string"?t:"0");return Number.isFinite(e)&&e>0?Math.round(e):0},rg=(t,e)=>{const r=t.map(Is).filter(n=>n>0);return r.find(n=>n>=xt)??r[0]??e},Vn=()=>typeof window>"u"?Pu:rg([pe().innerHeight,document.documentElement?.clientHeight,document.body?.clientHeight,pe().visualViewport?.height,window.screen?.availHeight,window.screen?.height],Pu),ng=()=>typeof window>"u"?Nu:rg([pe().innerWidth,document.documentElement?.clientWidth,document.body?.clientWidth,pe().visualViewport?.width,window.screen?.availWidth,window.screen?.width],Nu),Ft=t=>{const e=Number.parseFloat(t||"0");return Number.isFinite(e)?Math.max(0,Math.round(e)):0},og=()=>typeof navigator>"u"?!1:/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1,jk=()=>typeof window>"u"?!1:pe().navigator.standalone===!0||pe().matchMedia?.("(display-mode: standalone)").matches===!0,sg=()=>{if(typeof window>"u"||!og()||!jk())return{top:0,right:0,bottom:0,left:0};if(!(Vn()>=ng()))return{top:0,right:0,bottom:0,left:0};const e=window.screen?.width||window.innerWidth,r=window.screen?.height||window.innerHeight,n=Math.min(e,r),o=Math.max(e,r);return n>=700?{top:20,right:0,bottom:20,left:0}:o<780?{top:20,right:0,bottom:0,left:0}:{top:o>=852?59:o>=844?47:44,right:0,bottom:34,left:0}};function Uk(t="--app-vh"){if(typeof window>"u"||typeof document>"u")return;const e=Is(pe().visualViewport?.height),r=Math.max(0,Math.round(pe().visualViewport?.offsetTop??0)),n=Vn(),s=e>=xt?Math.min(n,e+r):n,i=Math.max(n,s),a=document.documentElement.style;a.setProperty(t,`${Math.max(s,xt)}px`),a.setProperty("--app-base-vh",`${Math.max(i,xt)}px`),a.setProperty("--app-visible-vh",`${Math.max(s,xt)}px`),a.setProperty("--app-vv-offset-top",`${r}px`),a.setProperty("--kb-translate-y","0px"),a.setProperty("--kb-margin-top","0px"),a.setProperty("--kb-height","0px");const c=sg();c.top>0&&a.setProperty("--safe-top-inset",`${c.top}px`),c.right>0&&a.setProperty("--safe-right-inset",`${c.right}px`),c.bottom>0&&a.setProperty("--safe-bottom-inset",`${c.bottom}px`),c.left>0&&a.setProperty("--safe-left-inset",`${c.left}px`)}function AC(t={}){const{cssVarName:e="--app-vh"}=t,r=qe.useMemo(()=>Bk("viewport"),[]),n=qe.useCallback(()=>{if(typeof window>"u")return 0;const d=pe().visualViewport,u=Vn();if(!d)return u;const f=Is(d.height);if(f<xt&&u>=xt)return u;const h=d.offsetTop,m=f<u-1&&h>0&&h<=96?f+h:f,y=Math.max(0,Math.min(u,m));return y>0?Math.round(y):u},[]),[o,s]=qe.useState(n),i=qe.useRef(0),a=qe.useRef(0),c=qe.useRef(0),l=qe.useRef(!1);return qe.useEffect(()=>{if(typeof window>"u")return;let d=null,u=0,f=null,h="",g=null;const m=()=>{if(g?.isConnected)return g;try{return g=document.createElement("div"),g.setAttribute("aria-hidden","true"),g.style.cssText=["position:fixed","top:0","left:0","width:0","height:0","visibility:hidden","pointer-events:none","padding-top:constant(safe-area-inset-top)","padding-top:env(safe-area-inset-top,0px)","padding-right:constant(safe-area-inset-right)","padding-right:env(safe-area-inset-right,0px)","padding-bottom:constant(safe-area-inset-bottom)","padding-bottom:env(safe-area-inset-bottom,0px)","padding-left:constant(safe-area-inset-left)","padding-left:env(safe-area-inset-left,0px)"].join(";"),(document.body||document.documentElement).appendChild(g),g}catch{}return null},y=()=>{let N={top:0,right:0,bottom:0,left:0};try{const _=m();if(_){const D=getComputedStyle(_);N={top:Ft(D.paddingTop),right:Ft(D.paddingRight),bottom:Ft(D.paddingBottom),left:Ft(D.paddingLeft)}}}catch{}const j=pe();if(j!==window){const _=j.getComputedStyle(j.document.documentElement);N={top:Math.max(N.top,Ft(_.getPropertyValue("--safe-top-inset"))),right:Math.max(N.right,Ft(_.getPropertyValue("--safe-right-inset"))),bottom:Math.max(N.bottom,Ft(_.getPropertyValue("--safe-bottom-inset"))),left:Math.max(N.left,Ft(_.getPropertyValue("--safe-left-inset")))}}const U=sg(),O={top:Math.max(N.top,U.top),right:Math.max(N.right,U.right),bottom:Math.max(N.bottom,U.bottom),left:Math.max(N.left,U.left)};return document.documentElement.style.setProperty("--safe-top-inset",`${O.top}px`),document.documentElement.style.setProperty("--safe-right-inset",`${O.right}px`),document.documentElement.style.setProperty("--safe-bottom-inset",`${O.bottom}px`),document.documentElement.style.setProperty("--safe-left-inset",`${O.left}px`),O},w=(N,j,U,O)=>{const _=Math.max(j,U);if(i.current===0){i.current=_,a.current=N,document.documentElement.style.setProperty("--app-base-vh",`${_}px`);return}const D=Math.abs(N-a.current),F=O<=Tu;(D>_k||F)&&(i.current=_,a.current=N,document.documentElement.style.setProperty("--app-base-vh",`${_}px`))},C=(N="event")=>{d=null;const j=n(),U=Math.round(pe().visualViewport?.offsetTop??0),O=Is(pe().visualViewport?.height),_=O>=xt?O:j,D=Vn(),F=ng(),H=Math.max(0,_+U),q=y(),K=q.bottom,W=Math.max(0,i.current-H-K);w(F,D,H,W),s(Er=>Er===j?Er:j);const V=Number.parseInt(document.documentElement.style.getPropertyValue(e)||"0",10);document.documentElement.style.setProperty(e,`${j}px`),document.documentElement.style.setProperty("--app-vv-offset-top",`${U}px`);const G=i.current,X=Math.min(j,_),Z=Math.max(0,Math.min(G,H)),ae=Math.max(0,Math.round(G-X-K)),ke=aa(),Oe=Mk({measuredHeight:ae,documentVisible:document.visibilityState==="visible",editableFocused:ke}),te=Oe?ae:0,ze=te>=Tu,Gt=-te,Xt=te;document.documentElement.style.setProperty("--kb-translate-y",`${Gt}px`),document.documentElement.style.setProperty("--kb-margin-top",`${Xt}px`),document.documentElement.style.setProperty("--kb-height",`${te}px`),document.documentElement.style.setProperty("--app-visible-vh",`${Z}px`);const Fe=Math.abs(te-c.current)>1,Yt=ze!==l.current;(Fe||Yt)&&(c.current=te,l.current=ze,document.dispatchEvent(new CustomEvent(Dk,{detail:{baseHeight:G,visibleHeight:Z,visualViewportHeight:_,offsetTop:U,keyboardHeight:te,isOpen:ze,source:N}}))),(V!==j||U>0||Fe||Yt)&&r("sync",{cssVarName:e,innerHeight:D,baseHeight:G,rawViewportHeight:_,offsetTop:U,visibleHeight:Z,rawHeight:j,appliedHeight:j,keyboardViewportHeight:X,measuredKeyboardHeight:ae,editableFocused:ke,applyKeyboardInset:Oe,keyboardHeight:te,isKeyboardOpen:ze,safeAreaInsets:q,source:N}),document.dispatchEvent(new CustomEvent(Ok,{detail:{height:j,baseHeight:G,visibleHeight:Z,offsetTop:U,source:N}}))},b=()=>{d===null&&(d=window.requestAnimationFrame(()=>{d=null;const N=pe(),j=N.visualViewport,U=[N.innerWidth,N.innerHeight,j?.width,j?.height,j?.offsetTop,j?.offsetLeft,document.visibilityState,aa()].join(":"),O=f;f=null,(O||U!==h)&&(h=U,C(O||"viewport.settle")),performance.now()<u&&b()}))},A=(N="event")=>{(N.includes("visibilitychange")||N.includes("pageshow"))&&r("schedule",{source:N}),f=N,og()&&document.visibilityState==="visible"&&(u=performance.now()+Fk),b()};A("mount");const L=()=>A("resize"),I=()=>A("orientationchange"),R=()=>A("visualViewport.resize"),E=()=>A("visualViewport.scroll"),x=()=>A("focusin"),S=()=>A("focusout"),T=N=>{u=0;const j=document.activeElement;j instanceof HTMLElement&&aa()&&j.blur(),c.current=0,l.current=!1;const U=Math.max(i.current,Vn(),xt),O=document.documentElement.style;O.setProperty(e,`${U}px`),O.setProperty("--app-visible-vh",`${U}px`),O.setProperty("--app-vv-offset-top","0px"),O.setProperty("--kb-translate-y","0px"),O.setProperty("--kb-margin-top","0px"),O.setProperty("--kb-height","0px"),s(_=>_===U?_:U),r("keyboard session reset",{source:N,baseHeight:U})};window.addEventListener("resize",L),window.addEventListener("orientationchange",I),pe().visualViewport?.addEventListener("resize",R),pe().visualViewport?.addEventListener("scroll",E),document.addEventListener("focusin",x),document.addEventListener("focusout",S);const B=N=>{r("resume",{source:N,innerHeight:Math.round(window.innerHeight),visualViewport:pe().visualViewport?{width:Math.round(pe().visualViewport.width),height:Math.round(pe().visualViewport.height),offsetTop:Math.round(pe().visualViewport.offsetTop)}:null,hidden:document.hidden}),A(N)},v=()=>{document.hidden?T("visibilitychange:hidden"):B("visibilitychange")},k=()=>B("pageshow"),P=()=>T("pagehide");return document.addEventListener("visibilitychange",v),window.addEventListener("pageshow",k),window.addEventListener("pagehide",P),()=>{window.removeEventListener("resize",L),window.removeEventListener("orientationchange",I),pe().visualViewport?.removeEventListener("resize",R),pe().visualViewport?.removeEventListener("scroll",E),document.removeEventListener("focusin",x),document.removeEventListener("focusout",S),document.removeEventListener("visibilitychange",v),window.removeEventListener("pageshow",k),window.removeEventListener("pagehide",P),d!==null&&window.cancelAnimationFrame(d),g?.remove()}},[e,r,n]),o}const Lu=5*6e4;let rc,ig=!1,ag=!1,Bu=!1;const nc=new Set;function _u(){ig=!0,nc.forEach(t=>t())}function $k(){return M.useSyncExternalStore(t=>(nc.add(t),()=>{nc.delete(t)}),()=>ig,()=>!1)}function Hk(){window.dispatchEvent(new Event("termdock:before-update")),ag=!0,rc?.waiting?rc.waiting.postMessage({type:"SKIP_WAITING"}):window.location.reload()}function qk(t,e){let r=t;return()=>{if(!r){r=!0;return}e()}}function Kk(){if(Bu||typeof window>"u"||!("serviceWorker"in navigator))return;Bu=!0,navigator.serviceWorker.addEventListener("controllerchange",qk(!!navigator.serviceWorker.controller,()=>{ag?window.location.reload():_u()}));const t=()=>{navigator.serviceWorker.register("/sw.js",{scope:"/",updateViaCache:"none"}).then(e=>{rc=e;const r=()=>{e.waiting&&_u()},n=()=>{const i=e.installing;i?.addEventListener("statechange",()=>{i.state==="installed"&&navigator.serviceWorker.controller&&r()})};e.addEventListener("updatefound",n),n(),r();let o=0;const s=()=>{document.visibilityState!=="visible"||Date.now()-o<Lu||(o=Date.now(),e.update().then(r).catch(()=>{}))};s(),window.setInterval(s,Lu),document.addEventListener("visibilitychange",s)}).catch(()=>{})};document.readyState==="complete"?t():window.addEventListener("load",t,{once:!0})}function zk(){const t=$k(),[e,r]=M.useState(!1),{locale:n}=Zc();if(!t||e)return null;const o=n==="zh";return p.jsxs("div",{role:"status",className:"fixed bottom-16 left-1/2 z-toast flex max-w-[calc(100%-2rem)] -translate-x-1/2 items-center gap-3 rounded-lg border border-border bg-background px-4 py-3 text-sm text-foreground shadow-lg",children:[p.jsx("span",{children:o?"新版本已就绪":"An update is ready"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-primary",onClick:Hk,children:o?"重新加载":"Reload"}),p.jsx("button",{type:"button",className:"whitespace-nowrap text-muted-foreground",onClick:()=>r(!0),children:o?"稍后":"Later"})]})}function cg(t){const e=document.querySelector('meta[name="theme-color"]');e&&e.setAttribute("content",t==="light"?"#FFFCF0":"#1C1B1A")}const lg=M.createContext(void 0);function kC({children:t}){const e=M.useContext(lg),r=e===void 0?typeof document>"u"?null:document.body:e;return r?Ou.createPortal(t,r):null}const Wk={activeKey:"root",items:[]},Vk=()=>()=>{},Gk=()=>Wk;function Xk({host:t,item:e,visible:r,active:n}){const o=M.useRef(null);return M.useEffect(()=>{o.current?.toggleAttribute("inert",!n)},[n]),M.useLayoutEffect(()=>{const s=o.current;return()=>{try{const i=s?.contentWindow,a=i?.document.createEvent("Event");a&&(a.initEvent("termdock:before-update",!1,!1),i?.dispatchEvent(a))}catch{}t.attach(e.key,null)}},[t,e.key]),p.jsx("iframe",{ref:o,title:e.service?.label||"服务工作区","data-workspace-key":e.key,src:`/workspace.html?${tp}=${encodeURIComponent(e.key)}`,className:"fixed inset-0 w-full border-0 bg-[var(--chrome-bg)]",style:{height:"var(--app-base-vh, 100%)",visibility:r?"visible":"hidden",pointerEvents:n?"auto":"none"},"aria-hidden":!n,tabIndex:n?0:-1,allow:"clipboard-read; clipboard-write; fullscreen"})}function Yk({children:t}){const e=window.parent===window?Et():void 0,r=M.useSyncExternalStore(e?.subscribe||Vk,e?.snapshot||Gk),[n,o]=M.useState(null),[s,i]=M.useState(()=>r.activeKey==="root"?"root":null),[a,c]=M.useState(),[l,d]=M.useState(!1),[u,f]=M.useState(),h=r.items.find(b=>b.key===r.activeKey),g=h?.rendered||a===r.activeKey?r.activeKey:s,m=g!==r.activeKey,y=m&&s===null;M.useLayoutEffect(()=>{if(!m||y){f(void 0);return}const b=()=>{const A=Array.from(document.querySelectorAll("iframe[data-workspace-key]")).find(T=>T.dataset.workspaceKey===s),E=(s==="root"?n:A?.contentDocument)?.querySelector('nav[aria-label="切换服务"]')?.closest("[data-sidebar-gesture-ignore]")?.getBoundingClientRect();if(!E||E.width===0||E.right<=0){f(void 0);return}const x=A?.getBoundingClientRect(),S=E.top+(x?.top??0)>=160;f({left:E.left+(x?.left??0)+12,top:(S?E.top-8:E.bottom+8)+(x?.top??0),width:Math.max(0,E.width-24),transform:S?"translateY(-100%)":"none"})};return b(),window.addEventListener("resize",b),()=>window.removeEventListener("resize",b)},[m,y,s,n]),M.useLayoutEffect(()=>{e?.present(g),m||i(g),n?.toggleAttribute("inert",g!=="root"||m)},[e,n,g,m]),M.useEffect(()=>{if(d(!1),!m)return;const b=setTimeout(()=>d(!0),8e3);return()=>clearTimeout(b)},[r.activeKey,m]),M.useEffect(()=>{c(void 0)},[r.activeKey]);const w=r.items.find(b=>b.key===s),C=h?.phase==="offline"?"网络已断开,等待恢复…":h?.phase==="reconnecting"?"连接暂未恢复,正在重试…":l?"连接时间较长,仍在等待服务…":y?"正在恢复服务…":"正在切换服务…";return M.useEffect(()=>{if(!e)return;const b=()=>{try{const A=JSON.parse(localStorage.getItem("termdock-color-theme")||"null");(A==="dark"||A==="light")&&(document.documentElement.dataset.theme=A,cg(A))}catch{}};return window.addEventListener("storage",b),()=>window.removeEventListener("storage",b)},[e]),M.useEffect(()=>{if(!e||!("serviceWorker"in navigator))return;const b=I=>{if(I.source!==navigator.serviceWorker.controller)return;const R=I.data;R?.type==="termdock:focus-session"&&typeof R.targetPeerId=="string"&&typeof R.sessionId=="string"&&e.focusSession(R.targetPeerId,R.sessionId)&&(I.ports[0]?.postMessage({type:"termdock:focus-session-ack"}),I.stopImmediatePropagation())},A=async()=>{if("caches"in window)try{const I=await caches.open("termdock-notification-target-v1"),R=await I.match("/__termdock-notification-target");if(!R)return;const E=await R.json();typeof E.targetPeerId=="string"&&typeof E.sessionId=="string"&&Date.now()-E.clickedAt<3e4&&e.focusSession(E.targetPeerId,E.sessionId)&&await I.delete("/__termdock-notification-target")}catch{}},L=()=>{document.hidden||A()};return navigator.serviceWorker.addEventListener("message",b),document.addEventListener("visibilitychange",L),A(),()=>{navigator.serviceWorker.removeEventListener("message",b),document.removeEventListener("visibilitychange",L)}},[e]),e?p.jsxs("div",{className:"relative h-full w-full overflow-hidden bg-[var(--chrome-bg)]",children:[p.jsx("div",{ref:o,className:"isolate h-full w-full","aria-hidden":g!=="root"||m,style:{visibility:g==="root"?"visible":"hidden"},children:p.jsx(lg.Provider,{value:n,children:t})}),r.items.filter(b=>b.key!=="root").map(b=>p.jsx(Xk,{host:e,item:b,visible:g===b.key,active:!m&&g===b.key},b.key)),y&&p.jsx("div",{className:"termdock-boot z-modal-panel",role:"status","aria-live":"polite",children:l||h?.phase==="offline"||h?.phase==="reconnecting"?p.jsxs("div",{className:"flex max-w-xs flex-col items-center gap-3 text-center",children:[p.jsx(De,{size:16,className:"animate-spin motion-reduce:animate-none","aria-hidden":"true"}),p.jsx("div",{className:"max-w-full truncate text-sm",children:h?.service?.label||"Termdock"}),p.jsx("div",{className:"text-xs text-muted-foreground",children:C}),p.jsx("button",{type:"button",className:"min-h-11 rounded-lg bg-surface-2 px-4 text-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>c(r.activeKey),children:"查看连接页面"})]}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"termdock-boot-spinner","aria-hidden":"true"}),p.jsx("span",{children:"Loading Termdock"})]})}),m&&!y&&p.jsx("div",{className:"fixed inset-0 z-modal-panel flex items-end justify-center px-3 pb-[calc(env(safe-area-inset-bottom)+96px)]",role:"dialog","aria-modal":"true","aria-label":"切换服务",onKeyDown:b=>{if(b.key==="Escape"&&w?.service&&(b.preventDefault(),e.activate(w.service)),b.key==="Tab"){const A=Array.from(b.currentTarget.querySelectorAll("button")),L=A[0],I=A[A.length-1];b.shiftKey&&document.activeElement===L?(b.preventDefault(),I?.focus()):!b.shiftKey&&document.activeElement===I&&(b.preventDefault(),L?.focus())}},children:p.jsxs("div",{style:u?{position:"absolute",...u}:void 0,className:"flex w-full max-w-sm flex-wrap items-center gap-x-2 gap-y-1 rounded-xl border border-border bg-surface-elevated px-3 py-1.5 text-foreground shadow-lg",children:[p.jsxs("div",{role:"status","aria-live":"polite",className:"flex min-w-0 flex-1 items-center gap-2",children:[p.jsx(De,{size:16,className:"shrink-0 animate-spin text-primary motion-reduce:animate-none","aria-hidden":"true"}),p.jsxs("div",{className:"min-w-0",children:[p.jsx("div",{className:"truncate text-sm font-medium",children:h?.service?.label||"服务工作区"}),p.jsx("div",{className:"mt-1 text-xs text-muted-foreground",children:C})]})]}),p.jsxs("div",{className:"flex items-center justify-end gap-1",children:[l&&p.jsx("button",{type:"button",className:"min-h-11 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2",onClick:()=>c(r.activeKey),children:"查看连接页面"}),w?.service&&p.jsx("button",{type:"button",autoFocus:!0,"aria-label":"取消切换",className:"min-h-11 shrink-0 rounded-lg px-3 text-xs text-muted-foreground hover:bg-surface-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",onClick:()=>e.activate(w.service),children:"取消"})]})]})})]}):t}const Zk=M.lazy(()=>Wt(()=>import("./App-DIKT4Uzg.js").then(t=>t.A),__vite__mapDeps([4,2,1,5,6,3,7,8]))),Jk=M.lazy(()=>Wt(()=>import("./DagPlayground-DTocdzNw.js"),__vite__mapDeps([9,10,2,1,11,8,3])).then(t=>({default:t.DagPlayground}))),Qk=M.lazy(()=>Wt(()=>import("./DiffLab-wqbu2cMY.js"),__vite__mapDeps([12,2,1,13,7,14,3])).then(t=>({default:t.DiffLab}))),eC=M.lazy(()=>Wt(()=>import("./DiffReviewLab-CFRQkWps.js"),__vite__mapDeps([15,2,1,16,5,6,11,13,7,14,3])).then(t=>({default:t.DiffReviewLab})));Uk();fS();window.parent===window&&Kk();const Mn=ne();Mn&&Wt(()=>import("./App-DIKT4Uzg.js").then(t=>t.A),__vite__mapDeps([4,2,1,5,6,3,7,8])).catch(()=>{});!new URLSearchParams(location.search).has("dag-playground")&&!new URLSearchParams(location.search).has("diff-lab")&&!new URLSearchParams(location.search).has("diff-review-lab")&&(tS(Mn?{...Mn,id:Mn.targetPeerId,label:Mn.serviceName||location.host}:void 0),ap());try{const t=JSON.parse(window.localStorage.getItem("termdock-color-theme")||"null");(t==="dark"||t==="light")&&(document.documentElement.dataset.theme=t,cg(t))}catch{}SS.createRoot(document.getElementById("root")).render(p.jsx(qe.StrictMode,{children:p.jsxs(AA,{children:[window.parent===window&&p.jsx(zk,{}),p.jsx(Rk,{children:p.jsx(M.Suspense,{fallback:p.jsx("div",{className:"termdock-boot",role:"status",children:"Loading Termdock"}),children:(()=>{const t=new URLSearchParams(window.location.search);return t.get("dag-playground")==="1"?p.jsx(Jk,{}):t.get("diff-review-lab")==="1"?p.jsx(eC,{}):t.get("diff-lab")==="1"?p.jsx(Qk,{}):p.jsx(Yk,{children:p.jsx(Ak,{children:p.jsx(Zk,{})})})})()})})]})}));export{Bk as $,zc as A,BS as B,Fc as C,T1 as D,Cp as E,vC as F,ar as G,Y2 as H,X2 as I,H1 as J,I1 as K,De as L,Yx as M,ZE as N,g1 as O,XA as P,fo as Q,hr as R,Ws as S,XS as T,fC as U,Ok as V,Da as W,ZS as X,zA as Y,e2 as Z,Wt as _,dp as a,gA as a$,Pe as a0,p1 as a1,gi as a2,s2 as a3,F2 as a4,D1 as a5,o2 as a6,O2 as a7,eE as a8,Ap as a9,XE as aA,ME as aB,z1 as aC,L1 as aD,q1 as aE,Z2 as aF,Fp as aG,Et as aH,aa as aI,ih as aJ,Ch as aK,_2 as aL,Z1 as aM,t2 as aN,Op as aO,x2 as aP,E2 as aQ,m2 as aR,v2 as aS,y2 as aT,Si as aU,p as aV,uC as aW,B1 as aX,rA as aY,a2 as aZ,lA as a_,JE as aa,WA as ab,P1 as ac,nt as ad,Y1 as ae,X1 as af,Q1 as ag,h1 as ah,G2 as ai,z2 as aj,K2 as ak,W2 as al,W1 as am,S2 as an,H2 as ao,eA as ap,N2 as aq,J2 as ar,q2 as as,j2 as at,f2 as au,V2 as av,Cs as aw,F1 as ax,zn as ay,gp as az,NS as b,pC as b$,C2 as b0,N1 as b1,G1 as b2,uA as b3,U2 as b4,Sp as b5,M1 as b6,c2 as b7,w1 as b8,ut as b9,i2 as bA,cA as bB,cC as bC,JS as bD,oA as bE,Q2 as bF,nA as bG,dA as bH,ne as bI,I2 as bJ,wA as bK,uS as bL,E1 as bM,mA as bN,A1 as bO,v1 as bP,m1 as bQ,S1 as bR,C1 as bS,sA as bT,hA as bU,Bp as bV,f1 as bW,mi as bX,bC as bY,fA as bZ,aA as b_,B2 as ba,P2 as bb,L2 as bc,D2 as bd,EC as be,SC as bf,gC as bg,y1 as bh,QE as bi,hC as bj,$a as bk,iA as bl,l2 as bm,pA as bn,$1 as bo,U1 as bp,h2 as bq,d2 as br,K1 as bs,Lr as bt,p2 as bu,u2 as bv,k1 as bw,xC as bx,R1 as by,_1 as bz,OS as c,b1 as c0,lC as c1,cg as c2,aC as c3,J1 as c4,n2 as c5,V1 as c6,j1 as c7,Ut as c8,M2 as c9,Zc as ca,wC as cb,Ne as cc,AC as cd,pe as ce,R2 as cf,zs as cg,Ke as ch,yC as ci,mC as cj,gr as d,up as e,fp as f,Rk as g,kp as h,KS as i,hp as j,NA as k,ge as l,kC as m,x1 as n,Cc as o,It as p,tA as q,dC as r,A2 as s,b2 as t,Ic as u,T2 as v,Kx as w,r2 as x,m0 as y,YE as z};