viba-cli 0.1.3

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 (228) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +8 -0
  3. package/.next/build-manifest.json +20 -0
  4. package/.next/export-marker.json +6 -0
  5. package/.next/fallback-build-manifest.json +12 -0
  6. package/.next/images-manifest.json +67 -0
  7. package/.next/next-minimal-server.js.nft.json +1 -0
  8. package/.next/next-server.js.nft.json +1 -0
  9. package/.next/package.json +1 -0
  10. package/.next/prerender-manifest.json +114 -0
  11. package/.next/required-server-files.js +330 -0
  12. package/.next/required-server-files.json +330 -0
  13. package/.next/routes-manifest.json +89 -0
  14. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  15. package/.next/server/app/_global-error/page/build-manifest.json +17 -0
  16. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  17. package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  18. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  19. package/.next/server/app/_global-error/page.js +10 -0
  20. package/.next/server/app/_global-error/page.js.map +5 -0
  21. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  22. package/.next/server/app/_global-error/page_client-reference-manifest.js +2 -0
  23. package/.next/server/app/_global-error.html +2 -0
  24. package/.next/server/app/_global-error.meta +15 -0
  25. package/.next/server/app/_global-error.rsc +12 -0
  26. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  27. package/.next/server/app/_global-error.segments/_full.segment.rsc +12 -0
  28. package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  29. package/.next/server/app/_global-error.segments/_index.segment.rsc +4 -0
  30. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  31. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  32. package/.next/server/app/_not-found/page/build-manifest.json +17 -0
  33. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  34. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  35. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  36. package/.next/server/app/_not-found/page.js +15 -0
  37. package/.next/server/app/_not-found/page.js.map +5 -0
  38. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  39. package/.next/server/app/_not-found/page_client-reference-manifest.js +2 -0
  40. package/.next/server/app/_not-found.html +1 -0
  41. package/.next/server/app/_not-found.meta +16 -0
  42. package/.next/server/app/_not-found.rsc +14 -0
  43. package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -0
  44. package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  45. package/.next/server/app/_not-found.segments/_index.segment.rsc +5 -0
  46. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  47. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -0
  48. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
  49. package/.next/server/app/icon.png/route/app-paths-manifest.json +3 -0
  50. package/.next/server/app/icon.png/route/build-manifest.json +11 -0
  51. package/.next/server/app/icon.png/route.js +6 -0
  52. package/.next/server/app/icon.png/route.js.map +5 -0
  53. package/.next/server/app/icon.png/route.js.nft.json +1 -0
  54. package/.next/server/app/icon.png.body +0 -0
  55. package/.next/server/app/icon.png.meta +1 -0
  56. package/.next/server/app/index.html +1 -0
  57. package/.next/server/app/index.meta +14 -0
  58. package/.next/server/app/index.rsc +20 -0
  59. package/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -0
  60. package/.next/server/app/index.segments/_full.segment.rsc +20 -0
  61. package/.next/server/app/index.segments/_head.segment.rsc +6 -0
  62. package/.next/server/app/index.segments/_index.segment.rsc +5 -0
  63. package/.next/server/app/index.segments/_tree.segment.rsc +4 -0
  64. package/.next/server/app/new/page/app-paths-manifest.json +3 -0
  65. package/.next/server/app/new/page/build-manifest.json +17 -0
  66. package/.next/server/app/new/page/next-font-manifest.json +11 -0
  67. package/.next/server/app/new/page/react-loadable-manifest.json +1 -0
  68. package/.next/server/app/new/page/server-reference-manifest.json +245 -0
  69. package/.next/server/app/new/page.js +18 -0
  70. package/.next/server/app/new/page.js.map +5 -0
  71. package/.next/server/app/new/page.js.nft.json +1 -0
  72. package/.next/server/app/new/page_client-reference-manifest.js +2 -0
  73. package/.next/server/app/page/app-paths-manifest.json +3 -0
  74. package/.next/server/app/page/build-manifest.json +17 -0
  75. package/.next/server/app/page/next-font-manifest.json +11 -0
  76. package/.next/server/app/page/react-loadable-manifest.json +1 -0
  77. package/.next/server/app/page/server-reference-manifest.json +245 -0
  78. package/.next/server/app/page.js +18 -0
  79. package/.next/server/app/page.js.map +5 -0
  80. package/.next/server/app/page.js.nft.json +1 -0
  81. package/.next/server/app/page_client-reference-manifest.js +2 -0
  82. package/.next/server/app/session/[sessionId]/page/app-paths-manifest.json +3 -0
  83. package/.next/server/app/session/[sessionId]/page/build-manifest.json +17 -0
  84. package/.next/server/app/session/[sessionId]/page/next-font-manifest.json +11 -0
  85. package/.next/server/app/session/[sessionId]/page/react-loadable-manifest.json +1 -0
  86. package/.next/server/app/session/[sessionId]/page/server-reference-manifest.json +230 -0
  87. package/.next/server/app/session/[sessionId]/page.js +18 -0
  88. package/.next/server/app/session/[sessionId]/page.js.map +5 -0
  89. package/.next/server/app/session/[sessionId]/page.js.nft.json +1 -0
  90. package/.next/server/app/session/[sessionId]/page_client-reference-manifest.js +2 -0
  91. package/.next/server/app-paths-manifest.json +8 -0
  92. package/.next/server/chunks/[externals]_next_dist_a6d89067._.js +3 -0
  93. package/.next/server/chunks/[externals]_next_dist_a6d89067._.js.map +1 -0
  94. package/.next/server/chunks/[root-of-the-server]__c8bd587a._.js +21 -0
  95. package/.next/server/chunks/[root-of-the-server]__c8bd587a._.js.map +1 -0
  96. package/.next/server/chunks/[turbopack]_runtime.js +795 -0
  97. package/.next/server/chunks/[turbopack]_runtime.js.map +10 -0
  98. package/.next/server/chunks/_next-internal_server_app_icon_png_route_actions_fa3562e2.js +3 -0
  99. package/.next/server/chunks/_next-internal_server_app_icon_png_route_actions_fa3562e2.js.map +1 -0
  100. package/.next/server/chunks/ssr/[root-of-the-server]__0092b3d0._.js +3 -0
  101. package/.next/server/chunks/ssr/[root-of-the-server]__0092b3d0._.js.map +1 -0
  102. package/.next/server/chunks/ssr/[root-of-the-server]__0d3b7eea._.js +3 -0
  103. package/.next/server/chunks/ssr/[root-of-the-server]__0d3b7eea._.js.map +1 -0
  104. package/.next/server/chunks/ssr/[root-of-the-server]__11fa4345._.js +3 -0
  105. package/.next/server/chunks/ssr/[root-of-the-server]__11fa4345._.js.map +1 -0
  106. package/.next/server/chunks/ssr/[root-of-the-server]__2c2d9a9f._.js +3 -0
  107. package/.next/server/chunks/ssr/[root-of-the-server]__2c2d9a9f._.js.map +1 -0
  108. package/.next/server/chunks/ssr/[root-of-the-server]__30652385._.js +3 -0
  109. package/.next/server/chunks/ssr/[root-of-the-server]__30652385._.js.map +1 -0
  110. package/.next/server/chunks/ssr/[root-of-the-server]__4fb17f1e._.js +3 -0
  111. package/.next/server/chunks/ssr/[root-of-the-server]__4fb17f1e._.js.map +1 -0
  112. package/.next/server/chunks/ssr/[root-of-the-server]__606ef757._.js +3 -0
  113. package/.next/server/chunks/ssr/[root-of-the-server]__606ef757._.js.map +1 -0
  114. package/.next/server/chunks/ssr/[root-of-the-server]__62036393._.js +3 -0
  115. package/.next/server/chunks/ssr/[root-of-the-server]__62036393._.js.map +1 -0
  116. package/.next/server/chunks/ssr/[root-of-the-server]__69f5a83d._.js +3 -0
  117. package/.next/server/chunks/ssr/[root-of-the-server]__69f5a83d._.js.map +1 -0
  118. package/.next/server/chunks/ssr/[root-of-the-server]__78288fbe._.js +4 -0
  119. package/.next/server/chunks/ssr/[root-of-the-server]__78288fbe._.js.map +1 -0
  120. package/.next/server/chunks/ssr/[root-of-the-server]__7bf94cba._.js +3 -0
  121. package/.next/server/chunks/ssr/[root-of-the-server]__7bf94cba._.js.map +1 -0
  122. package/.next/server/chunks/ssr/[root-of-the-server]__91c2c151._.js +3 -0
  123. package/.next/server/chunks/ssr/[root-of-the-server]__91c2c151._.js.map +1 -0
  124. package/.next/server/chunks/ssr/[root-of-the-server]__a457c799._.js +3 -0
  125. package/.next/server/chunks/ssr/[root-of-the-server]__a457c799._.js.map +1 -0
  126. package/.next/server/chunks/ssr/[root-of-the-server]__a5d13d54._.js +3 -0
  127. package/.next/server/chunks/ssr/[root-of-the-server]__a5d13d54._.js.map +1 -0
  128. package/.next/server/chunks/ssr/[root-of-the-server]__cb11b5eb._.js +4 -0
  129. package/.next/server/chunks/ssr/[root-of-the-server]__cb11b5eb._.js.map +1 -0
  130. package/.next/server/chunks/ssr/[root-of-the-server]__d7127f3c._.js +3 -0
  131. package/.next/server/chunks/ssr/[root-of-the-server]__d7127f3c._.js.map +1 -0
  132. package/.next/server/chunks/ssr/[root-of-the-server]__e138fbba._.js +3 -0
  133. package/.next/server/chunks/ssr/[root-of-the-server]__e138fbba._.js.map +1 -0
  134. package/.next/server/chunks/ssr/[root-of-the-server]__e2f86be8._.js +3 -0
  135. package/.next/server/chunks/ssr/[root-of-the-server]__e2f86be8._.js.map +1 -0
  136. package/.next/server/chunks/ssr/[root-of-the-server]__edf0aa7a._.js +3 -0
  137. package/.next/server/chunks/ssr/[root-of-the-server]__edf0aa7a._.js.map +1 -0
  138. package/.next/server/chunks/ssr/[root-of-the-server]__f91abafd._.js +3 -0
  139. package/.next/server/chunks/ssr/[root-of-the-server]__f91abafd._.js.map +1 -0
  140. package/.next/server/chunks/ssr/[turbopack]_runtime.js +795 -0
  141. package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +10 -0
  142. package/.next/server/chunks/ssr/_3bf0a72b._.js +4 -0
  143. package/.next/server/chunks/ssr/_3bf0a72b._.js.map +1 -0
  144. package/.next/server/chunks/ssr/_5512ef6c._.js +6 -0
  145. package/.next/server/chunks/ssr/_5512ef6c._.js.map +1 -0
  146. package/.next/server/chunks/ssr/_62292aba._.js +9 -0
  147. package/.next/server/chunks/ssr/_62292aba._.js.map +1 -0
  148. package/.next/server/chunks/ssr/_9f0559fd._.js +6 -0
  149. package/.next/server/chunks/ssr/_9f0559fd._.js.map +1 -0
  150. package/.next/server/chunks/ssr/_eeb65f56._.js +4 -0
  151. package/.next/server/chunks/ssr/_eeb65f56._.js.map +1 -0
  152. package/.next/server/chunks/ssr/_ff04b309._.js +4 -0
  153. package/.next/server/chunks/ssr/_ff04b309._.js.map +1 -0
  154. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_75761787.js +3 -0
  155. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_75761787.js.map +1 -0
  156. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_554ec2bf.js +3 -0
  157. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_554ec2bf.js.map +1 -0
  158. package/.next/server/chunks/ssr/node_modules_d3586d0c._.js +3 -0
  159. package/.next/server/chunks/ssr/node_modules_d3586d0c._.js.map +1 -0
  160. package/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js +4 -0
  161. package/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js.map +1 -0
  162. package/.next/server/chunks/ssr/node_modules_next_dist_174ae28d._.js +10 -0
  163. package/.next/server/chunks/ssr/node_modules_next_dist_174ae28d._.js.map +1 -0
  164. package/.next/server/chunks/ssr/node_modules_next_dist_65e60196._.js +3 -0
  165. package/.next/server/chunks/ssr/node_modules_next_dist_65e60196._.js.map +1 -0
  166. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_9774470f._.js +3 -0
  167. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_9774470f._.js.map +1 -0
  168. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_45780354.js +3 -0
  169. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_45780354.js.map +1 -0
  170. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js +3 -0
  171. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js.map +1 -0
  172. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_15817684.js +3 -0
  173. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_15817684.js.map +1 -0
  174. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02f39477.js +4 -0
  175. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02f39477.js.map +1 -0
  176. package/.next/server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js +6 -0
  177. package/.next/server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js.map +1 -0
  178. package/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js +3 -0
  179. package/.next/server/chunks/ssr/node_modules_next_dist_f9713a08._.js.map +1 -0
  180. package/.next/server/chunks/ssr/src_app_0c8a77b8._.js +3 -0
  181. package/.next/server/chunks/ssr/src_app_0c8a77b8._.js.map +1 -0
  182. package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js +7 -0
  183. package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js.map +1 -0
  184. package/.next/server/functions-config-manifest.json +4 -0
  185. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  186. package/.next/server/middleware-build-manifest.js +21 -0
  187. package/.next/server/middleware-manifest.json +6 -0
  188. package/.next/server/next-font-manifest.js +1 -0
  189. package/.next/server/next-font-manifest.json +23 -0
  190. package/.next/server/pages/404.html +1 -0
  191. package/.next/server/pages/500.html +2 -0
  192. package/.next/server/pages-manifest.json +4 -0
  193. package/.next/server/server-reference-manifest.js +1 -0
  194. package/.next/server/server-reference-manifest.json +543 -0
  195. package/.next/static/chunks/0dfa5be743492ce2.js +2 -0
  196. package/.next/static/chunks/2821166934dd45eb.js +1 -0
  197. package/.next/static/chunks/502b96711c502bab.js +1 -0
  198. package/.next/static/chunks/8906ac8ef3ff98d4.js +4 -0
  199. package/.next/static/chunks/8d69e9f4553d4e60.css +3 -0
  200. package/.next/static/chunks/a6dad97d9634a72d.js +1 -0
  201. package/.next/static/chunks/a6dad97d9634a72d.js.map +1 -0
  202. package/.next/static/chunks/aee6c7720838f8a2.js +1 -0
  203. package/.next/static/chunks/be08234e26dea978.js +5 -0
  204. package/.next/static/chunks/d2be314c3ece3fbe.js +1 -0
  205. package/.next/static/chunks/e0f2772b94870c7d.js +7 -0
  206. package/.next/static/chunks/f22bcf2c1367768a.js +1 -0
  207. package/.next/static/chunks/f997a831de68afef.js +1 -0
  208. package/.next/static/chunks/ff1a16fafef87110.js +1 -0
  209. package/.next/static/chunks/turbopack-53cb197a85e106e9.js +4 -0
  210. package/.next/static/e8aTDAK_fufq5OYn8Yv56/_buildManifest.js +15 -0
  211. package/.next/static/e8aTDAK_fufq5OYn8Yv56/_clientMiddlewareManifest.json +1 -0
  212. package/.next/static/e8aTDAK_fufq5OYn8Yv56/_ssgManifest.js +1 -0
  213. package/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  214. package/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  215. package/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  216. package/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  217. package/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  218. package/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  219. package/.next/static/media/icon.a4b588e3.png +0 -0
  220. package/README.md +86 -0
  221. package/bin/viba.mjs +151 -0
  222. package/next.config.mjs +13 -0
  223. package/package.json +59 -0
  224. package/public/file.svg +1 -0
  225. package/public/globe.svg +1 -0
  226. package/public/next.svg +1 -0
  227. package/public/vercel.svg +1 -0
  228. package/public/window.svg +1 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[25333,a=>{a.v("/_next/static/media/icon.a4b588e3.png")},21646,a=>{"use strict";let b={src:a.i(25333).default,width:256,height:256};a.s(["default",0,b])}];
2
+
3
+ //# sourceMappingURL=src_app_0c8a77b8._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/app/icon.png.mjs%20%28structured%20image%20object%29"],"sourcesContent":["import src from \"IMAGE\";\nexport default { src, width: 256, height: 256 }\n"],"names":[],"mappings":"qGACe,CAAE,IADjB,AACiB,EADjB,CAAA,CAAA,OACiB,OAAG,CAAE,MAAO,IAAK,OAAQ,GAAI"}
@@ -0,0 +1,7 @@
1
+ module.exports=[96614,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(97382),f=a.i(5050);let g=(0,f.createServerReference)("401974845e8b893e57b06271120f2e0dd9dd2eaa7c",f.callServer,void 0,f.findSourceMapURL,"getSessionDivergence"),h=(0,f.createServerReference)("40527de37fa793b4c7dcf081c92e9b8b33a6826d6e",f.callServer,void 0,f.findSourceMapURL,"getSessionUncommittedFileCount"),i=(0,f.createServerReference)("40b0263e5c50b262c96b81783390506748191e98d9",f.callServer,void 0,f.findSourceMapURL,"listSessionBaseBranches"),j=(0,f.createServerReference)("4095912c74ec12106cdd1d1372b7fb51c53c4e880a",f.callServer,void 0,f.findSourceMapURL,"mergeSessionToBase"),k=(0,f.createServerReference)("40417af1d07b3f89c0cc05d4bc0ba01465eca5df99",f.callServer,void 0,f.findSourceMapURL,"rebaseSessionOntoBase"),l=(0,f.createServerReference)("60aadcc2052a71ce0ab91a4fb3f7fe24a10edc100b",f.callServer,void 0,f.findSourceMapURL,"updateSessionBaseBranch");var m=a.i(96857),n=a.i(41698),o=a.i(81560),p=a.i(70106);let q=(0,p.default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);var r=a.i(25015);let s=(0,p.default)("git-commit-horizontal",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]]),t=(0,p.default)("git-merge",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]]),u=(0,p.default)("git-pull-request-arrow",[["circle",{cx:"5",cy:"6",r:"3",key:"1qnov2"}],["path",{d:"M5 9v12",key:"ih889a"}],["circle",{cx:"19",cy:"18",r:"3",key:"1qljk2"}],["path",{d:"m15 9-3-3 3-3",key:"1lwv8l"}],["path",{d:"M12 6h5a2 2 0 0 1 2 2v7",key:"1yj91y"}]]),v=(0,p.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]),w=(0,p.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),x=(0,p.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]),y=(0,p.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),z=(0,p.default)("grip",[["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"19",cy:"5",r:"1",key:"w8mnmm"}],["circle",{cx:"5",cy:"5",r:"1",key:"lttvr7"}],["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"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}],["circle",{cx:"19",cy:"19",r:"1",key:"shf9b7"}],["circle",{cx:"5",cy:"19",r:"1",key:"bfqh0e"}]]),A=(0,p.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var B=a.i(88261);let C=(0,f.createServerReference)("4089a34a4fa4c9123a524f9106b28909b03b374a65",f.callServer,void 0,f.findSourceMapURL,"listPathEntries");var D=a.i(210),E=a.i(33441);let F=(0,p.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);var G=a.i(92596);let H=(0,p.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);var I=a.i(11431);function J({initialPath:a,onConfirm:d,onCancel:e}){let[f,g]=(0,c.useState)(""),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(!1),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(""),[p,q]=(0,c.useState)([]),[r,s]=(0,c.useState)(null);(0,c.useEffect)(()=>{let b=!0;return(async()=>{try{let c=await (0,B.getHomeDirectory)();if(!b)return;o(c),a||g(c)}catch(a){console.error("Failed to resolve home directory:",a)}a&&b&&g(a)})(),()=>{b=!1}},[a]),(0,c.useEffect)(()=>{f&&(async()=>{k(!0),m(null);try{let a=await C(f);i(a)}catch(a){console.error("Failed to list files:",a),m("Failed to load directory contents")}finally{k(!1)}})()},[f]),(0,c.useEffect)(()=>{q([]),s(null)},[f]);let t=(0,c.useMemo)(()=>new Set(p),[p]),u=async()=>{0!==p.length&&await d(p)};return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm p-4",children:(0,b.jsxs)("div",{className:"bg-base-200 rounded-lg shadow-xl w-full max-w-5xl h-[82vh] flex flex-col",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between p-4 border-b border-base-300",children:[(0,b.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,b.jsx)(G.Folder,{className:"w-5 h-5"}),"Browse Files"]}),(0,b.jsx)("button",{onClick:e,className:"btn btn-sm btn-ghost btn-circle",title:"Close file browser",children:"✕"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-base-300",children:[(0,b.jsx)("button",{onClick:()=>{let a=(0,I.getDirName)(f);a&&a!==f&&g(a)},className:"btn btn-sm btn-square btn-ghost",title:"Go Up",disabled:"/"===f||!f,children:(0,b.jsx)(D.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsxs)("button",{onClick:()=>{n&&f!==n&&g(n)},className:"btn btn-sm btn-ghost gap-1",title:n?`Go to Home Folder (${n})`:"Go to Home Folder",disabled:!n||f===n,children:[(0,b.jsx)(H,{className:"w-4 h-4"}),"Home"]}),(0,b.jsx)("div",{className:"flex-1 overflow-x-auto whitespace-nowrap px-2 font-mono text-sm",children:f}),(0,b.jsxs)("button",{onClick:u,className:"btn btn-sm btn-primary gap-2",disabled:0===p.length,title:"Insert selected absolute paths",children:[(0,b.jsx)(E.Check,{className:"w-4 h-4"}),"Insert (",p.length,")"]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto p-2",children:j?(0,b.jsx)("div",{className:"flex justify-center items-center h-full",children:(0,b.jsx)("span",{className:"loading loading-spinner loading-lg"})}):l?(0,b.jsx)("div",{className:"alert alert-error",children:l}):0===h.length?(0,b.jsx)("div",{className:"text-center text-base-content/50 mt-10",children:"Empty directory"}):(0,b.jsx)("div",{className:"grid grid-cols-1 gap-1",children:h.map((a,c)=>{let d=t.has(a.path);return(0,b.jsxs)("div",{className:`flex items-center justify-between p-2 rounded-md cursor-pointer transition-colors border ${d?"bg-primary text-primary-content border-primary":"hover:bg-base-100 border-transparent"}`,onClick:b=>((a,b,c)=>{if(a.isDirectory)return void g(a.path);let d=c.metaKey||c.ctrlKey;if(c.shiftKey&&null!==r){let a=Math.min(r,b),c=Math.max(r,b);q(h.slice(a,c+1).filter(a=>!a.isDirectory).map(a=>a.path));return}if(d){q(b=>b.includes(a.path)?b.filter(b=>b!==a.path):[...b,a.path]),s(b);return}q([a.path]),s(b)})(a,c,b),title:a.path,children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 overflow-hidden",children:[a.isDirectory?(0,b.jsx)(G.Folder,{className:"w-5 h-5 shrink-0"}):(0,b.jsx)(F,{className:"w-5 h-5 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a.name})]}),(0,b.jsx)("span",{className:"text-[10px] opacity-70 shrink-0",children:a.isDirectory?"folder":"file"})]},a.path)})})}),(0,b.jsx)("div",{className:"p-3 border-t border-base-300 text-xs text-base-content/60 text-center",children:"Click: single select. Cmd/Ctrl+Click: multi-select. Shift+Click: range select. Click a folder to open it."})]})})}let K=[{id:"vscode",name:"VS Code",protocol:"vscode"},{id:"cursor",name:"Cursor",protocol:"cursor"},{id:"windsurf",name:"Windsurf",protocol:"windsurf"},{id:"antigravity",name:"Antigravity",protocol:"antigravity"}],L=a=>`'${a.replace(/'/g,"'\\''")}'`;function M({repo:a,worktree:d,branch:f,baseBranch:p,sessionName:B,agent:C,model:D,startupScript:E,devServerScript:F,initialMessage:G,title:H,attachmentNames:M,onExit:N,isResume:O,onSessionStart:P}){let Q=(0,c.useRef)(null),R=(0,c.useRef)(null),[S,T]=(0,c.useState)("Initializing..."),[U,V]=(0,c.useState)("idle"),[W,X]=(0,c.useState)(null),[Y,Z]=(0,c.useState)(!1),[$,_]=(0,c.useState)(!1),[aa,ab]=(0,c.useState)(!1),[ac,ad]=(0,c.useState)(!1),[ae,af]=(0,c.useState)(!1),[ag,ah]=(0,c.useState)(!1),[ai,aj]=(0,c.useState)(p?.trim()||""),[ak,al]=(0,c.useState)([]),[am,an]=(0,c.useState)(!1),ao=(0,c.useRef)(!1),[ap,aq]=(0,c.useState)(!1),[ar,as]=(0,c.useState)({ahead:0,behind:0}),[at,au]=(0,c.useState)(0),[av,aw]=(0,c.useState)(!0),[ax,ay]=(0,c.useState)({width:460,height:320}),[az,aA]=(0,c.useState)(!1),[aB,aC]=(0,c.useState)(!1),aD=(0,c.useRef)({startX:0,startY:0,startWidth:0,startHeight:0});(0,c.useEffect)(()=>{let a=localStorage.getItem("viba-terminal-size");if(a)try{ay(JSON.parse(a))}catch(a){console.error("Failed to parse saved terminal size",a)}aC(!0)},[]),(0,c.useEffect)(()=>{if(!az)return;let a=a=>{let b=aD.current.startX-a.clientX,c=aD.current.startY-a.clientY;ay({width:Math.max(300,Math.min(window.innerWidth-32,aD.current.startWidth+b)),height:Math.max(100,Math.min(window.innerHeight-32,aD.current.startHeight+c))})},b=()=>{aA(!1)};return window.addEventListener("mousemove",a),window.addEventListener("mouseup",b),()=>{window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",b)}},[az]),(0,c.useEffect)(()=>{aB&&!az&&localStorage.setItem("viba-terminal-size",JSON.stringify(ax))},[aB,az,ax]),(0,c.useEffect)(()=>{if(!av&&R.current){let a=R.current;setTimeout(()=>{try{let b=a.contentWindow;if(b&&b.term){b.term.scrollToBottom(),b.focus();let c=a.contentDocument?.querySelector("textarea.xterm-helper-textarea");c&&c.focus()}}catch(a){console.error("Failed to focus/scroll terminal on restore:",a)}},100)}},[av]);let[aE,aF]=(0,c.useState)("vscode");(0,c.useEffect)(()=>{let a=H?.trim();if(a)return document.title=`${a} | Viba`,()=>{document.title="Viba"};document.title="Viba"},[H]),(0,c.useEffect)(()=>{(async()=>{let a=await (0,m.getConfig)();a.selectedIde&&K.some(b=>b.id===a.selectedIde)&&aF(a.selectedIde)})()},[]),(0,c.useEffect)(()=>{aj(p?.trim()||""),al([])},[p,B]);let aG=async a=>{let b=a.target.value;aF(b),await (0,n.updateConfig)({selectedIde:b})},aH=async(b=!0)=>{if(!a||!d||!f||b&&!confirm("Are you sure you want to delete this session? This will remove the branch and worktree."))return!1;for(let a of(X(null),V("running"),T("Cleaning up session..."),[Q.current,R.current]))if(a)try{a.onload=null,a.src="about:blank"}catch(a){console.error("Failed to unload iframe during cleanup:",a)}try{let a=await (0,e.deleteSession)(B);if(a.success)return N(!0),!0;let b=a.error||"Failed to clean up session";return X(b),T(`Cleanup failed: ${b}`),V("error"),!1}catch(b){let a=b instanceof Error?b.message:"Unexpected cleanup error";return X(a),T(`Cleanup failed: ${a}`),V("error"),!1}},aI=async()=>{await aH(!0)},aJ=(0,c.useCallback)((a,b)=>new Promise(c=>{let d=Q.current;if(!d)return void c(!1);let e=(g=0)=>{if(g>30)return void c(!1);try{let h=d.contentWindow;if(!h||(h.postMessage({type:"viba:agent-request",action:b,prompt:a,sessionName:B,branch:f,baseBranch:ai||void 0,timestamp:Date.now()},"*"),!h.term))return void setTimeout(()=>e(g+1),300);h.term.paste(a);let i=d.contentDocument?.querySelector("textarea.xterm-helper-textarea");i?(i.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:h})),i.focus()):h.term.paste("\r"),h.focus(),c(!0)}catch(a){console.error("Failed to send prompt to agent iframe:",a),setTimeout(()=>e(g+1),300)}};e()}),[f,ai,B]),aK=async()=>{_(!0),T("Requesting commit from agent..."),T(await aJ("Please create a git commit with the current changes in this worktree.","commit")?"Commit request sent to agent":"Failed to send commit request to agent"),_(!1)},aL=(0,c.useCallback)(a=>new Promise(b=>{let c=Q.current;if(!c)return void b(!1);let d=(e=0)=>{if(e>30)return void b(!1);try{let f=c.contentWindow;if(!f||!f.term)return void setTimeout(()=>d(e+1),300);f.term.paste(a);let g=c.contentDocument?.querySelector("textarea.xterm-helper-textarea");g&&g.focus(),f.focus(),b(!0)}catch(a){console.error("Failed to paste into agent iframe:",a),setTimeout(()=>d(e+1),300)}};d()}),[]),aM=(0,c.useCallback)(async a=>{if(0===a.length)return;ah(!0);let b=`${a.join(" ")} `;T(await aL(b)?`Inserted ${a.length} file path${1===a.length?"":"s"} into agent input`:"Failed to insert file paths into agent input"),ah(!1)},[aL]),aN=(0,c.useCallback)(async()=>{if(B&&!ao.current){ao.current=!0,an(!0);try{let a=await i(B);a.success?(al(a.branches??[]),aj(a.baseBranch?.trim()||"")):a.error&&T(`Failed to load branches: ${a.error}`)}catch(a){console.error("Failed to load base branches:",a)}finally{ao.current=!1,an(!1)}}},[B]);(0,c.useEffect)(()=>{B&&aN()},[aN,B]);let aO=(0,c.useCallback)(async()=>{if(B)try{let a=await g(B);a.success&&"number"==typeof a.ahead&&"number"==typeof a.behind&&as({ahead:a.ahead,behind:a.behind})}catch(a){console.error("Failed to load branch divergence:",a)}},[B]);(0,c.useEffect)(()=>{if(!B||!ai)return void as({ahead:0,behind:0});aO();let a=window.setInterval(()=>{aO()},6e4);return()=>window.clearInterval(a)},[ai,aO,B]);let aP=(0,c.useCallback)(async()=>{if(B)try{let a=await h(B);a.success&&"number"==typeof a.count&&au(a.count)}catch(a){console.error("Failed to load uncommitted file count:",a)}},[B]);(0,c.useEffect)(()=>{if(!B)return;aP();let a=window.setInterval(()=>{aP()},1e4);return()=>window.clearInterval(a)},[aP,B]);let aQ=async(a=!0)=>{if(!B||!ai||a&&!confirm(`Merge ${f} into ${ai}?`))return!1;ab(!0),T("Merging session branch...");try{let a=await j(B);if(a.success)return T(`Merged ${a.branchName} into ${a.baseBranch}`),aO(),!0;return T(`Merge failed: ${a.error}`),!1}catch(a){return console.error("Merge request failed:",a),T("Merge failed"),!1}finally{ab(!1)}},aR=async()=>{await aQ(!0)},[aS,aT]=(0,c.useState)(!1),aU=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=a=>{aU.current&&!aU.current.contains(a.target)&&aT(!1)};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[]);let aV=async a=>{if(aT(!1),!B)return;let b=a!==ai;if(confirm(`Rebase ${f} onto ${a}?`)){ad(!0),T(b?`Updating base to ${a} and rebasing...`:"Rebasing session branch...");try{if(b){let b=await l(B,a);if(!b.success){T(`Failed to update base branch: ${b.error}`),ad(!1);return}aj(b.baseBranch),await aN()}let c=await k(B);c.success?(T(`Rebased ${c.branchName} onto ${c.baseBranch}`),aO()):T(`Rebase failed: ${c.error}`)}catch(a){console.error("Rebase request failed:",a),T("Rebase failed")}finally{ad(!1)}}},aW=async()=>{d&&ai&&confirm(`Merge ${f} into ${ai}, then clean up and exit?`)&&await aQ(!1)&&await aH(!1)};if(!a)return(0,b.jsx)("div",{className:"p-4 text-error",children:"No repository specified"});if("running"===U)return(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-base-100",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4 text-center",children:[(0,b.jsx)("span",{className:"loading loading-spinner loading-lg text-primary"}),(0,b.jsx)("p",{className:"text-sm opacity-70",children:"Cleaning up session and closing terminals..."})]})});if("error"===U)return(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-base-100",children:(0,b.jsx)("div",{className:"card w-96 bg-base-200 shadow-xl",children:(0,b.jsxs)("div",{className:"card-body items-center text-center",children:[(0,b.jsx)("h2",{className:"card-title text-error",children:"Cleanup failed"}),(0,b.jsx)("p",{children:W||"An unknown error occurred while cleaning up this session."}),(0,b.jsx)("div",{className:"card-actions justify-end",children:(0,b.jsx)("button",{className:"btn btn-primary",onClick:()=>N(),children:"Back to Home"})})]})})});let aX=Array.from(new Set([...ai?[ai]:[],...ak])).filter(a=>a!==f||a===ai);return(0,b.jsxs)("div",{className:`flex flex-col h-screen w-full overflow-hidden bg-base-100 ${az?"select-none":""}`,children:[az&&(0,b.jsx)("div",{className:"fixed inset-0 z-[9999] cursor-nwse-resize"}),(0,b.jsxs)("div",{className:"z-20 bg-base-300/95 p-2 text-xs flex justify-between px-4 font-mono select-none items-center shadow-md backdrop-blur-sm border-b border-base-content/10",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("button",{className:"btn btn-ghost btn-xs h-6 min-h-6 px-1 hover:bg-base-content/10",onClick:()=>N(),title:"Back to Home",children:(0,b.jsx)(y,{className:"w-4 h-4"})}),(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"opacity-50",children:"Repo:"}),(0,b.jsx)("span",{className:"font-bold",children:(0,I.getBaseName)(a)})]}),B&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] opacity-70",children:[(0,b.jsx)("span",{children:"Session:"}),(0,b.jsx)("span",{children:B})]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center border border-base-content/20 rounded overflow-hidden",children:[(0,b.jsx)("select",{className:"select select-xs h-6 min-h-6 bg-base-200 border-none focus:outline-none rounded-none pr-7",value:aE,onChange:aG,children:K.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))}),(0,b.jsx)("div",{className:"w-[1px] h-4 bg-base-content/20"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs rounded-none h-6 min-h-6 border-none hover:bg-base-content/10",onClick:()=>{if(!d)return;let a=K.find(a=>a.id===aE);if(!a)return;let b=`${a.protocol}://file/${encodeURI(d)}`;window.open(b,"_blank")},title:`Open in ${K.find(a=>a.id===aE)?.name}`,children:[(0,b.jsx)(q,{className:"w-3 h-3"}),"Open"]})]}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs gap-1 h-6 min-h-6",onClick:()=>af(!0),disabled:ag,title:"Browse files and insert absolute paths into the agent input",children:[ag?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(x,{className:"w-3 h-3"}),"Insert Files"]}),F?.trim()&&(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs gap-1 h-6 min-h-6",onClick:()=>{let a=F?.trim();if(!a||!R.current)return;aw(!1);let b=R.current;Z(!0),T("Starting dev server...");let c=(d=0)=>{if(d>30){T("Failed to start dev server: terminal is not ready"),Z(!1);return}try{let e=b.contentWindow;if(e&&e.term){e.term.paste(a);let c=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");c?c.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:e})):e.term.paste("\r"),e.focus(),c&&c.focus(),T("Dev server start command sent"),Z(!1)}else setTimeout(()=>c(d+1),300)}catch(a){console.error("Dev server injection error",a),T("Failed to start dev server"),Z(!1)}};c()},disabled:Y,title:"Run dev server script in terminal",children:[Y?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(r.Play,{className:"w-3 h-3"}),"Start Dev Server"]}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs gap-1 h-6 min-h-6",onClick:aK,disabled:$,title:"Ask agent to create a commit with current changes",children:[$?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(s,{className:"w-3 h-3"}),"Commit (",at,")"]}),(0,b.jsxs)("div",{className:"flex items-center border border-base-content/20 rounded relative bg-base-100",ref:aU,children:[(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs rounded-none rounded-l h-6 min-h-6 border-none px-2 hover:bg-base-content/10",onClick:()=>{aT(!aS)},disabled:ac||aa||ap||"running"===U,title:"Select base branch and rebase",children:[ac?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(u,{className:"w-3 h-3"}),"Rebase",(0,b.jsx)(A,{className:"w-3 h-3 opacity-50 ml-0.5"})]}),aS&&(0,b.jsxs)("div",{className:"absolute top-full left-0 z-50 mt-1 w-64 p-0 shadow-xl dropdown-content bg-base-200 rounded-box border border-base-content/20 flex flex-col max-h-80 overflow-hidden",children:[(0,b.jsxs)("div",{className:"px-4 py-2 text-[10px] uppercase font-bold tracking-wider opacity-50 border-b border-base-content/10 bg-base-200 flex justify-between items-center shrink-0",children:[(0,b.jsx)("span",{children:"Select Base Branch"}),(am||ap)&&(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"})]}),(0,b.jsxs)("ul",{className:"menu p-0 overflow-y-auto flex-nowrap custom-scrollbar overflow-x-hidden w-full",children:[aX.length>0?aX.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{onClick:()=>aV(a),className:`flex justify-between items-center text-xs py-2 truncate max-w-full rounded-none ${a===ai?"active font-bold":""}`,title:a,children:[(0,b.jsx)("span",{className:"truncate",children:a}),a===ai&&(0,b.jsx)("span",{className:"opacity-70 text-[10px] ml-2 shrink-0",children:"(Current)"})]})},a)):(0,b.jsx)("li",{className:"text-xs px-4 py-2 opacity-50 italic text-center",children:"No other branches found"}),(0,b.jsx)("div",{className:"divider my-1 opacity-50"}),(0,b.jsx)("li",{children:(0,b.jsx)("button",{onClick:()=>void aN(),className:"text-[10px] justify-center opacity-70 hover:opacity-100",children:"Refresh Branches"})})]})]})]}),(0,b.jsx)("div",{className:"w-[1px] h-4 bg-base-content/10"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs btn-success rounded-none h-6 min-h-6 border-none px-2 hover:bg-success/20 hover:border-transparent",onClick:aR,disabled:aa||ac||ap||"running"===U||!ai,title:ai?`Merge current branch (${f}) into target branch (${ai})`:"Target branch unavailable for this session",children:[aa?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(t,{className:"w-3 h-3"}),"Merge"]}),(0,b.jsx)("div",{className:"w-[1px] h-4 bg-base-content/10"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-xs btn-warning rounded-none h-6 min-h-6 border-none px-2 hover:bg-warning/20 hover:border-transparent",onClick:aW,disabled:aa||ac||ap||"running"===U||!ai||!d,title:ai?`Merge current branch (${f}) into target branch (${ai}), then clean up and exit`:"Target branch unavailable for this session",children:[aa||"running"===U?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(t,{className:"w-3 h-3"}),"Merge & Purge"]}),(0,b.jsx)("div",{className:"w-[1px] h-4 bg-base-content/10"}),(0,b.jsxs)("button",{className:"btn btn-ghost btn-error btn-xs rounded-none rounded-r h-6 min-h-6 border-none px-2 hover:bg-error/20 hover:border-transparent",onClick:aI,disabled:"running"===U||aa||ac||!d,title:"Clean up and exit",children:["running"===U?(0,b.jsx)("span",{className:"loading loading-spinner loading-xs"}):(0,b.jsx)(o.Trash2,{className:"w-3 h-3"}),"Purge"]})]}),ai&&(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs opacity-80",title:`Divergence against ${ai}`,children:[(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(v,{className:"w-3 h-3"}),ar.ahead]}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(w,{className:"w-3 h-3"}),ar.behind]})]}),(0,b.jsx)("div",{className:"w-[1px] h-4 bg-base-content/20 mx-2"}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:`w-2 h-2 rounded-full ${S.includes("Error")||S.includes("failed")?"bg-error":S.includes("started")||S.includes("Merged")||S.includes("Rebased")||S.includes("sent")?"bg-success":"bg-warning"}`}),(0,b.jsx)("span",{children:S})]})]})]}),(0,b.jsx)("iframe",{ref:Q,src:"/terminal",className:`flex-1 w-full border-none dark:invert dark:brightness-90 ${az?"pointer-events-none":""}`,allow:"clipboard-read; clipboard-write",onLoad:()=>{if(!Q.current)return;let b=Q.current;try{b.contentWindow}catch(a){T("Error: Cross-Origin access blocked. Ensure proxy is working.");return}b.contentWindow&&(b.contentWindow.onbeforeunload=null,b.contentWindow.addEventListener("beforeunload",a=>{a.stopImmediatePropagation()},!0)),console.log("Iframe loaded, starting injection check..."),T("Connecting to terminal...");let c=(e=0)=>{if(e>30)return void T("Timeout waiting for terminal to be ready");try{let f=b.contentWindow;if(f&&f.term){let c=f.term;console.log("Terminal instance found");try{c.options.theme={...c.options.theme||{},selectionBackground:"rgba(59, 130, 246, 0.4)"}}catch{}let e=d||a,g=`cd ${L(e)}`;c.paste(g);let h=()=>{let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a?a.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:f})):c.paste("\r")};h(),C?setTimeout(()=>{let b="";if(O)b=C.toLowerCase().includes("gemini")?"gemini --resume latest":C.toLowerCase().includes("codex")?"codex resume --last":"agent"===C.toLowerCase()||C.toLowerCase().includes("cursor")?"agent resume":`${C} resume`;else{let c=H?`${H}
2
+
3
+ ${G||""}`:G||"";if(M&&M.length>0){let b=`${d||a}-attachments`,e=["Attachments:",...M.map(a=>`- ${b}/${a}`)].join("\n");c=c?`${c}
4
+
5
+ ${e}`:e}let e=c?` ${L(c)}`:"";if(C.toLowerCase().includes("codex"))b=`codex --model ${L(D||"gpt-5.3-codex")} --sandbox danger-full-access --ask-for-approval on-request --search${e}`;else if(C.toLowerCase().includes("gemini"))b=`gemini --model ${L(D||"gemini-3-pro-preview")} --yolo${e}`;else if("agent"===C.toLowerCase()||C.toLowerCase().includes("cursor"))b=`agent --model ${L(D||"opus-4.6-thinking")}${e}`;else{let a=D?.trim(),c=a?` --model ${L(a)}`:"";b=`${L(C)}${c}${e}`}}b&&(console.log("Injecting agent command:",b),c.paste(b),h(),T(O?`Resumed session with ${C}`:`Session started with ${C}`),!O&&P&&P())},500):(T(`Session started ${d?"(Worktree)":""}`),!O&&P&&P()),f.focus();let i=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");i&&i.focus()}else setTimeout(()=>c(e+1),500)}catch(a){console.error("Access error during injection:",a),T("Error accessing terminal: "+String(a))}};setTimeout(()=>c(),1e3)}}),(0,b.jsxs)("div",{className:`absolute bottom-4 right-4 z-30 overflow-hidden rounded-lg border border-base-content/20 bg-base-200/95 shadow-2xl backdrop-blur-sm ${az?"":"transition-all"}`,style:{width:ax.width,height:av?40:ax.height,maxWidth:"calc(100vw - 2rem)",maxHeight:"calc(100vh - 2rem)"},children:[(0,b.jsx)("div",{className:`absolute left-0 top-0 h-10 w-10 z-50 flex items-center justify-center text-base-content/30 hover:text-base-content/60 ${av?"pointer-events-none opacity-50":"cursor-nwse-resize"}`,onMouseDown:av?void 0:a=>{a.preventDefault(),a.stopPropagation(),aA(!0),aD.current={startX:a.clientX,startY:a.clientY,startWidth:ax.width,startHeight:ax.height}},title:av?void 0:"Drag to resize",children:(0,b.jsx)(z,{size:14})}),(0,b.jsxs)("button",{className:"flex h-10 w-full items-center justify-between px-3 pl-10 text-xs font-mono hover:bg-base-content/10",onClick:()=>aw(a=>!a),title:av?"Expand terminal":"Minimize terminal",type:"button",children:[(0,b.jsx)("span",{children:"Terminal"}),(0,b.jsx)("span",{className:"opacity-70",children:av?"Show":"Hide"})]}),(0,b.jsx)("div",{className:av?"h-0 overflow-hidden":"h-[calc(100%-2.5rem)]",children:(0,b.jsx)("iframe",{ref:R,src:"/terminal",className:`h-full w-full border-none dark:invert dark:brightness-90 ${az?"pointer-events-none":""}`,allow:"clipboard-read; clipboard-write",onLoad:()=>{if(!R.current)return;let b=R.current;console.log("Secondary terminal loaded");try{b.contentWindow}catch(a){console.error("Secondary terminal: Cross-Origin access blocked.");return}b.contentWindow&&(b.contentWindow.onbeforeunload=null,b.contentWindow.addEventListener("beforeunload",a=>{a.stopImmediatePropagation()},!0));let c=(e=0)=>{if(e>30)return void console.log("Timeout waiting for secondary terminal");try{let f=b.contentWindow;if(f&&f.term){let c=f.term;console.log("Secondary terminal instance found");try{c.options.theme={...c.options.theme||{},selectionBackground:"rgba(59, 130, 246, 0.4)"}}catch{}try{let a=()=>{c.buffer?.active&&(c.buffer.active.baseY,c.buffer.active.viewportY),c.scrollToBottom()};if(c.onWriteParsed)c.onWriteParsed(a);else{let c=b.contentDocument?.querySelector(".xterm-screen")||b.contentDocument?.body;c&&new MutationObserver(a).observe(c,{childList:!0,subtree:!0,characterData:!0})}}catch(a){console.error("Failed to setup auto-scroll:",a)}let e=d||a,g=`cd ${L(e)}`;c.paste(g);let h=()=>{let a=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");a?a.dispatchEvent(new KeyboardEvent("keypress",{bubbles:!0,cancelable:!0,charCode:13,keyCode:13,key:"Enter",view:f})):c.paste("\r")};h(),E&&!O&&setTimeout(()=>{console.log("Injecting startup script:",E),c.paste(E),h()},500),f.focus();let i=b.contentDocument?.querySelector("textarea.xterm-helper-textarea");i&&i.focus()}else setTimeout(()=>c(e+1),500)}catch(a){console.error("Secondary terminal injection error",a)}};setTimeout(()=>c(),1e3)}})})]}),ae&&(0,b.jsx)(J,{initialPath:d||a,onConfirm:a=>{af(!1),aM(a)},onCancel:()=>af(!1)})]})}let N=(0,f.createServerReference)("4007132f05e515e22f2b7f6531998ab280f8b9af88",f.callServer,void 0,f.findSourceMapURL,"consumeSessionLaunchContext"),O=(0,f.createServerReference)("406d93a9f5302d5d751c13ae8a503b79067ccd2805",f.callServer,void 0,f.findSourceMapURL,"getSessionMetadata"),P=(0,f.createServerReference)("4071b38a1170e560e06af76627444a07a95eab92fa",f.callServer,void 0,f.findSourceMapURL,"markSessionInitialized");var Q=a.i(41609);function R(){let a=(0,d.useParams)().sessionId,e=Array.isArray(a)?a[0]:a,f=(0,d.useRouter)(),[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(!0),[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(void 0),[o,p]=(0,c.useState)(void 0),[q,r]=(0,c.useState)([]),[s,t]=(0,c.useState)(void 0),[u,v]=(0,c.useState)(void 0),[w,x]=(0,c.useState)(void 0),[y,z]=(0,c.useState)(!0);(0,c.useEffect)(()=>{e&&(async()=>{try{if(!(await (0,Q.startTtydProcess)()).success){l("Failed to start terminal service"),j(!1);return}let a=await O(e);if(!a){l("Session not found"),j(!1);return}if(h(a),!1===a.initialized){let a=await N(e);if(a.success&&a.context){let b=a.context;n(b.initialMessage),p(b.startupScript),r(b.attachmentNames||[]),t(b.title),v(b.agentProvider),x(b.model)}z(!1)}else z(!0);j(!1)}catch(a){console.error("Failed to load session:",a),l("Failed to load session"),j(!1)}})()},[e]);let A=a=>{a?window.location.href="/":f.push("/")},B=async()=>{e&&await P(e)};return i?(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-base-100",children:(0,b.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,b.jsx)("span",{className:"loading loading-spinner loading-lg text-primary"}),(0,b.jsx)("p",{className:"opacity-60",children:"Loading session..."})]})}):k||!g?(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-base-100",children:(0,b.jsx)("div",{className:"card w-96 bg-base-200 shadow-xl",children:(0,b.jsxs)("div",{className:"card-body items-center text-center",children:[(0,b.jsx)("h2",{className:"card-title text-error",children:"Error"}),(0,b.jsx)("p",{children:k||"Session not found"}),(0,b.jsx)("div",{className:"card-actions justify-end",children:(0,b.jsx)("button",{className:"btn btn-primary",onClick:()=>A(),children:"Back to Home"})})]})})}):(0,b.jsx)(M,{repo:g.repoPath,worktree:g.worktreePath,branch:g.branchName,baseBranch:g.baseBranch,sessionName:g.sessionName,agent:u||g.agent,model:w||g.model,startupScript:o,devServerScript:g.devServerScript,initialMessage:m,title:s||g.title,attachmentNames:q,onExit:A,isResume:y,onSessionStart:B})}a.s(["default",()=>R],96614)}];
6
+
7
+ //# sourceMappingURL=src_app_session_%5BsessionId%5D_SessionPageClient_tsx_dab490d7._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/app/actions/data%3A2996d9%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3A3a662b%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3Ac13203%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3A664406%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3Aa4b108%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3Afdaa64%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3Aaa3381%20%3Ctext/javascript%3E","../../../../src/components/SessionFileBrowser.tsx","../../../../src/components/SessionView.tsx","../../../../src/app/actions/data%3A5813df%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3A19792f%20%3Ctext/javascript%3E","../../../../src/app/actions/data%3Ab90d6e%20%3Ctext/javascript%3E","../../../../src/app/session/%5BsessionId%5D/SessionPageClient.tsx","../../../../node_modules/lucide-react/src/icons/chevron-left.ts","../../../../node_modules/lucide-react/src/icons/chevron-down.ts","../../../../node_modules/lucide-react/src/icons/house.ts","../../../../node_modules/lucide-react/src/icons/git-commit-horizontal.ts","../../../../node_modules/lucide-react/src/icons/grip.ts","../../../../node_modules/lucide-react/src/icons/git-merge.ts","../../../../node_modules/lucide-react/src/icons/git-pull-request-arrow.ts","../../../../node_modules/lucide-react/src/icons/external-link.ts","../../../../node_modules/lucide-react/src/icons/file-text.ts","../../../../node_modules/lucide-react/src/icons/folder-open.ts","../../../../node_modules/lucide-react/src/icons/arrow-down.ts","../../../../node_modules/lucide-react/src/icons/arrow-up.ts"],"sourcesContent":["/* __next_internal_action_entry_do_not_use__ [{\"40527de37fa793b4c7dcf081c92e9b8b33a6826d6e\":\"getSessionUncommittedFileCount\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_10=/*#__PURE__*/createServerReference(\"40527de37fa793b4c7dcf081c92e9b8b33a6826d6e\",callServer,void 0,findSourceMapURL,\"getSessionUncommittedFileCount\");export{$$RSC_SERVER_ACTION_10 as getSessionUncommittedFileCount};","/* __next_internal_action_entry_do_not_use__ [{\"40b0263e5c50b262c96b81783390506748191e98d9\":\"listSessionBaseBranches\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_12=/*#__PURE__*/createServerReference(\"40b0263e5c50b262c96b81783390506748191e98d9\",callServer,void 0,findSourceMapURL,\"listSessionBaseBranches\");export{$$RSC_SERVER_ACTION_12 as listSessionBaseBranches};","/* __next_internal_action_entry_do_not_use__ [{\"4095912c74ec12106cdd1d1372b7fb51c53c4e880a\":\"mergeSessionToBase\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_8=/*#__PURE__*/createServerReference(\"4095912c74ec12106cdd1d1372b7fb51c53c4e880a\",callServer,void 0,findSourceMapURL,\"mergeSessionToBase\");export{$$RSC_SERVER_ACTION_8 as mergeSessionToBase};","/* __next_internal_action_entry_do_not_use__ [{\"40417af1d07b3f89c0cc05d4bc0ba01465eca5df99\":\"rebaseSessionOntoBase\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_9=/*#__PURE__*/createServerReference(\"40417af1d07b3f89c0cc05d4bc0ba01465eca5df99\",callServer,void 0,findSourceMapURL,\"rebaseSessionOntoBase\");export{$$RSC_SERVER_ACTION_9 as rebaseSessionOntoBase};","/* __next_internal_action_entry_do_not_use__ [{\"60aadcc2052a71ce0ab91a4fb3f7fe24a10edc100b\":\"updateSessionBaseBranch\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_13=/*#__PURE__*/createServerReference(\"60aadcc2052a71ce0ab91a4fb3f7fe24a10edc100b\",callServer,void 0,findSourceMapURL,\"updateSessionBaseBranch\");export{$$RSC_SERVER_ACTION_13 as updateSessionBaseBranch};","/* __next_internal_action_entry_do_not_use__ [{\"401974845e8b893e57b06271120f2e0dd9dd2eaa7c\":\"getSessionDivergence\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_11=/*#__PURE__*/createServerReference(\"401974845e8b893e57b06271120f2e0dd9dd2eaa7c\",callServer,void 0,findSourceMapURL,\"getSessionDivergence\");export{$$RSC_SERVER_ACTION_11 as getSessionDivergence};","/* __next_internal_action_entry_do_not_use__ [{\"4089a34a4fa4c9123a524f9106b28909b03b374a65\":\"listPathEntries\"},\"src/app/actions/git.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_1=/*#__PURE__*/createServerReference(\"4089a34a4fa4c9123a524f9106b28909b03b374a65\",callServer,void 0,findSourceMapURL,\"listPathEntries\");export{$$RSC_SERVER_ACTION_1 as listPathEntries};","'use client';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { getHomeDirectory, listPathEntries } from '@/app/actions/git';\nimport { ArrowLeft, Check, FileText, Folder, House } from 'lucide-react';\nimport { getDirName } from '@/lib/path';\n\ntype FileSystemItem = {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n};\n\ninterface SessionFileBrowserProps {\n initialPath?: string;\n onConfirm: (paths: string[]) => void | Promise<void>;\n onCancel: () => void;\n}\n\nexport default function SessionFileBrowser({\n initialPath,\n onConfirm,\n onCancel,\n}: SessionFileBrowserProps) {\n const [currentPath, setCurrentPath] = useState('');\n const [items, setItems] = useState<FileSystemItem[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [homePath, setHomePath] = useState('');\n const [selectedPaths, setSelectedPaths] = useState<string[]>([]);\n const [anchorIndex, setAnchorIndex] = useState<number | null>(null);\n\n useEffect(() => {\n let isMounted = true;\n\n const init = async () => {\n try {\n const home = await getHomeDirectory();\n if (!isMounted) return;\n setHomePath(home);\n if (!initialPath) {\n setCurrentPath(home);\n }\n } catch (err) {\n console.error('Failed to resolve home directory:', err);\n }\n\n if (initialPath && isMounted) {\n setCurrentPath(initialPath);\n }\n };\n\n void init();\n\n return () => {\n isMounted = false;\n };\n }, [initialPath]);\n\n useEffect(() => {\n if (!currentPath) return;\n\n const fetchItems = async () => {\n setLoading(true);\n setError(null);\n try {\n const entries = await listPathEntries(currentPath);\n setItems(entries);\n } catch (err) {\n console.error('Failed to list files:', err);\n setError('Failed to load directory contents');\n } finally {\n setLoading(false);\n }\n };\n\n void fetchItems();\n }, [currentPath]);\n\n useEffect(() => {\n setSelectedPaths([]);\n setAnchorIndex(null);\n }, [currentPath]);\n\n const selectedSet = useMemo(() => new Set(selectedPaths), [selectedPaths]);\n\n const handleGoUp = () => {\n const parent = getDirName(currentPath);\n if (parent && parent !== currentPath) {\n setCurrentPath(parent);\n }\n };\n\n const handleGoHome = () => {\n if (!homePath || currentPath === homePath) return;\n setCurrentPath(homePath);\n };\n\n const handleItemClick = (item: FileSystemItem, index: number, e: React.MouseEvent<HTMLDivElement>) => {\n if (item.isDirectory) {\n setCurrentPath(item.path);\n return;\n }\n\n const isMetaMulti = e.metaKey || e.ctrlKey;\n\n if (e.shiftKey && anchorIndex !== null) {\n const start = Math.min(anchorIndex, index);\n const end = Math.max(anchorIndex, index);\n const range = items\n .slice(start, end + 1)\n .filter((entry) => !entry.isDirectory)\n .map((entry) => entry.path);\n setSelectedPaths(range);\n return;\n }\n\n if (isMetaMulti) {\n setSelectedPaths((prev) =>\n prev.includes(item.path)\n ? prev.filter((path) => path !== item.path)\n : [...prev, item.path]\n );\n setAnchorIndex(index);\n return;\n }\n\n setSelectedPaths([item.path]);\n setAnchorIndex(index);\n };\n\n const handleConfirm = async () => {\n if (selectedPaths.length === 0) return;\n await onConfirm(selectedPaths);\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm p-4\">\n <div className=\"bg-base-200 rounded-lg shadow-xl w-full max-w-5xl h-[82vh] flex flex-col\">\n <div className=\"flex items-center justify-between p-4 border-b border-base-300\">\n <h2 className=\"text-xl font-bold flex items-center gap-2\">\n <Folder className=\"w-5 h-5\" />\n Browse Files\n </h2>\n <button onClick={onCancel} className=\"btn btn-sm btn-ghost btn-circle\" title=\"Close file browser\">\n ✕\n </button>\n </div>\n\n <div className=\"flex items-center gap-2 p-3 bg-base-300\">\n <button\n onClick={handleGoUp}\n className=\"btn btn-sm btn-square btn-ghost\"\n title=\"Go Up\"\n disabled={currentPath === '/' || !currentPath}\n >\n <ArrowLeft className=\"w-4 h-4\" />\n </button>\n <button\n onClick={handleGoHome}\n className=\"btn btn-sm btn-ghost gap-1\"\n title={homePath ? `Go to Home Folder (${homePath})` : 'Go to Home Folder'}\n disabled={!homePath || currentPath === homePath}\n >\n <House className=\"w-4 h-4\" />\n Home\n </button>\n <div className=\"flex-1 overflow-x-auto whitespace-nowrap px-2 font-mono text-sm\">\n {currentPath}\n </div>\n <button\n onClick={handleConfirm}\n className=\"btn btn-sm btn-primary gap-2\"\n disabled={selectedPaths.length === 0}\n title=\"Insert selected absolute paths\"\n >\n <Check className=\"w-4 h-4\" />\n Insert ({selectedPaths.length})\n </button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-2\">\n {loading ? (\n <div className=\"flex justify-center items-center h-full\">\n <span className=\"loading loading-spinner loading-lg\"></span>\n </div>\n ) : error ? (\n <div className=\"alert alert-error\">{error}</div>\n ) : items.length === 0 ? (\n <div className=\"text-center text-base-content/50 mt-10\">Empty directory</div>\n ) : (\n <div className=\"grid grid-cols-1 gap-1\">\n {items.map((item, index) => {\n const isSelected = selectedSet.has(item.path);\n return (\n <div\n key={item.path}\n className={`flex items-center justify-between p-2 rounded-md cursor-pointer transition-colors border ${isSelected\n ? 'bg-primary text-primary-content border-primary'\n : 'hover:bg-base-100 border-transparent'\n }`}\n onClick={(e) => handleItemClick(item, index, e)}\n title={item.path}\n >\n <div className=\"flex items-center gap-3 overflow-hidden\">\n {item.isDirectory ? (\n <Folder className=\"w-5 h-5 shrink-0\" />\n ) : (\n <FileText className=\"w-5 h-5 shrink-0\" />\n )}\n <span className=\"truncate\">{item.name}</span>\n </div>\n <span className=\"text-[10px] opacity-70 shrink-0\">\n {item.isDirectory ? 'folder' : 'file'}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n\n <div className=\"p-3 border-t border-base-300 text-xs text-base-content/60 text-center\">\n Click: single select. Cmd/Ctrl+Click: multi-select. Shift+Click: range select.\n Click a folder to open it.\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React, { useRef, useState, useEffect, useCallback } from 'react';\n// import { useRouter } from 'next/navigation';\nimport {\n deleteSession,\n getSessionDivergence,\n getSessionUncommittedFileCount,\n listSessionBaseBranches,\n mergeSessionToBase,\n rebaseSessionOntoBase,\n updateSessionBaseBranch\n} from '@/app/actions/session';\nimport { getConfig, updateConfig } from '@/app/actions/config';\nimport { Trash2, ExternalLink, Play, GitCommitHorizontal, GitMerge, GitPullRequestArrow, ArrowUp, ArrowDown, FolderOpen, ChevronLeft, Grip, ChevronDown } from 'lucide-react';\nimport SessionFileBrowser from './SessionFileBrowser';\nimport { getBaseName } from '@/lib/path';\n\nconst SUPPORTED_IDES = [\n { id: 'vscode', name: 'VS Code', protocol: 'vscode' },\n { id: 'cursor', name: 'Cursor', protocol: 'cursor' },\n { id: 'windsurf', name: 'Windsurf', protocol: 'windsurf' },\n { id: 'antigravity', name: 'Antigravity', protocol: 'antigravity' },\n];\n\ntype TerminalWindow = Window & {\n term?: {\n paste: (text: string) => void;\n options: {\n theme?: Record<string, string>;\n [key: string]: unknown;\n };\n };\n};\n\ntype CleanupPhase = 'idle' | 'running' | 'error';\n\nconst quoteShellArg = (value: string): string => `'${value.replace(/'/g, `'\\\\''`)}'`;\n\nexport interface SessionViewProps {\n repo: string;\n worktree: string;\n branch: string;\n baseBranch?: string;\n sessionName: string;\n agent?: string;\n model?: string;\n startupScript?: string;\n devServerScript?: string;\n initialMessage?: string;\n title?: string;\n attachmentNames?: string[];\n onExit: (force?: boolean) => void;\n isResume?: boolean;\n onSessionStart?: () => void;\n}\n\nexport function SessionView({\n repo,\n worktree,\n branch,\n baseBranch,\n sessionName,\n agent,\n model,\n startupScript,\n devServerScript,\n initialMessage,\n title,\n attachmentNames,\n onExit,\n isResume,\n onSessionStart\n}: SessionViewProps) {\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const terminalRef = useRef<HTMLIFrameElement>(null);\n\n const [feedback, setFeedback] = useState<string>('Initializing...');\n const [cleanupPhase, setCleanupPhase] = useState<CleanupPhase>('idle');\n const [cleanupError, setCleanupError] = useState<string | null>(null);\n const [isStartingDevServer, setIsStartingDevServer] = useState(false);\n const [isRequestingCommit, setIsRequestingCommit] = useState(false);\n const [isMerging, setIsMerging] = useState(false);\n const [isRebasing, setIsRebasing] = useState(false);\n const [isFileBrowserOpen, setIsFileBrowserOpen] = useState(false);\n const [isInsertingFilePaths, setIsInsertingFilePaths] = useState(false);\n const [currentBaseBranch, setCurrentBaseBranch] = useState(baseBranch?.trim() || '');\n const [baseBranchOptions, setBaseBranchOptions] = useState<string[]>([]);\n const [isLoadingBaseBranches, setIsLoadingBaseBranches] = useState(false);\n const isLoadingBaseBranchesRef = useRef(false);\n const [isUpdatingBaseBranch, setIsUpdatingBaseBranch] = useState(false);\n const [divergence, setDivergence] = useState({ ahead: 0, behind: 0 });\n const [uncommittedFileCount, setUncommittedFileCount] = useState(0);\n\n const [isTerminalMinimized, setIsTerminalMinimized] = useState(true);\n\n // Terminal resize state\n const [terminalSize, setTerminalSize] = useState({ width: 460, height: 320 });\n const [isResizing, setIsResizing] = useState(false);\n const [isLoaded, setIsLoaded] = useState(false);\n const resizeRef = useRef({ startX: 0, startY: 0, startWidth: 0, startHeight: 0 });\n\n useEffect(() => {\n const saved = localStorage.getItem('viba-terminal-size');\n if (saved) {\n try {\n setTerminalSize(JSON.parse(saved));\n } catch (e) {\n console.error('Failed to parse saved terminal size', e);\n }\n }\n setIsLoaded(true);\n }, []);\n\n const startResize = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsResizing(true);\n resizeRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n startWidth: terminalSize.width,\n startHeight: terminalSize.height\n };\n };\n\n useEffect(() => {\n if (!isResizing) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const deltaX = resizeRef.current.startX - e.clientX; // Dragging left increases width\n const deltaY = resizeRef.current.startY - e.clientY; // Dragging up increases height\n\n setTerminalSize({\n width: Math.max(300, Math.min(window.innerWidth - 32, resizeRef.current.startWidth + deltaX)),\n height: Math.max(100, Math.min(window.innerHeight - 32, resizeRef.current.startHeight + deltaY))\n });\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isResizing]);\n\n useEffect(() => {\n if (isLoaded && !isResizing) {\n localStorage.setItem('viba-terminal-size', JSON.stringify(terminalSize));\n }\n }, [isLoaded, isResizing, terminalSize]);\n\n // Auto-scroll and focus terminal when restored from minimized state\n useEffect(() => {\n if (!isTerminalMinimized && terminalRef.current) {\n const iframe = terminalRef.current;\n // Small delay to allow layout to update and iframe to render\n setTimeout(() => {\n try {\n const win = iframe.contentWindow as any;\n if (win && win.term) {\n win.term.scrollToBottom();\n win.focus();\n const textarea = iframe.contentDocument?.querySelector(\"textarea.xterm-helper-textarea\");\n if (textarea) (textarea as HTMLElement).focus();\n }\n } catch (e) {\n console.error('Failed to focus/scroll terminal on restore:', e);\n }\n }, 100);\n }\n }, [isTerminalMinimized]);\n\n // IDE Selection\n const [selectedIde, setSelectedIde] = useState<string>('vscode');\n\n useEffect(() => {\n const trimmedTitle = title?.trim();\n if (trimmedTitle) {\n document.title = `${trimmedTitle} | Viba`;\n return () => {\n document.title = 'Viba';\n };\n }\n\n document.title = 'Viba';\n return undefined;\n }, [title]);\n\n useEffect(() => {\n const loadConfig = async () => {\n const config = await getConfig();\n if (config.selectedIde && SUPPORTED_IDES.some(ide => ide.id === config.selectedIde)) {\n setSelectedIde(config.selectedIde);\n }\n };\n loadConfig();\n }, []);\n\n useEffect(() => {\n setCurrentBaseBranch(baseBranch?.trim() || '');\n setBaseBranchOptions([]);\n }, [baseBranch, sessionName]);\n\n const handleIdeChange = async (e: React.ChangeEvent<HTMLSelectElement>) => {\n const value = e.target.value;\n setSelectedIde(value);\n await updateConfig({ selectedIde: value });\n };\n\n const handleOpenIde = () => {\n if (!worktree) return;\n const ide = SUPPORTED_IDES.find(i => i.id === selectedIde);\n if (!ide) return;\n\n const uri = `${ide.protocol}://file/${encodeURI(worktree)}`;\n window.open(uri, '_blank');\n };\n\n const runCleanup = async (requireConfirmation = true): Promise<boolean> => {\n const unloadSessionIframes = () => {\n for (const frame of [iframeRef.current, terminalRef.current]) {\n if (!frame) continue;\n try {\n frame.onload = null;\n frame.src = 'about:blank';\n } catch (error) {\n console.error('Failed to unload iframe during cleanup:', error);\n }\n }\n };\n\n if (!repo || !worktree || !branch) return false;\n if (requireConfirmation && !confirm('Are you sure you want to delete this session? This will remove the branch and worktree.')) return false;\n\n setCleanupError(null);\n setCleanupPhase('running');\n setFeedback('Cleaning up session...');\n unloadSessionIframes();\n\n try {\n const result = await deleteSession(sessionName);\n if (result.success) {\n onExit(true);\n return true;\n }\n\n const message = result.error || 'Failed to clean up session';\n setCleanupError(message);\n setFeedback(`Cleanup failed: ${message}`);\n setCleanupPhase('error');\n return false;\n } catch (e) {\n const message = e instanceof Error ? e.message : 'Unexpected cleanup error';\n setCleanupError(message);\n setFeedback(`Cleanup failed: ${message}`);\n setCleanupPhase('error');\n return false;\n }\n };\n\n const handleCleanup = async () => {\n await runCleanup(true);\n };\n\n const sendPromptToAgentIframe = useCallback((prompt: string, action: string): Promise<boolean> => {\n return new Promise((resolve) => {\n const iframe = iframeRef.current;\n if (!iframe) {\n resolve(false);\n return;\n }\n\n const checkAndSend = (attempts = 0) => {\n if (attempts > 30) {\n resolve(false);\n return;\n }\n\n try {\n const win = iframe.contentWindow as TerminalWindow | null;\n if (!win) {\n setTimeout(() => checkAndSend(attempts + 1), 300);\n return;\n }\n\n win.postMessage(\n {\n type: 'viba:agent-request',\n action,\n prompt,\n sessionName,\n branch,\n baseBranch: currentBaseBranch || undefined,\n timestamp: Date.now(),\n },\n '*'\n );\n\n if (!win.term) {\n setTimeout(() => checkAndSend(attempts + 1), 300);\n return;\n }\n\n win.term.paste(prompt);\n\n const textarea = iframe.contentDocument?.querySelector(\"textarea.xterm-helper-textarea\");\n if (textarea) {\n textarea.dispatchEvent(new KeyboardEvent('keypress', {\n bubbles: true,\n cancelable: true,\n charCode: 13,\n keyCode: 13,\n key: 'Enter',\n view: win\n }));\n (textarea as HTMLElement).focus();\n } else {\n win.term.paste('\\r');\n }\n\n win.focus();\n resolve(true);\n } catch (e) {\n console.error('Failed to send prompt to agent iframe:', e);\n setTimeout(() => checkAndSend(attempts + 1), 300);\n }\n };\n\n checkAndSend();\n });\n }, [branch, currentBaseBranch, sessionName]);\n\n const handleCommit = async () => {\n setIsRequestingCommit(true);\n setFeedback('Requesting commit from agent...');\n\n const prompt = 'Please create a git commit with the current changes in this worktree.';\n const sent = await sendPromptToAgentIframe(prompt, 'commit');\n\n setFeedback(sent ? 'Commit request sent to agent' : 'Failed to send commit request to agent');\n setIsRequestingCommit(false);\n };\n\n const pasteIntoAgentIframe = useCallback((text: string): Promise<boolean> => {\n return new Promise((resolve) => {\n const iframe = iframeRef.current;\n if (!iframe) {\n resolve(false);\n return;\n }\n\n const checkAndPaste = (attempts = 0) => {\n if (attempts > 30) {\n resolve(false);\n return;\n }\n\n try {\n const win = iframe.contentWindow as TerminalWindow | null;\n if (!win || !win.term) {\n setTimeout(() => checkAndPaste(attempts + 1), 300);\n return;\n }\n\n win.term.paste(text);\n\n const textarea = iframe.contentDocument?.querySelector(\"textarea.xterm-helper-textarea\");\n if (textarea) {\n (textarea as HTMLElement).focus();\n }\n win.focus();\n resolve(true);\n } catch (e) {\n console.error('Failed to paste into agent iframe:', e);\n setTimeout(() => checkAndPaste(attempts + 1), 300);\n }\n };\n\n checkAndPaste();\n });\n }, []);\n\n const handleInsertFilePaths = useCallback(async (paths: string[]) => {\n if (paths.length === 0) return;\n\n setIsInsertingFilePaths(true);\n const textToInsert = `${paths.join(' ')} `;\n const inserted = await pasteIntoAgentIframe(textToInsert);\n setFeedback(\n inserted\n ? `Inserted ${paths.length} file path${paths.length === 1 ? '' : 's'} into agent input`\n : 'Failed to insert file paths into agent input'\n );\n setIsInsertingFilePaths(false);\n }, [pasteIntoAgentIframe]);\n\n const loadBaseBranchOptions = useCallback(async () => {\n if (!sessionName) return;\n if (isLoadingBaseBranchesRef.current) return;\n\n isLoadingBaseBranchesRef.current = true;\n setIsLoadingBaseBranches(true);\n\n try {\n const result = await listSessionBaseBranches(sessionName);\n if (result.success) {\n setBaseBranchOptions(result.branches ?? []);\n setCurrentBaseBranch(result.baseBranch?.trim() || '');\n } else if (result.error) {\n setFeedback(`Failed to load branches: ${result.error}`);\n }\n } catch (e) {\n console.error('Failed to load base branches:', e);\n } finally {\n isLoadingBaseBranchesRef.current = false;\n setIsLoadingBaseBranches(false);\n }\n }, [sessionName]);\n\n useEffect(() => {\n if (!sessionName) return;\n void loadBaseBranchOptions();\n }, [loadBaseBranchOptions, sessionName]);\n\n const loadSessionDivergence = useCallback(async () => {\n if (!sessionName) return;\n\n try {\n const result = await getSessionDivergence(sessionName);\n if (result.success && typeof result.ahead === 'number' && typeof result.behind === 'number') {\n setDivergence({ ahead: result.ahead, behind: result.behind });\n }\n } catch (e) {\n console.error('Failed to load branch divergence:', e);\n }\n }, [sessionName]);\n\n useEffect(() => {\n if (!sessionName || !currentBaseBranch) {\n setDivergence({ ahead: 0, behind: 0 });\n return;\n }\n\n void loadSessionDivergence();\n const timer = window.setInterval(() => {\n void loadSessionDivergence();\n }, 60000);\n\n return () => window.clearInterval(timer);\n }, [currentBaseBranch, loadSessionDivergence, sessionName]);\n\n const handleBaseBranchChange = async (e: React.ChangeEvent<HTMLSelectElement>) => {\n if (!sessionName) return;\n\n const nextBaseBranch = e.target.value.trim();\n if (!nextBaseBranch || nextBaseBranch === currentBaseBranch) return;\n\n setIsUpdatingBaseBranch(true);\n setFeedback(`Updating base branch to ${nextBaseBranch}...`);\n\n try {\n const result = await updateSessionBaseBranch(sessionName, nextBaseBranch);\n if (result.success && result.baseBranch) {\n setCurrentBaseBranch(result.baseBranch);\n setFeedback(`Base branch updated to ${result.baseBranch}`);\n await loadBaseBranchOptions();\n await loadSessionDivergence();\n } else {\n setFeedback(`Failed to update base branch: ${result.error}`);\n }\n } catch (error) {\n console.error('Failed to update base branch:', error);\n setFeedback('Failed to update base branch');\n } finally {\n setIsUpdatingBaseBranch(false);\n }\n };\n\n const loadUncommittedFileCount = useCallback(async () => {\n if (!sessionName) return;\n\n try {\n const result = await getSessionUncommittedFileCount(sessionName);\n if (result.success && typeof result.count === 'number') {\n setUncommittedFileCount(result.count);\n }\n } catch (e) {\n console.error('Failed to load uncommitted file count:', e);\n }\n }, [sessionName]);\n\n useEffect(() => {\n if (!sessionName) return;\n\n void loadUncommittedFileCount();\n const timer = window.setInterval(() => {\n void loadUncommittedFileCount();\n }, 10000);\n\n return () => window.clearInterval(timer);\n }, [loadUncommittedFileCount, sessionName]);\n\n const runMerge = async (requireConfirmation = true): Promise<boolean> => {\n if (!sessionName) return false;\n if (!currentBaseBranch) return false;\n if (requireConfirmation && !confirm(`Merge ${branch} into ${currentBaseBranch}?`)) return false;\n\n setIsMerging(true);\n setFeedback('Merging session branch...');\n\n try {\n const result = await mergeSessionToBase(sessionName);\n if (result.success) {\n setFeedback(`Merged ${result.branchName} into ${result.baseBranch}`);\n void loadSessionDivergence();\n return true;\n } else {\n setFeedback(`Merge failed: ${result.error}`);\n return false;\n }\n } catch (e) {\n console.error('Merge request failed:', e);\n setFeedback('Merge failed');\n return false;\n } finally {\n setIsMerging(false);\n }\n };\n\n const handleMerge = async () => {\n await runMerge(true);\n };\n\n const [isRebaseDropdownOpen, setIsRebaseDropdownOpen] = useState(false);\n const rebaseDropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (rebaseDropdownRef.current && !rebaseDropdownRef.current.contains(event.target as Node)) {\n setIsRebaseDropdownOpen(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const handleRebaseSelect = async (targetBranch: string) => {\n setIsRebaseDropdownOpen(false);\n if (!sessionName) return;\n\n const isNewBranch = targetBranch !== currentBaseBranch;\n\n // Ask for confirmation\n if (!confirm(`Rebase ${branch} onto ${targetBranch}?`)) return;\n\n setIsRebasing(true);\n setFeedback(isNewBranch ? `Updating base to ${targetBranch} and rebasing...` : 'Rebasing session branch...');\n\n try {\n if (isNewBranch) {\n const updateResult = await updateSessionBaseBranch(sessionName, targetBranch);\n if (!updateResult.success) {\n setFeedback(`Failed to update base branch: ${updateResult.error}`);\n setIsRebasing(false);\n return;\n }\n setCurrentBaseBranch(updateResult.baseBranch!);\n await loadBaseBranchOptions();\n }\n\n const result = await rebaseSessionOntoBase(sessionName);\n if (result.success) {\n setFeedback(`Rebased ${result.branchName} onto ${result.baseBranch}`);\n void loadSessionDivergence();\n } else {\n setFeedback(`Rebase failed: ${result.error}`);\n }\n } catch (e) {\n console.error('Rebase request failed:', e);\n setFeedback('Rebase failed');\n } finally {\n setIsRebasing(false);\n }\n };\n\n const handleRebase = () => {\n setIsRebaseDropdownOpen(!isRebaseDropdownOpen);\n };\n\n const handleMergeAndPurge = async () => {\n if (!worktree) return;\n if (!currentBaseBranch) return;\n if (!confirm(`Merge ${branch} into ${currentBaseBranch}, then clean up and exit?`)) return;\n\n const merged = await runMerge(false);\n if (!merged) return;\n\n await runCleanup(false);\n };\n\n const handleStartDevServer = () => {\n const script = devServerScript?.trim();\n if (!script || !terminalRef.current) return;\n\n // Auto-show terminal if minimized\n setIsTerminalMinimized(false);\n\n const iframe = terminalRef.current;\n setIsStartingDevServer(true);\n setFeedback('Starting dev server...');\n\n const checkAndInject = (attempts = 0) => {\n if (attempts > 30) {\n setFeedback('Failed to start dev server: terminal is not ready');\n setIsStartingDevServer(false);\n return;\n }\n\n try {\n const win = iframe.contentWindow as TerminalWindow | null;\n if (win && win.term) {\n win.term.paste(script);\n\n const textarea = iframe.contentDocument?.querySelector(\"textarea.xterm-helper-textarea\");\n if (textarea) {\n textarea.dispatchEvent(new KeyboardEvent('keypress', {\n bubbles: true,\n cancelable: true,\n charCode: 13,\n keyCode: 13,\n key: 'Enter',\n view: win\n }));\n } else {\n win.term.paste('\\r');\n }\n\n win.focus();\n if (textarea) (textarea as HTMLElement).focus();\n\n setFeedback('Dev server start command sent');\n setIsStartingDevServer(false);\n } else {\n setTimeout(() => checkAndInject(attempts + 1), 300);\n }\n } catch (e) {\n console.error('Dev server injection error', e);\n setFeedback('Failed to start dev server');\n setIsStartingDevServer(false);\n }\n };\n\n checkAndInject();\n };\n\n const handleIframeLoad = () => {\n if (!iframeRef.current) return;\n const iframe = iframeRef.current;\n\n // Safety check for Same-Origin to avoid errors if proxy isn't working\n try {\n // Just accessing contentWindow to see if it throws\n const _ = iframe.contentWindow;\n } catch (e) {\n setFeedback(\"Error: Cross-Origin access blocked. Ensure proxy is working.\");\n return;\n }\n\n if (iframe.contentWindow) {\n // Attempt to nullify the internal ttyd handler\n iframe.contentWindow.onbeforeunload = null;\n\n // Or add a high-priority listener that stops the popup\n iframe.contentWindow.addEventListener('beforeunload', (event) => {\n event.stopImmediatePropagation();\n }, true);\n }\n\n console.log('Iframe loaded, starting injection check...');\n setFeedback('Connecting to terminal...');\n\n const checkAndInject = (attempts = 0) => {\n if (attempts > 30) {\n setFeedback('Timeout waiting for terminal to be ready');\n return;\n }\n\n try {\n const win = iframe.contentWindow as TerminalWindow | null;\n if (win && win.term) {\n const term = win.term;\n console.log('Terminal instance found');\n\n // Set selection highlight color via xterm.js 5 theme API (canvas renderer)\n try {\n term.options.theme = {\n ...(term.options.theme || {}),\n selectionBackground: 'rgba(59, 130, 246, 0.4)',\n };\n } catch { /* ignore if API unavailable */ }\n\n // Attempt injection\n\n // User instructions:\n // 1. paste cd command\n // 2. dispatch keypress 13\n\n const targetPath = worktree || repo; // Fallback to repo if no worktree\n const cmd = `cd ${quoteShellArg(targetPath)}`;\n // Send cd command\n term.paste(cmd);\n\n // Helper to press enter\n const pressEnter = () => {\n const textarea = iframe.contentDocument?.querySelector(\"textarea.xterm-helper-textarea\");\n if (textarea) {\n textarea.dispatchEvent(new KeyboardEvent('keypress', {\n bubbles: true,\n cancelable: true,\n charCode: 13,\n keyCode: 13,\n key: 'Enter',\n view: win\n }));\n } else {\n term.paste('\\r');\n }\n };\n\n pressEnter();\n\n // Inject agent command if present\n if (agent) {\n setTimeout(() => {\n let agentCmd = '';\n\n if (isResume) {\n // Resume Logic\n if (agent.toLowerCase().includes('gemini')) {\n agentCmd = `gemini --resume latest`;\n } else if (agent.toLowerCase().includes('codex')) {\n agentCmd = `codex resume --last`;\n } else if (agent.toLowerCase() === 'agent' || agent.toLowerCase().includes('cursor')) {\n agentCmd = `agent resume`;\n } else {\n // Fallback for others? assuming generic resume\n agentCmd = `${agent} resume`;\n }\n } else {\n // Normal Start Logic\n let fullMessage = title ? `${title}\\n\\n${initialMessage || ''}` : (initialMessage || '');\n if (attachmentNames && attachmentNames.length > 0) {\n const attachmentBasePath = `${worktree || repo}-attachments`;\n const attachmentSection = [\n 'Attachments:',\n ...attachmentNames.map(name => `- ${attachmentBasePath}/${name}`)\n ].join('\\n');\n fullMessage = fullMessage ? `${fullMessage}\\n\\n${attachmentSection}` : attachmentSection;\n }\n const safeMessage = fullMessage ? ` ${quoteShellArg(fullMessage)}` : '';\n\n if (agent.toLowerCase().includes('codex')) {\n // Codex: codex --model gpt-5.3-codex --sandbox danger-full-access --ask-for-approval on-request --search\n agentCmd = `codex --model ${quoteShellArg(model || 'gpt-5.3-codex')} --sandbox danger-full-access --ask-for-approval on-request --search${safeMessage}`;\n } else if (agent.toLowerCase().includes('gemini')) {\n // Gemini: gemini --model gemini-3-pro-preview --yolo\n agentCmd = `gemini --model ${quoteShellArg(model || 'gemini-3-pro-preview')} --yolo${safeMessage}`;\n } else if (agent.toLowerCase() === 'agent' || agent.toLowerCase().includes('cursor')) {\n // Cursor: agent --model opus-4.6-thinking\n agentCmd = `agent --model ${quoteShellArg(model || 'opus-4.6-thinking')}${safeMessage}`;\n } else {\n // Generic fallback: <agent> --model <model>\n const fallbackModel = model?.trim();\n const fallbackModelArg = fallbackModel ? ` --model ${quoteShellArg(fallbackModel)}` : '';\n agentCmd = `${quoteShellArg(agent)}${fallbackModelArg}${safeMessage}`;\n }\n }\n\n if (agentCmd) {\n console.log('Injecting agent command:', agentCmd);\n term.paste(agentCmd);\n pressEnter();\n setFeedback(isResume ? `Resumed session with ${agent}` : `Session started with ${agent}`);\n\n if (!isResume && onSessionStart) {\n onSessionStart();\n }\n }\n }, 500); // Wait a bit for cd to finish\n } else {\n setFeedback(`Session started ${worktree ? '(Worktree)' : ''}`);\n if (!isResume && onSessionStart) {\n onSessionStart();\n }\n }\n\n // Focus the iframe\n win.focus();\n const textarea = iframe.contentDocument?.querySelector(\"textarea.xterm-helper-textarea\");\n if (textarea) (textarea as HTMLElement).focus();\n\n } else {\n // Not ready yet\n setTimeout(() => checkAndInject(attempts + 1), 500);\n }\n } catch (e) {\n console.error(\"Access error during injection:\", e);\n setFeedback('Error accessing terminal: ' + String(e));\n }\n };\n\n // Small delay to allow scripts to run\n setTimeout(() => checkAndInject(), 1000);\n };\n\n const handleTerminalLoad = () => {\n if (!terminalRef.current) return;\n const iframe = terminalRef.current;\n console.log('Secondary terminal loaded');\n\n // Safety check\n try {\n const _ = iframe.contentWindow;\n } catch (e) {\n console.error(\"Secondary terminal: Cross-Origin access blocked.\");\n return;\n }\n\n if (iframe.contentWindow) {\n // Attempt to nullify the internal ttyd handler\n iframe.contentWindow.onbeforeunload = null;\n\n // Or add a high-priority listener that stops the popup\n iframe.contentWindow.addEventListener('beforeunload', (event) => {\n event.stopImmediatePropagation();\n }, true);\n }\n\n const checkAndInject = (attempts = 0) => {\n if (attempts > 30) {\n console.log('Timeout waiting for secondary terminal');\n return;\n }\n\n try {\n const win = iframe.contentWindow as TerminalWindow | null;\n if (win && win.term) {\n const term = win.term;\n console.log('Secondary terminal instance found');\n\n // Set selection highlight color via xterm.js 5 theme API (canvas renderer)\n try {\n term.options.theme = {\n ...(term.options.theme || {}),\n selectionBackground: 'rgba(59, 130, 246, 0.4)',\n };\n } catch { /* ignore if API unavailable */ }\n\n // Enable auto-scroll to bottom on output\n try {\n const xterm = term as any;\n const scrollHandler = () => {\n // Only scroll if we are close to the bottom to allow reviewing history\n if (xterm.buffer?.active && (xterm.buffer.active.baseY - xterm.buffer.active.viewportY < 10)) {\n xterm.scrollToBottom();\n } else {\n // Fallback if buffer access fails or simple mode\n xterm.scrollToBottom();\n }\n };\n\n if (xterm.onWriteParsed) {\n xterm.onWriteParsed(scrollHandler);\n } else {\n // Fallback for older xterm or different setups\n const screen = iframe.contentDocument?.querySelector('.xterm-screen') || iframe.contentDocument?.body;\n if (screen) {\n const observer = new MutationObserver(scrollHandler);\n observer.observe(screen, { childList: true, subtree: true, characterData: true });\n }\n }\n } catch (e) {\n console.error('Failed to setup auto-scroll:', e);\n }\n\n const targetPath = worktree || repo;\n const cmd = `cd ${quoteShellArg(targetPath)}`;\n term.paste(cmd);\n\n const pressEnter = () => {\n const textarea = iframe.contentDocument?.querySelector(\"textarea.xterm-helper-textarea\");\n if (textarea) {\n textarea.dispatchEvent(new KeyboardEvent('keypress', {\n bubbles: true,\n cancelable: true,\n charCode: 13,\n keyCode: 13,\n key: 'Enter',\n view: win\n }));\n } else {\n term.paste('\\r');\n }\n };\n pressEnter();\n\n // Check for startup script\n if (startupScript && !isResume) {\n setTimeout(() => {\n console.log('Injecting startup script:', startupScript);\n term.paste(startupScript);\n pressEnter();\n }, 500);\n }\n\n // Focus\n win.focus();\n const textarea = iframe.contentDocument?.querySelector(\"textarea.xterm-helper-textarea\");\n if (textarea) (textarea as HTMLElement).focus();\n } else {\n setTimeout(() => checkAndInject(attempts + 1), 500);\n }\n } catch (e) {\n console.error(\"Secondary terminal injection error\", e);\n }\n };\n\n setTimeout(() => checkAndInject(), 1000);\n };\n\n if (!repo) return <div className=\"p-4 text-error\">No repository specified</div>;\n\n if (cleanupPhase === 'running') {\n return (\n <div className=\"flex h-screen w-full items-center justify-center bg-base-100\">\n <div className=\"flex flex-col items-center gap-4 text-center\">\n <span className=\"loading loading-spinner loading-lg text-primary\"></span>\n <p className=\"text-sm opacity-70\">Cleaning up session and closing terminals...</p>\n </div>\n </div>\n );\n }\n\n if (cleanupPhase === 'error') {\n return (\n <div className=\"flex h-screen w-full items-center justify-center bg-base-100\">\n <div className=\"card w-96 bg-base-200 shadow-xl\">\n <div className=\"card-body items-center text-center\">\n <h2 className=\"card-title text-error\">Cleanup failed</h2>\n <p>{cleanupError || 'An unknown error occurred while cleaning up this session.'}</p>\n <div className=\"card-actions justify-end\">\n <button className=\"btn btn-primary\" onClick={() => onExit()}>Back to Home</button>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n const selectableBaseBranches = Array.from(new Set([\n ...(currentBaseBranch ? [currentBaseBranch] : []),\n ...baseBranchOptions\n ])).filter((branchOption) => branchOption !== branch || branchOption === currentBaseBranch);\n\n return (\n <div className={`flex flex-col h-screen w-full overflow-hidden bg-base-100 ${isResizing ? 'select-none' : ''}`}>\n {isResizing && <div className=\"fixed inset-0 z-[9999] cursor-nwse-resize\" />}\n <div className=\"z-20 bg-base-300/95 p-2 text-xs flex justify-between px-4 font-mono select-none items-center shadow-md backdrop-blur-sm border-b border-base-content/10\">\n <div className=\"flex items-center gap-4\">\n <button\n className=\"btn btn-ghost btn-xs h-6 min-h-6 px-1 hover:bg-base-content/10\"\n onClick={() => onExit()}\n title=\"Back to Home\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n <div className=\"flex flex-col\">\n <div className=\"flex items-center gap-2\">\n <span className=\"opacity-50\">Repo:</span>\n <span className=\"font-bold\">{getBaseName(repo)}</span>\n </div>\n {sessionName && (\n <div className=\"flex items-center gap-2 text-[10px] opacity-70\">\n <span>Session:</span>\n <span>{sessionName}</span>\n </div>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <div className=\"flex items-center border border-base-content/20 rounded overflow-hidden\">\n <select\n className=\"select select-xs h-6 min-h-6 bg-base-200 border-none focus:outline-none rounded-none pr-7\"\n value={selectedIde}\n onChange={handleIdeChange}\n >\n {SUPPORTED_IDES.map(ide => (\n <option key={ide.id} value={ide.id}>{ide.name}</option>\n ))}\n </select>\n <div className=\"w-[1px] h-4 bg-base-content/20\"></div>\n <button\n className=\"btn btn-ghost btn-xs rounded-none h-6 min-h-6 border-none hover:bg-base-content/10\"\n onClick={handleOpenIde}\n title={`Open in ${SUPPORTED_IDES.find(i => i.id === selectedIde)?.name}`}\n >\n <ExternalLink className=\"w-3 h-3\" />\n Open\n </button>\n </div>\n\n <button\n className=\"btn btn-ghost btn-xs gap-1 h-6 min-h-6\"\n onClick={() => setIsFileBrowserOpen(true)}\n disabled={isInsertingFilePaths}\n title=\"Browse files and insert absolute paths into the agent input\"\n >\n {isInsertingFilePaths ? <span className=\"loading loading-spinner loading-xs\"></span> : <FolderOpen className=\"w-3 h-3\" />}\n Insert Files\n </button>\n\n {devServerScript?.trim() && (\n <button\n className=\"btn btn-ghost btn-xs gap-1 h-6 min-h-6\"\n onClick={handleStartDevServer}\n disabled={isStartingDevServer}\n title=\"Run dev server script in terminal\"\n >\n {isStartingDevServer ? <span className=\"loading loading-spinner loading-xs\"></span> : <Play className=\"w-3 h-3\" />}\n Start Dev Server\n </button>\n )}\n\n <button\n className=\"btn btn-ghost btn-xs gap-1 h-6 min-h-6\"\n onClick={handleCommit}\n disabled={isRequestingCommit}\n title=\"Ask agent to create a commit with current changes\"\n >\n {isRequestingCommit ? <span className=\"loading loading-spinner loading-xs\"></span> : <GitCommitHorizontal className=\"w-3 h-3\" />}\n Commit ({uncommittedFileCount})\n </button>\n\n\n\n <div className=\"flex items-center border border-base-content/20 rounded relative bg-base-100\" ref={rebaseDropdownRef}>\n <div className=\"relative\">\n <button\n className=\"btn btn-ghost btn-xs rounded-none rounded-l h-6 min-h-6 border-none px-2 hover:bg-base-content/10\"\n onClick={handleRebase}\n disabled={isRebasing || isMerging || isUpdatingBaseBranch || (cleanupPhase as string) === 'running'}\n title=\"Select base branch and rebase\"\n >\n {isRebasing ? <span className=\"loading loading-spinner loading-xs\"></span> : <GitPullRequestArrow className=\"w-3 h-3\" />}\n Rebase\n <ChevronDown className=\"w-3 h-3 opacity-50 ml-0.5\" />\n </button>\n {isRebaseDropdownOpen && (\n <div className=\"absolute top-full left-0 z-50 mt-1 w-64 p-0 shadow-xl dropdown-content bg-base-200 rounded-box border border-base-content/20 flex flex-col max-h-80 overflow-hidden\">\n <div className=\"px-4 py-2 text-[10px] uppercase font-bold tracking-wider opacity-50 border-b border-base-content/10 bg-base-200 flex justify-between items-center shrink-0\">\n <span>Select Base Branch</span>\n {(isLoadingBaseBranches || isUpdatingBaseBranch) && <span className=\"loading loading-spinner loading-xs\"></span>}\n </div>\n <ul className=\"menu p-0 overflow-y-auto flex-nowrap custom-scrollbar overflow-x-hidden w-full\">\n {selectableBaseBranches.length > 0 ? (\n selectableBaseBranches.map((branchOption) => (\n <li key={branchOption}>\n <button\n onClick={() => handleRebaseSelect(branchOption)}\n className={`flex justify-between items-center text-xs py-2 truncate max-w-full rounded-none ${branchOption === currentBaseBranch ? 'active font-bold' : ''}`}\n title={branchOption}\n >\n <span className=\"truncate\">{branchOption}</span>\n {branchOption === currentBaseBranch && <span className=\"opacity-70 text-[10px] ml-2 shrink-0\">(Current)</span>}\n </button>\n </li>\n ))\n ) : (\n <li className=\"text-xs px-4 py-2 opacity-50 italic text-center\">No other branches found</li>\n )}\n <div className=\"divider my-1 opacity-50\"></div>\n <li>\n <button onClick={() => void loadBaseBranchOptions()} className=\"text-[10px] justify-center opacity-70 hover:opacity-100\">\n Refresh Branches\n </button>\n </li>\n </ul>\n </div>\n )}\n </div>\n <div className=\"w-[1px] h-4 bg-base-content/10\"></div>\n <button\n className=\"btn btn-ghost btn-xs btn-success rounded-none h-6 min-h-6 border-none px-2 hover:bg-success/20 hover:border-transparent\"\n onClick={handleMerge}\n disabled={isMerging || isRebasing || isUpdatingBaseBranch || (cleanupPhase as string) === 'running' || !currentBaseBranch}\n title={currentBaseBranch ? `Merge current branch (${branch}) into target branch (${currentBaseBranch})` : 'Target branch unavailable for this session'}\n >\n {isMerging ? <span className=\"loading loading-spinner loading-xs\"></span> : <GitMerge className=\"w-3 h-3\" />}\n Merge\n </button>\n <div className=\"w-[1px] h-4 bg-base-content/10\"></div>\n <button\n className=\"btn btn-ghost btn-xs btn-warning rounded-none h-6 min-h-6 border-none px-2 hover:bg-warning/20 hover:border-transparent\"\n onClick={handleMergeAndPurge}\n disabled={isMerging || isRebasing || isUpdatingBaseBranch || (cleanupPhase as string) === 'running' || !currentBaseBranch || !worktree}\n title={currentBaseBranch ? `Merge current branch (${branch}) into target branch (${currentBaseBranch}), then clean up and exit` : 'Target branch unavailable for this session'}\n >\n {isMerging || (cleanupPhase as string) === 'running' ? <span className=\"loading loading-spinner loading-xs\"></span> : <GitMerge className=\"w-3 h-3\" />}\n Merge & Purge\n </button>\n <div className=\"w-[1px] h-4 bg-base-content/10\"></div>\n <button\n className=\"btn btn-ghost btn-error btn-xs rounded-none rounded-r h-6 min-h-6 border-none px-2 hover:bg-error/20 hover:border-transparent\"\n onClick={handleCleanup}\n disabled={(cleanupPhase as string) === 'running' || isMerging || isRebasing || !worktree}\n title=\"Clean up and exit\"\n >\n {(cleanupPhase as string) === 'running' ? <span className=\"loading loading-spinner loading-xs\"></span> : <Trash2 className=\"w-3 h-3\" />}\n Purge\n </button>\n </div>\n\n {currentBaseBranch && (\n <div className=\"flex items-center gap-2 text-xs opacity-80\" title={`Divergence against ${currentBaseBranch}`}>\n <span className=\"inline-flex items-center gap-1\">\n <ArrowUp className=\"w-3 h-3\" />\n {divergence.ahead}\n </span>\n <span className=\"inline-flex items-center gap-1\">\n <ArrowDown className=\"w-3 h-3\" />\n {divergence.behind}\n </span>\n </div>\n )}\n\n <div className=\"w-[1px] h-4 bg-base-content/20 mx-2\"></div>\n\n <div className=\"flex items-center gap-2\">\n <span className={`w-2 h-2 rounded-full ${feedback.includes('Error') || feedback.includes('failed') ? 'bg-error' : feedback.includes('started') || feedback.includes('Merged') || feedback.includes('Rebased') || feedback.includes('sent') ? 'bg-success' : 'bg-warning'}`}></span>\n <span>{feedback}</span>\n </div>\n\n </div>\n </div>\n\n {/* coding agent iframe */}\n <iframe\n ref={iframeRef}\n src=\"/terminal\"\n className={`flex-1 w-full border-none dark:invert dark:brightness-90 ${isResizing ? 'pointer-events-none' : ''}`}\n allow=\"clipboard-read; clipboard-write\"\n onLoad={handleIframeLoad}\n />\n\n {/* floating terminal panel */}\n <div\n className={`absolute bottom-4 right-4 z-30 overflow-hidden rounded-lg border border-base-content/20 bg-base-200/95 shadow-2xl backdrop-blur-sm ${isResizing ? '' : 'transition-all'}`}\n style={{\n width: terminalSize.width,\n height: isTerminalMinimized ? 40 : terminalSize.height,\n maxWidth: 'calc(100vw - 2rem)',\n maxHeight: 'calc(100vh - 2rem)'\n }}\n >\n <div\n className={`absolute left-0 top-0 h-10 w-10 z-50 flex items-center justify-center text-base-content/30 hover:text-base-content/60 ${isTerminalMinimized ? 'pointer-events-none opacity-50' : 'cursor-nwse-resize'}`}\n onMouseDown={!isTerminalMinimized ? startResize : undefined}\n title={isTerminalMinimized ? undefined : \"Drag to resize\"}\n >\n <Grip size={14} />\n </div>\n <button\n className=\"flex h-10 w-full items-center justify-between px-3 pl-10 text-xs font-mono hover:bg-base-content/10\"\n onClick={() => setIsTerminalMinimized((prev) => !prev)}\n title={isTerminalMinimized ? 'Expand terminal' : 'Minimize terminal'}\n type=\"button\"\n >\n <span>Terminal</span>\n <span className=\"opacity-70\">{isTerminalMinimized ? 'Show' : 'Hide'}</span>\n </button>\n <div className={isTerminalMinimized ? 'h-0 overflow-hidden' : 'h-[calc(100%-2.5rem)]'}>\n <iframe\n ref={terminalRef}\n src=\"/terminal\"\n className={`h-full w-full border-none dark:invert dark:brightness-90 ${isResizing ? 'pointer-events-none' : ''}`}\n allow=\"clipboard-read; clipboard-write\"\n onLoad={handleTerminalLoad}\n />\n </div>\n </div>\n\n {isFileBrowserOpen && (\n <SessionFileBrowser\n initialPath={worktree || repo}\n onConfirm={(paths) => {\n setIsFileBrowserOpen(false);\n void handleInsertFilePaths(paths);\n }}\n onCancel={() => setIsFileBrowserOpen(false)}\n />\n )}\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"4007132f05e515e22f2b7f6531998ab280f8b9af88\":\"consumeSessionLaunchContext\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_2=/*#__PURE__*/createServerReference(\"4007132f05e515e22f2b7f6531998ab280f8b9af88\",callServer,void 0,findSourceMapURL,\"consumeSessionLaunchContext\");export{$$RSC_SERVER_ACTION_2 as consumeSessionLaunchContext};","/* __next_internal_action_entry_do_not_use__ [{\"406d93a9f5302d5d751c13ae8a503b79067ccd2805\":\"getSessionMetadata\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_3=/*#__PURE__*/createServerReference(\"406d93a9f5302d5d751c13ae8a503b79067ccd2805\",callServer,void 0,findSourceMapURL,\"getSessionMetadata\");export{$$RSC_SERVER_ACTION_3 as getSessionMetadata};","/* __next_internal_action_entry_do_not_use__ [{\"4071b38a1170e560e06af76627444a07a95eab92fa\":\"markSessionInitialized\"},\"src/app/actions/session.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_6=/*#__PURE__*/createServerReference(\"4071b38a1170e560e06af76627444a07a95eab92fa\",callServer,void 0,findSourceMapURL,\"markSessionInitialized\");export{$$RSC_SERVER_ACTION_6 as markSessionInitialized};","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { useRouter, useParams } from 'next/navigation';\nimport { SessionView } from '@/components/SessionView';\nimport { consumeSessionLaunchContext, getSessionMetadata, SessionMetadata, markSessionInitialized } from '@/app/actions/session';\nimport { startTtydProcess } from '@/app/actions/git';\n\nexport default function SessionPage() {\n const params = useParams<{ sessionId: string }>();\n const sessionIdParam = params.sessionId;\n const sessionId = Array.isArray(sessionIdParam) ? sessionIdParam[0] : sessionIdParam;\n const router = useRouter();\n\n const [metadata, setMetadata] = useState<SessionMetadata | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n // Startup params — only populated on first open (initialized === false)\n const [initialMessage, setInitialMessage] = useState<string | undefined>(undefined);\n const [startupScript, setStartupScript] = useState<string | undefined>(undefined);\n const [attachmentNames, setAttachmentNames] = useState<string[]>([]);\n const [contextTitle, setContextTitle] = useState<string | undefined>(undefined);\n const [contextAgentProvider, setContextAgentProvider] = useState<string | undefined>(undefined);\n const [contextModel, setContextModel] = useState<string | undefined>(undefined);\n\n // True = send --resume to agent; False = send fresh start params\n const [isResume, setIsResume] = useState<boolean>(true);\n\n useEffect(() => {\n if (!sessionId) return;\n\n const loadSession = async () => {\n try {\n // Ensure ttyd is running\n const ttydResult = await startTtydProcess();\n if (!ttydResult.success) {\n setError('Failed to start terminal service');\n setLoading(false);\n return;\n }\n\n const data = await getSessionMetadata(sessionId);\n if (!data) {\n setError('Session not found');\n setLoading(false);\n return;\n }\n\n setMetadata(data);\n\n // Determine fresh start vs resume purely from the initialized flag:\n // - initialized === false → first open, send startup params\n // - initialized === true → already started before, resume\n // - initialized === undefined → legacy session (no flag), treat as resume\n const isFirstOpen = data.initialized === false;\n\n if (isFirstOpen) {\n // Consume the launch context (startup params) written by GitRepoSelector\n const contextResult = await consumeSessionLaunchContext(sessionId);\n if (contextResult.success && contextResult.context) {\n const ctx = contextResult.context;\n setInitialMessage(ctx.initialMessage);\n setStartupScript(ctx.startupScript);\n setAttachmentNames(ctx.attachmentNames || []);\n setContextTitle(ctx.title);\n setContextAgentProvider(ctx.agentProvider);\n setContextModel(ctx.model);\n }\n // Whether or not we got context, this is a fresh start\n setIsResume(false);\n } else {\n // Already initialized (or legacy) — resume\n setIsResume(true);\n }\n\n setLoading(false);\n } catch (e) {\n console.error('Failed to load session:', e);\n setError('Failed to load session');\n setLoading(false);\n }\n };\n\n loadSession();\n }, [sessionId]);\n\n const handleExit = (force?: boolean) => {\n if (force) {\n // Force a full page navigation — used after cleanup where\n // router.push can get stuck due to iframe teardown state\n window.location.href = '/';\n } else {\n router.push('/');\n }\n };\n\n // Called by SessionView once the agent command has been sent for the first time\n const handleSessionStart = async () => {\n if (sessionId) {\n await markSessionInitialized(sessionId);\n }\n };\n\n if (loading) {\n return (\n <div className=\"flex h-screen w-full items-center justify-center bg-base-100\">\n <div className=\"flex flex-col items-center gap-4\">\n <span className=\"loading loading-spinner loading-lg text-primary\"></span>\n <p className=\"opacity-60\">Loading session...</p>\n </div>\n </div>\n );\n }\n\n if (error || !metadata) {\n return (\n <div className=\"flex h-screen w-full items-center justify-center bg-base-100\">\n <div className=\"card w-96 bg-base-200 shadow-xl\">\n <div className=\"card-body items-center text-center\">\n <h2 className=\"card-title text-error\">Error</h2>\n <p>{error || 'Session not found'}</p>\n <div className=\"card-actions justify-end\">\n <button className=\"btn btn-primary\" onClick={() => handleExit()}>Back to Home</button>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <SessionView\n repo={metadata.repoPath}\n worktree={metadata.worktreePath}\n branch={metadata.branchName}\n baseBranch={metadata.baseBranch}\n sessionName={metadata.sessionName}\n agent={contextAgentProvider || metadata.agent}\n model={contextModel || metadata.model}\n startupScript={startupScript}\n devServerScript={metadata.devServerScript}\n initialMessage={initialMessage}\n title={contextTitle || metadata.title}\n attachmentNames={attachmentNames}\n onExit={handleExit}\n isResume={isResume}\n onSessionStart={handleSessionStart}\n />\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8', key: '5wwlr5' }],\n [\n 'path',\n {\n d: 'M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z',\n key: 'r6nss1',\n },\n ],\n];\n\n/**\n * @component @name House\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMjF2LThhMSAxIDAgMCAwLTEtMWgtNGExIDEgMCAwIDAtMSAxdjgiIC8+CiAgPHBhdGggZD0iTTMgMTBhMiAyIDAgMCAxIC43MDktMS41MjhsNy02YTIgMiAwIDAgMSAyLjU4MiAwbDcgNkEyIDIgMCAwIDEgMjEgMTB2OWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/house\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst House = createLucideIcon('house', __iconNode);\n\nexport default House;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n ['line', { x1: '3', x2: '9', y1: '12', y2: '12', key: '1dyftd' }],\n ['line', { x1: '15', x2: '21', y1: '12', y2: '12', key: 'oup4p8' }],\n];\n\n/**\n * @component @name GitCommitHorizontal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIzIiAvPgogIDxsaW5lIHgxPSIzIiB4Mj0iOSIgeTE9IjEyIiB5Mj0iMTIiIC8+CiAgPGxpbmUgeDE9IjE1IiB4Mj0iMjEiIHkxPSIxMiIgeTI9IjEyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/git-commit-horizontal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitCommitHorizontal = createLucideIcon('git-commit-horizontal', __iconNode);\n\nexport default GitCommitHorizontal;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '5', r: '1', key: 'gxeob9' }],\n ['circle', { cx: '19', cy: '5', r: '1', key: 'w8mnmm' }],\n ['circle', { cx: '5', cy: '5', r: '1', key: 'lttvr7' }],\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n ['circle', { cx: '12', cy: '19', r: '1', key: 'lyex9k' }],\n ['circle', { cx: '19', cy: '19', r: '1', key: 'shf9b7' }],\n ['circle', { cx: '5', cy: '19', r: '1', key: 'bfqh0e' }],\n];\n\n/**\n * @component @name Grip\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjUiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iMTkiIGN5PSI1IiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjUiIGN5PSI1IiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iMTkiIGN5PSIxMiIgcj0iMSIgLz4KICA8Y2lyY2xlIGN4PSI1IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxOSIgcj0iMSIgLz4KICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjE5IiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjUiIGN5PSIxOSIgcj0iMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/grip\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Grip = createLucideIcon('grip', __iconNode);\n\nexport default Grip;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '18', cy: '18', r: '3', key: '1xkwt0' }],\n ['circle', { cx: '6', cy: '6', r: '3', key: '1lh9wr' }],\n ['path', { d: 'M6 21V9a9 9 0 0 0 9 9', key: '7kw0sc' }],\n];\n\n/**\n * @component @name GitMerge\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE4IiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjYiIGN5PSI2IiByPSIzIiAvPgogIDxwYXRoIGQ9Ik02IDIxVjlhOSA5IDAgMCAwIDkgOSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/git-merge\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitMerge = createLucideIcon('git-merge', __iconNode);\n\nexport default GitMerge;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '5', cy: '6', r: '3', key: '1qnov2' }],\n ['path', { d: 'M5 9v12', key: 'ih889a' }],\n ['circle', { cx: '19', cy: '18', r: '3', key: '1qljk2' }],\n ['path', { d: 'm15 9-3-3 3-3', key: '1lwv8l' }],\n ['path', { d: 'M12 6h5a2 2 0 0 1 2 2v7', key: '1yj91y' }],\n];\n\n/**\n * @component @name GitPullRequestArrow\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSI1IiBjeT0iNiIgcj0iMyIgLz4KICA8cGF0aCBkPSJNNSA5djEyIiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iMTgiIHI9IjMiIC8+CiAgPHBhdGggZD0ibTE1IDktMy0zIDMtMyIgLz4KICA8cGF0aCBkPSJNMTIgNmg1YTIgMiAwIDAgMSAyIDJ2NyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/git-pull-request-arrow\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitPullRequestArrow = createLucideIcon('git-pull-request-arrow', __iconNode);\n\nexport default GitPullRequestArrow;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgOUg4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxM0g4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',\n key: 'usdka0',\n },\n ],\n];\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiAxNCAxLjUtMi45QTIgMiAwIDAgMSA5LjI0IDEwSDIwYTIgMiAwIDAgMSAxLjk0IDIuNWwtMS41NCA2YTIgMiAwIDAgMS0xLjk1IDEuNUg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDMuOWEyIDIgMCAwIDEgMS42OS45bC44MSAxLjJhMiAyIDAgMCAwIDEuNjcuOUgxOGEyIDIgMCAwIDEgMiAydjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon('folder-open', __iconNode);\n\nexport default FolderOpen;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 5v14', key: 's699le' }],\n ['path', { d: 'm19 12-7 7-7-7', key: '1idqje' }],\n];\n\n/**\n * @component @name ArrowDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNXYxNCIgLz4KICA8cGF0aCBkPSJtMTkgMTItNyA3LTctNyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowDown = createLucideIcon('arrow-down', __iconNode);\n\nexport default ArrowDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm5 12 7-7 7 7', key: 'hav0vg' }],\n ['path', { d: 'M12 19V5', key: 'x0mq9r' }],\n];\n\n/**\n * @component @name ArrowUp\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNSAxMiA3LTcgNyA3IiAvPgogIDxwYXRoIGQ9Ik0xMiAxOVY1IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-up\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowUp = createLucideIcon('arrow-up', __iconNode);\n\nexport default ArrowUp;\n"],"names":[],"mappings":"wDYEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OJCA,EAAA,EAAA,CAAA,CAAA,OHJuL,EAAA,EAAA,CAAA,CAAA,MAAsG,IAAM,EAAoC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,wBLAhI,EAAoC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,kCCAjJ,EAAoC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,2BCA/I,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,sBCAtI,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,yBCAvI,EAAoC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,2BIahb,IAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,+IYRW,CAAA,ADAR,ADAQ,ADAR,ADAQ,EIAK,2DAA4D,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,GZQ3F,IAAA,EAAA,EAAA,CAAA,CAAA,sIQT6C,iBAAW,CAAU,CAAA,kBAC3C,GAAI,qBAA0B,CIArC,AHA8B,AEAE,AHAK,GGAL,4GDDxB,GAAA,4DACiB,CCAH,ACAtB,AJAqB,AEAI,GAAK,aCgBxC,EAAA,CAAA,EAAA,EAAA,OAAA,AAAsB,EAAiB,CAAA,AFZF,CEYE,AFZF,wBEY4B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,8CAjBjE,cAAgB,sBACjB,GAAA,oPIaG,EAAA,OAAA,EAAA,gGDKlB,EAAA,CAAA,EAAA,EAAA,OAAA,AAAmB,EAAiB,eAAe,CAAA,CAAA,CAAA,CLZJ,AKYI,4OTrBd,WAAc,cCAA,CAAA,EDAkB,CCAF,ADAE,CAAA,ACAF,EAAA,UDAkB,CAAA,EQU1C,EAAA,CAAA,EJa9B,CAAA,CAAA,OAAA,EAAA,0EArBY,GAAA,cAAsB,4EAEtB,CMYP,AFZT,ACAA,AHAO,AFAS,AOYT,CLZA,AIYE,ADZT,ADAA,AGYO,APZS,COYT,AFZP,AHAO,AIYE,ANZO,AIAhB,WJAkC,CIAlC,AEY0B,AJZG,AGA7B,GLAuC,yEAE7B,IAAK,CAAA,CAAA,CAAI,AAAJ,OAAa,CAAA,CAAA,CAAA,CAAA,AAAK,IAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,WAC5C,CAAE,AAAF,EAAE,CAAI,CAAA,CAAA,CAAA,CAAA,SAAgB,CEYP,AFZO,CEYP,mBFX1B,CAAC,CIAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GJAY,GAAA,QAAc,CIAb,CAAA,CAAA,CAAA,AJAa,CAAA,AIAb,EJAsB,CIAtB,AJAsB,CIAtB,AJAsB,CIAtB,AJAsB,CIAtB,AJAsB,AAAK,CIAA,CAAA,CJAA,AIAA,CAAA,AJAA,AAAK,CIAA,AJAA,CAAA,AIAA,CAAA,AJAA,CIAA,AJAA,CAAA,AIAA,CAAA,AJAA,CIAA,AJAA,CAAA,IAC7C,SAAU,CAAE,GAAA,IAAS,CAAA,AKYL,ADZH,CCYG,ADZH,AJAQ,CAAA,eAAuB,CKYX,CAAA,MLZW,CKYI,ALZM,EACzD,gEHVwE,CDAH,ACAG,UAAW,EPAnF,IAAA,EAAA,EAAA,CAAA,CAAA,ODHoR,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,mBCIna,IAAA,EAAA,EAAA,CAAA,CAAA,KAAA,EAAA,EAAA,CAAA,CAAA,OcwBA,CAAA,GAAM,EAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAa,CAAA,CAAA,CAAA,CAAA,OArBtC,CAAA,ACAA,AHAN,0IEIa,CJAD,AIAC,CJAD,AIAC,4DACW,IAAA,UAAe,CJAA,AKYN,CLZM,AKYN,CLZM,AKYN,8CDVpB,CJYH,AIZG,CJYH,AIZG,CAAA,AJYH,QIZe,IAAK,CJYH,AIZG,CJYH,AIZG,SACjC,EdXA,IAAA,EAAA,EAAA,CAAA,CAAA,gBQqBc,CAAA,CAAA,OAAA,EAAiB,CMZH,ANYG,SArB5B,QAAU,CIAA,AFAA,ACAA,AFAA,CGAA,6CJAiD,CDYC,ADAA,AEZD,CFYC,AEZD,ADYC,CCZD,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,UAIvE,CAAA,AIAH,CAAA,AJAM,wGACH,GAAA,CAAA,aRJN,IAAA,EAAA,EAAA,CAAA,CAAA,OAee,SAAS,EAAmB,CACzC,aAAW,WACX,CAAS,UACT,CAAQ,CACgB,EACxB,GAAM,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAA2B,EAAE,EACjD,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACjC,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAwB,MAC5C,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACnC,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAmB,EAAE,EACzD,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAE9D,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KACR,IAAI,GAAY,EAqBhB,MAFK,AAjBQ,WACX,GAAI,CACF,IAAM,EAAO,MAAM,CAAA,EAAA,EAAA,gBAAA,AAAgB,IACnC,GAAI,CAAC,EAAW,OAChB,EAAY,GACR,AAAC,GACH,EAAe,EAEnB,CAAE,KAHkB,CAGX,EAAK,CACZ,QAAQ,KAAK,CAAC,oCAAqC,EACrD,CAEI,GAAe,GACjB,EAAe,GAEnB,GAHgC,CAOzB,KACL,GAAY,CACd,CACF,EAAG,CAAC,EAAY,EAEhB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,AAAK,GAgBA,CAhBD,AAEe,SAFD,CAGhB,GAAW,GACX,EAAS,MACT,GAAI,CACF,IAAM,EAAU,MAAM,EAAgB,GACtC,EAAS,EACX,CAAE,MAAO,EAAK,CACZ,QAAQ,KAAK,CAAC,wBAAyB,GACvC,EAAS,oCACX,QAAU,CACR,GAAW,EACb,EACF,GAGF,EAAG,CAAC,EAAY,EAEhB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,EAAiB,EAAE,EACnB,EAAe,KACjB,EAAG,CAAC,EAAY,EAEhB,IAAM,EAAc,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,IAAM,IAAI,IAAI,GAAgB,CAAC,EAAc,EA+CnE,EAAgB,UACS,GAAG,CAA5B,EAAc,MAAM,EACxB,MAAM,EAAU,EAClB,EAEA,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,gGACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qFACb,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,2EACb,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,sDACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YAAY,kBAGhC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,EAAU,UAAU,kCAAkC,MAAM,8BAAqB,SAKpG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oDACb,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,QAjES,CAiEA,IAhEjB,IAAM,EAAS,CAAA,EAAA,EAAA,UAAA,AAAU,EAAC,EACtB,IAAU,IAAW,GACvB,EAAe,EAEnB,EA6DU,IAhE8B,MAgEpB,kCACV,MAAM,QACN,SAA0B,MAAhB,GAAuB,CAAC,WAElC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAC,UAAU,cAEvB,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,QAlEW,CAkEF,IAjEZ,GAAY,IAAgB,GACjC,EAAe,EACjB,EAgEU,CAlEmC,SAkEzB,6BACV,MAAO,EAAW,CAAC,mBAAmB,EAAE,EAAS,CAAC,CAAC,CAAG,oBACtD,SAAU,CAAC,GAAY,IAAgB,YAEvC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAM,UAAU,YAAY,UAG/B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,2EACZ,IAEH,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,QAAS,EACT,UAAU,+BACV,SAAmC,IAAzB,EAAc,MAAM,CAC9B,MAAM,2CAEN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,YAAY,WACpB,EAAc,MAAM,CAAC,UAIlC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,sCACZ,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,mDACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yCAEhB,EACF,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,6BAAqB,IACjB,IAAjB,EAAM,MAAM,CACd,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,kDAAyC,oBAExD,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,kCACZ,EAAM,GAAG,CAAC,CAAC,EAAM,KAChB,IAAM,EAAa,EAAY,GAAG,CAAC,EAAK,IAAI,EAC5C,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAEC,UAAW,CAAC,yFAAyF,EAAE,EACnG,iDACA,uCAAA,CACA,CACJ,QAAU,AAAD,GAAO,CAvGV,CAAC,EAAsB,EAAe,KAC5D,GAAI,EAAK,WAAW,CAAE,YACpB,EAAe,EAAK,IAAI,EAI1B,IAAM,EAAc,EAAE,OAAO,EAAI,EAAE,OAAO,CAE1C,GAAI,EAAE,QAAQ,EAAoB,OAAhB,EAAsB,CACtC,IAAM,EAAQ,KAAK,GAAG,CAAC,EAAa,GAC9B,EAAM,KAAK,GAAG,CAAC,EAAa,GAKlC,EAJc,EACX,KAAK,CAAC,EAAO,EAAM,GACnB,AAEc,MAFR,CAAC,AAAC,GAAU,CAAC,EAAM,WAAW,EACpC,GAAG,CAAC,AAAC,GAAU,EAAM,IAAI,GAE5B,MACF,CAEA,GAAI,EAAa,CACf,EAAiB,AAAC,GAChB,EAAK,QAAQ,CAAC,EAAK,IAAI,EACnB,EAAK,MAAM,CAAC,AAAC,GAAS,IAAS,EAAK,IAAI,EACxC,IAAI,EAAM,EAAK,IAAI,CAAC,EAE1B,EAAe,GACf,MACF,CAEA,EAAiB,CAAC,EAAK,IAAI,CAAC,EAC5B,EAAe,GACjB,EAwEkD,EAAM,EAAO,GAC7C,MAAO,EAAK,IAAI,WAEhB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oDACZ,EAAK,WAAW,CACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,qBAElB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,UAAU,qBAEtB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oBAAY,EAAK,IAAI,MAEvC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,2CACb,EAAK,WAAW,CAAG,SAAW,WAjB5B,EAAK,IAAI,CAqBpB,OAKN,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,iFAAwE,kHAO/F,CCpNA,IAAM,EAAiB,CACnB,CAAE,GAAI,SAAU,KAAM,UAAW,SAAU,QAAS,EACpD,CAAE,GAAI,SAAU,KAAM,SAAU,SAAU,QAAS,EACnD,CAAE,GAAI,WAAY,KAAM,WAAY,SAAU,UAAW,EACzD,CAAE,GAAI,cAAe,KAAM,cAAe,SAAU,aAAc,EACrE,CAcK,EAAgB,AAAC,GAA0B,CAAC,CAAC,EAAE,EAAM,OAAO,CAAC,KAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAoB7E,SAAS,EAAY,MACxB,CAAI,UACJ,CAAQ,CACR,QAAM,YACN,CAAU,aACV,CAAW,OACX,CAAK,OACL,CAAK,eACL,CAAa,iBACb,CAAe,gBACf,CAAc,OACd,CAAK,iBACL,CAAe,QACf,CAAM,UACN,CAAQ,gBACR,CAAc,CACC,EACf,IAAM,EAAY,CAAA,EAAA,EAAA,MAAA,AAAM,EAAoB,MACtC,EAAc,CAAA,EAAA,EAAA,MAAA,AAAM,EAAoB,MAExC,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAS,mBAC3C,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAe,QACzD,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAwB,MAC1D,CAAC,EAAqB,EAAuB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACzD,CAAC,EAAoB,EAAsB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACvD,CAAC,GAAW,GAAa,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACrC,CAAC,GAAY,GAAc,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,GAAS,GACvC,CAAC,GAAmB,GAAqB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACrD,CAAC,GAAsB,GAAwB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC3D,CAAC,GAAmB,GAAqB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,GAAY,QAAU,IAC3E,CAAC,GAAmB,GAAqB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAW,EAAE,EACjE,CAAC,GAAuB,GAAyB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC7D,GAA2B,CAAA,EAAA,EAAA,MAAA,AAAM,GAAC,GAClC,CAAC,GAAsB,GAAwB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC3D,CAAC,GAAY,GAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CAAE,MAAO,EAAG,OAAQ,CAAE,GAC7D,CAAC,GAAsB,GAAwB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,GAE3D,CAAC,GAAqB,GAAuB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAGzD,CAAC,GAAc,GAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,CAAE,MAAO,IAAK,OAAQ,GAAI,GACrE,CAAC,GAAY,GAAc,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACvC,CAAC,GAAU,GAAY,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,GAAS,GACnC,GAAY,CAAA,EAAA,EAAA,MAAA,AAAM,EAAC,CAAE,OAAQ,EAAG,OAAQ,EAAG,WAAY,EAAG,YAAa,CAAE,GAE/E,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACN,IAAM,EAAQ,aAAa,OAAO,CAAC,sBACnC,GAAI,EACA,GAAI,CACA,CAFG,EAEa,KAAK,KAAK,CAAC,GAC/B,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,sCAAuC,EACzD,CAEJ,GAAY,GAChB,EAAG,EAAE,EAcL,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACN,GAAI,CAAC,GAAY,OAEjB,IAAM,EAAkB,AAAC,IACrB,IAAM,EAAS,GAAU,OAAO,CAAC,MAAM,CAAG,EAAE,OAAO,CAC7C,CAD+C,CACtC,GAAU,OAAO,CAAC,MAAM,CAAG,EAAE,OAAO,CAEnD,CAFqD,EAErC,AAHqE,CAIjF,MAAO,KAAK,GAAG,CAAC,IAAK,KAAK,GAAG,CAHmD,AAGlD,OAAO,UAAU,CAAG,GAAI,GAAU,OAAO,CAAC,UAAU,CAAG,IACrF,OAAQ,KAAK,GAAG,CAAC,IAAK,KAAK,GAAG,CAAC,OAAO,WAAW,CAAG,GAAI,GAAU,OAAO,CAAC,WAAW,CAAG,GAC5F,EACJ,EAEM,EAAgB,KAClB,GAAc,GAClB,EAIA,OAFA,OAAO,gBAAgB,CAAC,YAAa,GACrC,OAAO,gBAAgB,CAAC,UAAW,GAC5B,KACH,OAAO,mBAAmB,CAAC,YAAa,GACxC,OAAO,mBAAmB,CAAC,UAAW,EAC1C,CACJ,EAAG,CAAC,GAAW,EAEf,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACF,IAAY,CAAC,IACb,QADyB,KACZ,OAAO,CAAC,qBAAsB,KAAK,SAAS,CAAC,IAElE,EAAG,CAAC,GAAU,GAAY,GAAa,EAGvC,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACN,GAAI,CAAC,IAAuB,EAAY,OAAO,CAAE,CAC7C,IAAM,EAAS,EAAY,OAAO,CAElC,WAAW,KACP,GAAI,CACA,IAAM,EAAM,EAAO,aAAa,CAChC,GAAI,GAAO,EAAI,IAAI,CAAE,CACjB,EAAI,IAAI,CAAC,cAAc,GACvB,EAAI,KAAK,GACT,IAAM,EAAW,EAAO,eAAe,EAAE,cAAc,kCACnD,GAAW,EAAyB,KAAK,EACjD,CACJ,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,8CAA+C,EACjE,CACJ,EAAG,IACP,CACJ,EAAG,CAAC,GAAoB,EAGxB,GAAM,CAAC,GAAa,GAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAS,UAEvD,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KACN,IAAM,EAAe,GAAO,OAC5B,GAAI,EAEA,OADA,KADc,IACL,KAAK,CAAG,CAAA,EAAG,EAAa,OAAO,CAAC,CAClC,KACH,SAAS,KAAK,CAAG,MACrB,CAGJ,UAAS,KAAK,CAAG,MAErB,EAAG,CAAC,EAAM,EAEV,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KAON,CANmB,UACf,IAAM,EAAS,MAAM,CAAA,EAAA,EAAA,SAAA,AAAS,IAC1B,EAAO,WAAW,EAAI,EAAe,IAAI,CAAC,GAAO,EAAI,EAAE,GAAK,EAAO,WAAW,GAAG,AACjF,GAAe,EAAO,WAAW,EAEzC,GAEJ,EAAG,EAAE,EAEL,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACN,GAAqB,GAAY,QAAU,IAC3C,GAAqB,EAAE,CAC3B,EAAG,CAAC,EAAY,EAAY,EAE5B,IAAM,GAAkB,MAAO,IAC3B,IAAM,EAAQ,EAAE,MAAM,CAAC,KAAK,CAC5B,GAAe,GACf,MAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,CAAE,YAAa,CAAM,EAC5C,EAWM,GAAa,MAAO,GAAsB,CAAI,IAahD,GAAI,CAAC,GAAQ,CAAC,GAAY,CAAC,GACvB,GAAuB,CAAC,QAAQ,2FADD,CAC6F,MADtF,CAC6F,CAZnI,IAAK,IAAM,KAcf,EAAgB,MAChB,EAAgB,WAChB,EAAY,0BAhBY,CAAC,EAAU,OAAO,CAAE,EAAY,OAAO,CAAC,CAAE,CAC1D,GAAK,CAAD,CACJ,GAAI,CACA,CAFQ,CAEF,MAAM,CAAG,KACf,EAAM,GAAG,CAAG,aAChB,CAAE,MAAO,EAAO,CACZ,QAAQ,KAAK,CAAC,0CAA2C,EAC7D,CAYR,GAAI,CACA,IAAM,EAAS,MAAM,CAAA,EAAA,EAAA,aAAA,AAAa,EAAC,GACnC,GAAI,EAAO,OAAO,CAEd,CAFgB,MAChB,GAAO,IACA,EAGX,IAAM,EAAU,EAAO,KAAK,EAAI,6BAIhC,OAHA,EAAgB,GAChB,EAAY,CAAC,gBAAgB,EAAE,EAAA,CAAS,EACxC,EAAgB,UACT,CACX,CAAE,MAAO,EAAG,CACR,IAAM,EAAU,aAAa,MAAQ,EAAE,OAAO,CAAG,2BAIjD,OAHA,EAAgB,GAChB,EAAY,CAAC,gBAAgB,EAAE,EAAA,CAAS,EACxC,EAAgB,UACT,CACX,CACJ,EAEM,GAAgB,UAClB,MAAM,IAAW,EACrB,EAEM,GAA0B,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,CAAC,EAAgB,IAClD,IAAI,QAAQ,AAAC,IAChB,IAAM,EAAS,EAAU,OAAO,CAChC,GAAI,CAAC,EAAQ,YACT,GAAQ,GAIZ,IAAM,EAAe,CAAC,EAAW,CAAC,IAC9B,GAAI,EAAW,GAAI,YACf,GAAQ,GAIZ,GAAI,CACA,IAAM,EAAM,EAAO,aAAa,CAChC,GAAI,CAAC,IAKL,EAAI,WAAW,CACX,CACI,KAAM,4BACN,SACA,cACA,EACA,SACA,WAAY,SAAqB,EACjC,UAAW,KAAK,GAAG,EACvB,EACA,KAGA,CAAC,EAAI,IAAI,EAlBH,AAkBK,YAjBX,WAAW,IAAM,EAAa,EAAW,GAAI,KAsBjD,EAAI,IAAI,CAAC,KAAK,CAAC,GAEf,IAAM,EAAW,EAAO,eAAe,EAAE,cAAc,kCACnD,GACA,EAAS,KADC,QACY,CAAC,IAAI,cAAc,WAAY,CACjD,SAAS,EACT,YAAY,EACZ,SAAU,GACV,QAAS,GACT,IAAK,QACL,KAAM,CACV,IACC,EAAyB,KAAK,IAE/B,EAAI,IAAI,CAAC,KAAK,CAAC,MAGnB,EAAI,KAAK,GACT,GAAQ,EACZ,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,yCAA0C,GACxD,WAAW,IAAM,EAAa,EAAW,GAAI,IACjD,CACJ,EAEA,GACJ,GACD,CAAC,EAAQ,GAAmB,EAAY,EAErC,GAAe,UACjB,GAAsB,GACtB,EAAY,mCAKZ,EAFa,AAED,MAFO,GADJ,qBAC4B,mDAAQ,UAEhC,+BAAiC,0CACpD,GAAsB,EAC1B,EAEM,GAAuB,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,AAAC,GAC/B,IAAI,QAAQ,AAAC,IAChB,IAAM,EAAS,EAAU,OAAO,CAChC,GAAI,CAAC,EAAQ,YACT,GAAQ,GAIZ,IAAM,EAAgB,CAAC,EAAW,CAAC,IAC/B,GAAI,EAAW,GAAI,YACf,GAAQ,GAIZ,GAAI,CACA,IAAM,EAAM,EAAO,aAAa,CAChC,GAAI,CAAC,GAAO,CAAC,EAAI,IAAI,CAAE,YACnB,WAAW,IAAM,EAAc,EAAW,GAAI,KAIlD,EAAI,IAAI,CAAC,KAAK,CAAC,GAEf,IAAM,EAAW,EAAO,eAAe,EAAE,cAAc,kCACnD,GACC,EAAyB,KADhB,AACqB,GAEnC,EAAI,KAAK,GACT,EAAQ,GACZ,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,qCAAsC,GACpD,WAAW,IAAM,EAAc,EAAW,GAAI,IAClD,CACJ,EAEA,GACJ,GACD,EAAE,EAEC,GAAwB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,MAAO,IAC7C,GAAqB,IAAjB,EAAM,MAAM,CAAQ,OAExB,IAAwB,GACxB,IAAM,EAAe,CAAA,EAAG,EAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAE1C,EADiB,AAEb,MAFmB,GAAqB,GAGlC,CAAC,SAAS,EAAE,EAAM,MAAM,CAAC,UAAU,EAAmB,IAAjB,EAAM,MAAM,CAAS,GAAK,IAAI,iBAAiB,CAAC,CACrF,gDAEV,IAAwB,EAC5B,EAAG,CAAC,GAAqB,EAEnB,GAAwB,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,UACtC,GAAK,CAAD,GACA,GAAyB,MADX,CACkB,EAAE,AAEtC,GAAyB,OAAO,EAAG,EACnC,IAAyB,GAEzB,GAAI,CACA,IAAM,EAAS,MAAM,EAAwB,GACzC,EAAO,OAAO,EAAE,AAChB,GAAqB,EAAO,QAAQ,EAAI,EAAE,EAC1C,GAAqB,EAAO,UAAU,EAAE,QAAU,KAC3C,EAAO,KAAK,EACnB,AADqB,EACT,CAAC,yBAAyB,EAAE,EAAO,KAAK,CAAA,CAAE,CAE9D,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,gCAAiC,EACnD,QAAU,CACN,GAAyB,OAAO,EAAG,EACnC,IAAyB,EAC7B,EACJ,EAAG,CAAC,EAAY,EAEhB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACD,GACA,IACT,EAAG,CAAC,GAAuB,AAFL,EAEiB,EAEvC,IAAM,GAAwB,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UACtC,GAAK,CAAD,CAEJ,GAAI,CACA,IAAM,EAAS,CAHD,KAGO,EAAqB,GACtC,EAAO,OAAO,EAA4B,UAAxB,OAAO,EAAO,KAAK,EAA0C,UAAzB,AAAmC,OAA5B,EAAO,MAAM,EAC1E,GAAc,CAAE,MAAO,EAAO,KAAK,CAAE,OAAQ,EAAO,MAAM,AAAC,EAEnE,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,oCAAqC,EACvD,CACJ,EAAG,CAAC,EAAY,EAEhB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACN,GAAI,CAAC,GAAe,CAAC,GAAmB,YACpC,GAAc,CAAE,MAAO,EAAG,OAAQ,CAAE,GAInC,KACL,IAAM,EAAQ,OAAO,WAAW,CAAC,KACxB,IACT,EAAG,KAEH,MAAO,IAAM,OAAO,aAAa,CAAC,EACtC,EAAG,CAAC,GAAmB,GAAuB,EAAY,EA6B1D,IAAM,GAA2B,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UACzC,GAAK,CAAD,CAEJ,GAAI,CACA,IAAM,EAAS,CAHD,KAGO,EAA+B,GAChD,EAAO,OAAO,EAA4B,UAAxB,AAAkC,OAA3B,EAAO,KAAK,EACrC,GAAwB,EAAO,KAAK,CAE5C,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,yCAA0C,EAC5D,CACJ,EAAG,CAAC,EAAY,EAEhB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACN,GAAI,CAAC,EAAa,OAEb,KACL,IAAM,EAAQ,OAAO,WAAW,CAAC,KACxB,IACT,EAAG,KAEH,MAAO,IAAM,OAAO,aAAa,CAAC,EACtC,EAAG,CAAC,GAA0B,EAAY,EAE1C,IAAM,GAAW,MAAO,EAAsB,EAAI,IAC9C,GAAI,CAAC,GACD,CAAC,IACD,GAAuB,CAAC,QAAQ,CAAC,EADb,IACmB,EAAE,CADd,CACqB,MAAM,EAAE,GAAkB,CAAC,CAAC,EAF9D,CAEiE,MAF1D,CAEiE,CAE1F,IAAa,GACb,EAAY,6BAEZ,GAAI,CACA,IAAM,EAAS,MAAM,EAAmB,GACxC,GAAI,EAAO,OAAO,CAGd,CAHgB,MAChB,EAAY,CAAC,OAAO,EAAE,EAAO,UAAU,CAAC,MAAM,EAAE,EAAO,UAAU,CAAA,CAAE,EAC9D,MACE,EAGP,OADA,EAAY,CAAC,cAAc,EAAE,EAAO,KAAK,CAAA,CAAE,GACpC,CAEf,CAAE,MAAO,EAAG,CAGR,OAFA,QAAQ,KAAK,CAAC,wBAAyB,GACvC,EAAY,iBACL,CACX,QAAU,CACN,IAAa,EACjB,CACJ,EAEM,GAAc,UAChB,MAAM,IAAS,EACnB,EAEM,CAAC,GAAsB,GAAwB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GAC3D,GAAoB,CAAA,EAAA,EAAA,MAAA,AAAM,EAAiB,MAEjD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACN,IAAM,EAAsB,AAAD,IACnB,GAAkB,OAAO,EAAI,CAAC,GAAkB,OAAO,CAAC,QAAQ,CAAC,EAAM,MAAM,GAAW,AACxF,IAAwB,EAEhC,EAEA,OADA,SAAS,gBAAgB,CAAC,YAAa,GAChC,IAAM,SAAS,mBAAmB,CAAC,YAAa,EAC3D,EAAG,EAAE,EAEL,IAAM,GAAqB,MAAO,IAE9B,GADA,IAAwB,GACpB,CAAC,EAAa,OAElB,IAAM,EAAc,IAAiB,GAGrC,GAAK,CAAD,OAAS,CAAC,OAAO,EAAE,EAAO,MAAM,EAAE,EAAa,CAAC,CAAC,GAAG,AAExD,IAAc,GACd,EAAY,EAAc,CAAC,iBAAiB,EAAE,EAAa,gBAAgB,CAAC,CAAG,8BAE/E,GAAI,CACA,GAAI,EAAa,CACb,IAAM,EAAe,MAAM,EAAwB,EAAa,GAChE,GAAI,CAAC,EAAa,OAAO,CAAE,CACvB,EAAY,CAAC,8BAA8B,EAAE,EAAa,KAAK,CAAA,CAAE,EACjE,GAAc,IACd,MACJ,CACA,GAAqB,EAAa,UAAU,EAC5C,MAAM,IACV,CAEA,IAAM,EAAS,MAAM,EAAsB,GACvC,EAAO,OAAO,EAAE,AAChB,EAAY,CAAC,QAAQ,EAAE,EAAO,UAAU,CAAC,MAAM,EAAE,EAAO,UAAU,CAAA,CAAE,EAC/D,MAEL,EAAY,CAAC,eAAe,EAAE,EAAO,KAAK,CAAA,CAAE,CAEpD,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,yBAA0B,GACxC,EAAY,gBAChB,QAAU,CACN,IAAc,EAClB,EACJ,EAMM,GAAsB,UACxB,AAAK,GACA,CADD,GAEC,GAFU,KAEF,CAAC,MAAM,AADI,EACF,EAAO,MAAM,EAAE,GAAkB,yBAAyB,CAAC,GAAG,AAErE,MAAM,IAAS,IAG9B,MAAM,IAAW,EACrB,EA4UA,GAAI,CAAC,EAAM,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,0BAAiB,4BAElD,GAAqB,WAAW,CAA5B,EACA,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,wEACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yDACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oDAChB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,8BAAqB,sDAMlD,GAAqB,SAAS,CAA1B,EACA,MACI,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,wEACX,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,2CACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+CACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,iCAAwB,mBACtC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,UAAG,GAAgB,8DACpB,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,UAAU,kBAAkB,QAAS,IAAM,aAAU,0BAQrF,IAAM,GAAyB,MAAM,IAAI,CAAC,IAAI,IAAI,IAC1C,GAAoB,CAAC,GAAkB,CAAG,EAAE,IAC7C,GACN,GAAG,MAAM,CAAC,AAAC,GAAiB,IAAiB,GAAU,IAAiB,IAEzE,MACI,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAW,CAAC,0DAA0D,EAAE,GAAa,cAAgB,GAAA,CAAI,WACzG,IAAc,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,8CAC9B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oKACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACG,UAAU,iEACV,QAAS,IAAM,IACf,MAAM,wBAEN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,UAAU,cAE3B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0BACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,sBAAa,UAC7B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,qBAAa,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,QAE5C,GACG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,2DACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,aACN,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,aAMvB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oFACX,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACG,UAAU,4FACV,MAAO,GACP,SAAU,YAET,EAAe,GAAG,CAAC,GAChB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAoB,MAAO,EAAI,EAAE,UAAG,EAAI,IAAI,EAAhC,EAAI,EAAE,KAG3B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,mCACf,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,qFACV,QA3xBF,CA2xBW,IA1xB7B,GAAI,CAAC,EAAU,OACf,IAAM,EAAM,EAAe,IAAI,CAAC,GAAK,EAAE,EAAE,GAAK,IAC9C,GAAI,CAAC,EAAK,OAEV,IAAM,EAAM,CAAA,EAAG,EAAI,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAA,CAAW,CAC3D,OAAO,IAAI,CAAC,EAAK,SACrB,EAqxBwB,MAAO,CAAC,QAAQ,EAAE,EAAe,IAAI,CAAC,GAAK,EAAE,EAAE,GAAK,KAAc,KAAA,CAAM,WAExE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,UAAU,YAAY,aAK5C,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,yCACV,QAAS,IAAM,IAAqB,GACpC,SAAU,GACV,MAAM,wEAEL,GAAuB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,UAAU,YAAa,kBAI7H,GAAiB,QACd,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,yCACV,QAzaK,CAyaI,IAxa7B,IAAM,EAAS,GAAiB,OAChC,GAAI,CAAC,GAAU,CAAC,EAAY,OAAO,CAAE,OAGrC,IAAuB,GAEvB,IAAM,EAAS,EAAY,OAAO,CAClC,EAAuB,IACvB,EAAY,0BAEZ,IAAM,EAAiB,CAAC,EAAW,CAAC,IAChC,GAAI,EAAW,GAAI,CACf,EAAY,qDACZ,GAAuB,GACvB,MACJ,CAEA,GAAI,CACA,IAAM,EAAM,EAAO,aAAa,CAChC,GAAI,GAAO,EAAI,IAAI,CAAE,CACjB,EAAI,IAAI,CAAC,KAAK,CAAC,GAEf,IAAM,EAAW,EAAO,eAAe,EAAE,cAAc,kCACnD,EACA,EAAS,MADC,OACY,CAAC,IAAI,cAAc,WAAY,CACjD,SAAS,EACT,YAAY,EACZ,SAAU,GACV,QAAS,GACT,IAAK,QACL,KAAM,CACV,IAEA,EAAI,IAAI,CAAC,KAAK,CAAC,MAGnB,EAAI,KAAK,GACL,GAAW,EAAyB,KAAK,GAE7C,EAAY,iCACZ,GAAuB,EAC3B,MACI,CADG,UACQ,IAAM,EAAe,EAAW,GAAI,IAEvD,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,6BAA8B,GAC5C,EAAY,8BACZ,EAAuB,GAC3B,CACJ,EAEA,GACJ,EAqXwB,SAAU,EACV,MAAM,8CAEL,EAAsB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,IAAI,CAAA,CAAC,UAAU,YAAa,sBAK3H,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,yCACV,QAAS,GACT,SAAU,EACV,MAAM,8DAEL,EAAqB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAoB,UAAU,YAAa,WACxH,GAAqB,OAKlC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+EAA+E,IAAK,aAC/F,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,qBACX,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,oGACV,QAjdP,CAidgB,IAhdjC,GAAwB,CAAC,GAC7B,EAgd4B,SAAU,IAAc,IAAa,IAAqD,YAA5B,EAC9D,MAAM,0CAEL,GAAa,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAoB,UAAU,YAAa,SAEzH,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAY,UAAU,iCAE1B,IACG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gLACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,uKACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,uBACL,AAAC,KAAyB,EAAA,CAAoB,EAAK,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,0CAExE,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAAG,UAAU,2FACT,GAAuB,MAAM,CAAG,EAC7B,GAAuB,GAAG,CAAE,AAAD,GACvB,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,UACG,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,QAAS,IAAM,GAAmB,GAClC,UAAW,CAAC,gFAAgF,EAAE,IAAiB,GAAoB,mBAAqB,GAAA,CAAI,CAC5J,MAAO,YAEP,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oBAAY,IAC3B,IAAiB,IAAqB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,gDAAuC,kBAP7F,IAYb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,2DAAkD,4BAEpE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,4BACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,UACG,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,QAAS,IAAM,KAAK,KAAyB,UAAU,mEAA0D,gCAQ7I,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,mCACf,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,0HACV,QAAS,GACT,SAAU,IAAa,IAAc,IAAqD,YAA5B,GAAyC,CAAC,GACxG,MAAO,GAAoB,CAAC,sBAAsB,EAAE,EAAO,sBAAsB,EAAE,GAAkB,CAAC,CAAC,CAAG,uDAEzG,GAAY,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,UAAU,YAAa,WAGjH,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,mCACf,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,0HACV,QAAS,GACT,SAAU,IAAa,IAAc,IAAqD,YAA5B,GAAyC,CAAC,IAAqB,CAAC,EAC9H,MAAO,GAAoB,CAAC,sBAAsB,EAAE,EAAO,sBAAsB,EAAE,GAAkB,yBAAyB,CAAC,CAAG,uDAEjI,IAA0C,YAA5B,EAAwC,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAS,UAAU,YAAa,mBAG3J,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,mCACf,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,gIACV,QAAS,GACT,SAAuC,YAA5B,GAAyC,IAAa,IAAc,CAAC,EAChF,MAAM,8BAEJ,AAA4B,cAAY,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,uCAA+C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,UAAU,YAAa,cAK/I,IACG,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CAA6C,MAAO,CAAC,mBAAmB,EAAE,GAAA,CAAmB,WACxG,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,2CACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAQ,UAAU,YAClB,GAAW,KAAK,IAErB,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,2CACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,UAAU,YACpB,GAAW,MAAM,OAK9B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,wCAEf,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAW,CAAC,qBAAqB,EAAE,EAAS,QAAQ,CAAC,UAAY,EAAS,QAAQ,CAAC,UAAY,WAAa,EAAS,QAAQ,CAAC,YAAc,EAAS,QAAQ,CAAC,WAAa,EAAS,QAAQ,CAAC,YAAc,EAAS,QAAQ,CAAC,QAAU,aAAe,aAAA,CAAc,GAC1Q,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAM,aAOnB,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACG,IAAK,EACL,IAAI,YACJ,UAAW,CAAC,yDAAyD,EAAE,GAAa,sBAAwB,GAAA,CAAI,CAChH,MAAM,kCACN,OAjfa,CAifL,IAhfhB,GAAI,CAAC,EAAU,OAAO,CAAE,OACxB,IAAM,EAAS,EAAU,OAAO,CAGhC,GAAI,CAEU,EAAO,aACrB,AADkC,CAChC,MAAO,EAAG,CACR,EAAY,gEACZ,MACJ,CAEI,EAAO,aAAa,EAAE,CAEtB,EAAO,aAAa,CAAC,cAAc,CAAG,KAGtC,EAAO,aAAa,CAAC,gBAAgB,CAAC,eAAgB,AAAC,IACnD,EAAM,wBAAwB,EAClC,GAAG,IAGP,QAAQ,GAAG,CAAC,8CACZ,EAAY,6BAEZ,IAAM,EAAiB,CAAC,EAAW,CAAC,IAChC,GAAI,EAAW,GAAI,YACf,EAAY,4CAIhB,GAAI,CACA,IAAM,EAAM,EAAO,aAAa,CAChC,GAAI,GAAO,EAAI,IAAI,CAAE,CACjB,IAAM,EAAO,EAAI,IAAI,CACrB,QAAQ,GAAG,CAAC,2BAGZ,GAAI,CACA,EAAK,OAAO,CAAC,KAAK,CAAG,CACjB,GAAI,EAAK,OAAO,CAAC,KAAK,EAAI,CAAC,CAAC,CAC5B,oBAAqB,yBACzB,CACJ,CAAE,KAAM,CAAkC,CAQ1C,IAAM,EAAa,GAAY,EACzB,EAAM,CAAC,CADwB,EACrB,EAAE,EAAc,GAAA,CAAa,CAE7C,EAAK,KAAK,CAAC,GAGX,IAAM,EAAa,KACf,CAPmE,GAO7D,EAAW,EAAO,eAAe,EAAE,cAAc,kCACnD,EACA,EAAS,MADC,OACY,CAAC,IAAI,cAAc,WAAY,CACjD,SAAS,EACT,YAAY,EACZ,SAAU,GACV,QAAS,GACT,IAAK,QACL,KAAM,CACV,IAEA,EAAK,KAAK,CAAC,KAEnB,EAEA,IAGI,EACA,KADO,MACI,KACP,IAAI,EAAW,GAEf,GAAI,EAGI,EADA,EAAM,IAFA,OAEW,GAAG,QAAQ,CAAC,UAClB,CAAC,AAD4B,sBACN,CAAC,CAC5B,EAAM,WAAW,GAAG,QAAQ,CAAC,SACzB,CADmC,AAClC,mBAAmB,CAAC,CACD,UAAxB,EAAM,WAAW,IAAkB,EAAM,WAAW,GAAG,QAAQ,CAAC,UAC5D,CAAC,AADsE,YAC1D,CAAC,CAGd,CAAA,EAAG,EAAM,OAAO,CAAC,KAE7B,CAEH,IAAI,EAAc,EAAQ,CAAA,EAAG,MAAM;AAAA;AAAI,EAAE,GAAkB,GAAA,CAAI,CAAI,GAAkB,GACrF,GAAI,GAAmB,EAAgB,MAAM,CAAG,EAAG,CAC/C,IAAM,EAAqB,CAAA,EAAG,GAAY,EAAK,YAAY,CAAC,CACtD,EAAoB,CACtB,kBACG,EAAgB,GAAG,CAAC,GAAQ,CAAC,EAAE,EAAE,EAAmB,CAAC,EAAE,EAAA,CAAM,EACnE,CAAC,IAAI,CAAC,MACP,EAAc,EAAc,CAAA,EAAG,YAAY;AAAA;AAAI,EAAE,EAAA,CAAmB,CAAG,CAC3E,CACA,IAAM,EAAc,EAAc,CAAC,CAAC,EAAE,EAAc,GAAA,CAAc,CAAG,GAErE,GAAI,EAAM,WAAW,GAAG,QAAQ,CAAC,SAE7B,CAFuC,CAE5B,CAAC,cAAc,EAAE,EAAc,GAAS,iBAAiB,oEAAoE,EAAE,EAAA,CAAa,MACpJ,GAAI,EAAM,WAAW,GAAG,QAAQ,CAAC,UAEpC,CAF+C,CAEpC,CAAC,eAAe,EAAE,EAAc,GAAS,wBAAwB,OAAO,EAAE,EAAA,CAAa,MAC/F,GAA4B,UAAxB,EAAM,WAAW,IAAkB,EAAM,WAAW,GAAG,QAAQ,CAAC,UAEvE,CAFkF,CAEvE,CAAC,cAAc,EAAE,EAAc,GAAS,qBAAA,EAAuB,EAAA,CAAa,KACpF,CAEH,IAAM,EAAgB,GAAO,OACvB,EAAmB,EAAgB,CAAC,SAAS,EAAE,EAAc,GAAA,CAAgB,CAAG,GACtF,EAAW,CAAA,EAAG,EAAc,GAAA,EAAS,EAAA,EAAmB,EAAA,CAAa,AACzE,CACJ,CAEI,IACA,MADU,EACF,GAAG,CAAC,2BAA4B,GACxC,EAAK,KAAK,CAAC,GACX,IACA,EAAY,EAAW,CAAC,qBAAqB,EAAE,EAAA,CAAO,CAAG,CAAC,qBAAqB,EAAE,EAAA,CAAO,EAEpF,CAAC,GAAY,GACb,IAGZ,EAAG,MAAM,AAET,CANyC,CAM7B,CAAC,gBAAgB,EAAE,EAAW,OAFH,MAEkB,GAAA,CAAI,EACzD,CAAC,GAAY,GACb,KAKR,EAAI,KAAK,CAN4B,EAOrC,IAAM,EAAW,EAAO,eAAe,EAAE,cAAc,iCACnD,IAAW,EAAyB,KAAK,EAEjD,MAEI,CAFG,UAEQ,IAAM,EAAe,EAAW,GAAI,IAEvD,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,iCAAkC,GAChD,EAAY,6BAA+B,OAAO,GACtD,CACJ,EAGA,WAAW,IAAM,IAAkB,IACvC,IAuVQ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACG,UAAW,CAAC,mIAAmI,EAAE,GAAa,GAAK,iBAAA,CAAkB,CACrL,MAAO,CACH,MAAO,GAAa,KAAK,CACzB,OAAQ,GAAsB,GAAK,GAAa,MAAM,CACtD,SAAU,qBACV,UAAW,oBACf,YAEA,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACG,UAAW,CAAC,sHAAsH,EAAE,GAAsB,iCAAmC,qBAAA,CAAsB,CACnN,YAAa,AAAC,QAAoC,EAniC9C,AAAC,IACjB,EAAE,MAkiC8C,QAliChC,GAChB,EAAE,eAAe,GACjB,IAAc,GACd,GAAU,OAAO,CAAG,CAChB,OAAQ,EAAE,OAAO,CACjB,OAAQ,EAAE,OAAO,CACjB,WAAY,GAAa,KAAK,CAC9B,YAAa,GAAa,MAAM,AACpC,CACJ,EA0hCgB,MAAO,QAAsB,EAAY,0BAEzC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,KAAM,OAEhB,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACG,UAAU,sGACV,QAAS,IAAM,GAAuB,AAAC,GAAS,CAAC,GACjD,MAAO,GAAsB,kBAAoB,oBACjD,KAAK,mBAEL,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UAAK,aACN,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,sBAAc,GAAsB,OAAS,YAEjE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAW,GAAsB,sBAAwB,iCAC1D,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACG,IAAK,EACL,IAAI,YACJ,UAAW,CAAC,yDAAyD,EAAE,GAAa,sBAAwB,GAAA,CAAI,CAChH,MAAM,kCACN,OApXO,CAoXC,IAnXxB,GAAI,CAAC,EAAY,OAAO,CAAE,OAC1B,IAAM,EAAS,EAAY,OAAO,CAClC,QAAQ,GAAG,CAAC,6BAGZ,GAAI,CACU,EAAO,aAAa,AAClC,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,oDACd,MACJ,CAEI,EAAO,aAAa,EAAE,CAEtB,EAAO,aAAa,CAAC,cAAc,CAAG,KAGtC,EAAO,aAAa,CAAC,gBAAgB,CAAC,eAAgB,AAAC,IACnD,EAAM,wBAAwB,EAClC,GAAG,IAGP,IAAM,EAAiB,CAAC,EAAW,CAAC,IAChC,GAAI,EAAW,GAAI,YACf,QAAQ,GAAG,CAAC,0CAIhB,GAAI,CACA,IAAM,EAAM,EAAO,aAAa,CAChC,GAAI,GAAO,EAAI,IAAI,CAAE,CACjB,IAAM,EAAO,EAAI,IAAI,CACrB,QAAQ,GAAG,CAAC,qCAGZ,GAAI,CACA,EAAK,OAAO,CAAC,KAAK,CAAG,CACjB,GAAI,EAAK,OAAO,CAAC,KAAK,EAAI,CAAC,CAAC,CAC5B,oBAAqB,yBACzB,CACJ,CAAE,KAAM,CAAkC,CAG1C,GAAI,CAEA,IAAM,EAAgB,KAEd,EAAM,MAAM,EAAE,SAAW,EAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAG,EAAM,MAAM,CAAC,MAAM,CAAC,SAAA,AAAS,EAClF,CADqF,CAC/E,GADoF,WACtE,EAK5B,EAEA,GAAI,EAAM,aAAa,CACnB,AAZU,CAWW,CACf,aAAa,CAAC,OACjB,CAEH,IAAM,EAAS,EAAO,eAAe,EAAE,cAAc,kBAAoB,EAAO,eAAe,EAAE,KAC7F,GACiB,AACjB,IADqB,CADb,gBAC8B,GAC7B,OAAO,CAAC,EAAQ,CAAE,UAAW,GAAM,SAAS,EAAM,eAAe,CAAK,EAEvF,CACJ,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,+BAAgC,EAClD,CAEA,IAAM,EAAa,GAAY,EACzB,EAAM,CAAC,GAAG,EAAE,EAAc,GAAA,CAAa,CAC7C,EAAK,KAAK,CAAC,GAEX,IAAM,EAAa,KACf,IAAM,EAAW,EAAO,eAAe,EAAE,cAAc,kCACnD,EACA,EAAS,MADC,OACY,CAAC,IAAI,cAAc,WAAY,CACjD,QAAS,GACT,WAAY,GACZ,SAAU,GACV,QAAS,GACT,IAAK,QACL,KAAM,CACV,IAEA,EAAK,KAAK,CAAC,KAEnB,EACA,IAGI,GAAiB,CAAC,GAClB,OAD4B,IACjB,KACP,QAAQ,GAAG,CAAC,4BAA6B,GACzC,EAAK,KAAK,CAAC,GACX,GACJ,EAAG,KAIP,EAAI,KAAK,GACT,IAAM,EAAW,EAAO,eAAe,EAAE,cAAc,kCACnD,GAAW,EAAyB,KAAK,EACjD,MACI,CADG,UACQ,IAAM,EAAe,EAAW,GAAI,IAEvD,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,qCAAsC,EACxD,CACJ,EAEA,WAAW,IAAM,IAAkB,IACvC,SAwQS,IACG,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACG,YAAa,GAAY,EACzB,UAAY,AAAD,IACP,IAAqB,GAChB,GAAsB,EAC/B,EACA,SAAU,IAAM,IAAqB,OAKzD,CC1rCoS,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,+BCAlJ,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,sBCArI,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,0BCM9a,IAAA,EAAA,EAAA,CAAA,CAAA,OAEe,SAAS,IAEpB,IAAM,EADS,AACQ,CADR,EAAA,EAAA,SAAS,AAAT,IACe,SAAS,CACjC,EAAY,MAAM,OAAO,CAAC,GAAkB,CAAc,CAAC,EAAE,CAAG,EAChE,EAAS,CAAA,EAAA,EAAA,SAAA,AAAS,IAElB,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAyB,MAC3D,CAAC,EAAS,EAAW,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACjC,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAG5C,CAAC,EAAgB,EAAkB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,QACnE,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,OAAqB,GACjE,CAAC,EAAiB,EAAmB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAmB,EAAE,EAC7D,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,OAAqB,GAC/D,CAAC,EAAsB,EAAwB,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAqB,QAC/E,CAAC,EAAc,EAAgB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,OAA6B,GAG/D,CAAC,EAAU,EAAY,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAU,IAElD,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACD,AAAL,GAsDA,CApDoB,AAFhB,OAAY,GAGZ,GAAI,CAGA,GAAI,CAAC,CADc,MAAM,CAAA,EAAA,EAAA,gBAAgB,AAAhB,GAAgB,EACzB,OAAO,CAAE,CACrB,EAAS,oCACT,GAAW,GACX,MACJ,CAEA,IAAM,EAAO,MAAM,EAAmB,GACtC,GAAI,CAAC,EAAM,CACP,EAAS,qBACT,GAAW,GACX,MACJ,CAUA,GARA,CAQI,CARQ,IAM6B,IAArB,EAAK,WAAW,CAEnB,CAEb,IAAM,EAAgB,MAAM,EAA4B,GACxD,GAAI,EAAc,OAAO,EAAI,EAAc,OAAO,CAAE,CAChD,IAAM,EAAM,EAAc,OAAO,CACjC,EAAkB,EAAI,cAAc,EACpC,EAAiB,EAAI,aAAa,EAClC,EAAmB,EAAI,eAAe,EAAI,EAAE,EAC5C,EAAgB,EAAI,KAAK,EACzB,EAAwB,EAAI,aAAa,EACzC,EAAgB,EAAI,KAAK,CAC7B,CAEA,GAAY,EAChB,MAEI,CAFG,EAES,GAGhB,GAAW,EACf,CAAE,MAAO,EAAG,CACR,QAAQ,KAAK,CAAC,0BAA2B,GACzC,EAAS,0BACT,GAAW,EACf,EACJ,GAGJ,EAAG,CAAC,EAAU,EAEd,IAAM,EAAa,AAAC,IACZ,EAGA,KAHO,EAGA,QAAQ,CAAC,IAAI,CAAG,IAEvB,EAAO,IAAI,CAAC,IAEpB,EAGM,EAAqB,UACnB,GACA,MAAM,EADK,AACkB,EAErC,SAEA,AAAI,EAEI,CAAA,EAAA,EAAA,EAFK,CAEL,EAAC,MAAA,CAAI,UAAU,wEACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,6CACX,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,oDAChB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,sBAAa,4BAMtC,GAAS,CAAC,EAEN,CAAA,EAAA,EAAA,GAFgB,AAEhB,EAAC,MAAA,CAAI,UAAU,wEACX,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,2CACX,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,+CACX,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,iCAAwB,UACtC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,UAAG,GAAS,sBACb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,oCACX,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,UAAU,kBAAkB,QAAS,IAAM,aAAc,0BASrF,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACG,KAAM,EAAS,QAAQ,CACvB,SAAU,EAAS,YAAY,CAC/B,OAAQ,EAAS,UAAU,CAC3B,WAAY,EAAS,UAAU,CAC/B,YAAa,EAAS,WAAW,CACjC,MAAO,GAAwB,EAAS,KAAK,CAC7C,MAAO,GAAgB,EAAS,KAAK,CACrC,cAAe,EACf,gBAAiB,EAAS,eAAe,CACzC,eAAgB,EAChB,MAAO,GAAgB,EAAS,KAAK,CACrC,gBAAiB,EACjB,OAAQ,EACR,SAAU,EACV,eAAgB,GAG5B","ignoreList":[13,14,15,16,17,18,19,20,21,22,23,24]}
@@ -0,0 +1,4 @@
1
+ {
2
+ "version": 1,
3
+ "functions": {}
4
+ }
@@ -0,0 +1 @@
1
+ self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]";
@@ -0,0 +1,21 @@
1
+ globalThis.__BUILD_MANIFEST = {
2
+ "pages": {
3
+ "/_app": []
4
+ },
5
+ "devFiles": [],
6
+ "polyfillFiles": [
7
+ "static/chunks/a6dad97d9634a72d.js"
8
+ ],
9
+ "lowPriorityFiles": [],
10
+ "rootMainFiles": [
11
+ "static/chunks/2821166934dd45eb.js",
12
+ "static/chunks/8906ac8ef3ff98d4.js",
13
+ "static/chunks/aee6c7720838f8a2.js",
14
+ "static/chunks/0dfa5be743492ce2.js",
15
+ "static/chunks/turbopack-53cb197a85e106e9.js"
16
+ ]
17
+ };
18
+ globalThis.__BUILD_MANIFEST.lowPriorityFiles = [
19
+ "/static/" + process.env.__NEXT_BUILD_ID + "/_buildManifest.js",
20
+ "/static/" + process.env.__NEXT_BUILD_ID + "/_ssgManifest.js"
21
+ ];
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "middleware": {},
4
+ "sortedMiddleware": [],
5
+ "functions": {}
6
+ }
@@ -0,0 +1 @@
1
+ self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/src/app/_not-found/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/src/app/new/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/src/app/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ],\n \"[project]/src/app/session/[sessionId]/page\": [\n \"static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\n \"static/media/797e433ab948586e-s.p.dbea232f.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}"
@@ -0,0 +1,23 @@
1
+ {
2
+ "app": {
3
+ "[project]/src/app/_not-found/page": [
4
+ "static/media/caa3a2e1cccd8315-s.p.853070df.woff2",
5
+ "static/media/797e433ab948586e-s.p.dbea232f.woff2"
6
+ ],
7
+ "[project]/src/app/new/page": [
8
+ "static/media/caa3a2e1cccd8315-s.p.853070df.woff2",
9
+ "static/media/797e433ab948586e-s.p.dbea232f.woff2"
10
+ ],
11
+ "[project]/src/app/page": [
12
+ "static/media/caa3a2e1cccd8315-s.p.853070df.woff2",
13
+ "static/media/797e433ab948586e-s.p.dbea232f.woff2"
14
+ ],
15
+ "[project]/src/app/session/[sessionId]/page": [
16
+ "static/media/caa3a2e1cccd8315-s.p.853070df.woff2",
17
+ "static/media/797e433ab948586e-s.p.dbea232f.woff2"
18
+ ]
19
+ },
20
+ "appUsingSizeAdjust": true,
21
+ "pages": {},
22
+ "pagesUsingSizeAdjust": false
23
+ }
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><!--e8aTDAK_fufq5OYn8Yv56--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/8d69e9f4553d4e60.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2821166934dd45eb.js"/><script src="/_next/static/chunks/8906ac8ef3ff98d4.js" async=""></script><script src="/_next/static/chunks/aee6c7720838f8a2.js" async=""></script><script src="/_next/static/chunks/0dfa5be743492ce2.js" async=""></script><script src="/_next/static/chunks/turbopack-53cb197a85e106e9.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/d2be314c3ece3fbe.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Viba</title><link rel="icon" href="/icon.png"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/2821166934dd45eb.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n:HL[\"/_next/static/chunks/8d69e9f4553d4e60.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"e8aTDAK_fufq5OYn8Yv56\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/8d69e9f4553d4e60.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"c:I[27201,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"IconMark\"]\n6:null\na:[[\"$\",\"title\",\"0\",{\"children\":\"Viba\"}],[\"$\",\"link\",\"1\",{\"rel\":\"icon\",\"href\":\"/icon.png\"}],[\"$\",\"$Lc\",\"2\",{}]]\n"])</script></body></html>
@@ -0,0 +1,2 @@
1
+ <!DOCTYPE html><!--e8aTDAK_fufq5OYn8Yv56--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2821166934dd45eb.js"/><script src="/_next/static/chunks/8906ac8ef3ff98d4.js" async=""></script><script src="/_next/static/chunks/aee6c7720838f8a2.js" async=""></script><script src="/_next/static/chunks/0dfa5be743492ce2.js" async=""></script><script src="/_next/static/chunks/turbopack-53cb197a85e106e9.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/d2be314c3ece3fbe.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
+ @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/2821166934dd45eb.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/d2be314c3ece3fbe.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"e8aTDAK_fufq5OYn8Yv56\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ff1a16fafef87110.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/d2be314c3ece3fbe.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
@@ -0,0 +1,4 @@
1
+ {
2
+ "/404": "pages/404.html",
3
+ "/500": "pages/500.html"
4
+ }