Spaces:
Running
Running
| <!--87wwcH_FgNgRe3p1eolDJ--><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/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/93f479601ee12b01-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="https://i.pravatar.cc/150?u=user"/><link rel="preload" as="image" href="https://i.pravatar.cc/150?u=Design Team"/><link rel="preload" as="image" href="https://i.pravatar.cc/150?u=Alex"/><link rel="preload" as="image" href="https://i.pravatar.cc/150?u=Mom"/><link rel="preload" as="image" href="https://i.pravatar.cc/150?u=Project Group"/><link rel="preload" as="image" href="https://picsum.photos/seed/design/400/300"/><link rel="stylesheet" href="/_next/static/css/918e57c118762552.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-b66e35ffe30362a3.js"/><script src="/_next/static/chunks/4bd1b696-c023c6e3521b1417.js" async=""></script><script src="/_next/static/chunks/255-fe5c522e6d28d73f.js" async=""></script><script src="/_next/static/chunks/main-app-cfcf024af855cc4e.js" async=""></script><script src="/_next/static/chunks/app/page-a6a9e74bd013ba35.js" async=""></script><meta name="next-size-adjust" content=""/><title>Create Next App</title><meta name="description" content="Generated by create next app"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_188709 __variable_9a8899 antialiased"><div hidden=""><!--$--><!--/$--></div><div class="min-h-screen flex flex-col p-4 sm:p-6 lg:p-8 bg-slate-900 font-sans"><header class="mb-6 flex justify-between items-center"><div class="flex items-center gap-3"><svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-emerald-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V7a2 2 0 012-2h5l2 2h5a2 2 0 012 2v10a2 2 0 01-2 2z"></path></svg><h1 class="text-2xl font-bold text-slate-100">WhatsApp Automation Interface</h1></div><button class="px-4 py-2 bg-slate-700 text-white rounded-md hover:bg-slate-600 transition-colors duration-300 focus:outline-none focus:ring-2 focus:ring-emerald-400">Hide<!-- --> App Architecture</button></header><section class="bg-slate-800/50 border border-slate-700 rounded-lg p-6 mb-6"><h2 class="text-2xl font-bold text-slate-100 mb-4">Application Design & Architecture Brief</h2><div class="grid grid-cols-1 md:grid-cols-2 gap-6"><div class="bg-slate-800 border border-slate-700 p-6 rounded-lg"><h3 class="text-lg font-bold text-emerald-400 mb-3">1. Introduction</h3><div class="text-slate-300 space-y-2"><p>This document outlines the conceptual design for a desktop application that interfaces with the WhatsApp desktop client. The primary goal is to provide automation capabilities and supervisiing AI agents, such as downloading media, summarise document and other business operation by programmatically observing and interacting with the WhatsApp UI through screen capture, text recognition and simulated inputs.</p></div></div><div class="bg-slate-800 border border-slate-700 p-6 rounded-lg"><h3 class="text-lg font-bold text-emerald-400 mb-3">2. Features & Workflow</h3><div class="text-slate-300 space-y-2"><p class="font-semibold">Core Features:</p><ul class="list-disc list-inside text-slate-400"><li>Real-time screen mirroring of the WhatsApp window.</li><li>Automated detection of media elements (images, videos, files).</li><li>Recognition of text instructions</li><li>User-initiated commands to download specific or all detected media.</li><li>Activity logging for all operations.</li></ul><p class="font-semibold mt-3">Workflow:</p><ol class="list-decimal list-inside text-slate-400"><li>User starts the application and positions the WhatsApp window.</li><li>The backend service continuously captures the WhatsApp window.</li><li>The captured feed is streamed to this frontend interface.</li><li>User clicks an action button (e.g., "Download All Images"), other WhatsApp functions.</li><li>The command or the captured text is sent to the backend.</li><li>The backend uses computer vision to decode the capture text, locate and simulate a "download" and other click on the media.</li></ol></div></div><div class="md:col-span-2"><div class="bg-slate-800 border border-slate-700 p-6 rounded-lg"><h3 class="text-lg font-bold text-emerald-400 mb-3">3. Architecture & Technology Stack</h3><div class="text-slate-300 space-y-2"><div class="grid grid-cols-1 lg:grid-cols-3 gap-4 items-start text-center"><div class="p-4 bg-slate-900 rounded-md"><h4 class="font-bold text-sky-400">Frontend</h4><p class="text-sm">React (with TypeScript) & Tailwind CSS</p><p class="text-xs text-slate-400 mt-1">Responsible for user interface, command invocation, and displaying the screen feed & logs.</p></div><div class="flex items-center justify-center"><div class="flex justify-center items-center my-2"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-500 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg></div><div class="hidden lg:block"><div class="flex justify-center items-center mx-4"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-500 transform rotate-[-90deg]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg></div></div><div class="font-mono text-xs text-emerald-300">WebSockets/HTTP</div><div class="hidden lg:block"><div class="flex justify-center items-center mx-4"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-500 transform rotate-[-90deg]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg></div></div></div><div class="p-4 bg-slate-900 rounded-md"><h4 class="font-bold text-orange-400">Backend</h4><p class="text-sm">Python (with FastAPI)</p><p class="text-xs text-slate-400 mt-1">Handles screen capture, LLM, Multi-modal, computer vision (e.g., OpenCV), automation (e.g., PyAutoGUI), and serves the API.</p></div></div></div></div></div><div class="md:col-span-2"><div class="bg-slate-800 border border-slate-700 p-6 rounded-lg"><h3 class="text-lg font-bold text-emerald-400 mb-3">4. Information Flow</h3><div class="text-slate-300 space-y-2"><div class="space-y-2"><div class="p-3 bg-slate-900 rounded">1. <strong>Screen Capture (Backend):</strong> A Python script captures the WhatsApp window frame by frame.</div><div class="flex justify-center items-center my-2"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-500 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg></div><div class="p-3 bg-slate-900 rounded">2. <strong>Data Streaming (Backend → Frontend):</strong> Frames are encoded (e.g., base64) and sent to the Frontend via WebSockets for a live feed.</div><div class="flex justify-center items-center my-2"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-500 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg></div><div class="p-3 bg-slate-900 rounded">3. <strong>User Instruction (Frontend → Backend):</strong> User clicks an action button, sending a command (e.g., <!-- -->{ "action": "download_images" }<!-- -->) to the FastAPI backend via an HTTP POST request.</div><div class="flex justify-center items-center my-2"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-500 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg></div><div class="p-3 bg-slate-900 rounded">4. <strong>Computer Vision & Automation (Backend):</strong> The backend processes the latest captured frame with a library like OpenCV to find coordinates of download buttons, then uses PyAutoGUI to move the mouse and click them.</div><div class="flex justify-center items-center my-2"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-500 " fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path></svg></div><div class="p-3 bg-slate-900 rounded">5. <strong>Feedback (Backend → Frontend):</strong> The backend sends status updates and results (e.g., "Download complete") back to the frontend, which are displayed in the activity log.</div></div></div></div></div><div class="md:col-span-2"><div class="bg-slate-800 border border-slate-700 p-6 rounded-lg"><h3 class="text-lg font-bold text-emerald-400 mb-3">5. Proposed File Structure</h3><div class="text-slate-300 space-y-2"><p>A typical project structure to keep the frontend and backend code organized and maintainable, whether in a single monorepo or separate repositories.</p><div class="grid grid-cols-1 sm:grid-cols-2 gap-6 !mt-4"><div><h4 class="font-semibold text-sky-400 mb-2">Frontend (React)</h4><pre class="text-xs bg-slate-900 p-4 rounded-md text-slate-400 font-mono overflow-x-auto"><code>/frontend | |
| |-- /src | |
| | |-- /components | |
| | | |-- ControlPanel.tsx | |
| | | |-- ScreenCaptureView.tsx | |
| | |-- /hooks | |
| | | |-- useWebSocket.ts | |
| | |-- /types | |
| | | |-- index.ts | |
| | |-- App.tsx | |
| | |-- index.tsx | |
| |-- /public | |
| | |-- index.html | |
| |-- package.json</code></pre></div><div><h4 class="font-semibold text-orange-400 mb-2">Backend (FastAPI)</h4><pre class="text-xs bg-slate-900 p-4 rounded-md text-slate-400 font-mono overflow-x-auto"><code>/backend | |
| |-- /app | |
| | |-- /api | |
| | | |-- endpoints.py | |
| | | |-- schemas.py | |
| | |-- /services | |
| | | |-- automation.py | |
| | | |-- vision.py | |
| | | |-- capture.py | |
| | |-- main.py | |
| |-- requirements.txt | |
| |-- .env</code></pre></div></div></div></div></div></div></section><main class="flex-grow grid grid-cols-1 lg:grid-cols-3 gap-8 mt-6"><div class="lg:col-span-2"><div class="h-full min-h-[400px] lg:min-h-[600px] flex flex-col bg-slate-800 rounded-lg border border-slate-700 shadow-2xl"><div class="flex items-center p-3 bg-slate-700/50 rounded-t-lg border-b border-slate-600"><div class="flex space-x-2"><div class="w-3 h-3 rounded-full bg-red-500"></div><div class="w-3 h-3 rounded-full bg-yellow-500"></div><div class="w-3 h-3 rounded-full bg-green-500"></div></div><p class="flex-grow text-center text-sm text-slate-400 font-medium">Live Feed: WhatsApp Desktop</p></div><div class="flex-grow flex rounded-b-lg overflow-hidden"><div class="w-[35%] bg-[#111b21] border-r border-slate-600 flex flex-col"><header class="p-3 bg-[#202c33] flex justify-between items-center"><img class="w-10 h-10 rounded-full" src="https://i.pravatar.cc/150?u=user" alt="user avatar"/><div class="flex items-center gap-4 text-slate-400"><svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M15 21a6 6 0 00-9-5.197M15 21a6 6 0 006-5.197M12 12a4 4 0 110-8 4 4 0 010 8z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path></svg></div></header><div class="flex-grow overflow-y-auto"><div class="flex items-center gap-3 p-3 cursor-pointer border-l-4 bg-slate-600 border-emerald-500"><img class="w-12 h-12 rounded-full" src="https://i.pravatar.cc/150?u=Design Team" alt="avatar"/><div class="flex-grow overflow-hidden"><div class="flex justify-between items-center"><p class="font-semibold text-slate-100 truncate">Design Team</p><p class="text-xs text-slate-400">11:42</p></div><p class="text-sm text-slate-400 truncate">Here is the final brief for the project.</p></div></div><div class="flex items-center gap-3 p-3 cursor-pointer border-l-4 border-transparent hover:bg-slate-600/50"><img class="w-12 h-12 rounded-full" src="https://i.pravatar.cc/150?u=Alex" alt="avatar"/><div class="flex-grow overflow-hidden"><div class="flex justify-between items-center"><p class="font-semibold text-slate-100 truncate">Alex</p><p class="text-xs text-slate-400">11:30</p></div><p class="text-sm text-slate-400 truncate">Sounds good, I'll call you later!</p></div></div><div class="flex items-center gap-3 p-3 cursor-pointer border-l-4 border-transparent hover:bg-slate-600/50"><img class="w-12 h-12 rounded-full" src="https://i.pravatar.cc/150?u=Mom" alt="avatar"/><div class="flex-grow overflow-hidden"><div class="flex justify-between items-center"><p class="font-semibold text-slate-100 truncate">Mom</p><p class="text-xs text-slate-400">10:55</p></div><p class="text-sm text-slate-400 truncate">Can you pick up milk on your way home?</p></div></div><div class="flex items-center gap-3 p-3 cursor-pointer border-l-4 border-transparent hover:bg-slate-600/50"><img class="w-12 h-12 rounded-full" src="https://i.pravatar.cc/150?u=Project Group" alt="avatar"/><div class="flex-grow overflow-hidden"><div class="flex justify-between items-center"><p class="font-semibold text-slate-100 truncate">Project Group</p><p class="text-xs text-slate-400">Yesterday</p></div><p class="text-sm text-slate-400 truncate">Let's meet tomorrow at 10am.</p></div></div></div></div><div class="w-[65%] bg-[#0b141a] flex flex-col" style="background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAYCAYAAAAF6fiUAAAAAXNSR0IArs4c6QAAAD9JREFUaEPt0AEBAAAAwqD1T20ND6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBgxUwAAU+a6QcAAAAASUVORK5CYII=');background-blend-mode:overlay;background-size:400px;background-color:rgba(11, 20, 26, 0.95)"><header class="p-3 bg-[#202c33] flex justify-between items-center border-b border-slate-600/50"><div class="flex items-center gap-4"><img class="w-10 h-10 rounded-full" src="https://i.pravatar.cc/150?u=Design Team" alt="group avatar"/><div><p class="font-semibold text-slate-100">Design Team</p><p class="text-xs text-slate-400">Alice, Bob, Charlie</p></div></div><div class="flex items-center gap-4 text-slate-400"><svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z"></path></svg></div></header><main class="flex-grow p-6 overflow-y-auto flex flex-col gap-4"><div class="flex items-end gap-2 justify-start"><div class="max-w-[70%] p-3 rounded-xl bg-slate-700 rounded-bl-md"><p>Hey team, I've attached the photo we need for the campaign.</p><p class="text-xs mt-1 text-right text-slate-400">11:40</p></div></div><div class="flex items-end gap-2 justify-start"><div class="max-w-[70%] p-3 rounded-xl bg-slate-700 rounded-bl-md"><div class="bg-black/20 p-1.5 rounded-lg max-w-xs relative group cursor-pointer"><img src="https://picsum.photos/seed/design/400/300" class="rounded-md" alt="Campaign"/><div class="absolute inset-1.5 bg-black/40 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300 rounded-md"><div class="bg-slate-800/80 rounded-full p-2"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"></path></svg></div></div></div><p class="text-xs mt-1 text-right text-slate-400">11:41</p></div></div><div class="flex items-end gap-2 justify-start"><div class="max-w-[70%] p-3 rounded-xl bg-slate-700 rounded-bl-md"><p>Here is the final brief for the project. Please review it.</p><div class="bg-black/20 p-3 mt-2 rounded-lg flex items-center gap-3 cursor-pointer hover:bg-black/40 transition-colors"><svg xmlns="http://www.w3.org/2000/svg" class="h-10 w-10 text-red-400 flex-shrink-0" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z" clip-rule="evenodd"></path></svg><div><p class="font-medium text-slate-100">Project_Brief_Final.pdf</p><p class="text-xs text-slate-400">PDF Document • 1.2 MB</p></div></div><p class="text-xs mt-1 text-right text-slate-400">11:42</p></div></div><div class="flex items-end gap-2 justify-end"><div class="max-w-[70%] p-3 rounded-xl bg-emerald-900 rounded-br-md"><p>Got them. Looks great! I'll start working on it now.</p><p class="text-xs mt-1 text-right text-emerald-300/60">11:45</p></div></div></main><footer class="p-3 bg-[#202c33] flex items-center gap-4"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.828 14.828a4 4 0 01-5.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13"></path></svg><input type="text" placeholder="Type a message" class="flex-grow bg-[#2a3942] rounded-full py-2 px-4 text-slate-200 placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-emerald-500"/><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-slate-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11a7 7 0 01-7 7m0 0a7 7 0 01-7-7m7 7v4m0 0H8m4 0h4m-4-8a3 3 0 01-3-3V5a3 3 0 116 0v6a3 3 0 01-3 3z"></path></svg></footer></div></div></div></div><div><div class="h-full flex flex-col bg-slate-800 rounded-lg border border-slate-700 p-4 shadow-2xl"><h2 class="text-xl font-bold mb-4 text-slate-200">Control Panel</h2><div class="mb-4 p-3 bg-slate-900/50 rounded-md flex items-center justify-between"><span class="font-semibold text-slate-300">Backend Status:</span><div class="flex items-center gap-2"><div class="w-3 h-3 rounded-full animate-pulse bg-yellow-500"></div><span class="font-bold text-yellow-400">Connecting</span></div></div><div class="grid grid-cols-1 sm:grid-cols-3 lg:grid-cols-1 gap-3 mb-4"><button disabled="" class="w-full px-4 py-3 bg-emerald-600 text-white font-bold rounded-md hover:bg-emerald-500 transition-colors duration-200 disabled:bg-slate-600 disabled:text-slate-400 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-slate-800 focus:ring-emerald-400">Scan for Media</button><button disabled="" class="w-full px-4 py-3 bg-emerald-600 text-white font-bold rounded-md hover:bg-emerald-500 transition-colors duration-200 disabled:bg-slate-600 disabled:text-slate-400 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-slate-800 focus:ring-emerald-400">Download All Images</button><button disabled="" class="w-full px-4 py-3 bg-emerald-600 text-white font-bold rounded-md hover:bg-emerald-500 transition-colors duration-200 disabled:bg-slate-600 disabled:text-slate-400 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-slate-800 focus:ring-emerald-400">Download All Documents</button></div><div class="flex-grow flex flex-col min-h-0"><h3 class="text-lg font-semibold mb-2 text-slate-300">Activity Log</h3><div class="flex-grow bg-slate-900 p-3 rounded-md overflow-y-auto h-64 lg:h-full border border-slate-700"><ul class="space-y-2 text-sm font-mono"><li class="text-slate-500">No activity yet.</li></ul></div></div></div></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-b66e35ffe30362a3.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[9766,[],\"\"]\n3:I[8924,[],\"\"]\n4:I[1959,[],\"ClientPageRoot\"]\n5:I[9454,[\"974\",\"static/chunks/app/page-a6a9e74bd013ba35.js\"],\"default\"]\n8:I[4431,[],\"OutletBoundary\"]\na:I[5278,[],\"AsyncMetadataOutlet\"]\nc:I[4431,[],\"ViewportBoundary\"]\ne:I[4431,[],\"MetadataBoundary\"]\nf:\"$Sreact.suspense\"\n11:I[7150,[],\"\"]\n:HL[\"/_next/static/media/4cf2300e9c8272f7-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/93f479601ee12b01-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/918e57c118762552.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"87wwcH_FgNgRe3p1eolDJ\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/918e57c118762552.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_188709 __variable_9a8899 antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",[\"$\",\"$La\",null,{\"promise\":\"$@b\"}]]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$f\",null,{\"fallback\":null,\"children\":\"$L10\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"6:{}\n7:\"$0:f:0:1:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"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:I[622,[],\"IconMark\"]\nb:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Create Next App\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Generated by create next app\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"$L12\",\"3\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:\"$b:metadata\"\n"])</script></body></html> |