haixuantao commited on
Commit
8891a8e
·
verified ·
1 Parent(s): 833a304
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +16 -0
  2. 404.html +1 -0
  3. URDF/assets/base_motor_holder_so101_v1.stl +3 -0
  4. URDF/assets/base_so101_v2.stl +3 -0
  5. URDF/assets/motor_holder_so101_base_v1.stl +3 -0
  6. URDF/assets/motor_holder_so101_wrist_v1.stl +3 -0
  7. URDF/assets/moving_jaw_so101_v1.stl +3 -0
  8. URDF/assets/rotation_pitch_so101_v1.stl +3 -0
  9. URDF/assets/sts3215_03a_no_horn_v1.stl +3 -0
  10. URDF/assets/sts3215_03a_v1.stl +3 -0
  11. URDF/assets/under_arm_so101_v1.stl +3 -0
  12. URDF/assets/upper_arm_so101_v1.stl +3 -0
  13. URDF/assets/waveshare_mounting_plate_so101_v2.stl +0 -0
  14. URDF/assets/wrist_roll_follower_so101_v1.stl +3 -0
  15. URDF/assets/wrist_roll_pitch_so101_v2.stl +3 -0
  16. URDF/so101.urdf +411 -0
  17. _next/static/DtkUoStcjKiY0p76MJl9o/_buildManifest.js +1 -0
  18. _next/static/DtkUoStcjKiY0p76MJl9o/_ssgManifest.js +1 -0
  19. _next/static/chunks/1329d575-baf00f741997f8c1.js +0 -0
  20. _next/static/chunks/4bd1b696-7e8243be45abfec2.js +0 -0
  21. _next/static/chunks/684-4ce5e6d50b92cbef.js +0 -0
  22. _next/static/chunks/874-d5b9b203af7637c3.js +1 -0
  23. _next/static/chunks/881-47c588f365fe1541.js +0 -0
  24. _next/static/chunks/app/_not-found/page-8a72a3278bab3d87.js +1 -0
  25. _next/static/chunks/app/layout-557283093bad1bf7.js +1 -0
  26. _next/static/chunks/app/page-d26a24c6810d0a4b.js +1 -0
  27. _next/static/chunks/b536a0f1-8e928607e65d05e8.js +0 -0
  28. _next/static/chunks/ba12c10f-1bf210e1db10c544.js +5 -0
  29. _next/static/chunks/bd904a5c-a365b175d1933289.js +0 -0
  30. _next/static/chunks/framework-17e4362dfeb1e631.js +0 -0
  31. _next/static/chunks/main-aa062daf7f95e72c.js +0 -0
  32. _next/static/chunks/main-app-f27e1f97d10457bf.js +1 -0
  33. _next/static/chunks/pages/_app-da15c11dea942c36.js +1 -0
  34. _next/static/chunks/pages/_error-cc3f077a18ea1793.js +1 -0
  35. _next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  36. _next/static/chunks/webpack-9682978e3e09731c.js +1 -0
  37. _next/static/css/2e82de4fb0b28870.css +3 -0
  38. _next/static/media/26a46d62cd723877-s.woff2 +0 -0
  39. _next/static/media/55c55f0601d81cf3-s.woff2 +0 -0
  40. _next/static/media/581909926a08bbc8-s.woff2 +0 -0
  41. _next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  42. _next/static/media/97e0cb1ae144a2a9-s.woff2 +0 -0
  43. _next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  44. _next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  45. bambot_v0.jpg +3 -0
  46. bambot_v0_base.png +3 -0
  47. favicon.ico +0 -0
  48. index.html +1 -19
  49. index.txt +25 -0
  50. logo.jpg +0 -0
.gitattributes CHANGED
@@ -33,3 +33,19 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ URDF/assets/base_motor_holder_so101_v1.stl filter=lfs diff=lfs merge=lfs -text
37
+ URDF/assets/base_so101_v2.stl filter=lfs diff=lfs merge=lfs -text
38
+ URDF/assets/motor_holder_so101_base_v1.stl filter=lfs diff=lfs merge=lfs -text
39
+ URDF/assets/motor_holder_so101_wrist_v1.stl filter=lfs diff=lfs merge=lfs -text
40
+ URDF/assets/moving_jaw_so101_v1.stl filter=lfs diff=lfs merge=lfs -text
41
+ URDF/assets/rotation_pitch_so101_v1.stl filter=lfs diff=lfs merge=lfs -text
42
+ URDF/assets/sts3215_03a_no_horn_v1.stl filter=lfs diff=lfs merge=lfs -text
43
+ URDF/assets/sts3215_03a_v1.stl filter=lfs diff=lfs merge=lfs -text
44
+ URDF/assets/under_arm_so101_v1.stl filter=lfs diff=lfs merge=lfs -text
45
+ URDF/assets/upper_arm_so101_v1.stl filter=lfs diff=lfs merge=lfs -text
46
+ URDF/assets/wrist_roll_follower_so101_v1.stl filter=lfs diff=lfs merge=lfs -text
47
+ URDF/assets/wrist_roll_pitch_so101_v2.stl filter=lfs diff=lfs merge=lfs -text
48
+ bambot_v0.jpg filter=lfs diff=lfs merge=lfs -text
49
+ bambot_v0_base.png filter=lfs diff=lfs merge=lfs -text
50
+ so-arm100.jpg filter=lfs diff=lfs merge=lfs -text
51
+ sts3215.png filter=lfs diff=lfs merge=lfs -text
404.html ADDED
@@ -0,0 +1 @@
 
 
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/2e82de4fb0b28870.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9682978e3e09731c.js"/><script src="/_next/static/chunks/4bd1b696-7e8243be45abfec2.js" async=""></script><script src="/_next/static/chunks/684-4ce5e6d50b92cbef.js" async=""></script><script src="/_next/static/chunks/main-app-f27e1f97d10457bf.js" async=""></script><script src="/_next/static/chunks/874-d5b9b203af7637c3.js" async=""></script><script src="/_next/static/chunks/app/layout-557283093bad1bf7.js" async=""></script><link rel="preload" href="https://buttons.github.io/buttons.js" as="script"/><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>BamBot</title><meta name="description" content="Open source, low-cost AI robots 🤖"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__className_e8ce0c bg-black text-white w-screen h-screen"><header class="text-white w-full p-5 sm:px-10 flex justify-between items-center fixed top-0 left-0 right-0 z-50"><a href="/"><div class="text-2xl font-bold e">Dora-BamBot</div><div class="text-xl e text-red-500">This browser is not supported! Please use Chrome.</div></a><div class="text-2xl e"><a href="https://shop.wowrobo.com/products/so-arm101-diy-kit-assembled-version-1?sca_ref=8999006.W1G76EYstQkFoP"><a href="https://shop.wowrobo.com/products/so-arm101-diy-kit-assembled-version-1?sca_ref=8999006.W1G76EYstQkFoP">Buy assembled SO101 with 5% Discount on WowRobo with the code:<!-- --> <span class="text-red-500"> 1ms.ai</span></a></a></div><a class="github-button" href="https://github.com/dora-bambot/dora-bambot.github.io" data-size="large" data-show-count="true" aria-label="Star timqian/bambot on GitHub">Star</a></header><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--$--><!--/$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><script src="/_next/static/chunks/webpack-9682978e3e09731c.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7514,[\"874\",\"static/chunks/874-d5b9b203af7637c3.js\",\"177\",\"static/chunks/app/layout-557283093bad1bf7.js\"],\"default\"]\n3:I[7555,[],\"\"]\n4:I[1295,[],\"\"]\n5:I[9742,[\"874\",\"static/chunks/874-d5b9b203af7637c3.js\",\"177\",\"static/chunks/app/layout-557283093bad1bf7.js\"],\"Analytics\"]\n6:I[9665,[],\"MetadataBoundary\"]\n8:I[9665,[],\"OutletBoundary\"]\nb:I[4911,[],\"AsyncMetadataOutlet\"]\nd:I[9665,[],\"ViewportBoundary\"]\nf:I[6614,[],\"\"]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/2e82de4fb0b28870.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"DtkUoStcjKiY0p76MJl9o\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2e82de4fb0b28870.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__className_e8ce0c bg-black text-white w-screen h-screen\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L5\",null,{}]]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[\"$\",\"$L6\",null,{\"children\":\"$L7\"}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",\"$La\",[\"$\",\"$Lb\",null,{\"promise\":\"$@c\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"YLOGRIaLiTCUOlLXjn-FT\",{\"children\":[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"10:\"$Sreact.suspense\"\n11:I[4911,[],\"AsyncMetadata\"]\n7:[\"$\",\"$10\",null,{\"fallback\":null,\"children\":[\"$\",\"$L11\",null,{\"promise\":\"$@12\"}]}]\n"])</script><script>self.__next_f.push([1,"a:null\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\n"])</script><script>self.__next_f.push([1,"12:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"BamBot\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open source, low-cost AI robots 🤖\"}]],\"error\":null,\"digest\":\"$undefined\"}\nc:{\"metadata\":\"$12:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
URDF/assets/base_motor_holder_so101_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8cd2f241037ea377af1191fffe0dd9d9006beea6dcc48543660ed41647072424
3
+ size 1877084
URDF/assets/base_so101_v2.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bb12b7026575e1f70ccc7240051f9d943553bf34e5128537de6cd86fae33924d
3
+ size 471584
URDF/assets/motor_holder_so101_base_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:31242ae6fb59d8b15c66617b88ad8e9bded62d57c35d11c0c43a70d2f4caa95b
3
+ size 1129384
URDF/assets/motor_holder_so101_wrist_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:887f92e6013cb64ea3a1ab8675e92da1e0beacfd5e001f972523540545e08011
3
+ size 1052184
URDF/assets/moving_jaw_so101_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:785a9dded2f474bc1d869e0d3dae398a3dcd9c0c345640040472210d2861fa9d
3
+ size 1413584
URDF/assets/rotation_pitch_so101_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9be900cc2a2bf718102841ef82ef8d2873842427648092c8ed2ca1e2ef4ffa34
3
+ size 883684
URDF/assets/sts3215_03a_no_horn_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:75ef3781b752e4065891aea855e34dc161a38a549549cd0970cedd07eae6f887
3
+ size 865884
URDF/assets/sts3215_03a_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a37c871fb502483ab96c256baf457d36f2e97afc9205313d9c5ab275ef941cd0
3
+ size 954084
URDF/assets/under_arm_so101_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d01d1f2de365651dcad9d6669e94ff87ff7652b5bb2d10752a66a456a86dbc71
3
+ size 1975884
URDF/assets/upper_arm_so101_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:475056e03a17e71919b82fd88ab9a0b898ab50164f2a7943652a6b2941bb2d4f
3
+ size 1303484
URDF/assets/waveshare_mounting_plate_so101_v2.stl ADDED
Binary file (62.8 kB). View file
 
URDF/assets/wrist_roll_follower_so101_v1.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4b17b410a12d64ec39554abc3e8054d8a97384b2dc4a8d95a5ecb2a93670f5f4
3
+ size 1439884
URDF/assets/wrist_roll_pitch_so101_v2.stl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6c7ec5525b4d8b9e397a30ab4bb0037156a5d5f38a4adf2c7d943d6c56eda5ae
3
+ size 2699784
URDF/so101.urdf ADDED
@@ -0,0 +1,411 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <!-- Generated using onshape-to-robot -->
3
+ <!-- Onshape https://cad.onshape.com/documents/7715cc284bb430fe6dab4ffd/w/4fd0791b683777b02f8d975a/e/826c553ede3b7592eb9ca800 -->
4
+ <robot name="so100">
5
+ <!-- Link base -->
6
+ <link name="base">
7
+ <inertial>
8
+ <origin xyz="-0.14932 -0.16812 0.065966" rpy="0 0 0"/>
9
+ <mass value="0.147"/>
10
+ <inertia ixx="0.000114686" ixy="-4.59787e-07" ixz="4.97151e-06" iyy="0.000136117" iyz="9.75275e-08" izz="0.000130364"/>
11
+ </inertial>
12
+ <!-- Part base_motor_holder_so101_v1 -->
13
+ <visual>
14
+ <origin xyz="-0.169402 -0.168167 0.0300817" rpy="1.5708 -1.67685e-15 1.5708"/>
15
+ <geometry>
16
+ <mesh filename="assets/base_motor_holder_so101_v1.stl"/>
17
+ </geometry>
18
+ <material name="base_motor_holder_so101_v1_material">
19
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
20
+ </material>
21
+ </visual>
22
+ <collision>
23
+ <origin xyz="-0.169402 -0.168167 0.0300817" rpy="1.5708 -1.67685e-15 1.5708"/>
24
+ <geometry>
25
+ <mesh filename="assets/base_motor_holder_so101_v1.stl"/>
26
+ </geometry>
27
+ </collision>
28
+ <!-- Part base_so101_v2 -->
29
+ <visual>
30
+ <origin xyz="-0.169402 -0.168068 0.0300817" rpy="1.5708 -1.6144e-15 1.5708"/>
31
+ <geometry>
32
+ <mesh filename="assets/base_so101_v2.stl"/>
33
+ </geometry>
34
+ <material name="base_so101_v2_material">
35
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
36
+ </material>
37
+ </visual>
38
+ <collision>
39
+ <origin xyz="-0.169402 -0.168068 0.0300817" rpy="1.5708 -1.6144e-15 1.5708"/>
40
+ <geometry>
41
+ <mesh filename="assets/base_so101_v2.stl"/>
42
+ </geometry>
43
+ </collision>
44
+ <!-- Part sts3215_03a_v1 -->
45
+ <visual>
46
+ <origin xyz="-0.136702 -0.168068 0.0761817" rpy="-8.21148e-16 7.84513e-18 1.249e-15"/>
47
+ <geometry>
48
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
49
+ </geometry>
50
+ <material name="sts3215_03a_v1_material">
51
+ <color rgba="0.627451 0.627451 0.627451 1.0"/>
52
+ </material>
53
+ </visual>
54
+ <collision>
55
+ <origin xyz="-0.136702 -0.168068 0.0761817" rpy="-8.21148e-16 7.84513e-18 1.249e-15"/>
56
+ <geometry>
57
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
58
+ </geometry>
59
+ </collision>
60
+ <!-- Part waveshare_mounting_plate_so101_v2 -->
61
+ <visual>
62
+ <origin xyz="-0.19402 -0.168267 0.0798817" rpy="1.5708 -1.35493e-14 1.5708"/>
63
+ <geometry>
64
+ <mesh filename="assets/waveshare_mounting_plate_so101_v2.stl"/>
65
+ </geometry>
66
+ <material name="waveshare_mounting_plate_so101_v2_material">
67
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
68
+ </material>
69
+ </visual>
70
+ <collision>
71
+ <origin xyz="-0.19402 -0.168267 0.0798817" rpy="1.5708 -1.35493e-14 1.5708"/>
72
+ <geometry>
73
+ <mesh filename="assets/waveshare_mounting_plate_so101_v2.stl"/>
74
+ </geometry>
75
+ </collision>
76
+ </link>
77
+ <!-- Frame baseframe (dummy link + fixed joint) -->
78
+ <link name="baseframe">
79
+ <origin xyz="0 0 0" rpy="0 -0 0"/>
80
+ <inertial>
81
+ <origin xyz="0 0 0" rpy="0 0 0"/>
82
+ <mass value="1e-9"/>
83
+ <inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0"/>
84
+ </inertial>
85
+ </link>
86
+ <joint name="baseframe_frame" type="fixed">
87
+ <origin xyz="-0.163038 -0.168068 0.0324817" rpy="1.6144e-15 7.84513e-18 1.33799e-15"/>
88
+ <parent link="base"/>
89
+ <child link="baseframe"/>
90
+ <axis xyz="0 0 0"/>
91
+ </joint>
92
+ <!-- Link shoulder -->
93
+ <link name="shoulder">
94
+ <inertial>
95
+ <origin xyz="-0.0307604 -1.66727e-05 -0.0252713" rpy="0 0 0"/>
96
+ <mass value="0.100006"/>
97
+ <inertia ixx="8.3759e-05" ixy="7.55525e-08" ixz="-1.16342e-06" iyy="8.10403e-05" iyz="1.54663e-07" izz="2.39783e-05"/>
98
+ </inertial>
99
+ <!-- Part sts3215_03a_v1_2 -->
100
+ <visual>
101
+ <origin xyz="-0.0303992 0.000422241 -0.0417" rpy="1.5708 1.5708 0"/>
102
+ <geometry>
103
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
104
+ </geometry>
105
+ <material name="sts3215_03a_v1_2_material">
106
+ <color rgba="0.627451 0.627451 0.627451 1.0"/>
107
+ </material>
108
+ </visual>
109
+ <collision>
110
+ <origin xyz="-0.0303992 0.000422241 -0.0417" rpy="1.5708 1.5708 0"/>
111
+ <geometry>
112
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
113
+ </geometry>
114
+ </collision>
115
+ <!-- Part motor_holder_so101_base_v1 -->
116
+ <visual>
117
+ <origin xyz="-0.0675992 -0.000177759 0.0158499" rpy="1.5708 -1.5708 0"/>
118
+ <geometry>
119
+ <mesh filename="assets/motor_holder_so101_base_v1.stl"/>
120
+ </geometry>
121
+ <material name="motor_holder_so101_base_v1_material">
122
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
123
+ </material>
124
+ </visual>
125
+ <collision>
126
+ <origin xyz="-0.0675992 -0.000177759 0.0158499" rpy="1.5708 -1.5708 0"/>
127
+ <geometry>
128
+ <mesh filename="assets/motor_holder_so101_base_v1.stl"/>
129
+ </geometry>
130
+ </collision>
131
+ <!-- Part rotation_pitch_so101_v1 -->
132
+ <visual>
133
+ <origin xyz="0.0122008 2.22413e-05 0.0464" rpy="-1.5708 2.35221e-33 0"/>
134
+ <geometry>
135
+ <mesh filename="assets/rotation_pitch_so101_v1.stl"/>
136
+ </geometry>
137
+ <material name="rotation_pitch_so101_v1_material">
138
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
139
+ </material>
140
+ </visual>
141
+ <collision>
142
+ <origin xyz="0.0122008 2.22413e-05 0.0464" rpy="-1.5708 2.35221e-33 0"/>
143
+ <geometry>
144
+ <mesh filename="assets/rotation_pitch_so101_v1.stl"/>
145
+ </geometry>
146
+ </collision>
147
+ </link>
148
+ <!-- Link upper_arm -->
149
+ <link name="upper_arm">
150
+ <inertial>
151
+ <origin xyz="-0.0898471 -0.00838224 0.0184089" rpy="0 0 0"/>
152
+ <mass value="0.103"/>
153
+ <inertia ixx="4.08002e-05" ixy="-1.97819e-05" ixz="-4.03016e-08" iyy="0.000147318" iyz="8.97326e-09" izz="0.000142487"/>
154
+ </inertial>
155
+ <!-- Part sts3215_03a_v1_3 -->
156
+ <visual>
157
+ <origin xyz="-0.11257 -0.0155 0.0187" rpy="-3.14159 -5.27356e-16 -1.5708"/>
158
+ <geometry>
159
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
160
+ </geometry>
161
+ <material name="sts3215_03a_v1_3_material">
162
+ <color rgba="0.627451 0.627451 0.627451 1.0"/>
163
+ </material>
164
+ </visual>
165
+ <collision>
166
+ <origin xyz="-0.11257 -0.0155 0.0187" rpy="-3.14159 -5.27356e-16 -1.5708"/>
167
+ <geometry>
168
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
169
+ </geometry>
170
+ </collision>
171
+ <!-- Part upper_arm_so101_v1 -->
172
+ <visual>
173
+ <origin xyz="-0.065085 0.012 0.0182" rpy="3.14159 -0 -1.30911e-30"/>
174
+ <geometry>
175
+ <mesh filename="assets/upper_arm_so101_v1.stl"/>
176
+ </geometry>
177
+ <material name="upper_arm_so101_v1_material">
178
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
179
+ </material>
180
+ </visual>
181
+ <collision>
182
+ <origin xyz="-0.065085 0.012 0.0182" rpy="3.14159 -0 -1.30911e-30"/>
183
+ <geometry>
184
+ <mesh filename="assets/upper_arm_so101_v1.stl"/>
185
+ </geometry>
186
+ </collision>
187
+ </link>
188
+ <!-- Link lower_arm -->
189
+ <link name="lower_arm">
190
+ <inertial>
191
+ <origin xyz="-0.0980701 0.00324376 0.0182831" rpy="0 0 0"/>
192
+ <mass value="0.104"/>
193
+ <inertia ixx="2.87438e-05" ixy="7.41152e-06" ixz="1.26409e-06" iyy="0.000159844" iyz="-4.90188e-08" izz="0.00014529"/>
194
+ </inertial>
195
+ <!-- Part under_arm_so101_v1 -->
196
+ <visual>
197
+ <origin xyz="-0.0648499 -0.032 0.0182" rpy="3.14159 -0 6.67202e-31"/>
198
+ <geometry>
199
+ <mesh filename="assets/under_arm_so101_v1.stl"/>
200
+ </geometry>
201
+ <material name="under_arm_so101_v1_material">
202
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
203
+ </material>
204
+ </visual>
205
+ <collision>
206
+ <origin xyz="-0.0648499 -0.032 0.0182" rpy="3.14159 -0 6.67202e-31"/>
207
+ <geometry>
208
+ <mesh filename="assets/under_arm_so101_v1.stl"/>
209
+ </geometry>
210
+ </collision>
211
+ <!-- Part motor_holder_so101_wrist_v1 -->
212
+ <visual>
213
+ <origin xyz="-0.0648499 -0.032 0.018" rpy="-3.14159 -2.55351e-15 -2.56146e-31"/>
214
+ <geometry>
215
+ <mesh filename="assets/motor_holder_so101_wrist_v1.stl"/>
216
+ </geometry>
217
+ <material name="motor_holder_so101_wrist_v1_material">
218
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
219
+ </material>
220
+ </visual>
221
+ <collision>
222
+ <origin xyz="-0.0648499 -0.032 0.018" rpy="-3.14159 -2.55351e-15 -2.56146e-31"/>
223
+ <geometry>
224
+ <mesh filename="assets/motor_holder_so101_wrist_v1.stl"/>
225
+ </geometry>
226
+ </collision>
227
+ <!-- Part sts3215_03a_v1_4 -->
228
+ <visual>
229
+ <origin xyz="-0.1224 0.0052 0.0187" rpy="-3.14159 -7.88861e-31 -3.14159"/>
230
+ <geometry>
231
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
232
+ </geometry>
233
+ <material name="sts3215_03a_v1_4_material">
234
+ <color rgba="0.627451 0.627451 0.627451 1.0"/>
235
+ </material>
236
+ </visual>
237
+ <collision>
238
+ <origin xyz="-0.1224 0.0052 0.0187" rpy="-3.14159 -7.88861e-31 -3.14159"/>
239
+ <geometry>
240
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
241
+ </geometry>
242
+ </collision>
243
+ </link>
244
+ <!-- Link wrist -->
245
+ <link name="wrist">
246
+ <inertial>
247
+ <origin xyz="-0.000103312 -0.0386143 0.0281156" rpy="0 0 0"/>
248
+ <mass value="0.079"/>
249
+ <inertia ixx="3.68263e-05" ixy="1.7893e-08" ixz="-5.28128e-08" iyy="2.5391e-05" iyz="3.6412e-06" izz="2.1e-05"/>
250
+ </inertial>
251
+ <!-- Part sts3215_03a_no_horn_v1 -->
252
+ <visual>
253
+ <origin xyz="5.55112e-17 -0.0424 0.0306" rpy="1.5708 1.5708 0"/>
254
+ <geometry>
255
+ <mesh filename="assets/sts3215_03a_no_horn_v1.stl"/>
256
+ </geometry>
257
+ <material name="sts3215_03a_no_horn_v1_material">
258
+ <color rgba="0.627451 0.627451 0.627451 1.0"/>
259
+ </material>
260
+ </visual>
261
+ <collision>
262
+ <origin xyz="5.55112e-17 -0.0424 0.0306" rpy="1.5708 1.5708 0"/>
263
+ <geometry>
264
+ <mesh filename="assets/sts3215_03a_no_horn_v1.stl"/>
265
+ </geometry>
266
+ </collision>
267
+ <!-- Part wrist_roll_pitch_so101_v2 -->
268
+ <visual>
269
+ <origin xyz="0 -0.028 0.0181" rpy="-1.5708 -1.5708 0"/>
270
+ <geometry>
271
+ <mesh filename="assets/wrist_roll_pitch_so101_v2.stl"/>
272
+ </geometry>
273
+ <material name="wrist_roll_pitch_so101_v2_material">
274
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
275
+ </material>
276
+ </visual>
277
+ <collision>
278
+ <origin xyz="0 -0.028 0.0181" rpy="-1.5708 -1.5708 0"/>
279
+ <geometry>
280
+ <mesh filename="assets/wrist_roll_pitch_so101_v2.stl"/>
281
+ </geometry>
282
+ </collision>
283
+ </link>
284
+ <!-- Link gripper -->
285
+ <link name="gripper">
286
+ <inertial>
287
+ <origin xyz="0.000213627 0.000245138 -0.025187" rpy="0 0 0"/>
288
+ <mass value="0.087"/>
289
+ <inertia ixx="2.75087e-05" ixy="-3.35241e-07" ixz="-5.7352e-06" iyy="4.33657e-05" iyz="-5.17847e-08" izz="3.45059e-05"/>
290
+ </inertial>
291
+ <!-- Part sts3215_03a_v1_5 -->
292
+ <visual>
293
+ <origin xyz="0.0077 0.0001 -0.0234" rpy="-1.5708 -5.19179e-17 -1.66533e-16"/>
294
+ <geometry>
295
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
296
+ </geometry>
297
+ <material name="sts3215_03a_v1_5_material">
298
+ <color rgba="0.627451 0.627451 0.627451 1.0"/>
299
+ </material>
300
+ </visual>
301
+ <collision>
302
+ <origin xyz="0.0077 0.0001 -0.0234" rpy="-1.5708 -5.19179e-17 -1.66533e-16"/>
303
+ <geometry>
304
+ <mesh filename="assets/sts3215_03a_v1.stl"/>
305
+ </geometry>
306
+ </collision>
307
+ <!-- Part wrist_roll_follower_so101_v1 -->
308
+ <visual>
309
+ <origin xyz="0 -0.000218214 0.000949706" rpy="-3.14159 -5.55112e-17 0"/>
310
+ <geometry>
311
+ <mesh filename="assets/wrist_roll_follower_so101_v1.stl"/>
312
+ </geometry>
313
+ <material name="wrist_roll_follower_so101_v1_material">
314
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
315
+ </material>
316
+ </visual>
317
+ <collision>
318
+ <origin xyz="0 -0.000218214 0.000949706" rpy="-3.14159 -5.55112e-17 0"/>
319
+ <geometry>
320
+ <mesh filename="assets/wrist_roll_follower_so101_v1.stl"/>
321
+ </geometry>
322
+ </collision>
323
+ </link>
324
+ <!-- Frame gripperframe (dummy link + fixed joint) -->
325
+ <link name="gripperframe">
326
+ <origin xyz="0 0 0" rpy="0 -0 0"/>
327
+ <inertial>
328
+ <origin xyz="0 0 0" rpy="0 0 0"/>
329
+ <mass value="1e-9"/>
330
+ <inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0"/>
331
+ </inertial>
332
+ </link>
333
+ <joint name="gripperframe_frame" type="fixed">
334
+ <origin xyz="-0.0079 -0.000218121 -0.0981274" rpy="-0 1.5708 0"/>
335
+ <parent link="gripper"/>
336
+ <child link="gripperframe"/>
337
+ <axis xyz="0 0 0"/>
338
+ </joint>
339
+ <!-- Link moving_jaw_so101_v1 -->
340
+ <link name="moving_jaw_so101_v1">
341
+ <inertial>
342
+ <origin xyz="-0.00157495 -0.0300244 0.0192755" rpy="0 0 0"/>
343
+ <mass value="0.012"/>
344
+ <inertia ixx="6.61427e-06" ixy="-3.19807e-07" ixz="-5.90717e-09" iyy="1.89032e-06" iyz="-1.09945e-07" izz="5.28738e-06"/>
345
+ </inertial>
346
+ <!-- Part moving_jaw_so101_v1 -->
347
+ <visual>
348
+ <origin xyz="-5.55112e-17 0 0.0189" rpy="9.53145e-17 6.93889e-18 1.24077e-24"/>
349
+ <geometry>
350
+ <mesh filename="assets/moving_jaw_so101_v1.stl"/>
351
+ </geometry>
352
+ <material name="moving_jaw_so101_v1_material">
353
+ <color rgba="0.964706 0.964706 0.952941 1.0"/>
354
+ </material>
355
+ </visual>
356
+ <collision>
357
+ <origin xyz="-5.55112e-17 0 0.0189" rpy="9.53145e-17 6.93889e-18 1.24077e-24"/>
358
+ <geometry>
359
+ <mesh filename="assets/moving_jaw_so101_v1.stl"/>
360
+ </geometry>
361
+ </collision>
362
+ </link>
363
+ <!-- Joint from gripper to moving_jaw_so101_v1 -->
364
+ <joint name="6" type="revolute">
365
+ <origin xyz="0.0202 0.0188 -0.0234" rpy="1.5708 -5.24284e-08 -1.41553e-15"/>
366
+ <parent link="gripper"/>
367
+ <child link="moving_jaw_so101_v1"/>
368
+ <axis xyz="0 0 1"/>
369
+ <limit effort="10" velocity="10" lower="-0.174533" upper="1.74533"/>
370
+ </joint>
371
+ <!-- Joint from wrist to gripper -->
372
+ <joint name="5" type="revolute">
373
+ <origin xyz="2.77556e-16 -0.0611 0.0181" rpy="1.5708 0.0486795 3.14159"/>
374
+ <parent link="wrist"/>
375
+ <child link="gripper"/>
376
+ <axis xyz="0 0 1"/>
377
+ <limit effort="10" velocity="10" lower="-2.74385" upper="2.84121"/>
378
+ </joint>
379
+ <!-- Joint from lower_arm to wrist -->
380
+ <joint name="4" type="revolute">
381
+ <origin xyz="-0.1349 0.0052 8.44651e-17" rpy="4.02456e-15 8.67362e-16 -1.5708"/>
382
+ <parent link="lower_arm"/>
383
+ <child link="wrist"/>
384
+ <axis xyz="0 0 1"/>
385
+ <limit effort="10" velocity="10" lower="-1.65806" upper="1.65806"/>
386
+ </joint>
387
+ <!-- Joint from upper_arm to lower_arm -->
388
+ <joint name="3" type="revolute">
389
+ <origin xyz="-0.11257 -0.028 2.09886e-16" rpy="-3.63608e-16 8.74301e-16 1.5708"/>
390
+ <parent link="upper_arm"/>
391
+ <child link="lower_arm"/>
392
+ <axis xyz="0 0 1"/>
393
+ <limit effort="10" velocity="10" lower="-1.74533" upper="1.5708"/>
394
+ </joint>
395
+ <!-- Joint from shoulder to upper_arm -->
396
+ <joint name="2" type="revolute">
397
+ <origin xyz="-0.0303992 -0.0182778 -0.0542" rpy="-1.5708 -1.5708 0"/>
398
+ <parent link="shoulder"/>
399
+ <child link="upper_arm"/>
400
+ <axis xyz="0 0 1"/>
401
+ <limit effort="10" velocity="10" lower="-1.74533" upper="1.74533"/>
402
+ </joint>
403
+ <!-- Joint from base to shoulder -->
404
+ <joint name="1" type="revolute">
405
+ <origin xyz="-0.124202 -0.168068 0.0948817" rpy="3.14159 4.18253e-17 -3.14159"/>
406
+ <parent link="base"/>
407
+ <child link="shoulder"/>
408
+ <axis xyz="0 0 1"/>
409
+ <limit effort="10" velocity="10" lower="-1.91986" upper="1.91986"/>
410
+ </joint>
411
+ </robot>
_next/static/DtkUoStcjKiY0p76MJl9o/_buildManifest.js ADDED
@@ -0,0 +1 @@
 
 
1
+ self.__BUILD_MANIFEST=function(e,r,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:2,errorRate:1e-4,numBits:39,numHashes:14,bitArray:[0,1,1,0,r,e,e,r,r,e,e,r,e,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,e,r,e,r,e,e,e,r]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:r,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-cc3f077a18ea1793.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
_next/static/DtkUoStcjKiY0p76MJl9o/_ssgManifest.js ADDED
@@ -0,0 +1 @@
 
 
1
+ self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
_next/static/chunks/1329d575-baf00f741997f8c1.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/4bd1b696-7e8243be45abfec2.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/684-4ce5e6d50b92cbef.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/874-d5b9b203af7637c3.js ADDED
@@ -0,0 +1 @@
 
 
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[874],{2664:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return u}});let n=r(9991),o=r(7102);function u(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},2757:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatUrl:function(){return u},formatWithValidation:function(){return a},urlObjectKeys:function(){return i}});let n=r(6966)._(r(8859)),o=/https?|ftp|gopher|file/;function u(e){let{auth:t,hostname:r}=e,u=e.protocol||"",i=e.pathname||"",a=e.hash||"",l=e.query||"",f=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?f=t+e.host:r&&(f=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(f+=":"+e.port)),l&&"object"==typeof l&&(l=String(n.urlQueryToSearchParams(l)));let c=e.search||l&&"?"+l||"";return u&&!u.endsWith(":")&&(u+=":"),e.slashes||(!u||o.test(u))&&!1!==f?(f="//"+(f||""),i&&"/"!==i[0]&&(i="/"+i)):f||(f=""),a&&"#"!==a[0]&&(a="#"+a),c&&"?"!==c[0]&&(c="?"+c),""+u+f+(i=i.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+a}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function a(e){return u(e)}},3180:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},6654:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=r(2115);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=u(e,n)),t&&(o.current=u(t,n))},[e,t])}function u(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(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)},6874:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return g},useLinkStatus:function(){return b}});let n=r(6966),o=r(5155),u=n._(r(2115)),i=r(2757),a=r(5227),l=r(9818),f=r(6654),c=r(9991),s=r(5929);r(3230);let p=r(4930),d=r(2664),h=r(6634);function y(e){return"string"==typeof e?e:(0,i.formatUrl)(e)}function g(e){let t,r,n,[i,g]=(0,u.useOptimistic)(p.IDLE_LINK_STATUS),b=(0,u.useRef)(null),{href:P,as:_,children:v,prefetch:E=null,passHref:O,replace:j,shallow:T,scroll:C,onClick:N,onMouseEnter:S,onTouchStart:A,legacyBehavior:L=!1,onNavigate:x,ref:M,unstable_dynamicOnHover:U,...R}=e;t=v,L&&("string"==typeof t||"number"==typeof t)&&(t=(0,o.jsx)("a",{children:t}));let k=u.default.useContext(a.AppRouterContext),I=!1!==E,w=null===E?l.PrefetchKind.AUTO:l.PrefetchKind.FULL,{href:D,as:F}=u.default.useMemo(()=>{let e=y(P);return{href:e,as:_?y(_):e}},[P,_]);L&&(r=u.default.Children.only(t));let K=L?r&&"object"==typeof r&&r.ref:M,B=u.default.useCallback(e=>(null!==k&&(b.current=(0,p.mountLinkInstance)(e,D,k,w,I,g)),()=>{b.current&&((0,p.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,p.unmountPrefetchableInstance)(e)}),[I,D,k,w,g]),z={ref:(0,f.useMergedRef)(B,K),onClick(e){L||"function"!=typeof N||N(e),L&&r.props&&"function"==typeof r.props.onClick&&r.props.onClick(e),k&&(e.defaultPrevented||function(e,t,r,n,o,i,a){let{nodeName:l}=e.currentTarget;if(!("A"===l.toUpperCase()&&function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,d.isLocalURL)(t)){o&&(e.preventDefault(),location.replace(t));return}e.preventDefault(),u.default.startTransition(()=>{if(a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}(0,h.dispatchNavigateAction)(r||t,o?"replace":"push",null==i||i,n.current)})}}(e,D,F,b,j,C,x))},onMouseEnter(e){L||"function"!=typeof S||S(e),L&&r.props&&"function"==typeof r.props.onMouseEnter&&r.props.onMouseEnter(e),k&&I&&(0,p.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){L||"function"!=typeof A||A(e),L&&r.props&&"function"==typeof r.props.onTouchStart&&r.props.onTouchStart(e),k&&I&&(0,p.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,c.isAbsoluteUrl)(F)?z.href=F:L&&!O&&("a"!==r.type||"href"in r.props)||(z.href=(0,s.addBasePath)(F)),n=L?u.default.cloneElement(r,z):(0,o.jsx)("a",{...R,...z,children:t}),(0,o.jsx)(m.Provider,{value:i,children:n})}r(3180);let m=(0,u.createContext)(p.IDLE_LINK_STATUS),b=()=>(0,u.useContext)(m);("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)},8859:(e,t)=>{function r(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,o]of Object.entries(e))if(Array.isArray(o))for(let e of o)t.append(r,n(e));else t.set(r,n(o));return t}function u(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];for(let t of r){for(let r of t.keys())e.delete(r);for(let[r,n]of t.entries())e.append(r,n)}return e}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{assign:function(){return u},searchParamsToUrlQuery:function(){return r},urlQueryToSearchParams:function(){return o}})},9991:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return m},NormalizeError:function(){return y},PageNotFoundError:function(){return g},SP:function(){return p},ST:function(){return d},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return l},getLocationOrigin:function(){return i},getURL:function(){return a},isAbsoluteUrl:function(){return u},isResSent:function(){return f},loadGetInitialProps:function(){return s},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return P}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),u=0;u<n;u++)o[u]=arguments[u];return r||(r=!0,t=e(...o)),t}}let o=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,u=e=>o.test(e);function i(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function a(){let{href:e}=window.location,t=i();return e.substring(t.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function s(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await s(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error('"'+l(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let p="undefined"!=typeof performance,d=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class y extends Error{}class g extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class m extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function P(e){return JSON.stringify({message:e.message,stack:e.stack})}}}]);
_next/static/chunks/881-47c588f365fe1541.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/app/_not-found/page-8a72a3278bab3d87.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{3632:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let l=r(5155),n=r(6395);function o(){return(0,l.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})}("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)},3868:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return r(3632)}])},6395:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}}),r(8229);let l=r(5155);r(2115);let n={error:{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"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};function o(e){let{status:t,message:r}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("title",{children:t+": "+r}),(0,l.jsx)("div",{style:n.error,children:(0,l.jsxs)("div",{children:[(0,l.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,l.jsx)("h1",{className:"next-error-h1",style:n.h1,children:t}),(0,l.jsx)("div",{style:n.desc,children:(0,l.jsx)("h2",{style:n.h2,children: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)}},e=>{var t=t=>e(e.s=t);e.O(0,[441,684,358],()=>t(3868)),_N_E=e.O()}]);
_next/static/chunks/app/layout-557283093bad1bf7.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{2374:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{cancelIdleCallback:function(){return n},requestIdleCallback:function(){return r}});let r="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},n="undefined"!=typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(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)},2714:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"setAttributesFromProps",{enumerable:!0,get:function(){return o}});let r={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv",noModule:"noModule"},n=["onLoad","onReady","dangerouslySetInnerHTML","children","onError","strategy","stylesheets"];function a(e){return["async","defer","noModule"].includes(e)}function o(e,t){for(let[o,s]of Object.entries(t)){if(!t.hasOwnProperty(o)||n.includes(o)||void 0===s)continue;let i=r[o]||o.toLowerCase();"SCRIPT"===e.tagName&&a(i)?e[i]=!!s:e.setAttribute(i,String(s)),(!1===s||"SCRIPT"===e.tagName&&a(i)&&(!s||"false"===s))&&(e.setAttribute(i,""),e.removeAttribute(i))}}("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)},5299:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_e8ce0c"}},7514:(e,t,r)=>{"use strict";r.d(t,{default:()=>d});var n=r(5155),a=r(9243),o=r.n(a),s=r(6874),i=r.n(s);let l=window.navigator.userAgent,c=l.includes("Chrome")&&!l.includes("Chromium");function d(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("header",{className:"text-white w-full p-5 sm:px-10 flex justify-between items-center fixed top-0 left-0 right-0 z-50",children:[(0,n.jsxs)(i(),{href:"/",children:[(0,n.jsx)("div",{className:"text-2xl font-bold e",children:"Dora-BamBot"}),(0,n.jsx)("div",{className:"text-xl e text-red-500",children:c?"":"This browser is not supported! Please use Chrome."})]}),(0,n.jsx)("div",{className:"text-2xl e",children:(0,n.jsx)("a",{href:"https://shop.wowrobo.com/products/so-arm101-diy-kit-assembled-version-1?sca_ref=8999006.W1G76EYstQkFoP",children:(0,n.jsxs)(i(),{href:"https://shop.wowrobo.com/products/so-arm101-diy-kit-assembled-version-1?sca_ref=8999006.W1G76EYstQkFoP",children:["Buy assembled SO101 with 5% Discount on WowRobo with the code:"," ",(0,n.jsx)("span",{className:"text-red-500",children:" 1ms.ai"})]})})}),(0,n.jsx)("a",{className:"github-button",href:"https://github.com/dora-bambot/dora-bambot.github.io","data-size":"large","data-show-count":"true","aria-label":"Star timqian/bambot on GitHub",children:"Star"})]}),(0,n.jsx)(o(),{async:!0,defer:!0,src:"https://buttons.github.io/buttons.js"})]})}},9243:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return y},handleClientScriptLoad:function(){return h},initScriptLoader:function(){return m}});let n=r(8229),a=r(6966),o=r(5155),s=n._(r(7650)),i=a._(r(2115)),l=r(2830),c=r(2714),d=r(2374),u=new Map,f=new Set,p=e=>{if(s.default.preinit)return void 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)})}},b=e=>{let{src:t,id:r,onLoad:n=()=>{},onReady:a=null,dangerouslySetInnerHTML:o,children:s="",strategy:i="afterInteractive",onError:l,stylesheets:d}=e,b=r||t;if(b&&f.has(b))return;if(u.has(t)){f.add(b),u.get(t).then(n,l);return}let h=()=>{a&&a(),f.add(b)},m=document.createElement("script"),v=new Promise((e,t)=>{m.addEventListener("load",function(t){e(),n&&n.call(this,t),h()}),m.addEventListener("error",function(e){t(e)})}).catch(function(e){l&&l(e)});o?(m.innerHTML=o.__html||"",h()):s?(m.textContent="string"==typeof s?s:Array.isArray(s)?s.join(""):"",h()):t&&(m.src=t,u.set(t,v)),(0,c.setAttributesFromProps)(m,e),"worker"===i&&m.setAttribute("type","text/partytown"),m.setAttribute("data-nscript",i),d&&p(d),document.body.appendChild(m)};function h(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,d.requestIdleCallback)(()=>b(e))}):b(e)}function m(e){e.forEach(h),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");f.add(t)})}function v(e){let{id:t,src:r="",onLoad:n=()=>{},onReady:a=null,strategy:c="afterInteractive",onError:u,stylesheets:p,...h}=e,{updateScripts:m,scripts:v,getIsSsr:y,appDir:w,nonce:g}=(0,i.useContext)(l.HeadManagerContext),_=(0,i.useRef)(!1);(0,i.useEffect)(()=>{let e=t||r;_.current||(a&&e&&f.has(e)&&a(),_.current=!0)},[a,t,r]);let x=(0,i.useRef)(!1);if((0,i.useEffect)(()=>{if(!x.current){if("afterInteractive"===c)b(e);else"lazyOnload"===c&&("complete"===document.readyState?(0,d.requestIdleCallback)(()=>b(e)):window.addEventListener("load",()=>{(0,d.requestIdleCallback)(()=>b(e))}));x.current=!0}},[e,c]),("beforeInteractive"===c||"worker"===c)&&(m?(v[c]=(v[c]||[]).concat([{id:t,src:r,onLoad:n,onReady:a,onError:u,...h}]),m(v)):y&&y()?f.add(t||r):y&&!y()&&b(e)),w){if(p&&p.forEach(e=>{s.default.preinit(e,{as:"style"})}),"beforeInteractive"===c)if(!r)return h.dangerouslySetInnerHTML&&(h.children=h.dangerouslySetInnerHTML.__html,delete h.dangerouslySetInnerHTML),(0,o.jsx)("script",{nonce:g,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([0,{...h,id:t}])+")"}});else return s.default.preload(r,h.integrity?{as:"script",integrity:h.integrity,nonce:g,crossOrigin:h.crossOrigin}:{as:"script",nonce:g,crossOrigin:h.crossOrigin}),(0,o.jsx)("script",{nonce:g,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([r,{...h,id:t}])+")"}});"afterInteractive"===c&&r&&s.default.preload(r,h.integrity?{as:"script",integrity:h.integrity,nonce:g,crossOrigin:h.crossOrigin}:{as:"script",nonce:g,crossOrigin:h.crossOrigin})}return null}Object.defineProperty(v,"__nextScript",{value:!0});let y=v;("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)},9324:()=>{},9742:(e,t,r)=>{"use strict";r.d(t,{Analytics:()=>b});var n=r(2115),a=r(8999),o=r(9509),s=()=>{window.va||(window.va=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];(window.vaq=window.vaq||[]).push(t)})};function i(){return"undefined"!=typeof window}function l(){return"production"}function c(){return"development"===((i()?window.vam:l())||"production")}function d(e){return new RegExp("/".concat(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"(?=[/?#]|$)"))}function u(e){return(0,n.useEffect)(()=>{var t;e.beforeSend&&(null==(t=window.va)||t.call(window,"beforeSend",e.beforeSend))},[e.beforeSend]),(0,n.useEffect)(()=>{var t;!function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{debug:!0};if(!i())return;!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"auto";if("auto"===e){window.vam=l();return}window.vam=e}(t.mode),s(),t.beforeSend&&(null==(e=window.va)||e.call(window,"beforeSend",t.beforeSend));let r=t.scriptSrc?t.scriptSrc:c()?"https://va.vercel-scripts.com/v1/script.debug.js":t.basePath?"".concat(t.basePath,"/insights/script.js"):"/_vercel/insights/script.js";if(document.head.querySelector('script[src*="'.concat(r,'"]')))return;let n=document.createElement("script");n.src=r,n.defer=!0,n.dataset.sdkn="@vercel/analytics"+(t.framework?"/".concat(t.framework):""),n.dataset.sdkv="1.5.0",t.disableAutoTrack&&(n.dataset.disableAutoTrack="1"),t.endpoint?n.dataset.endpoint=t.endpoint:t.basePath&&(n.dataset.endpoint="".concat(t.basePath,"/insights")),t.dsn&&(n.dataset.dsn=t.dsn),n.onerror=()=>{let e=c()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log("[Vercel Web Analytics] Failed to load script from ".concat(r,". ").concat(e))},c()&&!1===t.debug&&(n.dataset.debug="false"),document.head.appendChild(n)}({framework:e.framework||"react",basePath:null!=(t=e.basePath)?t:function(){if(void 0!==o&&void 0!==o.env)return o.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}(),...void 0!==e.route&&{disableAutoTrack:!0},...e})},[]),(0,n.useEffect)(()=>{e.route&&e.path&&function(e){var t;let{route:r,path:n}=e;null==(t=window.va)||t.call(window,"pageview",{route:r,path:n})}({route:e.route,path:e.path})},[e.route,e.path]),null}var f=()=>{let e=(0,a.useParams)(),t=(0,a.useSearchParams)(),r=(0,a.usePathname)();return e?{route:function(e,t){if(!e||!t)return e;let r=e;try{let e=Object.entries(t);for(let[t,n]of e)if(!Array.isArray(n)){let e=d(n);e.test(r)&&(r=r.replace(e,"/[".concat(t,"]")))}for(let[t,n]of e)if(Array.isArray(n)){let e=d(n.join("/"));e.test(r)&&(r=r.replace(e,"/[...".concat(t,"]")))}return r}catch(t){return e}}(r,Object.keys(e).length?e:Object.fromEntries(t.entries())),path:r}:{route:null,path:r}};function p(e){let{route:t,path:r}=f();return n.createElement(u,{path:r,route:t,...e,basePath:function(){if(void 0!==o&&void 0!==o.env)return o.env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_BASEPATH}(),framework:"next"})}function b(e){return n.createElement(n.Suspense,{fallback:null},n.createElement(p,{...e}))}},9831:(e,t,r)=>{Promise.resolve().then(r.bind(r,7514)),Promise.resolve().then(r.bind(r,9742)),Promise.resolve().then(r.t.bind(r,5299,23)),Promise.resolve().then(r.t.bind(r,9324,23))}},e=>{var t=t=>e(e.s=t);e.O(0,[618,874,441,684,358],()=>t(9831)),_N_E=e.O()}]);
_next/static/chunks/app/page-d26a24c6810d0a4b.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{2609:(e,t,o)=>{Promise.resolve().then(o.bind(o,9806))},9806:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>G});var r=o(5155),n=o(2115);let a={"so-arm101":{urdfUrl:"/URDF/so101.urdf",camera:{position:[-20,10,-15],fov:20},orbitTarget:[0,1,0],keyboardControlMap:{1:["1","q"],2:["2","w"],3:["3","e"],4:["4","r"],5:["5","t"],6:["6","y"]},jointNameIdMap:{1:1,2:2,3:3,4:4,5:5,6:6},compoundMovements:[{name:"Jaw down & up",keys:["8","i"],primaryJoint:2,primaryFormula:"primary < 0 ? 1 : -1",dependents:[{joint:3,formula:"primary < 0 ? -1.9 * deltaPrimary : 0.4 * deltaPrimary"},{joint:4,formula:"primary < 0 ? (primary < 10 ? 0 : 0.51 * deltaPrimary) : -0.4 * deltaPrimary"}]},{name:"Jaw backward & forward",keys:["o","u"],primaryJoint:2,primaryFormula:"1",dependents:[{joint:3,formula:"-0.9* deltaPrimary"}]}],systemPrompt:'You can help control the so-arm100 robot by pressing keyboard keys. Use the keyPress tool to simulate key presses. Each key will be held down for 1 second by default. If the user describes roughly wanting to make it longer or shorter, adjust the duration accordingly.\n The robot can be controlled with the following keys:\n - "q" and "1" for rotate the bot to left and right\n - "i" and "8" for moving the bot/jaw down("i") and up("8")\n - "u" and "o" for moving the bot/jaw backward("u") and forward("o")\n - "6" to open the jaw and "y" to close the jaw\n - "t" and "5" for rotating jaw\n '},"so-arm100":{urdfUrl:"/URDF/so_arm100.urdf",camera:{position:[-20,10,-15],fov:20},orbitTarget:[0,1,0],keyboardControlMap:{1:["1","q"],2:["2","w"],3:["3","e"],4:["4","r"],5:["5","t"],6:["6","y"]},jointNameIdMap:{Rotation:1,Pitch:2,Elbow:3,Wrist_Pitch:4,Wrist_Roll:5,Jaw:6},compoundMovements:[{name:"Jaw down & up",keys:["8","i"],primaryJoint:2,primaryFormula:"primary < 100 ? 1 : -1",dependents:[{joint:3,formula:"primary < 100 ? -1.9 * deltaPrimary : 0.4 * deltaPrimary"},{joint:4,formula:"primary < 100 ? (primary < 10 ? 0 : 0.51 * deltaPrimary) : -0.4 * deltaPrimary"}]},{name:"Jaw backward & forward",keys:["o","u"],primaryJoint:2,primaryFormula:"1",dependents:[{joint:3,formula:"-0.9* deltaPrimary"}]}],systemPrompt:'You can help control the so-arm100 robot by pressing keyboard keys. Use the keyPress tool to simulate key presses. Each key will be held down for 1 second by default. If the user describes roughly wanting to make it longer or shorter, adjust the duration accordingly.\n The robot can be controlled with the following keys:\n - "q" and "1" for rotate the bot to left and right\n - "i" and "8" for moving the bot/jaw down("i") and up("8")\n - "u" and "o" for moving the bot/jaw backward("u") and forward("o")\n - "6" to open the jaw and "y" to close the jaw\n - "t" and "5" for rotating jaw\n '},"bambot-v0":{urdfUrl:"/URDF/bambot_v0.urdf",camera:{position:[-30,25,28],fov:25},orbitTarget:[0,2,0],keyboardControlMap:{1:["1","q"],2:["2","w"],3:["3","e"],4:["4","r"],5:["5","t"],6:["6","y"],7:["a","z"],8:["s","x"],9:["d","c"],10:["f","v"],11:["g","b"],12:["h","n"]},jointNameIdMap:{R_Rotation:1,R_Pitch:2,R_Elbow:3,R_Wrist_Pitch:4,R_Wrist_Roll:5,R_Jaw:6,L_Rotation:7,L_Pitch:8,L_Elbow:9,L_Wrist_Pitch:10,L_Wrist_Roll:11,L_Jaw:12,left_wheel:13,back_wheel:14,right_wheel:15},systemPrompt:"You can help control the bambot-v0 robot by pressing keyboard keys. Use the keyPress tool to simulate key presses. Each key will be held down for 1 second by default. If the user describes roughly wanting to make it longer or shorter, adjust the duration accordingly.\n "},"bambot-v0-base":{urdfUrl:"/URDF/bambot_v0_base.urdf",camera:{position:[-30,25,28],fov:25},orbitTarget:[0,2,0],jointNameIdMap:{left_wheel:13,back_wheel:14,right_wheel:15},systemPrompt:'You can help control the bambot-v0-base robot by pressing keyboard keys. Use the keyPress tool to simulate key presses. Each key will be held down for 1 second by default. The robot can be controlled with the following keys: "left_wheel", "back_wheel", "right_wheel" for base movement.'},sts3215:{urdfUrl:"/URDF/sts3215.urdf",camera:{position:[10,10,10],fov:12},orbitTarget:[.5,1,0],keyboardControlMap:{1:["1","q"]},jointNameIdMap:{Rotation:1},systemPrompt:'You can help control the sts3215 robot by pressing keyboard keys. Use the keyPress tool to simulate key presses. Each key will be held down for 1 second by default. The robot can be controlled with the following keys: "1" and "q" for rotation.'}};var s=o(3264),l=o(3967),i=o(4031),d=o(4688),c=o(6166),u=o(9957);function m(){let e=document.createElement("canvas");e.width=e.height=200;let t=e.getContext("2d");t&&(t.fillStyle="#aaa",t.fillRect(0,0,200,200),t.strokeStyle="#707070",t.lineWidth=8,t.beginPath(),t.moveTo(0,0),t.lineTo(0,200),t.lineTo(200,200),t.lineTo(200,0),t.closePath(),t.stroke());let o=new s.GOR(e);return o.wrapS=o.wrapT=s.GJx,o.repeat.set(100,100),o}function h(){let e=(0,n.useMemo)(m,[]);return(0,r.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],receiveShadow:!0,children:[(0,r.jsx)("planeGeometry",{args:[30,30]}),(0,r.jsx)("meshPhysicalMaterial",{color:8421504,metalness:.7,roughness:.3,reflectivity:.1,clearcoat:.3,side:s.$EB,transparent:!0,opacity:.7,map:e})]})}var p=o(9137),f=o.n(p);function x(e){return 180*e/Math.PI}function b(e){return Math.min(Math.max(Math.round(4096*e/360+2048),0),4095)}let g=e=>void 0!==e?"".concat(e>0?"+":"").concat(e.toFixed(1),"\xb0"):"/",y=e=>"error"===e?(0,r.jsx)("span",{className:"text-red-500",children:"Error"}):"N/A"===e?"/":"".concat(null==e?void 0:e.toFixed(1),"\xb0");function v(e){let{joints:t,updateJointDegrees:o,updateJointsDegrees:a,keyboardControlMap:s,compoundMovements:l}=e,[i,d]=(0,n.useState)(new Set),c=(0,n.useRef)(t),u=(0,n.useRef)(a),m=(0,n.useRef)(s);(0,n.useEffect)(()=>{c.current=t},[t]),(0,n.useEffect)(()=>{u.current=a},[a]),(0,n.useEffect)(()=>{m.current=s},[s]),(0,n.useEffect)(()=>{let e=e=>{Object.values(m.current||{}).flat().includes(e.key),d(t=>new Set(t).add(e.key))},t=e=>{d(t=>{let o=new Set(t);return o.delete(e.key),o})};return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),(0,n.useEffect)(()=>{let e=null;return i.size>0&&(e=setInterval(()=>{let e=c.current,t=m.current||{},o=l||[],r=e.map(e=>{var o,r,n,a,s,l;let d=null==(o=t[e.servoId])?void 0:o[1],c=null==(r=t[e.servoId])?void 0:r[0],u=e.virtualDegrees||0,m=u;return d&&i.has(d)&&(m-=.15),c&&i.has(c)&&(m+=.15),(m=Math.max(Math.round(x(null!=(s=null==(n=e.limit)?void 0:n.lower)?s:-1/0)),Math.min(Math.round(x(null!=(l=null==(a=e.limit)?void 0:a.upper)?l:1/0)),m)))!==u?{servoId:e.servoId,value:m}:null}).filter(e=>null!==e);o.forEach(t=>{var o,n,a,s,l;let d=t.keys.findIndex(e=>i.has(e));if(-1===d)return;let c=e.find(e=>e.servoId===t.primaryJoint);if(!c)return;let u=c.virtualDegrees||0,m=null==(o=t.dependents[0])?void 0:o.joint,h=e.find(e=>e.servoId===m),p=(null==h?void 0:h.virtualDegrees)||0,f=1;if(t.primaryFormula)try{f=Math.sign(Function("primary","dependent","delta","return ".concat(t.primaryFormula))(u,p,.15))||1}catch(e){f=1}else f=0===d?1:-1;let b=.15*f*(0===d?1:-1),g=u+b;g=Math.max(Math.round(x(null!=(s=null==(n=c.limit)?void 0:n.lower)?s:-1/0)),Math.min(Math.round(x(null!=(l=null==(a=c.limit)?void 0:a.upper)?l:1/0)),g));let y=new Map;r.forEach(e=>y.set(e.servoId,e.value)),y.set(c.servoId,g),t.dependents.forEach(t=>{var o,r,n,a;let s=e.find(e=>e.servoId===t.joint);if(!s)return;let l=s.virtualDegrees||0,i=0;try{i=Function("primary","dependent","deltaPrimary","return ".concat(t.formula))(u,l,b)}catch(e){i=0}Number.isFinite(i)||(i=0);let d=l+i;d=Math.max(Math.round(x(null!=(n=null==(o=s.limit)?void 0:o.lower)?n:-1/0)),Math.min(Math.round(x(null!=(a=null==(r=s.limit)?void 0:r.upper)?a:1/0)),d)),y.set(s.servoId,d)}),r=Array.from(y.entries()).map(e=>{let[t,o]=e;return{servoId:t,value:o}})}),r.length>0&&u.current(r)},3)),()=>{e&&clearInterval(e)}},[i]);let h=e=>{e&&d(t=>new Set(t).add(e))},p=e=>{e&&d(t=>{let o=new Set(t);return o.delete(e),o})};return(0,r.jsxs)("div",{className:"jsx-f06e54ddce90f5cd mt-4",children:[(0,r.jsxs)("table",{className:"jsx-f06e54ddce90f5cd table-auto w-full text-left text-sm",children:[(0,r.jsx)("thead",{className:"jsx-f06e54ddce90f5cd",children:(0,r.jsxs)("tr",{className:"jsx-f06e54ddce90f5cd",children:[(0,r.jsx)("th",{className:"jsx-f06e54ddce90f5cd border-b border-gray-600 pb-1 pr-2",children:"Joint"}),(0,r.jsx)("th",{className:"jsx-f06e54ddce90f5cd border-b border-gray-600 pb-1 text-center pl-2",children:"Angle"}),(0,r.jsx)("th",{className:"jsx-f06e54ddce90f5cd border-b border-gray-600 pb-1 text-center pl-2",children:"Real Angle"}),(0,r.jsx)("th",{className:"jsx-f06e54ddce90f5cd border-b border-gray-600 pb-1 text-center px-2",children:"Control"})]})}),(0,r.jsx)("tbody",{className:"jsx-f06e54ddce90f5cd",children:t.map(e=>{var t,n,a,l,d,c;let u=null==(t=s[e.servoId])?void 0:t[1],m=null==(n=s[e.servoId])?void 0:n[0],f=u&&i.has(u),b=m&&i.has(m);return(0,r.jsxs)("tr",{className:"jsx-f06e54ddce90f5cd",children:[(0,r.jsx)("td",{className:"jsx-f06e54ddce90f5cd ",children:e.name}),(0,r.jsx)("td",{className:"jsx-f06e54ddce90f5cd pr-2 text-center w-16",children:g(e.virtualDegrees)}),(0,r.jsx)("td",{className:"jsx-f06e54ddce90f5cd pl-2 text-center w-16",children:y(e.realDegrees)}),(0,r.jsxs)("td",{className:"jsx-f06e54ddce90f5cd py-1 px-4 flex items-center",children:[(0,r.jsx)("button",{onMouseDown:()=>h(u),onMouseUp:()=>p(u),onMouseLeave:()=>p(u),onTouchStart:()=>h(u),onTouchEnd:()=>p(u),style:{clipPath:"polygon(0 50%, 30% 0, 100% 0, 100% 100%, 30% 100%)"},className:"jsx-f06e54ddce90f5cd "+"".concat(f?"bg-blue-600":"bg-gray-700 hover:bg-gray-600"," text-white text-xs font-bold w-5 h-5 text-right pr-1 uppercase select-none"),children:u||"-"}),(0,r.jsx)("input",{type:"range",min:Math.round(x(null!=(d=null==(a=e.limit)?void 0:a.lower)?d:-Math.PI)),max:Math.round(x(null!=(c=null==(l=e.limit)?void 0:l.upper)?c:Math.PI)),step:"0.1",value:e.virtualDegrees||0,onChange:t=>{let r=parseFloat(t.target.value);o(e.servoId,r)},className:"jsx-f06e54ddce90f5cd h-2 bg-gray-700 appearance-none cursor-pointer w-14 custom-range-thumb"}),(0,r.jsx)("button",{onMouseDown:()=>h(m),onMouseUp:()=>p(m),onMouseLeave:()=>p(m),onTouchStart:()=>h(m),onTouchEnd:()=>p(m),style:{clipPath:"polygon(100% 50%, 70% 0, 0 0, 0 100%, 70% 100%)"},className:"jsx-f06e54ddce90f5cd "+"".concat(b?"bg-blue-600":"bg-gray-700 hover:bg-gray-600"," text-white text-xs font-semibold w-5 h-5 text-left pl-1 uppercase select-none"),children:m||"+"})]})]},e.servoId)})})]}),l&&l.length>0&&(0,r.jsxs)("div",{className:"jsx-f06e54ddce90f5cd mt-4",children:[(0,r.jsx)("div",{className:"jsx-f06e54ddce90f5cd font-bold mb-2",children:"Compound Movements"}),(0,r.jsx)("table",{className:"jsx-f06e54ddce90f5cd table-auto w-full text-left text-sm",children:(0,r.jsx)("tbody",{className:"jsx-f06e54ddce90f5cd",children:l.map((e,t)=>{let o=e.keys[1],n=e.keys[0],a=o&&i.has(o),s=n&&i.has(n);return(0,r.jsxs)("tr",{className:"jsx-f06e54ddce90f5cd",children:[(0,r.jsx)("td",{className:"jsx-f06e54ddce90f5cd font-semibold pr-2 align-top",children:e.name}),(0,r.jsx)("td",{className:"jsx-f06e54ddce90f5cd",children:e.keys&&e.keys.length>0&&(0,r.jsxs)("span",{className:"jsx-f06e54ddce90f5cd space-x-1 flex flex-row",children:[(0,r.jsx)("button",{onMouseDown:()=>h(o),onMouseUp:()=>p(o),onMouseLeave:()=>p(o),onTouchStart:()=>h(o),onTouchEnd:()=>p(o),style:{clipPath:"polygon(0 50%, 30% 0, 100% 0, 100% 100%, 30% 100%)",minWidth:"1.8em",minHeight:"1.8em",fontWeight:600,boxShadow:"0 1px 2px 0 rgba(0,0,0,0.04)"},tabIndex:-1,className:"jsx-f06e54ddce90f5cd "+"".concat(a?"bg-blue-600":"bg-gray-700 hover:bg-gray-600"," text-white text-xs font-bold w-5 h-5 text-right pr-1 uppercase select-none"),children:o||"-"}),(0,r.jsx)("button",{onMouseDown:()=>h(n),onMouseUp:()=>p(n),onMouseLeave:()=>p(n),onTouchStart:()=>h(n),onTouchEnd:()=>p(n),style:{clipPath:"polygon(100% 50%, 70% 0, 0 0, 0 100%, 70% 100%)",minWidth:"1.8em",minHeight:"1.8em",fontWeight:600,boxShadow:"0 1px 2px 0 rgba(0,0,0,0.04)"},tabIndex:-1,className:"jsx-f06e54ddce90f5cd "+"".concat(s?"bg-blue-600":"bg-gray-700 hover:bg-gray-600"," text-white text-xs font-semibold w-5 h-5 text-left pl-1 uppercase select-none"),children:n||"+"})]})})]},t)})})})]}),(0,r.jsx)(f(),{id:"f06e54ddce90f5cd",children:'.custom-range-thumb::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;width:8px;height:8px;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background:#fff;cursor:pointer}.custom-range-thumb::-moz-range-thumb{width:8px;height:8px;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background:#fff;cursor:pointer}.custom-range-thumb::-ms-thumb{width:8px;height:8px;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background:#fff;cursor:pointer}.custom-range-thumb{overflow:hidden}input[type="range"].custom-range-thumb{outline:none}'})]})}let w={up:"↑",down:"↓",left:"←",right:"→"},j=e=>{let{direction:t,onMouseDown:o,onMouseUp:n,isActive:a}=e;return(0,r.jsx)("button",{className:"text-gray-200 px-2 py-1 rounded font-bold select-none ".concat(a?"bg-blue-500":"bg-gray-700 hover:bg-gray-500"),onMouseDown:o,onMouseUp:n,onTouchStart:e=>{e.preventDefault(),o()},onTouchEnd:e=>{e.preventDefault(),n()},style:{WebkitUserSelect:"none",userSelect:"none"},children:w[t]})},k=e=>void 0!==e?e.toFixed(0):"/",N=e=>"error"===e?(0,r.jsx)("span",{className:"text-red-500",children:"Error"}):"N/A"===e?"/":"".concat(null==e?void 0:e.toFixed(0));function I(e){let{joints:t,updateJointSpeed:o,updateJointsSpeed:a}=e,[s,l]=(0,n.useState)(null),i=e=>{switch(e.key){case"ArrowUp":l("forward"),a([{servoId:t[0].servoId,speed:-1e3},{servoId:t[2].servoId,speed:1e3}]);break;case"ArrowDown":l("backward"),a([{servoId:t[0].servoId,speed:1e3},{servoId:t[2].servoId,speed:-1e3}]);break;case"ArrowLeft":l("left"),a(t.map(e=>({servoId:e.servoId,speed:1e3})));break;case"ArrowRight":l("right"),a(t.map(e=>({servoId:e.servoId,speed:-1e3})))}},d=()=>{l(null),a(t.map(e=>({servoId:e.servoId,speed:0})))};return(0,n.useEffect)(()=>(window.addEventListener("keydown",i),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",i),window.removeEventListener("keyup",d)}),[t,1e3]),(0,r.jsxs)("div",{className:"mt-4 flex relative",children:[(0,r.jsx)("div",{className:"flex-1",children:(0,r.jsxs)("table",{className:"table-auto w-full text-left text-sm",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"border-b border-gray-600 pb-1 pr-2",children:"Wheel"}),(0,r.jsx)("th",{className:"border-b border-gray-600 pb-1 text-center px-2",children:"Speed"}),(0,r.jsx)("th",{className:"border-b border-gray-600 pb-1 text-center px-2",children:"Real Speed"}),(0,r.jsx)("th",{className:"px-8 border-b border-gray-600",children:"Control"})]})}),(0,r.jsx)("tbody",{children:t.map(e=>(0,r.jsxs)("tr",{children:[(0,r.jsx)("td",{className:"py-1",children:e.name}),(0,r.jsx)("td",{className:"py-1 pr-2 text-center",children:k(e.virtualSpeed)}),(0,r.jsx)("td",{className:"py-1 pl-2 text-center",children:N(e.realSpeed)})]},e.servoId))})]})}),(0,r.jsx)("div",{className:"absolute right-3 top-10",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-1",children:[(0,r.jsx)(j,{direction:"up",onMouseDown:()=>i({key:"ArrowUp"}),onMouseUp:d,isActive:"forward"===s}),(0,r.jsxs)("div",{className:"flex gap-1",children:[(0,r.jsx)(j,{direction:"left",onMouseDown:()=>i({key:"ArrowLeft"}),onMouseUp:d,isActive:"left"===s}),(0,r.jsx)(j,{direction:"down",onMouseDown:()=>i({key:"ArrowDown"}),onMouseUp:d,isActive:"backward"===s}),(0,r.jsx)(j,{direction:"right",onMouseDown:()=>i({key:"ArrowRight"}),onMouseUp:d,isActive:"right"===s})]})]})})]})}var S=o(6874),M=o.n(S);function C(e){let{jointStates:t,updateJointDegrees:o,updateJointsDegrees:a,updateJointSpeed:s,updateJointsSpeed:l,isConnected:i,connectRobot:d,disconnectRobot:c,keyboardControlMap:u,compoundMovements:m}=e,[h,p]=(0,n.useState)(!1),[f,x]=(0,n.useState)("idle"),b=async()=>{x("connecting");try{await d(),x("idle")}catch(e){x("failed")}},g=async()=>{x("disconnecting");try{await c()}finally{x("idle")}},y=t.filter(e=>"revolute"===e.jointType),w=t.filter(e=>"continuous"===e.jointType);return h?(0,r.jsx)("div",{className:"absolute bottom-5 left-5 z-50",children:(0,r.jsx)("button",{onClick:()=>p(!1),className:"bg-gray-700 hover:bg-gray-600 text-white text-sm px-3 py-1.5 rounded",children:"Show Controls"})}):(0,r.jsxs)("div",{className:"absolute bottom-5 left-5 bg-zinc-900 bg-opacity-80 text-white p-4 rounded-lg max-h-[90vh] overflow-y-auto z-50 text-sm",children:[(0,r.jsxs)("h3",{className:"mt-0 mb-4 border-b border-zinc-600 pb-1 font-bold text-base flex justify-between items-center",children:[(0,r.jsx)("span",{children:"Joint Controls"}),(0,r.jsx)("button",{onClick:()=>p(!0),className:"ml-2 text-xl hover:bg-zinc-800 px-2 rounded-full",title:"Collapse",children:"\xd7"})]}),y.length>0&&(0,r.jsx)(v,{joints:y,updateJointDegrees:o,updateJointsDegrees:a,keyboardControlMap:u,compoundMovements:m}),w.length>0&&(0,r.jsx)(I,{joints:w,updateJointSpeed:s,updateJointsSpeed:l}),(0,r.jsx)("div",{className:"mt-4 flex justify-between items-center",children:(0,r.jsx)("button",{onClick:i?g:b,disabled:"idle"!==f&&"failed"!==f,className:"text-sm px-3 py-1.5 rounded w-full ".concat("failed"===f?"bg-orange-600 hover:bg-orange-500":i?"bg-red-600 hover:bg-red-500":"bg-blue-600 hover:bg-blue-500",' "text-white" ').concat("idle"!==f&&"failed"!==f?"opacity-50 cursor-not-allowed":""),children:"failed"===f?"Failed. Check serial port permissions. On linux, fix it with: sudo chmod 776 /dev/ttyACM0":"connecting"===f?"Connecting...":"disconnecting"===f?"Disconnecting...":i?"Disconnect Robot":"Connect Real Robot"})}),(0,r.jsx)("br",{}),(0,r.jsx)(M(),{className:"text-blue",href:"https://github.com/dora-bambot/dora-bambot.github.io/tree/main/website/public/URDF",children:"Click me to get the URDF"})]})}var D=o(6629),E=o(7558),P=o(3736),T=o(2480);let A="api_key",R="base_url",_="model";function U(){return window.localStorage.getItem(A)||""}function z(){return window.localStorage.getItem(R)||""}function F(e){return e?"system_prompt_".concat(e):"system_prompt"}function L(e){return window.localStorage.getItem(F(e))||""}function O(e,t){window.localStorage.setItem(F(t),e)}function J(){return localStorage.getItem(_)||""}function W(e){let{show:t,onClose:o,robotName:a,systemPrompt:s}=e,l=(0,n.useRef)(null),[i,d]=(0,n.useState)(""),[c,u]=(0,n.useState)(""),[m,h]=(0,n.useState)(""),[p,f]=(0,n.useState)(""),[x,b]=(0,n.useState)("OpenAI"),[g,y]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(t){let e=z();d(U()),"https://api.openai.com/v1/"===e||""===e||null==e?(b("OpenAI"),u("https://api.openai.com/v1/"),f(J()||"gpt-4.1-nano")):"http://localhost:11434/v1"===e?(b("Ollama"),u("http://localhost:11434/v1"),f(J()||"mistral-small3.1")):(b("Custom"),u(e),f(J())),h(L(a)||s||"");let t=L(a)||"",o=s||"";y(""!==t&&t!==o&&!!o)}},[t,a,s]);let v=e=>{b(e),"OpenAI"===e?u("https://api.openai.com/v1/"):"Ollama"===e?u("http://localhost:11434/v1"):u(z()||"")};return((0,n.useEffect)(()=>{if(t)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){l.current&&!l.current.contains(e.target)&&o()}},[t,o]),t)?(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-40",children:(0,r.jsxs)("div",{ref:l,className:"bg-zinc-800 p-6 rounded-lg shadow-xl w-96 max-w-full lg:w-[500px] xl:w-[600px] mx-4",children:[(0,r.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-xl font-bold text-white",children:"LLM:"}),(0,r.jsxs)("select",{value:x,onChange:e=>v(e.target.value),className:"p-1 rounded bg-zinc-700 text-white outline-none text-base font-semibold ml-4",children:[(0,r.jsx)("option",{value:"OpenAI",children:"OpenAI"}),(0,r.jsx)("option",{value:"Ollama",children:"Ollama"}),(0,r.jsx)("option",{value:"Custom",children:"Custom"})]})]}),(0,r.jsxs)("div",{className:"mb-2 text-xs text-zinc-300 text-right",children:["OpenAI"===x&&(0,r.jsxs)(r.Fragment,{children:["Get your OpenAI API key at",(0,r.jsx)("a",{href:"https://platform.openai.com/api-keys",target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-300 ml-1",children:"https://platform.openai.com/api-keys"}),".",(0,r.jsx)("br",{}),"The API Key is stored only in your browser."]}),"Ollama"===x&&(0,r.jsxs)(r.Fragment,{children:["Local Ollama does not require an API Key.",(0,r.jsx)("br",{}),"Make sure Ollama service is running locally.",(0,r.jsx)("br",{}),"Download Ollama at https://ollama.com/download"]}),"Custom"===x&&(0,r.jsx)(r.Fragment,{children:"Any OpenAI compatible LLM can be used here."})]}),(0,r.jsxs)("div",{className:"flex items-center mb-4 ml-4",children:[(0,r.jsx)("label",{className:"text-white font-medium flex items-center mr-2 whitespace-nowrap",children:"API Key:"}),(0,r.jsx)("input",{type:"text",value:i,onChange:e=>d(e.target.value),placeholder:"Ollama"===x?"":"sk-...",className:"flex-1 p-2 rounded bg-zinc-700 text-white outline-none"})]}),(0,r.jsxs)("div",{className:"flex items-center mb-4 ml-4",children:[(0,r.jsx)("label",{className:"text-white font-medium mr-2 whitespace-nowrap",children:"Base URL:"}),(0,r.jsx)("input",{type:"text",value:c,onChange:e=>u(e.target.value),placeholder:"OpenAI"===x?"Not required":"Ollama"===x?"http://localhost:11434/v1":"http://your-custom-endpoint/v1",className:"flex-1 p-2 rounded bg-zinc-700 text-white outline-none"})]}),(0,r.jsxs)("div",{className:"flex items-center mb-4 ml-4",children:[(0,r.jsx)("label",{className:"text-white font-medium mr-2 whitespace-nowrap",children:"Model:"}),(0,r.jsx)("input",{type:"text",value:p,onChange:e=>f(e.target.value),placeholder:"Ollama"===x?"mistral-small3.1":"OpenAI"===x?"gpt-4.1-nano":"",className:"flex-1 p-2 rounded bg-zinc-700 text-white outline-none"})]}),(0,r.jsx)("hr",{className:"my-4 border-zinc-600"}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center",children:[(0,r.jsx)("span",{className:"block text-xl font-bold text-white",children:"System Prompt:"}),g&&(0,r.jsx)("button",{className:"ml-3 px-2 py-1 bg-red-600 text-white text-xs rounded hover:bg-red-700",onClick:()=>{window.confirm("Your prompt will be replaced with the default prompt. Please copy your current prompt if you want to save it.")&&(h(s||""),O(s||"",a),y(!1))},title:"Use default prompt",children:"Use default prompt"})]}),(0,r.jsx)("textarea",{value:m,onChange:e=>h(e.target.value),placeholder:"System prompt for the AI model",rows:6,className:"w-full p-2 rounded bg-zinc-700 text-white mb-4 outline-none min-h-[80px] text-base"})]}),(0,r.jsxs)("div",{className:"flex justify-end space-x-2",children:[(0,r.jsx)("button",{onClick:o,className:"bg-zinc-600 hover:bg-zinc-500 text-white px-4 py-2 rounded",children:"Close"}),(0,r.jsx)("button",{onClick:()=>{window.localStorage.setItem(A,i),window.localStorage.setItem(R,c),m!==(s||"")&&O(m,a),localStorage.setItem(_,p),o()},className:"bg-blue-600 hover:bg-blue-500 text-white px-4 py-2 rounded",children:"Save"})]})]})}):null}async function q(){return new Promise(async(e,t)=>{try{let o=await navigator.mediaDevices.getUserMedia({video:!0}),r=document.createElement("video");r.srcObject=o,r.play(),r.onloadedmetadata=()=>{let n=document.createElement("canvas");n.width=r.videoWidth,n.height=r.videoHeight;let a=n.getContext("2d");if(!a)return t("Could not get canvas context");a.drawImage(r,0,0,n.width,n.height),o.getTracks().forEach(e=>e.stop());let s=n.toDataURL("image/jpeg",.9);e(s)}}catch(e){t(e)}})}function V(e){let{robotName:t,systemPrompt:o,updateJointsDegrees:a}=e,[s,l]=(0,n.useState)(""),[i,d]=(0,n.useState)([]),[c,u]=(0,n.useState)(!1),m=U()||"",h=z()||"https://api.openai.com/v1/",p=J()||"gpt-4.1-nano";L(t);let f=(0,T.r)({apiKey:m,baseURL:h}),x=async e=>{d(t=>[...t,{sender:"User",text:e}]);try{var t,o;let r=await q(),n=await (0,P.Df)({model:f(p),messages:[{role:"user",content:[{type:"text",text:e},{type:"image",image:r}]}]}),s=n.text.trim(),l=null==(o=n.response)||null==(t=o.messages[1])?void 0:t.content;for(let e of null!=l?l:[])s+="\n\n".concat(e);d(e=>[...e,{sender:"AI",text:s}]);let i=function(e){let t=e.match(/```json\s*([\s\S]*?)\s*```/);if(!t)return console.error("No JSON block found"),null;try{let e=t[1].trim(),o=JSON.parse(e);if(Array.isArray(o)&&o.every(Array.isArray))return o;return console.error("Parsed JSON is not an array of arrays"),null}catch(e){return console.error("Failed to parse JSON:",e),null}}(s);if(i)for(let e of i){let t=e.map((e,t)=>({servoId:t,value:e}));a(t),await new Promise(e=>setTimeout(e,100))}}catch(e){console.error("Error generating text:",e),d(e=>[...e,{sender:"AI",text:"Error: Unable to process your request."}])}},b=()=>{if(s.trim()){if(!m)return void u(!0);x(s.trim()),l("")}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"fixed bottom-5 right-5 bg-zinc-900 bg-opacity-80 text-white p-4 rounded-lg shadow-lg w-80 z-50",children:[(0,r.jsxs)("h4",{className:"border-b border-zinc-600 pb-2 font-bold mb-2 flex items-center justify-between",children:[(0,r.jsx)("span",{children:"AI Control Robot"}),(0,r.jsx)("button",{onClick:()=>u(!0),className:"ml-2 bg-zinc-700 hover:bg-zinc-600 text-white py-1 px-2 rounded text-sm",children:"Settings"})]}),(0,r.jsx)("div",{className:"mb-2 max-h-[60vh] overflow-y-auto",children:i.map((e,t)=>(0,r.jsxs)("div",{className:"mb-2 ".concat("AI"===e.sender?"text-green-400":"text-blue-400"),children:[(0,r.jsxs)("strong",{children:[e.sender,":"]})," ",e.text]},t))}),i.length>0&&(0,r.jsx)("div",{className:"mb-2 flex justify-end",children:(0,r.jsx)("button",{onClick:()=>d([]),className:"text-xs bg-zinc-700 hover:bg-zinc-600 text-white px-2 py-1 rounded",children:"Clear"})}),(0,r.jsx)("div",{className:"flex items-center space-x-2",children:(0,r.jsxs)("div",{className:"relative flex items-center w-full",children:[(0,r.jsx)("button",{onClick:()=>alert("Camera support coming soon"),className:"absolute left-0 bg-zinc-700 hover:bg-zinc-600 text-zinc-400 p-2 rounded",children:(0,r.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",className:"w-5 h-5","aria-hidden":"true",children:[(0,r.jsx)("path",{d:"M16 4C16.5523 4 17 4.44772 17 5V9.2L22.2133 5.55071C22.4395 5.39235 22.7513 5.44737 22.9096 5.6736C22.9684 5.75764 23 5.85774 23 5.96033V18.0397C23 18.3158 22.7761 18.5397 22.5 18.5397C22.3974 18.5397 22.2973 18.5081 22.2133 18.4493L17 14.8V19C17 19.5523 16.5523 20 16 20H2C1.44772 20 1 19.5523 1 19V5C1 4.44772 1.44772 4 2 4H16ZM15 6H3V18H15V6ZM7.4 8.82867C7.47607 8.82867 7.55057 8.85036 7.61475 8.8912L11.9697 11.6625C12.1561 11.7811 12.211 12.0284 12.0924 12.2148C12.061 12.2641 12.0191 12.306 11.9697 12.3375L7.61475 15.1088C7.42837 15.2274 7.18114 15.1725 7.06254 14.9861C7.02169 14.9219 7 14.8474 7 14.7713V9.22867C7 9.00776 7.17909 8.82867 7.4 8.82867ZM21 8.84131L17 11.641V12.359L21 15.1587V8.84131Z"})," "]})}),(0,r.jsx)("input",{type:"text",value:s,onChange:e=>l(e.target.value),onKeyPress:e=>{"Enter"===e.key&&b()},onKeyDown:e=>e.stopPropagation(),onKeyUp:e=>e.stopPropagation(),placeholder:"Type a command...",className:"flex-1 pl-10 p-2 rounded bg-zinc-700 text-white outline-none"})]})})]}),(0,r.jsx)(W,{show:c,onClose:()=>u(!1),robotName:t,systemPrompt:o})]})}function H(e){let{robotName:t,urdfUrl:o,orbitTarget:c,jointDetails:u,setJointDetails:m,jointStates:p}=e,{scene:f}=(0,l.A)(),x=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let e=new s.KPJ;new i.A(e).load(o,e=>{x.current=e,m(e.joints?Object.values(e.joints).filter(e=>"revolute"===e.jointType||"continuous"===e.jointType).map(e=>({name:e.name,servoId:a[t].jointNameIdMap[e.name],limit:{lower:void 0===e.limit.lower?void 0:Number(e.limit.lower),upper:void 0===e.limit.upper?void 0:Number(e.limit.upper)},jointType:e.jointType})):[]),e.rotateOnAxis(new s.Pq0(1,0,0),-(Math.PI/2)),e.traverse(e=>e.castShadow=!0),e.updateMatrixWorld(!0),e.scale.set(15,15,15),f.add(e)},void 0,e=>console.error("Error loading URDF:",e))},[t,o,m]),(0,l.C)((e,t)=>{x.current&&x.current.joints&&p.forEach(e=>{let o=x.current.joints[e.name];if(o){if(void 0!==e.virtualDegrees&&"continuous"!==o.jointType)o.setJointValue(e.virtualDegrees*Math.PI/180);else if(void 0!==e.virtualSpeed&&"continuous"===o.jointType){let r=Number(o.angle)||0;o.setJointValue(r+e.virtualSpeed*t/500)}}})}),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(d.N,{target:c||[0,.1,.1]}),(0,r.jsx)(h,{}),(0,r.jsx)("directionalLight",{castShadow:!0,intensity:1,position:[2,20,5],"shadow-mapSize-width":1024,"shadow-mapSize-height":1024}),(0,r.jsx)("directionalLight",{intensity:1,position:[-2,20,-5],"shadow-mapSize-width":1024,"shadow-mapSize-height":1024}),(0,r.jsx)("ambientLight",{intensity:.4})]})}function K(){let{progress:e}=(0,c.p)();return(0,r.jsxs)(u.E,{center:!0,className:"text-4xl text-white",children:[e," % loaded"]})}function Y(e){let{robotName:t}=e,[o,l]=(0,n.useState)([]),i=a[t];if(!i)throw Error('Robot configuration for "'.concat(t,'" not found.'));let{urdfUrl:d,orbitTarget:c,camera:u,keyboardControlMap:m,jointNameIdMap:h,compoundMovements:p,systemPrompt:f}=i,{isConnected:x,connectRobot:g,disconnectRobot:y,jointStates:v,updateJointSpeed:w,setJointDetails:j,updateJointDegrees:k,updateJointsDegrees:N,updateJointsSpeed:I}=function(e){let[t,o]=(0,n.useState)(!1),[r,a]=(0,n.useState)(e),[s,l]=(0,n.useState)(r.map((e,t)=>({jointType:e.jointType,virtualDegrees:"revolute"===e.jointType?0:void 0,realDegrees:"revolute"===e.jointType?"N/A":void 0,virtualSpeed:"continuous"===e.jointType?0:void 0,realSpeed:"continuous"===e.jointType?"N/A":void 0,servoId:e.servoId,name:e.name,limit:e.limit}))),[i,d]=(0,n.useState)([]);(0,n.useEffect)(()=>{l(r.map((e,t)=>({jointType:e.jointType,virtualDegrees:"revolute"===e.jointType?0:void 0,realDegrees:"revolute"===e.jointType?"N/A":void 0,virtualSpeed:"continuous"===e.jointType?0:void 0,realSpeed:"continuous"===e.jointType?"N/A":void 0,servoId:e.servoId,name:e.name,limit:e.limit})))},[r]);let c=(0,n.useCallback)(async()=>{try{await D.D.connect(),o(!0),console.log("Robot connected successfully.");let t=[...s],n=[];for(let o=0;o<r.length;o++)try{if("continuous"===r[o].jointType)await D.D.setWheelMode(r[o].servoId),t[o].realSpeed=0;else{var e;await D.D.setPositionMode(r[o].servoId);let a=(e=await D.D.readPosition(r[o].servoId),360*e/4096-180);n.push(a),t[o].realDegrees=a,t[o].virtualDegrees=a,await D.D.writeTorqueEnable(r[o].servoId,!0)}}catch(e){console.error("Failed to initialize joint ".concat(r[o].servoId,":"),e),n.push(0),"revolute"===r[o].jointType?t[o].realDegrees="error":"continuous"===r[o].jointType&&(t[o].realSpeed="error")}d(n),l(t)}catch(e){throw console.error("Failed to connect to the robot:",e),Error("Failed to connect to the robot.")}},[s,r]),u=(0,n.useCallback)(async()=>{try{for(let e=0;e<r.length;e++)try{"continuous"===r[e].jointType&&await D.D.writeWheelSpeed(r[e].servoId,0),await D.D.writeTorqueEnable(r[e].servoId,!1)}catch(t){console.error("Failed to reset joint ".concat(r[e].servoId," during disconnect:"),t)}await D.D.disconnect(),o(!1),console.log("Robot disconnected successfully."),l(e=>e.map(e=>"revolute"===e.jointType?{...e,realDegrees:"N/A"}:{...e,realSpeed:"N/A"}))}catch(e){console.error("Failed to disconnect from the robot:",e)}},[r]),m=(0,n.useCallback)(async(e,o)=>{let r=[...s],n=r.findIndex(t=>t.servoId===e);if(-1!==n){if(r[n].virtualDegrees=o,t)try{let t=b(o);console.log("Updating servoId ".concat(e," to position:"),t,"degrees:",o),await D.D.writePosition(e,Math.round(t))}catch(t){console.error("Failed to update servo degrees for joint with servoId ".concat(e,":"),t)}l(r)}},[s,t,i]),h=(0,n.useCallback)(async(e,o)=>{let r=[...s],n=r.findIndex(t=>t.servoId===e);if(-1!==n){if(r[n].virtualSpeed=o,t)try{await D.D.writeWheelSpeed(e,o),r[n].realSpeed=o}catch(t){console.error("Failed to update speed for joint with servoId ".concat(e,":"),t),r[n].realSpeed="error"}l(r)}},[s,t]),p=(0,n.useCallback)(async e=>{let o=[...s],r={},n=[];if(e.forEach(e=>{let{servoId:a,value:s}=e,l=o.findIndex(e=>e.servoId===a);if(-1!==l&&(o[l].virtualDegrees=s,t)){let e=b(s);console.log("Updating servoId ".concat(a," to position:"),e,"degrees:",s),r[a]=Math.round(e),n.push({servoId:a,value:s,relativeValue:s})}}),t&&Object.keys(r).length>0)try{await D.D.syncWritePositions(r),n.forEach(e=>{let{servoId:t,relativeValue:r}=e,n=o.findIndex(e=>e.servoId===t);-1!==n&&(o[n].realDegrees=r,o[n].virtualDegrees=r)})}catch(e){console.error("Failed to update multiple servo degrees:",e),n.forEach(e=>{let{servoId:t}=e;o.findIndex(e=>e.servoId===t)})}l(o)},[s,t,i]),f=(0,n.useCallback)(async e=>{let o=[...s],r={},n=[];if(e.forEach(e=>{let{servoId:a,speed:s}=e,l=o.findIndex(e=>e.servoId===a);-1!==l&&(o[l].virtualSpeed=s,t&&(r[a]=s,n.push({servoId:a,speed:s})))}),t&&Object.keys(r).length>0)try{await D.D.syncWriteWheelSpeed(r),n.forEach(e=>{let{servoId:t,speed:r}=e,n=o.findIndex(e=>e.servoId===t);-1!==n&&(o[n].realSpeed=r)})}catch(e){console.error("Failed to update multiple servo speeds:",e),n.forEach(e=>{let{servoId:t}=e,r=o.findIndex(e=>e.servoId===t);-1!==r&&(o[r].realSpeed="error")})}l(o)},[s,t]);return{isConnected:t,connectRobot:c,disconnectRobot:u,jointStates:s,updateJointDegrees:m,updateJointsDegrees:p,updateJointSpeed:h,updateJointsSpeed:f,setJointDetails:a}}(o);return(0,n.useEffect)(()=>{j(o)},[o,j]),window.bambotCompoundMovements=i.compoundMovements,(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(E.Hl,{shadows:!0,camera:{position:u.position,fov:u.fov},onCreated:e=>{let{scene:t}=e;t.background=new s.Q1f(2503224)},children:(0,r.jsx)(n.Suspense,{fallback:(0,r.jsx)(K,{}),children:(0,r.jsx)(H,{robotName:t,urdfUrl:d,orbitTarget:c,jointDetails:o,setJointDetails:l,jointStates:v})})}),(0,r.jsx)(C,{updateJointsSpeed:I,jointStates:v,updateJointDegrees:k,updateJointsDegrees:N,updateJointSpeed:w,isConnected:x,connectRobot:g,disconnectRobot:y,keyboardControlMap:m,compoundMovements:p}),(0,r.jsx)(V,{robotName:t,systemPrompt:f,updateJointsDegrees:N})]})}function G(){return(0,r.jsx)(Y,{robotName:"so-arm101"})}}},e=>{var t=t=>e(e.s=t);e.O(0,[367,831,803,413,874,881,441,684,358],()=>t(2609)),_N_E=e.O()}]);
_next/static/chunks/b536a0f1-8e928607e65d05e8.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/ba12c10f-1bf210e1db10c544.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[803],{3736:(e,t,r)=>{r.d(t,{Df:()=>tI});var a,n,o,s,i,l,u,p,c,m,d,h,f,g,y,v,b=r(9143),x=r(2232),w=r(9889),z=r(1053),T=r(1153),S=r(8764),I=Object.defineProperty,j=(e,t)=>{for(var r in t)I(e,r,{get:t[r],enumerable:!0})};function R(e,{contentType:t,dataStreamVersion:r}){let a=new Headers(null!=e?e:{});return a.has("Content-Type")||a.set("Content-Type",t),void 0!==r&&a.set("X-Vercel-AI-Data-Stream",r),a}function _(e,{contentType:t,dataStreamVersion:r}){let a={};if(null!=e)for(let[t,r]of Object.entries(e))a[t]=r;return null==a["Content-Type"]&&(a["Content-Type"]=t),void 0!==r&&(a["X-Vercel-AI-Data-Stream"]=r),a}function M({response:e,status:t,statusText:r,headers:a,stream:n}){e.writeHead(null!=t?t:200,r,a);let o=n.getReader();(async()=>{try{for(;;){let{done:t,value:r}=await o.read();if(t)break;e.write(r)}}catch(e){throw e}finally{e.end()}})()}var k="AI_InvalidArgumentError",C=`vercel.ai.error.${k}`,E=Symbol.for(C),A=class extends b.bD{constructor({parameter:e,value:t,message:r}){super({name:k,message:`Invalid argument for parameter ${e}: ${r}`}),this[a]=!0,this.parameter=e,this.value=t}static isInstance(e){return b.bD.hasMarker(e,C)}};a=E;var O="AI_RetryError",N=`vercel.ai.error.${O}`,$=Symbol.for(N),D=class extends b.bD{constructor({message:e,reason:t,errors:r}){super({name:O,message:e}),this[n]=!0,this.reason=t,this.errors=r,this.lastError=r[r.length-1]}static isInstance(e){return b.bD.hasMarker(e,N)}};n=$;var P=({maxRetries:e=2,initialDelayInMs:t=2e3,backoffFactor:r=2}={})=>async a=>U(a,{maxRetries:e,delayInMs:t,backoffFactor:r});async function U(e,{maxRetries:t,delayInMs:r,backoffFactor:a},n=[]){try{return await e()}catch(l){if((0,x.zf)(l)||0===t)throw l;let o=(0,x.u1)(l),s=[...n,l],i=s.length;if(i>t)throw new D({message:`Failed after ${i} attempts. Last error: ${o}`,reason:"maxRetriesExceeded",errors:s});if(l instanceof Error&&b.hL.isInstance(l)&&!0===l.isRetryable&&i<=t)return await (0,x.cb)(r),U(e,{maxRetries:t,delayInMs:a*r,backoffFactor:a},s);if(1===i)throw l;throw new D({message:`Failed after ${i} attempts with non-retryable error: '${o}'`,reason:"errorNotRetryable",errors:s})}}function q({maxRetries:e}){if(null!=e){if(!Number.isInteger(e))throw new A({parameter:"maxRetries",value:e,message:"maxRetries must be an integer"});if(e<0)throw new A({parameter:"maxRetries",value:e,message:"maxRetries must be >= 0"})}let t=null!=e?e:2;return{maxRetries:t,retry:P({maxRetries:t})}}function J({operationId:e,telemetry:t}){return{"operation.name":`${e}${(null==t?void 0:t.functionId)!=null?` ${t.functionId}`:""}`,"resource.name":null==t?void 0:t.functionId,"ai.operationId":e,"ai.telemetry.functionId":null==t?void 0:t.functionId}}function F({model:e,settings:t,telemetry:r,headers:a}){var n;return{"ai.model.provider":e.provider,"ai.model.id":e.modelId,...Object.entries(t).reduce((e,[t,r])=>(e[`ai.settings.${t}`]=r,e),{}),...Object.entries(null!=(n=null==r?void 0:r.metadata)?n:{}).reduce((e,[t,r])=>(e[`ai.telemetry.metadata.${t}`]=r,e),{}),...Object.entries(null!=a?a:{}).reduce((e,[t,r])=>(void 0!==r&&(e[`ai.request.headers.${t}`]=r),e),{})}}var L={startSpan:()=>V,startActiveSpan:(e,t,r,a)=>"function"==typeof t?t(V):"function"==typeof r?r(V):"function"==typeof a?a(V):void 0},V={spanContext:()=>B,setAttribute(){return this},setAttributes(){return this},addEvent(){return this},addLink(){return this},addLinks(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording:()=>!1,recordException(){return this}},B={traceId:"",spanId:"",traceFlags:0};function Z({isEnabled:e=!1,tracer:t}={}){return e?t||w.u.getTracer("ai"):L}function K({name:e,tracer:t,attributes:r,fn:a,endWhenDone:n=!0}){return t.startActiveSpan(e,{attributes:r},async e=>{try{let t=await a(e);return n&&e.end(),t}catch(t){try{t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:z.s.ERROR,message:t.message})):e.setStatus({code:z.s.ERROR})}finally{e.end()}throw t}})}function G({telemetry:e,attributes:t}){return(null==e?void 0:e.isEnabled)!==!0?{}:Object.entries(t).reduce((t,[r,a])=>{if(void 0===a)return t;if("object"==typeof a&&"input"in a&&"function"==typeof a.input){if((null==e?void 0:e.recordInputs)===!1)return t;let n=a.input();return void 0===n?t:{...t,[r]:n}}if("object"==typeof a&&"output"in a&&"function"==typeof a.output){if((null==e?void 0:e.recordOutputs)===!1)return t;let n=a.output();return void 0===n?t:{...t,[r]:n}}return{...t,[r]:a}},{})}var W="AI_NoImageGeneratedError",H=`vercel.ai.error.${W}`,X=Symbol.for(H);b.bD,o=X;var Q=class{constructor({data:e,mimeType:t}){let r=e instanceof Uint8Array;this.base64Data=r?void 0:e,this.uint8ArrayData=r?e:void 0,this.mimeType=t}get base64(){return null==this.base64Data&&(this.base64Data=(0,x.n_)(this.uint8ArrayData)),this.base64Data}get uint8Array(){return null==this.uint8ArrayData&&(this.uint8ArrayData=(0,x.Z9)(this.base64Data)),this.uint8ArrayData}},Y=class extends Q{constructor(e){super(e),this.type="file"}},ee=[{mimeType:"image/gif",bytesPrefix:[71,73,70],base64Prefix:"R0lG"},{mimeType:"image/png",bytesPrefix:[137,80,78,71],base64Prefix:"iVBORw"},{mimeType:"image/jpeg",bytesPrefix:[255,216],base64Prefix:"/9j/"},{mimeType:"image/webp",bytesPrefix:[82,73,70,70],base64Prefix:"UklGRg"},{mimeType:"image/bmp",bytesPrefix:[66,77],base64Prefix:"Qk"},{mimeType:"image/tiff",bytesPrefix:[73,73,42,0],base64Prefix:"SUkqAA"},{mimeType:"image/tiff",bytesPrefix:[77,77,0,42],base64Prefix:"TU0AKg"},{mimeType:"image/avif",bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102],base64Prefix:"AAAAIGZ0eXBhdmlm"},{mimeType:"image/heic",bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99],base64Prefix:"AAAAIGZ0eXBoZWlj"}],et=e=>{let t="string"==typeof e?(0,x.Z9)(e):e,r=(127&t[6])<<21|(127&t[7])<<14|(127&t[8])<<7|127&t[9];return t.slice(r+10)},er="AI_NoObjectGeneratedError",ea=`vercel.ai.error.${er}`,en=Symbol.for(ea),eo=class extends b.bD{constructor({message:e="No object generated.",cause:t,text:r,response:a,usage:n,finishReason:o}){super({name:er,message:e,cause:t}),this[s]=!0,this.text=r,this.response=a,this.usage=n,this.finishReason=o}static isInstance(e){return b.bD.hasMarker(e,ea)}};s=en;var es="AI_DownloadError",ei=`vercel.ai.error.${es}`,el=Symbol.for(ei),eu=class extends b.bD{constructor({url:e,statusCode:t,statusText:r,cause:a,message:n=null==a?`Failed to download ${e}: ${t} ${r}`:`Failed to download ${e}: ${a}`}){super({name:es,message:n,cause:a}),this[i]=!0,this.url=e,this.statusCode=t,this.statusText=r}static isInstance(e){return b.bD.hasMarker(e,ei)}};async function ep({url:e}){var t;let r=e.toString();try{let e=await fetch(r);if(!e.ok)throw new eu({url:r,statusCode:e.status,statusText:e.statusText});return{data:new Uint8Array(await e.arrayBuffer()),mimeType:null!=(t=e.headers.get("content-type"))?t:void 0}}catch(e){if(eu.isInstance(e))throw e;throw new eu({url:r,cause:e})}}i=el;var ec="AI_InvalidDataContentError",em=`vercel.ai.error.${ec}`,ed=Symbol.for(em),eh=class extends b.bD{constructor({content:e,cause:t,message:r=`Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof e}.`}){super({name:ec,message:r,cause:t}),this[l]=!0,this.content=e}static isInstance(e){return b.bD.hasMarker(e,em)}};l=ed;var ef=T.z.union([T.z.string(),T.z.instanceof(Uint8Array),T.z.instanceof(ArrayBuffer),T.z.custom(e=>{var t,r;return null!=(r=null==(t=globalThis.Buffer)?void 0:t.isBuffer(e))&&r},{message:"Must be a Buffer"})]);function eg(e){return"string"==typeof e?e:e instanceof ArrayBuffer?(0,x.n_)(new Uint8Array(e)):(0,x.n_)(e)}function ey(e){if(e instanceof Uint8Array)return e;if("string"==typeof e)try{return(0,x.Z9)(e)}catch(t){throw new eh({message:"Invalid data content. Content string is not a base64-encoded media.",content:e,cause:t})}if(e instanceof ArrayBuffer)return new Uint8Array(e);throw new eh({content:e})}var ev="AI_InvalidMessageRoleError",eb=`vercel.ai.error.${ev}`,ex=Symbol.for(eb),ew=class extends b.bD{constructor({role:e,message:t=`Invalid message role: '${e}'. Must be one of: "system", "user", "assistant", "tool".`}){super({name:ev,message:t}),this[u]=!0,this.role=e}static isInstance(e){return b.bD.hasMarker(e,eb)}};async function ez({prompt:e,modelSupportsImageUrls:t=!0,modelSupportsUrl:r=()=>!1,downloadImplementation:a=ep}){let n=await eT(e.messages,a,t,r);return[...null!=e.system?[{role:"system",content:e.system}]:[],...e.messages.map(e=>(function(e,t){var r,a,n,o,s,i;let l=e.role;switch(l){case"system":return{role:"system",content:e.content,providerMetadata:null!=(r=e.providerOptions)?r:e.experimental_providerMetadata};case"user":if("string"==typeof e.content)return{role:"user",content:[{type:"text",text:e.content}],providerMetadata:null!=(a=e.providerOptions)?a:e.experimental_providerMetadata};return{role:"user",content:e.content.map(e=>(function(e,t){var r,a,n,o;let s,i,l;if("text"===e.type)return{type:"text",text:e.text,providerMetadata:null!=(r=e.providerOptions)?r:e.experimental_providerMetadata};let u=e.mimeType,p=e.type;switch(p){case"image":s=e.image;break;case"file":s=e.data;break;default:throw Error(`Unsupported part type: ${p}`)}try{i="string"==typeof s?new URL(s):s}catch(e){i=s}if(i instanceof URL)if("data:"===i.protocol){let{mimeType:e,base64Content:t}=function(e){try{let[t,r]=e.split(",");return{mimeType:t.split(";")[0].split(":")[1],base64Content:r}}catch(e){return{mimeType:void 0,base64Content:void 0}}}(i.toString());if(null==e||null==t)throw Error(`Invalid data URL format in part ${p}`);u=e,l=ey(t)}else{let e=t[i.toString()];e?(l=e.data,null!=u||(u=e.mimeType)):l=i}else l=ey(i);switch(p){case"image":return l instanceof Uint8Array&&(u=null!=(a=function({data:e,signatures:t}){let r="string"==typeof e&&e.startsWith("SUQz")||"string"!=typeof e&&e.length>10&&73===e[0]&&68===e[1]&&51===e[2]?et(e):e;for(let e of t)if("string"==typeof r?r.startsWith(e.base64Prefix):r.length>=e.bytesPrefix.length&&e.bytesPrefix.every((e,t)=>r[t]===e))return e.mimeType}({data:l,signatures:ee}))?a:u),{type:"image",image:l,mimeType:u,providerMetadata:null!=(n=e.providerOptions)?n:e.experimental_providerMetadata};case"file":if(null==u)throw Error("Mime type is missing for file part");return{type:"file",data:l instanceof Uint8Array?eg(l):l,filename:e.filename,mimeType:u,providerMetadata:null!=(o=e.providerOptions)?o:e.experimental_providerMetadata}}})(e,t)).filter(e=>"text"!==e.type||""!==e.text),providerMetadata:null!=(n=e.providerOptions)?n:e.experimental_providerMetadata};case"assistant":if("string"==typeof e.content)return{role:"assistant",content:[{type:"text",text:e.content}],providerMetadata:null!=(o=e.providerOptions)?o:e.experimental_providerMetadata};return{role:"assistant",content:e.content.filter(e=>"text"!==e.type||""!==e.text).map(e=>{var t;let r=null!=(t=e.providerOptions)?t:e.experimental_providerMetadata;switch(e.type){case"file":return{type:"file",data:e.data instanceof URL?e.data:eg(e.data),filename:e.filename,mimeType:e.mimeType,providerMetadata:r};case"reasoning":return{type:"reasoning",text:e.text,signature:e.signature,providerMetadata:r};case"redacted-reasoning":return{type:"redacted-reasoning",data:e.data,providerMetadata:r};case"text":return{type:"text",text:e.text,providerMetadata:r};case"tool-call":return{type:"tool-call",toolCallId:e.toolCallId,toolName:e.toolName,args:e.args,providerMetadata:r}}}),providerMetadata:null!=(s=e.providerOptions)?s:e.experimental_providerMetadata};case"tool":return{role:"tool",content:e.content.map(e=>{var t;return{type:"tool-result",toolCallId:e.toolCallId,toolName:e.toolName,result:e.result,content:e.experimental_content,isError:e.isError,providerMetadata:null!=(t=e.providerOptions)?t:e.experimental_providerMetadata}}),providerMetadata:null!=(i=e.providerOptions)?i:e.experimental_providerMetadata};default:throw new ew({role:l})}})(e,n))]}async function eT(e,t,r,a){let n=e.filter(e=>"user"===e.role).map(e=>e.content).filter(e=>Array.isArray(e)).flat().filter(e=>"image"===e.type||"file"===e.type).filter(e=>"image"!==e.type||!0!==r).map(e=>"image"===e.type?e.image:e.data).map(e=>"string"==typeof e&&(e.startsWith("http:")||e.startsWith("https:"))?new URL(e):e).filter(e=>e instanceof URL).filter(e=>!a(e));return Object.fromEntries((await Promise.all(n.map(async e=>({url:e,data:await t({url:e})})))).map(({url:e,data:t})=>[e.toString(),t]))}function eS({maxTokens:e,temperature:t,topP:r,topK:a,presencePenalty:n,frequencyPenalty:o,stopSequences:s,seed:i}){if(null!=e){if(!Number.isInteger(e))throw new A({parameter:"maxTokens",value:e,message:"maxTokens must be an integer"});if(e<1)throw new A({parameter:"maxTokens",value:e,message:"maxTokens must be >= 1"})}if(null!=t&&"number"!=typeof t)throw new A({parameter:"temperature",value:t,message:"temperature must be a number"});if(null!=r&&"number"!=typeof r)throw new A({parameter:"topP",value:r,message:"topP must be a number"});if(null!=a&&"number"!=typeof a)throw new A({parameter:"topK",value:a,message:"topK must be a number"});if(null!=n&&"number"!=typeof n)throw new A({parameter:"presencePenalty",value:n,message:"presencePenalty must be a number"});if(null!=o&&"number"!=typeof o)throw new A({parameter:"frequencyPenalty",value:o,message:"frequencyPenalty must be a number"});if(null!=i&&!Number.isInteger(i))throw new A({parameter:"seed",value:i,message:"seed must be an integer"});return{maxTokens:e,temperature:null!=t?t:0,topP:r,topK:a,presencePenalty:n,frequencyPenalty:o,stopSequences:null!=s&&s.length>0?s:void 0,seed:i}}function eI(e){var t,r,a;let n=[];for(let o of e){let e;try{e=new URL(o.url)}catch(e){throw Error(`Invalid URL: ${o.url}`)}switch(e.protocol){case"http:":case"https:":if(null==(t=o.contentType)?void 0:t.startsWith("image/"))n.push({type:"image",image:e});else{if(!o.contentType)throw Error("If the attachment is not an image, it must specify a content type");n.push({type:"file",data:e,mimeType:o.contentType})}break;case"data:":{let e,t,s;try{[e,t]=o.url.split(","),s=e.split(";")[0].split(":")[1]}catch(e){throw Error(`Error processing data URL: ${o.url}`)}if(null==s||null==t)throw Error(`Invalid data URL format: ${o.url}`);if(null==(r=o.contentType)?void 0:r.startsWith("image/"))n.push({type:"image",image:ey(t)});else if(null==(a=o.contentType)?void 0:a.startsWith("text/"))n.push({type:"text",text:function(e){try{return new TextDecoder().decode(e)}catch(e){throw Error("Error decoding Uint8Array to text")}}(ey(t))});else{if(!o.contentType)throw Error("If the attachment is not an image or text, it must specify a content type");n.push({type:"file",data:t,mimeType:o.contentType})}break}default:throw Error(`Unsupported URL protocol: ${e.protocol}`)}}return n}u=ex;var ej="AI_MessageConversionError",eR=`vercel.ai.error.${ej}`,e_=Symbol.for(eR),eM=class extends b.bD{constructor({originalMessage:e,message:t}){super({name:ej,message:t}),this[p]=!0,this.originalMessage=e}static isInstance(e){return b.bD.hasMarker(e,eR)}};p=e_;var ek=T.z.lazy(()=>T.z.union([T.z.null(),T.z.string(),T.z.number(),T.z.boolean(),T.z.record(T.z.string(),ek),T.z.array(ek)])),eC=T.z.record(T.z.string(),T.z.record(T.z.string(),ek)),eE=T.z.array(T.z.union([T.z.object({type:T.z.literal("text"),text:T.z.string()}),T.z.object({type:T.z.literal("image"),data:T.z.string(),mimeType:T.z.string().optional()})])),eA=T.z.object({type:T.z.literal("text"),text:T.z.string(),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eO=T.z.object({type:T.z.literal("image"),image:T.z.union([ef,T.z.instanceof(URL)]),mimeType:T.z.string().optional(),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eN=T.z.object({type:T.z.literal("file"),data:T.z.union([ef,T.z.instanceof(URL)]),filename:T.z.string().optional(),mimeType:T.z.string(),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),e$=T.z.object({type:T.z.literal("reasoning"),text:T.z.string(),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eD=T.z.object({type:T.z.literal("redacted-reasoning"),data:T.z.string(),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eP=T.z.object({type:T.z.literal("tool-call"),toolCallId:T.z.string(),toolName:T.z.string(),args:T.z.unknown(),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eU=T.z.object({type:T.z.literal("tool-result"),toolCallId:T.z.string(),toolName:T.z.string(),result:T.z.unknown(),content:eE.optional(),isError:T.z.boolean().optional(),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eq=T.z.object({role:T.z.literal("system"),content:T.z.string(),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eJ=T.z.object({role:T.z.literal("user"),content:T.z.union([T.z.string(),T.z.array(T.z.union([eA,eO,eN]))]),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eF=T.z.object({role:T.z.literal("assistant"),content:T.z.union([T.z.string(),T.z.array(T.z.union([eA,eN,e$,eD,eP]))]),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eL=T.z.object({role:T.z.literal("tool"),content:T.z.array(eU),providerOptions:eC.optional(),experimental_providerMetadata:eC.optional()}),eV=T.z.union([eq,eJ,eF,eL]);function eB({prompt:e,tools:t}){if(null==e.prompt&&null==e.messages)throw new b.M3({prompt:e,message:"prompt or messages must be defined"});if(null!=e.prompt&&null!=e.messages)throw new b.M3({prompt:e,message:"prompt and messages cannot be defined at the same time"});if(null!=e.system&&"string"!=typeof e.system)throw new b.M3({prompt:e,message:"system must be a string"});if(null!=e.prompt){if("string"!=typeof e.prompt)throw new b.M3({prompt:e,message:"prompt must be a string"});return{type:"prompt",system:e.system,messages:[{role:"user",content:e.prompt}]}}if(null!=e.messages){let r="ui-messages"===function(e){if(!Array.isArray(e))throw new b.M3({prompt:e,message:`messages must be an array of CoreMessage or UIMessage
2
+ Received non-array value: ${JSON.stringify(e)}`,cause:e});if(0===e.length)return"messages";let t=e.map(eZ);if(t.some(e=>"has-ui-specific-parts"===e))return"ui-messages";let r=t.findIndex(e=>"has-core-specific-parts"!==e&&"message"!==e);if(-1===r)return"messages";throw new b.M3({prompt:e,message:`messages must be an array of CoreMessage or UIMessage
3
+ Received message of type: "${t[r]}" at index ${r}
4
+ messages[${r}]: ${JSON.stringify(e[r])}`,cause:e})}(e.messages)?function(e,t){var r,a;let n=null!=(r=null==t?void 0:t.tools)?r:{},o=[];for(let t=0;t<e.length;t++){let r=e[t],s=t===e.length-1,{role:i,content:l,experimental_attachments:u}=r;switch(i){case"system":o.push({role:"system",content:l});break;case"user":if(null==r.parts)o.push({role:"user",content:u?[{type:"text",text:l},...eI(u)]:l});else{let e=r.parts.filter(e=>"text"===e.type).map(e=>({type:"text",text:e.text}));o.push({role:"user",content:u?[...e,...eI(u)]:e})}break;case"assistant":{if(null!=r.parts){let e=function(){let e=[];for(let t of i)switch(t.type){case"file":case"text":e.push(t);break;case"reasoning":for(let r of t.details)switch(r.type){case"text":e.push({type:"reasoning",text:r.text,signature:r.signature});break;case"redacted":e.push({type:"redacted-reasoning",data:r.data})}break;case"tool-invocation":e.push({type:"tool-call",toolCallId:t.toolInvocation.toolCallId,toolName:t.toolInvocation.toolName,args:t.toolInvocation.args});break;default:throw Error(`Unsupported part: ${t}`)}o.push({role:"assistant",content:e});let a=i.filter(e=>"tool-invocation"===e.type).map(e=>e.toolInvocation);a.length>0&&o.push({role:"tool",content:a.map(e=>{if(!("result"in e))throw new eM({originalMessage:r,message:"ToolInvocation must have a result: "+JSON.stringify(e)});let{toolCallId:t,toolName:a,result:o}=e,s=n[a];return(null==s?void 0:s.experimental_toToolResultContent)!=null?{type:"tool-result",toolCallId:t,toolName:a,result:s.experimental_toToolResultContent(o),experimental_content:s.experimental_toToolResultContent(o)}:{type:"tool-result",toolCallId:t,toolName:a,result:o}})}),i=[],s=!1,t++},t=0,s=!1,i=[];for(let n of r.parts)switch(n.type){case"text":s&&e(),i.push(n);break;case"file":case"reasoning":i.push(n);break;case"tool-invocation":(null!=(a=n.toolInvocation.step)?a:0)!==t&&e(),i.push(n),s=!0}e();break}let e=r.toolInvocations;if(null==e||0===e.length){o.push({role:"assistant",content:l});break}let t=e.reduce((e,t)=>{var r;return Math.max(e,null!=(r=t.step)?r:0)},0);for(let a=0;a<=t;a++){let t=e.filter(e=>{var t;return(null!=(t=e.step)?t:0)===a});0!==t.length&&(o.push({role:"assistant",content:[...s&&l&&0===a?[{type:"text",text:l}]:[],...t.map(({toolCallId:e,toolName:t,args:r})=>({type:"tool-call",toolCallId:e,toolName:t,args:r}))]}),o.push({role:"tool",content:t.map(e=>{if(!("result"in e))throw new eM({originalMessage:r,message:"ToolInvocation must have a result: "+JSON.stringify(e)});let{toolCallId:t,toolName:a,result:o}=e,s=n[a];return(null==s?void 0:s.experimental_toToolResultContent)!=null?{type:"tool-result",toolCallId:t,toolName:a,result:s.experimental_toToolResultContent(o),experimental_content:s.experimental_toToolResultContent(o)}:{type:"tool-result",toolCallId:t,toolName:a,result:o}})}))}l&&!s&&o.push({role:"assistant",content:l});break}case"data":break;default:throw new eM({originalMessage:r,message:`Unsupported role: ${i}`})}}return o}(e.messages,{tools:t}):e.messages;if(0===r.length)throw new b.M3({prompt:e,message:"messages must not be empty"});let a=(0,x.ZZ)({value:r,schema:T.z.array(eV)});if(!a.success)throw new b.M3({prompt:e,message:`message must be a CoreMessage or a UI message
5
+ Validation error: ${a.error.message}`,cause:a.error});return{type:"messages",messages:r,system:e.system}}throw Error("unreachable")}function eZ(e){return"object"==typeof e&&null!==e&&("function"===e.role||"data"===e.role||"toolInvocations"in e||"parts"in e||"experimental_attachments"in e)?"has-ui-specific-parts":"object"==typeof e&&null!==e&&"content"in e&&(Array.isArray(e.content)||"experimental_providerMetadata"in e||"providerOptions"in e)?"has-core-specific-parts":"object"==typeof e&&null!==e&&"role"in e&&"content"in e&&"string"==typeof e.content&&["system","user","assistant","tool"].includes(e.role)?"message":"other"}function eK({promptTokens:e,completionTokens:t}){return{promptTokens:e,completionTokens:t,totalTokens:e+t}}function eG(e,t){return{promptTokens:e.promptTokens+t.promptTokens,completionTokens:e.completionTokens+t.completionTokens,totalTokens:e.totalTokens+t.totalTokens}}function eW({prompt:e,schema:t,schemaPrefix:r=null!=t?"JSON schema:":void 0,schemaSuffix:a=null!=t?"You MUST answer with a JSON object that matches the JSON schema above.":"You MUST answer with JSON."}){return[null!=e&&e.length>0?e:void 0,null!=e&&e.length>0?"":void 0,r,null!=t?JSON.stringify(t):void 0,a].filter(e=>null!=e).join("\n")}function eH(e){let t=e.pipeThrough(new TransformStream);return t[Symbol.asyncIterator]=()=>{let e=t.getReader();return{async next(){let{done:t,value:r}=await e.read();return t?{done:!0,value:void 0}:{done:!1,value:r}}}},t}var eX={type:"no-schema",jsonSchema:void 0,validatePartialResult:({value:e,textDelta:t})=>({success:!0,value:{partial:e,textDelta:t}}),validateFinalResult:(e,t)=>void 0===e?{success:!1,error:new eo({message:"No object generated: response did not match schema.",text:t.text,response:t.response,usage:t.usage,finishReason:t.finishReason})}:{success:!0,value:e},createElementStream(){throw new b.b8({functionality:"element streams in no-schema mode"})}},eQ=e=>({type:"object",jsonSchema:e.jsonSchema,validatePartialResult:({value:e,textDelta:t})=>({success:!0,value:{partial:e,textDelta:t}}),validateFinalResult:t=>safeValidateTypes2({value:t,schema:e}),createElementStream(){throw new UnsupportedFunctionalityError({functionality:"element streams in object mode"})}}),eY=e=>{let{$schema:t,...r}=e.jsonSchema;return{type:"enum",jsonSchema:{$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{elements:{type:"array",items:r}},required:["elements"],additionalProperties:!1},validatePartialResult({value:t,latestObject:r,isFirstDelta:a,isFinalDelta:n}){var o;if(!isJSONObject(t)||!isJSONArray(t.elements))return{success:!1,error:new TypeValidationError({value:t,cause:"value must be an object that contains an array of elements"})};let s=t.elements,i=[];for(let t=0;t<s.length;t++){let r=safeValidateTypes2({value:s[t],schema:e});if(t!==s.length-1||n){if(!r.success)return r;i.push(r.value)}}let l=null!=(o=null==r?void 0:r.length)?o:0,u="";return a&&(u+="["),l>0&&(u+=","),u+=i.slice(l).map(e=>JSON.stringify(e)).join(","),n&&(u+="]"),{success:!0,value:{partial:i,textDelta:u}}},validateFinalResult(t){if(!isJSONObject(t)||!isJSONArray(t.elements))return{success:!1,error:new TypeValidationError({value:t,cause:"value must be an object that contains an array of elements"})};let r=t.elements;for(let t of r){let r=safeValidateTypes2({value:t,schema:e});if(!r.success)return r}return{success:!0,value:r}},createElementStream(e){let t=0;return eH(e.pipeThrough(new TransformStream({transform(e,r){switch(e.type){case"object":{let a=e.object;for(;t<a.length;t++)r.enqueue(a[t]);break}case"text-delta":case"finish":case"error":break;default:throw Error(`Unsupported chunk type: ${e}`)}}})))}}},e0=e=>({type:"enum",jsonSchema:{$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{result:{type:"string",enum:e}},required:["result"],additionalProperties:!1},validateFinalResult(t){if(!isJSONObject(t)||"string"!=typeof t.result)return{success:!1,error:new TypeValidationError({value:t,cause:'value must be an object that contains a string in the "result" property.'})};let r=t.result;return e.includes(r)?{success:!0,value:r}:{success:!1,error:new TypeValidationError({value:t,cause:"value must be a string in the enum"})}},validatePartialResult(){throw new UnsupportedFunctionalityError({functionality:"partial results in enum mode"})},createElementStream(){throw new UnsupportedFunctionalityError({functionality:"element streams in enum mode"})}});function e1(e){return JSON.stringify(e.map(e=>({...e,content:"string"==typeof e.content?e.content:e.content.map(e2)})))}function e2(e){return"image"===e.type?{...e,image:e.image instanceof Uint8Array?eg(e.image):e.image}:e}(0,x.hK)({prefix:"aiobj",size:24});var e4=class{constructor(){this.status={type:"pending"},this._resolve=void 0,this._reject=void 0}get value(){return this.promise||(this.promise=new Promise((e,t)=>{"resolved"===this.status.type?e(this.status.value):"rejected"===this.status.type&&t(this.status.error),this._resolve=e,this._reject=t})),this.promise}resolve(e){var t;this.status={type:"resolved",value:e},this.promise&&(null==(t=this._resolve)||t.call(this,e))}reject(e){var t;this.status={type:"rejected",error:e},this.promise&&(null==(t=this._reject)||t.call(this,e))}};function e8(){let e,t;return{promise:new Promise((r,a)=>{e=r,t=a}),resolve:e,reject:t}}function e6(){let e=[],t=null,r=!1,a=e8(),n=async()=>{if(r&&0===e.length){null==t||t.close();return}if(0===e.length)return a=e8(),await a.promise,n();try{let{value:a,done:o}=await e[0].read();o?(e.shift(),e.length>0?await n():r&&(null==t||t.close())):null==t||t.enqueue(a)}catch(a){null==t||t.error(a),e.shift(),r&&0===e.length&&(null==t||t.close())}};return{stream:new ReadableStream({start(e){t=e},pull:n,async cancel(){for(let t of e)await t.cancel();e=[],r=!0}}),addStream:t=>{if(r)throw Error("Cannot add inner stream: outer stream is closed");e.push(t.getReader()),a.resolve()},close:()=>{r=!0,a.resolve(),0===e.length&&(null==t||t.close())},terminate:()=>{r=!0,a.resolve(),e.forEach(e=>e.cancel()),e=[],null==t||t.close()}}}(0,x.hK)({prefix:"aiobj",size:24});var e7="AI_NoOutputSpecifiedError",e3=`vercel.ai.error.${e7}`,e9=Symbol.for(e3),e5=class extends b.bD{constructor({message:e="No output specified."}={}){super({name:e7,message:e}),this[c]=!0}static isInstance(e){return b.bD.hasMarker(e,e3)}};c=e9;var te="AI_ToolExecutionError",tt=`vercel.ai.error.${te}`,tr=Symbol.for(tt),ta=class extends b.bD{constructor({toolArgs:e,toolName:t,toolCallId:r,cause:a,message:n=`Error executing tool ${t}: ${(0,b.u1)(a)}`}){super({name:te,message:n,cause:a}),this[m]=!0,this.toolArgs=e,this.toolName=t,this.toolCallId=r}static isInstance(e){return b.bD.hasMarker(e,tt)}};function tn({tools:e,toolChoice:t,activeTools:r}){return null!=e&&Object.keys(e).length>0?{tools:(null!=r?Object.entries(e).filter(([e])=>r.includes(e)):Object.entries(e)).map(([e,t])=>{let r=t.type;switch(r){case void 0:case"function":return{type:"function",name:e,description:t.description,parameters:(0,S.mD)(t.parameters).jsonSchema};case"provider-defined":return{type:"provider-defined",name:e,id:t.id,args:t.args};default:throw Error(`Unsupported tool type: ${r}`)}}),toolChoice:null==t?{type:"auto"}:"string"==typeof t?{type:t}:{type:"tool",toolName:t.toolName}}:{tools:void 0,toolChoice:void 0}}m=tr;var to=/^([\s\S]*?)(\s+)(\S*)$/;function ts(e){let t=e.match(to);return t?{prefix:t[1],whitespace:t[2],suffix:t[3]}:void 0}var ti="AI_InvalidToolArgumentsError",tl=`vercel.ai.error.${ti}`,tu=Symbol.for(tl),tp=class extends b.bD{constructor({toolArgs:e,toolName:t,cause:r,message:a=`Invalid arguments for tool ${t}: ${(0,b.u1)(r)}`}){super({name:ti,message:a,cause:r}),this[d]=!0,this.toolArgs=e,this.toolName=t}static isInstance(e){return b.bD.hasMarker(e,tl)}};d=tu;var tc="AI_NoSuchToolError",tm=`vercel.ai.error.${tc}`,td=Symbol.for(tm),th=class extends b.bD{constructor({toolName:e,availableTools:t,message:r=`Model tried to call unavailable tool '${e}'. ${void 0===t?"No tools are available.":`Available tools: ${t.join(", ")}.`}`}){super({name:tc,message:r}),this[h]=!0,this.toolName=e,this.availableTools=t}static isInstance(e){return b.bD.hasMarker(e,tm)}};h=td;var tf="AI_ToolCallRepairError",tg=`vercel.ai.error.${tf}`,ty=Symbol.for(tg),tv=class extends b.bD{constructor({cause:e,originalError:t,message:r=`Error repairing tool call: ${(0,b.u1)(e)}`}){super({name:tf,message:r,cause:e}),this[f]=!0,this.originalError=t}static isInstance(e){return b.bD.hasMarker(e,tg)}};async function tb({toolCall:e,tools:t,repairToolCall:r,system:a,messages:n}){if(null==t)throw new th({toolName:e.toolName});try{return await tx({toolCall:e,tools:t})}catch(s){if(null==r||!(th.isInstance(s)||tp.isInstance(s)))throw s;let o=null;try{o=await r({toolCall:e,tools:t,parameterSchema:({toolName:e})=>(0,S.mD)(t[e].parameters).jsonSchema,system:a,messages:n,error:s})}catch(e){throw new tv({cause:e,originalError:s})}if(null==o)throw s;return await tx({toolCall:o,tools:t})}}async function tx({toolCall:e,tools:t}){let r=e.toolName,a=t[r];if(null==a)throw new th({toolName:e.toolName,availableTools:Object.keys(t)});let n=(0,S.mD)(a.parameters),o=""===e.args.trim()?(0,x.ZZ)({value:{},schema:n}):(0,x.N8)({text:e.args,schema:n});if(!1===o.success)throw new tp({toolName:r,toolArgs:e.args,cause:o.error});return{type:"tool-call",toolCallId:e.toolCallId,toolName:r,args:o.value}}function tw(e){let t=e.filter(e=>"text"===e.type).map(e=>e.text).join("");return t.length>0?t:void 0}function tz({text:e="",files:t,reasoning:r,tools:a,toolCalls:n,toolResults:o,messageId:s,generateMessageId:i}){let l=[],u=[];return r.length>0&&u.push(...r.map(e=>"text"===e.type?{...e,type:"reasoning"}:{...e,type:"redacted-reasoning"})),t.length>0&&u.push(...t.map(e=>({type:"file",data:e.base64,mimeType:e.mimeType}))),e.length>0&&u.push({type:"text",text:e}),n.length>0&&u.push(...n),u.length>0&&l.push({role:"assistant",content:u,id:s}),o.length>0&&l.push({role:"tool",id:i(),content:o.map(e=>{let t=a[e.toolName];return(null==t?void 0:t.experimental_toToolResultContent)!=null?{type:"tool-result",toolCallId:e.toolCallId,toolName:e.toolName,result:t.experimental_toToolResultContent(e.result),experimental_content:t.experimental_toToolResultContent(e.result)}:{type:"tool-result",toolCallId:e.toolCallId,toolName:e.toolName,result:e.result}})}),l}f=ty;var tT=(0,x.hK)({prefix:"aitxt",size:24}),tS=(0,x.hK)({prefix:"msg",size:24});async function tI({model:e,tools:t,toolChoice:r,system:a,prompt:n,messages:o,maxRetries:s,abortSignal:i,headers:l,maxSteps:u=1,experimental_generateMessageId:p=tS,experimental_output:c,experimental_continueSteps:m=!1,experimental_telemetry:d,experimental_providerMetadata:h,providerOptions:f=h,experimental_activeTools:g,experimental_prepareStep:y,experimental_repairToolCall:v,_internal:{generateId:b=tT,currentDate:x=()=>new Date}={},onStepFinish:w,...z}){var T;if(u<1)throw new A({parameter:"maxSteps",value:u,message:"maxSteps must be at least 1"});let{maxRetries:S,retry:I}=q({maxRetries:s}),j=F({model:e,telemetry:d,headers:l,settings:{...z,maxRetries:S}}),R=eB({prompt:{system:null!=(T=null==c?void 0:c.injectIntoSystemPrompt({system:a,model:e}))?T:a,prompt:n,messages:o},tools:t}),_=Z(d);return K({name:"ai.generateText",attributes:G({telemetry:d,attributes:{...J({operationId:"ai.generateText",telemetry:d}),...j,"ai.model.provider":e.provider,"ai.model.id":e.modelId,"ai.prompt":{input:()=>JSON.stringify({system:a,prompt:n,messages:o})},"ai.settings.maxSteps":u}}),tracer:_,fn:async n=>{var o,s,h,T,S,M,k,C,E,A,O,N,$,D;let P,U=eS(z),q=[],F=[],L=[],V=0,B=[],Z="",W=[],H=[],X={completionTokens:0,promptTokens:0,totalTokens:0},Q="initial";do{let n=0===V?R.type:"messages",N=[...R.messages,...B],$=await (null==y?void 0:y({model:e,steps:H,maxSteps:u,stepNumber:V})),D=null!=(o=null==$?void 0:$.toolChoice)?o:r,Y=null!=(s=null==$?void 0:$.experimental_activeTools)?s:g,ee=null!=(h=null==$?void 0:$.model)?h:e,et=await ez({prompt:{type:n,system:R.system,messages:N},modelSupportsImageUrls:ee.supportsImageUrls,modelSupportsUrl:null==(T=ee.supportsUrl)?void 0:T.bind(ee)}),er={type:"regular",...tn({tools:t,toolChoice:D,activeTools:Y})};P=await I(()=>K({name:"ai.generateText.doGenerate",attributes:G({telemetry:d,attributes:{...J({operationId:"ai.generateText.doGenerate",telemetry:d}),...j,"ai.model.provider":ee.provider,"ai.model.id":ee.modelId,"ai.prompt.format":{input:()=>n},"ai.prompt.messages":{input:()=>e1(et)},"ai.prompt.tools":{input:()=>{var e;return null==(e=er.tools)?void 0:e.map(e=>JSON.stringify(e))}},"ai.prompt.toolChoice":{input:()=>null!=er.toolChoice?JSON.stringify(er.toolChoice):void 0},"gen_ai.system":ee.provider,"gen_ai.request.model":ee.modelId,"gen_ai.request.frequency_penalty":z.frequencyPenalty,"gen_ai.request.max_tokens":z.maxTokens,"gen_ai.request.presence_penalty":z.presencePenalty,"gen_ai.request.stop_sequences":z.stopSequences,"gen_ai.request.temperature":z.temperature,"gen_ai.request.top_k":z.topK,"gen_ai.request.top_p":z.topP}}),tracer:_,fn:async t=>{var r,a,o,s,u,p;let m=await ee.doGenerate({mode:er,...U,inputFormat:n,responseFormat:null==c?void 0:c.responseFormat({model:e}),prompt:et,providerMetadata:f,abortSignal:i,headers:l}),h={id:null!=(a=null==(r=m.response)?void 0:r.id)?a:b(),timestamp:null!=(s=null==(o=m.response)?void 0:o.timestamp)?s:x(),modelId:null!=(p=null==(u=m.response)?void 0:u.modelId)?p:ee.modelId};return t.setAttributes(G({telemetry:d,attributes:{"ai.response.finishReason":m.finishReason,"ai.response.text":{output:()=>m.text},"ai.response.toolCalls":{output:()=>JSON.stringify(m.toolCalls)},"ai.response.id":h.id,"ai.response.model":h.modelId,"ai.response.timestamp":h.timestamp.toISOString(),"ai.usage.promptTokens":m.usage.promptTokens,"ai.usage.completionTokens":m.usage.completionTokens,"gen_ai.response.finish_reasons":[m.finishReason],"gen_ai.response.id":h.id,"gen_ai.response.model":h.modelId,"gen_ai.usage.input_tokens":m.usage.promptTokens,"gen_ai.usage.output_tokens":m.usage.completionTokens}})),{...m,response:h}}})),q=await Promise.all((null!=(S=P.toolCalls)?S:[]).map(e=>tb({toolCall:e,tools:t,repairToolCall:v,system:a,messages:N}))),F=null==t?[]:await tj({toolCalls:q,tools:t,tracer:_,telemetry:d,messages:N,abortSignal:i});let ea=eK(P.usage);X=eG(X,ea);let en="done";++V<u&&(m&&"length"===P.finishReason&&0===q.length?en="continue":q.length>0&&F.length===q.length&&(en="tool-result"));let eo=null!=(M=P.text)?M:"",es="continue"===Q&&Z.trimEnd()!==Z?eo.trimStart():eo,ei="continue"===en?function(e){let t=ts(e);return t?t.prefix+t.whitespace:e}(es):es;if(Z="continue"===en||"continue"===Q?Z+ei:ei,L=t_(P.reasoning),W.push(...null!=(k=P.sources)?k:[]),"continue"===Q){let e=B[B.length-1];"string"==typeof e.content?e.content+=ei:e.content.push({text:ei,type:"text"})}else B.push(...tz({text:Z,files:tM(P.files),reasoning:t_(P.reasoning),tools:null!=t?t:{},toolCalls:q,toolResults:F,messageId:p(),generateMessageId:p}));let el={stepType:Q,text:ei,reasoning:tw(L),reasoningDetails:L,files:tM(P.files),sources:null!=(C=P.sources)?C:[],toolCalls:q,toolResults:F,finishReason:P.finishReason,usage:ea,warnings:P.warnings,logprobs:P.logprobs,request:null!=(E=P.request)?E:{},response:{...P.response,headers:null==(A=P.rawResponse)?void 0:A.headers,body:null==(O=P.rawResponse)?void 0:O.body,messages:structuredClone(B)},providerMetadata:P.providerMetadata,experimental_providerMetadata:P.providerMetadata,isContinued:"continue"===en};H.push(el),await (null==w?void 0:w(el)),Q=en}while("done"!==Q);return n.setAttributes(G({telemetry:d,attributes:{"ai.response.finishReason":P.finishReason,"ai.response.text":{output:()=>P.text},"ai.response.toolCalls":{output:()=>JSON.stringify(P.toolCalls)},"ai.usage.promptTokens":P.usage.promptTokens,"ai.usage.completionTokens":P.usage.completionTokens}})),new tR({text:Z,files:tM(P.files),reasoning:tw(L),reasoningDetails:L,sources:W,outputResolver:()=>{if(null==c)throw new e5;return c.parseOutput({text:Z},{response:P.response,usage:X,finishReason:P.finishReason})},toolCalls:q,toolResults:F,finishReason:P.finishReason,usage:X,warnings:P.warnings,request:null!=(N=P.request)?N:{},response:{...P.response,headers:null==($=P.rawResponse)?void 0:$.headers,body:null==(D=P.rawResponse)?void 0:D.body,messages:B},logprobs:P.logprobs,steps:H,providerMetadata:P.providerMetadata})}})}async function tj({toolCalls:e,tools:t,tracer:r,telemetry:a,messages:n,abortSignal:o}){return(await Promise.all(e.map(async({toolCallId:e,toolName:s,args:i})=>{let l=t[s];if((null==l?void 0:l.execute)==null)return;let u=await K({name:"ai.toolCall",attributes:G({telemetry:a,attributes:{...J({operationId:"ai.toolCall",telemetry:a}),"ai.toolCall.name":s,"ai.toolCall.id":e,"ai.toolCall.args":{output:()=>JSON.stringify(i)}}}),tracer:r,fn:async t=>{try{let r=await l.execute(i,{toolCallId:e,messages:n,abortSignal:o});try{t.setAttributes(G({telemetry:a,attributes:{"ai.toolCall.result":{output:()=>JSON.stringify(r)}}}))}catch(e){}return r}catch(t){throw new ta({toolCallId:e,toolName:s,toolArgs:i,cause:t})}}});return{type:"tool-result",toolCallId:e,toolName:s,args:i,result:u}}))).filter(e=>null!=e)}var tR=class{constructor(e){this.text=e.text,this.files=e.files,this.reasoning=e.reasoning,this.reasoningDetails=e.reasoningDetails,this.toolCalls=e.toolCalls,this.toolResults=e.toolResults,this.finishReason=e.finishReason,this.usage=e.usage,this.warnings=e.warnings,this.request=e.request,this.response=e.response,this.steps=e.steps,this.experimental_providerMetadata=e.providerMetadata,this.providerMetadata=e.providerMetadata,this.logprobs=e.logprobs,this.outputResolver=e.outputResolver,this.sources=e.sources}get experimental_output(){return this.outputResolver()}};function t_(e){return null==e?[]:"string"==typeof e?[{type:"text",text:e}]:e}function tM(e){var t;return null!=(t=null==e?void 0:e.map(e=>new Q(e)))?t:[]}j({},{object:()=>tP,text:()=>tD});var tk="AI_InvalidStreamPartError",tC=`vercel.ai.error.${tk}`,tE=Symbol.for(tC),tA=class extends b.bD{constructor({chunk:e,message:t}){super({name:tk,message:t}),this[g]=!0,this.chunk=e}static isInstance(e){return b.bD.hasMarker(e,tC)}};g=tE;var tO="vercel.ai.error.AI_MCPClientError",tN=Symbol.for(tO),t$=class extends b.bD{constructor({name:e="MCPClientError",message:t,cause:r}){super({name:e,message:t,cause:r}),this[y]=!0}static isInstance(e){return b.bD.hasMarker(e,tO)}};y=tN;var tD=()=>({type:"text",responseFormat:()=>({type:"text"}),injectIntoSystemPrompt:({system:e})=>e,parsePartial:({text:e})=>({partial:e}),parseOutput:({text:e})=>e}),tP=({schema:e})=>{let t=(0,S.mD)(e);return{type:"object",responseFormat:({model:e})=>({type:"json",schema:e.supportsStructuredOutputs?t.jsonSchema:void 0}),injectIntoSystemPrompt:({system:e,model:r})=>r.supportsStructuredOutputs?e:eW({prompt:e,schema:t.jsonSchema}),parsePartial({text:e}){let t=(0,S.d1)(e);switch(t.state){case"failed-parse":case"undefined-input":return;case"repaired-parse":case"successful-parse":return{partial:t.value};default:{let e=t.state;throw Error(`Unsupported parse state: ${e}`)}}},parseOutput({text:e},r){let a=(0,x.N8)({text:e});if(!a.success)throw new eo({message:"No object generated: could not parse the response.",cause:a.error,text:e,response:r.response,usage:r.usage,finishReason:r.finishReason});let n=(0,x.ZZ)({value:a.value,schema:t});if(!n.success)throw new eo({message:"No object generated: response did not match schema.",cause:n.error,text:e,response:r.response,usage:r.usage,finishReason:r.finishReason});return n.value}}};async function tU({stream:e,onError:t}){let r=e.getReader();try{for(;;){let{done:e}=await r.read();if(e)break}}catch(e){null==t||t(e)}finally{r.releaseLock()}}function tq(e,t){let r,a,n=e.getReader(),o=t.getReader(),s=!1,i=!1;async function l(e){try{null==r&&(r=n.read());let t=await r;r=void 0,t.done?e.close():e.enqueue(t.value)}catch(t){e.error(t)}}async function u(e){try{null==a&&(a=o.read());let t=await a;a=void 0,t.done?e.close():e.enqueue(t.value)}catch(t){e.error(t)}}return new ReadableStream({async pull(e){try{if(s)return void await u(e);if(i)return void await l(e);null==r&&(r=n.read()),null==a&&(a=o.read());let{result:t,reader:p}=await Promise.race([r.then(e=>({result:e,reader:n})),a.then(e=>({result:e,reader:o}))]);t.done||e.enqueue(t.value),p===n?(r=void 0,t.done&&(await u(e),s=!0)):(a=void 0,t.done&&(i=!0,await l(e)))}catch(t){e.error(t)}},cancel(){n.cancel(),o.cancel()}})}(0,x.hK)({prefix:"aitxt",size:24}),(0,x.hK)({prefix:"msg",size:24}),b.bD,b.bD;var tJ="AI_NoSuchProviderError",tF=`vercel.ai.error.${tJ}`,tL=Symbol.for(tF),tV=class extends b.eM{constructor({modelId:e,modelType:t,providerId:r,availableProviders:a,message:n=`No such provider: ${r} (available providers: ${a.join()})`}){super({errorName:tJ,modelId:e,modelType:t,message:n}),this[v]=!0,this.providerId=r,this.availableProviders=a}static isInstance(e){return b.bD.hasMarker(e,tF)}};v=tL;var tB="2024-11-05",tZ=[tB,"2024-10-07"],tK=T.z.object({name:T.z.string(),version:T.z.string()}).passthrough(),tG=T.z.object({_meta:T.z.optional(T.z.object({}).passthrough())}).passthrough(),tW=T.z.object({method:T.z.string(),params:T.z.optional(tG)}),tH=T.z.object({experimental:T.z.optional(T.z.object({}).passthrough()),logging:T.z.optional(T.z.object({}).passthrough()),prompts:T.z.optional(T.z.object({listChanged:T.z.optional(T.z.boolean())}).passthrough()),resources:T.z.optional(T.z.object({subscribe:T.z.optional(T.z.boolean()),listChanged:T.z.optional(T.z.boolean())}).passthrough()),tools:T.z.optional(T.z.object({listChanged:T.z.optional(T.z.boolean())}).passthrough())}).passthrough(),tX=tG.extend({protocolVersion:T.z.string(),capabilities:tH,serverInfo:tK,instructions:T.z.optional(T.z.string())}),tQ=tG.extend({nextCursor:T.z.optional(T.z.string())}),tY=T.z.object({name:T.z.string(),description:T.z.optional(T.z.string()),inputSchema:T.z.object({type:T.z.literal("object"),properties:T.z.optional(T.z.object({}).passthrough())}).passthrough()}).passthrough(),t0=tQ.extend({tools:T.z.array(tY)}),t1=T.z.object({type:T.z.literal("text"),text:T.z.string()}).passthrough(),t2=T.z.object({type:T.z.literal("image"),data:T.z.string().base64(),mimeType:T.z.string()}).passthrough(),t4=T.z.object({uri:T.z.string(),mimeType:T.z.optional(T.z.string())}).passthrough(),t8=t4.extend({text:T.z.string()}),t6=t4.extend({blob:T.z.string().base64()}),t7=T.z.object({type:T.z.literal("resource"),resource:T.z.union([t8,t6])}).passthrough(),t3=tG.extend({content:T.z.array(T.z.union([t1,t2,t7])),isError:T.z.boolean().default(!1).optional()}).or(tG.extend({toolResult:T.z.unknown()})),t9=T.z.object({jsonrpc:T.z.literal("2.0"),id:T.z.union([T.z.string(),T.z.number().int()])}).merge(tW).strict(),t5=T.z.object({jsonrpc:T.z.literal("2.0"),id:T.z.union([T.z.string(),T.z.number().int()]),result:tG}).strict(),re=T.z.object({jsonrpc:T.z.literal("2.0"),id:T.z.union([T.z.string(),T.z.number().int()]),error:T.z.object({code:T.z.number().int(),message:T.z.string(),data:T.z.optional(T.z.unknown())})}).strict(),rt=T.z.object({jsonrpc:T.z.literal("2.0")}).merge(T.z.object({method:T.z.string(),params:T.z.optional(tG)})).strict(),rr=T.z.union([t9,rt,t5,re]),ra=class{constructor({url:e,headers:t}){this.connected=!1,this.url=new URL(e),this.headers=t}async start(){return new Promise((e,t)=>{if(this.connected)return e();this.abortController=new AbortController,(async()=>{var r,a,n;try{let n=new Headers(this.headers);n.set("Accept","text/event-stream");let o=await fetch(this.url.href,{headers:n,signal:null==(r=this.abortController)?void 0:r.signal});if(!o.ok||!o.body){let e=new t$({message:`MCP SSE Transport Error: ${o.status} ${o.statusText}`});return null==(a=this.onerror)||a.call(this,e),t(e)}let s=o.body.pipeThrough(new TextDecoderStream).pipeThrough(createEventSourceParserStream()).getReader(),i=async()=>{var r,a,n;try{for(;;){let{done:t,value:n}=await s.read();if(t){if(this.connected)throw this.connected=!1,new t$({message:"MCP SSE Transport Error: Connection closed unexpectedly"});return}let{event:o,data:i}=n;if("endpoint"===o){if(this.endpoint=new URL(i,this.url),this.endpoint.origin!==this.url.origin)throw new t$({message:`MCP SSE Transport Error: Endpoint origin does not match connection origin: ${this.endpoint.origin}`});this.connected=!0,e()}else if("message"===o)try{let e=rr.parse(JSON.parse(i));null==(r=this.onmessage)||r.call(this,e)}catch(t){let e=new t$({message:"MCP SSE Transport Error: Failed to parse message",cause:t});null==(a=this.onerror)||a.call(this,e)}}}catch(e){if(e instanceof Error&&"AbortError"===e.name)return;null==(n=this.onerror)||n.call(this,e),t(e)}};this.sseConnection={close:()=>s.cancel()},i()}catch(e){if(e instanceof Error&&"AbortError"===e.name)return;null==(n=this.onerror)||n.call(this,e),t(e)}})()})}async close(){var e,t,r;this.connected=!1,null==(e=this.sseConnection)||e.close(),null==(t=this.abortController)||t.abort(),null==(r=this.onclose)||r.call(this)}async send(e){var t,r,a;if(!this.endpoint||!this.connected)throw new t$({message:"MCP SSE Transport Error: Not connected"});try{let a=new Headers(this.headers);a.set("Content-Type","application/json");let n={method:"POST",headers:a,body:JSON.stringify(e),signal:null==(t=this.abortController)?void 0:t.signal},o=await fetch(this.endpoint,n);if(!o.ok){let e=await o.text().catch(()=>null),t=new t$({message:`MCP SSE Transport Error: POSTing to endpoint (HTTP ${o.status}): ${e}`});null==(r=this.onerror)||r.call(this,t);return}}catch(e){null==(a=this.onerror)||a.call(this,e);return}}};function rn(e={}){let t=new TextEncoder,r="";return new TransformStream({async start(){e.onStart&&await e.onStart()},async transform(a,n){n.enqueue(t.encode(a)),r+=a,e.onToken&&await e.onToken(a),e.onText&&"string"==typeof a&&await e.onText(a)},async flush(){e.onCompletion&&await e.onCompletion(r),e.onFinal&&await e.onFinal(r)}})}function ro(e,t){return e.pipeThrough(new TransformStream({transform:async(e,t)=>{var r;if("string"==typeof e)return void t.enqueue(e);if("event"in e){"on_chat_model_stream"===e.event&&ru(null==(r=e.data)?void 0:r.chunk,t);return}ru(e,t)}})).pipeThrough(rn(t)).pipeThrough(new TextDecoderStream).pipeThrough(new TransformStream({transform:async(e,t)=>{t.enqueue((0,S.H4)("text",e))}}))}function rs(e,t){return ro(e,t).pipeThrough(new TextEncoderStream)}function ri(e,t){var r;let a=ro(e,null==t?void 0:t.callbacks).pipeThrough(new TextEncoderStream),n=null==t?void 0:t.data,o=null==t?void 0:t.init;return new Response(n?tq(n.stream,a):a,{status:null!=(r=null==o?void 0:o.status)?r:200,statusText:null==o?void 0:o.statusText,headers:R(null==o?void 0:o.headers,{contentType:"text/plain; charset=utf-8",dataStreamVersion:"v1"})})}function rl(e,t){t.dataStream.merge(ro(e,t.callbacks))}function ru(e,t){if("string"==typeof e.content)t.enqueue(e.content);else for(let r of e.content)"text"===r.type&&t.enqueue(r.text)}function rp(e,t){let r,a=(r=!0,e=>(r&&(e=e.trimStart())&&(r=!1),e));return(0,x.NR)(e[Symbol.asyncIterator]()).pipeThrough(new TransformStream({async transform(e,t){t.enqueue(a(e.delta))}})).pipeThrough(rn(t)).pipeThrough(new TextDecoderStream).pipeThrough(new TransformStream({transform:async(e,t)=>{t.enqueue((0,S.H4)("text",e))}}))}function rc(e,t){return rp(e,t).pipeThrough(new TextEncoderStream)}function rm(e,t={}){var r;let{init:a,data:n,callbacks:o}=t,s=rp(e,o).pipeThrough(new TextEncoderStream);return new Response(n?tq(n.stream,s):s,{status:null!=(r=null==a?void 0:a.status)?r:200,statusText:null==a?void 0:a.statusText,headers:R(null==a?void 0:a.headers,{contentType:"text/plain; charset=utf-8",dataStreamVersion:"v1"})})}function rd(e,t){t.dataStream.merge(rp(e,t.callbacks))}j({},{mergeIntoDataStream:()=>rl,toDataStream:()=>rs,toDataStreamResponse:()=>ri}),j({},{mergeIntoDataStream:()=>rd,toDataStream:()=>rc,toDataStreamResponse:()=>rm})}}]);
_next/static/chunks/bd904a5c-a365b175d1933289.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/framework-17e4362dfeb1e631.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/main-aa062daf7f95e72c.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/main-app-f27e1f97d10457bf.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{8152:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,894,23)),Promise.resolve().then(n.t.bind(n,4970,23)),Promise.resolve().then(n.t.bind(n,6614,23)),Promise.resolve().then(n.t.bind(n,6975,23)),Promise.resolve().then(n.t.bind(n,7555,23)),Promise.resolve().then(n.t.bind(n,4911,23)),Promise.resolve().then(n.t.bind(n,9665,23)),Promise.resolve().then(n.t.bind(n,1295,23))},9393:()=>{}},e=>{var s=s=>e(e.s=s);e.O(0,[441,684],()=>(s(5415),s(8152))),_N_E=e.O()}]);
_next/static/chunks/pages/_app-da15c11dea942c36.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{326:(_,n,p)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return p(472)}])}},_=>{var n=n=>_(_.s=n);_.O(0,[593,792],()=>(n(326),n(4294))),_N_E=_.O()}]);
_next/static/chunks/pages/_error-cc3f077a18ea1793.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[731],{2164:(_,n,e)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return e(9341)}])}},_=>{var n=n=>_(_.s=n);_.O(0,[636,593,792],()=>n(2164)),_N_E=_.O()}]);
_next/static/chunks/polyfills-42372ed130431b0a.js ADDED
The diff for this file is too large to render. See raw diff
 
_next/static/chunks/webpack-9682978e3e09731c.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}},i=!0;try{e[o](a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var u=1/0,i=0;i<e.length;i++){for(var[o,n,a]=e[i],l=!0,c=0;c<o.length;c++)(!1&a||u>=a)&&Object.keys(r.O).every(e=>r.O[e](o[c]))?o.splice(c--,1):(l=!1,a<u&&(u=a));if(l){e.splice(i--,1);var d=n();void 0!==d&&(t=d)}}return t}})(),r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&o;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>{},r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var u,l,c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var f=c[d];if(f.getAttribute("src")==o||f.getAttribute("data-webpack")==t+a){u=f;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,r.nc&&u.setAttribute("nonce",r.nc),u.setAttribute("data-webpack",t+a),u.src=r.tu(o)),e[o]=[n];var s=(t,r)=>{u.onerror=u.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=s.bind(null,u.onerror),u.onload=s.bind(null,u.onload),l&&document.head.appendChild(u)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={68:0,618:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^6(|1)8$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),u=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;u.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",u.name="ChunkLoadError",u.type=a,u.request=i,n[1](u)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,u,l]=o,c=0;if(i.some(t=>0!==e[t])){for(n in u)r.o(u,n)&&(r.m[n]=u[n]);if(l)var d=l(r)}for(t&&t(o);c<i.length;c++)a=i[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(d)},o=self.webpackChunk_N_E=self.webpackChunk_N_E||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})()})();
_next/static/css/2e82de4fb0b28870.css ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ @font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/55c55f0601d81cf3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/26a46d62cd723877-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/97e0cb1ae144a2a9-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/581909926a08bbc8-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_e8ce0c{font-family:Inter,Inter Fallback;font-style:normal}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
2
+ ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
3
+ */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width:1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-right-12{right:-3rem}.-top-12{top:-3rem}.bottom-0{bottom:0}.bottom-5{bottom:1.25rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-5{left:1.25rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-5{right:1.25rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.top-2{top:.5rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[1\]{z-index:1}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.size-4{width:1rem;height:1rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-96{max-height:24rem}.max-h-\[300px\]{max-height:300px}.max-h-\[60vh\]{max-height:60vh}.max-h-\[90vh\]{max-height:90vh}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-\[80px\]{min-height:80px}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-5{width:1.25rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[100px\]{width:100px}.w-\[1px\]{width:1px}.w-auto{width:auto}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.min-w-11{min-width:2.75rem}.min-w-5{min-width:1.25rem}.min-w-9{min-width:2.25rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-\[--skeleton-width\]{max-width:var(--skeleton-width)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:max-content}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-px{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x:-1px}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-x-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-px{--tw-translate-x:1px}.translate-x-px,.translate-y-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.rotate-45{--tw-rotate:45deg}.rotate-45,.rotate-90{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{user-select:none}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-t-\[10px\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-border\/50{border-color:hsl(var(--border)/.5)}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/50{border-color:hsl(var(--destructive)/.5)}.border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:transparent}.border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity,1))}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\/80{background-color:rgb(0 0 0/.8)}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-foreground{background-color:hsl(var(--foreground))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/50{background-color:hsl(var(--muted)/.5)}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:transparent}.bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity,1))}.bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.bg-opacity-40{--tw-bg-opacity:0.4}.bg-opacity-80{--tw-bg-opacity:0.8}.fill-current{fill:currentColor}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-1{padding-left:.25rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.8rem\]{font-size:.8rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground)/.5)}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\],.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0/0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px -6px rgb(0 0 0/0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-ring{--tw-ring-color:hsl(var(--ring))}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\2c right\2c width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\2c opa\]{transition-property:margin,opa;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\2c height\2c padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.fade-in-0{--tw-enter-opacity:0}.fade-in-80{--tw-enter-opacity:0.8}.zoom-in-95{--tw-enter-scale:.95}.duration-1000{animation-duration:1s}.duration-200{animation-duration:.2s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}:root{--background:0 0% 100%;--foreground:222.2 84% 4.9%;--card:0 0% 100%;--card-foreground:222.2 84% 4.9%;--popover:0 0% 100%;--popover-foreground:222.2 84% 4.9%;--primary:142.1 76.2% 36.3%;--primary-foreground:355.7 100% 97.3%;--secondary:210 40% 96.1%;--secondary-foreground:222.2 47.4% 11.2%;--muted:210 40% 96.1%;--muted-foreground:215.4 16.3% 46.9%;--accent:210 40% 96.1%;--accent-foreground:222.2 47.4% 11.2%;--destructive:0 84.2% 60.2%;--destructive-foreground:210 40% 98%;--border:214.3 31.8% 91.4%;--input:214.3 31.8% 91.4%;--ring:142.1 76.2% 36.3%;--radius:0.5rem}.dark{--background:222.2 84% 4.9%;--foreground:210 40% 98%;--card:222.2 84% 4.9%;--card-foreground:210 40% 98%;--popover:222.2 84% 4.9%;--popover-foreground:210 40% 98%;--primary:142.1 70.6% 45.3%;--primary-foreground:222.2 47.4% 11.2%;--secondary:217.2 32.6% 17.5%;--secondary-foreground:210 40% 98%;--muted:217.2 32.6% 17.5%;--muted-foreground:215 20.2% 65.1%;--accent:217.2 32.6% 17.5%;--accent-foreground:210 40% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:210 40% 98%;--border:217.2 32.6% 17.5%;--input:217.2 32.6% 17.5%;--ring:142.1 76.2% 36.3%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-width:1px}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive)/.8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted)/.5)}.hover\:bg-orange-500:hover{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.hover\:bg-primary:hover{background-color:hsl(var(--primary))}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary)/.8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:bg-zinc-500:hover{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity,1))}.hover\:bg-zinc-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity,1))}.hover\:bg-zinc-800:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary-foreground:hover{color:hsl(var(--primary-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-primary:focus{background-color:hsl(var(--primary))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-primary-foreground:focus{color:hsl(var(--primary-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-100,.group\/menu-item:hover .group-hover\/menu-item\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted)/.4)}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group.destructive .group-\[\.destructive\]\:hover\:border-destructive\/30:hover{border-color:hsl(var(--destructive)/.3)}.group.destructive .group-\[\.destructive\]\:hover\:bg-destructive:hover{background-color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:hover\:text-destructive-foreground:hover{color:hsl(var(--destructive-foreground))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity,1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-destructive:focus{--tw-ring-color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.has-\[\:disabled\]\:opacity-50:has(:disabled){opacity:.5}.group\/menu-item:has([data-sidebar=menu-action]) .group-has-\[\[data-sidebar\=menu-action\]\]\/menu-item\:pr-8{padding-right:2rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:bg-accent[aria-selected=true]{background-color:hsl(var(--accent))}.aria-selected\:bg-accent\/50[aria-selected=true]{background-color:hsl(var(--accent)/.5)}.aria-selected\:text-accent-foreground[aria-selected=true]{color:hsl(var(--accent-foreground))}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.aria-selected\:opacity-100[aria-selected=true]{opacity:1}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom],.data-\[side\=left\]\:-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\[side\=right\]\:translate-x-1[data-side=right],.data-\[side\=top\]\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end],.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x)}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[active\]\:bg-accent\/50[data-active]{background-color:hsl(var(--accent)/.5)}.data-\[selected\=\'true\'\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=on\]\:bg-accent[data-state=on],.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:hsl(var(--accent)/.5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=on\]\:text-accent-foreground[data-state=on],.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 rgb(0 0 0/0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-],.data-\[state\=open\]\:animate-in[data-state=open],.data-\[state\=visible\]\:animate-in[data-state=visible]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-],.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[state\=hidden\]\:animate-out[data-state=hidden],.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-],.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:fade-out-80[data-state=closed]{--tw-exit-opacity:0.8}.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open],.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale:.9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x:13rem}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x:-13rem}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x:13rem}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x:-13rem}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:slide-out-to-right-full[data-state=closed],.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:.25rem}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!size-8{width:2rem!important;height:2rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[--sidebar-width-icon\]{width:var(--sidebar-width-icon)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\]{width:calc(var(--sidebar-width-icon) + 1rem)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\]{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180,.group[data-state=open] .group-data-\[state\=open\]\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-0{padding:0!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-2{padding:.5rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.peer[data-variant=inset]~.peer-data-\[variant\=inset\]\:min-h-\[calc\(100svh-theme\(spacing\.4\)\)\]{min-height:calc(100svh - 1rem)}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}@media (min-width:640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:top-auto{top:auto}.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\:text-left{text-align:left}.data-\[state\=open\]\:sm\:slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y:100%}}@media (min-width:768px){.md\:absolute{position:absolute}.md\:block{display:block}.md\:flex{display:flex}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:max-w-\[420px\]{max-width:420px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:opacity-0{opacity:0}.after\:md\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-state=collapsed][data-variant=inset]~.md\:peer-data-\[state\=collapsed\]\:peer-data-\[variant\=inset\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:.75rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1024px){.lg\:w-\[500px\]{width:500px}}@media (min-width:1280px){.xl\:w-\[600px\]{width:600px}}.\[\&\:has\(\[aria-selected\]\)\]\:bg-accent:has([aria-selected]){background-color:hsl(var(--accent))}.first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:has([aria-selected]):first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:has([aria-selected]):last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[aria-selected\]\.day-outside\)\]\:bg-accent\/50:has([aria-selected].day-outside){background-color:hsl(var(--accent)/.5)}.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end){border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:h-3\.5>svg{height:.875rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:w-3\.5>svg{width:.875rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate:90deg}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div,.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate:180deg}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border)/.5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize{cursor:e-resize}
_next/static/media/26a46d62cd723877-s.woff2 ADDED
Binary file (18.8 kB). View file
 
_next/static/media/55c55f0601d81cf3-s.woff2 ADDED
Binary file (25.9 kB). View file
 
_next/static/media/581909926a08bbc8-s.woff2 ADDED
Binary file (19.1 kB). View file
 
_next/static/media/8e9860b6e62d6359-s.woff2 ADDED
Binary file (85.3 kB). View file
 
_next/static/media/97e0cb1ae144a2a9-s.woff2 ADDED
Binary file (11.2 kB). View file
 
_next/static/media/df0a9ae256c0569c-s.woff2 ADDED
Binary file (10.3 kB). View file
 
_next/static/media/e4af272ccee01ff0-s.p.woff2 ADDED
Binary file (48.4 kB). View file
 
bambot_v0.jpg ADDED

Git LFS Details

  • SHA256: b72c41077a713a598ccb295bfac0bf968e24e87a5a7b38591cd1d8da74ddee59
  • Pointer size: 131 Bytes
  • Size of remote file: 645 kB
bambot_v0_base.png ADDED

Git LFS Details

  • SHA256: d4e74f809a73f516c884c61bdecc3370dcfdae45b60ce1461ae7aa276a01d0cd
  • Pointer size: 131 Bytes
  • Size of remote file: 695 kB
favicon.ico ADDED
index.html CHANGED
@@ -1,19 +1 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/2e82de4fb0b28870.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9682978e3e09731c.js"/><script src="/_next/static/chunks/4bd1b696-7e8243be45abfec2.js" async=""></script><script src="/_next/static/chunks/684-4ce5e6d50b92cbef.js" async=""></script><script src="/_next/static/chunks/main-app-f27e1f97d10457bf.js" async=""></script><script src="/_next/static/chunks/874-d5b9b203af7637c3.js" async=""></script><script src="/_next/static/chunks/app/layout-557283093bad1bf7.js" async=""></script><script src="/_next/static/chunks/b536a0f1-8e928607e65d05e8.js" async=""></script><script src="/_next/static/chunks/bd904a5c-a365b175d1933289.js" async=""></script><script src="/_next/static/chunks/ba12c10f-1bf210e1db10c544.js" async=""></script><script src="/_next/static/chunks/1329d575-baf00f741997f8c1.js" async=""></script><script src="/_next/static/chunks/881-47c588f365fe1541.js" async=""></script><script src="/_next/static/chunks/app/page-d26a24c6810d0a4b.js" async=""></script><link rel="preload" href="https://buttons.github.io/buttons.js" as="script"/><meta name="next-size-adjust" content=""/><title>BamBot</title><meta name="description" content="Open source, low-cost AI robots 🤖"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__className_e8ce0c bg-black text-white w-screen h-screen"><header class="text-white w-full p-5 sm:px-10 flex justify-between items-center fixed top-0 left-0 right-0 z-50"><a href="/"><div class="text-2xl font-bold e">Dora-BamBot</div><div class="text-xl e text-red-500">This browser is not supported! Please use Chrome.</div></a><div class="text-2xl e"><a href="https://shop.wowrobo.com/products/so-arm101-diy-kit-assembled-version-1?sca_ref=8999006.W1G76EYstQkFoP"><a href="https://shop.wowrobo.com/products/so-arm101-diy-kit-assembled-version-1?sca_ref=8999006.W1G76EYstQkFoP">Buy assembled SO101 with 5% Discount on WowRobo with the code:<!-- --> <span class="text-red-500"> 1ms.ai</span></a></a></div><a class="github-button" href="https://github.com/dora-bambot/dora-bambot.github.io" data-size="large" data-show-count="true" aria-label="Star timqian/bambot on GitHub">Star</a></header><div style="position:relative;width:100%;height:100%;overflow:hidden;pointer-events:auto"><div style="width:100%;height:100%"><canvas style="display:block"></canvas></div></div><div class="absolute bottom-5 left-5 bg-zinc-900 bg-opacity-80 text-white p-4 rounded-lg max-h-[90vh] overflow-y-auto z-50 text-sm"><h3 class="mt-0 mb-4 border-b border-zinc-600 pb-1 font-bold text-base flex justify-between items-center"><span>Joint Controls</span><button class="ml-2 text-xl hover:bg-zinc-800 px-2 rounded-full" title="Collapse">×</button></h3><div class="mt-4 flex justify-between items-center"><button class="text-sm px-3 py-1.5 rounded w-full bg-blue-600 hover:bg-blue-500 &quot;text-white&quot; ">Connect Real Robot</button></div><br/><a class="text-blue" href="https://github.com/dora-bambot/dora-bambot.github.io/tree/main/website/public/URDF">Click me to get the URDF</a></div><div class="fixed bottom-5 right-5 bg-zinc-900 bg-opacity-80 text-white p-4 rounded-lg shadow-lg w-80 z-50"><h4 class="border-b border-zinc-600 pb-2 font-bold mb-2 flex items-center justify-between"><span>AI Control Robot</span><button class="ml-2 bg-zinc-700 hover:bg-zinc-600 text-white py-1 px-2 rounded text-sm">Settings</button></h4><div class="mb-2 max-h-[60vh] overflow-y-auto"></div><div class="flex items-center space-x-2"><div class="relative flex items-center w-full"><button class="absolute left-0 bg-zinc-700 hover:bg-zinc-600 text-zinc-400 p-2 rounded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-5 h-5" aria-hidden="true"><path d="M16 4C16.5523 4 17 4.44772 17 5V9.2L22.2133 5.55071C22.4395 5.39235 22.7513 5.44737 22.9096 5.6736C22.9684 5.75764 23 5.85774 23 5.96033V18.0397C23 18.3158 22.7761 18.5397 22.5 18.5397C22.3974 18.5397 22.2973 18.5081 22.2133 18.4493L17 14.8V19C17 19.5523 16.5523 20 16 20H2C1.44772 20 1 19.5523 1 19V5C1 4.44772 1.44772 4 2 4H16ZM15 6H3V18H15V6ZM7.4 8.82867C7.47607 8.82867 7.55057 8.85036 7.61475 8.8912L11.9697 11.6625C12.1561 11.7811 12.211 12.0284 12.0924 12.2148C12.061 12.2641 12.0191 12.306 11.9697 12.3375L7.61475 15.1088C7.42837 15.2274 7.18114 15.1725 7.06254 14.9861C7.02169 14.9219 7 14.8474 7 14.7713V9.22867C7 9.00776 7.17909 8.82867 7.4 8.82867ZM21 8.84131L17 11.641V12.359L21 15.1587V8.84131Z"></path> </svg></button><input type="text" placeholder="Type a command..." class="flex-1 pl-10 p-2 rounded bg-zinc-700 text-white outline-none" value=""/></div></div></div><!--$--><!--/$--><!--$--><!--/$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><script src="/_next/static/chunks/webpack-9682978e3e09731c.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7514,[\"874\",\"static/chunks/874-d5b9b203af7637c3.js\",\"177\",\"static/chunks/app/layout-557283093bad1bf7.js\"],\"default\"]\n3:I[7555,[],\"\"]\n4:I[1295,[],\"\"]\n5:I[9742,[\"874\",\"static/chunks/874-d5b9b203af7637c3.js\",\"177\",\"static/chunks/app/layout-557283093bad1bf7.js\"],\"Analytics\"]\n6:I[894,[],\"ClientPageRoot\"]\n7:I[9806,[\"367\",\"static/chunks/b536a0f1-8e928607e65d05e8.js\",\"831\",\"static/chunks/bd904a5c-a365b175d1933289.js\",\"803\",\"static/chunks/ba12c10f-1bf210e1db10c544.js\",\"413\",\"static/chunks/1329d575-baf00f741997f8c1.js\",\"874\",\"static/chunks/874-d5b9b203af7637c3.js\",\"881\",\"static/chunks/881-47c588f365fe1541.js\",\"974\",\"static/chunks/app/page-d26a24c6810d0a4b.js\"],\"default\"]\na:I[9665,[],\"MetadataBoundary\"]\nc:I[9665,[],\"OutletBoundary\"]\nf:I[4911,[],\"AsyncMetadataOutlet\"]\n11:I[9665,[],\"ViewportBoundary\"]\n13:I[6614,[],\"\"]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/2e82de4fb0b28870.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"DtkUoStcjKiY0p76MJl9o\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2e82de4fb0b28870.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__className_e8ce0c bg-black text-white w-screen h-screen\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L5\",null,{}]]}]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L6\",null,{\"Component\":\"$7\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@8\",\"$@9\"]}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],null,[\"$\",\"$Lc\",null,{\"children\":[\"$Ld\",\"$Le\",[\"$\",\"$Lf\",null,{\"promise\":\"$@10\"}]]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"Es4in2ccigVWNagZBbNv7\",{\"children\":[[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$13\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"14:\"$Sreact.suspense\"\n15:I[4911,[],\"AsyncMetadata\"]\n8:{}\n9:{}\nb:[\"$\",\"$14\",null,{\"fallback\":null,\"children\":[\"$\",\"$L15\",null,{\"promise\":\"$@16\"}]}]\n"])</script><script>self.__next_f.push([1,"e:null\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nd:null\n"])</script><script>self.__next_f.push([1,"16:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"BamBot\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open source, low-cost AI robots 🤖\"}]],\"error\":null,\"digest\":\"$undefined\"}\n10:{\"metadata\":\"$16:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
index.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 1:"$Sreact.fragment"
2
+ 2:I[7514,["874","static/chunks/874-d5b9b203af7637c3.js","177","static/chunks/app/layout-557283093bad1bf7.js"],"default"]
3
+ 3:I[7555,[],""]
4
+ 4:I[1295,[],""]
5
+ 5:I[9742,["874","static/chunks/874-d5b9b203af7637c3.js","177","static/chunks/app/layout-557283093bad1bf7.js"],"Analytics"]
6
+ 6:I[894,[],"ClientPageRoot"]
7
+ 7:I[9806,["367","static/chunks/b536a0f1-8e928607e65d05e8.js","831","static/chunks/bd904a5c-a365b175d1933289.js","803","static/chunks/ba12c10f-1bf210e1db10c544.js","413","static/chunks/1329d575-baf00f741997f8c1.js","874","static/chunks/874-d5b9b203af7637c3.js","881","static/chunks/881-47c588f365fe1541.js","974","static/chunks/app/page-d26a24c6810d0a4b.js"],"default"]
8
+ a:I[9665,[],"MetadataBoundary"]
9
+ c:I[9665,[],"OutletBoundary"]
10
+ f:I[4911,[],"AsyncMetadataOutlet"]
11
+ 11:I[9665,[],"ViewportBoundary"]
12
+ 13:I[6614,[],""]
13
+ :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
+ :HL["/_next/static/css/2e82de4fb0b28870.css","style"]
15
+ 0:{"P":null,"b":"DtkUoStcjKiY0p76MJl9o","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2e82de4fb0b28870.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_e8ce0c bg-black text-white w-screen h-screen","children":[["$","$L2",null,{}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$L5",null,{}]]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L6",null,{"Component":"$7","searchParams":{},"params":{},"promises":["$@8","$@9"]}],["$","$La",null,{"children":"$Lb"}],null,["$","$Lc",null,{"children":["$Ld","$Le",["$","$Lf",null,{"promise":"$@10"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Es4in2ccigVWNagZBbNv7",{"children":[["$","$L11",null,{"children":"$L12"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$13","$undefined"],"s":false,"S":true}
16
+ 14:"$Sreact.suspense"
17
+ 15:I[4911,[],"AsyncMetadata"]
18
+ 8:{}
19
+ 9:{}
20
+ b:["$","$14",null,{"fallback":null,"children":["$","$L15",null,{"promise":"$@16"}]}]
21
+ e:null
22
+ 12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
23
+ d:null
24
+ 16:{"metadata":[["$","title","0",{"children":"BamBot"}],["$","meta","1",{"name":"description","content":"Open source, low-cost AI robots 🤖"}]],"error":null,"digest":"$undefined"}
25
+ 10:{"metadata":"$16:metadata","error":null,"digest":"$undefined"}
logo.jpg ADDED