ompgui 0.7.11 → 0.7.12

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 (296) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -6
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +5 -5
  5. package/.next/react-loadable-manifest.json +2 -2
  6. package/.next/required-server-files.js +3 -3
  7. package/.next/required-server-files.json +3 -3
  8. package/.next/routes-manifest.json +6 -0
  9. package/.next/server/app/_global-error/page.js +1 -1
  10. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +2 -2
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  14. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  24. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  25. package/.next/server/app/api/agent/[id]/route.js +1 -1
  26. package/.next/server/app/api/agent/new/route.js +1 -1
  27. package/.next/server/app/api/agent/running/events/route.js +2 -2
  28. package/.next/server/app/api/agents/[name]/route.js +1 -1
  29. package/.next/server/app/api/agents/route.js +1 -1
  30. package/.next/server/app/api/agents/unpack/route.js +1 -1
  31. package/.next/server/app/api/app-update/route.js +1 -1
  32. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  33. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  34. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  35. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  36. package/.next/server/app/api/auth/providers/route.js +1 -1
  37. package/.next/server/app/api/cwd/browse/route.js +1 -1
  38. package/.next/server/app/api/cwd/validate/route.js +1 -1
  39. package/.next/server/app/api/daemon/route.js +1 -1
  40. package/.next/server/app/api/daemon/route.js.nft.json +1 -1
  41. package/.next/server/app/api/default-cwd/route.js +1 -1
  42. package/.next/server/app/api/file-index/route.js +1 -1
  43. package/.next/server/app/api/files/[...path]/route.js +1 -1
  44. package/.next/server/app/api/git/diff/route.js +2 -2
  45. package/.next/server/app/api/git/status/route.js +1 -1
  46. package/.next/server/app/api/home/route.js +1 -1
  47. package/.next/server/app/api/mcp/route.js +2 -2
  48. package/.next/server/app/api/model-roles/route.js +1 -1
  49. package/.next/server/app/api/models/route.js +1 -1
  50. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  51. package/.next/server/app/api/models-config/connectivity/route.js +1 -1
  52. package/.next/server/app/api/models-config/connectivity/route.js.nft.json +1 -1
  53. package/.next/server/app/api/models-config/route.js +1 -1
  54. package/.next/server/app/api/models-config/test/route.js +1 -1
  55. package/.next/server/app/api/omp-settings/route.js +1 -1
  56. package/.next/server/app/api/omp-update/route.js +2 -2
  57. package/.next/server/app/api/omp-version/route.js +1 -1
  58. package/.next/server/app/api/plugins/route.js +1 -1
  59. package/.next/server/app/api/projects/route.js +2 -2
  60. package/.next/server/app/api/providers/enable/route.js +1 -1
  61. package/.next/server/app/api/relay/devices/[id]/route.js +1 -1
  62. package/.next/server/app/api/relay/devices/[id]/route.js.nft.json +1 -1
  63. package/.next/server/app/api/relay/devices/route.js +1 -1
  64. package/.next/server/app/api/relay/devices/route.js.nft.json +1 -1
  65. package/.next/server/app/api/relay/pair/route.js +1 -1
  66. package/.next/server/app/api/relay/pair/route.js.nft.json +1 -1
  67. package/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
  68. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  69. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  70. package/.next/server/app/api/sessions/[id]/entries/[entryId]/media/route.js +1 -1
  71. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  72. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  73. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  74. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  75. package/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route.js +1 -1
  76. package/.next/server/app/api/sessions/[id]/subagents/route.js +1 -1
  77. package/.next/server/app/api/sessions/archive/route.js +1 -1
  78. package/.next/server/app/api/sessions/import/route.js +1 -1
  79. package/.next/server/app/api/sessions/route.js +1 -1
  80. package/.next/server/app/api/sessions/search/route.js +1 -1
  81. package/.next/server/app/api/skills/check/route.js +1 -1
  82. package/.next/server/app/api/skills/install/route.js +1 -1
  83. package/.next/server/app/api/skills/route.js +1 -1
  84. package/.next/server/app/api/skills/search/route.js +1 -1
  85. package/.next/server/app/api/skills/update/route.js +1 -1
  86. package/.next/server/app/api/usage/route.js +1 -1
  87. package/.next/server/app/api/web-auth/pair/route.js +1 -0
  88. package/.next/server/app/api/web-auth/pair/route.js.nft.json +1 -0
  89. package/.next/server/app/api/web-auth/pair/route_client-reference-manifest.js +1 -0
  90. package/.next/server/app/api/web-auth/session/route.js +1 -1
  91. package/.next/server/app/api/web-auth/session/route.js.nft.json +1 -1
  92. package/.next/server/app/api/worktrees/route.js +1 -1
  93. package/.next/server/app/apple-icon.png/route.js +1 -1
  94. package/.next/server/app/favicon.ico/route.js +1 -1
  95. package/.next/server/app/icon.svg/route.js +1 -1
  96. package/.next/server/app/index.html +1 -1
  97. package/.next/server/app/index.rsc +3 -3
  98. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  99. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  100. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/login/page.js +1 -1
  102. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/login.html +1 -1
  104. package/.next/server/app/login.rsc +3 -3
  105. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  106. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  107. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
  108. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  109. package/.next/server/app/page.js +2 -2
  110. package/.next/server/app/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/pair/page.js +1 -1
  112. package/.next/server/app/pair/page_client-reference-manifest.js +1 -1
  113. package/.next/server/app/pair.html +1 -1
  114. package/.next/server/app/pair.rsc +3 -3
  115. package/.next/server/app/pair.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/pair.segments/_tree.segment.rsc +1 -1
  117. package/.next/server/app/pair.segments/pair/__PAGE__.segment.rsc +3 -3
  118. package/.next/server/app/relay/route.js +1 -1
  119. package/.next/server/app-paths-manifest.json +7 -6
  120. package/.next/server/chunks/4008.js +2 -2
  121. package/.next/server/chunks/4395.js +2 -0
  122. package/.next/server/chunks/474.js +1 -1
  123. package/.next/server/chunks/4980.js +1 -1
  124. package/.next/server/chunks/6337.js +1 -1
  125. package/.next/server/chunks/7077.js +1 -1
  126. package/.next/server/chunks/8015.js +10 -10
  127. package/.next/server/chunks/933.js +1 -1
  128. package/.next/server/functions-config-manifest.json +2 -2
  129. package/.next/server/instrumentation.js +1 -1
  130. package/.next/server/middleware-build-manifest.js +1 -1
  131. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  132. package/.next/server/middleware.js +6 -5
  133. package/.next/server/pages/404.html +1 -1
  134. package/.next/server/pages/500.html +1 -1
  135. package/.next/server/server-reference-manifest.json +1 -1
  136. package/.next/static/chunks/3944.2debfbacfd5e255f.js +1 -0
  137. package/.next/static/chunks/4315-ea1c0b248e80933c.js +1 -0
  138. package/.next/static/chunks/{6268.c8711c205efe98a6.js → 6268.be519bbc5c4347fe.js} +1 -1
  139. package/.next/static/chunks/app/_global-error/page-ef9cf0833e5e0b87.js +1 -0
  140. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-ef9cf0833e5e0b87.js +1 -0
  141. package/.next/static/chunks/app/api/agent/[id]/events/route-ef9cf0833e5e0b87.js +1 -0
  142. package/.next/static/chunks/app/api/agent/[id]/route-ef9cf0833e5e0b87.js +1 -0
  143. package/.next/static/chunks/app/api/agent/new/route-ef9cf0833e5e0b87.js +1 -0
  144. package/.next/static/chunks/app/api/agent/running/events/route-ef9cf0833e5e0b87.js +1 -0
  145. package/.next/static/chunks/app/api/agents/[name]/route-ef9cf0833e5e0b87.js +1 -0
  146. package/.next/static/chunks/app/api/agents/route-ef9cf0833e5e0b87.js +1 -0
  147. package/.next/static/chunks/app/api/agents/unpack/route-ef9cf0833e5e0b87.js +1 -0
  148. package/.next/static/chunks/app/api/app-update/route-ef9cf0833e5e0b87.js +1 -0
  149. package/.next/static/chunks/app/api/auth/all-providers/route-ef9cf0833e5e0b87.js +1 -0
  150. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-ef9cf0833e5e0b87.js +1 -0
  151. package/.next/static/chunks/app/api/auth/login/[provider]/route-ef9cf0833e5e0b87.js +1 -0
  152. package/.next/static/chunks/app/api/auth/logout/[provider]/route-ef9cf0833e5e0b87.js +1 -0
  153. package/.next/static/chunks/app/api/auth/providers/route-ef9cf0833e5e0b87.js +1 -0
  154. package/.next/static/chunks/app/api/cwd/browse/route-ef9cf0833e5e0b87.js +1 -0
  155. package/.next/static/chunks/app/api/cwd/validate/route-ef9cf0833e5e0b87.js +1 -0
  156. package/.next/static/chunks/app/api/daemon/route-ef9cf0833e5e0b87.js +1 -0
  157. package/.next/static/chunks/app/api/default-cwd/route-ef9cf0833e5e0b87.js +1 -0
  158. package/.next/static/chunks/app/api/file-index/route-ef9cf0833e5e0b87.js +1 -0
  159. package/.next/static/chunks/app/api/files/[...path]/route-ef9cf0833e5e0b87.js +1 -0
  160. package/.next/static/chunks/app/api/git/diff/route-ef9cf0833e5e0b87.js +1 -0
  161. package/.next/static/chunks/app/api/git/status/route-ef9cf0833e5e0b87.js +1 -0
  162. package/.next/static/chunks/app/api/home/route-ef9cf0833e5e0b87.js +1 -0
  163. package/.next/static/chunks/app/api/mcp/route-ef9cf0833e5e0b87.js +1 -0
  164. package/.next/static/chunks/app/api/model-roles/route-ef9cf0833e5e0b87.js +1 -0
  165. package/.next/static/chunks/app/api/models/route-ef9cf0833e5e0b87.js +1 -0
  166. package/.next/static/chunks/app/api/models-config/catalog/route-ef9cf0833e5e0b87.js +1 -0
  167. package/.next/static/chunks/app/api/models-config/connectivity/route-ef9cf0833e5e0b87.js +1 -0
  168. package/.next/static/chunks/app/api/models-config/route-ef9cf0833e5e0b87.js +1 -0
  169. package/.next/static/chunks/app/api/models-config/test/route-ef9cf0833e5e0b87.js +1 -0
  170. package/.next/static/chunks/app/api/omp-settings/route-ef9cf0833e5e0b87.js +1 -0
  171. package/.next/static/chunks/app/api/omp-update/route-ef9cf0833e5e0b87.js +1 -0
  172. package/.next/static/chunks/app/api/omp-version/route-ef9cf0833e5e0b87.js +1 -0
  173. package/.next/static/chunks/app/api/plugins/route-ef9cf0833e5e0b87.js +1 -0
  174. package/.next/static/chunks/app/api/projects/route-ef9cf0833e5e0b87.js +1 -0
  175. package/.next/static/chunks/app/api/providers/enable/route-ef9cf0833e5e0b87.js +1 -0
  176. package/.next/static/chunks/app/api/relay/devices/[id]/route-ef9cf0833e5e0b87.js +1 -0
  177. package/.next/static/chunks/app/api/relay/devices/route-ef9cf0833e5e0b87.js +1 -0
  178. package/.next/static/chunks/app/api/relay/pair/route-ef9cf0833e5e0b87.js +1 -0
  179. package/.next/static/chunks/app/api/sessions/[id]/archive/route-ef9cf0833e5e0b87.js +1 -0
  180. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-ef9cf0833e5e0b87.js +1 -0
  181. package/.next/static/chunks/app/api/sessions/[id]/context/route-ef9cf0833e5e0b87.js +1 -0
  182. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-ef9cf0833e5e0b87.js +1 -0
  183. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-ef9cf0833e5e0b87.js +1 -0
  184. package/.next/static/chunks/app/api/sessions/[id]/export/route-ef9cf0833e5e0b87.js +1 -0
  185. package/.next/static/chunks/app/api/sessions/[id]/route-ef9cf0833e5e0b87.js +1 -0
  186. package/.next/static/chunks/app/api/sessions/[id]/state/route-ef9cf0833e5e0b87.js +1 -0
  187. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-ef9cf0833e5e0b87.js +1 -0
  188. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-ef9cf0833e5e0b87.js +1 -0
  189. package/.next/static/chunks/app/api/sessions/archive/route-ef9cf0833e5e0b87.js +1 -0
  190. package/.next/static/chunks/app/api/sessions/import/route-ef9cf0833e5e0b87.js +1 -0
  191. package/.next/static/chunks/app/api/sessions/route-ef9cf0833e5e0b87.js +1 -0
  192. package/.next/static/chunks/app/api/sessions/search/route-ef9cf0833e5e0b87.js +1 -0
  193. package/.next/static/chunks/app/api/skills/check/route-ef9cf0833e5e0b87.js +1 -0
  194. package/.next/static/chunks/app/api/skills/install/route-ef9cf0833e5e0b87.js +1 -0
  195. package/.next/static/chunks/app/api/skills/route-ef9cf0833e5e0b87.js +1 -0
  196. package/.next/static/chunks/app/api/skills/search/route-ef9cf0833e5e0b87.js +1 -0
  197. package/.next/static/chunks/app/api/skills/update/route-ef9cf0833e5e0b87.js +1 -0
  198. package/.next/static/chunks/app/api/usage/route-ef9cf0833e5e0b87.js +1 -0
  199. package/.next/static/chunks/app/api/web-auth/pair/route-ef9cf0833e5e0b87.js +1 -0
  200. package/.next/static/chunks/app/api/web-auth/session/route-ef9cf0833e5e0b87.js +1 -0
  201. package/.next/static/chunks/app/api/worktrees/route-ef9cf0833e5e0b87.js +1 -0
  202. package/.next/static/chunks/app/login/page-7bf6a8dff8d8ec8a.js +1 -0
  203. package/.next/static/chunks/app/manifest.webmanifest/route-ef9cf0833e5e0b87.js +1 -0
  204. package/.next/static/chunks/app/{page-66dfb84af2e0fea1.js → page-8ddabaf903ef7161.js} +1 -1
  205. package/.next/static/chunks/app/pair/page-b038d0301aa512a0.js +1 -0
  206. package/.next/static/chunks/app/relay/route-ef9cf0833e5e0b87.js +1 -0
  207. package/.next/static/chunks/{main-354b27ede3eb835a.js → main-07954eb1fcf84ef7.js} +1 -1
  208. package/.next/static/chunks/next/dist/client/components/builtin/app-error-ef9cf0833e5e0b87.js +1 -0
  209. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ef9cf0833e5e0b87.js +1 -0
  210. package/.next/static/chunks/next/dist/client/components/builtin/not-found-ef9cf0833e5e0b87.js +1 -0
  211. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ef9cf0833e5e0b87.js +1 -0
  212. package/.next/static/chunks/{webpack-7f93c1ded461bdcd.js → webpack-6bfb3928a1f4ac15.js} +1 -1
  213. package/.next/static/u7dbGv9ZBD6miViUAEmi7/_buildManifest.js +1 -0
  214. package/README.ja.md +13 -12
  215. package/README.ko.md +13 -12
  216. package/README.md +13 -12
  217. package/README.zh-CN.md +13 -12
  218. package/bin/ompgui-options.js +2 -2
  219. package/bin/ompgui-pair.js +1 -0
  220. package/next.config.ts +3 -0
  221. package/package.json +1 -1
  222. package/.next/server/chunks/9145.js +0 -2
  223. package/.next/static/RCJWKG4f3VN3XnWbJ4581/_buildManifest.js +0 -1
  224. package/.next/static/chunks/3944.6215b78f025077b3.js +0 -1
  225. package/.next/static/chunks/4315-fad7ccd6e548e08e.js +0 -1
  226. package/.next/static/chunks/app/_global-error/page-08a33f204a956c10.js +0 -1
  227. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-08a33f204a956c10.js +0 -1
  228. package/.next/static/chunks/app/api/agent/[id]/events/route-08a33f204a956c10.js +0 -1
  229. package/.next/static/chunks/app/api/agent/[id]/route-08a33f204a956c10.js +0 -1
  230. package/.next/static/chunks/app/api/agent/new/route-08a33f204a956c10.js +0 -1
  231. package/.next/static/chunks/app/api/agent/running/events/route-08a33f204a956c10.js +0 -1
  232. package/.next/static/chunks/app/api/agents/[name]/route-08a33f204a956c10.js +0 -1
  233. package/.next/static/chunks/app/api/agents/route-08a33f204a956c10.js +0 -1
  234. package/.next/static/chunks/app/api/agents/unpack/route-08a33f204a956c10.js +0 -1
  235. package/.next/static/chunks/app/api/app-update/route-08a33f204a956c10.js +0 -1
  236. package/.next/static/chunks/app/api/auth/all-providers/route-08a33f204a956c10.js +0 -1
  237. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-08a33f204a956c10.js +0 -1
  238. package/.next/static/chunks/app/api/auth/login/[provider]/route-08a33f204a956c10.js +0 -1
  239. package/.next/static/chunks/app/api/auth/logout/[provider]/route-08a33f204a956c10.js +0 -1
  240. package/.next/static/chunks/app/api/auth/providers/route-08a33f204a956c10.js +0 -1
  241. package/.next/static/chunks/app/api/cwd/browse/route-08a33f204a956c10.js +0 -1
  242. package/.next/static/chunks/app/api/cwd/validate/route-08a33f204a956c10.js +0 -1
  243. package/.next/static/chunks/app/api/daemon/route-08a33f204a956c10.js +0 -1
  244. package/.next/static/chunks/app/api/default-cwd/route-08a33f204a956c10.js +0 -1
  245. package/.next/static/chunks/app/api/file-index/route-08a33f204a956c10.js +0 -1
  246. package/.next/static/chunks/app/api/files/[...path]/route-08a33f204a956c10.js +0 -1
  247. package/.next/static/chunks/app/api/git/diff/route-08a33f204a956c10.js +0 -1
  248. package/.next/static/chunks/app/api/git/status/route-08a33f204a956c10.js +0 -1
  249. package/.next/static/chunks/app/api/home/route-08a33f204a956c10.js +0 -1
  250. package/.next/static/chunks/app/api/mcp/route-08a33f204a956c10.js +0 -1
  251. package/.next/static/chunks/app/api/model-roles/route-08a33f204a956c10.js +0 -1
  252. package/.next/static/chunks/app/api/models/route-08a33f204a956c10.js +0 -1
  253. package/.next/static/chunks/app/api/models-config/catalog/route-08a33f204a956c10.js +0 -1
  254. package/.next/static/chunks/app/api/models-config/connectivity/route-08a33f204a956c10.js +0 -1
  255. package/.next/static/chunks/app/api/models-config/route-08a33f204a956c10.js +0 -1
  256. package/.next/static/chunks/app/api/models-config/test/route-08a33f204a956c10.js +0 -1
  257. package/.next/static/chunks/app/api/omp-settings/route-08a33f204a956c10.js +0 -1
  258. package/.next/static/chunks/app/api/omp-update/route-08a33f204a956c10.js +0 -1
  259. package/.next/static/chunks/app/api/omp-version/route-08a33f204a956c10.js +0 -1
  260. package/.next/static/chunks/app/api/plugins/route-08a33f204a956c10.js +0 -1
  261. package/.next/static/chunks/app/api/projects/route-08a33f204a956c10.js +0 -1
  262. package/.next/static/chunks/app/api/providers/enable/route-08a33f204a956c10.js +0 -1
  263. package/.next/static/chunks/app/api/relay/devices/[id]/route-08a33f204a956c10.js +0 -1
  264. package/.next/static/chunks/app/api/relay/devices/route-08a33f204a956c10.js +0 -1
  265. package/.next/static/chunks/app/api/relay/pair/route-08a33f204a956c10.js +0 -1
  266. package/.next/static/chunks/app/api/sessions/[id]/archive/route-08a33f204a956c10.js +0 -1
  267. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-08a33f204a956c10.js +0 -1
  268. package/.next/static/chunks/app/api/sessions/[id]/context/route-08a33f204a956c10.js +0 -1
  269. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-08a33f204a956c10.js +0 -1
  270. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-08a33f204a956c10.js +0 -1
  271. package/.next/static/chunks/app/api/sessions/[id]/export/route-08a33f204a956c10.js +0 -1
  272. package/.next/static/chunks/app/api/sessions/[id]/route-08a33f204a956c10.js +0 -1
  273. package/.next/static/chunks/app/api/sessions/[id]/state/route-08a33f204a956c10.js +0 -1
  274. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-08a33f204a956c10.js +0 -1
  275. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-08a33f204a956c10.js +0 -1
  276. package/.next/static/chunks/app/api/sessions/archive/route-08a33f204a956c10.js +0 -1
  277. package/.next/static/chunks/app/api/sessions/import/route-08a33f204a956c10.js +0 -1
  278. package/.next/static/chunks/app/api/sessions/route-08a33f204a956c10.js +0 -1
  279. package/.next/static/chunks/app/api/sessions/search/route-08a33f204a956c10.js +0 -1
  280. package/.next/static/chunks/app/api/skills/check/route-08a33f204a956c10.js +0 -1
  281. package/.next/static/chunks/app/api/skills/install/route-08a33f204a956c10.js +0 -1
  282. package/.next/static/chunks/app/api/skills/route-08a33f204a956c10.js +0 -1
  283. package/.next/static/chunks/app/api/skills/search/route-08a33f204a956c10.js +0 -1
  284. package/.next/static/chunks/app/api/skills/update/route-08a33f204a956c10.js +0 -1
  285. package/.next/static/chunks/app/api/usage/route-08a33f204a956c10.js +0 -1
  286. package/.next/static/chunks/app/api/web-auth/session/route-08a33f204a956c10.js +0 -1
  287. package/.next/static/chunks/app/api/worktrees/route-08a33f204a956c10.js +0 -1
  288. package/.next/static/chunks/app/login/page-a54174ed920300f7.js +0 -1
  289. package/.next/static/chunks/app/manifest.webmanifest/route-08a33f204a956c10.js +0 -1
  290. package/.next/static/chunks/app/pair/page-d72423ffc5654e29.js +0 -1
  291. package/.next/static/chunks/app/relay/route-08a33f204a956c10.js +0 -1
  292. package/.next/static/chunks/next/dist/client/components/builtin/app-error-08a33f204a956c10.js +0 -1
  293. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-08a33f204a956c10.js +0 -1
  294. package/.next/static/chunks/next/dist/client/components/builtin/not-found-08a33f204a956c10.js +0 -1
  295. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-08a33f204a956c10.js +0 -1
  296. /package/.next/static/{RCJWKG4f3VN3XnWbJ4581 → u7dbGv9ZBD6miViUAEmi7}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[863,3944],{30808:(e,r,t)=>{"use strict";t.d(r,{Cf:()=>k,HM:()=>z,L3:()=>P,Nt:()=>A,R6:()=>F,je:()=>H,lG:()=>S,m_:()=>I,sA:()=>w});var a=t(95155),i=t(53474),l=t(72222),n=t(45477),o=t(59567),s=t(11975),d=t(52579),c=t(3683),p=t(11412),u=t(80403),x=t(15383),h=t(96238),v=t(27443),y=t(98197),f=t(11827),g=t(977),m=t(12115),b=t(77482);let w={top:"max(8px, env(safe-area-inset-top, 0px))",left:"max(8px, env(safe-area-inset-left, 0px))",right:"max(8px, env(safe-area-inset-right, 0px))",bottom:"max(8px, env(safe-area-inset-bottom, 0px))",width:"auto",height:"auto",maxWidth:"none",maxHeight:"none",transform:"none",animation:"none"};function j({open:e,onOpenChange:r}){return(0,b.LG)(e,()=>r(!1)),null}function S({open:e,onOpenChange:r,children:t}){return(0,a.jsxs)(i.D,{open:e,onOpenChange:r,children:[(0,a.jsx)(j,{open:e,onOpenChange:r}),t]})}function k({children:e,className:r,style:t,ariaLabel:i}){return(0,a.jsxs)(l.Z,{children:[(0,a.jsx)(n.X,{style:{position:"fixed",inset:0,background:"var(--overlay-backdrop)",backdropFilter:"blur(2px)",zIndex:"var(--z-dialog-backdrop)"}}),(0,a.jsx)(o.h,{"aria-label":i,className:r,style:{position:"fixed",top:"50%",left:"50%",transform:"translate(-50%, -50%)",animation:"dialog-pop-in var(--dur-med) var(--ease-out-warm) both",zIndex:"var(--z-dialog)",background:"var(--bg)",color:"var(--text)",border:"1px solid var(--border)",borderRadius:"var(--radius-modal)",boxShadow:"var(--shadow-modal)",padding:"calc(var(--space-6) + var(--space-2))",maxWidth:"min(92vw, 560px)",maxHeight:"85dvh",overflow:"auto",...t},children:e})]})}function P({children:e,style:r}){return(0,a.jsx)(s.L,{className:"display-serif",style:{fontSize:"calc(var(--text-xl) + var(--space-3) / 2)",margin:"0 0 var(--space-5)",...r},children:e})}let z=d.H,C="(hover: none), (pointer: coarse)";function E(e){if(!window.matchMedia)return()=>{};let r=window.matchMedia(C);return r.addEventListener("change",e),()=>r.removeEventListener("change",e)}function L(){return!!window.matchMedia&&window.matchMedia(C).matches}function U(){return!1}function I({content:e,children:r,side:t="top"}){let i=(0,m.useSyncExternalStore)(E,L,U),l=r.props,n=!i||"string"!=typeof e||l["aria-label"]||l["aria-labelledby"]?r:m.cloneElement(r,{"aria-label":e});return(0,a.jsx)(c.B,{delay:350,closeDelay:0,children:(0,a.jsxs)(p.s,{disabled:i||!e,children:[(0,a.jsx)(u.k,{render:n}),i||!e?null:(0,a.jsx)(x.K,{children:(0,a.jsx)(h.o,{side:t,sideOffset:6,style:{zIndex:"var(--z-tooltip)"},children:(0,a.jsx)(v.o,{style:{background:"var(--bg-panel)",color:"var(--text)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",boxShadow:"var(--shadow-pop)",padding:"var(--space-2) calc(var(--space-4) + var(--space-1) / 2)",fontSize:"var(--text-md)",lineHeight:1.4,maxWidth:260},children:e})})})]})})}function A({open:e,onOpenChange:r,defaultOpen:t,children:i}){return(0,a.jsx)(y.N,{open:e,onOpenChange:r,defaultOpen:t,children:i})}let F=f.R;function H({children:e,style:r}){return(0,a.jsx)(g.j,{style:r,children:e})}},63944:(e,r,t)=>{"use strict";t.r(r),t.d(r,{RelayPairPanel:()=>d});var a=t(95155),i=t(51128),l=t(12115),n=t(34906),o=t(4315),s=t(28594);function d({embedded:e=!1}){let{t:r}=(0,o.s9)(),[t,c]=(0,l.useState)(""),[p,u]=(0,l.useState)(),[x,h]=(0,l.useState)(null),[v,y]=(0,l.useState)([]),[f,g]=(0,l.useState)(null),[m,b]=(0,l.useState)(!1),[w,j]=(0,l.useState)(null),S=(0,l.useMemo)(()=>x?function(e){let r=function(e){let r=e.trim();if(!r||r.length>2048)return null;try{let{data:e}=(0,s.lF)(r,{ecc:"M"});if(!Array.isArray(e)||e.length<21)return null;return e}catch{return null}}(e);if(!r)return null;let t=r.length,a=[];for(let e=0;e<t;e+=1){let i=r[e];if(!i||i.length!==t)return null;for(let r=0;r<t;r+=1)i[r]&&a.push(`M${r} ${e}h1v1h-1z`)}let i=a.join("");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${t} ${t}" width="100%" height="100%" shape-rendering="crispEdges" role="img"><rect width="${t}" height="${t}" fill="#fff"/><path fill="#000" d="${i}"/></svg>`}(x.uri):null,[x]),k=(0,l.useCallback)(async()=>{try{let[e,r]=await Promise.all([fetch("/api/relay/pair"),fetch("/api/relay/devices")]);if(e.ok){let r=await e.json(),t=null!==r&&"object"==typeof r&&"relayUrl"in r&&"string"==typeof r.relayUrl?r.relayUrl:void 0;t&&c(e=>e||t),u(t)}if(r.ok){let e=await r.json();null!==e&&"object"==typeof e&&"devices"in e&&Array.isArray(e.devices)&&y(e.devices.filter(e=>null!==e&&"object"==typeof e&&"id"in e&&"string"==typeof e.id&&"label"in e&&"string"==typeof e.label))}}catch{}},[]);async function P(){b(!0),g(null),j(null);try{let e=await fetch("/api/relay/pair",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t.trim()?{url:t.trim()}:{})}),a=await e.json();if(!e.ok||null===a||"object"!=typeof a||!("uri"in a)||"string"!=typeof a.uri||!("browserUrl"in a)||"string"!=typeof a.browserUrl||!("expiresAt"in a)||"number"!=typeof a.expiresAt||!Number.isFinite(a.expiresAt)||!("relayUrl"in a)||"string"!=typeof a.relayUrl||!("serverId"in a)||"string"!=typeof a.serverId)return void g(r("relayPair.createFailed"));h({uri:a.uri,browserUrl:a.browserUrl,expiresAt:a.expiresAt,relayUrl:a.relayUrl,serverId:a.serverId}),c(a.relayUrl),await k()}catch{g(r("relayPair.createFailed"))}finally{b(!1)}}async function z(e){if(x)try{await navigator.clipboard.writeText("browser"===e?x.browserUrl:x.uri),j(e)}catch{j(null)}}async function C(e){g(null);try{if(!(await fetch(`/api/relay/devices/${encodeURIComponent(e)}`,{method:"DELETE"})).ok)return void g(r("relayPair.revokeFailed"));await k()}catch{g(r("relayPair.revokeFailed"))}}(0,l.useEffect)(()=>{k()},[k]);let E=(0,a.jsxs)(a.Fragment,{children:[e?null:(0,a.jsx)("div",{style:{width:40,height:40,display:"grid",placeItems:"center",borderRadius:"50%",background:"var(--user-bg)",color:"var(--accent)",marginBottom:20},children:(0,a.jsx)(i.A,{size:19,"aria-hidden":"true"})}),e?(0,a.jsx)("h3",{style:{margin:0,fontSize:"var(--text-base)",fontWeight:600,color:"var(--text)"},children:r("relayPair.title")}):(0,a.jsx)("h1",{className:"display-serif",style:{margin:0,fontSize:"calc(var(--text-xl) + var(--space-5) - var(--space-1))",color:"var(--text)"},children:r("relayPair.title")}),(0,a.jsx)("p",{style:{margin:e?"4px 0 16px":"10px 0 24px",color:"var(--text-muted)",fontSize:"var(--text-base)",lineHeight:1.5},children:r("relayPair.description")}),(0,a.jsx)("p",{style:{margin:"0 0 16px",color:"var(--text-dim)",fontSize:"var(--text-sm)",lineHeight:1.45},children:r("relayPair.steps")}),(0,a.jsxs)("div",{style:{display:"grid",gap:14},children:[(0,a.jsx)(n.D0,{label:r("relayPair.urlLabel"),hint:p&&!t?p:void 0,children:(0,a.jsx)(n.ks,{value:t,onChange:c,placeholder:"wss://machine.tailnet.ts.net/relay",autoComplete:"off",spellCheck:!1,mono:!0})}),(0,a.jsx)(n.$n,{type:"button",variant:"primary",busy:m,disabled:m,onClick:()=>void P(),children:m?r("relayPair.creating"):r("relayPair.create")}),f?(0,a.jsx)("p",{style:{margin:0,color:"var(--danger, #c44)",fontSize:"var(--text-sm)"},children:f}):null,x?(0,a.jsxs)("div",{style:{display:"grid",gap:8},children:[S?(0,a.jsxs)("div",{style:{display:"grid",justifyItems:"center",gap:8},children:[(0,a.jsx)("div",{role:"img","aria-label":r("relayPair.qrHint"),className:"relay-pair-qr",style:{width:212,height:212,boxSizing:"border-box",background:"#fff",color:"#000",padding:12,borderRadius:"var(--radius-control)",border:"1px solid var(--border)",isolation:"isolate"},dangerouslySetInnerHTML:{__html:S}}),(0,a.jsx)("p",{style:{margin:0,color:"var(--text-dim)",fontSize:"var(--text-sm)",textAlign:"center"},children:r("relayPair.qrHint")})]}):null,["browser","phone"].map(e=>(0,a.jsxs)("div",{style:{display:"grid",gap:8},children:[(0,a.jsx)("label",{htmlFor:"relay-pair-"+e,style:{color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:r("browser"===e?"relayPair.browserLinkLabel":"relayPair.linkLabel")}),(0,a.jsx)("textarea",{id:"relay-pair-"+e,readOnly:!0,value:"browser"===e?x.browserUrl:x.uri,rows:"browser"===e?3:4,style:{width:"100%",resize:"vertical",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",padding:10,borderRadius:"var(--radius-control)",border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)"}}),(0,a.jsx)(n.$n,{type:"button",variant:"secondary",onClick:()=>void z(e),children:w===e?r("relayPair.copied"):r("browser"===e?"relayPair.copyBrowser":"relayPair.copy")})]},e)),(0,a.jsx)("p",{style:{margin:0,color:"var(--text-dim)",fontSize:"var(--text-sm)"},children:r("relayPair.expires",{time:new Date(x.expiresAt).toLocaleTimeString()})})]}):null,(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{style:{margin:"16px 0 8px",fontSize:"var(--text-base)",color:"var(--text)"},children:r("relayPair.devicesTitle")}),0===v.length?(0,a.jsx)("p",{style:{margin:0,color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:r("relayPair.noDevices")}):(0,a.jsx)("ul",{style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:8},children:v.map(e=>(0,a.jsxs)("li",{style:{display:"flex",justifyContent:"space-between",gap:12,alignItems:"center"},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{color:"var(--text)",fontSize:"var(--text-sm)"},children:e.label||e.id}),(0,a.jsx)("div",{style:{color:"var(--text-dim)",fontSize:"var(--text-sm)",fontFamily:"var(--font-mono)"},children:e.id})]}),(0,a.jsx)(n.$n,{type:"button",variant:"secondary",onClick:()=>void C(e.id),children:r("relayPair.revoke")})]},e.id))})]})]})]});return e?(0,a.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:0,maxWidth:520},children:E}):(0,a.jsx)("main",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",alignItems:"center",overflowY:"auto",padding:20,background:"var(--bg)"},children:(0,a.jsx)("section",{style:{width:"min(100%, 520px)",flexShrink:0,margin:"auto",padding:32,background:"var(--bg-panel)",border:"1px solid var(--border)",borderRadius:"var(--radius-modal)",boxShadow:"var(--shadow-modal)"},children:E})})}},77482:(e,r,t)=>{"use strict";t.d(r,{LG:()=>p,Mi:()=>d,pJ:()=>c});var a=t(12115);let i=[],l=new Set,n=!1;function o(){for(let e of l)e()}function s(e){let r=i[i.length-1];r&&(e.preventDefault(),r())}function d(){return i.length}function c(e){return l.add(e),()=>{l.delete(e)}}function p(e,r){let t=(0,a.useRef)(r);t.current=r,(0,a.useEffect)(()=>{if(e){var r;return r=()=>{t.current()},0===i.length&&(n||(window.addEventListener("ompgui:overlay-back",s),n=!0)),i.push(r),o(),()=>{let e=i.lastIndexOf(r);-1!==e&&i.splice(e,1),0===i.length&&n&&(window.removeEventListener("ompgui:overlay-back",s),n=!1),o()}}},[e])}},99848:(e,r,t)=>{Promise.resolve().then(t.bind(t,63944))}},e=>{e.O(0,[7224,587,4315,4906,8441,3794,7358],()=>e(e.s=99848)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,154,552,633,976,1004,1005,1097,1236,1337,1541,1697,1728,1907,2053,2086,2138,2202,2206,2504,2835,2837,3004,3432,3507,3851,3943,3955,4016,4037,4288,4896,5067,5221,5907,6444,6450,6709,6819,6849,6919,6988,7067,7074,7347,7453,7472,7483,7769,7812,7851,8167,8429,8589,8658,8704,8743,8933,9043,9156,9174,9183,9223,9742,9747,9755,9761,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8792],{532:(e,t)=>{"use strict";function r(e,t){let r={};return Object.keys(e).forEach(n=>{t.includes(n)||(r[n]=e[n])}),r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"omit",{enumerable:!0,get:function(){return r}})},550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let n=r(64252),a=r(88246),o=r(38935),i=n._(r(52209)),u=r(58285),s=r(90393),l=r(33595),c=r(87404),f=r(30566);r(98932),r(57206);class d{constructor(e,t){this.routeLoader=(0,f.createRouteLoader)(t),this.buildId=e,this.assetPrefix=t,this.promisedSsgManifest=new Promise(e=>{window.__SSG_MANIFEST?e(window.__SSG_MANIFEST):window.__SSG_MANIFEST_CB=()=>{e(window.__SSG_MANIFEST)}})}getPageList(){return(0,f.getClientBuildManifest)().then(e=>e.sortedPages)}getMiddleware(){return window.__MIDDLEWARE_MATCHERS=[{regexp:"^(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/((?!_next\\/static|_next\\/image|favicon.ico).*))(\\.json|\\.rsc|\\.segments\\/.+\\.segment\\.rsc)?[\\/#\\?]?$",originalSource:"/((?!_next/static|_next/image|favicon.ico).*)"}],window.__MIDDLEWARE_MATCHERS}getDataHref(e){var t;let r,{asPath:n,href:f,locale:d}=e,{pathname:p,query:h,search:_}=(0,l.parseRelativeUrl)(f),{pathname:m}=(0,l.parseRelativeUrl)(n),g=(0,c.removeTrailingSlash)(p);if("/"!==g[0])throw Object.defineProperty(Error(`Route name should start with a "/", got "${g}"`),"__NEXT_ERROR_CODE",{value:"E303",enumerable:!1,configurable:!0});return t=e.skipInterpolation?m:(0,s.isDynamicRoute)(g)?(0,o.interpolateAs)(p,m,h).result:g,r=(0,i.default)((0,c.removeTrailingSlash)((0,u.addLocale)(t,d)),".json"),(0,a.addBasePath)(`/_next/data/${this.buildId}${r}${_}`,!0)}_isSsg(e){return this.promisedSsgManifest.then(t=>t.has(e))}loadPage(e){return this.routeLoader.loadRoute(e).then(e=>{if("component"in e)return{page:e.component,mod:e.exports,styleSheets:e.styles.map(e=>({href:e.href,text:e.content}))};throw e.error})}prefetch(e){return this.routeLoader.prefetch(e)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2326:(e,t)=>{"use strict";function r(e){return"/api"===e||!!(null==e?void 0:e.startsWith("/api/"))}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isAPIRoute",{enumerable:!0,get:function(){return r}})},2470:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={default:function(){return b},handleClientScriptLoad:function(){return g},initScriptLoader:function(){return E}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(64252),i=r(88365),u=r(37876),s=o._(r(98477)),l=i._(r(14232)),c=r(40941),f=r(59341),d=r(41241),p=r(64189),h=new Map,_=new Set,m=e=>{let{src:t,id:r,onLoad:n=()=>{},onReady:a=null,dangerouslySetInnerHTML:o,children:i="",strategy:u="afterInteractive",onError:l,stylesheets:c}=e,d=r||t;if(d&&_.has(d))return;if(h.has(t)){_.add(d),h.get(t).then(n,l);return}let p=()=>{a&&a(),_.add(d)},m=document.createElement("script"),g=new Promise((e,t)=>{m.addEventListener("load",function(t){e(),n&&n.call(this,t),p()}),m.addEventListener("error",function(e){t(e)})}).catch(function(e){l&&l(e)});o?(m.innerHTML=o.__html||"",p()):i?(m.textContent="string"==typeof i?i:Array.isArray(i)?i.join(""):"",p()):t&&(m.src=t,h.set(t,g)),(0,f.setAttributesFromProps)(m,e),"worker"===u&&m.setAttribute("type","text/partytown"),m.setAttribute("data-nscript",u),c&&(e=>{if(s.default.preinit)return e.forEach(e=>{s.default.preinit(e,{as:"style"})});{let t=document.head;e.forEach(e=>{let r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,t.appendChild(r)})}})(c),document.body.appendChild(m)};function g(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,d.requestIdleCallback)(()=>m(e))}):m(e)}function E(e){e.forEach(g),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");_.add(t)})}function y(e){let{id:t,src:r="",onLoad:n=()=>{},onReady:a=null,strategy:o="afterInteractive",onError:i,stylesheets:f,...h}=e,{updateScripts:g,scripts:E,getIsSsr:y,appDir:b,nonce:P}=(0,l.useContext)(c.HeadManagerContext);P=h.nonce||P;let R=(0,l.useRef)(!1);(0,l.useEffect)(()=>{let e=t||r;R.current||(a&&e&&_.has(e)&&a(),R.current=!0)},[a,t,r]);let v=(0,l.useRef)(!1);if((0,l.useEffect)(()=>{if(!v.current){if("afterInteractive"===o)m(e);else"lazyOnload"===o&&("complete"===document.readyState?(0,d.requestIdleCallback)(()=>m(e)):window.addEventListener("load",()=>{(0,d.requestIdleCallback)(()=>m(e))}));v.current=!0}},[e,o]),("beforeInteractive"===o||"worker"===o)&&(g?(E[o]=(E[o]||[]).concat([{id:t,src:r,onLoad:n,onReady:a,onError:i,...h,nonce:P}]),g(E)):y&&y()?_.add(t||r):y&&!y()&&m({...e,nonce:P})),b){if(f&&f.forEach(e=>{s.default.preinit(e,{as:"style"})}),"beforeInteractive"===o)if(!r)return h.dangerouslySetInnerHTML&&(h.children=h.dangerouslySetInnerHTML.__html,delete h.dangerouslySetInnerHTML),(0,u.jsx)("script",{nonce:P,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,p.htmlEscapeJsonString)(JSON.stringify([0,{...h,id:t}]))})`}});else return s.default.preload(r,h.integrity?{as:"script",integrity:h.integrity,nonce:P,crossOrigin:h.crossOrigin}:{as:"script",nonce:P,crossOrigin:h.crossOrigin}),(0,u.jsx)("script",{nonce:P,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,p.htmlEscapeJsonString)(JSON.stringify([r,{...h,id:t}]))})`}});"afterInteractive"===o&&r&&s.default.preload(r,h.integrity?{as:"script",integrity:h.integrity,nonce:P,crossOrigin:h.crossOrigin}:{as:"script",nonce:P,crossOrigin:h.crossOrigin})}return null}Object.defineProperty(y,"__nextScript",{value:!0});let b=y;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3899:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return h}});let n=r(64252),a=r(37876),o=n._(r(14232)),i=n._(r(88005)),u={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function s({req:e,res:t,err:r}){return{statusCode:t&&t.statusCode?t.statusCode:r?r.statusCode:404,hostname:window.location.hostname}}let l={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"},c={lineHeight:"48px"},f={display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},d={fontSize:14,fontWeight:400,lineHeight:"28px"},p={display:"inline-block"};class h extends o.default.Component{static{this.displayName="ErrorPage"}static{this.getInitialProps=s}static{this.origGetInitialProps=s}render(){let{statusCode:e,withDarkMode:t=!0}=this.props,r=this.props.title||u[e]||"An unexpected error has occurred";return(0,a.jsxs)("div",{style:l,children:[(0,a.jsx)(i.default,{children:(0,a.jsx)("title",{children:e?`${e}: ${r}`:"Application error: a client-side exception has occurred"})}),(0,a.jsxs)("div",{style:c,children:[(0,a.jsx)("style",{dangerouslySetInnerHTML:{__html:`body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}${t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":""}`}}),e?(0,a.jsx)("h1",{className:"next-error-h1",style:f,children:e}):null,(0,a.jsx)("div",{style:p,children:(0,a.jsxs)("h2",{style:d,children:[this.props.title||e?r:(0,a.jsxs)(a.Fragment,{children:["Application error: a client-side exception has occurred"," ",!!this.props.hostname&&(0,a.jsxs)(a.Fragment,{children:["while loading ",this.props.hostname]})," ","(see the browser console for more information)"]}),"."]})})]})]})}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6232:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Portal",{enumerable:!0,get:function(){return o}});let n=r(14232),a=r(98477),o=({children:e,type:t})=>{let[r,o]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let e=document.createElement(t);return document.body.appendChild(e),o(e),()=>{document.body.removeChild(e)}},[t]),r?(0,a.createPortal)(e,r):null};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7069:(e,t)=>{"use strict";function r(){let e=Object.create(null);return{on(t,r){(e[t]||(e[t]=[])).push(r)},off(t,r){e[t]&&e[t].splice(e[t].indexOf(r)>>>0,1)},emit(t,...r){(e[t]||[]).slice().map(e=>{e(...r)})}}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}})},7445:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getRouteMatcher",{enumerable:!0,get:function(){return o}});let n=r(98608),a=r(60054);function o({re:e,groups:t}){return(0,a.safeRouteMatcher)(r=>{let a=e.exec(r);if(!a)return!1;let o=e=>{try{return decodeURIComponent(e)}catch{throw Object.defineProperty(new n.DecodeError("failed to decode param"),"__NEXT_ERROR_CODE",{value:"E528",enumerable:!1,configurable:!0})}},i={};for(let[e,r]of Object.entries(t)){let t=a[r.pos];void 0!==t&&(r.repeat?i[e]=t.split("/").map(e=>o(e)):i[e]=o(t))}return i})}},7640:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={Router:function(){return u.default},createRouter:function(){return g},default:function(){return _},makePublicRouterInstance:function(){return E},useRouter:function(){return m},withRouter:function(){return c.default}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(64252),i=o._(r(14232)),u=o._(r(58762)),s=r(76194),l=o._(r(66240)),c=o._(r(75029)),f={router:null,readyCallbacks:[],ready(e){if(this.router)return e();this.readyCallbacks.push(e)}},d=["pathname","route","query","asPath","components","isFallback","basePath","locale","locales","defaultLocale","isReady","isPreview","isLocaleDomain","domainLocales"],p=["push","replace","reload","back","prefetch","beforePopState"];function h(){if(!f.router)throw Object.defineProperty(Error('No router instance found.\nYou should only use "next/router" on the client side of your app.\n'),"__NEXT_ERROR_CODE",{value:"E1044",enumerable:!1,configurable:!0});return f.router}Object.defineProperty(f,"events",{get:()=>u.default.events}),d.forEach(e=>{Object.defineProperty(f,e,{get:()=>h()[e]})}),p.forEach(e=>{f[e]=(...t)=>h()[e](...t)}),["routeChangeStart","beforeHistoryChange","routeChangeComplete","routeChangeError","hashChangeStart","hashChangeComplete"].forEach(e=>{f.ready(()=>{u.default.events.on(e,(...t)=>{let r=`on${e.charAt(0).toUpperCase()}${e.substring(1)}`;if(f[r])try{f[r](...t)}catch(e){console.error(`Error when running the Router event: ${r}`),console.error((0,l.default)(e)?`${e.message}
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8792],{532:(e,t)=>{"use strict";function r(e,t){let r={};return Object.keys(e).forEach(n=>{t.includes(n)||(r[n]=e[n])}),r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"omit",{enumerable:!0,get:function(){return r}})},550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let n=r(64252),a=r(88246),o=r(38935),i=n._(r(52209)),u=r(58285),s=r(90393),l=r(33595),c=r(87404),f=r(30566);r(98932),r(57206);class d{constructor(e,t){this.routeLoader=(0,f.createRouteLoader)(t),this.buildId=e,this.assetPrefix=t,this.promisedSsgManifest=new Promise(e=>{window.__SSG_MANIFEST?e(window.__SSG_MANIFEST):window.__SSG_MANIFEST_CB=()=>{e(window.__SSG_MANIFEST)}})}getPageList(){return(0,f.getClientBuildManifest)().then(e=>e.sortedPages)}getMiddleware(){return window.__MIDDLEWARE_MATCHERS=[{regexp:"^(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/((?!_next\\/static\\/|favicon.ico$).*))(\\.json|\\.rsc|\\.segments\\/.+\\.segment\\.rsc)?[\\/#\\?]?$",originalSource:"/((?!_next/static/|favicon.ico$).*)"}],window.__MIDDLEWARE_MATCHERS}getDataHref(e){var t;let r,{asPath:n,href:f,locale:d}=e,{pathname:p,query:h,search:_}=(0,l.parseRelativeUrl)(f),{pathname:m}=(0,l.parseRelativeUrl)(n),g=(0,c.removeTrailingSlash)(p);if("/"!==g[0])throw Object.defineProperty(Error(`Route name should start with a "/", got "${g}"`),"__NEXT_ERROR_CODE",{value:"E303",enumerable:!1,configurable:!0});return t=e.skipInterpolation?m:(0,s.isDynamicRoute)(g)?(0,o.interpolateAs)(p,m,h).result:g,r=(0,i.default)((0,c.removeTrailingSlash)((0,u.addLocale)(t,d)),".json"),(0,a.addBasePath)(`/_next/data/${this.buildId}${r}${_}`,!0)}_isSsg(e){return this.promisedSsgManifest.then(t=>t.has(e))}loadPage(e){return this.routeLoader.loadRoute(e).then(e=>{if("component"in e)return{page:e.component,mod:e.exports,styleSheets:e.styles.map(e=>({href:e.href,text:e.content}))};throw e.error})}prefetch(e){return this.routeLoader.prefetch(e)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2326:(e,t)=>{"use strict";function r(e){return"/api"===e||!!(null==e?void 0:e.startsWith("/api/"))}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isAPIRoute",{enumerable:!0,get:function(){return r}})},2470:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={default:function(){return b},handleClientScriptLoad:function(){return g},initScriptLoader:function(){return E}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(64252),i=r(88365),u=r(37876),s=o._(r(98477)),l=i._(r(14232)),c=r(40941),f=r(59341),d=r(41241),p=r(64189),h=new Map,_=new Set,m=e=>{let{src:t,id:r,onLoad:n=()=>{},onReady:a=null,dangerouslySetInnerHTML:o,children:i="",strategy:u="afterInteractive",onError:l,stylesheets:c}=e,d=r||t;if(d&&_.has(d))return;if(h.has(t)){_.add(d),h.get(t).then(n,l);return}let p=()=>{a&&a(),_.add(d)},m=document.createElement("script"),g=new Promise((e,t)=>{m.addEventListener("load",function(t){e(),n&&n.call(this,t),p()}),m.addEventListener("error",function(e){t(e)})}).catch(function(e){l&&l(e)});o?(m.innerHTML=o.__html||"",p()):i?(m.textContent="string"==typeof i?i:Array.isArray(i)?i.join(""):"",p()):t&&(m.src=t,h.set(t,g)),(0,f.setAttributesFromProps)(m,e),"worker"===u&&m.setAttribute("type","text/partytown"),m.setAttribute("data-nscript",u),c&&(e=>{if(s.default.preinit)return e.forEach(e=>{s.default.preinit(e,{as:"style"})});{let t=document.head;e.forEach(e=>{let r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,t.appendChild(r)})}})(c),document.body.appendChild(m)};function g(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,d.requestIdleCallback)(()=>m(e))}):m(e)}function E(e){e.forEach(g),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");_.add(t)})}function y(e){let{id:t,src:r="",onLoad:n=()=>{},onReady:a=null,strategy:o="afterInteractive",onError:i,stylesheets:f,...h}=e,{updateScripts:g,scripts:E,getIsSsr:y,appDir:b,nonce:P}=(0,l.useContext)(c.HeadManagerContext);P=h.nonce||P;let R=(0,l.useRef)(!1);(0,l.useEffect)(()=>{let e=t||r;R.current||(a&&e&&_.has(e)&&a(),R.current=!0)},[a,t,r]);let v=(0,l.useRef)(!1);if((0,l.useEffect)(()=>{if(!v.current){if("afterInteractive"===o)m(e);else"lazyOnload"===o&&("complete"===document.readyState?(0,d.requestIdleCallback)(()=>m(e)):window.addEventListener("load",()=>{(0,d.requestIdleCallback)(()=>m(e))}));v.current=!0}},[e,o]),("beforeInteractive"===o||"worker"===o)&&(g?(E[o]=(E[o]||[]).concat([{id:t,src:r,onLoad:n,onReady:a,onError:i,...h,nonce:P}]),g(E)):y&&y()?_.add(t||r):y&&!y()&&m({...e,nonce:P})),b){if(f&&f.forEach(e=>{s.default.preinit(e,{as:"style"})}),"beforeInteractive"===o)if(!r)return h.dangerouslySetInnerHTML&&(h.children=h.dangerouslySetInnerHTML.__html,delete h.dangerouslySetInnerHTML),(0,u.jsx)("script",{nonce:P,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,p.htmlEscapeJsonString)(JSON.stringify([0,{...h,id:t}]))})`}});else return s.default.preload(r,h.integrity?{as:"script",integrity:h.integrity,nonce:P,crossOrigin:h.crossOrigin}:{as:"script",nonce:P,crossOrigin:h.crossOrigin}),(0,u.jsx)("script",{nonce:P,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${(0,p.htmlEscapeJsonString)(JSON.stringify([r,{...h,id:t}]))})`}});"afterInteractive"===o&&r&&s.default.preload(r,h.integrity?{as:"script",integrity:h.integrity,nonce:P,crossOrigin:h.crossOrigin}:{as:"script",nonce:P,crossOrigin:h.crossOrigin})}return null}Object.defineProperty(y,"__nextScript",{value:!0});let b=y;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3899:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return h}});let n=r(64252),a=r(37876),o=n._(r(14232)),i=n._(r(88005)),u={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function s({req:e,res:t,err:r}){return{statusCode:t&&t.statusCode?t.statusCode:r?r.statusCode:404,hostname:window.location.hostname}}let l={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"},c={lineHeight:"48px"},f={display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},d={fontSize:14,fontWeight:400,lineHeight:"28px"},p={display:"inline-block"};class h extends o.default.Component{static{this.displayName="ErrorPage"}static{this.getInitialProps=s}static{this.origGetInitialProps=s}render(){let{statusCode:e,withDarkMode:t=!0}=this.props,r=this.props.title||u[e]||"An unexpected error has occurred";return(0,a.jsxs)("div",{style:l,children:[(0,a.jsx)(i.default,{children:(0,a.jsx)("title",{children:e?`${e}: ${r}`:"Application error: a client-side exception has occurred"})}),(0,a.jsxs)("div",{style:c,children:[(0,a.jsx)("style",{dangerouslySetInnerHTML:{__html:`body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}${t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":""}`}}),e?(0,a.jsx)("h1",{className:"next-error-h1",style:f,children:e}):null,(0,a.jsx)("div",{style:p,children:(0,a.jsxs)("h2",{style:d,children:[this.props.title||e?r:(0,a.jsxs)(a.Fragment,{children:["Application error: a client-side exception has occurred"," ",!!this.props.hostname&&(0,a.jsxs)(a.Fragment,{children:["while loading ",this.props.hostname]})," ","(see the browser console for more information)"]}),"."]})})]})]})}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6232:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Portal",{enumerable:!0,get:function(){return o}});let n=r(14232),a=r(98477),o=({children:e,type:t})=>{let[r,o]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let e=document.createElement(t);return document.body.appendChild(e),o(e),()=>{document.body.removeChild(e)}},[t]),r?(0,a.createPortal)(e,r):null};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7069:(e,t)=>{"use strict";function r(){let e=Object.create(null);return{on(t,r){(e[t]||(e[t]=[])).push(r)},off(t,r){e[t]&&e[t].splice(e[t].indexOf(r)>>>0,1)},emit(t,...r){(e[t]||[]).slice().map(e=>{e(...r)})}}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}})},7445:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getRouteMatcher",{enumerable:!0,get:function(){return o}});let n=r(98608),a=r(60054);function o({re:e,groups:t}){return(0,a.safeRouteMatcher)(r=>{let a=e.exec(r);if(!a)return!1;let o=e=>{try{return decodeURIComponent(e)}catch{throw Object.defineProperty(new n.DecodeError("failed to decode param"),"__NEXT_ERROR_CODE",{value:"E528",enumerable:!1,configurable:!0})}},i={};for(let[e,r]of Object.entries(t)){let t=a[r.pos];void 0!==t&&(r.repeat?i[e]=t.split("/").map(e=>o(e)):i[e]=o(t))}return i})}},7640:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={Router:function(){return u.default},createRouter:function(){return g},default:function(){return _},makePublicRouterInstance:function(){return E},useRouter:function(){return m},withRouter:function(){return c.default}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(64252),i=o._(r(14232)),u=o._(r(58762)),s=r(76194),l=o._(r(66240)),c=o._(r(75029)),f={router:null,readyCallbacks:[],ready(e){if(this.router)return e();this.readyCallbacks.push(e)}},d=["pathname","route","query","asPath","components","isFallback","basePath","locale","locales","defaultLocale","isReady","isPreview","isLocaleDomain","domainLocales"],p=["push","replace","reload","back","prefetch","beforePopState"];function h(){if(!f.router)throw Object.defineProperty(Error('No router instance found.\nYou should only use "next/router" on the client side of your app.\n'),"__NEXT_ERROR_CODE",{value:"E1044",enumerable:!1,configurable:!0});return f.router}Object.defineProperty(f,"events",{get:()=>u.default.events}),d.forEach(e=>{Object.defineProperty(f,e,{get:()=>h()[e]})}),p.forEach(e=>{f[e]=(...t)=>h()[e](...t)}),["routeChangeStart","beforeHistoryChange","routeChangeComplete","routeChangeError","hashChangeStart","hashChangeComplete"].forEach(e=>{f.ready(()=>{u.default.events.on(e,(...t)=>{let r=`on${e.charAt(0).toUpperCase()}${e.substring(1)}`;if(f[r])try{f[r](...t)}catch(e){console.error(`Error when running the Router event: ${r}`),console.error((0,l.default)(e)?`${e.message}
2
2
  ${e.stack}`:e+"")}})})});let _=f;function m(){let e=i.default.useContext(s.RouterContext);if(!e)throw Object.defineProperty(Error("NextRouter was not mounted. https://nextjs.org/docs/messages/next-router-not-mounted"),"__NEXT_ERROR_CODE",{value:"E509",enumerable:!1,configurable:!0});return e}function g(...e){return f.router=new u.default(...e),f.readyCallbacks.forEach(e=>e()),f.readyCallbacks=[],f.router}function E(e){let t={};for(let r of d){if("object"==typeof e[r]){t[r]=Object.assign(Array.isArray(e[r])?[]:{},e[r]);continue}t[r]=e[r]}return t.events=u.default.events,p.forEach(r=>{t[r]=(...t)=>e[r](...t)}),t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9597:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={UNDERSCORE_GLOBAL_ERROR_ROUTE:function(){return i},UNDERSCORE_GLOBAL_ERROR_ROUTE_ENTRY:function(){return u},UNDERSCORE_NOT_FOUND_ROUTE:function(){return a},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return o}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});let a="/_not-found",o=`${a}/page`,i="/_global-error",u=`${i}/page`},10231:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={getSortedRouteObjects:function(){return o.getSortedRouteObjects},getSortedRoutes:function(){return o.getSortedRoutes},isDynamicRoute:function(){return i.isDynamicRoute}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(25845),i=r(90393)},10363:(e,t,r)=>{"use strict";let n,a,o,i,u,s,l,c,f,d,p,h;Object.defineProperty(t,"__esModule",{value:!0});let _=r(88365);Object.defineProperty(t,"__esModule",{value:!0});var m={emitter:function(){return X},hydrate:function(){return eh},initialize:function(){return z},router:function(){return n},version:function(){return H}};for(var g in m)Object.defineProperty(t,g,{enumerable:!0,get:m[g]});let E=r(64252),y=r(37876);r(21291);let b=E._(r(14232)),P=E._(r(78944)),R=r(40941),v=E._(r(7069)),O=r(76194),S=r(92390),T=r(90393),j=r(34450),A=r(98608),N=r(6232),x=E._(r(97933)),w=E._(r(550)),C=r(55944),I=r(7640),M=r(66240),L=r(28543),D=r(12267),U=r(55829),$=r(28832),F=r(70435),k=r(53485),B=r(48193);r(81383),r(27585);let H="16.3.0",X=(0,v.default)(),W=e=>[].slice.call(e),G=!1;class q extends b.default.Component{componentDidCatch(e,t){this.props.fn(e,t)}componentDidMount(){this.scrollToHash(),n.isSsr&&(a.isFallback||a.nextExport&&((0,T.isDynamicRoute)(n.pathname)||location.search||G)||a.props&&a.props.__N_SSG&&(location.search||G))&&n.replace(n.pathname+"?"+String((0,j.assign)((0,j.urlQueryToSearchParams)(n.query),new URLSearchParams(location.search))),o,{_h:1,shallow:!a.isFallback&&!G}).catch(e=>{if(!e.cancelled)throw e})}componentDidUpdate(){this.scrollToHash()}scrollToHash(){let{hash:e}=location;if(!(e=e&&e.substring(1)))return;let t=document.getElementById(e);t&&setTimeout(()=>t.scrollIntoView(),0)}render(){return this.props.children}}async function z(e={}){a=JSON.parse(document.getElementById("__NEXT_DATA__").textContent),window.__NEXT_DATA__=a,h=a.defaultLocale;let t=a.assetPrefix||"";if(self.__next_set_public_path__(`${t}/_next/`),o=(0,A.getURL)(),(0,U.hasBasePath)(o)&&(o=(0,D.removeBasePath)(o)),a.scriptLoader){let{initScriptLoader:e}=r(2470);e(a.scriptLoader)}i=new w.default(a.buildId,t);let l=([e,t])=>i.routeLoader.onEntrypoint(e,t);return window.__NEXT_P&&window.__NEXT_P.map(e=>setTimeout(()=>l(e),0)),window.__NEXT_P=[],window.__NEXT_P.push=l,(s=(0,x.default)()).getIsSsr=()=>n.isSsr,u=document.getElementById("__next"),{assetPrefix:t}}function Y(e,t){return(0,y.jsx)(e,{...t})}function V({children:e}){let t=b.default.useMemo(()=>(0,F.adaptForAppRouterInstance)(n),[]);return(0,y.jsx)(q,{fn:e=>J({App:f,err:e}).catch(e=>console.error("Error rendering page: ",e)),children:(0,y.jsx)($.AppRouterContext.Provider,{value:t,children:(0,y.jsx)(k.SearchParamsContext.Provider,{value:(0,F.adaptForSearchParams)(n),children:(0,y.jsx)(F.PathnameContextProviderAdapter,{router:n,isAutoExport:self.__NEXT_DATA__.autoExport??!1,children:(0,y.jsx)(k.PathParamsContext.Provider,{value:(0,F.adaptForPathParams)(n),children:(0,y.jsx)(O.RouterContext.Provider,{value:(0,I.makePublicRouterInstance)(n),children:(0,y.jsx)(R.HeadManagerContext.Provider,{value:s,children:(0,y.jsx)(L.ImageConfigContext.Provider,{value:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1},children:e})})})})})})})})}let K=e=>t=>{let r={...t,Component:p,err:a.err,router:n};return(0,y.jsx)(V,{children:Y(e,r)})};function J(e){let{App:t,err:u}=e;return console.error(u),console.error("A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred"),i.loadPage("/_error").then(({page:n,styleSheets:a})=>l?.Component===n?Promise.resolve().then(()=>_._(r(3899))).then(n=>Promise.resolve().then(()=>_._(r(41966))).then(r=>(e.App=t=r.default,n))).then(e=>({ErrorComponent:e.default,styleSheets:[]})):{ErrorComponent:n,styleSheets:a}).then(({ErrorComponent:r,styleSheets:i})=>{let s=K(t),l={Component:r,AppTree:s,router:n,ctx:{err:u,pathname:a.page,query:a.query,asPath:o,AppTree:s}};return Promise.resolve(e.props?.err?e.props:(0,A.loadGetInitialProps)(t,l)).then(t=>ed({...e,err:u,Component:r,styleSheets:i,props:t}))})}function Q({callback:e}){return b.default.useLayoutEffect(()=>e(),[e]),null}let Z="beforeRender",ee="afterRender",et="afterHydrate",er="routeChange",en="Next.js-hydration",ea="Next.js-route-change-to-render",eo="Next.js-render",ei=null,eu=!0;function es(){[Z,et,ee,er].forEach(e=>performance.clearMarks(e))}function el(){A.ST&&(performance.mark(et),performance.getEntriesByName(Z,"mark").length&&(performance.measure("Next.js-before-hydration","navigationStart",Z),performance.measure(en,Z,et)),d&&performance.getEntriesByName(en).forEach(d),es())}function ec(){if(!A.ST)return;performance.mark(ee);let e=performance.getEntriesByName(er,"mark");e.length&&(performance.getEntriesByName(Z,"mark").length&&(performance.measure(ea,e[0].name,Z),performance.measure(eo,Z,ee),d&&(performance.getEntriesByName(eo).forEach(d),performance.getEntriesByName(ea).forEach(d))),es(),[ea,eo].forEach(e=>performance.clearMeasures(e)))}function ef({callbacks:e,children:t}){return b.default.useLayoutEffect(()=>e.forEach(e=>e()),[e]),t}function ed(e){var t,r;let a,o,{App:i,Component:s,props:f,err:d}=e,p="initial"in e?void 0:e.styleSheets;s=s||l.Component;let h={...f=f||l.props,Component:s,err:d,router:n};l=h;let _=!1,m=new Promise((e,t)=>{c&&c(),o=()=>{c=null,e()},c=()=>{_=!0,c=null;let e=Object.defineProperty(Error("Cancel rendering route"),"__NEXT_ERROR_CODE",{value:"E503",enumerable:!1,configurable:!0});e.cancelled=!0,t(e)}});function g(){o()}!function(){if(!p)return;let e=new Set(W(document.querySelectorAll("style[data-n-href]")).map(e=>e.getAttribute("data-n-href"))),t=document.querySelector("noscript[data-n-css]"),r=t?.getAttribute("data-n-css");p.forEach(({href:t,text:n})=>{if(!e.has(t)){let e=document.createElement("style");e.setAttribute("data-n-href",t),e.setAttribute("media","x"),r&&e.setAttribute("nonce",r),document.head.appendChild(e),e.appendChild(document.createTextNode(n))}})}();let E=(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(Q,{callback:function(){if(p&&!_){let e=new Set(p.map(e=>e.href)),t=W(document.querySelectorAll("style[data-n-href]")),r=t.map(e=>e.getAttribute("data-n-href"));for(let n=0;n<r.length;++n)e.has(r[n])?t[n].removeAttribute("media"):t[n].setAttribute("media","x");let n=document.querySelector("noscript[data-n-css]");n&&p.forEach(({href:e})=>{let t=document.querySelector(`style[data-n-href="${e}"]`);t&&(n.parentNode.insertBefore(t,n.nextSibling),n=t)}),W(document.querySelectorAll("link[data-n-p]")).forEach(e=>{e.parentNode.removeChild(e)})}if(e.scroll){let{x:t,y:r}=e.scroll;(0,S.disableSmoothScrollDuringRouteTransition)(()=>{window.scrollTo(t,r)})}}}),(0,y.jsxs)(V,{children:[Y(i,h),(0,y.jsx)(N.Portal,{type:"next-route-announcer",children:(0,y.jsx)(C.RouteAnnouncer,{})})]})]});return t=u,r=e=>(0,y.jsx)(ef,{callbacks:[e,g],children:(0,y.jsx)(b.default.StrictMode,{children:E})}),A.ST&&performance.mark(Z),a=r(eu?el:ec),ei?(0,b.default.startTransition)(()=>{ei.render(a)}):(ei=P.default.hydrateRoot(t,a,{onRecoverableError:B.onRecoverableError}),eu=!1),m}async function ep(e){if(e.err&&(void 0===e.Component||!e.isHydratePass))return void await J(e);try{await ed(e)}catch(r){let t=(0,M.getProperError)(r);if(t.cancelled)throw t;await J({...e,err:t})}}async function eh(e){let t=a.err;try{let e=await i.routeLoader.whenEntrypoint("/_app");if("error"in e)throw e.error;let{component:t,exports:r}=e;f=t,r&&r.reportWebVitals&&(d=({id:e,name:t,startTime:n,value:a,duration:o,entryType:i,entries:u,attribution:s})=>{let l,c=`${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`;u&&u.length&&(l=u[0].startTime);let f={id:e||c,name:t,startTime:n||l,value:null==a?o:a,label:"mark"===i||"measure"===i?"custom":"web-vital"};s&&(f.attribution=s),r.reportWebVitals(f)});let n=await i.routeLoader.whenEntrypoint(a.page);if("error"in n)throw n.error;p=n.component}catch(e){t=(0,M.getProperError)(e)}window.__NEXT_PRELOADREADY&&await window.__NEXT_PRELOADREADY(a.dynamicIds),n=(0,I.createRouter)(a.page,a.query,o,{initialProps:a.props,pageLoader:i,App:f,Component:p,wrapApp:K,err:t,isFallback:!!a.isFallback,subscription:(e,t,r)=>ep(Object.assign({},e,{App:t,scroll:r})),locale:a.locale,locales:a.locales,defaultLocale:h,domainLocales:a.domainLocales,isPreview:a.isPreview}),G=await n._initialMatchesMiddlewarePromise;let r={App:f,initial:!0,Component:p,props:a.props,err:t,isHydratePass:!0};e?.beforeRender&&await e.beforeRender(),ep(r)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},11654:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return a}});let n=r(78600);function a(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},12267:(e,t,r)=>{"use strict";function n(e){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return n}}),r(55829),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},14410:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isJavaScriptURLString",{enumerable:!0,get:function(){return n}});let r=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function n(e){return r.test(""+e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},14933:(e,t)=>{"use strict";function r(e,t){let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n=r.length;n--;){let a=r[n];if("query"===a){let r=Object.keys(e.query);if(r.length!==Object.keys(t.query).length)return!1;for(let n=r.length;n--;){let a=r[n];if(!t.query.hasOwnProperty(a)||e.query[a]!==t.query[a])return!1}}else if(!t.hasOwnProperty(a)||e[a]!==t[a])return!1}return!0}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"compareRouterStates",{enumerable:!0,get:function(){return r}})},15594:(e,t,r)=>{"use strict";function n(e,t){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeLocale",{enumerable:!0,get:function(){return n}}),r(78600),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},15861:e=>{var t={156:function(e){var t,r,n,a=e.exports={};function o(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function u(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var s=[],l=!1,c=-1;function f(){l&&n&&(l=!1,n.length?s=n.concat(s):c=-1,s.length&&d())}function d(){if(!l){var e=u(f);l=!0;for(var t=s.length;t;){for(n=s,s=[];++c<t;)n&&n[c].run();c=-1,t=s.length}n=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function h(){}a.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];s.push(new p(e,t)),1!==s.length||l||u(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=h,a.addListener=h,a.once=h,a.off=h,a.removeListener=h,a.removeAllListeners=h,a.emit=h,a.prependListener=h,a.prependOnceListener=h,a.listeners=function(e){return[]},a.binding=function(e){throw Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(e){throw Error("process.chdir is not supported")},a.umask=function(){return 0}}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var o=r[e]={exports:{}},i=!0;try{t[e](o,o.exports,n),i=!1}finally{i&&delete r[e]}return o.exports}n.ab="//",e.exports=n(156)},16958:(e,t)=>{"use strict";let r;Object.defineProperty(t,"__esModule",{value:!0});var n={getAssetToken:function(){return u},getAssetTokenQuery:function(){return s},getDeploymentId:function(){return o},getDeploymentIdQuery:function(){return i}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});function o(){return r}function i(e=!1){return r?`${e?"&":"?"}dpl=${r}`:""}function u(){return!1}function s(e=!1){return""}r=document.documentElement.dataset.dplId,delete document.documentElement.dataset.dplId},17929:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getNextPathnameInfo",{enumerable:!0,get:function(){return i}});let n=r(33684),a=r(93330),o=r(11654);function i(e,t){let{basePath:r,i18n:i,trailingSlash:u}=t.nextConfig??{},s={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):u};r&&(0,o.pathHasPrefix)(s.pathname,r)&&(s.pathname=(0,a.removePathPrefix)(s.pathname,r),s.basePath=r);let l=s.pathname;if(s.pathname.startsWith("/_next/data/")&&s.pathname.endsWith(".json")){let e=s.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");s.buildId=e[0],l="index"!==e[1]?`/${e.slice(1).join("/")}`:"/",!0===t.parseData&&(s.pathname=l)}if(i){let e=t.i18nProvider?t.i18nProvider.analyze(s.pathname):(0,n.normalizeLocalePath)(s.pathname,i.locales);s.locale=e.detectedLocale,s.pathname=e.pathname??s.pathname,!e.detectedLocale&&s.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(l):(0,n.normalizeLocalePath)(l,i.locales)).detectedLocale&&(s.locale=e.detectedLocale)}return s}},18475:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"resolveParamValue",{enumerable:!0,get:function(){return o}});let n=r(69642),a=r(30050);function o(e,t,r,o,i){switch(t){case"catchall":case"optional-catchall":case"catchall-intercepted-(..)(..)":case"catchall-intercepted-(.)":case"catchall-intercepted-(..)":case"catchall-intercepted-(...)":let u=[];for(let e=r;e<o.segments.length;e++){let n=o.segments[e];if("static"===n.type){let o=n.name,i=(0,a.interceptionPrefixFromParamType)(t);i&&e===r&&i===n.interceptionMarker&&(o=o.replace(n.interceptionMarker,"")),u.push(o)}else{if(!i.hasOwnProperty(n.param.paramName)){if("optional-catchall"===n.param.paramType)break;return}let e=i[n.param.paramName];Array.isArray(e)?u.push(...e):u.push(e)}}if(u.length>0)return u;if("optional-catchall"===t)return;throw Object.defineProperty(new n.InvariantError(`Unexpected empty path segments match for a route "${o.pathname}" with param "${e}" of type "${t}"`),"__NEXT_ERROR_CODE",{value:"E931",enumerable:!1,configurable:!0});case"dynamic":case"dynamic-intercepted-(..)(..)":case"dynamic-intercepted-(.)":case"dynamic-intercepted-(..)":case"dynamic-intercepted-(...)":if(r<o.segments.length){let e=o.segments[r];if("dynamic"===e.type&&!i.hasOwnProperty(e.param.paramName))return;return"dynamic"===e.type?i[e.param.paramName]:(0,a.interceptionPrefixFromParamType)(t)===e.interceptionMarker?e.name.replace(e.interceptionMarker,""):e.name}return}}},21291:()=>{"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},23417:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={REDIRECT_ERROR_CODE:function(){return i},isRedirectError:function(){return u}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(85067),i="NEXT_REDIRECT";function u(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,n]=t,a=t.slice(2,-2).join(";"),u=Number(t.at(-2));return r===i&&("replace"===n||"push"===n)&&"string"==typeof a&&!isNaN(u)&&u in o.RedirectStatusCode}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},23822:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"escapeStringRegexp",{enumerable:!0,get:function(){return a}});let r=/[|\\{}()[\]^$+*?.-]/,n=/[|\\{}()[\]^$+*?.-]/g;function a(e){return r.test(e)?e.replace(n,"\\$&"):e}},23882:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"formatNextPathnameInfo",{enumerable:!0,get:function(){return u}});let n=r(87404),a=r(55527),o=r(56786),i=r(38385);function u(e){let t=(0,i.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,o.addPathSuffix)((0,a.addPathPrefix)(t,`/_next/data/${e.buildId}`),"/"===e.pathname?"index.json":".json")),t=(0,a.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,o.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},24087:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reportGlobalError",{enumerable:!0,get:function(){return r}});let r="function"==typeof reportError?reportError:e=>{globalThis.console.error(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24506:(e,t)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return r}})},25068:(e,t)=>{"use strict";function r(e){return e.startsWith("/")?e:`/${e}`}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},25845:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={getSortedRouteObjects:function(){return i},getSortedRoutes:function(){return o}};for(var n in r)Object.defineProperty(t,n,{enumerable:!0,get:r[n]});class a{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e="/"){let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let r=t.map(t=>this.children.get(t)._smoosh(`${e}${t}/`)).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&r.push(...this.children.get("[]")._smoosh(`${e}[${this.slugName}]/`)),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Object.defineProperty(Error(`You cannot define a route with the same specificity as a optional catch-all route ("${t}" and "${t}[[...${this.optionalRestSlugName}]]").`),"__NEXT_ERROR_CODE",{value:"E458",enumerable:!1,configurable:!0});r.unshift(t)}return null!==this.restSlugName&&r.push(...this.children.get("[...]")._smoosh(`${e}[...${this.restSlugName}]/`)),null!==this.optionalRestSlugName&&r.push(...this.children.get("[[...]]")._smoosh(`${e}[[...${this.optionalRestSlugName}]]/`)),r}_insert(e,t,r){if(0===e.length){this.placeholder=!1;return}if(r)throw Object.defineProperty(Error("Catch-all must be the last part of the URL."),"__NEXT_ERROR_CODE",{value:"E392",enumerable:!1,configurable:!0});let n=e[0];if(n.startsWith("[")&&n.endsWith("]")){let a=n.slice(1,-1),i=!1;if(a.startsWith("[")&&a.endsWith("]")&&(a=a.slice(1,-1),i=!0),a.startsWith("…"))throw Object.defineProperty(Error(`Detected a three-dot character ('…') at ('${a}'). Did you mean ('...')?`),"__NEXT_ERROR_CODE",{value:"E147",enumerable:!1,configurable:!0});if(a.startsWith("...")&&(a=a.substring(3),r=!0),a.startsWith("[")||a.endsWith("]"))throw Object.defineProperty(Error(`Segment names may not start or end with extra brackets ('${a}').`),"__NEXT_ERROR_CODE",{value:"E421",enumerable:!1,configurable:!0});if(a.startsWith("."))throw Object.defineProperty(Error(`Segment names may not start with erroneous periods ('${a}').`),"__NEXT_ERROR_CODE",{value:"E288",enumerable:!1,configurable:!0});function o(e,r){if(null!==e&&e!==r)throw Object.defineProperty(Error(`You cannot use different slug names for the same dynamic path ('${e}' !== '${r}').`),"__NEXT_ERROR_CODE",{value:"E337",enumerable:!1,configurable:!0});t.forEach(e=>{if(e===r)throw Object.defineProperty(Error(`You cannot have the same slug name "${r}" repeat within a single dynamic path`),"__NEXT_ERROR_CODE",{value:"E247",enumerable:!1,configurable:!0});if(e.replace(/\W/g,"")===n.replace(/\W/g,""))throw Object.defineProperty(Error(`You cannot have the slug names "${e}" and "${r}" differ only by non-word symbols within a single dynamic path`),"__NEXT_ERROR_CODE",{value:"E499",enumerable:!1,configurable:!0})}),t.push(r)}if(r)if(i){if(null!=this.restSlugName)throw Object.defineProperty(Error(`You cannot use both an required and optional catch-all route at the same level ("[...${this.restSlugName}]" and "${e[0]}" ).`),"__NEXT_ERROR_CODE",{value:"E299",enumerable:!1,configurable:!0});o(this.optionalRestSlugName,a),this.optionalRestSlugName=a,n="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Object.defineProperty(Error(`You cannot use both an optional and required catch-all route at the same level ("[[...${this.optionalRestSlugName}]]" and "${e[0]}").`),"__NEXT_ERROR_CODE",{value:"E300",enumerable:!1,configurable:!0});o(this.restSlugName,a),this.restSlugName=a,n="[...]"}else{if(i)throw Object.defineProperty(Error(`Optional route parameters are not yet supported ("${e[0]}").`),"__NEXT_ERROR_CODE",{value:"E435",enumerable:!1,configurable:!0});o(this.slugName,a),this.slugName=a,n="[]"}}this.children.has(n)||this.children.set(n,new a),this.children.get(n)._insert(e.slice(1),t,r)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function o(e){let t=new a;return e.forEach(e=>t.insert(e)),t.smoosh()}function i(e,t){let r={},n=[];for(let a=0;a<e.length;a++){let o=t(e[a]);r[o]=a,n[a]=o}return o(n).map(t=>e[r[t]])}},25977:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTML_LIMITED_BOT_UA_RE",{enumerable:!0,get:function(){return r}});let r=/[\w-]+-Google|Google-[\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight/i},27585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return o}});let n=r(66251),a=r(23417);function o(e){return(0,a.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},27668:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={getNamedMiddlewareRegex:function(){return _},getNamedRouteRegex:function(){return h},getRouteRegex:function(){return f}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(39308),i=r(80834),u=r(23822),s=r(87404),l=r(93347);function c(e,t,r){let n={},a=1,o=[];for(let c of(0,s.removeTrailingSlash)(e).slice(1).split("/")){let e=i.INTERCEPTION_ROUTE_MARKERS.find(e=>c.startsWith(e)),s=c.match(l.PARAMETER_PATTERN);if(e&&s&&s[2]){let{key:t,optional:r,repeat:i}=(0,l.parseMatchedParameter)(s[2]);n[t]={pos:a++,repeat:i,optional:r},o.push(`/${(0,u.escapeStringRegexp)(e)}([^/]+?)`)}else if(s&&s[2]){let{key:e,repeat:t,optional:i}=(0,l.parseMatchedParameter)(s[2]);n[e]={pos:a++,repeat:t,optional:i},r&&s[1]&&o.push(`/${(0,u.escapeStringRegexp)(s[1])}`);let c=t?i?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)";r&&s[1]&&(c=c.substring(1)),o.push(c)}else o.push(`/${(0,u.escapeStringRegexp)(c)}`);t&&s&&s[3]&&o.push((0,u.escapeStringRegexp)(s[3]))}return{parameterizedRoute:o.join(""),groups:n}}function f(e,{includeSuffix:t=!1,includePrefix:r=!1,excludeOptionalTrailingSlash:n=!1}={}){let{parameterizedRoute:a,groups:o}=c(e,t,r),i=a;return n||(i+="(?:/)?"),{re:RegExp(`^${i}$`),groups:o}}function d({interceptionMarker:e,getSafeRouteKey:t,segment:r,routeKeys:n,keyPrefix:a,backreferenceDuplicateKeys:o}){let i,{key:s,optional:c,repeat:f}=(0,l.parseMatchedParameter)(r),p=s.replace(/\W/g,"");a&&(p=`${a}${p}`);let h=!1;(0===p.length||p.length>30)&&(h=!0),isNaN(parseInt(p.slice(0,1)))||(h=!0),h&&(p=t());let _=p in n;a?n[p]=`${a}${s}`:n[p]=s;let m=e?(0,u.escapeStringRegexp)(e):"";return i=_&&o?`\\k<${p}>`:f?`(?<${p}>.+?)`:`(?<${p}>[^/]+?)`,{key:s,pattern:c?`(?:/${m}${i})?`:`/${m}${i}`,cleanedKey:p,optional:c,repeat:f}}function p(e,t,r,n,a,c={names:{},intercepted:{}}){let f,h=(f=0,()=>{let e="",t=++f;for(;t>0;)e+=String.fromCharCode(97+(t-1)%26),t=Math.floor((t-1)/26);return e}),_={},m=[],g=[];for(let f of(c=structuredClone(c),(0,s.removeTrailingSlash)(e).slice(1).split("/"))){let e,s=i.INTERCEPTION_ROUTE_MARKERS.some(e=>f.startsWith(e)),p=f.match(l.PARAMETER_PATTERN),E=s?p?.[1]:void 0;if(E&&p?.[2]?(e=t?o.NEXT_INTERCEPTION_MARKER_PREFIX:void 0,c.intercepted[p[2]]=E):e=p?.[2]&&c.intercepted[p[2]]?t?o.NEXT_INTERCEPTION_MARKER_PREFIX:void 0:t?o.NEXT_QUERY_PARAM_PREFIX:void 0,E&&p&&p[2]){let{key:t,pattern:r,cleanedKey:n,repeat:o,optional:i}=d({getSafeRouteKey:h,interceptionMarker:E,segment:p[2],routeKeys:_,keyPrefix:e,backreferenceDuplicateKeys:a});m.push(r),g.push(`/${p[1]}:${c.names[t]??n}${o?i?"*":"+":""}`),c.names[t]??=n}else if(p&&p[2]){n&&p[1]&&(m.push(`/${(0,u.escapeStringRegexp)(p[1])}`),g.push(`/${p[1]}`));let{key:t,pattern:r,cleanedKey:o,repeat:i,optional:s}=d({getSafeRouteKey:h,segment:p[2],routeKeys:_,keyPrefix:e,backreferenceDuplicateKeys:a}),l=r;n&&p[1]&&(l=l.substring(1)),m.push(l),g.push(`/:${c.names[t]??o}${i?s?"*":"+":""}`),c.names[t]??=o}else m.push(`/${(0,u.escapeStringRegexp)(f)}`),g.push(`/${f}`);r&&p&&p[3]&&(m.push((0,u.escapeStringRegexp)(p[3])),g.push(p[3]))}return{namedParameterizedRoute:m.join(""),routeKeys:_,pathToRegexpPattern:g.join(""),reference:c}}function h(e,t){let r=p(e,t.prefixRouteKeys,t.includeSuffix??!1,t.includePrefix??!1,t.backreferenceDuplicateKeys??!1,t.reference),n=r.namedParameterizedRoute;return t.excludeOptionalTrailingSlash||(n+="(?:/)?"),{...f(e,t),namedRegex:`^${n}$`,routeKeys:r.routeKeys,pathToRegexpPattern:r.pathToRegexpPattern,reference:r.reference}}function _(e,t){let{parameterizedRoute:r}=c(e,!1,!1),{catchAll:n=!0}=t;if("/"===r)return{namedRegex:`^/${n?".*":""}$`};let{namedParameterizedRoute:a}=p(e,!1,!1,!1,!1,void 0);return{namedRegex:`^${a}${n?"(?:(/.*)?)":""}$`}}},28543:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ImageConfigContext",{enumerable:!0,get:function(){return o}});let n=r(64252)._(r(14232)),a=r(88025),o=n.default.createContext(a.imageConfigDefault)},28832:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={AppRouterContext:function(){return i},GlobalLayoutRouterContext:function(){return s},LayoutRouterContext:function(){return u},MissingSlotContext:function(){return c},TemplateContext:function(){return l}};for(var a in n)Object.defineProperty(t,a,{enumerable:!0,get:n[a]});let o=r(64252)._(r(14232)),i=o.default.createContext(null),u=o.default.createContext(null),s=o.default.createContext(null),l=o.default.createContext(null),c=o.default.createContext(new Set)},29509:e=>{(()=>{"use strict";"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="//");var t={};(()=>{function e(e,t){void 0===t&&(t={});for(var r=function(e){for(var t=[],r=0;r<e.length;){var n=e[r];if("*"===n||"+"===n||"?"===n){t.push({type:"MODIFIER",index:r,value:e[r++]});continue}if("\\"===n){t.push({type:"ESCAPED_CHAR",index:r++,value:e[r++]});continue}if("{"===n){t.push({type:"OPEN",index:r,value:e[r++]});continue}if("}"===n){t.push({type:"CLOSE",index:r,value:e[r++]});continue}if(":"===n){for(var a="",o=r+1;o<e.length;){var i=e.charCodeAt(o);if(i>=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122||95===i){a+=e[o++];continue}break}if(!a)throw TypeError("Missing parameter name at ".concat(r));t.push({type:"NAME",index:r,value:a}),r=o;continue}if("("===n){var u=1,s="",o=r+1;if("?"===e[o])throw TypeError('Pattern cannot start with "?" at '.concat(o));for(;o<e.length;){if("\\"===e[o]){s+=e[o++]+e[o++];continue}if(")"===e[o]){if(0==--u){o++;break}}else if("("===e[o]&&(u++,"?"!==e[o+1]))throw TypeError("Capturing groups are not allowed at ".concat(o));s+=e[o++]}if(u)throw TypeError("Unbalanced pattern at ".concat(r));if(!s)throw TypeError("Missing pattern at ".concat(r));t.push({type:"PATTERN",index:r,value:s}),r=o;continue}t.push({type:"CHAR",index:r,value:e[r++]})}return t.push({type:"END",index:r,value:""}),t}(e),n=t.prefixes,o=void 0===n?"./":n,i=t.delimiter,u=void 0===i?"/#?":i,s=[],l=0,c=0,f="",d=function(e){if(c<r.length&&r[c].type===e)return r[c++].value},p=function(e){var t=d(e);if(void 0!==t)return t;var n=r[c],a=n.type,o=n.index;throw TypeError("Unexpected ".concat(a," at ").concat(o,", expected ").concat(e))},h=function(){for(var e,t="";e=d("CHAR")||d("ESCAPED_CHAR");)t+=e;return t},_=function(e){for(var t=0;t<u.length;t++){var r=u[t];if(e.indexOf(r)>-1)return!0}return!1},m=function(e){var t=s[s.length-1],r=e||(t&&"string"==typeof t?t:"");if(t&&!r)throw TypeError('Must have text between two parameters, missing text after "'.concat(t.name,'"'));return!r||_(r)?"[^".concat(a(u),"]+?"):"(?:(?!".concat(a(r),")[^").concat(a(u),"])+?")};c<r.length;){var g=d("CHAR"),E=d("NAME"),y=d("PATTERN");if(E||y){var b=g||"";-1===o.indexOf(b)&&(f+=b,b=""),f&&(s.push(f),f=""),s.push({name:E||l++,prefix:b,suffix:"",pattern:y||m(b),modifier:d("MODIFIER")||""});continue}var P=g||d("ESCAPED_CHAR");if(P){f+=P;continue}if(f&&(s.push(f),f=""),d("OPEN")){var b=h(),R=d("NAME")||"",v=d("PATTERN")||"",O=h();p("CLOSE"),s.push({name:R||(v?l++:""),pattern:R&&!v?m(b):v,prefix:b,suffix:O,modifier:d("MODIFIER")||""});continue}p("END")}return s}function r(e,t){void 0===t&&(t={});var r=o(t),n=t.encode,a=void 0===n?function(e){return e}:n,i=t.validate,u=void 0===i||i,s=e.map(function(e){if("object"==typeof e)return new RegExp("^(?:".concat(e.pattern,")$"),r)});return function(t){for(var r="",n=0;n<e.length;n++){var o=e[n];if("string"==typeof o){r+=o;continue}var i=t?t[o.name]:void 0,l="?"===o.modifier||"*"===o.modifier,c="*"===o.modifier||"+"===o.modifier;if(Array.isArray(i)){if(!c)throw TypeError('Expected "'.concat(o.name,'" to not repeat, but got an array'));if(0===i.length){if(l)continue;throw TypeError('Expected "'.concat(o.name,'" to not be empty'))}for(var f=0;f<i.length;f++){var d=a(i[f],o);if(u&&!s[n].test(d))throw TypeError('Expected all "'.concat(o.name,'" to match "').concat(o.pattern,'", but got "').concat(d,'"'));r+=o.prefix+d+o.suffix}continue}if("string"==typeof i||"number"==typeof i){var d=a(String(i),o);if(u&&!s[n].test(d))throw TypeError('Expected "'.concat(o.name,'" to match "').concat(o.pattern,'", but got "').concat(d,'"'));r+=o.prefix+d+o.suffix;continue}if(!l){var p=c?"an array":"a string";throw TypeError('Expected "'.concat(o.name,'" to be ').concat(p))}}return r}}function n(e,t,r){void 0===r&&(r={});var n=r.decode,a=void 0===n?function(e){return e}:n;return function(r){var n=e.exec(r);if(!n)return!1;for(var o=n[0],i=n.index,u=Object.create(null),s=1;s<n.length;s++)!function(e){if(void 0!==n[e]){var r=t[e-1];"*"===r.modifier||"+"===r.modifier?u[r.name]=n[e].split(r.prefix+r.suffix).map(function(e){return a(e,r)}):u[r.name]=a(n[e],r)}}(s);return{path:o,index:i,params:u}}}function a(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function o(e){return e&&e.sensitive?"":"i"}function i(e,t,r){void 0===r&&(r={});for(var n=r.strict,i=void 0!==n&&n,u=r.start,s=r.end,l=r.encode,c=void 0===l?function(e){return e}:l,f=r.delimiter,d=r.endsWith,p="[".concat(a(void 0===d?"":d),"]|$"),h="[".concat(a(void 0===f?"/#?":f),"]"),_=void 0===u||u?"^":"",m=0;m<e.length;m++){var g=e[m];if("string"==typeof g)_+=a(c(g));else{var E=a(c(g.prefix)),y=a(c(g.suffix));if(g.pattern)if(t&&t.push(g),E||y)if("+"===g.modifier||"*"===g.modifier){var b="*"===g.modifier?"?":"";_+="(?:".concat(E,"((?:").concat(g.pattern,")(?:").concat(y).concat(E,"(?:").concat(g.pattern,"))*)").concat(y,")").concat(b)}else _+="(?:".concat(E,"(").concat(g.pattern,")").concat(y,")").concat(g.modifier);else{if("+"===g.modifier||"*"===g.modifier)throw TypeError('Can not repeat "'.concat(g.name,'" without a prefix and suffix'));_+="(".concat(g.pattern,")").concat(g.modifier)}else _+="(?:".concat(E).concat(y,")").concat(g.modifier)}}if(void 0===s||s)i||(_+="".concat(h,"?")),_+=r.endsWith?"(?=".concat(p,")"):"$";else{var P=e[e.length-1],R="string"==typeof P?h.indexOf(P[P.length-1])>-1:void 0===P;i||(_+="(?:".concat(h,"(?=").concat(p,"))?")),R||(_+="(?=".concat(h,"|").concat(p,")"))}return new RegExp(_,o(r))}function u(t,r,n){if(t instanceof RegExp){var a;if(!r)return t;for(var s=/\((?:\?<(.*?)>)?(?!\?)/g,l=0,c=s.exec(t.source);c;)r.push({name:c[1]||l++,prefix:"",suffix:"",modifier:"",pattern:""}),c=s.exec(t.source);return t}return Array.isArray(t)?(a=t.map(function(e){return u(e,r,n).source}),new RegExp("(?:".concat(a.join("|"),")"),o(n))):i(e(t,n),r,n)}Object.defineProperty(t,"__esModule",{value:!0}),t.pathToRegexp=t.tokensToRegexp=t.regexpToFunction=t.match=t.tokensToFunction=t.compile=t.parse=void 0,t.parse=e,t.compile=function(t,n){return r(e(t,n),n)},t.tokensToFunction=r,t.match=function(e,t){var r=[];return n(u(e,r,t),r,t)},t.regexpToFunction=n,t.tokensToRegexp=i,t.pathToRegexp=u})(),e.exports=t})()},30050:(e,t)=>{"use strict";function r(e){switch(e){case"catchall-intercepted-(..)(..)":case"dynamic-intercepted-(..)(..)":return"(..)(..)";case"catchall-intercepted-(.)":case"dynamic-intercepted-(.)":return"(.)";case"catchall-intercepted-(..)":case"dynamic-intercepted-(..)":return"(..)";case"catchall-intercepted-(...)":case"dynamic-intercepted-(...)":return"(...)";default:return null}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"interceptionPrefixFromParamType",{enumerable:!0,get:function(){return r}})},30566:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0});var a={createRouteLoader:function(){return E},getClientBuildManifest:function(){return m},isAssetError:function(){return h},markAssetError:function(){return p}};for(var o in a)Object.defineProperty(t,o,{enumerable:!0,get:a[o]});r(64252),r(52209);let i=r(31128),u=r(41241),s=r(16958),l=r(24506),c=r(57206);function f(e,t,r){let n,a=t.get(e);if(a)return"future"in a?a.future:Promise.resolve(a);let o=new Promise(e=>{n=e});return t.set(e,{resolve:n,future:o}),r?r().then(e=>(n(e),e)).catch(r=>{throw t.delete(e),r}):o}let d=Symbol("ASSET_LOAD_ERROR");function p(e){return Object.defineProperty(e,d,{})}function h(e){return e&&d in e}let _=function(e){try{return e=document.createElement("link"),!!window.MSInputMethodContext&&!!document.documentMode||e.relList.supports("prefetch")}catch{return!1}}();function m(){if(self.__BUILD_MANIFEST)return Promise.resolve(self.__BUILD_MANIFEST);let e=new Promise(e=>{let t=self.__BUILD_MANIFEST_CB;self.__BUILD_MANIFEST_CB=()=>{e(self.__BUILD_MANIFEST),t&&t()}});return(0,c.resolvePromiseWithTimeout)(e,p(Object.defineProperty(Error("Failed to load client build manifest"),"__NEXT_ERROR_CODE",{value:"E273",enumerable:!1,configurable:!0})),n)}function g(e,t){return m().then(r=>{if(!(t in r))throw p(Object.defineProperty(Error(`Failed to lookup route: ${t}`),"__NEXT_ERROR_CODE",{value:"E446",enumerable:!1,configurable:!0}));let n=r[t].map(t=>e+"/_next/"+(0,l.encodeURIPath)(t));return{scripts:n.filter(e=>e.endsWith(".js")).map(e=>(0,i.__unsafeCreateTrustedScriptURL)(e)+(0,s.getAssetTokenQuery)()),css:n.filter(e=>e.endsWith(".css")).map(e=>e+(0,s.getAssetTokenQuery)())}})}function E(e){let t=new Map,r=new Map,a=new Map,o=new Map;function i(e){{var t;let n=r.get(e.toString());return n?n:document.querySelector(`script[src^="${e}"]`)?Promise.resolve():(r.set(e.toString(),n=new Promise((r,n)=>{(t=document.createElement("script")).onload=r,t.onerror=()=>n(p(Object.defineProperty(Error(`Failed to load script: ${e}`),"__NEXT_ERROR_CODE",{value:"E74",enumerable:!1,configurable:!0}))),t.crossOrigin=void 0,t.src=e,document.body.appendChild(t)})),n)}}function s(e){let t=a.get(e);return t||a.set(e,t=fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw Object.defineProperty(Error(`Failed to load stylesheet: ${e}`),"__NEXT_ERROR_CODE",{value:"E189",enumerable:!1,configurable:!0});return t.text().then(t=>({href:e,content:t}))}).catch(e=>{throw p(e)})),t}return{whenEntrypoint:e=>f(e,t),onEntrypoint(e,r){(r?Promise.resolve().then(()=>r()).then(e=>({component:e&&e.default||e,exports:e}),e=>({error:e})):Promise.resolve(void 0)).then(r=>{let n=t.get(e);n&&"resolve"in n?r&&(t.set(e,r),n.resolve(r)):(r?t.set(e,r):t.delete(e),o.delete(e))})},loadRoute(r,a){return f(r,o,()=>{let o;return(0,c.resolvePromiseWithTimeout)(g(e,r).then(({scripts:e,css:n})=>Promise.all([t.has(r)?[]:Promise.all(e.map(i)).then(e=>e),Promise.all(n.map(s))])).then(e=>this.whenEntrypoint(r).then(t=>({entrypoint:t,styles:e[1]}))),p(Object.defineProperty(Error(`Route did not complete loading: ${r}`),"__NEXT_ERROR_CODE",{value:"E12",enumerable:!1,configurable:!0})),n).then(({entrypoint:e,styles:t})=>{let r=Object.assign({styles:t},e);return"error"in e?e:r}).catch(e=>{if(a)throw e;return{error:e}}).finally(()=>o?.())})},prefetch(t){let r;return(r=navigator.connection)&&(r.saveData||/2g/.test(r.effectiveType))?Promise.resolve():g(e,t).then(e=>Promise.all(_?e.scripts.map(e=>{var t,r,n;return t=e.toString(),r="script",new Promise((e,a)=>{let o=`
3
3
  link[rel="prefetch"][href^="${t}"],
4
4
  link[rel="preload"][href^="${t}"],
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,154,552,633,976,1004,1005,1097,1236,1337,1541,1697,1728,1907,2053,2086,2138,2202,2206,2504,2835,2837,3004,3432,3507,3851,3943,3955,4016,4037,4288,4896,5067,5221,5907,6444,6450,6709,6819,6849,6919,6988,7067,7074,7347,7453,7472,7483,7769,7812,7851,8167,8429,8589,8658,8704,8743,8933,9043,9156,9174,9183,9223,9742,9747,9755,9761,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,154,552,633,976,1004,1005,1097,1236,1337,1541,1697,1728,1907,2053,2086,2138,2202,2206,2504,2835,2837,3004,3432,3507,3851,3943,3955,4016,4037,4288,4896,5067,5221,5907,6444,6450,6709,6819,6849,6919,6988,7067,7074,7347,7453,7472,7483,7769,7812,7851,8167,8429,8589,8658,8704,8743,8933,9043,9156,9174,9183,9223,9742,9747,9755,9761,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,154,552,633,976,1004,1005,1097,1236,1337,1541,1697,1728,1907,2053,2086,2138,2202,2206,2504,2835,2837,3004,3432,3507,3851,3943,3955,4016,4037,4288,4896,5067,5221,5907,6444,6450,6709,6819,6849,6919,6988,7067,7074,7347,7453,7472,7483,7769,7812,7851,8167,8429,8589,8658,8704,8743,8933,9043,9156,9174,9183,9223,9742,9747,9755,9761,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,154,552,633,976,1004,1005,1097,1236,1337,1541,1697,1728,1907,2053,2086,2138,2202,2206,2504,2835,2837,3004,3432,3507,3851,3943,3955,4016,4037,4288,4896,5067,5221,5907,6444,6450,6709,6819,6849,6919,6988,7067,7074,7347,7453,7472,7483,7769,7812,7851,8167,8429,8589,8658,8704,8743,8933,9043,9156,9174,9183,9223,9742,9747,9755,9761,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +1 @@
1
- (()=>{"use strict";var e,t,a,c,d,r,f,b,o,n={},i={};function l(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={exports:{}},c=!0;try{n[e].call(a.exports,a,a.exports,l),c=!1}finally{c&&delete i[e]}return a.exports}l.m=n,e=[],l.O=(t,a,c,d)=>{if(a){d=d||0;for(var r=e.length;r>0&&e[r-1][2]>d;r--)e[r]=e[r-1];e[r]=[a,c,d];return}for(var f=1/0,r=0;r<e.length;r++){for(var[a,c,d]=e[r],b=!0,o=0;o<a.length;o++)(!1&d||f>=d)&&Object.keys(l.O).every(e=>l.O[e](a[o]))?a.splice(o--,1):(b=!1,d<f&&(f=d));if(b){e.splice(r--,1);var n=c();void 0!==n&&(t=n)}}return t},l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(e,c){if(1&c&&(e=this(e)),8&c||"object"==typeof e&&e&&(4&c&&e.__esModule||16&c&&"function"==typeof e.then))return e;var d=Object.create(null);l.r(d);var r={};t=t||[null,a({}),a([]),a(a)];for(var f=2&c&&e;"object"==typeof f&&!~t.indexOf(f);f=a(f))Object.getOwnPropertyNames(f).forEach(t=>r[t]=()=>e[t]);return r.default=()=>e,l.d(d,r),d},l.d=(e,t)=>{for(var a in t)l.o(t,a)&&!l.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((t,a)=>(l.f[a](e,t),t),[])),l.u=e=>4906===e?"static/chunks/4906-3ebc61b9b2c31745.js":587===e?"static/chunks/587-c973123b3c9a5b80.js":"static/chunks/"+(({988:"993e5495",1048:"db9d41be",7330:"d3ac728e",8133:"1ba63609",8747:"90542734",8924:"da12927c",9425:"bf2ff291"})[e]||e)+"."+({103:"23142a67b02246a8",268:"ec500965c1761e26",370:"8e8f3cf8eb0e29dd",398:"ffa02af9062a3950",484:"761e1ff01f663fb2",869:"7152372b662e31af",918:"6a9bbe564e4a2d0f",934:"9006461bd0548660",973:"9efc01efd9d768a5",988:"598a97aa1337298f",1032:"d9a9179233599785",1048:"27ee8fcc7bf00d70",1063:"775c442bdbeef08b",1133:"bea8503e209b9e2c",1327:"09252bb80616cc3a",1441:"83552e2540b12edf",1708:"c3a1896e4cc9f8d9",1781:"9072b4c9586df549",2081:"47b6e9391094055f",2181:"ba21239d3ac39f81",2201:"46326eb058826eb2",2258:"4defa30121ef44a5",2325:"23caf22075e51aa5",2356:"523277bb8c6bf72a",2418:"b5d9e177e10a686e",2480:"cf27ca02e5b19761",2539:"c5a4f2fd8e421c70",2619:"9431a3f48da8eef4",2695:"b732ef1965253b3f",2703:"495a65ed14b2f094",2821:"934bcf60fbdc28c6",3251:"408c817adb161919",3274:"f8f023fd73e607bc",3308:"8e27b5c43a478f0d",3336:"a76f9485fe7cb762",3688:"77dd9e68a61af45e",3716:"72bf4c9d7325debd",3944:"6215b78f025077b3",3995:"eca0f5bef1fc3ae5",4004:"74b9bcf5478b1663",4202:"8440832386f023c7",4238:"6f102dcbcf2ae339",4405:"7a19458960a1058e",4424:"fd0c93a807a333e1",4473:"c9bdafcdd251e4db",4559:"2e7ed39ea2757280",4854:"b64a1daa15899219",4866:"d1060b4faf2ae1e2",4970:"8a63b4953b0e4946",4996:"c5525823b73ac947",5020:"9ac8d0dc8390bb6e",5137:"f163e94c74a94d01",5242:"7b643c6b3394cac1",5361:"afc00ab2626bacbf",5521:"cfdf2cfc6db31407",5526:"ff46471041fdcb79",5658:"0fe2642c815aea9a",5681:"dd0e66b0de16e54b",5806:"06789869309659d0",6121:"eb9023b1cbc78ee2",6161:"4836cd7d031026bf",6195:"8710aa41b2319dff",6202:"f4317cf0a48876f9",6268:"c8711c205efe98a6",6294:"24f510c0c3e3714c",6604:"4ad489ec0e9e8985",6654:"41440ef667144967",6794:"57bf1aff78682f3a",7256:"e07cf52d87d40252",7268:"2f59c671f26160f3",7330:"7964f816a1ca64e5",7331:"2add3c4e125a2dba",7543:"89f7b805ed0f2901",8133:"b2ae90f43319a29e",8200:"a36b9f8c983c6b9e",8717:"4e20eedf9544e286",8747:"ae439f2382f58c51",8863:"fa0320ea586efb3b",8885:"d9308c756376780b",8901:"e117d206a917bda0",8924:"476aa688a637649c",9365:"a3e0e5ac101ccd02",9425:"244c8a7c1c14966a",9448:"b6c5eb8f1356d5fd",9522:"c7c6e9c330f9ba6b",9614:"3221013d7f0af27f",9668:"6c511d3f22a0d3ad",9698:"4d09a99b9d99f3e5",9705:"40a82b97f214e28b",9754:"d67dec946fc871d4",9764:"2669775c6e107a01",9793:"4567af813117ad25",9974:"9a0f79beca65e8c4",9981:"ba92f0b30bbf53e4"})[e]+".js",l.miniCssF=e=>"static/css/2f46e0db0d4a3aed.css",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c={},l.l=(e,t,a,d)=>{if(c[e])return void c[e].push(t);if(void 0!==a)for(var r,f,b=document.getElementsByTagName("script"),o=0;o<b.length;o++){var n=b[o];if(n.getAttribute("src")==e||n.getAttribute("data-webpack")=="_N_E:"+a){r=n;break}}r||(f=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,l.nc&&r.setAttribute("nonce",l.nc),r.setAttribute("data-webpack","_N_E:"+a),r.src=l.tu(e)),c[e]=[t];var i=(t,a)=>{r.onerror=r.onload=null,clearTimeout(s);var d=c[e];if(delete c[e],r.parentNode&&r.parentNode.removeChild(r),d&&d.forEach(e=>e(a)),t)return t(a)},s=setTimeout(i.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=i.bind(null,r.onerror),r.onload=i.bind(null,r.onload),f&&document.head.appendChild(r)},l.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.tt=()=>(void 0===d&&(d={createScriptURL:e=>e},"u">typeof trustedTypes&&trustedTypes.createPolicy&&(d=trustedTypes.createPolicy("nextjs#bundler",d))),d),l.tu=e=>l.tt().createScriptURL(e),l.p="/_next/",r={8068:0},l.f.miniCss=(e,t)=>{if(r[e])t.push(r[e]);else 0!==r[e]&&({5846:1})[e]&&t.push(r[e]=new Promise((t,a)=>{var c=l.miniCssF(e),d=l.p+c;if(((e,t)=>{for(var a=document.getElementsByTagName("link"),c=0;c<a.length;c++){var d=a[c],r=d.getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(r===e||r===t))return d}for(var f=document.getElementsByTagName("style"),c=0;c<f.length;c++){var d=f[c],r=d.getAttribute("data-href");if(r===e||r===t)return d}})(c,d))return t();((e,t,a,c)=>{var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onerror=d.onload=r=>{if(d.onerror=d.onload=null,"load"===r.type)a();else{var f=r&&("load"===r.type?"missing":r.type),b=r&&r.target&&r.target.href||t,o=Error("Loading CSS chunk "+e+" failed.\n("+b+")");o.code="CSS_CHUNK_LOAD_FAILED",o.type=f,o.request=b,d.parentNode.removeChild(d),c(o)}},d.href=t;if("function"==typeof _N_E_STYLE_LOAD){var r=d.href,f=d.onload,b=d.onerror;_N_E_STYLE_LOAD(0===r.indexOf(window.location.origin)?new URL(r).pathname:r).then(function(){f&&f.call(d,{type:"load"})},function(){b&&b.call(d,{})})}else document.head.appendChild(d)})(e,d,t,a)}).then(()=>{r[e]=0},t=>{throw delete r[e],t}))},f={8068:0,6577:0},l.f.j=(e,t)=>{var a=l.o(f,e)?f[e]:void 0;if(0!==a)if(a)t.push(a[2]);else if(/^(5846|6577|8068)$/.test(e))f[e]=0;else{var c=new Promise((t,c)=>a=f[e]=[t,c]);t.push(a[2]=c);var d=l.p+l.u(e),r=Error();l.l(d,t=>{if(l.o(f,e)&&(0!==(a=f[e])&&(f[e]=void 0),a)){var c=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src;r.message="Loading chunk "+e+" failed.\n("+c+": "+d+")",r.name="ChunkLoadError",r.type=c,r.request=d,a[1](r)}},"chunk-"+e,e)}},l.O.j=e=>0===f[e],b=(e,t)=>{var a,c,[d,r,b]=t,o=0;if(d.some(e=>0!==f[e])){for(a in r)l.o(r,a)&&(l.m[a]=r[a]);if(b)var n=b(l)}for(e&&e(t);o<d.length;o++)c=d[o],l.o(f,c)&&f[c]&&f[c][0](),f[c]=0;return l.O(n)},(o=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(b.bind(null,0)),o.push=b.bind(null,o.push.bind(o)),l.nc=void 0})();
1
+ (()=>{"use strict";var e,t,a,c,d,r,f,b,o,n={},i={};function l(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={exports:{}},c=!0;try{n[e].call(a.exports,a,a.exports,l),c=!1}finally{c&&delete i[e]}return a.exports}l.m=n,e=[],l.O=(t,a,c,d)=>{if(a){d=d||0;for(var r=e.length;r>0&&e[r-1][2]>d;r--)e[r]=e[r-1];e[r]=[a,c,d];return}for(var f=1/0,r=0;r<e.length;r++){for(var[a,c,d]=e[r],b=!0,o=0;o<a.length;o++)(!1&d||f>=d)&&Object.keys(l.O).every(e=>l.O[e](a[o]))?a.splice(o--,1):(b=!1,d<f&&(f=d));if(b){e.splice(r--,1);var n=c();void 0!==n&&(t=n)}}return t},l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(e,c){if(1&c&&(e=this(e)),8&c||"object"==typeof e&&e&&(4&c&&e.__esModule||16&c&&"function"==typeof e.then))return e;var d=Object.create(null);l.r(d);var r={};t=t||[null,a({}),a([]),a(a)];for(var f=2&c&&e;"object"==typeof f&&!~t.indexOf(f);f=a(f))Object.getOwnPropertyNames(f).forEach(t=>r[t]=()=>e[t]);return r.default=()=>e,l.d(d,r),d},l.d=(e,t)=>{for(var a in t)l.o(t,a)&&!l.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((t,a)=>(l.f[a](e,t),t),[])),l.u=e=>4906===e?"static/chunks/4906-3ebc61b9b2c31745.js":587===e?"static/chunks/587-c973123b3c9a5b80.js":"static/chunks/"+(({988:"993e5495",1048:"db9d41be",7330:"d3ac728e",8133:"1ba63609",8747:"90542734",8924:"da12927c",9425:"bf2ff291"})[e]||e)+"."+({103:"23142a67b02246a8",268:"ec500965c1761e26",370:"8e8f3cf8eb0e29dd",398:"ffa02af9062a3950",484:"761e1ff01f663fb2",869:"7152372b662e31af",918:"6a9bbe564e4a2d0f",934:"9006461bd0548660",973:"9efc01efd9d768a5",988:"598a97aa1337298f",1032:"d9a9179233599785",1048:"27ee8fcc7bf00d70",1063:"775c442bdbeef08b",1133:"bea8503e209b9e2c",1327:"09252bb80616cc3a",1441:"83552e2540b12edf",1708:"c3a1896e4cc9f8d9",1781:"9072b4c9586df549",2081:"47b6e9391094055f",2181:"ba21239d3ac39f81",2201:"46326eb058826eb2",2258:"4defa30121ef44a5",2325:"23caf22075e51aa5",2356:"523277bb8c6bf72a",2418:"b5d9e177e10a686e",2480:"cf27ca02e5b19761",2539:"c5a4f2fd8e421c70",2619:"9431a3f48da8eef4",2695:"b732ef1965253b3f",2703:"495a65ed14b2f094",2821:"934bcf60fbdc28c6",3251:"408c817adb161919",3274:"f8f023fd73e607bc",3308:"8e27b5c43a478f0d",3336:"a76f9485fe7cb762",3688:"77dd9e68a61af45e",3716:"72bf4c9d7325debd",3944:"2debfbacfd5e255f",3995:"eca0f5bef1fc3ae5",4004:"74b9bcf5478b1663",4202:"8440832386f023c7",4238:"6f102dcbcf2ae339",4405:"7a19458960a1058e",4424:"fd0c93a807a333e1",4473:"c9bdafcdd251e4db",4559:"2e7ed39ea2757280",4854:"b64a1daa15899219",4866:"d1060b4faf2ae1e2",4970:"8a63b4953b0e4946",4996:"c5525823b73ac947",5020:"9ac8d0dc8390bb6e",5137:"f163e94c74a94d01",5242:"7b643c6b3394cac1",5361:"afc00ab2626bacbf",5521:"cfdf2cfc6db31407",5526:"ff46471041fdcb79",5658:"0fe2642c815aea9a",5681:"dd0e66b0de16e54b",5806:"06789869309659d0",6121:"eb9023b1cbc78ee2",6161:"4836cd7d031026bf",6195:"8710aa41b2319dff",6202:"f4317cf0a48876f9",6268:"be519bbc5c4347fe",6294:"24f510c0c3e3714c",6604:"4ad489ec0e9e8985",6654:"41440ef667144967",6794:"57bf1aff78682f3a",7256:"e07cf52d87d40252",7268:"2f59c671f26160f3",7330:"7964f816a1ca64e5",7331:"2add3c4e125a2dba",7543:"89f7b805ed0f2901",8133:"b2ae90f43319a29e",8200:"a36b9f8c983c6b9e",8717:"4e20eedf9544e286",8747:"ae439f2382f58c51",8863:"fa0320ea586efb3b",8885:"d9308c756376780b",8901:"e117d206a917bda0",8924:"476aa688a637649c",9365:"a3e0e5ac101ccd02",9425:"244c8a7c1c14966a",9448:"b6c5eb8f1356d5fd",9522:"c7c6e9c330f9ba6b",9614:"3221013d7f0af27f",9668:"6c511d3f22a0d3ad",9698:"4d09a99b9d99f3e5",9705:"40a82b97f214e28b",9754:"d67dec946fc871d4",9764:"2669775c6e107a01",9793:"4567af813117ad25",9974:"9a0f79beca65e8c4",9981:"ba92f0b30bbf53e4"})[e]+".js",l.miniCssF=e=>"static/css/2f46e0db0d4a3aed.css",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c={},l.l=(e,t,a,d)=>{if(c[e])return void c[e].push(t);if(void 0!==a)for(var r,f,b=document.getElementsByTagName("script"),o=0;o<b.length;o++){var n=b[o];if(n.getAttribute("src")==e||n.getAttribute("data-webpack")=="_N_E:"+a){r=n;break}}r||(f=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,l.nc&&r.setAttribute("nonce",l.nc),r.setAttribute("data-webpack","_N_E:"+a),r.src=l.tu(e)),c[e]=[t];var i=(t,a)=>{r.onerror=r.onload=null,clearTimeout(s);var d=c[e];if(delete c[e],r.parentNode&&r.parentNode.removeChild(r),d&&d.forEach(e=>e(a)),t)return t(a)},s=setTimeout(i.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=i.bind(null,r.onerror),r.onload=i.bind(null,r.onload),f&&document.head.appendChild(r)},l.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.tt=()=>(void 0===d&&(d={createScriptURL:e=>e},"u">typeof trustedTypes&&trustedTypes.createPolicy&&(d=trustedTypes.createPolicy("nextjs#bundler",d))),d),l.tu=e=>l.tt().createScriptURL(e),l.p="/_next/",r={8068:0},l.f.miniCss=(e,t)=>{if(r[e])t.push(r[e]);else 0!==r[e]&&({5846:1})[e]&&t.push(r[e]=new Promise((t,a)=>{var c=l.miniCssF(e),d=l.p+c;if(((e,t)=>{for(var a=document.getElementsByTagName("link"),c=0;c<a.length;c++){var d=a[c],r=d.getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(r===e||r===t))return d}for(var f=document.getElementsByTagName("style"),c=0;c<f.length;c++){var d=f[c],r=d.getAttribute("data-href");if(r===e||r===t)return d}})(c,d))return t();((e,t,a,c)=>{var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onerror=d.onload=r=>{if(d.onerror=d.onload=null,"load"===r.type)a();else{var f=r&&("load"===r.type?"missing":r.type),b=r&&r.target&&r.target.href||t,o=Error("Loading CSS chunk "+e+" failed.\n("+b+")");o.code="CSS_CHUNK_LOAD_FAILED",o.type=f,o.request=b,d.parentNode.removeChild(d),c(o)}},d.href=t;if("function"==typeof _N_E_STYLE_LOAD){var r=d.href,f=d.onload,b=d.onerror;_N_E_STYLE_LOAD(0===r.indexOf(window.location.origin)?new URL(r).pathname:r).then(function(){f&&f.call(d,{type:"load"})},function(){b&&b.call(d,{})})}else document.head.appendChild(d)})(e,d,t,a)}).then(()=>{r[e]=0},t=>{throw delete r[e],t}))},f={8068:0,6577:0},l.f.j=(e,t)=>{var a=l.o(f,e)?f[e]:void 0;if(0!==a)if(a)t.push(a[2]);else if(/^(5846|6577|8068)$/.test(e))f[e]=0;else{var c=new Promise((t,c)=>a=f[e]=[t,c]);t.push(a[2]=c);var d=l.p+l.u(e),r=Error();l.l(d,t=>{if(l.o(f,e)&&(0!==(a=f[e])&&(f[e]=void 0),a)){var c=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src;r.message="Loading chunk "+e+" failed.\n("+c+": "+d+")",r.name="ChunkLoadError",r.type=c,r.request=d,a[1](r)}},"chunk-"+e,e)}},l.O.j=e=>0===f[e],b=(e,t)=>{var a,c,[d,r,b]=t,o=0;if(d.some(e=>0!==f[e])){for(a in r)l.o(r,a)&&(l.m[a]=r[a]);if(b)var n=b(l)}for(e&&e(t);o<d.length;o++)c=d[o],l.o(f,c)&&f[c]&&f[c][0](),f[c]=0;return l.O(n)},(o=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(b.bind(null,0)),o.push=b.bind(null,o.push.bind(o)),l.nc=void 0})();
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:53,errorRate:1e-4,numBits:1017,numHashes:14,bitArray:[0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,1,0,1,1,0,1,0,1,0,0,1,1,0,1,1,0,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,1,0,0,1,1,1,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,1,0,1,0,1,0,1,1,1,1,1,0,0,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0,1,1,1,1,0,1,0,0,0,1,0,1,1,0,0,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,0,0,0,1,1,0,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,1,0,1,0,0,1,0,0,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,0,1,1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,1,0,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,1,1,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,1,1,0,0,0,0,1,0,1,1,0,1,0,1,1,1,1,0,1,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1,1,0,1,1,1,0,1,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0,1,1,0,1,0,0,1,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,1,1,0,0,1,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,0,1,0,1,0,1,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0,1,1,0,0,1,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,0,1,0,1,0,0,1,1,1,0,1,0,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,0,1,0,1,1,0,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,0,1,1,0,0,0,0,1,0,1,0,1,0,1,1,0,0,1,1,0,1,1,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1,1,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,0,1,1,0,0,0,1,0,0,0]},__routerFilterDynamic:{numItems:8,errorRate:1e-4,numBits:154,numHashes:14,bitArray:[1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1,0,1,1,0,1,0,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,1,0,1,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1,0,0,0,1,0]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
package/README.ja.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](./README.md) | [한국어](./README.ko.md) | [日本語](./README.ja.md) | [简体中文](./README.zh-CN.md)
4
4
 
5
- > **Android APK (Android 12+)** — Kotlin 製のコンパニオンアプリでリモートの ompgui サーバーに接続し、最新セッションの読み取り専用オフラインスナップショットを利用できます。[ompgui Remote v0.7.11 をダウンロード](https://github.com/dbc-hbin/ompgui/releases/download/v0.7.11/ompgui-remote-v0.7.11.apk) · [リリースノート](https://github.com/dbc-hbin/ompgui/releases/tag/v0.7.11)
5
+ > **Android APK (Android 12+)** — Kotlin 製のコンパニオンアプリでリモートの ompgui サーバーに接続し、最新セッションの読み取り専用オフラインスナップショットを利用できます。[ompgui Remote v0.7.12 をダウンロード](https://github.com/dbc-hbin/ompgui/releases/download/v0.7.12/ompgui-remote-v0.7.12.apk) · [リリースノート](https://github.com/dbc-hbin/ompgui/releases/tag/v0.7.12)
6
6
 
7
7
  > `android/` の実験的なネイティブ Compose クライアントは、認証済みの `/relay` WebSocket を使用し、セッション・履歴の操作、リンク付きメッセージ、オフラインの Mermaid 図とコードの構文強調、画像/PDF/音声/HTML/Markdown/DOCX のインラインプレビューを提供します。ファイルの自動更新は表示中のみ動作し、未保存の編集を保持します。許可された隠しファイルの閲覧とアーカイブ検索にも対応します。モデル・設定には公開 models.dev カタログ、高度な OMP 設定、構成とは別に表示されるセッションごとの実際の MCP 実行状態が含まれます。添付ファイルは端末上で巨大な単一 JSON にまとめず、ストリーミングでステージングします。画像は各 10 MiB で最大 10 件、テキスト添付は独立した枠で各 256 KiB、最大 10 件です。OMP 自体の画像正規化とプロバイダーごとの画像数制限は引き続き適用されます。
8
8
  >
@@ -53,7 +53,7 @@ ompgui --hostname 0.0.0.0 # 信頼できるネットワークに公開
53
53
  ompgui -p 8080 -H 0.0.0.0 # オプションを組み合わせる
54
54
  ompgui --no-open # ブラウザを自動的に開かない
55
55
 
56
- ompgui --password "a-long-random-password" # パスワードのみのサインインを有効化(Windows でも同様)
56
+ ompgui --password "a-long-random-password" # ローカルログインと端末登録時の追加認証
57
57
 
58
58
  PORT=8080 ompgui # 環境変数にも対応
59
59
  OMP_WEB_HOSTNAME=0.0.0.0 ompgui # ネットワーク公開を明示的に有効化
@@ -62,7 +62,7 @@ OMP_WEB_PASSWORD='a-long-random-password' ompgui # 環境変数でも同様(PO
62
62
  OMP_WEB_NO_OPEN=1 ompgui # バックグラウンドサービスとして実行する場合に便利
63
63
  ```
64
64
 
65
- `OMP_WEB_PASSWORD` を設定すると、テーマに統合されたパスワードのみのサインイン画面で UI とすべての API エンドポイントを保護できます。サインイン後は HTTP-only の署名付きセッションクッキーが 30 日間有効です。未設定なら認証は無効です。リモート利用では、パスワードとセッションクッキーを守るため、信頼できるリバースプロキシまたは VPN 経由の HTTPS が必要です。ompgui をインターネットへ直接公開しないでください。
65
+ `OMP_WEB_PASSWORD` または `--password` は localhost への直接接続を保護し、端末登録時の追加認証にも使われます。ローカルセッションは 30 日間有効で、パスワード変更で無効になります。リモート Web 接続には、パスワードの設定有無に関係なく登録済み端末が必要です。パスワードや従来のセッション Cookie だけでは接続できません。リモートでは HTTPS を使用してください。
66
66
 
67
67
  ### macOS のバックグラウンドサービス
68
68
 
@@ -93,9 +93,9 @@ macOS のブラウザ GUI では **Settings → System & Updates → Background
93
93
 
94
94
  モバイル端末(iPhone、iPad、Android)や外部のノートPCから `ompgui` にアクセスする場合は、**[Tailscale](https://tailscale.com/) の利用を強く推奨します**。ポート開放やグローバルIPの公開なしに、端末間の暗号化メッシュVPNを通じて最も安全にリモートアクセスできます。
95
95
 
96
- ### 1. パスワードの設定(セキュリティ上必須)
96
+ ### 1. 端末登録用の追加パスワード
97
97
 
98
- ネットワークインターフェースにバインドする場合は、必ずパスワードを設定して認証を保護してください。
98
+ CLI は外部インターフェースへのバインドにパスワードを要求します。Tailscale Serve/Funnel 経由では既定のループバックを維持してください。パスワードは登録時の追加確認であり、端末登録の代わりにはなりません。
99
99
 
100
100
  ```bash
101
101
  # CLI オプションでパスワードを設定して全インターフェースにバインド
@@ -110,16 +110,17 @@ OMP_WEB_HOSTNAME=0.0.0.0 OMP_WEB_PASSWORD="your-strong-password" ompgui
110
110
  1. **Tailscale をインストール**: ホストPCとモバイル端末に [Tailscale](https://tailscale.com/download) をインストールし、同一アカウントでログインします。
111
111
  2. **ホストPCで ompgui を起動**:
112
112
  ```bash
113
- ompgui --hostname 0.0.0.0 --password "your-strong-password"
113
+ ompgui --password "your-strong-password"
114
114
  ```
115
115
  3. **モバイルブラウザからアクセス**:
116
- - ホストPCの Tailscale IP(例: `100.x.y.z`)または MagicDNS マシン名でアクセスします:
116
+ - ompgui に接続した HTTPS Serve/Funnel アドレスを使います:
117
117
  ```text
118
- http://100.x.y.z:30177
119
- # または MagicDNS 有効時
120
- http://my-macbook:30177
118
+ https://host.ts.net:8443
121
119
  ```
122
- 4. **ログイン**: 設定したパスワードを入力すると、モバイル端末から安全にコーディングエージェントを操作・対話できます。
120
+ 4. **ブラウザを登録**: ホストの Settings → Connect Devices、または `ompgui pair --url wss://host.ts.net:8443/relay` に実際の ompgui HTTPS/Funnel アドレスを指定してリンクを発行します。リモートで **Browser** リンクを開き、設定済みの場合はパスワードを入力してブラウザをペアリングします。tailnet への直接接続も HTTPS を先に設定してください。ブラウザと電話のリンクは同じ 10 分間の一回限りの登録要求を共有し、片方だけが使用できます。次の端末には新しいリンクを発行してください。
121
+ 5. **登録を解除**: `ompgui devices`、`ompgui devices revoke <id>`、または Settings → Connect Devices を使います。Android APK と同じ一覧と失効処理を使い、解除後は Web ストリームとリレー接続を閉じて以後の要求を拒否します。
122
+
123
+ リバースプロキシは外部 Host と forwarding/Funnel ヘッダーを保持してください。ヘッダーを削除して Host を localhost に書き換えるとローカル接続と区別できません。ブラウザも APK のリレー認証と `~/.omp/agent/ompgui-relay.json` を再利用し、30 日間のホスト限定 HttpOnly Cookie を持ちます。サーバーはトークンのハッシュのみ保存します。これは物理端末の証明ではなく資格情報の登録です。トークンや Cookie をコピーすると、失効まで同じ権限を持ちます。
123
124
 
124
125
  ## 機能
125
126
 
@@ -142,7 +143,7 @@ OMP_WEB_HOSTNAME=0.0.0.0 OMP_WEB_PASSWORD="your-strong-password" ompgui
142
143
  | --- | --- |
143
144
  | `PORT` | サーバーポート(デフォルト `30177`。`-p/--port` が優先) |
144
145
  | `OMP_WEB_HOSTNAME` | バインドするホスト名(デフォルト `127.0.0.1`。`-H/--hostname` が優先) |
145
- | `OMP_WEB_PASSWORD` | サインイン画面用の任意のパスワード |
146
+ | `OMP_WEB_PASSWORD` | ローカルログインと端末登録時の追加認証用。リモートには登録済み端末が必要 |
146
147
  | `OMP_WEB_NO_OPEN` | `1`/`true` を設定するとブラウザの自動起動をスキップ |
147
148
  | `OMP_WEB_OMP_BIN` | `omp` バイナリが `PATH` にない場合の絶対パス |
148
149
  | `PI_CODING_AGENT_DIR` | 別の omp エージェントディレクトリを指定(デフォルト `~/.omp/agent`) |
package/README.ko.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](./README.md) | [한국어](./README.ko.md) | [日本語](./README.ja.md) | [简体中文](./README.zh-CN.md)
4
4
 
5
- > **Android APK (Android 12+)** — Kotlin 보조 앱으로 원격 ompgui 서버에 연결하고, 최신 세션의 읽기 전용 오프라인 스냅샷을 이용할 수 있습니다. [ompgui Remote v0.7.11 다운로드](https://github.com/dbc-hbin/ompgui/releases/download/v0.7.11/ompgui-remote-v0.7.11.apk) · [릴리스 노트](https://github.com/dbc-hbin/ompgui/releases/tag/v0.7.11)
5
+ > **Android APK (Android 12+)** — Kotlin 보조 앱으로 원격 ompgui 서버에 연결하고, 최신 세션의 읽기 전용 오프라인 스냅샷을 이용할 수 있습니다. [ompgui Remote v0.7.12 다운로드](https://github.com/dbc-hbin/ompgui/releases/download/v0.7.12/ompgui-remote-v0.7.12.apk) · [릴리스 노트](https://github.com/dbc-hbin/ompgui/releases/tag/v0.7.12)
6
6
 
7
7
  > `android/`의 실험용 네이티브 Compose 클라이언트는 인증된 `/relay` WebSocket을 사용하며, 세션/기록 제어와 링크·도구 호출·결과·오류·미디어 참조를 포함하는 풍부한 온라인 대화 기록, 오프라인 Mermaid 다이어그램 및 코드 구문 강조, 이미지/PDF/오디오/HTML/Markdown/DOCX 인라인 미리보기를 제공합니다. 온라인 기록은 보호된 오프라인 스냅샷과 별개입니다. 크기가 제한된 미리보기에서 `sessions.content`로 전체 텍스트를 나누어 가져오고 미디어 참조도 페이지 단위로 조회하므로 대화 기록을 4,000자로 잘라내지 않습니다. 오프라인 캐시의 개인정보 보호 제한은 그대로 유지됩니다. 파일 자동 새로고침은 화면에 보일 때만 동작하며 저장하지 않은 편집 내용을 보존합니다. 허용된 숨김 파일 탐색과 아카이브 검색도 지원합니다. 모델/설정에서는 공개 models.dev 카탈로그, 고급 OMP 설정, 구성 상태와 구분되는 세션별 실제 MCP 실행 상태를 확인할 수 있습니다. 첨부 파일은 휴대폰에서 하나의 거대한 JSON으로 묶지 않고 스트리밍으로 스테이징하며, 이미지는 개당 10 MiB로 최대 10개, 텍스트 첨부는 별도로 개당 256 KiB로 최대 10개까지 지원합니다. OMP 자체의 이미지 정규화와 제공자별 이미지 개수 제한은 계속 적용됩니다.
8
8
  >
@@ -54,7 +54,7 @@ ompgui --port 8080 # 포트 지정
54
54
  ompgui --hostname 0.0.0.0 # 신뢰할 수 있는 네트워크에 노출
55
55
  ompgui -p 8080 -H 0.0.0.0 # 옵션 조합
56
56
  ompgui --no-open # 브라우저 자동 열기 안 함
57
- ompgui --password "a-long-random-password" # POSIX 인라인 환경 변수 없이 비밀번호만으로 로그인
57
+ ompgui --password "a-long-random-password" # 로컬 로그인과 기기 등록 시 추가 비밀번호 확인
58
58
 
59
59
  PORT=8080 ompgui # 환경 변수도 지원
60
60
  OMP_WEB_HOSTNAME=0.0.0.0 ompgui # 네트워크에 명시적으로 노출
@@ -67,7 +67,7 @@ OMP_WEB_NO_OPEN=1 ompgui # 백그라운드 서비스로 실행할 때 유
67
67
  # ompgui --password "a-long-random-password"
68
68
  ```
69
69
 
70
- `OMP_WEB_PASSWORD`를 설정하거나 `--password`를 전달하면 테마가 적용된 비밀번호 전용 로그인 화면으로 인터페이스와 모든 API 엔드포인트를 보호합니다. 로그인에 성공하면 30일 동안 유효한 HTTP 전용 서명 세션 쿠키가 생성됩니다. 설정된 비밀번호를 변경하면 기존 세션이 무효화됩니다. 변수를 설정하지 않으면 인증이 비활성화됩니다. 원격 사용 시 비밀번호와 세션 쿠키가 가로채이지 않도록 신뢰할 수 있는 리버스 프록시나 VPN을 통해 HTTPS를 사용해야 합니다. Windows 환경 변수 문법은 `$env:OMP_WEB_PASSWORD="..."`이며, `ompgui --password "..."`는 별도 문법 없이 모든 셸에서 작동합니다.
70
+ `OMP_WEB_PASSWORD` 또는 `--password`는 직접 localhost 접속을 보호하고 기기 등록 시 추가로 비밀번호를 확인합니다. 로컬 비밀번호 세션은 30일 동안 유효하며 비밀번호 변경 시 무효화됩니다. 원격 웹 접속은 비밀번호 설정 여부와 관계없이 등록된 기기만 허용합니다. 비밀번호나 이전 비밀번호 세션 쿠키만으로는 원격 접속할 수 없습니다. 원격에서는 HTTPS를 사용하세요. Windows에서도 `ompgui --password "..."`를 그대로 사용할 수 있습니다.
71
71
 
72
72
  ### macOS 백그라운드 서비스
73
73
 
@@ -98,9 +98,9 @@ macOS 브라우저 GUI의 **Settings → System & Updates → Background service
98
98
 
99
99
  외부나 모바일 기기(iPhone, iPad, Android)에서 로컬 PC의 `ompgui`에 접속할 때는 **[Tailscale](https://tailscale.com/) 가상 사설망(VPN)을 사용하는 것을 강력히 권장**합니다. 포트 포워딩이나 공인 IP 노출 없이 종단간 암호화(P2P)를 통해 가장 안전하게 원격 접속할 수 있습니다.
100
100
 
101
- ### 1. 비밀번호 설정 (보안 필수)
101
+ ### 1. 기기 등록용 추가 비밀번호 설정
102
102
 
103
- 외부 네트워크에 바인딩할 때는 인증 보호를 위해 반드시 비밀번호를 설정해야 합니다:
103
+ CLI는 외부 인터페이스에 바인딩할 때 비밀번호를 요구합니다. Tailscale Serve/Funnel 뒤에서는 기본 루프백 바인딩을 유지하세요. 비밀번호는 기기 등록 시 추가 확인 수단이며 기기 등록을 대체하지 않습니다:
104
104
 
105
105
  ```bash
106
106
  # CLI 옵션으로 비밀번호 설정 및 전체 네트워크 바인딩
@@ -115,20 +115,21 @@ OMP_WEB_HOSTNAME=0.0.0.0 OMP_WEB_PASSWORD="your-strong-password" ompgui
115
115
  1. **Tailscale 설치**: 호스트 PC와 모바일 기기에 [Tailscale](https://tailscale.com/download)을 설치하고 동일한 계정으로 로그인합니다.
116
116
  2. **호스트 PC에서 ompgui 실행**:
117
117
  ```bash
118
- ompgui --hostname 0.0.0.0 --password "your-strong-password"
118
+ ompgui --password "your-strong-password"
119
119
  ```
120
120
  3. **모바일 브라우저에서 접속**:
121
- - 호스트 PC의 Tailscale IP(예: `100.x.y.z`) 또는 MagicDNS 머신 이름으로 접속합니다:
121
+ - ompgui에 연결된 HTTPS Serve/Funnel 주소를 사용합니다:
122
122
  ```text
123
- http://100.x.y.z:30177
124
- # 또는 MagicDNS 활성화 시
125
- http://my-macbook:30177
123
+ https://host.ts.net:8443
126
124
  ```
127
- 4. **로그인**: 설정한 비밀번호를 입력하면 모바일에서도 안전하게 실시간 코딩 에이전트와 대화하고 작업할 수 있습니다.
125
+ 4. **브라우저 등록**: 호스트의 설정 → 기기 연결에서 링크를 만들거나 `ompgui pair --url wss://host.ts.net:8443/relay`에 실제 ompgui HTTPS/Funnel 주소를 지정합니다. 원격 브라우저에서 출력된 **Browser** 링크를 열고, 비밀번호가 설정되어 있으면 입력한 뒤 **이 브라우저 페어링**을 누르세요. 직접 tailnet 접속도 HTTPS를 먼저 구성하세요. 브라우저·휴대폰 링크는 같은 10분짜리 일회용 등록 요청이며 둘 중 하나만 사용할 수 있습니다. 다음 기기에는 새 링크를 발급하세요.
126
+ 5. **접속 해제**: `ompgui devices`와 `ompgui devices revoke <id>`는 Android APK와 같은 등록 목록을 사용합니다. 설정 → 기기 연결에서도 두 종류의 클라이언트를 확인·해제할 수 있습니다. 해제하면 활성 웹 스트림과 릴레이 연결이 닫히고 이후 웹 요청이 차단됩니다.
128
127
 
129
128
  ### 보안 및 문제 해결
130
129
 
131
130
  - 서버는 기본적으로 `127.0.0.1`에 바인딩됩니다. 루프백이 아닌 호스트 이름은 명시적으로 선택해야 하며 신뢰할 수 있는 네트워크 경계 뒤에서만 사용하세요. ompgui을 공개적으로 노출하는 것은 안전하지 않습니다.
131
+ - 리버스 프록시는 외부 Host와 forwarding/Funnel 헤더를 보존해야 합니다. 이를 지우고 Host를 localhost로 바꾸면 원격 요청을 직접 로컬 접속과 구별할 수 없습니다.
132
+ - 웹도 APK 릴레이 인증과 `~/.omp/agent/ompgui-relay.json`을 재사용합니다. 브라우저는 30일짜리 호스트 한정 HttpOnly 기기 쿠키를 보관하고 서버는 토큰 해시만 저장합니다. 등록은 물리 기기가 아니라 자격 증명을 식별하므로 토큰·쿠키를 복사하면 해제 전까지 같은 권한을 갖습니다.
132
133
  - 파일 API는 선택한 워크스페이스, 유효한 Git worktree, 세션에서 참조된 디렉터리, 명시적으로 선택한 루트만 허용합니다. 경로를 정규화하여 경로 탈출과 심볼릭 링크 탈출을 차단합니다.
133
134
  - `omp`는 먼저 `OMP_WEB_OMP_BIN`, 다음으로 `PATH`에서 확인합니다. 실시간 채팅을 시작할 수 없으면 같은 터미널에서 `omp --version`을 실행하거나 실행 파일의 절대 경로를 `OMP_WEB_OMP_BIN`에 설정하세요.
134
135
  - 세션 기록은 기본 OMP JSONL 형식으로 유지됩니다. 실시간 세션 쓰기는 OMP가 담당하며, ompgui은 직접 파일을 읽고 실시간 OMP 쓰기와 충돌하지 않을 때만 명시적인 제목·보관·삭제 작업을 수행합니다.
@@ -157,7 +158,7 @@ OMP_WEB_HOSTNAME=0.0.0.0 OMP_WEB_PASSWORD="your-strong-password" ompgui
157
158
  | --- | --- |
158
159
  | `PORT` | 서버 포트(기본 `30177`; `-p/--port`가 우선) |
159
160
  | `OMP_WEB_HOSTNAME` | 바인딩할 호스트 이름(기본 `127.0.0.1`; `-H/--hostname`이 우선) |
160
- | `OMP_WEB_PASSWORD` / `--password` | 로그인 화면의 비밀번호. `--password`는 PowerShell/CMD에서도 `$env:` 문법 없이 사용 가능 |
161
+ | `OMP_WEB_PASSWORD` / `--password` | 로컬 로그인 및 기기 등록 시 추가 확인용 비밀번호. 원격 접속에는 등록된 기기가 필요 |
161
162
  | `OMP_WEB_NO_OPEN` | `1` 또는 `true`로 설정하면 브라우저 자동 열기 건너뜀 |
162
163
  | `OMP_WEB_OMP_BIN` | `PATH`에 `omp`가 없을 때 사용할 절대 경로 |
163
164
  | `PI_CODING_AGENT_DIR` | 다른 omp 에이전트 디렉터리 지정(기본 `~/.omp/agent`) |
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](./README.md) | [한국어](./README.ko.md) | [日本語](./README.ja.md) | [简体中文](./README.zh-CN.md)
4
4
 
5
- > **Android APK (Android 12+)** — Use the Kotlin companion app to connect to a remote ompgui server, with a read-only offline snapshot of the latest session. [Download ompgui Remote v0.7.11](https://github.com/dbc-hbin/ompgui/releases/download/v0.7.11/ompgui-remote-v0.7.11.apk) · [Release notes](https://github.com/dbc-hbin/ompgui/releases/tag/v0.7.11)
5
+ > **Android APK (Android 12+)** — Use the Kotlin companion app to connect to a remote ompgui server, with a read-only offline snapshot of the latest session. [Download ompgui Remote v0.7.12](https://github.com/dbc-hbin/ompgui/releases/download/v0.7.12/ompgui-remote-v0.7.12.apk) · [Release notes](https://github.com/dbc-hbin/ompgui/releases/tag/v0.7.12)
6
6
 
7
7
  > The Kotlin companion app in `android/` uses authenticated `/relay` WebSockets for session/history controls and rich online transcripts with linked messages, tool calls/results/errors, and media references, plus offline Mermaid diagrams and code highlighting and inline image/PDF/audio/HTML/Markdown/DOCX previews. Online history is independent of the protected offline snapshot: bounded previews fetch full text through `sessions.content` and paginate media references, rather than truncating the transcript at 4,000 characters. Offline cache privacy restrictions remain unchanged. Visible-only file auto-refresh preserves unsaved edits; browsing supports allowed hidden files and archive search. Models/settings include the public models.dev catalog, advanced OMP settings, and actual per-session MCP runtime status shown separately from configuration. Attachments are streamed into staging rather than packed into one giant phone JSON payload: up to 10 images at 10 MiB each and, independently, 10 text attachments at 256 KiB each. OMP's own image normalization and provider-specific image-count limi…
8
8
  >
@@ -54,7 +54,7 @@ ompgui --port 8080 # custom port
54
54
  ompgui --hostname 0.0.0.0 # expose on a trusted network
55
55
  ompgui -p 8080 -H 0.0.0.0 # combine options
56
56
  ompgui --no-open # do not open the browser automatically
57
- ompgui --password "a-long-random-password" # password-only sign-in without POSIX inline-env syntax
57
+ ompgui --password "a-long-random-password" # local sign-in and an extra pairing factor
58
58
 
59
59
  PORT=8080 ompgui # environment variable is also supported
60
60
  OMP_WEB_HOSTNAME=0.0.0.0 ompgui # explicit network exposure
@@ -67,7 +67,7 @@ OMP_WEB_NO_OPEN=1 ompgui # useful when running as a background service
67
67
  # ompgui --password "a-long-random-password"
68
68
  ```
69
69
 
70
- Set `OMP_WEB_PASSWORD` (or pass `--password`) to protect the interface and every API endpoint with a themed, password-only sign-in screen. A successful sign-in creates an HTTP-only signed session cookie for 30 days; changing the configured password invalidates existing sessions. Leaving the variable unset disables authentication. Remote use still requires HTTPS through a trusted reverse proxy or VPN so the password and session cookie cannot be intercepted. On Windows the env-variable syntax is `$env:OMP_WEB_PASSWORD="..."`; `ompgui --password "..."` works in every shell without that extra step.
70
+ `OMP_WEB_PASSWORD` (or `--password`) protects direct localhost access and adds a password check when enrolling a device. Local password sessions last 30 days and are invalidated when the password changes. Remote web access always requires a registered device, including when no password is set; a password or old password-session cookie alone cannot authorize it. Use HTTPS remotely. On Windows, `ompgui --password "..."` works without inline environment-variable syntax.
71
71
 
72
72
  ### macOS background service
73
73
 
@@ -98,9 +98,9 @@ The browser GUI exposes these controls under **Settings → System & Updates →
98
98
 
99
99
  For accessing `ompgui` from mobile devices (iPhone, iPad, Android) or external laptops, **using [Tailscale](https://tailscale.com/) is strongly recommended**. Tailscale creates a private, point-to-point WireGuard mesh VPN between your devices without exposing your host machine to the public internet or requiring port forwarding.
100
100
 
101
- ### 1. Configure Password (Required for Remote Access)
101
+ ### 1. Configure an Additional Pairing Password
102
102
 
103
- When binding to external network interfaces, setting a password is required to secure the workspace:
103
+ The CLI requires a password when binding to external interfaces. Behind Tailscale Serve/Funnel, keep the default loopback binding; a password is an optional extra pairing factor, not a substitute for device registration:
104
104
 
105
105
  ```bash
106
106
  # CLI option: bind to all interfaces with a password
@@ -115,20 +115,21 @@ OMP_WEB_HOSTNAME=0.0.0.0 OMP_WEB_PASSWORD="your-strong-password" ompgui
115
115
  1. **Install Tailscale**: Download and sign into [Tailscale](https://tailscale.com/download) on both your host machine and your mobile device using the same account.
116
116
  2. **Start ompgui on your host machine**:
117
117
  ```bash
118
- ompgui --hostname 0.0.0.0 --password "your-strong-password"
118
+ ompgui --password "your-strong-password"
119
119
  ```
120
120
  3. **Access from your mobile browser**:
121
- - Navigate to your host's Tailscale IP (e.g. `100.x.y.z`) or MagicDNS machine name:
121
+ - Use the HTTPS Serve/Funnel address configured for ompgui:
122
122
  ```text
123
- http://100.x.y.z:30177
124
- # Or with MagicDNS enabled:
125
- http://my-macbook:30177
123
+ https://host.ts.net:8443
126
124
  ```
127
- 4. **Log in**: Enter your configured password to securely control and chat with your coding agent on mobile.
125
+ 4. **Register the browser**: On the host, open Settings → Connect Devices or run `ompgui pair --url wss://host.ts.net:8443/relay` with the actual ompgui HTTPS/Funnel address. Open the printed **Browser** link on the remote device, enter the workspace password if configured, and select **Pair this browser**. For direct tailnet access, configure HTTPS first. The browser and phone links share one ten-minute offer: only one can consume it; generate another for the next device.
126
+ 5. **Manage access**: `ompgui devices` and `ompgui devices revoke <id>` use the same registration list as the Android APK. Settings → Connect Devices also lists and revokes both clients. Revocation closes active browser streams and relay connections and rejects subsequent web requests.
128
127
 
129
128
  ### Security and troubleshooting
130
129
 
131
130
  - The server binds to `127.0.0.1` by default. A non-loopback hostname is an explicit opt-in and should only be used behind a trusted network boundary; ompgui is not safe to expose publicly.
131
+ - Reverse proxies must preserve the external Host and forwarding/Funnel headers. A proxy that strips them and rewrites Host to localhost makes remote traffic indistinguishable from direct local access.
132
+ - Browser enrollment reuses APK relay authentication and `~/.omp/agent/ompgui-relay.json`. The browser holds a 30-day, host-scoped HTTP-only device cookie; the server stores only the token hash. Registration identifies a credential, not physical hardware: copying its token/cookie copies access until revocation.
132
133
  - File APIs are allow-listed to the selected workspace, its valid Git worktrees, session-referenced directories, and explicitly selected roots. Paths are canonicalized to reject traversal and symlink escapes.
133
134
  - `omp` is resolved from `OMP_WEB_OMP_BIN` first, then `PATH`. If live chat cannot start, run `omp --version` in the same terminal or set `OMP_WEB_OMP_BIN` to the executable's absolute path.
134
135
  - Session history remains native OMP JSONL. OMP owns live-session writes; ompgui reads the files directly and only performs explicit title, archive, and delete maintenance when it is not racing a live OMP write.
@@ -157,7 +158,7 @@ OMP_WEB_HOSTNAME=0.0.0.0 OMP_WEB_PASSWORD="your-strong-password" ompgui
157
158
  | --- | --- |
158
159
  | `PORT` | Server port (default `30177`; `-p/--port` wins) |
159
160
  | `OMP_WEB_HOSTNAME` | Bind hostname (default `127.0.0.1`; `-H/--hostname` wins) |
160
- | `OMP_WEB_PASSWORD` / `--password` | Password for the sign-in screen; `--password` works in every shell (PowerShell/CMD) without ` $env:` syntax |
161
+ | `OMP_WEB_PASSWORD` / `--password` | Local sign-in password and additional device-enrollment factor; remote access still requires a registered device |
161
162
  | `OMP_WEB_NO_OPEN` | Set to `1`/`true` to skip auto-opening the browser |
162
163
  | `OMP_WEB_OMP_BIN` | Absolute path to the `omp` binary when it is not on `PATH` |
163
164
  | `PI_CODING_AGENT_DIR` | Point at another omp agent directory (default `~/.omp/agent`) |