From 23684baaeb9eca71d77f5ee56e2383f8233f5b11 Mon Sep 17 00:00:00 2001 From: Gizmotronn Date: Fri, 16 Jan 2026 10:14:14 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9D=A4=EF=B8=8F=E2=AD=90=EF=B8=8F=20?= =?UTF-8?q?=E2=86=9D=20[is2z5b=20mprgxr=20f768mr]:=20big=20tutorial=20comi?= =?UTF-8?q?ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 14340 -> 14340 bytes STAR_SAILORS_USER_FLOWS.md | 17 + app/activity/deploy/roover/page.tsx | 4 +- app/game/page.tsx | 997 +++++++++--------- app/setup/rover/page.tsx | 33 + app/setup/satellite/page.tsx | 33 + app/setup/solar/page.tsx | 33 + app/setup/telescope/page.tsx | 33 + app/viewports/roover/page.tsx | 28 +- app/viewports/satellite/page.tsx | 34 +- app/viewports/solar/page.tsx | 28 +- ...p.js => fallback-zFJ3Gbv7pEhrOhXsQoevQ.js} | 0 public/sw.js | 2 +- src/components/game/BottomNavigation.tsx | 147 +++ src/components/game/GameHeader.tsx | 165 +++ src/components/game/MissionControlCard.tsx | 114 ++ src/components/game/PlanetHeroSection.tsx | 92 ++ src/components/game/StructureCard.tsx | 72 ++ src/components/game/index.ts | 5 + src/components/layout/Header/MainHeader.tsx | 9 + src/components/layout/Navbar.tsx | 9 + src/components/layout/Tes.tsx | 11 +- .../onboarding/InteractiveTutorial.tsx | 446 ++++++++ .../onboarding/ProjectPreferencesModal.tsx | 270 +++++ src/components/onboarding/README.md | 189 +++- .../onboarding/StructureExplainer.tsx | 309 ++++++ src/components/onboarding/TutorialWrapper.tsx | 321 ++++++ .../projects/Lidar/cloudspottingOnMars.tsx | 92 +- .../projects/TutorialContentBlock.tsx | 198 +++- .../scenes/deploy/Rover/RoverSection.tsx | 18 +- .../Telescope/TelescopeDeploySidebar.tsx | 3 +- .../deploy/Telescope/TelescopeSection.tsx | 25 +- .../scenes/deploy/Telescope/TypeSelection.tsx | 8 +- .../deploy/satellite/DeploySatellite.tsx | 18 +- .../scenes/deploy/satellite/DeploySidebar.tsx | 3 +- .../deploy/satellite/PlanetFocusView.tsx | 2 + .../scenes/deploy/solar/SolarHealth.tsx | 39 +- src/components/sections/Section.tsx | 4 +- src/components/tabs/OnboardingTab.tsx | 399 ++++++- src/hooks/useUserPreferences.ts | 299 ++++++ supabase/config.toml | 2 +- 41 files changed, 3833 insertions(+), 678 deletions(-) create mode 100644 app/setup/rover/page.tsx create mode 100644 app/setup/satellite/page.tsx create mode 100644 app/setup/solar/page.tsx create mode 100644 app/setup/telescope/page.tsx rename public/{fallback-GO8Z5TWONYn8u-ZQ8w2np.js => fallback-zFJ3Gbv7pEhrOhXsQoevQ.js} (100%) create mode 100644 src/components/game/BottomNavigation.tsx create mode 100644 src/components/game/GameHeader.tsx create mode 100644 src/components/game/MissionControlCard.tsx create mode 100644 src/components/game/PlanetHeroSection.tsx create mode 100644 src/components/game/StructureCard.tsx create mode 100644 src/components/game/index.ts create mode 100644 src/components/onboarding/InteractiveTutorial.tsx create mode 100644 src/components/onboarding/ProjectPreferencesModal.tsx create mode 100644 src/components/onboarding/StructureExplainer.tsx create mode 100644 src/components/onboarding/TutorialWrapper.tsx create mode 100644 src/hooks/useUserPreferences.ts diff --git a/.DS_Store b/.DS_Store index 9e9981d718ede34f4c3e3fc392de438ce9c94edf..94e4b3bd902ce2e5bccae6714cb31bab9d299a6a 100644 GIT binary patch delta 409 zcmZoEXepTB&p2aaK#(AdG1Eu=$yI_fBDwi4E=f80Nem1O9Bz$FpGfE4*h;ekZ2 z4x8Uf$+0qeZRSyMWMuv#*fBXkQG)G|#hf0o_Q`pQQZQzpqBN6VAs+~{8H$m^N#eoOxjl8q9nn=F0t}*JvZk&aW5Z+*-P4;hW#=(%W;gi3 OGI^!yMijgLFaiL8Duz-3 delta 525 zcmZoEXepTB&p3BuK#(Ad!Hr95ldA+}L~`?8T#|C~lNcBnIHnf)1Qb^tcZ5o$V3pu6 z$S@2}&d)6X>R_<9*s$49Xf`8L_L<4&gk{(!ST4)@Upe`MupE@RSwv(LBh#`&lTV0- zFdA%@6+6esy!`RR$?wEhFgk3WF7beond#Hv$yHJcY)(eG>`h6N7f2}~m|~OfN%1nV z2yA{UCCAF>znMqDk&*fCHO|QaiV|$kclej7S53}Sl!7t)6s4IY88)w0%w=TJnNyQ9 zSw>lkE$e37DWIEdlx1MdIAs}To%IHjYn2V^SsC;g${11^@)*iIbMlj+K_S4vz?2U3 z-@N}|0P-pWlFFQPL=do_W50$fiyWjYWl#B;S{`>qR{;xKbp{UXN{~aDYIc8 0) { - window.location.href = "/viewports/roover"; + window.location.href = "/game?view=rover"; } } checkExistingRoverDeployment(); @@ -231,7 +231,7 @@ export default function DeployRoverPage() { setDeployMessage("Rover deployed successfully!"); setTimeout(() => { - window.location.href = "/viewports/roover"; + window.location.href = "/game?view=rover"; }, 2000); }; diff --git a/app/game/page.tsx b/app/game/page.tsx index 7ffc871b..e996c520 100644 --- a/app/game/page.tsx +++ b/app/game/page.tsx @@ -1,147 +1,128 @@ "use client"; -import { useState, useEffect, useMemo, useRef, useCallback } from "react"; -import { useRouter } from "next/navigation"; -import dynamic from 'next/dynamic'; +import { useState, useEffect, useMemo } from "react"; +import { useRouter, useSearchParams } from "next/navigation"; +import dynamic from "next/dynamic"; import { useSession, useSessionContext } from "@supabase/auth-helpers-react"; -import { usePostHog } from 'posthog-js/react'; - -// Dynamic heavy components (Three.js scene, popup, banners, forms) -const TelescopeBackground = dynamic(() => import('@/src/components/classification/telescope/telescope-background').then(m => m.TelescopeBackground), { ssr: false, loading: () =>
}); -const NPSPopup = dynamic(() => import('@/src/components/ui/helpers/nps-popup'), { loading: () => null }); -const WeeklyBanner = dynamic(() => import('@/src/components/ui/update-banner'), { loading: () => null }); -const CompleteProfileForm = dynamic(() => import('@/src/components/profile/setup/FinishProfile'), { loading: () =>
Loading profile form…
}); -const PWAPrompt = dynamic(() => import('@/src/components/pwa/PWAPrompt'), { loading: () => null }); +import { usePostHog } from "posthog-js/react"; + +// Dynamic heavy components +const TelescopeBackground = dynamic( + () => + import("@/src/components/classification/telescope/telescope-background").then( + (m) => m.TelescopeBackground + ), + { + ssr: false, + loading: () => ( +
+ ), + } +); +const NPSPopup = dynamic(() => import("@/src/components/ui/helpers/nps-popup"), { + loading: () => null, +}); +const CompleteProfileForm = dynamic( + () => import("@/src/components/profile/setup/FinishProfile"), + { + loading: () => ( +
Loading profile form…
+ ), + } +); +const PWAPrompt = dynamic(() => import("@/src/components/pwa/PWAPrompt"), { + loading: () => null, +}); + +// Dynamic tab content components +const TelescopeTab = dynamic(() => import("@/src/components/tabs/TelescopeTab"), { + loading: () => ( +
Loading telescope…
+ ), +}); +const SatelliteTab = dynamic(() => import("@/src/components/tabs/SatelliteTab"), { + loading: () => ( +
Loading satellite…
+ ), +}); +const RoverTab = dynamic(() => import("@/src/components/tabs/RoverTab"), { + loading: () =>
Loading rover…
, +}); +const SolarTab = dynamic(() => import("@/src/components/tabs/SolarTab"), { + loading: () =>
Loading solar…
, +}); +const InventoryTab = dynamic(() => import("@/src/components/tabs/InventoryTab"), { + loading: () => ( +
Loading inventory…
+ ), +}); + +// UI Components import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "@/src/components/ui/dialog"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/src/components/ui/tabs"; +import { + Sheet, + SheetContent, + SheetHeader, + SheetTitle, +} from "@/src/components/ui/sheet"; import AnonymousUserPrompt from "@/src/components/profile/auth/AnonymousUserPrompt"; -import MainHeader from "@/src/components/layout/Header/MainHeader"; -const ActivityHeaderSection = dynamic(() => import('@/src/components/social/activity/ActivityHeaderSection'), { loading: () => null }); -const ProfileSetupRequired = dynamic(() => import('@/src/components/profile/setup/ProfileSetupRequired'), { loading: () => null }); -// Remove unused NotificationSubscribeButton (not rendered) +// New redesigned components +import GameHeader from "@/src/components/game/GameHeader"; +import PlanetHeroSection from "@/src/components/game/PlanetHeroSection"; +import MissionControlCard from "@/src/components/game/MissionControlCard"; +import StructureCard from "@/src/components/game/StructureCard"; +import BottomNavigation from "@/src/components/game/BottomNavigation"; +import RecentActivity from "@/src/components/social/activity/RecentActivity"; -// Import custom hooks +// Hooks import { usePageData } from "@/hooks/usePageData"; import { useNPSManagement } from "@/hooks/useNPSManagement"; -import { useTabsPersistence, TabConfig } from "@/hooks/useTabsPersistence"; +import { useUserPreferences } from "@/src/hooks/useUserPreferences"; import UseDarkMode from "@/src/shared/hooks/useDarkMode"; -// Import tab components -const TelescopeTab = dynamic(() => import('@/src/components/tabs/TelescopeTab'), { loading: () =>
Loading telescope…
}); -const SatelliteTab = dynamic(() => import('@/src/components/tabs/SatelliteTab'), { loading: () =>
Loading satellite…
}); -const RoverTab = dynamic(() => import('@/src/components/tabs/RoverTab'), { loading: () =>
Loading rover…
}); -const SolarTab = dynamic(() => import('@/src/components/tabs/SolarTab'), { loading: () =>
Loading solar…
}); -const InventoryTab = dynamic(() => import('@/src/components/tabs/InventoryTab'), { loading: () =>
Loading inventory…
}); -const UpdatesTab = dynamic(() => import('@/src/components/tabs/UpdatesTab'), { loading: () =>
Loading updates…
}); -const OnboardingTab = dynamic(() => import('@/src/components/tabs/OnboardingTab'), { loading: () =>
Loading onboarding…
}); - -// Import icons -import { Telescope, Satellite, Car, Package, Bell, Sun, ArrowLeft, ArrowRight } from "lucide-react"; - -// Simple Tab Trigger with reorder buttons -interface SimpleTabTriggerProps { - id: string; - icon: React.ReactNode; - label: string; - onMoveLeft?: () => void; - onMoveRight?: () => void; - canMoveLeft: boolean; - canMoveRight: boolean; - onTabClick: (id: string) => void; -}; - -function SimpleTabTrigger({ - id, - icon, - label, - onMoveLeft, - onMoveRight, - canMoveLeft, - canMoveRight, - onTabClick -}: SimpleTabTriggerProps) { - return ( -
- {canMoveLeft && ( - - )} - - { - e.preventDefault(); - onTabClick(id); - }} - > - {icon} - {label} - - - {canMoveRight && ( - - )} -
- ); -} +// Onboarding components +import ProjectPreferencesModal from "@/src/components/onboarding/ProjectPreferencesModal"; +import { ProjectType } from "@/src/hooks/useUserPreferences"; -type TabId = "updates" | "solar" | "telescope" | "satellite" | "rover" | "inventory"; +// Icons +import { + Telescope, + Satellite, + Car, + Package, + Sun, + FlaskConical, + AlertCircle, + CheckCircle, + Clock, + ChevronLeft, +} from "lucide-react"; + +type ViewMode = "base" | "telescope" | "satellite" | "rover" | "solar" | "inventory"; export default function GamePage() { const session = useSession(); const { isLoading: isAuthLoading } = useSessionContext(); const posthog = usePostHog(); const router = useRouter(); + const searchParams = useSearchParams(); + + // Get initial view from URL query param + const initialView = (searchParams.get("view") as ViewMode) || "base"; + // State + const [activeView, setActiveView] = useState(initialView); const [notificationsOpen, setNotificationsOpen] = useState(false); - const [landmarksExpanded, setLandmarksExpanded] = useState(false); const [showProfileModal, setShowProfileModal] = useState(false); - const [tabContentExpanded, setTabContentExpanded] = useState(false); - const [showReorderHint, setShowReorderHint] = useState(true); - const [isFullScreen, setIsFullScreen] = useState(false); - const [canScrollLeft, setCanScrollLeft] = useState(false); - const [canScrollRight, setCanScrollRight] = useState(false); - const tabListContainerRef = useRef(null); - - const updateScrollState = useCallback(() => { - const container = tabListContainerRef.current; - if (!container) { - setCanScrollLeft(false); - setCanScrollRight(false); - return; - } - - const { scrollLeft, scrollWidth, clientWidth } = container; - const epsilon = 1; - setCanScrollLeft(scrollLeft > epsilon); - setCanScrollRight(scrollWidth - clientWidth - scrollLeft > epsilon); - }, []); + const [showPreferencesModal, setShowPreferencesModal] = useState(false); - // Custom hooks for data management + // Hooks const { linkedAnomalies, activityFeed, @@ -152,265 +133,178 @@ export default function GamePage() { } = usePageData(); const { showNpsModal, handleCloseNps } = useNPSManagement(); - - // Use the global theme hook - const { isDark, toggleDarkMode } = UseDarkMode(); - - // Tab persistence hook + const { isDark } = UseDarkMode(); const { - activeTab, - setActiveTab, - initializeTabOrder, - reorderTabs, - getOrderedTabs, - isInitialized, - hasSavedOrder, - } = useTabsPersistence('updates'); - - // Handle tab click - toggle full screen if clicking active tab, otherwise switch tabs - const handleTabClick = (tabId: string) => { - if (tabId === activeTab) { - // Toggle full screen when clicking active tab - setIsFullScreen(prev => !prev); - posthog?.capture('tab_fullscreen_toggled', { - tab_id: tabId, - is_fullscreen: !isFullScreen, - }); - } else { - // Switch to new tab, keep full screen state - setActiveTab(tabId); - posthog?.capture('tab_switched', { - from_tab: activeTab, - to_tab: tabId, - classification_count: classifications.length, - }); - } - }; + preferences, + isLoading: preferencesLoading, + needsPreferencesPrompt, + setProjectInterests, + } = useUserPreferences(); - // Track page view and user state + // Show preferences modal on first visit or new device useEffect(() => { - if (session?.user) { - posthog?.capture('game_page_viewed', { - user_id: session.user.id, - has_classifications: classifications.length > 0, - classification_count: classifications.length, - has_discoveries: linkedAnomalies.length > 0, - discovery_count: linkedAnomalies.length, - needs_profile_setup: needsProfileSetup, - }); + if (!preferencesLoading && needsPreferencesPrompt && session) { + setShowPreferencesModal(true); } - }, [session, posthog]); + }, [preferencesLoading, needsPreferencesPrompt, session]); - // Check if user has seen the reorder hint - useEffect(() => { - if (typeof window !== 'undefined') { - const hasSeenHint = localStorage.getItem('tab-reorder-hint-seen'); - if (hasSeenHint) { - setShowReorderHint(false); - } - } - }, []); - - const dismissReorderHint = () => { - setShowReorderHint(false); - if (typeof window !== 'undefined') { - localStorage.setItem('tab-reorder-hint-seen', 'true'); - } - posthog?.capture('reorder_hint_dismissed'); + // Determine which structures to show based on preferences + const shouldShowStructure = (structureType: "telescope" | "satellite" | "rover" | "solar") => { + // If no preferences set, show all + if (preferences.projectInterests.length === 0) return true; + + // Map structure types to project interests + const structureToProjects: Record = { + telescope: ["planet-hunting", "asteroid-hunting"], + satellite: ["cloud-tracking", "ice-tracking"], + rover: ["rover-training"], + solar: ["solar-monitoring"], + }; + + const relatedProjects = structureToProjects[structureType] || []; + return relatedProjects.some(project => preferences.projectInterests.includes(project)); }; - const tabPriorityCounts = useMemo(() => { - const counts: Record = { - updates: 0, - solar: 0, - telescope: 0, - satellite: 0, - rover: 0, - inventory: 0, + // Handle structure click - navigate to dedicated setup pages + const handleStructureClick = ( + structureType: "telescope" | "satellite" | "rover" | "solar", + viewMode: ViewMode + ) => { + console.log("[DEBUG] handleStructureClick - navigating to setup page:", structureType); + + // Navigate to dedicated setup pages with onboarding + const setupRoutes = { + telescope: "/setup/telescope", + satellite: "/setup/satellite", + rover: "/setup/rover", + solar: "/setup/solar" }; + + router.push(setupRoutes[structureType]); + }; - linkedAnomalies.forEach((linked) => { - const automaton = (linked.automaton || '').toLowerCase(); - const anomalyType = (linked.anomaly?.anomalytype || '').toLowerCase(); - const anomalySet = (linked.anomaly?.anomalySet || '').toLowerCase(); - - if (anomalyType.includes('sunspot') || anomalyType.includes('solar') || anomalySet.includes('sunspot')) { - counts.solar += 1; - } - - if ( - automaton.includes('telescope') || - anomalyType.includes('planet') || - anomalyType.includes('asteroid') || - anomalyType.includes('variable') || - anomalyType.includes('disk') || - anomalySet.includes('telescope') || - anomalySet.includes('planet') || - anomalySet.includes('asteroid') || - anomalySet.includes('variable') || - anomalySet.includes('disk') - ) { - counts.telescope += 1; - } - - if ( - automaton.includes('satellite') || - automaton.includes('weather') || - anomalyType.includes('cloud') || - anomalyType.includes('balloon') || - anomalyType.includes('lidar') || - anomalySet.includes('cloud') || - anomalySet.includes('balloon') || - anomalySet.includes('lidar') - ) { - counts.satellite += 1; - } - - if ( - automaton.includes('rover') || - anomalyType.includes('rover') || - anomalyType.includes('automaton') || - anomalySet.includes('rover') || - anomalySet.includes('automaton') - ) { - counts.rover += 1; - } - }); - - return counts; - }, [linkedAnomalies]); + const handlePreferencesSave = (interests: ProjectType[]) => { + setProjectInterests(interests); + setShowPreferencesModal(false); + }; - const baseTabs: TabConfig[] = useMemo(() => [ - { - id: 'updates', - label: 'Updates', - icon: , - }, - { - id: 'solar', - label: 'Solar', - icon: , - }, - { - id: 'telescope', - label: 'Telescope', - icon: , - }, - { - id: 'satellite', - label: 'Satellite', - icon: , - }, - { - id: 'rover', - label: 'Rover', - icon: , - }, - { - id: 'inventory', - label: 'Inventory', - icon: , - }, - ], []); - - const prioritizedTabs = useMemo(() => { - if (hasSavedOrder) { - return baseTabs; - } + // Calculate mission control stats + const missionStats = useMemo(() => { + const unclassifiedCount = linkedAnomalies.filter((la) => { + // Check if this anomaly has been classified + return !classifications.some((c) => c.anomaly?.content === la.anomaly?.content); + }).length; + + const recentClassifications = classifications.filter((c) => { + const classDate = new Date(c.created_at); + const now = new Date(); + const diffHours = (now.getTime() - classDate.getTime()) / (1000 * 60 * 60); + return diffHours < 24; + }); - const baseOrder: Record = { - updates: 0, - solar: 1, - telescope: 2, - satellite: 3, - rover: 4, - inventory: 5, + // Check for upcoming unlocks + const lockedAnomalies = linkedAnomalies.filter( + (la) => la.unlocked === false || la.unlocked === null + ); + const nextUnlock = lockedAnomalies.length > 0 ? lockedAnomalies[0] : null; + + return { + awaiting: unclassifiedCount, + recentCount: recentClassifications.length, + lastClassification: recentClassifications[0], + nextUnlock, + hasUnlockingSoon: lockedAnomalies.length > 0, }; + }, [linkedAnomalies, classifications]); + + // Structure deployment status + const structureStatus = useMemo(() => { + const telescopeAnomalies = linkedAnomalies.filter( + (la) => + la.automaton?.includes("telescope") || + la.anomaly?.anomalySet?.includes("telescope") || + la.anomaly?.anomalytype?.includes("planet") + ); + const satelliteAnomalies = linkedAnomalies.filter( + (la) => + la.automaton?.includes("Satellite") || + la.automaton?.includes("Weather") || + la.anomaly?.anomalySet?.includes("cloud") + ); + const roverAnomalies = linkedAnomalies.filter( + (la) => + la.automaton?.includes("rover") || + la.anomaly?.anomalySet?.includes("automaton") + ); + const solarAnomalies = linkedAnomalies.filter( + (la) => la.anomaly?.anomalySet?.includes("sunspot") + ); - return [...baseTabs].sort((a, b) => { - const aId = a.id as TabId; - const bId = b.id as TabId; - const aBoost = tabPriorityCounts[aId] > 0 ? 10 : 0; - const bBoost = tabPriorityCounts[bId] > 0 ? 10 : 0; - const aScore = baseOrder[aId] - aBoost - tabPriorityCounts[aId] * 0.01; - const bScore = baseOrder[bId] - bBoost - tabPriorityCounts[bId] * 0.01; - return aScore - bScore; - }); - }, [baseTabs, tabPriorityCounts, hasSavedOrder]); - - const orderedTabs = useMemo(() => getOrderedTabs(prioritizedTabs), [prioritizedTabs, getOrderedTabs]); + return { + telescope: { + deployed: telescopeAnomalies.length > 0, + count: telescopeAnomalies.length, + status: telescopeAnomalies.length > 0 ? `${telescopeAnomalies.length} targets` : "Deploy now", + }, + satellite: { + deployed: satelliteAnomalies.length > 0, + count: satelliteAnomalies.length, + status: satelliteAnomalies.length > 0 ? `${satelliteAnomalies.length} clouds` : "Unlocking...", + }, + rover: { + deployed: roverAnomalies.length > 0, + count: roverAnomalies.length, + status: roverAnomalies.length > 0 ? `${roverAnomalies.length} waypoints` : "Deploy now", + }, + solar: { + deployed: solarAnomalies.length > 0, + count: solarAnomalies.length, + status: solarAnomalies.length > 0 ? "Active" : "Join mission", + }, + }; + }, [linkedAnomalies]); + // Track page view useEffect(() => { - if (isInitialized) { - initializeTabOrder(prioritizedTabs); + if (session?.user) { + posthog?.capture("game_page_viewed", { + user_id: session.user.id, + classification_count: classifications.length, + discovery_count: linkedAnomalies.length, + }); } - }, [prioritizedTabs, initializeTabOrder, isInitialized]); + }, [session, posthog, classifications.length, linkedAnomalies.length]); + // Redirect unauthenticated users useEffect(() => { - const container = tabListContainerRef.current; - updateScrollState(); - - if (!container) { - return; - } - - const handleScroll = () => updateScrollState(); - const rafId = requestAnimationFrame(updateScrollState); - - container.addEventListener('scroll', handleScroll); - - let resizeObserver: ResizeObserver | null = null; - if (typeof ResizeObserver !== 'undefined') { - resizeObserver = new ResizeObserver(() => updateScrollState()); - resizeObserver.observe(container); + if (!isAuthLoading && !session) { + router.push("/"); } + }, [isAuthLoading, session, router]); - window.addEventListener('resize', updateScrollState); - - return () => { - cancelAnimationFrame(rafId); - container.removeEventListener('scroll', handleScroll); - window.removeEventListener('resize', updateScrollState); - resizeObserver?.disconnect(); - }; - }, [orderedTabs, updateScrollState]); + // Handle view navigation + const handleViewChange = (view: ViewMode) => { + console.log("[DEBUG] handleViewChange called with:", view); + console.log("[DEBUG] current activeView:", activeView); + setActiveView(view); + posthog?.capture("viewport_opened", { viewport: view }); + }; - // Move tab left or right - const moveTab = (tabId: string, direction: 'left' | 'right') => { - const tabIds = orderedTabs.map(tab => tab.id); - const currentIndex = tabIds.indexOf(tabId); - - if (direction === 'left' && currentIndex > 0) { - const newOrder = [...tabIds]; - [newOrder[currentIndex - 1], newOrder[currentIndex]] = [newOrder[currentIndex], newOrder[currentIndex - 1]]; - reorderTabs(newOrder); - posthog?.capture('tab_reordered', { - tab_id: tabId, - direction: 'left', - new_index: currentIndex - 1, - }); - } else if (direction === 'right' && currentIndex < tabIds.length - 1) { - const newOrder = [...tabIds]; - [newOrder[currentIndex], newOrder[currentIndex + 1]] = [newOrder[currentIndex + 1], newOrder[currentIndex]]; - reorderTabs(newOrder); - posthog?.capture('tab_reordered', { - tab_id: tabId, - direction: 'right', - new_index: currentIndex + 1, - }); + // Handle classify now action + const handleClassifyNow = () => { + // Find the first unclassified anomaly and navigate to it + if (structureStatus.telescope.count > 0) { + handleViewChange("telescope"); + } else if (structureStatus.satellite.count > 0) { + handleViewChange("satellite"); + } else if (structureStatus.rover.count > 0) { + handleViewChange("rover"); } }; const needsProfileSetup = !profile?.username || !profile?.full_name; - // Redirect unauthenticated users to `/` (middleware may handle this server-side; this is a client fallback) - useEffect(() => { - if (!isAuthLoading && !session) { - router.push('/'); - } - }, [isAuthLoading, session, router]); - - // If not logged in, show minimal gate while redirect happens. + // Loading state if (!session) { return (
@@ -419,27 +313,77 @@ export default function GamePage() { ); } - // Lightweight skeleton while data loads to avoid blocking on dynamic chunk hydration. - // Important: do not gate the entire page on having data, or new users will see the - // skeleton forever. if (loading) { return ( -
+
-
-
-
-
-
+
+
+
+
+
+
); } + // If in a viewport (not base), show full-screen viewport content + if (activeView !== "base") { + return ( +
+ {/* Background */} +
+ {}} + /> +
+ + {/* Viewport Header */} +
+
+ +

{activeView}

+
+
+ + {/* Viewport Content */} +
+
+ {activeView === "telescope" && } + {activeView === "satellite" && } + {activeView === "rover" && } + {activeView === "solar" && } + {activeView === "inventory" && } +
+
+ + {/* NPS Popup */} + {showNpsModal && session && ( + + )} + + +
+ ); + } + + // Base view - main dashboard return ( -
- {/* Telescope Background - Full screen behind everything */} +
+ {/* Background */}
console.log("Clicked anomaly:", anomaly)} + onAnomalyClick={() => {}} />
- {/* Main Header */} - { - toggleDarkMode(); - posthog?.capture('theme_toggled', { new_theme: !isDark ? 'dark' : 'light' }); - }} - notificationsOpen={notificationsOpen} - onToggleNotifications={() => { - setNotificationsOpen((open) => { - posthog?.capture('notifications_toggled', { is_open: !open }); - return !open; - }); - }} - activityFeed={activityFeed} - otherClassifications={otherClassifications} + {/* Header */} + 0} + onNotificationsClick={() => setNotificationsOpen(true)} /> -
- {/* Anonymous User Upgrade Prompt */} - + {/* Planet Hero Section */} + - {/* Activity Header - User profile and deployment status - Hidden when full screen */} - {!tabContentExpanded && !isFullScreen && ( - + {/* Anonymous User Prompt */} + { - setLandmarksExpanded((prev) => { - posthog?.capture('landmarks_toggled', { is_expanded: !prev }); - return !prev; - }); - }} + discoveryCount={linkedAnomalies.length} /> - )} - {/* Profile Setup Required */} - {needsProfileSetup && ( - { - posthog?.capture('profile_setup_modal_opened'); - setShowProfileModal(true); - }} - /> - )} + {/* Profile Setup */} + {needsProfileSetup && ( +
setShowProfileModal(true)} + className="p-4 rounded-xl bg-amber-500/10 border border-amber-500/30 cursor-pointer hover:bg-amber-500/20 transition-colors" + > +

+ Complete your profile to unlock all features +

+
+ )} + + {/* Mission Control Section */} +
+

+ Mission Control +

+
+ {/* Anomalies Awaiting */} + {missionStats.awaiting > 0 && ( + } + title={`${missionStats.awaiting} Anomalies Awaiting`} + subtitle="Telescope targets ready to classify" + variant="action" + actionLabel="Classify Now" + onAction={handleClassifyNow} + /> + )} + + {/* Recent Classification */} + {missionStats.lastClassification && ( + } + title="Classification Confirmed" + subtitle={`${missionStats.lastClassification.classificationtype || "Discovery"} • ${ + new Date(missionStats.lastClassification.created_at).toLocaleDateString() + }`} + variant="status" + /> + )} - {/* Main Tabbed Interface */} -
- - {/* Tab Navigation */} -
-
- {canScrollLeft && ( -
- )} -
} + title="Satellite Unlocks Soon" + subtitle="Cloud formations awaiting analysis" + variant="progress" + progress={65} + /> + )} +
+
+ + {/* Your Structures Section */} +
+
+

+ Your Structures +

+ {preferences.projectInterests.length > 0 && ( +
- {canScrollRight && ( -
-
- -
-
- )} -
- - {/* Reorder hint - shows on first visit */} - {showReorderHint && ( -
-
-

- - - - New! Hover over tabs to see arrows and reorder them. Your layout is saved automatically. - -

- -
-
+ Edit interests + )}
- - {/* Tab Content - Expands to full height when full screen is active */} -
- - - - - - - - - - - - - - - - - - - - - - - - - - - +
+ {shouldShowStructure("telescope") && ( + } + name="Telescope" + status={structureStatus.telescope.status} + statusColor={structureStatus.telescope.deployed ? "green" : "muted"} + hasNotification={structureStatus.telescope.count > 0} + onClick={() => handleStructureClick("telescope", "telescope")} + data-structure="telescope" + /> + )} + {shouldShowStructure("satellite") && ( + } + name="Satellite" + status={structureStatus.satellite.status} + statusColor={structureStatus.satellite.deployed ? "blue" : "muted"} + onClick={() => handleStructureClick("satellite", "satellite")} + data-structure="satellite" + /> + )} + {shouldShowStructure("rover") && ( + } + name="Rover" + status={structureStatus.rover.status} + statusColor={structureStatus.rover.deployed ? "green" : "muted"} + onClick={() => handleStructureClick("rover", "rover")} + data-structure="rover" + /> + )} + {shouldShowStructure("solar") && ( + } + name="Solar" + status={structureStatus.solar.status} + statusColor={structureStatus.solar.deployed ? "amber" : "muted"} + onClick={() => handleStructureClick("solar", "solar")} + data-structure="solar" + /> + )} + } + name="Research" + status="Upgrades available" + statusColor="amber" + onClick={() => router.push("/research")} + /> + } + name="Inventory" + status="View minerals" + statusColor="muted" + onClick={() => handleViewChange("inventory")} + />
- +
+ + + {/* Bottom Navigation (Mobile) */} + handleViewChange(item as ViewMode)} + telescopeNotification={structureStatus.telescope.count > 0} + satelliteNotification={structureStatus.satellite.count > 0} + roverNotification={structureStatus.rover.count > 0} + solarNotification={structureStatus.solar.count > 0} + /> - {/* Notification Subscription */} -
+ {/* Notifications Sheet */} + + + + Activity + +
+ +
+
+
+ {/* Profile Modal */} - - Complete Your Profile - + Complete Your Profile setShowProfileModal(false)} /> + {/* NPS Popup */} {showNpsModal && session && ( - + )} - setShowPreferencesModal(false)} + onSave={handlePreferencesSave} + initialInterests={preferences.projectInterests} /> - {/* PWA Install Prompt - Only for authenticated users */} - {session && } +
); -}; +} diff --git a/app/setup/rover/page.tsx b/app/setup/rover/page.tsx new file mode 100644 index 00000000..55e42b20 --- /dev/null +++ b/app/setup/rover/page.tsx @@ -0,0 +1,33 @@ +"use client"; + +import { useRouter } from "next/navigation"; +import GameNavbar from "@/src/components/layout/Tes"; +import RoverSection from "@/src/components/scenes/deploy/Rover/RoverSection"; +import TutorialWrapper, { ROVER_INTRO_STEPS } from "@/src/components/onboarding/TutorialWrapper"; +import UseDarkMode from "@/src/shared/hooks/useDarkMode"; + +export default function RoverSetupPage() { + const router = useRouter(); + const { isDark } = UseDarkMode(); + + return ( +
+
+ +
+ +
+ { + console.log("Rover tutorial completed"); + }} + > + + +
+
+ ); +} \ No newline at end of file diff --git a/app/setup/satellite/page.tsx b/app/setup/satellite/page.tsx new file mode 100644 index 00000000..b3ffd88f --- /dev/null +++ b/app/setup/satellite/page.tsx @@ -0,0 +1,33 @@ +"use client"; + +import { useRouter } from "next/navigation"; +import GameNavbar from "@/src/components/layout/Tes"; +import DeploySatelliteViewport from "@/src/components/scenes/deploy/satellite/DeploySatellite"; +import TutorialWrapper, { SATELLITE_INTRO_STEPS } from "@/src/components/onboarding/TutorialWrapper"; +import UseDarkMode from "@/src/shared/hooks/useDarkMode"; + +export default function SatelliteSetupPage() { + const router = useRouter(); + const { isDark } = UseDarkMode(); + + return ( +
+
+ +
+ +
+ { + console.log("Satellite tutorial completed"); + }} + > + + +
+
+ ); +} \ No newline at end of file diff --git a/app/setup/solar/page.tsx b/app/setup/solar/page.tsx new file mode 100644 index 00000000..a2e0e66a --- /dev/null +++ b/app/setup/solar/page.tsx @@ -0,0 +1,33 @@ +"use client"; + +import { useRouter } from "next/navigation"; +import GameNavbar from "@/src/components/layout/Tes"; +import SolarHealth from "@/src/components/scenes/deploy/solar/SolarHealth"; +import TutorialWrapper, { SOLAR_INTRO_STEPS } from "@/src/components/onboarding/TutorialWrapper"; +import UseDarkMode from "@/src/shared/hooks/useDarkMode"; + +export default function SolarSetupPage() { + const router = useRouter(); + const { isDark } = UseDarkMode(); + + return ( +
+
+ +
+ +
+ { + console.log("Solar observatory tutorial completed"); + }} + > + + +
+
+ ); +} \ No newline at end of file diff --git a/app/setup/telescope/page.tsx b/app/setup/telescope/page.tsx new file mode 100644 index 00000000..f7446d19 --- /dev/null +++ b/app/setup/telescope/page.tsx @@ -0,0 +1,33 @@ +"use client"; + +import { useRouter } from "next/navigation"; +import GameNavbar from "@/src/components/layout/Tes"; +import TelescopeSection from "@/src/components/scenes/deploy/Telescope/TelescopeSection"; +import TutorialWrapper, { TELESCOPE_INTRO_STEPS } from "@/src/components/onboarding/TutorialWrapper"; +import UseDarkMode from "@/src/shared/hooks/useDarkMode"; + +export default function TelescopeSetupPage() { + const router = useRouter(); + const { isDark } = UseDarkMode(); + + return ( +
+
+ +
+ +
+ { + console.log("Telescope tutorial completed"); + }} + > + + +
+
+ ); +} \ No newline at end of file diff --git a/app/viewports/roover/page.tsx b/app/viewports/roover/page.tsx index c1b59804..cecf5578 100644 --- a/app/viewports/roover/page.tsx +++ b/app/viewports/roover/page.tsx @@ -9,33 +9,13 @@ export default function RoverViewportExpandedPage() { const router = useRouter(); return ( -
- Earth Background - -
+
+
-
- { - if (!open) router.push("/"); - }} - > - -
- -
-
-
+
+
); diff --git a/app/viewports/satellite/page.tsx b/app/viewports/satellite/page.tsx index 5fc4f953..2c835770 100644 --- a/app/viewports/satellite/page.tsx +++ b/app/viewports/satellite/page.tsx @@ -63,36 +63,16 @@ export default function SatelliteViewportExpandedPage() { })(); return ( -
- Earth Background - -
+
+
-
- { - if (!open) router.push("/"); - }} - > - -
- -
-
-
+
+
); diff --git a/app/viewports/solar/page.tsx b/app/viewports/solar/page.tsx index 265a6644..84709670 100644 --- a/app/viewports/solar/page.tsx +++ b/app/viewports/solar/page.tsx @@ -9,32 +9,14 @@ export default function SolarHealthViewportExpandedPage() { const router = useRouter(); return ( -
- Earth Background Image - -
+
+
- { - if (!open) router.push("/") - }} - > - -
- -
-
-
+
+ +
) } \ No newline at end of file diff --git a/public/fallback-GO8Z5TWONYn8u-ZQ8w2np.js b/public/fallback-zFJ3Gbv7pEhrOhXsQoevQ.js similarity index 100% rename from public/fallback-GO8Z5TWONYn8u-ZQ8w2np.js rename to public/fallback-zFJ3Gbv7pEhrOhXsQoevQ.js diff --git a/public/sw.js b/public/sw.js index 3b3089ff..70a7c570 100644 --- a/public/sw.js +++ b/public/sw.js @@ -1 +1 @@ -if(!self.define){let e,s={};const a=(a,n)=>(a=new URL(a+".js",n).href,s[a]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()}).then(()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e}));self.define=(n,i)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(s[c])return;let r={};const t=e=>a(e,c),o={module:{uri:c},exports:r,require:t};s[c]=Promise.all(n.map(e=>o[e]||t(e))).then(e=>(i(...e),r))}}define(["./workbox-92923e46"],function(e){"use strict";importScripts("fallback-GO8Z5TWONYn8u-ZQ8w2np.js"),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/Campbells.jpg",revision:"11385cbf8fbc65ddbe1ee9cc4f61599c"},{url:"/Eric.jpg",revision:"57cd76a7a6645463439016cea20d348c"},{url:"/Fred.webp",revision:"20a4d0dd0bb457f26136b4cb3299bbbf"},{url:"/Planet.png",revision:"dadf5193009bd2284bff301dfb69a2d6"},{url:"/_next/app-build-manifest.json",revision:"f418883a59e8b1824b1fa01ad46a49ec"},{url:"/_next/static/GO8Z5TWONYn8u-ZQ8w2np/_buildManifest.js",revision:"b362bc6587ac0d49f4c8883e0cfffd0b"},{url:"/_next/static/GO8Z5TWONYn8u-ZQ8w2np/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/1151-b7d68f1322e7e7c3.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/1176-5f324c6d652a71dd.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/1216.cddc9b1bdc338fea.js",revision:"cddc9b1bdc338fea"},{url:"/_next/static/chunks/1363.9139665fccd9c7a0.js",revision:"9139665fccd9c7a0"},{url:"/_next/static/chunks/1402-db70e87dd0aaa75a.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/1567.c6634902c5a70b82.js",revision:"c6634902c5a70b82"},{url:"/_next/static/chunks/1673-247ff55ef7832fe3.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/1714-69c6268587164c61.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2038-67b6bf0710306f48.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2117-3f08714425d7b4a3.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/216-8e0dbe85dc469b3c.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2234.60d9ee493bfa1716.js",revision:"60d9ee493bfa1716"},{url:"/_next/static/chunks/2252-16175c36ab0b36cb.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2268-cbdad168331f2555.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2370-88cf2fb867efbba9.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2417-6a7500aa90d5775f.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2507-cee6d9689411d046.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2509-fc7017b5dc896aed.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2561.8ceb795e1a58925f.js",revision:"8ceb795e1a58925f"},{url:"/_next/static/chunks/2571-3dffe60ba6dc164a.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2729-2021e8d50f3f36f1.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2764-70e2b3fc5da3d7c9.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2852.ac25a49f39a6345f.js",revision:"ac25a49f39a6345f"},{url:"/_next/static/chunks/29.1c32b08d9067edce.js",revision:"1c32b08d9067edce"},{url:"/_next/static/chunks/2955-cc4260c441819f04.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/2963.f8ecad3ef10569f1.js",revision:"f8ecad3ef10569f1"},{url:"/_next/static/chunks/3188.d5da9771bc685cbe.js",revision:"d5da9771bc685cbe"},{url:"/_next/static/chunks/3256.5ff9735db57c5e31.js",revision:"5ff9735db57c5e31"},{url:"/_next/static/chunks/3292-c65d11cf5eb7ea50.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/3519-30ef23394d16a428.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/3553-5a3f66ed7d110bbc.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/376-8fb2227601d36e71.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/3892-655ac5977004f25c.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/4058-58cf3c0f227a6502.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/4257-2b1c0c5ee7d831c6.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/4314-78e5aff737494d7e.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/4419-0704c9619d7dd836.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/4565-bd4ecddb3c74fc6f.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/4617-7b4bfb3af308cbf3.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/4752-ead1d9a00ff0799c.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/4793.d52b74fcc1b22924.js",revision:"d52b74fcc1b22924"},{url:"/_next/static/chunks/5479-24bb95af51728a2b.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/5569-9bf5ebeb9c966fec.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/5583-2da3fdce8a49a823.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/5687-0d6dfcb7142de33b.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/5754.9fe54a30958cb897.js",revision:"9fe54a30958cb897"},{url:"/_next/static/chunks/5786.858a278f3619e9af.js",revision:"858a278f3619e9af"},{url:"/_next/static/chunks/5798-07fcea046cd8c7df.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/6187.e5c3fce0bd2c01f2.js",revision:"e5c3fce0bd2c01f2"},{url:"/_next/static/chunks/6489-5ee34b16822daa42.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/6592-6e84ca872d2b03be.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/6781.305558d259e85644.js",revision:"305558d259e85644"},{url:"/_next/static/chunks/6834-4b8b72b63c953eb8.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/6873-12de5600f07d687a.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/6943-c8c8e8cc58399f18.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/7091-093b2d29bec59b24.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/7194-7558f5bebe3e5d5d.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/7231-4e548080f78aed0d.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/7441-1fc10da04bdfcee6.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/7452-6679dcc0b14334a4.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/7647.356a6e60de5e7acd.js",revision:"356a6e60de5e7acd"},{url:"/_next/static/chunks/7790-4104f398bd998ed9.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/7834-8103bd721711041d.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8091-212cbd034d81322a.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8155.0e681ee25da7a4b3.js",revision:"0e681ee25da7a4b3"},{url:"/_next/static/chunks/8184.3feb12a2805f25fc.js",revision:"3feb12a2805f25fc"},{url:"/_next/static/chunks/8280-4b558f2983782f8e.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8302-0411d723b2092b7f.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8346-efda2ccb39e438dc.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8627-ece0cf0d92a2cf80.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8642-806efa449c5defa6.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8703-8c8720bd5176ac94.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/884-6e87a71d04e80b25.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8917-e506b0696998c2e7.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/8953-8aa3871a96d78b98.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/9106.054c34baea7e1e2b.js",revision:"054c34baea7e1e2b"},{url:"/_next/static/chunks/9208-00530379d3472d72.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/9299-b52d19e591de95b2.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/9387-779bc1719f3ac753.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/9592-f5dcf85286aefa12.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/9828.8f0a5e098250b33b.js",revision:"8f0a5e098250b33b"},{url:"/_next/static/chunks/9854-9e508be7190fa9b0.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/9882.4761fa205905a733.js",revision:"4761fa205905a733"},{url:"/_next/static/chunks/9da6db1e-e4043ef83035bbcf.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/ad2866b8-d9a081783e4ea5b3.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/_not-found/page-98b09e372b5d8f95.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/account/page-a227a01cec8c0396.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/activity/deploy/page-d1acc66c5524b8f6.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/activity/deploy/roover/page-87cadb4c81a08849.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/apt/page-21fb3cf1f72b4dcd.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/auth/page-4a5e6f4b7ed80998.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/auth/register/page-ed79460e4cb255fc.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/extraction/%5Bid%5D/page-40a03d329de381b9.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/game/page-817d78c55f04db70.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/inventory/classifications/page-2b0310feb23f58fe.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/inventory/page-b6c34fa70e746938.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/layout-00eba830eb7100c3.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/layouts/activity/layout-b8481d06d04e4f01.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/layouts/activity/page-29e302e2917279b1.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/leaderboards/sunspots/page-7391120d8ec7a4ce.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/next/%5Bid%5D/page-ea722af97c8e241e.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/offline/page-eed6593f1d73de96.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/page-89bfd2cf1ab83421.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/planets/%5Bid%5D/page-b2e1f8fc4708809c.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/planets/clouds/%5Bid%5D/page-e8667a9dd80c269a.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/planets/edit/%5Bid%5D/page-3ae54dacc24b24fc.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/planets/paint/%5Bid%5D/page-f76ac959822cf8b0.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/posts/%5Bid%5D/page-975ff21562255a0b.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/posts/surveyor/%5Bid%5D/page-1706b93f0b2d108c.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/privacy/page-600810fa6978abd6.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/research/page-b2f70ce45b0341bc.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/scenes/uploads/page-0330f935cdd49d82.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/balloon/%5Bproject%5D/%5Bid%5D/%5Bmission%5D/page-9285b153040e216a.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/balloon/%5Bproject%5D/page-d5defee487e6306f.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/balloon/page-d53d74df120ff86e.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/cameras/page-6e1bed15f9fa232d.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/seiscam/%5Bproject%5D/%5Bid%5D/%5Bmission%5D/page-930938cb93de1cb9.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/seiscam/page-b2307e4979d058b0.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/telescope/%5Bproject%5D/%5Bid%5D/%5Bmission%5D/page-095648fbad53ca3f.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/telescope/%5Bproject%5D/page-b3529f7167d21399.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/structures/telescope/page-5ef194bfeae78fc3.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/terms/page-9152b1804afe8f78.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/tests/page-9e0915aeaeb9d54a.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/viewports/roover/page-fed5f0db0b11d335.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/viewports/satellite/deploy/page-feaeccc092b6a313.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/viewports/satellite/page-79cef5943cfbdd53.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/app/viewports/solar/page-8c104a6ed4703716.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/b536a0f1-ee91348fe72fbac9.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/bd904a5c-4ebb2c5169124366.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/c16f53c3-42f37dfb9f90c107.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/fd9d1056-79b6cfb6f9ff6563.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/framework-56dfd39ab9a08705.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/main-2e6b6772a23b103a.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/main-app-ec79de62d0df1dfd.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/pages/_app-3c9ca398d360b709.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-5eb15f7fe9d72029.js",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/_next/static/css/5de508b88cbafd37.css",revision:"5de508b88cbafd37"},{url:"/apple-touch-icon.png",revision:"84dfa551865290b103d7a506ce294058"},{url:"/assets/Archive/Inventory/Items/AeroCameraLevel1.png",revision:"b0095b88572678b14b751164bdafec8a"},{url:"/assets/Archive/Inventory/Items/AeroCameraLevel1NoBg.png",revision:"d92db950b319ff898b4b3b028998ee23"},{url:"/assets/Archive/Inventory/Items/Coal.png",revision:"f2c12cb628c5f1befb00934ef590eed9"},{url:"/assets/Archive/Inventory/Items/Fuel.png",revision:"aa39fc0ee9e5310fbd8df9c9c9228caf"},{url:"/assets/Archive/Inventory/Items/GoldenTelescopeLevel1Original.jpg",revision:"4ed335ca5ad7579441fcae7d4c311435"},{url:"/assets/Archive/Inventory/Items/GoldenTelescopeLevel1noBg.png",revision:"fe61acf446aa92820168b915e1d64e3b"},{url:"/assets/Archive/Inventory/Items/Silicates1.png",revision:"57aeda36fe8e660f9e7e388aa9cae035"},{url:"/assets/Archive/Inventory/Planets/Dump/65Binned.png",revision:"384b67f48a661347251312232e9ebf85"},{url:"/assets/Archive/Inventory/Planets/Dump/65Cover.png",revision:"fa14b14d9ffb751661fc22adfc3d8b7c"},{url:"/assets/Archive/Inventory/Planets/Dump/65Phase.png",revision:"f66e7998c7e7b89ca58a8073de29bb95"},{url:"/assets/Archive/Inventory/Planets/Dump/66Cover.png",revision:"9b53b2ac283656684d5ea5a00a8d94f5"},{url:"/assets/Archive/Inventory/Planets/Europa.png",revision:"5e01baea533129113d9d34f6de5c9a35"},{url:"/assets/Archive/Inventory/Planets/Mars.png",revision:"56b8fe5594110efe61945113cd019476"},{url:"/assets/Archive/Inventory/Planets/Planet59.png",revision:"428c91489994b502f47f529fbbe1747c"},{url:"/assets/Archive/Inventory/Planets/Planet63.png",revision:"d05e92b091ce34dd2a405f3c403b7698"},{url:"/assets/Archive/Inventory/Planets/Planet64.png",revision:"bc43db3cae98d2907e439596807805fa"},{url:"/assets/Archive/Inventory/Planets/PlanetBg.png",revision:"aa73eaf3e0304e7be31de35fe4a86d3a"},{url:"/assets/Archive/Inventory/Planets/SectorBg.png",revision:"6278cb9d4a7080eaacf2b2ffb250c567"},{url:"/assets/Archive/Inventory/Planets/rover.png",revision:"28e46f4d9a871a1afec830c482e726fb"},{url:"/assets/Archive/Inventory/Structures/Telescope.png",revision:"d2142a6fb24edb6ed6f40638e895068f"},{url:"/assets/Archive/Inventory/Structures/Telescope2.png",revision:"94b0a790fff053144e2bb63c1143b173"},{url:"/assets/Archive/Inventory/Structures/TelescopeReceiver.png",revision:"adbdc303fd7b86dd08761d23b607882e"},{url:"/assets/Archive/Inventory/Structures/TelescopeReceiverStruct.png",revision:"6cf3fb4e2f292ccfc356d28b05dccff0"},{url:"/assets/Archive/Onboarding/Bg.png",revision:"3d1d9e5ede244694750492b0bfc94be6"},{url:"/assets/Archive/Onboarding/Missions/Crucible/CrucibleGif.webp",revision:"e86425b7abb107c6a8934b77d5130631"},{url:"/assets/Archive/Onboarding/Missions/Crucible/CrucibleImage1.png",revision:"0000a3fca273b34662387215e2b9038b"},{url:"/assets/Archive/Onboarding/Missions/Crucible/CrucibleImage2.png",revision:"2fdeaf5d0cbd2aabe96a9735ca76272a"},{url:"/assets/Archive/Onboarding/Missions/Crucible/CrucibleImage3.png",revision:"dcd55aab5f70f29b13f65a5005bad2a1"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage1.png",revision:"05738c37105a229f6dc67e3f95e9076d"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage2.png",revision:"1687d7ef021d977dba7c13dde60a40d9"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage3.png",revision:"bcce9d5b4cd6cc5505d1490e3305db65"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage4.png",revision:"e05fd92c25df01e070cfc22b3bf89e9c"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage5.png",revision:"35d9a1b812a520dfc243680c8ae09fad"},{url:"/assets/Archive/Onboarding/Missions/Emergence/TALONOVA (5)_clipdrop-enhance.png",revision:"b59102a0a7655c275cdc689bfb71f476"},{url:"/assets/Archive/Onboarding/Missions/Emergence/cartographer.png",revision:"bc0bd32c00672651498e4ac27f6ec911"},{url:"/assets/Archive/Onboarding/Missions/Emergence/cartographer.svg",revision:"67a1cbec05d00c226cd86b0a981f8dac"},{url:"/assets/Archive/Onboarding/Missions/Emergence/guardian.png",revision:"c4cb1a5d06f4ecf36d16ceb5c92f87d8"},{url:"/assets/Archive/Onboarding/Missions/Emergence/guardian.svg",revision:"b4759ba8ab3a66362c97209aa84b013e"},{url:"/assets/Archive/Onboarding/Missions/Emergence/navigator.png",revision:"43ef8636fca24a9469c7c5f22296d6af"},{url:"/assets/Archive/Onboarding/Missions/Emergence/navigator.svg",revision:"3f6467f410d7818933af8bb513a38fe3"},{url:"/assets/Archive/Onboarding/Missions/Navigate/NavigateImage1.png",revision:"9b53b2ac283656684d5ea5a00a8d94f5"},{url:"/assets/Archive/Onboarding/Missions/Navigate/NavigateImage2.png",revision:"0beb47aeb676517fd8ba8ba594b08656"},{url:"/assets/Archive/Onboarding/Missions/Navigate/NavigateImage3.png",revision:"5ac7701589b2c66636ad0b539a195bb6"},{url:"/assets/Archive/Onboarding/Missions/Navigate/ab936_kepler_view_of_a_ringed_planet_saturncore_in_outer_space__bb9ae32e-743a-4893-bebf-31f89ed21559.png",revision:"449a146738f989296326fcb4c8a0871f"},{url:"/assets/Archive/Onboarding/Missions/Silfur/GameItem1.png",revision:"5bd91fa3d1247aca7dc3cb29282a2fc9"},{url:"/assets/Archive/Onboarding/Missions/Silfur/GameItem2.png",revision:"9132028c444969591293e9ff14000252"},{url:"/assets/Archive/Onboarding/Missions/Silfur/GameItem3.png",revision:"d9d7495c85a1a4968ecc0fef2ba9ab64"},{url:"/assets/Archive/Onboarding/Missions/Silfur/SilfurImage1.png",revision:"449a146738f989296326fcb4c8a0871f"},{url:"/assets/Archive/Onboarding/Missions/Silfur/SolarShip1.png",revision:"972e5ba346bcfdc104ecfb4565435c0d"},{url:"/assets/Archive/Onboarding/Missions/Silfur/SolarShip2.png",revision:"00fa05cae65591850cd47f8df207a5f6"},{url:"/assets/Archive/Onboarding/Missions/Silfur/SolarShip3.png",revision:"74bf7d8b62b8b8ce829c45e353e819cb"},{url:"/assets/Archive/Surface.mp4",revision:"ebe3e35e7b78bc3b581ed95fcbd2d78d"},{url:"/assets/Archive/audio/Instrumental 02; Inventory.mp3",revision:"12e840bd86f49a17ad237e77cff0b980"},{url:"/assets/Archive/audio/Instrumental 04; Search and ecounter aliens-01.mp3",revision:"b4eec1a6d61d18387afce77193373941"},{url:"/assets/Archive/audio/Instrumental 05 v.6; boss fight.mp3",revision:"8db9a25951f264a4fbe96a696705f804"},{url:"/assets/Archive/audio/Instrumental 07; Ice Planet.mp3",revision:"271df8ef17f2dc2583f213595d9e3d81"},{url:"/assets/Archive/audio/Instrumental 08; Barren Planet.mp3",revision:"eb7f1c4896252caed2663da7cf40110b"},{url:"/assets/Archive/audio/WakeUp.mp3",revision:"4a2c4aa351cea6e2e62bddbe725794a2"},{url:"/assets/Archive/r2d2.png",revision:"0beaf06406d6265cb92aa50baea8c578"},{url:"/assets/Archive/ui/planet.svg",revision:"c268d8db01b8175ed7a1355739ca3754"},{url:"/assets/Automatons/ExploreRover1.png",revision:"50da0c3cd9e4b905941f771a382df800"},{url:"/assets/Automatons/Sat.png",revision:"b0b80fb493eff78ceeacd3e471c87fdb"},{url:"/assets/Backdrops/BioStations/Desert.jpg",revision:"4d30a152ec16dc975201a0f54fdb6a91"},{url:"/assets/Backdrops/Earth.png",revision:"1beae52a03baaa96f589519a325e5d27"},{url:"/assets/Backdrops/Mercury.png",revision:"49ddca4b14fbb0853b26c00c9cd186ca"},{url:"/assets/Backdrops/Negotiations.jpg",revision:"be23b513dd06d2ae40ab255357eeb536"},{url:"/assets/Backdrops/Venus.png",revision:"313b0a6b0aed2fe62d82edb31d0216d3"},{url:"/assets/Backdrops/View.jpeg",revision:"667d4e6811b0953b705e0b905c988948"},{url:"/assets/Backdrops/View.mp4",revision:"f001f7cbedb0aa8351700e194c3457cb"},{url:"/assets/Backdrops/background1.jpg",revision:"5c77cfacc630046769718c3ef38865b2"},{url:"/assets/Backdrops/background2.jpeg",revision:"f530c13582f2ebe7e7cdbba67efa6105"},{url:"/assets/Backdrops/cons.jpg",revision:"5f469d57a188d458313346319a7a6c23"},{url:"/assets/Backdrops/garden.png",revision:"893bd51dee46b01967c65b28a6e9560c"},{url:"/assets/Backdrops/gardens.png",revision:"8edcc3f921543cdf7d41bf75e33a9072"},{url:"/assets/Backdrops/gasgiant.jpeg",revision:"02ab340dd21ebd3494cfb9816e0bb473"},{url:"/assets/Backdrops/image.jpeg",revision:"65e83f2cf3a4ca02c1e006db1c802164"},{url:"/assets/Backdrops/satellite.jpg",revision:"ea79001d9cfc83c4eb5dbf0000fc3e77"},{url:"/assets/Bodies/sun-texture.png",revision:"b829dfb4a0a036c4727c5d61104c197b"},{url:"/assets/Captn.jpg",revision:"84dfa551865290b103d7a506ce294058"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step1.jpeg",revision:"4ce724c32f04466cb09c78f4591ecf6b"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step2.png",revision:"c8a926b536d4165efd3fec0ea8a75159"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step3.png",revision:"f130eb4200a4aeb8fecaabc69fef9b93"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step4.png",revision:"417c0e61d96e2ea6e1ce24f795512d61"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step5.png",revision:"62b7e6849c9e3a3b0383c2493965653b"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step6.png",revision:"1b4382df0d9eeb73e9fbd03b8273e3d3"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step7.jpeg",revision:"4ce724c32f04466cb09c78f4591ecf6b"},{url:"/assets/Docs/Curves/Step1.png",revision:"b36d119c989dcfa50a51ab039886990d"},{url:"/assets/Docs/Curves/Step2.png",revision:"15c9ea1ad29f1778c2ea597c281bd65f"},{url:"/assets/Docs/Curves/Step3.png",revision:"2b8841b66eda2f24223c5f49a8e86c0e"},{url:"/assets/Docs/Curves/Step4.png",revision:"d3fdaa57e975083d0e5e4f1c4caa2c1c"},{url:"/assets/Docs/Guide/AvailableMissions.png",revision:"a55e93d58a491bdb0555da49ebb52372"},{url:"/assets/Docs/Guide/EditMode.png",revision:"4e90cc507cceb5efefee2e1d148ceb3a"},{url:"/assets/Docs/Guide/FirstClassification.png",revision:"7b919dad4b454cd7649864414965d549"},{url:"/assets/Docs/Guide/OnEarth.png",revision:"34d2fd1d740215688653db9df06c9c8a"},{url:"/assets/Docs/Guide/ResearchMissions.png",revision:"b7cd1e08307784a993f95ba484f0f9fa"},{url:"/assets/Docs/Guide/ResearchModal.png",revision:"05b6622b931c0004e1927e4b22deb8ff"},{url:"/assets/Docs/Guide/StructureModal.png",revision:"d6564905be3985e89e32605069b9d65d"},{url:"/assets/Docs/Guide/TravelInfo.png",revision:"56f24df7bcc02b10625a66ed6921087b"},{url:"/assets/Docs/Guide/TutorialExample.png",revision:"62a7f43e5c37660d7bbe4123b70c0e6a"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step1.jpeg",revision:"7c6325133dd48f4c8b82e9f7ad4e3980"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step2.png",revision:"c66d776d990119e59ca0671fe1ca445b"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step3.jpeg",revision:"d57d7e20d708adaff94032b1c82678b2"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step4.png",revision:"4787699232a87527248fbea7bd3cf468"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step5.png",revision:"a2b1e8a1938cce3d75ed30a5e83c0edf"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step6.jpeg",revision:"1d335e4736b9a3a2382898ee7aae6081"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step7.png",revision:"eb706f8365606dfb111d425bcac6d7ff"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step8.png",revision:"1e5fe9c1ae3fcaab5d693b993470334b"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step9.jpeg",revision:"53c5c82ec397f772d33f2c882583ad50"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/crater.png",revision:"84ffc72703cdec2a7b441826e8ebdeb6"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/disk.png",revision:"fb4017b0db388f52e150a32635c824b7"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/dotted.png",revision:"81600b12cb517932d75e70d749dd2adf"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/gravitywave.png",revision:"9ae251aa1154678a3f709e50451b2203"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/other-general.png",revision:"866d16a12862c63f13fe3ac9b06faf6d"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/ozone.png",revision:"cc469f63fb5195a3eb557f6a1eda2b80"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/streak.png",revision:"6b15aba938944735d03e5692bf42b9e3"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/twilight.png",revision:"9645bc077029d14a538f4dbb4533eb2d"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/vortex.png",revision:"6dbfe2e209d7c1270a38ff67c8a505b2"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step1.png",revision:"6f64fe0a408aac02ce873674f434f181"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step2.png",revision:"f45ca57f448de583f78e9a75ea33fad9"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step3.png",revision:"f818e8e0c32dd94b638687195a8bfa0d"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step4.png",revision:"935dc3518abb08d87578938b920a52d9"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step5.png",revision:"ac98f087e6ea0c548d079df05b0aa137"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step6.png",revision:"d731a38125b393ccfb3b6dc25221f704"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step7.png",revision:"6cd3bec383dfd6fa4f6d68cf4e0c6a9b"},{url:"/assets/Docs/Satellites/Planet-Four/Step1.jpeg",revision:"b3e5f0774b0345e9fd332f44048e374d"},{url:"/assets/Docs/Satellites/Planet-Four/Step2.jpeg",revision:"fe7050776b47c2089308129b138575e0"},{url:"/assets/Docs/Satellites/Planet-Four/Step3.jpeg",revision:"4b1298adb19b51f9e2298a6a28f8c8f4"},{url:"/assets/Docs/Satellites/Planet-Four/Step4.gif",revision:"f824b0b7958b1d1553e7e904b0379327"},{url:"/assets/Docs/Satellites/Planet-Four/Step5.gif",revision:"7b347c35e21d132143aa1e39d567243b"},{url:"/assets/Docs/Satellites/Planet-Four/Step6.jpeg",revision:"e2fd14f8fab251bbe1b8ba629ed491e4"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step0.jpeg",revision:"b7a2a99748c14b7de66cfd547e9ac5ed"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step1.png",revision:"4b83160b7c815fc45e485e702e4c8143"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step2.gif",revision:"84ac95a7be981b61672edb3d2f696db5"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step3.gif",revision:"bb37732c200620e0655c02e03c3e623e"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step4.png",revision:"6bfde27fabf4faed90da2d79e49c4f64"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step5.png",revision:"b9f977c7c87ab60d0d86a3430ec824f0"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/Step1.png",revision:"ea45bef432497c0692f4eb37ece44dec"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/Step2.png",revision:"07af3996151ce251a1fc5a5d863ed8b1"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/Step3.png",revision:"9743622ff48e5763ea856f9497c23256"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/Step4.png",revision:"3927be877440eb87ba7cca394f3e3464"},{url:"/assets/Docs/Telescopes/DiskDetector/Step1.png",revision:"922c8aa86d86f212d15bbdf51f401e2d"},{url:"/assets/Docs/Telescopes/DiskDetector/Step2.png",revision:"fa164673ae38a1768dbadf1391009153"},{url:"/assets/Docs/Telescopes/DiskDetector/Step3.png",revision:"51d413923e5d490c104a0109a1866e16"},{url:"/assets/Docs/Telescopes/DiskDetector/Step4.png",revision:"e5a14f2e8a50da4767b498b7794eafa8"},{url:"/assets/Docs/Telescopes/Sunspots/Step1.png",revision:"8fe0b00b92288b74862e7da82482a436"},{url:"/assets/Docs/Telescopes/Sunspots/Step2.png",revision:"a2fc4469a6172c691ebb2c7a411c5eae"},{url:"/assets/Docs/Telescopes/Sunspots/Step3.png",revision:"5f890b7d285a3a917b9bc14beb65ee20"},{url:"/assets/Docs/Telescopes/Sunspots/Step4.png",revision:"78a1bbd2bc27dfa78a31ebf14c645e66"},{url:"/assets/Docs/Telescopes/SuperWASP/1.gif",revision:"e7b5d9712baffde7aa1ee28bb9d77663"},{url:"/assets/Docs/Telescopes/SuperWASP/2.gif",revision:"e16a5836f1c7b4c085469c6fcaa0ecc9"},{url:"/assets/Docs/Telescopes/SuperWASP/3.gif",revision:"8782fcec46ccd9cfde7ea2881f6efa9b"},{url:"/assets/Docs/Telescopes/SuperWASP/4.gif",revision:"e1d08e4f688599c19177dc49a9de5e90"},{url:"/assets/Docs/Telescopes/SuperWASP/5.gif",revision:"efb001734bd5a3bbb2fb8c26557b0bc9"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step1.jpeg",revision:"0f8d074c5eb03331e0ad80320133b1a0"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step2.jpg",revision:"2427f36af822ee6ac99ab2b841d7d7e7"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step3.jpg",revision:"6ea8d338f543905d8ec4991f92cd88fe"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step4.jpg",revision:"d94a66ef8803352c9b3febb5866e7c9a"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step5.jpg",revision:"15c51a9bb682ab75dc3418e7e2f89ab7"},{url:"/assets/Docs/Zoodex/zoodex-PenguinWatch/Step1.jpeg",revision:"5bc4c6b5c384409446bcfacff9d343e4"},{url:"/assets/Docs/Zoodex/zoodex-PenguinWatch/Step2.jpeg",revision:"f65c9b2ab621f447435eb8f80d696c39"},{url:"/assets/Docs/Zoodex/zoodex-PenguinWatch/Step3.jpeg",revision:"3636a781f06b0cedf0f77890e7cb2b39"},{url:"/assets/Docs/Zoodex/zoodex-PenguinWatch/Step4.jpeg",revision:"632e1d7643b1826f4e62ac34a8d7e944"},{url:"/assets/Docs/Zoodex/zoodex-PlanktonPortal/Step1.png",revision:"ececc0ef084a126840e926f2476a4c5d"},{url:"/assets/Docs/Zoodex/zoodex-PlanktonPortal/Step2.png",revision:"17c017e3c1995aef55fb07138b654640"},{url:"/assets/Docs/Zoodex/zoodex-PlanktonPortal/Step3.png",revision:"fea9931a6f258b66eb9cfa856cb26ceb"},{url:"/assets/Docs/Zoodex/zoodex-PlanktonPortal/Step4.png",revision:"fe09f67239daf3db60c449b455334ac6"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step1.jpeg",revision:"6625e4a0f0aa7a23fe11860f53d474a6"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step2.png",revision:"1abf2dd1128700126c680993d60b522b"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step3.png",revision:"c478d6469168910e1ae49e6cd0d696f8"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step4.jpeg",revision:"6c3c551ee26c2934b696efd4946643c0"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step5.jpeg",revision:"d444b87070bf268e585fc387475aa4f0"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step6.png",revision:"ff7430f42f1fa38b113bcb3abc86df3d"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step7.jpeg",revision:"2969154c39321c95df5dad26319c49fb"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Antipathes-Atlantica.jpeg",revision:"80bbfa0fd91738832664e429d17e2c27"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Antipathes-Furcata.jpeg",revision:"5f1d6dbf427592495eebdffe02bb86dc"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Bebryce-Sp.jpg",revision:"81be15d42949c3118106bc733d8957b2"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Ellisellidae.jpeg",revision:"22d5fbe1e8f65d46095bcbf2368f01e2"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Fish.jpeg",revision:"ac4263e0478bf21d1d6507ee22b6db26"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Madracis-sp..jpg",revision:"8a5d8bb7183d4a5e09a23bab582445cb"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Madrepora-Sp.jpeg",revision:"5cb6bd705a4136856f51bd50c4baba6f"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Muricea-Pendula.jpg",revision:"13577b7e19c3575500efce98c3299918"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Paramuriciade.jpg",revision:"5b7eac3ddcf4627d508df6de4d4d5d29"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Spoonge.jpeg",revision:"9644a6de3ad0e3fea08534746cba4167"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Stichopathes.jpg",revision:"351a22ac8cb2839b2f0fe6767e2859f6"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Swiftia-Exserta.jpeg",revision:"c81564435c0522b8f90b14155cf77e08"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Thesea-Nivea.jpeg",revision:"9283e0faf204d65afe9fc06b088f3b37"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step1.png",revision:"9ac89ae431688bbc59f0172e427567ab"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step2.png",revision:"484e0de8ee3614b8b5eadcad47c0577d"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step3.png",revision:"484e0de8ee3614b8b5eadcad47c0577d"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step4.png",revision:"52095cabc0f3f15fcb539dfd19c08df2"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step5.png",revision:"013eef5ab240240bdd2c3d61c45ed704"},{url:"/assets/Images/capacity-1.png",revision:"b11baa8002d956d83035dc56d8b196bd"},{url:"/assets/Images/capacity-2.png",revision:"3aa28af2d9970405993a674875ccc05c"},{url:"/assets/Images/capacity-3.png",revision:"fb2edead7a418ac1ccc3b2b8658582b1"},{url:"/assets/Images/landing1.jpg",revision:"d614027097dc6c4b482b1ebe6dd4ca06"},{url:"/assets/Images/landing2.jpg",revision:"37295f0d482d11f6fec67a8e91f025e5"},{url:"/assets/Images/landing3.jpg",revision:"1fcab1a9ab528d50b39491d5945ae996"},{url:"/assets/Images/landing4.jpg",revision:"824d43b5f6c0b7cdbe308e839e55c2ab"},{url:"/assets/Images/landing5.jpg",revision:"4661f0b795c93f4fd452f7c11064bd18"},{url:"/assets/Images/landing6.jpg",revision:"0f961272ab9e266be515eb843400c95c"},{url:"/assets/Images/power-1.png",revision:"6dc4d6fc65a6a4a4626dad5b223f0b15"},{url:"/assets/Images/power-2.png",revision:"02e4c35f2cc98683d8446af714467aed"},{url:"/assets/Images/power-3.png",revision:"e85e80fc437cbdd37ea281ebad6861ca"},{url:"/assets/Images/speed-1.png",revision:"c2c11563476fa94cd79c529cae68cc2f"},{url:"/assets/Images/speed-2.png",revision:"14f619efe74218e9e0ca37e28a6d8ac8"},{url:"/assets/Images/speed-3.png",revision:"83b2fa733f09488123b88e404c7db635"},{url:"/assets/Items/22.png",revision:"aaf676880015ae1fca6670026e9edab5"},{url:"/assets/Items/28.png",revision:"58a70597ee0a85b0e929049c1518496a"},{url:"/assets/Items/Alloy.png",revision:"1ab072f72ce2d014a9d176b2780230ec"},{url:"/assets/Items/AutoController.png",revision:"65aa5761bcfdc2d9c1086afbde0433f7"},{url:"/assets/Items/AutomatonController.png",revision:"9bec20ac77c7a10c9e0863903094b147"},{url:"/assets/Items/CameraReceiver.png",revision:"e3d4b72f37cfe9b03a8a4231c10a1735"},{url:"/assets/Items/Chromite.png",revision:"48459b3c96b2eb0e03fa0303ba8dbac6"},{url:"/assets/Items/Coal.png",revision:"a20225d254d9c7c0b04bf01a89b8ac58"},{url:"/assets/Items/Copper.png",revision:"01eae5b57bb8475f67be87c38ebe52c0"},{url:"/assets/Items/Greenhouse.jpg",revision:"89ce4d9952c5fcca5246af132bc33cee"},{url:"/assets/Items/Greenhouse.png",revision:"dbf4ec7c99a5ac515de500e7f4bde2aa"},{url:"/assets/Items/Helicopter.png",revision:"8fabf68dab697ac41b1ddb5d23952bdb"},{url:"/assets/Items/Ice.png",revision:"655fc37ae85f470103f864a39e8ac847"},{url:"/assets/Items/Iron.png",revision:"7a673727c900b1a253cc2fe9b96c2ac9"},{url:"/assets/Items/Launchpad.jpg",revision:"76324cf59091e8e07f0f76565bf0918c"},{url:"/assets/Items/Lidar.png",revision:"50a112cd26a8e868e64f6db7c5dc0ea4"},{url:"/assets/Items/MiningStructure.png",revision:"96640003bac02c57d277f011c2e7d1d7"},{url:"/assets/Items/Nickel.png",revision:"47473b610a62cd8c4a2ec26c86666e60"},{url:"/assets/Items/Pokedex.png",revision:"7c5bdbbdb6942471f6dee26f35f57464"},{url:"/assets/Items/Research.png",revision:"05e5a3b0f4398c4b7dd5293822295d94"},{url:"/assets/Items/Rocket.png",revision:"7e7eece84a6324977c3e5077b8446aa7"},{url:"/assets/Items/Roover.gif",revision:"ba881bf19d84414d2b61853ae2c262a1"},{url:"/assets/Items/Scoper.png",revision:"7637fbddf3ea93f9fafd012a4ddcea6f"},{url:"/assets/Items/Silicon.png",revision:"01eae5b57bb8475f67be87c38ebe52c0"},{url:"/assets/Items/Telescope.jpg",revision:"23071871f6142f8dd0c7c3a3f7b07788"},{url:"/assets/Items/Telescope.png",revision:"2289bb2e88c120250b9c70eb2fe6cc75"},{url:"/assets/Items/TransitingTelescope.png",revision:"c57789844332d12cfbd36e2a46435130"},{url:"/assets/Items/Vector.png",revision:"1930faa9e00cffd9cefb4764c5cecb11"},{url:"/assets/Items/WeatherBalloon.png",revision:"7e7c0065a9be091098d5cd5fe2199dd6"},{url:"/assets/Items/Zoodex.png",revision:"57d29ff98723319efa6f03093fafec3f"},{url:"/assets/Items/camerars.png",revision:"74b20c14a9c01178533eed11bb93becc"},{url:"/assets/Items/miningstation.png",revision:"60f6398da814012af4fd64c94af65729"},{url:"/assets/Items/roover.png",revision:"eacaaf0fab67591794313b11bfd166a7"},{url:"/assets/Items/rover.svg",revision:"61143d0da3adec08b3325962b6198ee4"},{url:"/assets/Items/sw.js",revision:"aa14caf35328d6ef2b804009fce82acc"},{url:"/assets/Planets/Earth.png",revision:"0fa6e6f81ec8207ee4ae82f6a37ce617"},{url:"/assets/Planets/Mars.png",revision:"3f4ed19d54bed733b121f73d6a7e8ec9"},{url:"/assets/Planets/Mercury.png",revision:"15dd11dcd44ddf6cb2dd46525c45e1b7"},{url:"/assets/Planets/Moon.png",revision:"c9a970a4c0cfe6cd816ce0229069384b"},{url:"/assets/Planets/Venus.png",revision:"f4f6739d5f289093699d8a8557d8aaf8"},{url:"/assets/Template.png",revision:"d12bd71d3d676bc16e638dc0434c2f81"},{url:"/assets/Viewports/Satellite/Satellite_Tile1.png",revision:"238c6328351a9fd56b71a02dc2738a4e"},{url:"/assets/Viewports/Satellite/Satellite_Tile2.png",revision:"4743b76f39f6c16a9e8e3195c7617032"},{url:"/assets/Viewports/Satellite/Satellite_Tile3.png",revision:"8c8639aed6eadeabdeeac8a4c0004b98"},{url:"/assets/audio/notifs/r2d2.wav",revision:"6dc4c91a7c1daf63929b65047ceebd38"},{url:"/assets/audio/notifs/r2d21.wav",revision:"e981d8366a5dc119bb1573912e2e4bda"},{url:"/bg.png",revision:"c5ba6d9e151811b7d47e5e51d3b65e70"},{url:"/d.jpg",revision:"a7ac3ec6ee8bc8f70d3ccea891c910d2"},{url:"/favicon.ico",revision:"2483625e322b353626b172cc06960f01"},{url:"/floating_pinnie.png",revision:"a2c6520d64f813b77a91e7bc7ba22893"},{url:"/hero.png",revision:"cf4830d9cf114680b0ac6bea06186d17"},{url:"/icon-192.png",revision:"84dfa551865290b103d7a506ce294058"},{url:"/icon-512.png",revision:"84dfa551865290b103d7a506ce294058"},{url:"/logo.png",revision:"8b6947f0a54d1c2cb88e6a8b7be60081"},{url:"/manifest.json",revision:"1fadd711614177976c354739be470524"},{url:"/noise-2.svg",revision:"c84d42cb9ba68c2fc5e28d985b36c42f"},{url:"/offline",revision:"GO8Z5TWONYn8u-ZQ8w2np"},{url:"/orc.webp",revision:"10fb3a698407e30a6bfe44043b8a7892"},{url:"/out0.png",revision:"4b24a573657e70d0799e743d86439756"},{url:"/pinnie.png",revision:"8b1f06202c16b2b4d8870aeb07a0504e"},{url:"/placeholder-user.jpg",revision:"7ee6562646feae6d6d77e2c72e204591"},{url:"/placeholder.svg",revision:"446325a7666c39d7f840f674836a5454"},{url:"/planet.svg",revision:"e1e69e2676b03d06e2e34c2ecd9eac93"},{url:"/rocket.png",revision:"e2972433825395d77752a6df5e8a1039"},{url:"/satellite.svg",revision:"a48e3337b7aa672558c7bce79c41e171"},{url:"/satellite_new.png",revision:"52e659a29549f87929846dd495514d27"},{url:"/scuba_pinnie.png",revision:"cdd794024c17069a8bfe95e7b9e915c2"},{url:"/service-worker.js",revision:"6a808abb5ba06c5bd72f6205e1c7324d"},{url:"/thirdweb.svg",revision:"075df596cf30f53ea22bbb1cddfbba73"},{url:"/ufo.png",revision:"5b5dd617dc864c18fa2f90b299275e0f"},{url:"/vercel.svg",revision:"61c6b19abff40ea7acd577be818f3976"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:a,state:n})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s},{handlerDidError:async({request:e})=>self.fallback(e)}]}),"GET"),e.registerRoute(/^https?.*/,new e.NetworkFirst({cacheName:"offlineCache",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:200,maxAgeSeconds:2592e3}),{handlerDidError:async({request:e})=>self.fallback(e)}]}),"GET")}); +if(!self.define){let e,s={};const a=(a,i)=>(a=new URL(a+".js",i).href,s[a]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()}).then(()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e}));self.define=(i,r)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(s[c])return;let n={};const o=e=>a(e,c),t={module:{uri:c},exports:n,require:o};s[c]=Promise.all(i.map(e=>t[e]||o(e))).then(e=>(r(...e),n))}}define(["./workbox-92923e46"],function(e){"use strict";importScripts("fallback-zFJ3Gbv7pEhrOhXsQoevQ.js"),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/Campbells.jpg",revision:"11385cbf8fbc65ddbe1ee9cc4f61599c"},{url:"/Eric.jpg",revision:"57cd76a7a6645463439016cea20d348c"},{url:"/Fred.webp",revision:"20a4d0dd0bb457f26136b4cb3299bbbf"},{url:"/Planet.png",revision:"dadf5193009bd2284bff301dfb69a2d6"},{url:"/_next/app-build-manifest.json",revision:"dbcf89de280f36b265073e09742c7caa"},{url:"/_next/static/chunks/1124-be9552607222d1e2.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/1151-b7d68f1322e7e7c3.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/1176-5f324c6d652a71dd.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/1363.9139665fccd9c7a0.js",revision:"9139665fccd9c7a0"},{url:"/_next/static/chunks/1402-db70e87dd0aaa75a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/1714-69c6268587164c61.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/1812.ea04595a0031aafe.js",revision:"ea04595a0031aafe"},{url:"/_next/static/chunks/2038-67b6bf0710306f48.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2117-3f08714425d7b4a3.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/216-8e0dbe85dc469b3c.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2234.60d9ee493bfa1716.js",revision:"60d9ee493bfa1716"},{url:"/_next/static/chunks/2252-16175c36ab0b36cb.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2268-cbdad168331f2555.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2370-88cf2fb867efbba9.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2382-8d2c9894520a471f.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2417-3dd724510a718d06.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2509-fc7017b5dc896aed.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2571-3dffe60ba6dc164a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2764-70e2b3fc5da3d7c9.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/2852.ac25a49f39a6345f.js",revision:"ac25a49f39a6345f"},{url:"/_next/static/chunks/29.eaa87f2c630df724.js",revision:"eaa87f2c630df724"},{url:"/_next/static/chunks/2902.d0ed83999d38c5d6.js",revision:"d0ed83999d38c5d6"},{url:"/_next/static/chunks/2955-cc4260c441819f04.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/3069-40cee7883ca6762e.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/3292-c65d11cf5eb7ea50.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/3519-30ef23394d16a428.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/3553-5a3f66ed7d110bbc.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/376-8fb2227601d36e71.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/4058-221d9c5ad53e7e2f.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/4419-00d437f93f6a09b4.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/4617-7b4bfb3af308cbf3.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/4752-ead1d9a00ff0799c.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/4938-e2bcdd4984dcd09d.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/4956-543b19a86b2c7f84.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/5011-28b424db06c491d4.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/5569-9bf5ebeb9c966fec.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/5583-2da3fdce8a49a823.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/5687-0d6dfcb7142de33b.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/5786.858a278f3619e9af.js",revision:"858a278f3619e9af"},{url:"/_next/static/chunks/5794-ecfb65921fefbce7.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/5798-07fcea046cd8c7df.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/5866-55252fc745224eae.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/6030-8a0a2beb22940f0a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/6098-f8124ef08d4fdefe.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/6427-13c29683b7219739.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/6489-5ee34b16822daa42.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/6592-24fccc72e2b5923a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/6637.177a6394b0507193.js",revision:"177a6394b0507193"},{url:"/_next/static/chunks/6781.305558d259e85644.js",revision:"305558d259e85644"},{url:"/_next/static/chunks/6834-4b8b72b63c953eb8.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/6873-12de5600f07d687a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/7000-64f06cb5733e932c.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/7091-642c1f0bdafdb5ea.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/7441-80a026ee40961569.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/7452-6679dcc0b14334a4.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/766-57a31b7064e5b8c7.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/7790-2a4deb5e43f14c82.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/785-90d5a5c5fe8025bb.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/8091-212cbd034d81322a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/8165.fece0f2abe3c6073.js",revision:"fece0f2abe3c6073"},{url:"/_next/static/chunks/8280-4b558f2983782f8e.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/8302-0411d723b2092b7f.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/8346-efda2ccb39e438dc.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/8642-c5b817a06db9935b.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/884-6e87a71d04e80b25.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/8846-9b5f87b5a913439e.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/8917-e506b0696998c2e7.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/8953-8aa3871a96d78b98.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/9104.78583bc689bcfb85.js",revision:"78583bc689bcfb85"},{url:"/_next/static/chunks/9208-e345c7c48b0eac65.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/9387-779bc1719f3ac753.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/9452.03bc05918fd850a9.js",revision:"03bc05918fd850a9"},{url:"/_next/static/chunks/954-d553c4f23df84138.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/9828.8f0a5e098250b33b.js",revision:"8f0a5e098250b33b"},{url:"/_next/static/chunks/9854-9e508be7190fa9b0.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/9da6db1e-e4043ef83035bbcf.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/ad2866b8-d9a081783e4ea5b3.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/_not-found/page-98b09e372b5d8f95.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/account/page-53151d7467dc43c7.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/activity/deploy/page-7dda562be6a01be0.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/activity/deploy/roover/page-5aecdde26f638b6a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/apt/page-21fb3cf1f72b4dcd.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/auth/page-bf1d4e2ec077609f.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/auth/register/page-6ac91410da5e6e48.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/extraction/%5Bid%5D/page-a9200870d2548411.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/game/page-a96f2f2a4723eb03.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/inventory/classifications/page-ac9499dff8f8cff1.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/inventory/page-19f5e5cd01ce79e3.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/layout-00eba830eb7100c3.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/layouts/activity/layout-b8481d06d04e4f01.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/layouts/activity/page-29e302e2917279b1.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/leaderboards/sunspots/page-af2cb18d0388577f.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/next/%5Bid%5D/page-7f9300895efb34ee.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/offline/page-b73c17cbc8b2e45a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/page-89bfd2cf1ab83421.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/planets/%5Bid%5D/page-f5d3984d95b37ea4.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/planets/clouds/%5Bid%5D/page-c805aa20a30d8c44.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/planets/edit/%5Bid%5D/page-abc3b40f11ed8b62.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/planets/paint/%5Bid%5D/page-6320dd7cf61ad2b5.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/posts/%5Bid%5D/page-42dde12456f4104a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/posts/surveyor/%5Bid%5D/page-e1106e748a49fa71.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/privacy/page-600810fa6978abd6.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/research/page-0f50f0caa6dd3ab2.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/scenes/uploads/page-975985afe906bdc4.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/balloon/%5Bproject%5D/%5Bid%5D/%5Bmission%5D/page-f63848f201136c66.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/balloon/%5Bproject%5D/page-02be991606b55af8.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/balloon/page-86e1a119d63ecef2.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/cameras/page-6620338f5217a4c0.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/seiscam/%5Bproject%5D/%5Bid%5D/%5Bmission%5D/page-44e67dc9f741a3e4.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/seiscam/page-a0660cc0d02d638c.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/telescope/%5Bproject%5D/%5Bid%5D/%5Bmission%5D/page-7509b1e419ca4b2e.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/telescope/%5Bproject%5D/page-9b900f352453369c.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/structures/telescope/page-991c0a91e9ce8cb7.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/terms/page-9152b1804afe8f78.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/tests/page-9e0915aeaeb9d54a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/viewports/roover/page-39829d9009a07b1f.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/viewports/satellite/deploy/page-b87cfebfdcfa270d.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/viewports/satellite/page-47b4c05ced7f13a0.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/app/viewports/solar/page-8a2f88abf2e70174.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/b536a0f1-ee91348fe72fbac9.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/bd904a5c-4ebb2c5169124366.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/c16f53c3-42f37dfb9f90c107.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/fd9d1056-79b6cfb6f9ff6563.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/framework-56dfd39ab9a08705.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/main-2e6b6772a23b103a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/main-app-ec79de62d0df1dfd.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/pages/_app-3c9ca398d360b709.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-f8048d23992be76a.js",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/_next/static/css/863eef8e3709397a.css",revision:"863eef8e3709397a"},{url:"/_next/static/zFJ3Gbv7pEhrOhXsQoevQ/_buildManifest.js",revision:"b362bc6587ac0d49f4c8883e0cfffd0b"},{url:"/_next/static/zFJ3Gbv7pEhrOhXsQoevQ/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/apple-touch-icon.png",revision:"84dfa551865290b103d7a506ce294058"},{url:"/assets/Archive/Inventory/Items/AeroCameraLevel1.png",revision:"b0095b88572678b14b751164bdafec8a"},{url:"/assets/Archive/Inventory/Items/AeroCameraLevel1NoBg.png",revision:"d92db950b319ff898b4b3b028998ee23"},{url:"/assets/Archive/Inventory/Items/Coal.png",revision:"f2c12cb628c5f1befb00934ef590eed9"},{url:"/assets/Archive/Inventory/Items/Fuel.png",revision:"aa39fc0ee9e5310fbd8df9c9c9228caf"},{url:"/assets/Archive/Inventory/Items/GoldenTelescopeLevel1Original.jpg",revision:"4ed335ca5ad7579441fcae7d4c311435"},{url:"/assets/Archive/Inventory/Items/GoldenTelescopeLevel1noBg.png",revision:"fe61acf446aa92820168b915e1d64e3b"},{url:"/assets/Archive/Inventory/Items/Silicates1.png",revision:"57aeda36fe8e660f9e7e388aa9cae035"},{url:"/assets/Archive/Inventory/Planets/Dump/65Binned.png",revision:"384b67f48a661347251312232e9ebf85"},{url:"/assets/Archive/Inventory/Planets/Dump/65Cover.png",revision:"fa14b14d9ffb751661fc22adfc3d8b7c"},{url:"/assets/Archive/Inventory/Planets/Dump/65Phase.png",revision:"f66e7998c7e7b89ca58a8073de29bb95"},{url:"/assets/Archive/Inventory/Planets/Dump/66Cover.png",revision:"9b53b2ac283656684d5ea5a00a8d94f5"},{url:"/assets/Archive/Inventory/Planets/Europa.png",revision:"5e01baea533129113d9d34f6de5c9a35"},{url:"/assets/Archive/Inventory/Planets/Mars.png",revision:"56b8fe5594110efe61945113cd019476"},{url:"/assets/Archive/Inventory/Planets/Planet59.png",revision:"428c91489994b502f47f529fbbe1747c"},{url:"/assets/Archive/Inventory/Planets/Planet63.png",revision:"d05e92b091ce34dd2a405f3c403b7698"},{url:"/assets/Archive/Inventory/Planets/Planet64.png",revision:"bc43db3cae98d2907e439596807805fa"},{url:"/assets/Archive/Inventory/Planets/PlanetBg.png",revision:"aa73eaf3e0304e7be31de35fe4a86d3a"},{url:"/assets/Archive/Inventory/Planets/SectorBg.png",revision:"6278cb9d4a7080eaacf2b2ffb250c567"},{url:"/assets/Archive/Inventory/Planets/rover.png",revision:"28e46f4d9a871a1afec830c482e726fb"},{url:"/assets/Archive/Inventory/Structures/Telescope.png",revision:"d2142a6fb24edb6ed6f40638e895068f"},{url:"/assets/Archive/Inventory/Structures/Telescope2.png",revision:"94b0a790fff053144e2bb63c1143b173"},{url:"/assets/Archive/Inventory/Structures/TelescopeReceiver.png",revision:"adbdc303fd7b86dd08761d23b607882e"},{url:"/assets/Archive/Inventory/Structures/TelescopeReceiverStruct.png",revision:"6cf3fb4e2f292ccfc356d28b05dccff0"},{url:"/assets/Archive/Onboarding/Bg.png",revision:"3d1d9e5ede244694750492b0bfc94be6"},{url:"/assets/Archive/Onboarding/Missions/Crucible/CrucibleGif.webp",revision:"e86425b7abb107c6a8934b77d5130631"},{url:"/assets/Archive/Onboarding/Missions/Crucible/CrucibleImage1.png",revision:"0000a3fca273b34662387215e2b9038b"},{url:"/assets/Archive/Onboarding/Missions/Crucible/CrucibleImage2.png",revision:"2fdeaf5d0cbd2aabe96a9735ca76272a"},{url:"/assets/Archive/Onboarding/Missions/Crucible/CrucibleImage3.png",revision:"dcd55aab5f70f29b13f65a5005bad2a1"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage1.png",revision:"05738c37105a229f6dc67e3f95e9076d"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage2.png",revision:"1687d7ef021d977dba7c13dde60a40d9"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage3.png",revision:"bcce9d5b4cd6cc5505d1490e3305db65"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage4.png",revision:"e05fd92c25df01e070cfc22b3bf89e9c"},{url:"/assets/Archive/Onboarding/Missions/Emergence/EmergenceImage5.png",revision:"35d9a1b812a520dfc243680c8ae09fad"},{url:"/assets/Archive/Onboarding/Missions/Emergence/TALONOVA (5)_clipdrop-enhance.png",revision:"b59102a0a7655c275cdc689bfb71f476"},{url:"/assets/Archive/Onboarding/Missions/Emergence/cartographer.png",revision:"bc0bd32c00672651498e4ac27f6ec911"},{url:"/assets/Archive/Onboarding/Missions/Emergence/cartographer.svg",revision:"67a1cbec05d00c226cd86b0a981f8dac"},{url:"/assets/Archive/Onboarding/Missions/Emergence/guardian.png",revision:"c4cb1a5d06f4ecf36d16ceb5c92f87d8"},{url:"/assets/Archive/Onboarding/Missions/Emergence/guardian.svg",revision:"b4759ba8ab3a66362c97209aa84b013e"},{url:"/assets/Archive/Onboarding/Missions/Emergence/navigator.png",revision:"43ef8636fca24a9469c7c5f22296d6af"},{url:"/assets/Archive/Onboarding/Missions/Emergence/navigator.svg",revision:"3f6467f410d7818933af8bb513a38fe3"},{url:"/assets/Archive/Onboarding/Missions/Navigate/NavigateImage1.png",revision:"9b53b2ac283656684d5ea5a00a8d94f5"},{url:"/assets/Archive/Onboarding/Missions/Navigate/NavigateImage2.png",revision:"0beb47aeb676517fd8ba8ba594b08656"},{url:"/assets/Archive/Onboarding/Missions/Navigate/NavigateImage3.png",revision:"5ac7701589b2c66636ad0b539a195bb6"},{url:"/assets/Archive/Onboarding/Missions/Navigate/ab936_kepler_view_of_a_ringed_planet_saturncore_in_outer_space__bb9ae32e-743a-4893-bebf-31f89ed21559.png",revision:"449a146738f989296326fcb4c8a0871f"},{url:"/assets/Archive/Onboarding/Missions/Silfur/GameItem1.png",revision:"5bd91fa3d1247aca7dc3cb29282a2fc9"},{url:"/assets/Archive/Onboarding/Missions/Silfur/GameItem2.png",revision:"9132028c444969591293e9ff14000252"},{url:"/assets/Archive/Onboarding/Missions/Silfur/GameItem3.png",revision:"d9d7495c85a1a4968ecc0fef2ba9ab64"},{url:"/assets/Archive/Onboarding/Missions/Silfur/SilfurImage1.png",revision:"449a146738f989296326fcb4c8a0871f"},{url:"/assets/Archive/Onboarding/Missions/Silfur/SolarShip1.png",revision:"972e5ba346bcfdc104ecfb4565435c0d"},{url:"/assets/Archive/Onboarding/Missions/Silfur/SolarShip2.png",revision:"00fa05cae65591850cd47f8df207a5f6"},{url:"/assets/Archive/Onboarding/Missions/Silfur/SolarShip3.png",revision:"74bf7d8b62b8b8ce829c45e353e819cb"},{url:"/assets/Archive/Surface.mp4",revision:"ebe3e35e7b78bc3b581ed95fcbd2d78d"},{url:"/assets/Archive/audio/Instrumental 02; Inventory.mp3",revision:"12e840bd86f49a17ad237e77cff0b980"},{url:"/assets/Archive/audio/Instrumental 04; Search and ecounter aliens-01.mp3",revision:"b4eec1a6d61d18387afce77193373941"},{url:"/assets/Archive/audio/Instrumental 05 v.6; boss fight.mp3",revision:"8db9a25951f264a4fbe96a696705f804"},{url:"/assets/Archive/audio/Instrumental 07; Ice Planet.mp3",revision:"271df8ef17f2dc2583f213595d9e3d81"},{url:"/assets/Archive/audio/Instrumental 08; Barren Planet.mp3",revision:"eb7f1c4896252caed2663da7cf40110b"},{url:"/assets/Archive/audio/WakeUp.mp3",revision:"4a2c4aa351cea6e2e62bddbe725794a2"},{url:"/assets/Archive/r2d2.png",revision:"0beaf06406d6265cb92aa50baea8c578"},{url:"/assets/Archive/ui/planet.svg",revision:"c268d8db01b8175ed7a1355739ca3754"},{url:"/assets/Automatons/ExploreRover1.png",revision:"50da0c3cd9e4b905941f771a382df800"},{url:"/assets/Automatons/Sat.png",revision:"b0b80fb493eff78ceeacd3e471c87fdb"},{url:"/assets/Backdrops/BioStations/Desert.jpg",revision:"4d30a152ec16dc975201a0f54fdb6a91"},{url:"/assets/Backdrops/Earth.png",revision:"1beae52a03baaa96f589519a325e5d27"},{url:"/assets/Backdrops/Mercury.png",revision:"49ddca4b14fbb0853b26c00c9cd186ca"},{url:"/assets/Backdrops/Negotiations.jpg",revision:"be23b513dd06d2ae40ab255357eeb536"},{url:"/assets/Backdrops/Venus.png",revision:"313b0a6b0aed2fe62d82edb31d0216d3"},{url:"/assets/Backdrops/View.jpeg",revision:"667d4e6811b0953b705e0b905c988948"},{url:"/assets/Backdrops/View.mp4",revision:"f001f7cbedb0aa8351700e194c3457cb"},{url:"/assets/Backdrops/background1.jpg",revision:"5c77cfacc630046769718c3ef38865b2"},{url:"/assets/Backdrops/background2.jpeg",revision:"f530c13582f2ebe7e7cdbba67efa6105"},{url:"/assets/Backdrops/cons.jpg",revision:"5f469d57a188d458313346319a7a6c23"},{url:"/assets/Backdrops/garden.png",revision:"893bd51dee46b01967c65b28a6e9560c"},{url:"/assets/Backdrops/gardens.png",revision:"8edcc3f921543cdf7d41bf75e33a9072"},{url:"/assets/Backdrops/gasgiant.jpeg",revision:"02ab340dd21ebd3494cfb9816e0bb473"},{url:"/assets/Backdrops/image.jpeg",revision:"65e83f2cf3a4ca02c1e006db1c802164"},{url:"/assets/Backdrops/satellite.jpg",revision:"ea79001d9cfc83c4eb5dbf0000fc3e77"},{url:"/assets/Bodies/sun-texture.png",revision:"b829dfb4a0a036c4727c5d61104c197b"},{url:"/assets/Captn.jpg",revision:"84dfa551865290b103d7a506ce294058"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step1.jpeg",revision:"4ce724c32f04466cb09c78f4591ecf6b"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step2.png",revision:"c8a926b536d4165efd3fec0ea8a75159"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step3.png",revision:"f130eb4200a4aeb8fecaabc69fef9b93"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step4.png",revision:"417c0e61d96e2ea6e1ce24f795512d61"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step5.png",revision:"62b7e6849c9e3a3b0383c2493965653b"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step6.png",revision:"1b4382df0d9eeb73e9fbd03b8273e3d3"},{url:"/assets/Docs/Automatons/automatons-ai4Mars/Step7.jpeg",revision:"4ce724c32f04466cb09c78f4591ecf6b"},{url:"/assets/Docs/Curves/Step1.png",revision:"b36d119c989dcfa50a51ab039886990d"},{url:"/assets/Docs/Curves/Step2.png",revision:"15c9ea1ad29f1778c2ea597c281bd65f"},{url:"/assets/Docs/Curves/Step3.png",revision:"2b8841b66eda2f24223c5f49a8e86c0e"},{url:"/assets/Docs/Curves/Step4.png",revision:"d3fdaa57e975083d0e5e4f1c4caa2c1c"},{url:"/assets/Docs/Guide/AvailableMissions.png",revision:"a55e93d58a491bdb0555da49ebb52372"},{url:"/assets/Docs/Guide/EditMode.png",revision:"4e90cc507cceb5efefee2e1d148ceb3a"},{url:"/assets/Docs/Guide/FirstClassification.png",revision:"7b919dad4b454cd7649864414965d549"},{url:"/assets/Docs/Guide/OnEarth.png",revision:"34d2fd1d740215688653db9df06c9c8a"},{url:"/assets/Docs/Guide/ResearchMissions.png",revision:"b7cd1e08307784a993f95ba484f0f9fa"},{url:"/assets/Docs/Guide/ResearchModal.png",revision:"05b6622b931c0004e1927e4b22deb8ff"},{url:"/assets/Docs/Guide/StructureModal.png",revision:"d6564905be3985e89e32605069b9d65d"},{url:"/assets/Docs/Guide/TravelInfo.png",revision:"56f24df7bcc02b10625a66ed6921087b"},{url:"/assets/Docs/Guide/TutorialExample.png",revision:"62a7f43e5c37660d7bbe4123b70c0e6a"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step1.jpeg",revision:"7c6325133dd48f4c8b82e9f7ad4e3980"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step2.png",revision:"c66d776d990119e59ca0671fe1ca445b"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step3.jpeg",revision:"d57d7e20d708adaff94032b1c82678b2"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step4.png",revision:"4787699232a87527248fbea7bd3cf468"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step5.png",revision:"a2b1e8a1938cce3d75ed30a5e83c0edf"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step6.jpeg",revision:"1d335e4736b9a3a2382898ee7aae6081"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step7.png",revision:"eb706f8365606dfb111d425bcac6d7ff"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step8.png",revision:"1e5fe9c1ae3fcaab5d693b993470334b"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/Step9.jpeg",revision:"53c5c82ec397f772d33f2c882583ad50"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/crater.png",revision:"84ffc72703cdec2a7b441826e8ebdeb6"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/disk.png",revision:"fb4017b0db388f52e150a32635c824b7"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/dotted.png",revision:"81600b12cb517932d75e70d749dd2adf"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/gravitywave.png",revision:"9ae251aa1154678a3f709e50451b2203"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/other-general.png",revision:"866d16a12862c63f13fe3ac9b06faf6d"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/ozone.png",revision:"cc469f63fb5195a3eb557f6a1eda2b80"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/streak.png",revision:"6b15aba938944735d03e5692bf42b9e3"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/twilight.png",revision:"9645bc077029d14a538f4dbb4533eb2d"},{url:"/assets/Docs/LIDAR/lidar-martianClouds/vortex.png",revision:"6dbfe2e209d7c1270a38ff67c8a505b2"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step1.png",revision:"6f64fe0a408aac02ce873674f434f181"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step2.png",revision:"f45ca57f448de583f78e9a75ea33fad9"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step3.png",revision:"f818e8e0c32dd94b638687195a8bfa0d"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step4.png",revision:"935dc3518abb08d87578938b920a52d9"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step5.png",revision:"ac98f087e6ea0c548d079df05b0aa137"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step6.png",revision:"d731a38125b393ccfb3b6dc25221f704"},{url:"/assets/Docs/Satellites/JovianVortexHunter/Step7.png",revision:"6cd3bec383dfd6fa4f6d68cf4e0c6a9b"},{url:"/assets/Docs/Satellites/Planet-Four/Step1.jpeg",revision:"b3e5f0774b0345e9fd332f44048e374d"},{url:"/assets/Docs/Satellites/Planet-Four/Step2.jpeg",revision:"fe7050776b47c2089308129b138575e0"},{url:"/assets/Docs/Satellites/Planet-Four/Step3.jpeg",revision:"4b1298adb19b51f9e2298a6a28f8c8f4"},{url:"/assets/Docs/Satellites/Planet-Four/Step4.gif",revision:"f824b0b7958b1d1553e7e904b0379327"},{url:"/assets/Docs/Satellites/Planet-Four/Step5.gif",revision:"7b347c35e21d132143aa1e39d567243b"},{url:"/assets/Docs/Satellites/Planet-Four/Step6.jpeg",revision:"e2fd14f8fab251bbe1b8ba629ed491e4"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step0.jpeg",revision:"b7a2a99748c14b7de66cfd547e9ac5ed"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step1.png",revision:"4b83160b7c815fc45e485e702e4c8143"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step2.gif",revision:"84ac95a7be981b61672edb3d2f696db5"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step3.gif",revision:"bb37732c200620e0655c02e03c3e623e"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step4.png",revision:"6bfde27fabf4faed90da2d79e49c4f64"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/ActiveAsteroids/Step5.png",revision:"b9f977c7c87ab60d0d86a3430ec824f0"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/Step1.png",revision:"ea45bef432497c0692f4eb37ece44dec"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/Step2.png",revision:"07af3996151ce251a1fc5a5d863ed8b1"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/Step3.png",revision:"9743622ff48e5763ea856f9497c23256"},{url:"/assets/Docs/Telescopes/DailyMinorPlanet/Step4.png",revision:"3927be877440eb87ba7cca394f3e3464"},{url:"/assets/Docs/Telescopes/DiskDetector/Step1.png",revision:"922c8aa86d86f212d15bbdf51f401e2d"},{url:"/assets/Docs/Telescopes/DiskDetector/Step2.png",revision:"fa164673ae38a1768dbadf1391009153"},{url:"/assets/Docs/Telescopes/DiskDetector/Step3.png",revision:"51d413923e5d490c104a0109a1866e16"},{url:"/assets/Docs/Telescopes/DiskDetector/Step4.png",revision:"e5a14f2e8a50da4767b498b7794eafa8"},{url:"/assets/Docs/Telescopes/Sunspots/Step1.png",revision:"8fe0b00b92288b74862e7da82482a436"},{url:"/assets/Docs/Telescopes/Sunspots/Step2.png",revision:"a2fc4469a6172c691ebb2c7a411c5eae"},{url:"/assets/Docs/Telescopes/Sunspots/Step3.png",revision:"5f890b7d285a3a917b9bc14beb65ee20"},{url:"/assets/Docs/Telescopes/Sunspots/Step4.png",revision:"78a1bbd2bc27dfa78a31ebf14c645e66"},{url:"/assets/Docs/Telescopes/SuperWASP/1.gif",revision:"e7b5d9712baffde7aa1ee28bb9d77663"},{url:"/assets/Docs/Telescopes/SuperWASP/2.gif",revision:"e16a5836f1c7b4c085469c6fcaa0ecc9"},{url:"/assets/Docs/Telescopes/SuperWASP/3.gif",revision:"8782fcec46ccd9cfde7ea2881f6efa9b"},{url:"/assets/Docs/Telescopes/SuperWASP/4.gif",revision:"e1d08e4f688599c19177dc49a9de5e90"},{url:"/assets/Docs/Telescopes/SuperWASP/5.gif",revision:"efb001734bd5a3bbb2fb8c26557b0bc9"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step1.jpeg",revision:"0f8d074c5eb03331e0ad80320133b1a0"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step2.jpg",revision:"2427f36af822ee6ac99ab2b841d7d7e7"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step3.jpg",revision:"6ea8d338f543905d8ec4991f92cd88fe"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step4.jpg",revision:"d94a66ef8803352c9b3febb5866e7c9a"},{url:"/assets/Docs/Zoodex/zoodex-IguanasFromAbove/Step5.jpg",revision:"15c51a9bb682ab75dc3418e7e2f89ab7"},{url:"/assets/Docs/Zoodex/zoodex-PenguinWatch/Step1.jpeg",revision:"5bc4c6b5c384409446bcfacff9d343e4"},{url:"/assets/Docs/Zoodex/zoodex-PenguinWatch/Step2.jpeg",revision:"f65c9b2ab621f447435eb8f80d696c39"},{url:"/assets/Docs/Zoodex/zoodex-PenguinWatch/Step3.jpeg",revision:"3636a781f06b0cedf0f77890e7cb2b39"},{url:"/assets/Docs/Zoodex/zoodex-PenguinWatch/Step4.jpeg",revision:"632e1d7643b1826f4e62ac34a8d7e944"},{url:"/assets/Docs/Zoodex/zoodex-PlanktonPortal/Step1.png",revision:"ececc0ef084a126840e926f2476a4c5d"},{url:"/assets/Docs/Zoodex/zoodex-PlanktonPortal/Step2.png",revision:"17c017e3c1995aef55fb07138b654640"},{url:"/assets/Docs/Zoodex/zoodex-PlanktonPortal/Step3.png",revision:"fea9931a6f258b66eb9cfa856cb26ceb"},{url:"/assets/Docs/Zoodex/zoodex-PlanktonPortal/Step4.png",revision:"fe09f67239daf3db60c449b455334ac6"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step1.jpeg",revision:"6625e4a0f0aa7a23fe11860f53d474a6"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step2.png",revision:"1abf2dd1128700126c680993d60b522b"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step3.png",revision:"c478d6469168910e1ae49e6cd0d696f8"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step4.jpeg",revision:"6c3c551ee26c2934b696efd4946643c0"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step5.jpeg",revision:"d444b87070bf268e585fc387475aa4f0"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step6.png",revision:"ff7430f42f1fa38b113bcb3abc86df3d"},{url:"/assets/Docs/Zoodex/zoodex-burrowingOwl/Step7.jpeg",revision:"2969154c39321c95df5dad26319c49fb"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Antipathes-Atlantica.jpeg",revision:"80bbfa0fd91738832664e429d17e2c27"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Antipathes-Furcata.jpeg",revision:"5f1d6dbf427592495eebdffe02bb86dc"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Bebryce-Sp.jpg",revision:"81be15d42949c3118106bc733d8957b2"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Ellisellidae.jpeg",revision:"22d5fbe1e8f65d46095bcbf2368f01e2"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Fish.jpeg",revision:"ac4263e0478bf21d1d6507ee22b6db26"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Madracis-sp..jpg",revision:"8a5d8bb7183d4a5e09a23bab582445cb"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Madrepora-Sp.jpeg",revision:"5cb6bd705a4136856f51bd50c4baba6f"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Muricea-Pendula.jpg",revision:"13577b7e19c3575500efce98c3299918"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Paramuriciade.jpg",revision:"5b7eac3ddcf4627d508df6de4d4d5d29"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Spoonge.jpeg",revision:"9644a6de3ad0e3fea08534746cba4167"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Stichopathes.jpg",revision:"351a22ac8cb2839b2f0fe6767e2859f6"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Swiftia-Exserta.jpeg",revision:"c81564435c0522b8f90b14155cf77e08"},{url:"/assets/Docs/Zoodex/zoodex-clickACoral/Thesea-Nivea.jpeg",revision:"9283e0faf204d65afe9fc06b088f3b37"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step1.png",revision:"9ac89ae431688bbc59f0172e427567ab"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step2.png",revision:"484e0de8ee3614b8b5eadcad47c0577d"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step3.png",revision:"484e0de8ee3614b8b5eadcad47c0577d"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step4.png",revision:"52095cabc0f3f15fcb539dfd19c08df2"},{url:"/assets/Docs/Zoodex/zoodex-nestQuestGo/Step5.png",revision:"013eef5ab240240bdd2c3d61c45ed704"},{url:"/assets/Images/capacity-1.png",revision:"b11baa8002d956d83035dc56d8b196bd"},{url:"/assets/Images/capacity-2.png",revision:"3aa28af2d9970405993a674875ccc05c"},{url:"/assets/Images/capacity-3.png",revision:"fb2edead7a418ac1ccc3b2b8658582b1"},{url:"/assets/Images/landing1.jpg",revision:"d614027097dc6c4b482b1ebe6dd4ca06"},{url:"/assets/Images/landing2.jpg",revision:"37295f0d482d11f6fec67a8e91f025e5"},{url:"/assets/Images/landing3.jpg",revision:"1fcab1a9ab528d50b39491d5945ae996"},{url:"/assets/Images/landing4.jpg",revision:"824d43b5f6c0b7cdbe308e839e55c2ab"},{url:"/assets/Images/landing5.jpg",revision:"4661f0b795c93f4fd452f7c11064bd18"},{url:"/assets/Images/landing6.jpg",revision:"0f961272ab9e266be515eb843400c95c"},{url:"/assets/Images/power-1.png",revision:"6dc4d6fc65a6a4a4626dad5b223f0b15"},{url:"/assets/Images/power-2.png",revision:"02e4c35f2cc98683d8446af714467aed"},{url:"/assets/Images/power-3.png",revision:"e85e80fc437cbdd37ea281ebad6861ca"},{url:"/assets/Images/speed-1.png",revision:"c2c11563476fa94cd79c529cae68cc2f"},{url:"/assets/Images/speed-2.png",revision:"14f619efe74218e9e0ca37e28a6d8ac8"},{url:"/assets/Images/speed-3.png",revision:"83b2fa733f09488123b88e404c7db635"},{url:"/assets/Items/22.png",revision:"aaf676880015ae1fca6670026e9edab5"},{url:"/assets/Items/28.png",revision:"58a70597ee0a85b0e929049c1518496a"},{url:"/assets/Items/Alloy.png",revision:"1ab072f72ce2d014a9d176b2780230ec"},{url:"/assets/Items/AutoController.png",revision:"65aa5761bcfdc2d9c1086afbde0433f7"},{url:"/assets/Items/AutomatonController.png",revision:"9bec20ac77c7a10c9e0863903094b147"},{url:"/assets/Items/CameraReceiver.png",revision:"e3d4b72f37cfe9b03a8a4231c10a1735"},{url:"/assets/Items/Chromite.png",revision:"48459b3c96b2eb0e03fa0303ba8dbac6"},{url:"/assets/Items/Coal.png",revision:"a20225d254d9c7c0b04bf01a89b8ac58"},{url:"/assets/Items/Copper.png",revision:"01eae5b57bb8475f67be87c38ebe52c0"},{url:"/assets/Items/Greenhouse.jpg",revision:"89ce4d9952c5fcca5246af132bc33cee"},{url:"/assets/Items/Greenhouse.png",revision:"dbf4ec7c99a5ac515de500e7f4bde2aa"},{url:"/assets/Items/Helicopter.png",revision:"8fabf68dab697ac41b1ddb5d23952bdb"},{url:"/assets/Items/Ice.png",revision:"655fc37ae85f470103f864a39e8ac847"},{url:"/assets/Items/Iron.png",revision:"7a673727c900b1a253cc2fe9b96c2ac9"},{url:"/assets/Items/Launchpad.jpg",revision:"76324cf59091e8e07f0f76565bf0918c"},{url:"/assets/Items/Lidar.png",revision:"50a112cd26a8e868e64f6db7c5dc0ea4"},{url:"/assets/Items/MiningStructure.png",revision:"96640003bac02c57d277f011c2e7d1d7"},{url:"/assets/Items/Nickel.png",revision:"47473b610a62cd8c4a2ec26c86666e60"},{url:"/assets/Items/Pokedex.png",revision:"7c5bdbbdb6942471f6dee26f35f57464"},{url:"/assets/Items/Research.png",revision:"05e5a3b0f4398c4b7dd5293822295d94"},{url:"/assets/Items/Rocket.png",revision:"7e7eece84a6324977c3e5077b8446aa7"},{url:"/assets/Items/Roover.gif",revision:"ba881bf19d84414d2b61853ae2c262a1"},{url:"/assets/Items/Scoper.png",revision:"7637fbddf3ea93f9fafd012a4ddcea6f"},{url:"/assets/Items/Silicon.png",revision:"01eae5b57bb8475f67be87c38ebe52c0"},{url:"/assets/Items/Telescope.jpg",revision:"23071871f6142f8dd0c7c3a3f7b07788"},{url:"/assets/Items/Telescope.png",revision:"2289bb2e88c120250b9c70eb2fe6cc75"},{url:"/assets/Items/TransitingTelescope.png",revision:"c57789844332d12cfbd36e2a46435130"},{url:"/assets/Items/Vector.png",revision:"1930faa9e00cffd9cefb4764c5cecb11"},{url:"/assets/Items/WeatherBalloon.png",revision:"7e7c0065a9be091098d5cd5fe2199dd6"},{url:"/assets/Items/Zoodex.png",revision:"57d29ff98723319efa6f03093fafec3f"},{url:"/assets/Items/camerars.png",revision:"74b20c14a9c01178533eed11bb93becc"},{url:"/assets/Items/miningstation.png",revision:"60f6398da814012af4fd64c94af65729"},{url:"/assets/Items/roover.png",revision:"eacaaf0fab67591794313b11bfd166a7"},{url:"/assets/Items/rover.svg",revision:"61143d0da3adec08b3325962b6198ee4"},{url:"/assets/Items/sw.js",revision:"aa14caf35328d6ef2b804009fce82acc"},{url:"/assets/Planets/Earth.png",revision:"0fa6e6f81ec8207ee4ae82f6a37ce617"},{url:"/assets/Planets/Mars.png",revision:"3f4ed19d54bed733b121f73d6a7e8ec9"},{url:"/assets/Planets/Mercury.png",revision:"15dd11dcd44ddf6cb2dd46525c45e1b7"},{url:"/assets/Planets/Moon.png",revision:"c9a970a4c0cfe6cd816ce0229069384b"},{url:"/assets/Planets/Venus.png",revision:"f4f6739d5f289093699d8a8557d8aaf8"},{url:"/assets/Template.png",revision:"d12bd71d3d676bc16e638dc0434c2f81"},{url:"/assets/Viewports/Satellite/Satellite_Tile1.png",revision:"238c6328351a9fd56b71a02dc2738a4e"},{url:"/assets/Viewports/Satellite/Satellite_Tile2.png",revision:"4743b76f39f6c16a9e8e3195c7617032"},{url:"/assets/Viewports/Satellite/Satellite_Tile3.png",revision:"8c8639aed6eadeabdeeac8a4c0004b98"},{url:"/assets/audio/notifs/r2d2.wav",revision:"6dc4c91a7c1daf63929b65047ceebd38"},{url:"/assets/audio/notifs/r2d21.wav",revision:"e981d8366a5dc119bb1573912e2e4bda"},{url:"/bg.png",revision:"c5ba6d9e151811b7d47e5e51d3b65e70"},{url:"/d.jpg",revision:"a7ac3ec6ee8bc8f70d3ccea891c910d2"},{url:"/favicon.ico",revision:"2483625e322b353626b172cc06960f01"},{url:"/floating_pinnie.png",revision:"a2c6520d64f813b77a91e7bc7ba22893"},{url:"/hero.png",revision:"cf4830d9cf114680b0ac6bea06186d17"},{url:"/icon-192.png",revision:"84dfa551865290b103d7a506ce294058"},{url:"/icon-512.png",revision:"84dfa551865290b103d7a506ce294058"},{url:"/logo.png",revision:"8b6947f0a54d1c2cb88e6a8b7be60081"},{url:"/manifest.json",revision:"1fadd711614177976c354739be470524"},{url:"/noise-2.svg",revision:"c84d42cb9ba68c2fc5e28d985b36c42f"},{url:"/offline",revision:"zFJ3Gbv7pEhrOhXsQoevQ"},{url:"/orc.webp",revision:"10fb3a698407e30a6bfe44043b8a7892"},{url:"/out0.png",revision:"4b24a573657e70d0799e743d86439756"},{url:"/pinnie.png",revision:"8b1f06202c16b2b4d8870aeb07a0504e"},{url:"/placeholder-user.jpg",revision:"7ee6562646feae6d6d77e2c72e204591"},{url:"/placeholder.svg",revision:"446325a7666c39d7f840f674836a5454"},{url:"/planet.svg",revision:"e1e69e2676b03d06e2e34c2ecd9eac93"},{url:"/rocket.png",revision:"e2972433825395d77752a6df5e8a1039"},{url:"/satellite.svg",revision:"a48e3337b7aa672558c7bce79c41e171"},{url:"/satellite_new.png",revision:"52e659a29549f87929846dd495514d27"},{url:"/scuba_pinnie.png",revision:"cdd794024c17069a8bfe95e7b9e915c2"},{url:"/service-worker.js",revision:"6a808abb5ba06c5bd72f6205e1c7324d"},{url:"/thirdweb.svg",revision:"075df596cf30f53ea22bbb1cddfbba73"},{url:"/ufo.png",revision:"5b5dd617dc864c18fa2f90b299275e0f"},{url:"/vercel.svg",revision:"61c6b19abff40ea7acd577be818f3976"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:s,event:a,state:i})=>s&&"opaqueredirect"===s.type?new Response(s.body,{status:200,statusText:"OK",headers:s.headers}):s},{handlerDidError:async({request:e})=>self.fallback(e)}]}),"GET"),e.registerRoute(/^https?.*/,new e.NetworkFirst({cacheName:"offlineCache",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:200,maxAgeSeconds:2592e3}),{handlerDidError:async({request:e})=>self.fallback(e)}]}),"GET")}); diff --git a/src/components/game/BottomNavigation.tsx b/src/components/game/BottomNavigation.tsx new file mode 100644 index 00000000..e4249d98 --- /dev/null +++ b/src/components/game/BottomNavigation.tsx @@ -0,0 +1,147 @@ +"use client"; + +import { ReactNode } from "react"; +import { cn } from "@/src/shared/utils"; +import { Telescope, Satellite, Home, Car, Sun } from "lucide-react"; + +type NavItem = "telescope" | "satellite" | "base" | "rover" | "solar"; + +interface BottomNavigationProps { + activeItem: NavItem; + onItemClick: (item: NavItem) => void; + telescopeNotification?: boolean; + satelliteNotification?: boolean; + roverNotification?: boolean; + solarNotification?: boolean; + className?: string; +} + +interface NavButtonProps { + icon: ReactNode; + label: string; + isActive: boolean; + isCenter?: boolean; + hasNotification?: boolean; + onClick: () => void; +} + +function NavButton({ + icon, + label, + isActive, + isCenter = false, + hasNotification = false, + onClick, +}: NavButtonProps) { + if (isCenter) { + return ( + + ); + } + + return ( + + ); +} + +export default function BottomNavigation({ + activeItem, + onItemClick, + telescopeNotification = false, + satelliteNotification = false, + roverNotification = false, + solarNotification = false, + className, +}: BottomNavigationProps) { + return ( + + ); +} diff --git a/src/components/game/GameHeader.tsx b/src/components/game/GameHeader.tsx new file mode 100644 index 00000000..e22c42e5 --- /dev/null +++ b/src/components/game/GameHeader.tsx @@ -0,0 +1,165 @@ +"use client"; + +import { useState } from "react"; +import { useSession, useSupabaseClient } from "@supabase/auth-helpers-react"; +import { Bell, User, UserX, Zap, Sparkles, LogOut } from "lucide-react"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/src/components/ui/dropdown-menu"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/src/components/ui/dialog"; +import { Badge } from "@/src/components/ui/badge"; +import ConvertAnonymousAccount from "@/src/components/profile/auth/ConvertAnonymousAccount"; +import Link from "next/link"; +import { cn } from "@/src/shared/utils"; + +interface GameHeaderProps { + stardust?: number; + hasNotifications?: boolean; + onNotificationsClick?: () => void; + className?: string; +} + +export default function GameHeader({ + stardust = 0, + hasNotifications = false, + onNotificationsClick, + className, +}: GameHeaderProps) { + const session = useSession(); + const supabase = useSupabaseClient(); + const [showUpgradeModal, setShowUpgradeModal] = useState(false); + + const isAnonymousUser = session?.user?.is_anonymous; + + const handleLogout = async () => { + // Clear all browser storage before signing out + if (typeof window !== 'undefined') { + window.localStorage.clear(); + window.sessionStorage.clear(); + // Remove all cookies + document.cookie.split(';').forEach(function(c) { + document.cookie = c.replace(/^ +/, '').replace(/=.*/, '=;expires=' + new Date(0).toUTCString() + ';path=/'); + }); + } + const { error } = await supabase.auth.signOut(); + if (error) { + console.error("Error signing out:", error.message); + } else { + window.location.href = "/"; + } + }; + + return ( + <> +
+
+ {/* Logo */} + +
+ +
+ + Star Sailors + + + + {/* Center - Stardust count */} +
+ + + {stardust.toLocaleString()} + +
+ + {/* Right - Actions */} +
+ {/* Notifications */} + + + {/* Profile dropdown */} + + + + + + + {isAnonymousUser ? ( +
+ + + Guest + +
+ ) : ( + {session?.user?.email || "User"} + )} +
+ + + {isAnonymousUser && ( + setShowUpgradeModal(true)}> + + Upgrade Account + + )} + + + Research + + + Leaderboards + + + + + + Sign out + +
+
+
+
+
+ + {/* Upgrade modal for anonymous users */} + + + + Upgrade Your Account + + setShowUpgradeModal(false)} /> + + + + ); +} diff --git a/src/components/game/MissionControlCard.tsx b/src/components/game/MissionControlCard.tsx new file mode 100644 index 00000000..add93be6 --- /dev/null +++ b/src/components/game/MissionControlCard.tsx @@ -0,0 +1,114 @@ +"use client"; + +import { ReactNode } from "react"; +import { cn } from "@/src/shared/utils"; + +type CardVariant = "action" | "status" | "progress"; + +interface MissionControlCardProps { + icon: ReactNode; + iconBgColor?: string; + title: string; + subtitle: string; + variant?: CardVariant; + actionLabel?: string; + onAction?: () => void; + progress?: number; // 0-100 for progress variant + className?: string; +} + +export default function MissionControlCard({ + icon, + iconBgColor = "bg-amber-500/20", + title, + subtitle, + variant = "status", + actionLabel, + onAction, + progress, + className, +}: MissionControlCardProps) { + const getIconStyle = () => { + switch (variant) { + case "action": + return "text-amber-400"; + case "status": + return "text-green-400"; + case "progress": + return "text-cyan-400"; + default: + return "text-muted-foreground"; + } + }; + + const getIconBg = () => { + switch (variant) { + case "action": + return "bg-amber-500/20 border-amber-500/30"; + case "status": + return "bg-green-500/20 border-green-500/30"; + case "progress": + return "bg-cyan-500/20 border-cyan-500/30"; + default: + return iconBgColor; + } + }; + + return ( +
+ {/* Icon */} +
+ {icon} +
+ + {/* Content */} +
+

{title}

+

{subtitle}

+ + {/* Progress bar for progress variant */} + {variant === "progress" && typeof progress === "number" && ( +
+
+
+ )} +
+ + {/* Action button for action variant */} + {variant === "action" && actionLabel && onAction && ( + + )} +
+ ); +} diff --git a/src/components/game/PlanetHeroSection.tsx b/src/components/game/PlanetHeroSection.tsx new file mode 100644 index 00000000..c3578ce3 --- /dev/null +++ b/src/components/game/PlanetHeroSection.tsx @@ -0,0 +1,92 @@ +"use client"; + +import { cn } from "@/src/shared/utils"; + +interface PlanetHeroSectionProps { + planetName: string; + sectorName?: string; + backgroundImage?: string; + stardust?: number; + rank?: number; + className?: string; +} + +export default function PlanetHeroSection({ + planetName, + sectorName = "Sector 7G", + backgroundImage = "/assets/Backdrops/Earth.png", + stardust, + rank, + className, +}: PlanetHeroSectionProps) { + return ( +
+ {/* Background image with gradient overlay */} +
+ {planetName} +
+ + {/* Decorative dots/stars */} +
+ {[...Array(12)].map((_, i) => ( +
+ ))} +
+
+ + {/* Content */} +
+
+ {/* Planet info */} +
+

+ {planetName} +

+

{sectorName}

+
+ + {/* Stats (desktop only) */} + {(stardust !== undefined || rank !== undefined) && ( +
+ {stardust !== undefined && ( +
+

+ Stardust +

+

+ {stardust.toLocaleString()} +

+
+ )} + {rank !== undefined && ( +
+

+ Rank +

+

#{rank}

+
+ )} +
+ )} +
+
+
+ ); +} diff --git a/src/components/game/StructureCard.tsx b/src/components/game/StructureCard.tsx new file mode 100644 index 00000000..de6ad742 --- /dev/null +++ b/src/components/game/StructureCard.tsx @@ -0,0 +1,72 @@ +"use client"; + +import { ReactNode } from "react"; +import { cn } from "@/src/shared/utils"; + +interface StructureCardProps { + icon: ReactNode; + name: string; + status?: string; + statusColor?: "green" | "blue" | "amber" | "red" | "muted"; + onClick?: () => void; + hasNotification?: boolean; + disabled?: boolean; + className?: string; +} + +export default function StructureCard({ + icon, + name, + status, + statusColor = "muted", + onClick, + hasNotification = false, + disabled = false, + className, +}: StructureCardProps) { + const getStatusColorClass = () => { + switch (statusColor) { + case "green": + return "text-green-400"; + case "blue": + return "text-cyan-400"; + case "amber": + return "text-amber-400"; + case "red": + return "text-red-400"; + default: + return "text-muted-foreground"; + } + }; + + return ( + + ); +} diff --git a/src/components/game/index.ts b/src/components/game/index.ts new file mode 100644 index 00000000..dd3afa18 --- /dev/null +++ b/src/components/game/index.ts @@ -0,0 +1,5 @@ +export { default as GameHeader } from "./GameHeader"; +export { default as PlanetHeroSection } from "./PlanetHeroSection"; +export { default as MissionControlCard } from "./MissionControlCard"; +export { default as StructureCard } from "./StructureCard"; +export { default as BottomNavigation } from "./BottomNavigation"; diff --git a/src/components/layout/Header/MainHeader.tsx b/src/components/layout/Header/MainHeader.tsx index 111a5ad3..1bc95012 100644 --- a/src/components/layout/Header/MainHeader.tsx +++ b/src/components/layout/Header/MainHeader.tsx @@ -71,6 +71,15 @@ export default function MainHeader({ }; const handleLogout = async () => { + // Clear all browser storage before signing out + if (typeof window !== 'undefined') { + window.localStorage.clear(); + window.sessionStorage.clear(); + // Remove all cookies + document.cookie.split(';').forEach(function(c) { + document.cookie = c.replace(/^ +/, '').replace(/=.*/, '=;expires=' + new Date(0).toUTCString() + ';path=/'); + }); + } const { error } = await supabase.auth.signOut(); if (error) { console.error("Error signing out:", error.message); diff --git a/src/components/layout/Navbar.tsx b/src/components/layout/Navbar.tsx index 1fa1e885..be92d48a 100644 --- a/src/components/layout/Navbar.tsx +++ b/src/components/layout/Navbar.tsx @@ -33,6 +33,15 @@ export default function Navbar() { }, []); const signOut = async () => { + // Clear all browser storage before signing out + if (typeof window !== 'undefined') { + window.localStorage.clear(); + window.sessionStorage.clear(); + // Remove all cookies + document.cookie.split(';').forEach(function(c) { + document.cookie = c.replace(/^ +/, '').replace(/=.*/, '=;expires=' + new Date(0).toUTCString() + ';path=/'); + }); + } const { error } = await supabase.auth.signOut(); if (error) { console.error("Error signing out:", error.message); diff --git a/src/components/layout/Tes.tsx b/src/components/layout/Tes.tsx index ad67dc0f..486a8b76 100644 --- a/src/components/layout/Tes.tsx +++ b/src/components/layout/Tes.tsx @@ -57,6 +57,15 @@ export default function GameNavbar() { const [newNotificationsCount, setNewNotificationsCount] = useState(0); const signOut = async () => { + // Clear all local storage, session storage, and cookies before signing out + if (typeof window !== 'undefined') { + window.localStorage.clear(); + window.sessionStorage.clear(); + // Remove all cookies for current domain + document.cookie.split(';').forEach(function(c) { + document.cookie = c.replace(/^ +/, '').replace(/=.*/, '=;expires=' + new Date(0).toUTCString() + ';path=/'); + }); + } const { error } = await supabase.auth.signOut(); if (error) { console.error("Error signing out:", error.message); @@ -134,7 +143,7 @@ export default function GameNavbar() { return (