From 0bf92beb93d55027f03bc3b5e02e93ba68aad205 Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Fri, 17 Jul 2026 23:16:34 -0700 Subject: [PATCH] feat: add react-social-media-embed package and update homepage layout with new components --- surfsense_web/app/(home)/page.tsx | 10 +- .../components/homepage/footer-new.tsx | 2 +- .../components/homepage/hero-chat-demo.tsx | 1 + .../components/homepage/hero-section.tsx | 7 +- .../components/homepage/logo-cloud.tsx | 111 ++ surfsense_web/components/homepage/navbar.tsx | 21 +- .../components/homepage/social-proof.tsx | 298 ++++ surfsense_web/package.json | 1 + surfsense_web/pnpm-lock.yaml | 196 ++- surfsense_web/public/logos/berkeley.svg | 874 +++++++++++ surfsense_web/public/logos/bosta.png | Bin 0 -> 1064 bytes surfsense_web/public/logos/bristol.svg | 295 ++++ surfsense_web/public/logos/chula.svg | 578 +++++++ surfsense_web/public/logos/devoteam.png | Bin 0 -> 1396 bytes surfsense_web/public/logos/globant.svg | 1 + surfsense_web/public/logos/ironmountain.svg | 44 + surfsense_web/public/logos/koreanair.svg | 1 + surfsense_web/public/logos/leverageedu.png | Bin 0 -> 1246 bytes surfsense_web/public/logos/nutresa.svg | 1 + surfsense_web/public/logos/opengov.png | Bin 0 -> 32084 bytes surfsense_web/public/logos/pitt.svg | 1 + surfsense_web/public/logos/tamu.svg | 810 ++++++++++ surfsense_web/public/logos/tec.svg | 569 +++++++ surfsense_web/public/logos/tpbank.svg | 166 ++ surfsense_web/public/logos/usc.svg | 1335 +++++++++++++++++ surfsense_web/public/logos/vng.svg | 1 + surfsense_web/public/logos/welab.png | Bin 0 -> 20564 bytes surfsense_web/public/logos/wisc.svg | 7 + surfsense_web/public/logos/zopper.png | Bin 0 -> 7361 bytes 29 files changed, 5240 insertions(+), 90 deletions(-) create mode 100644 surfsense_web/components/homepage/logo-cloud.tsx create mode 100644 surfsense_web/components/homepage/social-proof.tsx create mode 100644 surfsense_web/public/logos/berkeley.svg create mode 100644 surfsense_web/public/logos/bosta.png create mode 100644 surfsense_web/public/logos/bristol.svg create mode 100644 surfsense_web/public/logos/chula.svg create mode 100644 surfsense_web/public/logos/devoteam.png create mode 100644 surfsense_web/public/logos/globant.svg create mode 100644 surfsense_web/public/logos/ironmountain.svg create mode 100644 surfsense_web/public/logos/koreanair.svg create mode 100644 surfsense_web/public/logos/leverageedu.png create mode 100644 surfsense_web/public/logos/nutresa.svg create mode 100644 surfsense_web/public/logos/opengov.png create mode 100644 surfsense_web/public/logos/pitt.svg create mode 100644 surfsense_web/public/logos/tamu.svg create mode 100644 surfsense_web/public/logos/tec.svg create mode 100644 surfsense_web/public/logos/tpbank.svg create mode 100644 surfsense_web/public/logos/usc.svg create mode 100644 surfsense_web/public/logos/vng.svg create mode 100644 surfsense_web/public/logos/welab.png create mode 100644 surfsense_web/public/logos/wisc.svg create mode 100644 surfsense_web/public/logos/zopper.png diff --git a/surfsense_web/app/(home)/page.tsx b/surfsense_web/app/(home)/page.tsx index 825c647c1..26e227fda 100644 --- a/surfsense_web/app/(home)/page.tsx +++ b/surfsense_web/app/(home)/page.tsx @@ -4,19 +4,17 @@ import { CompareTable } from "@/components/homepage/compare-table"; import { ConnectorGrid } from "@/components/homepage/connector-grid"; import { HeroSection } from "@/components/homepage/hero-section"; import { HomeFaq } from "@/components/homepage/home-faq"; -import { HowItWorks } from "@/components/homepage/how-it-works"; -import { PersonaPaths } from "@/components/homepage/persona-paths"; -import { UseCasesRow } from "@/components/homepage/use-cases"; +import { LogoCloud } from "@/components/homepage/logo-cloud"; +import { SocialProof } from "@/components/homepage/social-proof"; export default function HomePage() { return (
- + + - - diff --git a/surfsense_web/components/homepage/footer-new.tsx b/surfsense_web/components/homepage/footer-new.tsx index 17e8c2848..4d021afee 100644 --- a/surfsense_web/components/homepage/footer-new.tsx +++ b/surfsense_web/components/homepage/footer-new.tsx @@ -106,7 +106,7 @@ export function FooterNew() { ]; return (
-
+
diff --git a/surfsense_web/components/homepage/hero-chat-demo.tsx b/surfsense_web/components/homepage/hero-chat-demo.tsx index 3e7d6c23e..e04398053 100644 --- a/surfsense_web/components/homepage/hero-chat-demo.tsx +++ b/surfsense_web/components/homepage/hero-chat-demo.tsx @@ -77,6 +77,7 @@ function DemoTimeline({ @@ -869,9 +870,9 @@ const UseCasePane = memo(function UseCasePane({
-

+

{useCase.title} -

+

{useCase.description}

diff --git a/surfsense_web/components/homepage/logo-cloud.tsx b/surfsense_web/components/homepage/logo-cloud.tsx new file mode 100644 index 000000000..607deef0a --- /dev/null +++ b/surfsense_web/components/homepage/logo-cloud.tsx @@ -0,0 +1,111 @@ +"use client"; + +import { AnimatePresence, motion } from "motion/react"; +import { useEffect, useState } from "react"; +import { Reveal } from "@/components/connectors-marketing/reveal"; +import { MarketingSection } from "@/components/marketing/section"; + +/** + * Real signups pulled from prod (Google-auth), curated to the most recognizable + * names. These are self-serve users, not signed enterprise accounts, so the + * heading stays honest ("Used by people at") rather than implying contracts. + * + * Logos live in `public/logos/` — official marks from Wikimedia Commons / + * Wikipedia (universities use their seals). Bosta, Devoteam, and Leverage Edu + * have no clean Wikimedia logo, so they fall back to a brand favicon. Each item + * also falls back to a text wordmark on image error. + */ +const COMPANIES: { title: string; file: string }[] = [ + { title: "UC Berkeley", file: "berkeley.svg" }, + { title: "USC", file: "usc.svg" }, + { title: "Texas A&M", file: "tamu.svg" }, + { title: "UW–Madison", file: "wisc.svg" }, + { title: "Pitt", file: "pitt.svg" }, + { title: "Korean Air", file: "koreanair.svg" }, + { title: "Iron Mountain", file: "ironmountain.svg" }, + { title: "Globant", file: "globant.svg" }, + { title: "Devoteam", file: "devoteam.png" }, + { title: "VNG", file: "vng.svg" }, + { title: "TPBank", file: "tpbank.svg" }, + { title: "OpenGov", file: "opengov.png" }, + { title: "WeLab", file: "welab.png" }, + { title: "Leverage Edu", file: "leverageedu.png" }, + { title: "Zopper", file: "zopper.png" }, + { title: "Tec de Monterrey", file: "tec.svg" }, + { title: "Chulalongkorn", file: "chula.svg" }, + { title: "Univ. of Bristol", file: "bristol.svg" }, + { title: "Nutresa", file: "nutresa.svg" }, + { title: "Bosta", file: "bosta.png" }, +]; + +const LOGOS_PER_SET = 10; +const TOTAL_SETS = Math.ceil(COMPANIES.length / LOGOS_PER_SET); + +function LogoItem({ title, file }: { title: string; file: string }) { + const [failed, setFailed] = useState(false); + + if (failed) { + return ( + {title} + ); + } + + return ( + // biome-ignore lint/performance/noImgElement: swapped in/out by the cycling animation, next/image adds no value here + {title} setFailed(true)} + // dark mode: dark-on-transparent marks would vanish, so render every logo as a + // uniform light silhouette (brightness-0 + invert) instead of relying on its own color + className="h-10 w-auto max-w-[130px] object-contain opacity-60 grayscale transition duration-300 hover:opacity-100 hover:grayscale-0 dark:opacity-70 dark:brightness-0 dark:invert dark:hover:opacity-100" + /> + ); +} + +export function LogoCloud() { + const [currentSet, setCurrentSet] = useState(0); + + useEffect(() => { + const interval = setInterval(() => { + setCurrentSet((prev) => (prev + 1) % TOTAL_SETS); + }, 3000); + return () => clearInterval(interval); + }, []); + + const startIndex = currentSet * LOGOS_PER_SET; + const currentLogos = Array.from( + { length: LOGOS_PER_SET }, + (_, i) => COMPANIES[(startIndex + i) % COMPANIES.length] + ); + + return ( + + +

+ Used by people at +

+
+
+ + {currentLogos.map((logo, index) => ( + + + + ))} + +
+
+ ); +} diff --git a/surfsense_web/components/homepage/navbar.tsx b/surfsense_web/components/homepage/navbar.tsx index 4cce7ff82..da71f8be0 100644 --- a/surfsense_web/components/homepage/navbar.tsx +++ b/surfsense_web/components/homepage/navbar.tsx @@ -250,17 +250,22 @@ const DesktopNav = ({ navItems, isScrolled, scrolledBgClassName }: DesktopNavPro href="https://discord.gg/ejRNvftDp9" target="_blank" rel="noopener noreferrer" + aria-label="SurfSense on Discord" className="hidden rounded-full p-2 hover:bg-gray-100 dark:hover:bg-neutral-800 transition-colors md:flex items-center justify-center" > - + - + @@ -362,17 +367,25 @@ const MobileNav = ({ navItems, isScrolled, scrolledBgClassName }: MobileNavProps href="https://discord.gg/ejRNvftDp9" target="_blank" rel="noopener noreferrer" + aria-label="SurfSense on Discord" className="flex items-center justify-center rounded-lg p-2 hover:bg-gray-100 dark:hover:bg-neutral-800 transition-colors touch-manipulation" > - + - + diff --git a/surfsense_web/components/homepage/social-proof.tsx b/surfsense_web/components/homepage/social-proof.tsx new file mode 100644 index 000000000..35c464e3c --- /dev/null +++ b/surfsense_web/components/homepage/social-proof.tsx @@ -0,0 +1,298 @@ +"use client"; + +import { + IconBrandLinkedin, + IconBrandTiktok, + IconBrandX, + IconBrandYoutube, +} from "@tabler/icons-react"; +import { Component, type ReactNode, useEffect, useRef, useState } from "react"; +import { LinkedInEmbed, TikTokEmbed, XEmbed, YouTubeEmbed } from "react-social-media-embed"; +import { Reveal } from "@/components/connectors-marketing/reveal"; + +type Post = + | { kind: "youtube"; url: string; title: string; channel: string } + | { kind: "x"; url: string } + | { kind: "linkedin"; url: string; postUrl: string } + | { kind: "tiktok"; url: string }; + +/** + * Organic SurfSense coverage — real posts embedded live with react-social-media-embed, + * grouped into three platform-uniform marquee rows (heights match within a row). + * + * Note: LinkedIn only renders when the author enabled embedding on the post; if + * disabled, the EmbedBoundary swaps in a link card to the original. + * + * ponytail: three rows, each list duplicated once for a seamless CSS loop. Ceiling: + * heavy third-party embeds. Mitigated by lazy-mounting the whole section on scroll + * (IntersectionObserver). Upgrade path: per-card virtualization, or swap YouTube + * players for thumbnail links. + */ +const YOUTUBE: Post[] = [ + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=i9AJ7PHGSGg", + title: "SurfSense vs NotebookLM", + channel: "rezasaad plus", + }, + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=VBOwuD6xVK0", + title: "NotebookLM Is Great… Until You See SurfSense", + channel: "Thomas AI", + }, + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=UaekqjhUiJM", + title: "NotebookLM vs SurfSense en 6 pruebas reales (sorprendente)", + channel: "NextGen IA Hub", + }, + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=QGjKpZJJ9aw", + title: "Gana DINERO configurando “Cerebros de IA” privados con SurfSense", + channel: "Creando Con La IA", + }, + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=cfNAIQtNbKY", + title: "¿Adiós NotebookLM? Probé SurfSense y es BRUTAL (IA Gratis)", + channel: "NextGen IA Hub", + }, + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=pIWOKSHhf38", + title: "¿Superaron a NotebookLM? SurfSense es Open Source, privada y GRATIS", + channel: "academIArtificial", + }, + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=K5xx-J_mQZ8", + title: "¿Mejor que NotebookLM? IA GRATIS con modo local", + channel: "Migue Baena IA", + }, + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=AKxM3RUBFsc", + title: "¿Nueva IA GRATIS destroza a NotebookLM de Google? (OPEN SOURCE)", + channel: "Inteligencia Artificial Top", + }, + { + kind: "youtube", + url: "https://www.youtube.com/watch?v=jCAgeaVgPDA", + title: "¿Nueva Herramienta IA GRATIS Destroza a NotebookLM? (OPEN SOURCE)", + channel: "Joaquín Barberá", + }, +]; + +const TWEETS: Post[] = [ + { kind: "x", url: "https://x.com/LangChain/status/1853133037019562434" }, + { kind: "x", url: "https://x.com/MoureDev/status/1976279289780740448" }, + { kind: "x", url: "https://x.com/GithubProjects/status/2004892541590929490" }, + { kind: "x", url: "https://x.com/GitHub_Daily/status/1920418408736436438" }, + { kind: "x", url: "https://x.com/tom_doerr/status/2066062170173977088" }, + { kind: "x", url: "https://x.com/itsharmanjot/status/2066118517905354816" }, + { kind: "x", url: "https://x.com/JulianGoldieSEO/status/2011085275133604095" }, + { kind: "x", url: "https://x.com/L_go_mrk/status/2066482853232115847" }, + { kind: "x", url: "https://x.com/semihdev/status/2006275500952736028" }, + { kind: "x", url: "https://x.com/shao__meng/status/1919912860957999494" }, + { kind: "x", url: "https://x.com/LangChain/status/1840406184316342561" }, +]; + +const SOCIAL: Post[] = [ + { + kind: "linkedin", + url: "https://www.linkedin.com/embed/feed/update/urn:li:ugcPost:7448203908834938881", + postUrl: + "https://www.linkedin.com/posts/vikas-singh-546643206_most-ai-tools-live-in-your-browser-and-ugcPost-7448203908834938881-gR6y", + }, + { + kind: "linkedin", + url: "https://www.linkedin.com/embed/feed/update/urn:li:share:7448351685409701889", + postUrl: + "https://www.linkedin.com/posts/neha-jain-279b80118_ive-been-using-a-lot-of-ai-tools-daily-share-7448351685409701889-JvFP", + }, + { + kind: "tiktok", + url: "https://www.tiktok.com/@alejavirivera/video/7603064928114625814", + }, +]; + +const CARD = "mr-4 shrink-0 overflow-hidden rounded-xl border bg-card"; + +const SIZE: Record = { + youtube: "h-[262px] w-[340px]", + x: "h-[440px] w-[340px]", + linkedin: "h-[540px] w-[340px]", + tiktok: "h-[540px] w-[340px]", +}; + +const META: Record = { + youtube: { Icon: IconBrandYoutube, label: "YouTube" }, + x: { Icon: IconBrandX, label: "X" }, + linkedin: { Icon: IconBrandLinkedin, label: "LinkedIn" }, + tiktok: { Icon: IconBrandTiktok, label: "TikTok" }, +}; + +/** + * Some embeds (notably Facebook, and LinkedIn when the author disabled embedding) + * throw at render/mount instead of degrading gracefully. This boundary stops one + * bad embed from taking down the whole marquee — it swaps in a link card instead. + */ +class EmbedBoundary extends Component< + { fallback: ReactNode; children: ReactNode }, + { failed: boolean } +> { + state = { failed: false }; + static getDerivedStateFromError() { + return { failed: true }; + } + render() { + return this.state.failed ? this.props.fallback : this.props.children; + } +} + +function FallbackCard({ post }: { post: Post }) { + const { Icon, label } = META[post.kind]; + const href = post.kind === "linkedin" ? post.postUrl : post.url; + return ( + + ); +} + +function Card({ post }: { post: Post }) { + switch (post.kind) { + case "youtube": + return ( +
+ +
+
+ + {post.channel} +
+ + {post.title} + +
+
+ ); + case "x": + return ( +
+ +
+ ); + case "linkedin": + return ( +
+ +
+ ); + case "tiktok": + return ( +
+ +
+ ); + } +} + +function Row({ + posts, + animation, + duration, +}: { + posts: Post[]; + animation: "ss-marquee-l" | "ss-marquee-r"; + duration: number; +}) { + return ( +
+ {/* Track holds the list twice; the -50% shift wraps seamlessly (margins, not gap). */} +
+ {[...posts, ...posts].map((post, i) => ( + } + > + + + ))} +
+
+ ); +} + +export function SocialProof() { + // Third-party embeds are heavy; only mount them once the section scrolls near view. + const ref = useRef(null); + const [visible, setVisible] = useState(false); + useEffect(() => { + const el = ref.current; + if (!el) return; + const io = new IntersectionObserver( + (entries) => { + if (entries[0]?.isIntersecting) { + setVisible(true); + io.disconnect(); + } + }, + { rootMargin: "300px" } + ); + io.observe(el); + return () => io.disconnect(); + }, []); + + return ( +
+ +
+

+ Loved across the internet +

+
+
+
+ {visible ? ( + <> + + + {/* Only 3 social cards — pre-double so one set spans wide viewports (no loop gap). */} + + + ) : null} +
+ +
+ ); +} diff --git a/surfsense_web/package.json b/surfsense_web/package.json index 82e4144f0..4de9077bb 100644 --- a/surfsense_web/package.json +++ b/surfsense_web/package.json @@ -138,6 +138,7 @@ "react-dom": "^19.2.3", "react-dropzone": "^14.3.8", "react-hook-form": "^7.61.1", + "react-social-media-embed": "^2.5.18", "react-syntax-highlighter": "^15.6.1", "react-wrap-balancer": "^1.1.1", "rehype-katex": "^7.0.1", diff --git a/surfsense_web/pnpm-lock.yaml b/surfsense_web/pnpm-lock.yaml index d93ad580d..29719c759 100644 --- a/surfsense_web/pnpm-lock.yaml +++ b/surfsense_web/pnpm-lock.yaml @@ -335,6 +335,9 @@ importers: react-hook-form: specifier: ^7.61.1 version: 7.71.2(react@19.2.4) + react-social-media-embed: + specifier: ^2.5.18 + version: 2.5.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-syntax-highlighter: specifier: ^15.6.1 version: 15.6.6(react@19.2.4) @@ -1155,28 +1158,24 @@ packages: engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - libc: [musl] '@biomejs/cli-linux-arm64@2.4.6': resolution: {integrity: sha512-kMLaI7OF5GN1Q8Doymjro1P8rVEoy7BKQALNz6fiR8IC1WKduoNyteBtJlHT7ASIL0Cx2jR6VUOBIbcB1B8pew==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - libc: [glibc] '@biomejs/cli-linux-x64-musl@2.4.6': resolution: {integrity: sha512-C9s98IPDu7DYarjlZNuzJKTjVHN03RUnmHV5htvqsx6vEUXCDSJ59DNwjKVD5XYoSS4N+BYhq3RTBAL8X6svEg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - libc: [musl] '@biomejs/cli-linux-x64@2.4.6': resolution: {integrity: sha512-oHXmUFEoH8Lql1xfc3QkFLiC1hGR7qedv5eKNlC185or+o4/4HiaU7vYODAH3peRCfsuLr1g6v2fK9dFFOYdyw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - libc: [glibc] '@biomejs/cli-win32-arm64@2.4.6': resolution: {integrity: sha512-xzThn87Pf3YrOGTEODFGONmqXpTwUNxovQb72iaUOdcw8sBSY3+3WD8Hm9IhMYLnPi0n32s3L3NWU6+eSjfqFg==} @@ -1864,105 +1863,89 @@ packages: resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-riscv64@1.2.4': resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - libc: [musl] '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - libc: [glibc] '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - libc: [glibc] '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@img/sharp-linux-riscv64@0.34.5': resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [riscv64] os: [linux] - libc: [glibc] '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - libc: [glibc] '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - libc: [glibc] '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - libc: [musl] '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - libc: [musl] '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} @@ -2082,35 +2065,30 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@napi-rs/canvas-linux-arm64-musl@0.1.97': resolution: {integrity: sha512-kKmSkQVnWeqg7qdsiXvYxKhAFuHz3tkBjW/zyQv5YKUPhotpaVhpBGv5LqCngzyuRV85SXoe+OFj+Tv0a0QXkQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@napi-rs/canvas-linux-riscv64-gnu@0.1.97': resolution: {integrity: sha512-Jc7I3A51jnEOIAXeLsN/M/+Z28LUeakcsXs07FLq9prXc0eYOtVwsDEv913Gr+06IRo34gJJVgT0TXvmz+N2VA==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - libc: [glibc] '@napi-rs/canvas-linux-x64-gnu@0.1.97': resolution: {integrity: sha512-iDUBe7AilfuBSRbSa8/IGX38Mf+iCSBqoVKLSQ5XaY2JLOaqz1TVyPFEyIck7wT6mRQhQt5sN6ogfjIDfi74tg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@napi-rs/canvas-linux-x64-musl@0.1.97': resolution: {integrity: sha512-AKLFd/v0Z5fvgqBDqhvqtAdx+fHMJ5t9JcUNKq4FIZ5WH+iegGm8HPdj00NFlCSnm83Fp3Ln8I2f7uq1aIiWaA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@napi-rs/canvas-win32-arm64-msvc@0.1.97': resolution: {integrity: sha512-u883Yr6A6fO7Vpsy9YE4FVCIxzzo5sO+7pIUjjoDLjS3vQaNMkVzx5bdIpEL+ob+gU88WDK4VcxYMZ6nmnoX9A==} @@ -2154,28 +2132,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@next/swc-linux-arm64-musl@16.1.6': resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@next/swc-linux-x64-gnu@16.1.6': resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@next/swc-linux-x64-musl@16.1.6': resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@next/swc-win32-arm64-msvc@16.1.6': resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==} @@ -2827,56 +2801,48 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] '@oxfmt/binding-linux-arm64-musl@0.45.0': resolution: {integrity: sha512-XQKXZIKYJC3GQJ8FnD3iMntpw69Wd9kDDK/Xt79p6xnFYlGGxSNv2vIBvRTDg5CKByWFWWZLCRDOXoP/m6YN4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] '@oxfmt/binding-linux-ppc64-gnu@0.45.0': resolution: {integrity: sha512-+g5RiG+xOkdrCWkKodv407nTvMq4vYM18Uox2MhZBm/YoqFxxJpWKsloskFFG5NU13HGPw1wzYjjOVcyd9moCA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@oxfmt/binding-linux-riscv64-gnu@0.45.0': resolution: {integrity: sha512-V7dXKoSyEbWAkkSF4JJNtF+NJZDmJoSarSoP30WCsB3X636Rehd3CvxBj49FIJxEBFWhvcUjGSHVeU8Erck1bQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - libc: [glibc] '@oxfmt/binding-linux-riscv64-musl@0.45.0': resolution: {integrity: sha512-Vdelft1sAEYojVGgcODEFXSWYQYlIvoyIGWebKCuUibd1tvS1TjTx413xG2ZLuHpYj45CkN/ztMLMX6jrgqpgg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - libc: [musl] '@oxfmt/binding-linux-s390x-gnu@0.45.0': resolution: {integrity: sha512-RR7xKgNpqwENnK0aYCGYg0JycY2n93J0reNjHyes+I9Gq52dH95x+CBlnlAQHCPfz6FGnKA9HirgUl14WO6o7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] '@oxfmt/binding-linux-x64-gnu@0.45.0': resolution: {integrity: sha512-U/QQ0+BQNSHxjuXR/utvXnQ50Vu5kUuqEomZvQ1/3mhgbBiMc2WU9q5kZ5WwLp3gnFIx9ibkveoRSe2EZubkqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] '@oxfmt/binding-linux-x64-musl@0.45.0': resolution: {integrity: sha512-o5TLOUCF0RWQjsIS06yVC+kFgp092/yLe6qBGSUvtnmTVw9gxjpdQSXc3VN5Cnive4K11HNstEZF8ROKHfDFSw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] '@oxfmt/binding-openharmony-arm64@0.45.0': resolution: {integrity: sha512-RnGcV3HgPuOjsGx/k9oyRNKmOp+NBLGzZTdPDYbc19r7NGeYPplnUU/BfU35bX2Y/O4ejvHxcfkvW2WoYL/gsg==} @@ -2931,42 +2897,36 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.6': resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.6': resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.6': resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.6': resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.6': resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [musl] '@parcel/watcher-win32-arm64@2.5.6': resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} @@ -4287,79 +4247,66 @@ packages: resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.59.0': resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.59.0': resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.59.0': resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.59.0': resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.59.0': resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] - libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.59.0': resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.59.0': resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] - libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.59.0': resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.59.0': resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.59.0': resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.59.0': resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.59.0': resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-openbsd-x64@4.59.0': resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} @@ -4550,28 +4497,24 @@ packages: engines: {node: '>=10'} cpu: [arm64] os: [linux] - libc: [glibc] '@swc/core-linux-arm64-musl@1.15.13': resolution: {integrity: sha512-SmZ9m+XqCB35NddHCctvHFLqPZDAs5j8IgD36GoutufDJmeq2VNfgk5rQoqNqKmAK3Y7iFdEmI76QoHIWiCLyw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - libc: [musl] '@swc/core-linux-x64-gnu@1.15.13': resolution: {integrity: sha512-5rij+vB9a29aNkHq72EXI2ihDZPszJb4zlApJY4aCC/q6utgqFA6CkrfTfIb+O8hxtG3zP5KERETz8mfFK6A0A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - libc: [glibc] '@swc/core-linux-x64-musl@1.15.13': resolution: {integrity: sha512-OlSlaOK9JplQ5qn07WiBLibkOw7iml2++ojEXhhR3rbWrNEKCD7sd8+6wSavsInyFdw4PhLA+Hy6YyDBIE23Yw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - libc: [musl] '@swc/core-win32-arm64-msvc@1.15.13': resolution: {integrity: sha512-zwQii5YVdsfG8Ti9gIKgBKZg8qMkRZxl+OlYWUT5D93Jl4NuNBRausP20tfEkQdAPSRrMCSUZBM6FhW7izAZRg==} @@ -4655,28 +4598,24 @@ packages: engines: {node: '>= 20'} cpu: [arm64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.2.1': resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] - libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.2.1': resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.2.1': resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.2.1': resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==} @@ -4976,6 +4915,9 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/youtube-player@5.5.11': + resolution: {integrity: sha512-pM41CDBqJqBmTeJWnF7NOGz82IQoYOhqzMYXv5vKCXBqGiYSLldxMtpCk6KAEtADTy49S45AriYaCaZyeUX38Q==} + '@typescript-eslint/eslint-plugin@8.56.0': resolution: {integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5100,49 +5042,41 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] - libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -5830,6 +5764,14 @@ packages: dayjs@1.11.21: resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -7255,28 +7197,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.31.1: resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.31.1: resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.31.1: resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.31.1: resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} @@ -7297,6 +7235,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + load-script@1.0.0: + resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -7617,6 +7558,9 @@ packages: react-dom: optional: true + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -8169,6 +8113,12 @@ packages: peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 + react-html-props@2.1.1: + resolution: {integrity: sha512-tM+YCYlr90m3JontKUAa+gNVU2zkyprlCS7OQ9aa3z2MfyJjAioJzrSmi1Vef/+UCTE6CQlPqLX4ebdLIJDKxw==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -8227,6 +8177,12 @@ packages: '@types/react': optional: true + react-social-media-embed@2.5.18: + resolution: {integrity: sha512-+PkzLRGAwnySkxKajaiK5VD+EjOhlFsh/vjNxgHsDfKBTseDpFxPrMXXQWkk6BRCwFBNVWX+V1HZ9AU0y54Wgw==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 + react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} @@ -8237,6 +8193,12 @@ packages: '@types/react': optional: true + react-sub-unsub@2.2.8: + resolution: {integrity: sha512-o3tmiOOZPdQUCmRhkdCHXRFLOHnCwdz/N3QZ1JQ14fQGA2HysKMF0kWu56ERnQUCK7wYVCQzI8pFbnivAYNQ+A==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 + react-syntax-highlighter@15.6.6: resolution: {integrity: sha512-DgXrc+AZF47+HvAPEmn7Ua/1p10jNoVZVI/LoPiYdtY+OM+/nG5yefLHKJwdKqY1adMuHFbeyBaG9j64ML7vTw==} peerDependencies: @@ -8261,11 +8223,24 @@ packages: react-native: optional: true + react-twitter-embed@4.0.4: + resolution: {integrity: sha512-2JIL7qF+U62zRzpsh6SZDXNI3hRNVYf5vOZ1WRcMvwKouw+xC00PuFaD0aEp2wlyGaZ+f4x2VvX+uDadFQ3HVA==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-wrap-balancer@1.1.1: resolution: {integrity: sha512-AB+l7FPRWl6uZ28VcJ8skkwLn2+UC62bjiw8tQUrZPlEWDVnR9MG0lghyn7EyxuJSsFEpht4G+yh2WikEqQ/5Q==} peerDependencies: react: '>=16.8.0 || ^17.0.0 || ^18' + react-youtube@10.1.0: + resolution: {integrity: sha512-ZfGtcVpk0SSZtWCSTYOQKhfx5/1cfyEW1JN/mugGNfAxT3rmVJeMbGpA9+e78yG21ls5nc/5uZJETE3cm3knBg==} + engines: {node: '>= 14.x'} + peerDependencies: + react: '>=0.14.1' + react@19.2.4: resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} @@ -8489,6 +8464,9 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + scriptjs@2.5.9: + resolution: {integrity: sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==} + scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} @@ -8574,6 +8552,9 @@ packages: simple-swizzle@0.2.4: resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + sister@3.0.2: + resolution: {integrity: sha512-p19rtTs+NksBRKW9qn0UhZ8/TUI9BPw9lmtHny+Y3TinWlOa9jWh9xB0AtPSdmOy49NJJJSSe0Ey4C7h0TrcYA==} + slate-dom@0.119.0: resolution: {integrity: sha512-foc8a2NkE+1SldDIYaoqjhVKupt8RSuvHI868rfYOcypD4we5TT7qunjRKJ852EIRh/Ql8sSTepXgXKOUJnt1w==} peerDependencies: @@ -9240,6 +9221,9 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + youtube-player@5.5.2: + resolution: {integrity: sha512-ZGtsemSpXnDky2AUYWgxjaopgB+shFHgXVpiJFeNB5nWEugpW1KWYDaHKuLqh2b67r24GtP6HoSW5swvf0fFIQ==} + zod-to-json-schema@3.25.1: resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} peerDependencies: @@ -13989,6 +13973,8 @@ snapshots: dependencies: '@types/node': 20.19.33 + '@types/youtube-player@5.5.11': {} + '@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.3(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -14881,6 +14867,10 @@ snapshots: dayjs@1.11.21: {} + debug@2.6.9: + dependencies: + ms: 2.0.0 + debug@3.2.7: dependencies: ms: 2.1.3 @@ -16535,6 +16525,8 @@ snapshots: lines-and-columns@1.2.4: {} + load-script@1.0.0: {} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -17136,6 +17128,8 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) + ms@2.0.0: {} + ms@2.1.3: {} mutative@1.1.0: {} @@ -17802,6 +17796,11 @@ snapshots: dependencies: react: 19.2.4 + react-html-props@2.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-is@16.13.1: {} react-lifecycles-compat@3.0.4: {} @@ -17870,6 +17869,19 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + react-social-media-embed@2.5.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + '@types/youtube-player': 5.5.11 + classnames: 2.5.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-html-props: 2.1.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-sub-unsub: 2.2.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-twitter-embed: 4.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-youtube: 10.1.0(react@19.2.4) + transitivePeerDependencies: + - supports-color + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): dependencies: get-nonce: 1.0.1 @@ -17878,6 +17890,11 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + react-sub-unsub@2.2.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-syntax-highlighter@15.6.6(react@19.2.4): dependencies: '@babel/runtime': 7.29.2 @@ -17906,10 +17923,25 @@ snapshots: optionalDependencies: react-dom: 19.2.4(react@19.2.4) + react-twitter-embed@4.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + scriptjs: 2.5.9 + react-wrap-balancer@1.1.1(react@19.2.4): dependencies: react: 19.2.4 + react-youtube@10.1.0(react@19.2.4): + dependencies: + fast-deep-equal: 3.1.3 + prop-types: 15.8.1 + react: 19.2.4 + youtube-player: 5.5.2 + transitivePeerDependencies: + - supports-color + react@19.2.4: {} readable-stream@2.3.8: @@ -18250,6 +18282,8 @@ snapshots: scheduler@0.27.0: {} + scriptjs@2.5.9: {} + scroll-into-view-if-needed@3.1.0: dependencies: compute-scroll-into-view: 3.1.1 @@ -18383,6 +18417,8 @@ snapshots: dependencies: is-arrayish: 0.3.4 + sister@3.0.2: {} + slate-dom@0.119.0(slate@0.120.0): dependencies: '@juggle/resize-observer': 3.4.0 @@ -19095,6 +19131,14 @@ snapshots: yoctocolors@2.1.2: {} + youtube-player@5.5.2: + dependencies: + debug: 2.6.9 + load-script: 1.0.0 + sister: 3.0.2 + transitivePeerDependencies: + - supports-color + zod-to-json-schema@3.25.1(zod@4.3.6): dependencies: zod: 4.3.6 diff --git a/surfsense_web/public/logos/berkeley.svg b/surfsense_web/public/logos/berkeley.svg new file mode 100644 index 000000000..97700a05e --- /dev/null +++ b/surfsense_web/public/logos/berkeley.svg @@ -0,0 +1,874 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/surfsense_web/public/logos/bosta.png b/surfsense_web/public/logos/bosta.png new file mode 100644 index 0000000000000000000000000000000000000000..12b579129def66f08ddaf99d9daab2b564d6615b GIT binary patch literal 1064 zcmV+@1lRkCP)C0000vP)t-sM{rF4 z|NsAGW&g&;{{R60009300RI30{{R600095w)87p8fPZB>1QTF{zY$F{nxCd1 z0D8*g$_p*z%5n$}0J8JYe}*6A1gSIt`eBj9W@1g12tfL1)5anKKtYG$UvYO40idA6 zTw%fsh6n%!9l-(z5h8XI0>Dc=fB0EAXvhHA-w%o#q)32=4>OHj$Qa2vJQFn)hQfLM)i6}5*eWrT?u;VK-m$^hUU zR#2aCL*#4s@T(eztPd>34?jq4Up?iAtm46_+q~ZeKK1sD<3=2ug``~XRQ<1w*l{%6vJv;cJPG1xtZ60ef4wB?wZ+?ZqW;%Ys79!7+ffLq zTA{etCU4!wVw0lR#%NyiYlX;p8F5tCz9;8Zvx8+HU`W>rHTEh1NYx4>HNsK=vDGDK z&B{8)bES{*h*oXkK_((d?Rk*N5kU%0%7>3~xpaH9%!6pe57-h z@u61d2dSKs#d!yt7oW^a-ZGDNPmSr(?h-lx4uAvT0I + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/surfsense_web/public/logos/chula.svg b/surfsense_web/public/logos/chula.svg new file mode 100644 index 000000000..01ec9298a --- /dev/null +++ b/surfsense_web/public/logos/chula.svg @@ -0,0 +1,578 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/surfsense_web/public/logos/devoteam.png b/surfsense_web/public/logos/devoteam.png new file mode 100644 index 0000000000000000000000000000000000000000..71b1f29d2245153261bc47d82e6c7da4031667ea GIT binary patch literal 1396 zcmV-)1&jKLP)C0000jP)t-s_()zy za7_3}Uie5}_()#(NM86zUjG08_()#+nx^`OnxHFo000E@W=N5F`RY`axU^AU|rVnyR zLWDp%3{@h$_+Q3R>q$!W5h>-Q$MN^)y(A3obx%^wPw~H_JcS;Qztu;(7=rRh_f3K+ zh7M-f=dLFePdygp4bhmvk2Y$+?l^;-#&!rn{Zyg-Kv1m^g6A`S$3%|&fDG!ZXaAFl zi$F2{O?F3c2sF|9KatZwCGgX)iG0)ul4b<|k9gL} zO8mR^F6qCmlHVquf2#G*=I<_R+6E~CAt?E;5+IcmX$!CxU{+Wd5EEcEz$_6H2-*Uy z2SCC=jI&#KN;X+0zpi|On~WY0%{Uw0{jxPAZ$Y#0C*EHzXDu< zZ#v|i1L*)tp8y>F41iBEs>_1$20R8pBp&SJgTghikKy;=<|{D3W)O*o+&K?%;n*v{=X$89TtGfWC4epe;30An8zWt7fH|m z?^uXD0G*7%?AV**1K=@e^FxOq-~q@4KrR4+tXvDo#3INAKoG+PP&mL^V1N*XTmWWK<0w9?%jzPQ% z-v=N{Z@mDJuVDnRVTp_jFu@y=Xc6Eczy<)fWDx*xuxkUL;Z5m#03)(3e+xj3@WJFY z3rM6s@*2Q|RES<%1sXY?zm^BW@f-?*w=&^TBm#oqt#83mCWC_Dov-0hD1?LHmHois z0kBs7&W`AFYXV)^0h>}R70?0BQZ49%CTW3T7ZQz;A95dfDZ7zw*oILVjmnQ zqsP%Gt`8Ige2e99E`qBA+h*4L;n0x*F1J?Tr4@GUUY`-8c96;u|f9ej+TI+6?$DrV6s6&6|S!?GHh0rrD*( z1M{kmqYh8pD;g|@y~pSOHo5F>Xh-`mAyEU#|O}cgG@c_4cgL6N+uN$gA5Xu;O z^?rXKu-^CI)T?_dYZ1O3`103?9{vM>qyN9Y{r?|H&5h1138St60000 \ No newline at end of file diff --git a/surfsense_web/public/logos/ironmountain.svg b/surfsense_web/public/logos/ironmountain.svg new file mode 100644 index 000000000..bbfa907de --- /dev/null +++ b/surfsense_web/public/logos/ironmountain.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/surfsense_web/public/logos/koreanair.svg b/surfsense_web/public/logos/koreanair.svg new file mode 100644 index 000000000..9bb9df295 --- /dev/null +++ b/surfsense_web/public/logos/koreanair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/surfsense_web/public/logos/leverageedu.png b/surfsense_web/public/logos/leverageedu.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9ecad3129a26235752baee3fd8199630f70f35 GIT binary patch literal 1246 zcmV<41R?v0P);R09{{ zdI}+8Jx(FS7ea_u@&C~p$l;8|6N@}g2yt>0#F01|$eECUd?7?_63K(84djk1ATN@9 zZ}kmPe%75#5qTziZirJ3D+edA9lgp!XlU-E%kNLH_C`c5u>C<>tutr{7q9_X85to1 zwkK51csu#|Zf7z?tPF5HB47!yE>?s=l4$H7#NFS^u+Z>pqh6790nU(sBES(ZLX~Aq zvc##DUpdiyX0!qv0ZwG}4wpYtgar77;CiCWAWM(=u0CHvYgJsNdyyhH5Z|&rn7mC^P(U(E;VFI^OLvnyjke(gpRZ>;~2#@qjdY(Jg8K+P`~`K)v^Gcq$mb{Tz`NE(JULH+Gk zr27L1O$*tD5UgGOD(}6$Hr(AKqfatP!QJkE*<5}Vqt(Ihmrk&K#|AXtFaT51Cb4ht zPRuE4c!*m@AES~&zT^9P?)49mmN}WPy}dm9+A_9oDn@967oX3;W=)L@Yf#Wpe>r0&0?gd&qx2D zA6b$R2u!k(J3ak;P=1|pCIg$+%;ac?mvKU+Fx^L0V;L!mmD22OOir;yOWPLU3?0W8 zfQo3IugsgmxvTB`*?teRV!)!RxIGUjsk(y2EU~^YlVe?8EU2tb_i^mjK_-~eD4qX4 zHq{zyVJiZhk4!{|fK!p4D;C(vnK6-`As-jr?bJ24;PMP&5*F4MK1EfBmlRF^^2)|C zEQ*bfv$w<}KNa92Qa}^1pNL(dDl)rY&tmOtJDsvjr!cbMNedf_GN@?pV7#PK;27fY zjc*xew6QDuT~bXGVv*MY`&Gxnrf32H&I5ZQMJNV|;yLN$O-p0^FIjSpWb4 literal 0 HcmV?d00001 diff --git a/surfsense_web/public/logos/nutresa.svg b/surfsense_web/public/logos/nutresa.svg new file mode 100644 index 000000000..0b8a1db80 --- /dev/null +++ b/surfsense_web/public/logos/nutresa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/surfsense_web/public/logos/opengov.png b/surfsense_web/public/logos/opengov.png new file mode 100644 index 0000000000000000000000000000000000000000..042a50b29a3e652551849d22b49a55cc414ea817 GIT binary patch literal 32084 zcmYJaWl&tf)-`+vm*5uM-66OQu0aPU5C|6B2`<4U5Zqk{_uvG#Kp;yt0UD_Gb=&g=6Cv~MHc7j_(Fo;NI$bRrd@B}@| zV0IC3M&+Fd{w91nE@<%K$G1Y-iH$cuq*6{G%qTojOLSG6d0>PPnVzE5KsHmgwsz=A z=cLdn<*iOBUcKA=^oQlv)ybr9+0ar4vD?;Np-FvI*Y9>Ib%<|(y-CE$yIZ#vw)bgT zc5Chtd!NT=Kp&|gxrhay2)soD34u$+NRaiFqNXNjj~P6sE~+S_CUqVW?7_SrXu2rd z+b1$08X+}EanxStLz<5sY@|x^4xames{t-!AH9r}0I{)q2(Ae4_48-XQ({nhgW|Dr ze&d_?-Jm^lU??#W0lbNq4-G^ELJxkr%hDi$0q%&K_xV!!lKLP~)Y)ag5qXRsdsV6S z_RUrGN|0X^d!ADE2Sb&B`4m0w*vS7bA(r&z(Y+sV84YQ9TkOV7{y0lB6-iIJ6$cf7 z_cv$51St@3I9hrq}z73)kBw>SMa5LqSCeY_t*a!oz~i;!fKtk zmab$y6!mlnc0omO+?F{MjR-}c2S})%-v2`w-NjKyq{?qfA@k7uZYInRS3rrjm)YmH zPZ`UazuzHA&0eQT@;?hxtt~@i<0o7P2)f;_+dc(TwFc`+fVVnA7J?Ay%ap+Rw_>9# z8Ocm}1yuAK>f8kAIPJ+)CM^SXUF(OOUTEN=q`{NN|C!b*>B{1m-)jL{Yjk_Lqx<6% zdZp>1r96xDJFkce#WEDp4H`nI#e^fI$iV+QPm~V&O3iRLSRGrDi%`2tHqifnYg{Ko z`TH0PEi$5ln%7}+75ni}w@E&wMa#BZ6Mfk=J3jubPR3&y8j8{piAzGQ|G7V$pT*Jn z`m6UABPA&!c$kG+-ucE)<-cpZvPdyWgT4rTljEL#`CgmKH~8O-K1mYw269n96&bnG zUJw%kol+Lp7G1vozOja{rL~qNd7xmFQ(LDrDS9$L~%I}K4VPv;WEQB`7 zgx+9_`@-~E&7^om5;G#RF+;kuSJNN050*gPq4@uMmOD{teK7%~@a{4O;CWN9<)o2Y=HksGi6gf`Hu9t*TGuF@lv)s#h4n)iq33N^ z&WLa5@{Il*DPkTW6)){P-yzEGDBWLb$$ewZS80()on-{7=7hojZ6R8T32|&v(dC@+ zzIfg4k4fzFAus~!CHqoEPQm%yuw9B|5tY>uRLanLkAAN5n{CiwVHj~DcvR&pxg zuScSFyZ8C%dlMN<;5$u4-L=sFomNS?b)`0E6qXoswxgp!Th8)aOLWV;6!-IXM!}n_ zvw(PN5AYE{wxd*joxcIkLJR$pfZ~%6(XqynDYlNM3o^)4U@@hTj6?pB9Rtr3dB$#* zj|-*;r+q{iSFr%J14HnR2fYVg=ce~E{1$JV&9wgSm{nYV3x;wj

o%W|p!x1*HC) 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 Z%-r`2z)2Yj0X69$MOjsuS}Eh;{|_DHcwqnl literal 0 HcmV?d00001 diff --git a/surfsense_web/public/logos/pitt.svg b/surfsense_web/public/logos/pitt.svg new file mode 100644 index 000000000..101f7e7b5 --- /dev/null +++ b/surfsense_web/public/logos/pitt.svg @@ -0,0 +1 @@ +University-of-Pittsburgh-Seal-2020 \ No newline at end of file diff --git a/surfsense_web/public/logos/tamu.svg b/surfsense_web/public/logos/tamu.svg new file mode 100644 index 000000000..9bb086c67 --- /dev/null +++ b/surfsense_web/public/logos/tamu.svg @@ -0,0 +1,810 @@ + + + + + diff --git a/surfsense_web/public/logos/tec.svg b/surfsense_web/public/logos/tec.svg new file mode 100644 index 000000000..3e68ed5ca --- /dev/null +++ b/surfsense_web/public/logos/tec.svg @@ -0,0 +1,569 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/surfsense_web/public/logos/tpbank.svg b/surfsense_web/public/logos/tpbank.svg new file mode 100644 index 000000000..4874bb42c --- /dev/null +++ b/surfsense_web/public/logos/tpbank.svg @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/surfsense_web/public/logos/usc.svg b/surfsense_web/public/logos/usc.svg new file mode 100644 index 000000000..6176e5d61 --- /dev/null +++ b/surfsense_web/public/logos/usc.svg @@ -0,0 +1,1335 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/surfsense_web/public/logos/vng.svg b/surfsense_web/public/logos/vng.svg new file mode 100644 index 000000000..33c9392e6 --- /dev/null +++ b/surfsense_web/public/logos/vng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/surfsense_web/public/logos/welab.png b/surfsense_web/public/logos/welab.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c2834282e6fd2ef3ba2a5b606ca1f5a5c6477b GIT binary patch literal 20564 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 literal 0 HcmV?d00001 diff --git a/surfsense_web/public/logos/wisc.svg b/surfsense_web/public/logos/wisc.svg new file mode 100644 index 000000000..59f4a1290 --- /dev/null +++ b/surfsense_web/public/logos/wisc.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/surfsense_web/public/logos/zopper.png b/surfsense_web/public/logos/zopper.png new file mode 100644 index 0000000000000000000000000000000000000000..7d01bc672d5d92f87472c70a084d49987cc35b4f GIT binary patch literal 7361 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