From ac240b464537937367edb02acf4465822bc8a95a Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Tue, 22 Oct 2024 12:38:06 -0600 Subject: [PATCH 01/75] WIP typescript + sqlite changes --- app/.server/constants.js | 7 ++ app/.server/services/content/sync-content.js | 51 ++++++++++++ app/.server/services/github/fetchWithETag.js | 31 ++++++++ .../services/github/syncLatestCommits.js | 41 ++++++++++ .../services/github/syncLatestRelease.js | 25 ++++++ app/.server/utils/etag.js | 7 ++ app/.server/utils/parse-markdown.js | 64 +++++++++++++++ app/components/{git-feed.jsx => git-feed.tsx} | 0 app/components/{header.jsx => header.tsx} | 0 app/components/{news.jsx => news.tsx} | 0 ...rose-container.jsx => prose-container.tsx} | 0 app/components/{release.jsx => release.tsx} | 0 app/{root.jsx => root.tsx} | 8 +- app/routes/$.jsx | 1 - app/routes/$.tsx | 1 + app/routes/{404.jsx => 404.tsx} | 16 ++-- app/routes/{_index.jsx => _index.tsx} | 26 +++++-- app/routes/{docs.$name.jsx => docs.$name.tsx} | 25 +++--- .../{docs._index.jsx => docs._index.tsx} | 2 +- app/routes/{news.$name.jsx => news.$name.tsx} | 23 +++--- app/routes/{theme.js => theme.tsx} | 3 +- biome.json | 2 +- bun.lockb | Bin 330036 -> 329936 bytes database/connection.js | 73 ++++++++++++++++++ database/seed.js | 23 ++++++ package.json | 39 +++++++--- reoserv.db | Bin 0 -> 57344 bytes tailwind.config.js => tailwind.config.ts | 4 +- tsconfig.json | 32 ++++++++ vite.config.js => vite.config.ts | 8 ++ 30 files changed, 459 insertions(+), 53 deletions(-) create mode 100644 app/.server/constants.js create mode 100644 app/.server/services/content/sync-content.js create mode 100644 app/.server/services/github/fetchWithETag.js create mode 100644 app/.server/services/github/syncLatestCommits.js create mode 100644 app/.server/services/github/syncLatestRelease.js create mode 100644 app/.server/utils/etag.js create mode 100644 app/.server/utils/parse-markdown.js rename app/components/{git-feed.jsx => git-feed.tsx} (100%) rename app/components/{header.jsx => header.tsx} (100%) rename app/components/{news.jsx => news.tsx} (100%) rename app/components/{prose-container.jsx => prose-container.tsx} (100%) rename app/components/{release.jsx => release.tsx} (100%) rename app/{root.jsx => root.tsx} (92%) delete mode 100644 app/routes/$.jsx create mode 100644 app/routes/$.tsx rename app/routes/{404.jsx => 404.tsx} (74%) rename app/routes/{_index.jsx => _index.tsx} (79%) rename app/routes/{docs.$name.jsx => docs.$name.tsx} (83%) rename app/routes/{docs._index.jsx => docs._index.tsx} (66%) rename app/routes/{news.$name.jsx => news.$name.tsx} (72%) rename app/routes/{theme.js => theme.tsx} (77%) create mode 100644 database/connection.js create mode 100644 database/seed.js create mode 100644 reoserv.db rename tailwind.config.js => tailwind.config.ts (98%) create mode 100644 tsconfig.json rename vite.config.js => vite.config.ts (76%) diff --git a/app/.server/constants.js b/app/.server/constants.js new file mode 100644 index 0000000..2949c1a --- /dev/null +++ b/app/.server/constants.js @@ -0,0 +1,7 @@ +const GITHUB_RELEASE_URL = + 'https://api.github.com/repos/sorokya/reoserv/releases/latest'; + +const GITHUB_COMMITS_URL = + 'https://github.com/sorokya/reoserv/commits/master.atom'; + +export { GITHUB_COMMITS_URL, GITHUB_RELEASE_URL }; diff --git a/app/.server/services/content/sync-content.js b/app/.server/services/content/sync-content.js new file mode 100644 index 0000000..a87af0f --- /dev/null +++ b/app/.server/services/content/sync-content.js @@ -0,0 +1,51 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; +import { db } from '../../../../database/connection'; +import { parseMarkdown } from '../../utils/parse-markdown'; + +async function syncContent() { + const contentDir = path.resolve(__dirname, '../../../content'); + const subDirs = ['docs', 'news']; + const allFiles = []; + + for (const subDir of subDirs) { + const dirPath = path.join(contentDir, subDir); + const files = await fs.readdir(dirPath); + allFiles.push(...files.map((file) => path.join(dirPath, file))); + } + + const parsedFiles = await Promise.all(allFiles.map(parseMarkdown)); + + const insertStmt = db.prepare(` + INSERT INTO content (slug, prefix, title, description, date, lastmod, etag, content) + VALUES (:slug, :prefix, :title, :description, :date, :lastmod, :etag, :content) + ON CONFLICT(slug) DO UPDATE SET + title=excluded.title, + description=excluded.description, + date=excluded.date, + lastmod=excluded.lastmod, + etag=excluded.etag, + content=excluded.content + `); + + db.transaction(() => { + for (const parsed of parsedFiles) { + const slug = path.basename(parsed.filePath, '.md'); + const prefix = parsed.filePath.split(path.sep)[ + parsed.filePath.split(path.sep).length - 3 + ]; + insertStmt.run({ + slug, + prefix, + title: parsed.title, + description: parsed.description, + date: parsed.date, + lastmod: parsed.lastmod, + etag: parsed.etag, + content: parsed.content, + }); + } + }); +} + +export { syncContent }; diff --git a/app/.server/services/github/fetchWithETag.js b/app/.server/services/github/fetchWithETag.js new file mode 100644 index 0000000..b9a33d8 --- /dev/null +++ b/app/.server/services/github/fetchWithETag.js @@ -0,0 +1,31 @@ +import db from '../../../../database/connection'; + +async function fetchWithETag(url, type) { + const etag = + db + .prepare('SELECT etag FROM last_refreshed WHERE type = :type') + .get({ type })?.etag || ''; + + const response = await fetch(url, { + headers: { 'If-None-Match': etag }, + }); + + if (response.status === 304) { + return null; // No update needed + } + + if (!response.ok) { + throw new Error(`Failed to fetch ${type}`); + } + + const newEtag = response.headers.get('etag'); + const data = await response.json(); + + db.prepare( + 'INSERT OR REPLACE INTO last_refreshed (type, timestamp, etag) VALUES (:type, :timestamp, :etag)', + ).run({ type, timestamp: new Date().toISOString(), etag: newEtag }); + + return data; +} + +export { fetchWithETag }; diff --git a/app/.server/services/github/syncLatestCommits.js b/app/.server/services/github/syncLatestCommits.js new file mode 100644 index 0000000..d201c3b --- /dev/null +++ b/app/.server/services/github/syncLatestCommits.js @@ -0,0 +1,41 @@ +import db from '../../../../database/connection'; +import { GITHUB_COMMITS_URL } from '../../constants'; +import { fetchWithETag } from './fetchWithETag'; + +function insertMany(commits) { + const insert = db.prepare(` + INSERT INTO commits (commit_id, link, content, timestamp) + VALUES (:commit_id, :link, :content, :timestamp) + ON CONFLICT(commit_id) DO UPDATE SET + link=excluded.link, + content=excluded.content, + timestamp=excluded.timestamp + `); + + return db.transaction(() => { + for (const commit of commits) { + insert.run(commit); + } + }); +} + +export async function syncLatestCommits() { + const feed = await fetchWithETag(GITHUB_COMMITS_URL, 'commits'); + + if (!feed) { + return db + .prepare('SELECT commit_id, link, content, timestamp FROM commits') + .all(); + } + + const gitFeed = feed.items.map((item) => ({ + id: item.id, + link: item.link, + content: item.title, + timestamp: item.created, + })); + + insertMany(gitFeed); + + return gitFeed; +} diff --git a/app/.server/services/github/syncLatestRelease.js b/app/.server/services/github/syncLatestRelease.js new file mode 100644 index 0000000..e7a882b --- /dev/null +++ b/app/.server/services/github/syncLatestRelease.js @@ -0,0 +1,25 @@ +import db from '../../../../database/connection'; +import { GITHUB_RELEASE_URL } from '../../constants'; +import { fetchWithETag } from './fetchWithETag'; + +export async function syncLatestRelease() { + const release = await fetchWithETag(GITHUB_RELEASE_URL, 'latest_release'); + + if (!release) { + return db.prepare('SELECT name, timestamp, link FROM latest_release').get(); + } + + db.prepare(` + INSERT INTO latest_release (name, timestamp, link) + VALUES (:name, :timestamp, :link) + ON CONFLICT(name) DO UPDATE SET + timestamp=excluded.timestamp, + link=excluded.link + `).run({ + name: release.name, + timestamp: release.published_at, + link: release.html_url, + }); + + return release; +} diff --git a/app/.server/utils/etag.js b/app/.server/utils/etag.js new file mode 100644 index 0000000..bcd3053 --- /dev/null +++ b/app/.server/utils/etag.js @@ -0,0 +1,7 @@ +import crypto from 'node:crypto'; + +function etag(str) { + return crypto.createHash('md5').update(str).digest('hex'); +} + +export { etag }; diff --git a/app/.server/utils/parse-markdown.js b/app/.server/utils/parse-markdown.js new file mode 100644 index 0000000..d95dcf1 --- /dev/null +++ b/app/.server/utils/parse-markdown.js @@ -0,0 +1,64 @@ +import fs from 'node:fs/promises'; +import frontmatter from 'gray-matter'; +import { Marked } from 'marked'; +import { createHighlighter } from 'shiki'; +import { etag } from './etag'; + +let highlighter; + +async function parseMarkdown(filepath) { + if (!highlighter) { + highlighter = await createHighlighter({ + langs: ['md', 'sh', 'rust', 'text', 'yaml'], + themes: ['github-dark-dimmed'], + }); + } + + const fileContents = await fs.readFile(filepath, { encoding: 'utf-8' }); + + const fm = frontmatter(fileContents); + + const markdown = await new Marked() + .use({ async: true, gfm: true }) + .use({ + renderer: { + code(code) { + return highlighter.codeToHtml(code.text, { + lang: code.lang ?? 'text', + theme: 'github-dark-dimmed', + }); + }, + }, + }) + .parse(fm.content); + + const content = replaceVideoTags(markdown); + + return { + title: fm.data.title, + description: fm.data.description, + date: fm.data.date ?? null, + lastmod: fm.data.lastmod ?? null, + etag: etag(content), + content, + }; +} + +function replaceVideoTags(html) { + while (html.includes('{{Your browser does not support video`, + ); + } + + return html; +} + +export { parseMarkdown }; diff --git a/app/components/git-feed.jsx b/app/components/git-feed.tsx similarity index 100% rename from app/components/git-feed.jsx rename to app/components/git-feed.tsx diff --git a/app/components/header.jsx b/app/components/header.tsx similarity index 100% rename from app/components/header.jsx rename to app/components/header.tsx diff --git a/app/components/news.jsx b/app/components/news.tsx similarity index 100% rename from app/components/news.jsx rename to app/components/news.tsx diff --git a/app/components/prose-container.jsx b/app/components/prose-container.tsx similarity index 100% rename from app/components/prose-container.jsx rename to app/components/prose-container.tsx diff --git a/app/components/release.jsx b/app/components/release.tsx similarity index 100% rename from app/components/release.jsx rename to app/components/release.tsx diff --git a/app/root.jsx b/app/root.tsx similarity index 92% rename from app/root.jsx rename to app/root.tsx index e7e9c86..e76fc47 100644 --- a/app/root.jsx +++ b/app/root.tsx @@ -1,4 +1,4 @@ -import { json } from '@remix-run/node'; +import { type LoaderFunctionArgs, json } from '@remix-run/node'; import { Links, Meta, @@ -13,7 +13,7 @@ import { getThemeFromCookies } from './.server/theme'; import { Header } from './components/header'; import styles from './tailwind.css?url'; -export async function loader({ request }) { +export async function loader({ request }: LoaderFunctionArgs) { const theme = await getThemeFromCookies(request); return json({ theme }); } @@ -30,7 +30,7 @@ export const links = () => [ ]; export default function App() { - const { theme } = useLoaderData(); + const { theme } = useLoaderData(); return ( @@ -75,7 +75,7 @@ export default function App() { } export function ErrorBoundary() { - const error = useRouteError(); + const error = useRouteError() as Error; if (isRouteErrorResponse(error)) { return ( diff --git a/app/routes/$.jsx b/app/routes/$.jsx deleted file mode 100644 index 0e46767..0000000 --- a/app/routes/$.jsx +++ /dev/null @@ -1 +0,0 @@ -export { default, loader, meta, headers } from './404.jsx'; diff --git a/app/routes/$.tsx b/app/routes/$.tsx new file mode 100644 index 0000000..e5c8369 --- /dev/null +++ b/app/routes/$.tsx @@ -0,0 +1 @@ +export { default, loader, meta, headers } from './404.js'; diff --git a/app/routes/404.jsx b/app/routes/404.tsx similarity index 74% rename from app/routes/404.jsx rename to app/routes/404.tsx index bd25927..adf234b 100644 --- a/app/routes/404.jsx +++ b/app/routes/404.tsx @@ -1,20 +1,24 @@ -import { json } from '@remix-run/node'; +import { + type HeadersFunction, + type LoaderFunctionArgs, + json, +} from '@remix-run/node'; import { Link, useLoaderData } from '@remix-run/react'; import etag from '../.server/etag'; import { getGitFeed } from '../.server/get-git-feed'; import { getLatestRelease } from '../.server/get-latest-release'; import { Layout } from './_index'; -export const headers = ({ loaderHeaders }) => ({ - 'Cache-Control': loaderHeaders.get('Cache-Control'), - ETag: loaderHeaders.get('ETag'), +export const headers: HeadersFunction = ({ loaderHeaders }) => ({ + 'Cache-Control': loaderHeaders.get('Cache-Control') ?? '', + ETag: loaderHeaders.get('ETag') ?? '', }); export function meta() { return [{ title: 'Not Found | REOSERV' }]; } -export async function loader({ request }) { +export async function loader({ request }: LoaderFunctionArgs) { try { const commits = await getGitFeed(request); const release = await getLatestRelease(request); @@ -35,7 +39,7 @@ export async function loader({ request }) { } export default function FourOFour() { - const { commits, release } = useLoaderData(); + const { commits, release } = useLoaderData(); return ( diff --git a/app/routes/_index.jsx b/app/routes/_index.tsx similarity index 79% rename from app/routes/_index.jsx rename to app/routes/_index.tsx index 794b274..a9cea8b 100644 --- a/app/routes/_index.jsx +++ b/app/routes/_index.tsx @@ -1,4 +1,8 @@ -import { json } from '@remix-run/node'; +import { + type HeadersFunction, + json, + type LoaderFunctionArgs, +} from '@remix-run/node'; import { useLoaderData } from '@remix-run/react'; import { FcDownload } from 'react-icons/fc'; import { PiScrollLight } from 'react-icons/pi'; @@ -10,16 +14,16 @@ import { GitFeed } from '../components/git-feed'; import { News } from '../components/news'; import { Release } from '../components/release'; -export const headers = ({ loaderHeaders }) => ({ - 'Cache-Control': loaderHeaders.get('Cache-Control'), - ETag: loaderHeaders.get('ETag'), +export const headers: HeadersFunction = ({ loaderHeaders }) => ({ + 'Cache-Control': loaderHeaders.get('Cache-Control') ?? '', + ETag: loaderHeaders.get('ETag') ?? '', }); export function meta() { return [{ title: 'Home | REOSERV' }]; } -export async function loader({ request }) { +export async function loader({ request }: LoaderFunctionArgs) { try { const commits = await getGitFeed(request); const release = await getLatestRelease(request); @@ -41,7 +45,7 @@ export async function loader({ request }) { } export default function Index() { - const { commits, articles, release } = useLoaderData(); + const { commits, articles, release } = useLoaderData(); return ( @@ -54,7 +58,15 @@ export default function Index() { ); } -export function Layout({ children, commits, release }) { +export function Layout({ + children, + commits, + release, +}: { + children: React.ReactNode; + commits: Awaited>; + release: Awaited>; +}) { return (
{children}
diff --git a/app/routes/docs.$name.jsx b/app/routes/docs.$name.tsx similarity index 83% rename from app/routes/docs.$name.jsx rename to app/routes/docs.$name.tsx index fcb4c26..7fa8238 100644 --- a/app/routes/docs.$name.jsx +++ b/app/routes/docs.$name.tsx @@ -1,21 +1,26 @@ -import { redirect } from '@remix-run/node'; +import { + type HeadersFunction, + type LoaderFunctionArgs, + type MetaFunction, + redirect, +} from '@remix-run/node'; import { NavLink, useLoaderData } from '@remix-run/react'; import { getDocsPage } from '../.server/get-docs-page'; import { ProseContainer } from '../components/prose-container'; -export const headers = ({ loaderHeaders }) => ({ - 'Cache-Control': loaderHeaders.get('Cache-Control'), - ETag: loaderHeaders.get('ETag'), +export const headers: HeadersFunction = ({ loaderHeaders }) => ({ + 'Cache-Control': loaderHeaders.get('Cache-Control') ?? '', + ETag: loaderHeaders.get('ETag') ?? '', }); -export function meta({ data }) { +export const meta: MetaFunction = ({ data }) => { return [ { title: `${data.page.title} | Docs | REOSERV` }, { name: 'description', value: data.page.description }, ]; -} +}; -export async function loader({ params }) { +export async function loader({ params }: LoaderFunctionArgs) { try { const page = await getDocsPage(params.name); return new Response(JSON.stringify({ page }), { @@ -51,7 +56,7 @@ const LIST = [ { type: 'item', title: 'News', link: '/docs/news' }, ]; -function ListHeader({ title }) { +function ListHeader({ title }: { title: string }) { return (
  • {title} @@ -59,7 +64,7 @@ function ListHeader({ title }) { ); } -function ListItem({ title, link }) { +function ListItem({ title, link }: { title: string; link: string }) { return (
  • (); const { title, content } = page; return ( diff --git a/app/routes/docs._index.jsx b/app/routes/docs._index.tsx similarity index 66% rename from app/routes/docs._index.jsx rename to app/routes/docs._index.tsx index df04655..08fd3fd 100644 --- a/app/routes/docs._index.jsx +++ b/app/routes/docs._index.tsx @@ -1,5 +1,5 @@ import { redirect } from '@remix-run/node'; -export async function loader({ params }) { +export async function loader() { throw redirect('/docs/installation'); } diff --git a/app/routes/news.$name.jsx b/app/routes/news.$name.tsx similarity index 72% rename from app/routes/news.$name.jsx rename to app/routes/news.$name.tsx index fd8281f..976f287 100644 --- a/app/routes/news.$name.jsx +++ b/app/routes/news.$name.tsx @@ -1,15 +1,20 @@ -import { redirect } from '@remix-run/node'; +import { + type HeadersFunction, + type LoaderFunctionArgs, + type MetaFunction, + redirect, +} from '@remix-run/node'; import { useLoaderData } from '@remix-run/react'; import { getNewsArticle } from '../.server/get-news-article'; import { ProseContainer } from '../components/prose-container'; -export const headers = ({ loaderHeaders }) => ({ - 'Cache-Control': loaderHeaders.get('Cache-Control'), - ETag: loaderHeaders.get('ETag'), +export const headers: HeadersFunction = ({ loaderHeaders }) => ({ + 'Cache-Control': loaderHeaders.get('Cache-Control') ?? '', + ETag: loaderHeaders.get('ETag') ?? '', }); -export function meta({ params, data }) { - const parts = params.name.split('-'); +export const meta: MetaFunction = ({ params, data }) => { + const parts = params.name?.split('-') ?? []; parts.splice(0, 3); // remove date const title = parts .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) @@ -18,9 +23,9 @@ export function meta({ params, data }) { { title: `${title} | REOSERV` }, { name: 'description', value: data.article.description }, ]; -} +}; -export async function loader({ request, params }) { +export async function loader({ request, params }: LoaderFunctionArgs) { try { const article = await getNewsArticle(params.name, request); return new Response(JSON.stringify({ article }), { @@ -39,7 +44,7 @@ export async function loader({ request, params }) { export default function Article() { const { article: { title, date, content, description }, - } = useLoaderData(); + } = useLoaderData(); return ( diff --git a/app/routes/theme.js b/app/routes/theme.tsx similarity index 77% rename from app/routes/theme.js rename to app/routes/theme.tsx index 8f8b15d..255a525 100644 --- a/app/routes/theme.js +++ b/app/routes/theme.tsx @@ -1,6 +1,7 @@ +import type { ActionFunctionArgs } from '@remix-run/node'; import { getThemeFromCookies, themeCookie } from '../.server/theme'; -export async function action({ request }) { +export async function action({ request }: ActionFunctionArgs) { const currentTheme = await getThemeFromCookies(request); const headers = new Headers(); diff --git a/biome.json b/biome.json index e4ffd33..6d9e5ee 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.3/schema.json", + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", "organizeImports": { "enabled": true }, diff --git a/bun.lockb b/bun.lockb index e146d5dba4e966b30096a413f96d4f243defe7c2..ce55d23aba722ae2aaba8608c04c67a6baf80ee7 100755 GIT binary patch delta 85452 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 result.status === 'fulfilled')) { + console.log('Database seeded successfully.'); + } +} + +seedDatabase(); diff --git a/package.json b/package.json index d2504e7..18c3efa 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,16 @@ { "name": "reoserv.net", - "version": "1.2.0", - "description": "", + "version": "1.3.0", + "description": "The official documentationwebsite for the `reoserv` project", "type": "module", "scripts": { "build": "remix vite:build", "dev": "node ./server.js", "lint": "biome check --write --unsafe .", "lint:docs": "prettier --write *.md ./content/**/*.md", - "start": "cross-env NODE_ENV=production node ./server.js" + "start": "cross-env NODE_ENV=production node ./server.js", + "build:contentdb": "node ./database/seed.js", + "typecheck": "tsc" }, "keywords": ["reoserv", "reoserv.net", "endless online emulator"], "author": "Richard Leek ", @@ -17,39 +19,54 @@ "@remix-run/express": "^2.13.1", "@remix-run/node": "^2.13.1", "@remix-run/react": "^2.13.1", + "better-sqlite3": "^11.4.0", "compression": "^1.7.4", + "cross-env": "^7.0.3", "etag": "^1.8.1", "express": "^4.21.1", "gray-matter": "^4.0.3", "isbot": "^5.1.17", - "marked": "^14.1.2", + "marked": "^14.1.3", "morgan": "^1.10.0", "react": "rc", "react-dom": "rc", "react-icons": "^5.3.0", "rss-to-json": "^2.1.1", - "shiki": "^1.22.0", - "vite-imagetools": "^7.0.4" + "shiki": "^1.22.0" }, "devDependencies": { - "@biomejs/biome": "1.9.3", + "@biomejs/biome": "1.9.4", "@remix-run/dev": "^2.13.1", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.9", "@tailwindcss/typography": "^0.5.15", + "@types/compression": "^1.7.5", + "@types/express": "^5.0.0", + "@types/morgan": "^1.9.9", + "@types/react": "npm:types-react@rc", + "@types/react-dom": "npm:types-react-dom@rc", "autoprefixer": "^10.4.20", - "cross-env": "^7.0.3", "cssnano": "^7.0.6", "postcss": "^8.4.47", "prettier": "^3.3.3", - "tailwindcss": "^3.4.13", + "tailwindcss": "^3.4.14", "tailwindcss-animate": "^1.0.7", - "vite": "^5.4.8" + "typescript": "^5.6.3", + "vite": "^5.4.9", + "vite-imagetools": "^7.0.4", + "vite-tsconfig-paths": "^5.0.1" }, "overrides": { + "@types/react": "npm:types-react@rc", + "@types/react-dom": "npm:types-react-dom@rc", "react": "rc", "react-dom": "rc" }, - "trustedDependencies": ["@biomejs/biome", "esbuild", "sharp"] + "trustedDependencies": [ + "@biomejs/biome", + "better-sqlite3", + "esbuild", + "sharp" + ] } diff --git a/reoserv.db b/reoserv.db new file mode 100644 index 0000000000000000000000000000000000000000..07d5345eb50b8a0dfe4646a5e6d434810ef4ce74 GIT binary patch literal 57344 zcmeI(%TMD*0LO7BJObenwv`&GNYzxRO`;7*2(?nXLTxBsHr=gXurC#XnPjE!qn| zFK*BOvheNP@AJmoT=LiCd$YgIeme6-q9k`=LjVB;5I|s@z~F-iiRF)%X9hnxeXG?n z`-i=*V|JZ-qp3>YRP}Y#r3@-|$n!YEp z!_nu1KyK5B#jW@nZrNqXjb^sLm`Ja$#|9~<@v?0O@awXCWVLR#Ec$D(uvOAU=H?EW z?6G)OE$$Yo2jZ!IkQe7Uv0pTvRBDE(R`!eA=L?DS#zt)L{*7}sdxy4l85)LaS{Q#; zwMQl^SFQxr-3udhe*02vl`31g!Q^}*{qSLI@YRhITg{7L5Lulce?r-t$=YViYRZ{1 z`yDwyt!^(LJZZ2ycP;+OTq3=?dTacK(+CcuDeH6N$KiI5PyMppJ3LmwKT0OjD=RZs zQ`dtB&Zf@uqF6O*g_1D5=?(OY+Fr4|BjhUmEUT7a_<9U4)6weP^p{9x)KvGD`DVsy zX1pWi2A|9%(z#qr4Y1v?ow~f5`=K?2K5Dl*rtLI3Ctl}poR4Ow)0JFIv${?5!ai-wFBtX4nbY&?_3&Wo z>*0EG@cHyGWX79?cEgd!moeLB!#2aU#I=yYJ?|B=+vvPQNI!bp>K+GEC+RF3la0oAhh_VwGGTjqOp zYC2t59yi}=y!CZen0_`f?f(CA;3ZYd!!}RP%eyua>PFG&OGIte=d3vvh z$5i81Pw~(({7m<`2E2F4Tj11Ns@wC1$$dW#wlq!quy36>R<9dwmkS}(;9d`%-f)Ke z!E_ z|BwD0lMn#}5I_I{1Q0*~0R#|000Hj*vjz}A009ILKmY**5I_I{1Q3Y60Qdi+KgT3Q z009ILKmY**5I_I{1Q0-g`~R!~1Q0*~0R#|0009ILKmY**qA%dy|Bt8s)>8k;2Q~x{ zKmY**5I_I{1Q0*~0R#|;fk0$@IA%Fk^2q1s}0tg_000Iag UfIx%<<|dY7=VsrwdfmzY0YF{+TmS$7 literal 0 HcmV?d00001 diff --git a/tailwind.config.js b/tailwind.config.ts similarity index 98% rename from tailwind.config.js rename to tailwind.config.ts index 04d3cb2..830d7f3 100644 --- a/tailwind.config.js +++ b/tailwind.config.ts @@ -1,6 +1,6 @@ +import type { Config } from 'tailwindcss'; const defaultTheme = require('tailwindcss/defaultTheme'); -/** @type {import('tailwindcss').Config} */ export default { // tailwind dark mode based on system preference but not if there's a light class on the html element darkMode: 'class', @@ -164,4 +164,4 @@ export default { require('@tailwindcss/aspect-ratio'), require('@tailwindcss/container-queries'), ], -}; +} satisfies Config; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..9d87dd3 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,32 @@ +{ + "include": [ + "**/*.ts", + "**/*.tsx", + "**/.server/**/*.ts", + "**/.server/**/*.tsx", + "**/.client/**/*.ts", + "**/.client/**/*.tsx" + ], + "compilerOptions": { + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "types": ["@remix-run/node", "vite/client"], + "isolatedModules": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "target": "ES2022", + "strict": true, + "allowJs": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "paths": { + "~/*": ["./app/*"] + }, + + // Vite takes care of building everything, not tsc. + "noEmit": true + } +} diff --git a/vite.config.js b/vite.config.ts similarity index 76% rename from vite.config.js rename to vite.config.ts index 83dee38..afc4189 100644 --- a/vite.config.js +++ b/vite.config.ts @@ -1,6 +1,13 @@ import { vitePlugin as remix } from '@remix-run/dev'; import { defineConfig } from 'vite'; import { imagetools } from 'vite-imagetools'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +declare module '@remix-run/node' { + interface Future { + v3_singleFetch: true; + } +} export default defineConfig({ plugins: [ @@ -19,5 +26,6 @@ export default defineConfig({ }); }, }), + tsconfigPaths(), ], }); From 8c2fa837e318860974eabf960954cee788756c7d Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Thu, 24 Oct 2024 20:51:03 -0600 Subject: [PATCH 02/75] update deps --- bun.lockb | Bin 329936 -> 330912 bytes package.json | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index ce55d23aba722ae2aaba8608c04c67a6baf80ee7..70f860ccb83b76433faeb8ad7fb1a549d82fdd30 100755 GIT binary patch delta 33238 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 Date: Thu, 24 Oct 2024 20:58:28 -0600 Subject: [PATCH 03/75] Minor fixes --- app/components/git-feed.tsx | 11 ++++++++++- app/routes/_index.tsx | 2 +- database/{connection.js => connection.ts} | 0 database/{seed.js => seed.ts} | 0 4 files changed, 11 insertions(+), 2 deletions(-) rename database/{connection.js => connection.ts} (100%) rename database/{seed.js => seed.ts} (100%) diff --git a/app/components/git-feed.tsx b/app/components/git-feed.tsx index 5105f77..dfe7129 100644 --- a/app/components/git-feed.tsx +++ b/app/components/git-feed.tsx @@ -1,6 +1,15 @@ import { Link } from '@remix-run/react'; -export function GitFeed({ commits }) { +type GitFeedProps = { + commits: Array<{ + id: string; + link: string; + content: string; + timestamp: string; + }>; +}; + +export function GitFeed({ commits }: GitFeedProps) { return (
  • diff --git a/app/routes/docs.$name.tsx b/app/routes/docs.$name.tsx index 7fa8238..cf3aaca 100644 --- a/app/routes/docs.$name.tsx +++ b/app/routes/docs.$name.tsx @@ -1,60 +1,51 @@ -import { - type HeadersFunction, - type LoaderFunctionArgs, - type MetaFunction, - redirect, -} from '@remix-run/node'; +import { invariant } from '@epic-web/invariant'; +import { type LoaderFunctionArgs, data, redirect } from '@remix-run/node'; import { NavLink, useLoaderData } from '@remix-run/react'; import { getDocsPage } from '../.server/get-docs-page'; import { ProseContainer } from '../components/prose-container'; -export const headers: HeadersFunction = ({ loaderHeaders }) => ({ - 'Cache-Control': loaderHeaders.get('Cache-Control') ?? '', - ETag: loaderHeaders.get('ETag') ?? '', -}); - -export const meta: MetaFunction = ({ data }) => { - return [ - { title: `${data.page.title} | Docs | REOSERV` }, - { name: 'description', value: data.page.description }, - ]; -}; - export async function loader({ params }: LoaderFunctionArgs) { try { + invariant(params.name, 'name is required'); const page = await getDocsPage(params.name); - return new Response(JSON.stringify({ page }), { - headers: { - 'Content-Type': 'application/json', - 'Cache-Control': 'max-age=3600, public', - ETag: page.etag, + return data( + { page }, + { + headers: { + 'Cache-Control': 'max-age=3600, public', + ETag: page.etag, + }, }, - }); + ); } catch (e) { console.error('There was an error getting the page', e); return redirect('/404'); } } -const LIST = [ - { type: 'header', title: 'Getting Started' }, - { type: 'item', title: 'Installation', link: '/docs/installation' }, - { type: 'item', title: 'Database', link: '/docs/database' }, - { type: 'item', title: 'Configuration', link: '/docs/configuration' }, - { type: 'header', title: 'Data' }, - { type: 'item', title: 'Arenas', link: '/docs/arenas' }, - { type: 'item', title: 'Commands', link: '/docs/commands' }, +const DOCS_NAV_LINKS = [ + { + section: 'Getting Started', + items: [ + { title: 'Installation', link: '/docs/installation' }, + { title: 'Database', link: '/docs/database' }, + { title: 'Configuration', link: '/docs/configuration' }, + ], + }, { - type: 'item', - title: 'Packet Rate Limits', - link: '/docs/packet-rate-limits', + section: 'Data', + items: [ + { title: 'Arenas', link: '/docs/arenas' }, + { title: 'Commands', link: '/docs/commands' }, + { title: 'Packet Rate Limits', link: '/docs/packet-rate-limits' }, + { title: 'Formulas', link: '/docs/formulas' }, + { title: 'Pub files', link: '/docs/pubs' }, + { title: 'Maps', link: '/docs/maps' }, + { title: 'Quests', link: '/docs/quests' }, + { title: 'News', link: '/docs/news' }, + ], }, - { type: 'item', title: 'Formulas', link: '/docs/formulas' }, - { type: 'item', title: 'Pub files', link: '/docs/pubs' }, - { type: 'item', title: 'Maps', link: '/docs/maps' }, - { type: 'item', title: 'Quests', link: '/docs/quests' }, - { type: 'item', title: 'News', link: '/docs/news' }, -]; +] as const; function ListHeader({ title }: { title: string }) { return ( @@ -86,31 +77,37 @@ function ListItem({ title, link }: { title: string; link: string }) { export default function Docs() { const { page } = useLoaderData(); - const { title, content } = page; + const { title, content, description } = page; return ( -
    -
    -
      - {LIST.map(({ type, title, link }) => - type === 'header' ? ( - - ) : ( - - ), - )} -
    -
    -
    - -

    {title}

    -
    - + <> + {title} | Docs | REOSERV + + +
    +
    +
      + {DOCS_NAV_LINKS.map(({ section, items }) => ( + <> + + {items.map(({ title, link }) => ( + + ))} + + ))} +
    +
    +
    + +

    {title}

    +
    + +
    -
    + ); } diff --git a/app/routes/news.$name.tsx b/app/routes/news.$name.tsx index 976f287..2af39a1 100644 --- a/app/routes/news.$name.tsx +++ b/app/routes/news.$name.tsx @@ -1,43 +1,25 @@ -import { - type HeadersFunction, - type LoaderFunctionArgs, - type MetaFunction, - redirect, -} from '@remix-run/node'; +import { invariant } from '@epic-web/invariant'; +import { type LoaderFunctionArgs, data, redirect } from '@remix-run/node'; import { useLoaderData } from '@remix-run/react'; import { getNewsArticle } from '../.server/get-news-article'; import { ProseContainer } from '../components/prose-container'; -export const headers: HeadersFunction = ({ loaderHeaders }) => ({ - 'Cache-Control': loaderHeaders.get('Cache-Control') ?? '', - ETag: loaderHeaders.get('ETag') ?? '', -}); - -export const meta: MetaFunction = ({ params, data }) => { - const parts = params.name?.split('-') ?? []; - parts.splice(0, 3); // remove date - const title = parts - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) - .join(' '); - return [ - { title: `${title} | REOSERV` }, - { name: 'description', value: data.article.description }, - ]; -}; - export async function loader({ request, params }: LoaderFunctionArgs) { try { + invariant(params.name, 'name is required'); const article = await getNewsArticle(params.name, request); - return new Response(JSON.stringify({ article }), { - headers: { - 'Content-Type': 'application/json', - 'Cache-Control': 'max-age=3600, public', - ETag: article.etag, + return data( + { article }, + { + headers: { + 'Cache-Control': 'max-age=3600, public', + ETag: article.etag, + }, }, - }); + ); } catch (e) { console.error('There was an error getting the article', e); - return redirect('/404'); + throw redirect('/404'); } } @@ -47,16 +29,21 @@ export default function Article() { } = useLoaderData(); return ( - -
    - {date} -

    {title}

    -

    {description}

    -
    -
    - + <> + {title} | REOSERV + + + +
    + {date} +

    {title}

    +

    {description}

    +
    +
    + + ); } diff --git a/bun.lockb b/bun.lockb index 04dec0452267f483c5ac7b403eb0d9bbc9c5550d..192db05042057567970910c1cd6329c7a396e7f0 100755 GIT binary patch delta 55627 zcmeFadz?*W|Np-avzg_P^I?q1u_A^XXEbKEQ-zXa7$SqgU<@&F(68oExp*RJTSrrOQ+-RePgN zVb-+iIn(L3wbou?Ll;?YaJpZET=$xAqoVPR{Cq~hs#k7KZg%qcv4I%{DpeqGabrLK z&9LgR4p#XmWfkOIJ`MjSzC9jRc}K!3&HaQEFSC5Gsoze+oB3mAH#SYyw0L6Pbguz= z;i0iGi(;xErOo{W-gdjk)ysVG3|}3Wmp3Jc%FWKoFAQ+KN#`k>gJ=5LUp^^ELp_jF zkUfWBf!1gFbK?}OVo%SSIVpKccHv9JQ*mE*H^kNJ^AwgUx3i_+X@zI|m7bZEpFDwv zIDxG)4R7VAwgp!B^_DM!)k#seMxh$g`$y48a&mJDW+mPtMLN8aJt7SHGr(cra*+H)Cr(tcI<2{EdW^(YH2XLq@f* z=UGmGRlryc_h$I%#injm{M7=pXvlFi{X8nF@H60AZgRy|MaR4QMJkw-l|P-LcJ0N8 zCPYKHF?_OTAi%sT{uEYQZ?n7#)d%ie1A*r7v#|R69$5O7a5Fd)ZVI0ZYaAq6 zJ~`YE_X#ZhMOYa<z^;zH6;^jX zYMFg0Z|dyqfJ>h!^@Xtd=}K7P+FE;h&V)h+Z6Fa_?Z48GUsQZ2j>-r(S0KrG{|$$kwdWEISuK}qwoXBDW>O{e%RauC)GZA*J-X&7k3v(iq<8K0H^JGwIN zm+Mc1{Oqjp<8$(-XH6^2&EiZ{Fl$_XRzY^)p=o{#OwY;Bn(5|Nu3R)f&u@a6ld`8N z$7$9sgjMA`iBSXg+J%z!p?DhWU10Ue@35M%jpgO}wu&s`)3XW+&Old{2h&U{`D$1t zZRqPo#ocH633Y^(Ve%|LLI75q?yFkQY=6*=U1`z z^?vMlSb07~S;P(J`{76@Yiic`>}uF*%HIj6@qW_A|I()SKJn!L2DWD7({LSlIZVDq z#aH6cbRGw*lIOvv!)L>4no4kE_=mZEK}%tUdl^#RL4Z)#pXlkRrx2IxhwCU_34 zL9}s^-$?zf|G99Tz+g`PR)~j{@Q=3D55O9AJ7CrP39BatefziD{89EDtUbbweIi%VU4>Ep-^ng{3&akSn)<*o@Ev(k4$%(rHfiqB_xZ5xM8dyVV z1*~E$bT?OP+j1|V8eu)Q%r9(kMIg`wdnv5Gnh&dR%iS8)>lGci*AIQgeSXi5h8yBr zfmAdtAI851{Mr3}9zD=i!cRzDL*-RiCH;PtKLRHED|X;6;wiqChpedufnC@d0b5|@ zz6hp?-G{2zC~AXS&GH;+EAN8UfdHq~;vsM&xEov>Zf&{C!+z(V1uLyOmd~NN)NNP6 z>W(VtYL|bk@yk3udpz?h5cm#TWp74$_!kwA%VLw^%9}OQ3o$`AKJ0_L*85HPqUGty zQ}f1U&CG^5kIoFd_=xZS|8L(f`fqRi|Kt1q)V%Ro1x1rMxy;sGXCScWDZe{o^Xx&o zMDy(Drvrf&@GTqtZhi+_3&EqC0)h7M_3+tnqi0y@;1inz0d7c&C!%Z6?ZZ~r-eS|6 z18btMdzP+HfWd8(qWCp z9fX%1+jO48*2KN;ML%BbCMh3Vqx+_p{Pn63W<-rBo{U2YEPmPdn4X_Ej?SMrmI%u5 z5?DhhKYONk8@h;@vBKCa z|Df-_>JRwXQ-RoH13fNKFHFdqHI?xj;0A!*I}n&lcr{C#H+=qgk0o~DuhzeGm$#l3 z6(7Q(Vzz?Y!J7%7_KrPnco17NXeq22)q!fMIi7#pZ^t#TGERdl!FRx#-813F@FlQj z?s;%^xDBl4>hZ3cgT1x6O|XvT<18b}X!Lvjl>Hi85#Diwb?Ozx?mA<4n{glb#my<&oZ)M$Y>Z}sG?;QT2pV}L+dLf-~m0=y{uE?1l=zy)_H-}Zd=~+|qXx_jU za#y&MrCv40dc*W|gu@7R;Mo1Z3T%y^_hGfyi0fmVL(C){hF@4pCJ?feV2I&|76 z{xLb*JyEA^(W{^O>)jg6OQ-= z9|WtKH{h=f=E7>{wO{$^Uj4OSfRnJA^`>u>F6&?s4n-J`M+3MItc**K`s3;>?55bK z!>ruJ%SlkfCi^>oJnx1T?Y4}QPggst=oRKVsq7X0WJ;6X-! zA}oiM(e$kRg6!nnf;-$D^%^;aKl`Dkxj)ov6g=V9s9!JV$S?j--wRhG#(-n~7%H*6 z6WuEkTp9n3uyUB5oSQYBG57j$Ki=6V{5EX_D_lWAevZZ@Phv!YZSLawDed0>-5*ff zVfDbXuo~_$%dyk zRvF@8rLx4$OlW)V#!%23K6k^3sMo;>@Dx~sda&iLu!h~4u!eK>&=W5vJY6CFsVT>L z9?SnV?TI;!KdTu$>SlI`Miz$xfkE!54r!5txVp*}Y~&_%j0VTLnS9>mmUN6pz6u8d zLp;BJZbGMM&~-CAMI*1o1p?WCfSF zC7q+e@7z*8FK`o5ltU(;U%MqKQRn`6e^;yErE>tQhaWQ~#p%v)80%RpJEu7JWA(<0 zxLBd;mE66l8O|iyN)akZbRNdKI2Ob?j@1<_?CwuZaXQkvqp?C>$oH@Ym04%f17%id zP8D}==M3i%;()Rs9qD@2FzD_lqe<2Zd8NJ^tH0;Bl2U(-)dkC|eWW>^e384nb6R9N zt^sm6FW?&DrL4BA%@Fq6PQ~nvm4RQxZE{g+eGFBZ_3odp`Rz8tCRFA%YlXZvJgsJ|a9I;m-I8e3 zxf-RlpMu&S>zp#{ORP>%N-cjemhOr*V>XzbMj-^~ksZ)ycD3((4#(eOIThb@$ zv}8NdaPwL{ILb}v8+DeW`T48$K5|R?MuW}WQhW+e_p87_kES@AvHUtT>7C;IfYqLq z!tx6?b4xFbI(d!!l;|7Ue7&1_Q8f6KTf%1(xAdZDWJF`qb4T?`3%=%N_KSw9G;x>p z%W(48LsclUxg|9oL;Xt~$n$e7zie3_r^YvpH4R9si^UWx|yS+ zkuT5&xT8j=IakpsLy76Hi0@!&ePT!s^47V_qRyo(sA;isItEK!LA{2hI3HrEji|$r z6sHyqtUmT@bb(tkCK|a7t-HH?Oj=|&F1G&BX~C$QnH7zkNKs4gd%bHsWz}5qHqA&O zR&Q@`y@N}IiFg}9LpHbzu>9Tda;yPf94$JpVfFJ;uQp*Etdol=5lxuxTyk!-3m#7*j-=DdsRQZK05tgTy;9gWOP4+I9g z`+B5BUc=Q*i?dUaM(-KR*y&r|3NCU>Cq#pvy9pDcPLpWaio(pe49o9V#-j5OmRgjO zu%>POLbs19Khi3?vHRkom@9FC+ggbrYbX@ zUQLbfQD(f88tmaVn4IB^Chdt{^4b($!5UX)wP0pvm01h1E{j=_!?N5_H*}3B`B5?1 zS%oz+W<^fPa+CU|MMltb!`-CGX_3cq(Z;wc&;)}#*Kk||JlEmAP6oLVRrwuJb+LUAQvb<$cmZl`nKhZ9 zb-LJXke}f!r=!$6%t=Pr`))~o)M?h=Pnbd6GbNIZ)zuqEkK)qIp(k@vg5SC&1<}ZN z16A+k1!g$Euh>J-?j8kQ<3x>qBTgzM@mbn^T67!u{ z=6bZubqv?}epy&7eAjhlt{r8rYQtz(FWlfVmnn07ROV_lT;cXz-qkHBj7AoX@W#ni zUE^?My2}gGBHbB9BR$vMxCVQ!?{JOsTo*Anb3E5mxUxJ~T}GkrTYzh#r|rd+?YW|( zHC~nSJ!P(wxcnF+7}&n=W?X&=YK{p6hAD3u z{tC*uF-o6eb@Z065?q?A>>p33#$#yIcn24!36qS~UqgefaUd4+l<~Ea<@$Ck4NbNd ztPilX!B*4O66!VHT~?goJU*U>M2P<3qJFkUkqR^<+Z}ODhEpP;%=>+;bKK=mbd4v9 zmdrRM9JvIGp5i8<1Q)Y~-TXtj2vNa1hu2|U=Ru9jM ztufSalG|WjhBJJUUt!LHeNrN~W3j7tOmp7GrF1IlB<(cF@hj`EXA`m1NceS5iLAt8 zI`&VC?33>9qlEP)mo?+`6lVsOW(_BX^HV|(Om;^^Ga?5OquOdiou;@AZs2}xN^IxX z5_b=l8kD9Vm*RYf#UiSfq_H!m`V$>1FU6UM#nP-A_f2tL!m?{^@05s>>y2MZG#VGn z4WT#?I;*kDLOGxPX?05pMW?xY7iKtHrtyslB5=aXPI0Q_l{Ip&lu(a6ciD{@k;RA^ z?x@~r&PUcetX6btO!xbT@{w16EHyg|(J!fS7)jn&oNmzw4rkc;HJArLuzwzswB zrA3Ny4fTfQ2e>pW_Aylu)}X++~R7 z3V#^*^Lsy*n#fz`L+!70N8FL&jJuMPpC6BHWU;k4oig&?!b-)D=(K*ttNcMh>-S1= z24k^It1qwy6#2IqSQ>9w8o%uCbn}l`=lH2GJGvD6Y5LWifn}Td`qX#~wHkvqBPH^i z0=lERca6U$Rth!Wd@MhPa(WR-=KV6il=wSW1lH#X)_So4G9NRG7z8dp{Af8-wLH2u&Ax9?M_8 znqKc0iehk(n&6h)73FrY^sZ>6{d^rdbYQy`m*3D7C-NFrPj~r{v{0oR+`V^aI3sU} z4KCHB1j}ahc4|CE56a*@3v${n2n5EImFQM14GC{-JNvQx(o#MrZDAn5+F|`3!Wv#? zox&PlW{tbie_TXoc1exLm{jJ~@}^jlD`|l1u>3@t&@&%l`I%>BrpDhK^CDpIdbe~% z)Y*)7X<1Tr7Wvy!Men)UI4oO5lG=u)F8BRTV*ME}^OjgPD#BVU-%kUt;;peIc z`ZLWZuzLGx(i*>GX|H3M!RmTjEF`@VT;V3HiaO3>f9`n4*hqgYmcpF0;N5QNs%YdV zYz_{q(wvmr{Yk=<>6Q}AbxR(II;+vtyLH`_y;FkUxCswNon$u@z(QUY0i9HN{4C8hPe-`pJ!!dr9?(7V{+*>A=Kt>ckkMa z$h&vbc;0a|VL8p??V0^?X$I1ujACneE0ePmt36)c1BBooZsz)^)8?MoGPRNwFdM4_ zAy{88N(nA?6CQ~M-*ht{iH3UL>n?jFBhqvQL)ablNLu7+T%$c#?UgFU@<-B~5xA5$ zjZfk4!0L>}HiY#$R!1xjI-C&xz#5}Ck-P8XbmOHHx}Q<+xh}=U;w@iXoLfly2ri|~ z;>_~iY!%Z}dhiN2;qhqXY3y^o^eR8V;8a{^DlS#myWfx8gXN_e{KUwjI z3U?{iMTEs7_0?D`GNk^6oB1T?_=n1#qU3Rw!eXm>tZN*O{_ZFqvn*T9$&=``Gtp0B zjdAxq(lu_4?sPcG1Rr%1o{mNaKCA)AO@p%(m-6#A?8qTm>c>#VTDQTI(fGCg<6ioZ z!So51t$Cl6Q2ll8-i;Z~n02wk(8|n|;6rZarfB3S8snpPTIj6x?%qv2YFzL40O@eT zx!GF&)YyZijnHdPr|u)Z;hEK+P$KqmbA>RkfTwj&B+B{`_gZXaB3(?4G>~q{ChSecln!nzP zi(DTJugS=tba3kOE@`mslT;70;1UJQo`hHyVJ>Q9&`S!2py6~Am;0n+6 z3a)9MtHYMqBwLKjpB!J~;;$=Aj`U|)PrZHabzI}U;nd{Y)cCFb#^RkDBTKP(dcoOs z4=(kicMx<=d#-HbWobMgi`xc5&Bmn#+&}DBe%}8Bi8qIwT&yAZdE+9o4{MB@#3_ID z3;t%|J<GnwQt+$fJqrC1OO^E+ zI@JC(ciGMiXXnVCC8qY+Yc0Q(PuuR-mIn|yDUohiW4(K+`*5jjY=Hw( zB8RXTkUWa0y+gxF$DJ#1Y1{FZA?J0hL1k9M*Zob~zxSDmr55#0_0EG>Dh(CwpAy-N z#UJK)eEo*s-QLmHIfB)jK;C)FX}8l)&U;D{S%}rc-PbeCc>~v&vP`eqG5VDaAR4homeWiH#kBK-*T6|!`k(he{k{twzdkZmls5Rc^K<_EPu6n{cV5k zqL`et<9GXo_SdybvAPn{o1V^6EVYO~3ctddgvA{d2hl%7XsIN{Sn3<^k(2W{mQrPB;&DX%540?)uP?==M)P}c9hT-cd9w^1!0P5E_3Rq= zA+np4ndW5SI;Sl7Vyttq7;ro+{}9U-hRW94Q@%Mb!75AGxd}_n>1E@*hNYr0YzCx+ zs+PJ9KFV;?OZ^D`zS?lF->Tk`BXTX)c<+?*1updj_vMVZ)Q>cLcwP{>0#{G(8RAx4 zJP)I$l|S}J0yAexYP>ZVg-lQkzW^&aSPk3fhx3k3kq5B&V`!hWNYziY0ON8NT<)ht*HMuO2pRtCPS$z-s>y|&KdmoBTFD1De>(6*K zKacq-^L(s7Q`!Dc*6CmPtGbtFu-Gj<7!AJUCLD?ekGYwLqE6c{V|iwAXSopT&yiM& zrApDioa#~z`-`!^s@#la2MZ1LB34gA`s;7xh<}u=qP0146&7nuG%fNrF3w0ty2gK1 z{$3#qtE-<4WAbIJ5nhw9Fh(l@zU`54B)*4{GxIp$U};#evQhaa-}%$npJtb1U4$RQb^w2e$5P+3 z&Oe?S|9xz}YbSckT3)nBtskh2yZo)L@i2;le)HV27%K&>AT!^JCXkuo_Myz&NY|Pw<9mZ;dOtH>bo$#yfHn};)nS!O#`K^2y>ta7i%G&uK-u_5d zb8x9E{d2=6Yf)IzJC3EI)6Fc3olk1e=$TnQu5-P#7#fjvSe?D8a{!m$>ka;hwT%80 zI|8d0;r)j&_h6}Ve#d-(r6%C%%lRqJ1*iO}?H%SFgQa->>i!XyO3GN@l;R`?g0|lEcBkC7$bATmwDVySVy$uBLG@*9=_!JncDL7s?fKB5s3|=N6qA@V>Abr~tPH zAwZ=)X6dGY-l*X7pE-<8XM6s1tapi(P8z5Tn6cg^R=SLG?<&Vd|0?KPXL<_kMHp=P z5?BQp3Y2jsP=X_Y^h+&|f^~@%ZVb>h#{2YH@y1$vY`~rTM@@I;AN9@0^@7z~O3nsK zbAk*mvEodU!6lBkyZ)$Wn%583FH+Fy(z*T<$KgNI3+1ztoNaBf(z)E)V)++ZTP*)8 ztSxQ?O85@9=dsLs{O_;|bPuQs*4p@DWwZ`Nzy_e}-?QI;{~^GCl|Ud+kszD=V1LO~ z@Ov4kV6WJ4VpU*=Jaz2=p(S&J^)xgBJAs08i1vc*hINTmuMdFyKLon|6D$13pn^$m zK=O+AIneMr4Af8TxZd?wEdOt;|6j4vV~-7l&8T3oUY1ODFz+hQYNQiD{=a#?|IEsU zB~jmA48#*i;T%5HNL69gq9zb*bfLu)OZl$G@{ zKKuFqk7iht3hc2J_%GRO|Nor`|J{Vkg_EaCH zu=?;18@@bCI>m?QrAWH|0~4-IAV>g32-$#QIpeG?ma~FB%&x|)feP+e@4sSA>(i{i zSmCR|l4@AHrVK8zoVBf9$Li%-%U6>1KRsl}EDkT>MzG>E;X`YE3mN~yYOq%5DoAU~ z$u`_yaRtJ4u>N8>J6XF^h%qa7iWSPUGSDj#;x5)-EN7av#mb;Ntb+A|75+TyFP7fh z+T~f{`V`p!7r_$x*??k2)Nh>V`cJHIgKapmoR?Vpzv80u0hG{iA~u3Aw+R)((yxNm zCD*~a#2On5U=@6!)x`>bv(*<_T`c`JYg;b*CqaI<+W=xE?81_kSY0fq;X?^7gEi^y zk@znx{XQG+0qg(IO#hb`l;COtD&sY<;;gm29+v-O)_&abla`;hyvg!2u+rHAE8cUk z3iP7oSK&ZoAcx%B`B0PYf)(Lyv6atD$mN`LUeguZ2iRwKgimD#fmqi3IVF&7zam8 z@|m_ra%{Zvtn_lNE>`?JSUoZumRF%ZEUN*o##VibV1>WN`j=-(^Q;a}_5#kgf>;q3 zSo^P7cQ{M%S4MZ*@JnrYu?`ojtX-ai=4jPmz3%u19<<(KCG(KA#j3|TYnNvg>k;WD z`83;X8*DJK_R-g@{r`X&NdLnbs(w3c1;lEX*J14nZ^If7@4*W9LAa;y@v#*?fwdui zVeP}P5;$U6Z#*f1Z>|6LvdyAu_N@6Urmpg=ady(`Vnq+~q5Q*^BNDmFv-~TfEBkos zFIMrYTfK(mnsIhTsA~g?6|o*HDbebG#mXqj`j=-(P54j+T3G*o&wfXG0Ts42A1XjH ztPI-P1jKT7uy%P?xK8Mb*V+1u)p%WC)x5j4d%+5SKCJK;)W*TTz=c-0NQRkvHZw*3 z{V^4Opk&K>q%*?WV)VL&b_eyoJ$~TvQ3VV%>AXb2R)-KOV_*EB-R8-(~r3>o3+q zyEcvvR>XBSz zPhhpgXO<7Z)v%O@=dDXskDU{xrh(p#2Y0b5dKtBa)DFJY@J(P9xEZW)tzZqkj@IsK{WD-?6t&z9u7uqeCf?}4Am0(tkIgCI zNSJ?tF?^`$r^3o;8mx?F%ky7Y{&TEep2KEWaGlAUY4{}ZcT#Wq}dR`SL%U)^2-*3bJCw9#G zI>CCTVcTGJZ@F4;1PZTZ!0YOd27EAVK&QS zn@vEh058Gnxi_r-f664GpL_72#%c|e{-00K?QHfQCgD+@)wllxkI+fwpC7HO#RdWu zWbhE{_#b_Q?vDDS(ce$a|9)!D*y8%Dr{|hie?K*+5&nK^P9yyN)SO26`>8pNQ2wdB zy_5N$d_4d6Q*)hmyq*8QV8Z?V)I3>7B(CzTV_XNTi{9hHkTXWWZX|>LrcC6-#P>1J_Rk-o%-EZ7;=)fB{c5j^Y z0*w$1{83F`8vD=`76ylz7FPtTntg@A3xlPmU9N&YGmAz0%@NT7(|s;<(3FS{nIA--n?6@VUznAmFU<+jVKcA@I%3v{ zzB0jL=xdWH`o?S!9W~B1(6=T_^qtu(`rg#I7W%>DK&Jk66mHkG6z(UJa2>*S33IPQ z_{HpyFlQb@@;roNrf?oYi|Y~gNjPCzUXQRx!lLUDemA8O7R*OTpO0|TESyhff0+HE zQ>M!ecptt2@8vh(9W+NIEM0)mZvjHslq^8#y%6D~gox?0keC(BN>N2~LKJTX-UvBn zji{0d-UL-PnW8FYgQ%);ZiY@XS)yuYv#7eMu?VVRazr)FHc>5;a0^u1%n;QvJ4AI& zlUt#BrchMh>=q@MmbXC-%r&A!Qwo^{i^(f}F-1)>3m2oGZuW~BnJ%|Ojm=_F6LUn= z)O2^DW~Kx(z3)&hU80_0`rLtjrdcUE%bXCkFawuBEzKIy*(P`=)XHQ+Cf*Qr>zzbR zHjY8qBq7%zv^AS0Oj?SNv=pJ8$ytg}zXV~IgbpU51Yx^`xg`jl%nk{2mLViBLr5`& z%Me=Jg|JUT7t``Cggp`#-Gz{5N+m3~8zKE}gmkm;ZiLk32uCGEO_${ehb1guj?mp4 zk+Ae0gnsuR^fV>+AoRW$;iQD~OrLuZj!Rg7FTw@pgoM>A5Js&)=wsHbKp4Ifq3TM6 z3r*%qg!uaqwo2${ocjo+EO-bZ{UL-=X5m8!sjCr= zO1R8)S&eX5!t&J!S>}j@rE3uStw9)PO4cCsei-4TglyC2VT9un)<29e(VUR5dM(1J zwFo(8&02)v>kz80LzrSR*CE8ON7yPM*Es7DHc7}`kC10JOPKTsLee7$Gfd7S2=yOD z*d?LBBs_|+UBcW)5oVbk66QRHko*|J<)-j4gcchR_DLu-EjJ+Sk+5h3!j+~}!h**U z(jP~dYZg9^kop9|Q3*w+%M%EPB`kje;Tm&9!qO)Z`aOwoohf+|q4!e=Cna2O_+PVV z4+-m^Lb$=4kg)n`gi%i;EHrDLMi{;kq3TA2n@r|Lg!oMeTO}+q&L)IS5^^^o+-f#U zn6w!oX*0rNld~D2{xb->B)BHw8HDW;=01b4#O#nTXA45|76fAow;;557Ga-+64UZo zggp`#J&SOcDV4BbD?<8Kgym-8R)o~&5ROW?*K~Of;jo0|&mpWdMT>#HZ5O6*dt-lYY1CRse}dF5z@CKY&8qFBc$#?I4a?J(`5(3VF}B3 zAZ#;7BrJU$q2KEWFPW0p5qiIYa8kl6rq3G)$0e+P1K~AuLc;2u2%~l)>@aI~A`IV! zP<0o=8zyrXLj0QuTP5r=&YK9EB;>w{@Rr#uVbWU&NpB(SHaTx0)PEacmxOms!rKVj zCCq&r;eE41!kpa*$-5CgG=;knTD*g>PeQ3_`3}M!35(uA_{fw>Snw`F`nw4G%))mO zQr|;3D&bSpqij}UfA_{k)Egs@%0+>a1`F*_v8`4}PjV}xU-@MDA)`w;d?IAL1uL)ar>(LRLV zO{s(hpCF`vf^gC-`~)HOQ-q@uPMI#BA{>^m{8NOWIU-@{X9)d1LkOFa&k%a=M>r`V zV*2byI4)uReuRqVgoM=x5Jnw9aLk$m2*VE|R6U4L*<>C>h(Cm|RYFzc975Q1h_l7C zL&3f}TS%DnIbKPh6QYL6`5dAC7YMr~)G`TQAZ(W~_X~tNW`~41Um_%biBQiJeu>cH zFv30w38v*?ggp`#9Y#nrr4kk#K}bJ>kYpAfK}h`y;i!a0rps3x5IAs%nwTSyS^72J z{l3P#nJM`iy}9{8bcX5k4a9*%be1_G;=pkfYH8MpIB9YG-mp?aek(2b1sv)X~fkbuv3dolTP;p%haHnHE1$xP3oTxGtvUPY8P? zEcyu{&6G-5@H0aC&j{&e;m-)EzaSiy5H($XK{za7`7a3F%@GMpe?{o`D?(3G@+(5` zV+bcDoM-wRLpUyB{V{|K%n1prk0Xpaj?l-fIgT*=1VYsl2p5{n6A1CYA#9b<&p5v! zY?6@s8$y4xS;C~>5t4pK7-({SN2vb~gk2H_n}mNLY?mT>tnwEbc?2)kO4}_7XRKkK&2s4zl~SrbMW9*0mh z4q=MPj6;ZzAZ(S8Yn%weCJDI_ggmoZ!lViaNfi)gn4Ag-^(!Lml2Bk0Dk5x`Ft;MY zEVDzxoOp!fc!bMMVLU<$2VtLtLetVg*dt+)gK(uOm9U@^LV6{Hxn^M{gw)CiM2(m6 zn}u}{QtKidm2j`=QWxQ{gynS+R+=Lcmexb)R}bNSQ&JD1cYTDD5*{#p>LVPNu)aRR zL*|5p)d>ir5)jsyH3Su|Hc7}$M0nI}mN2OyLQ+G7 z4JM}{Lj5F!T@s!!2}uasCCp7ic*^XMFz0lHzs9F_2?>CzhEu!QBU5%!xS5|$<- z^h-uKXiAb1dbdG1DdBU|rwzh!3G3S+d}&TdSlt$3R9l22W=&g!;pZS!JqO`ylX(t8 zd^?1#5{??D9l|CFx$O|XGn*w$YLAfA9^nU*(;lII2ZUV`eliIi5VlL0+X3MhvqQq1 zjtI#e5ssO{jtDI}A?%ZI!nEv!ut&n8P6)r7QV9z>BcyjmIB6DkM&M_1X%7jfOqUdd z!xEOKAOy`32}`xw_De+wo03$7-dzw*N{E;~tiR^Cg!NqzDw-1#R-cP7>RbfJtT`89 zcp5_0G=$0~GYuiWE5cR@RgKdXVUvX1t_ao4W(kwh5t7moYM7jKg!&l>yCl>y2^k36 zCCtr0sAG0Wm=i@vjv~}Eg;9hS-4OOkNH8tCA?%T`s2f6}DV4CGJ3@MQge0@DJ3?v? zgrgD~nJzsL4og_x1EGmIf}p1vJ)vf%M8wHLbcX5E3*uxUI?J38ak4lMYPoUEd7+}X z(B7Knk3pf^-2olq%nN-(@uAb|Y<#_MsC}er+FAa8dvhLK-2?}RHY!lW`#+L5b}tM) z8uTJvH7HaZoU-xcpwMe!w{eHs5}la^m}^O{x{Zf8>?O#x7q;H4&O zYUl~}WtzeDa>+L9b3;AZ?SIIn&^5C*UOg?;Iq2B`bg%d`vo((hUVSeJM^39lTc|FH zUfs*u{=kcTsayI>Ve|da(9Oy`_|C@k!qBa8!D}||nj0z#1)nzkibI!2y8dF*aQ%)M zb1ij$nV$)$qy+qWn5*U??hFP4JgFKSdUxZc*N4_DQ_}4!^={(-9rw1Drds20y1tk7 z$0`5987QTn)O>=jn62*93jw`-z^yTLxCs_d}Dc_6eHe>6>k8tbwACs-tQJO-Q}1Z} z4AdHNR@2wj<^o-@cL8gu{%Qg>QAHcDHtvN$SG>)HffHb?dROdyKoyAb>Roy_P#No0 z_#B|-)$4rH>Vw$p169%Z=l#D#H!9QKpt=p%0Qb!jxoTKVeYwbLHLcbVZLCt^ss*bR zlFZ7c;aWwfRYV|+HF=#u*o(>bFHS4q53ofORUz= zYR%E6>UADnNme`qcdiY1y4B7^yTodZtj5Y07;3e~R%@Yjtfm>Gj9Y>exOFwP+S#~& zz^x(KEKL3i*b4k;12(q-^|rubt7$wdTrwD;*5f+UYI>VswAIeCT3fVnR%>CkbI>MQ zt)9qYQwJMP@3h{Frg7TQYH7I7u@&iLwXSIGtk&6T z>1g9|Ye=Sq?QG7#INSD}mI+lp3L4pryI8Fon*KMnM)0{->yEpo4X5QqaeD|hy{=a4 ziPqC<=~nBd@wdu~8CE=xfDc$LYPIvx)>y5Z)hj$3_Y&dO|hGUGr*bP zEZ~4jpb7|q}nH^Iv?WH4U2;I+=YEN&`F^UVRRDE&fgx~iMAM2 zz^z}{Nd>cM_{rg({vxQi>9zaoE&FDmIXDYkL8K<2DbPtkyS#RF?c!B&uYgyY2hL&A zJ&f}Q%KSahyWiTE^T2p8fcyr5!9e@4-n~Buv;*xy6;KtN2E08P{*dx%E8YusgY7`u zrFO>wKs(|(upT_5Q_NBvCE#wb9NYs|fR*5Wpx-9B59qE-cUjugwTJ6lGA-bi;B26u zFscqtp&M`qm}F~>lL-c)Vu9ZfTzJ`umwB|wgSEVT_5Op&;YDM zD+YSQKOYo;G|&}v0*Rm@s0H+!1$96WgurLC*8y-4=%-O0Q3J2Sv5fL82Rbs$1;yZ6 z@B#H|1=j-l?WYpzvjhwRgF#d9Az?lO?}GP0U!Vim`9Nn99UF8^$N)M8bOZ4~JN@Jc z+w@=@Lx8sQ?w~c$OZa-Te>ZpsybJWk|7&0ecmwE{7#e^IAPgR*A`gJuNc=i*J(v$} z0Q!L{{UF;VU?>;{hJ%lFO!y4!2Nx5lKezzQpb!OMCYS}Z#UCJ(gWz-U1vmn}0{ZCz zz3u-Pnd?`O7J~64t{=%831;JWE7};`mjT^?9e}?DT~_k(GnuO(i@=>gXNsvHfk-;N z{Q!Of?Ff4rT4nHy$>|s#R`d$ea&QmG0eM8b4?GCueg!92bLl@C%WD2KR!`D5HMB=ymWc zxE#b&z&C6mRFGG!I|_FPE6H#L=uFs-K&#GB6D2AgRNn z4vXi5i+b?U2k4|I_cS8wXA(LC7dwlD21w~57Z$%0vXo7H%VrgLP z2cH5R*Yw+S`XRhG!5d%)*bdb3H-b~7vJh?ql0j>r9Zgg6!;L?54qp~&w-bkL z6!=o0$*T=q8~KIcJfJjt0v$x7AOmy;oq$d;nmTR4Ip9{(>HzD66Kf9nDUWphs$v?3 zGLvvF+y$h9DcD_M6{rX31r+82_ zNZq-Nz@be^OO$G&*3oLBOay7yfMSphwAyH884X5(v0xm~ij!sSDR3T`3bay81QP(+ zdB-IAPX@U~d`tr~z;tjGm<6r?1)vb)Xfwka8unoKbo(Io?tzZjy25bf!O>(zz+oFeYt^oIfMc`(j zB+GSi;1;Xh4KD*rK?%4G1i`J~b|76R1s5y^((VLHfOK)pZE)Y^{U|4n<=`F=0O=rB zr;${OyP)U;KHdXwSwWt=!Q0>+AUmeLZ`~hSeiQx#>;oTzk3busmeR8EnYE<} zjajv|RMmxR0Y@jQ0E@g%c<~6j=hL!!Gtk|7W6&M9?%q|qVMLDI!GDdWNA6S6G|Tmz z{!5@5e+P8TC3Wv;yBPOLG#z$s0Vi;8!f%m&;8KSW9pCZEu=Dm!S;OywRF;-ongM<$3RBs&X?0VBY0ApdJfP+>;lz7&iEvSaa-k^Ukv z4vYmwU>3*&*yNPfW!F{-I)he_C<6dwNSPn|S?cffev++`(!?=O(1nqDyfwj)ceV6rL z2D{j|TPTjwxEt)Y;gs%5Fa@Y1zEllA2fM-B;6bnxsOcU8uY)yUHFyB1TULSlftpZZ zWGkM|r!h!>6)4P^=sRGA+YVj>>p>0lqUwCC#dsLR`f45SSOO~GBS3w<0XznzDPi?< zY+R_nRXBCyqhKyjSH29i0BnVy1sYEq!4^Q6qQGVxitr5B1fB+psDzc6GHpTvPr*-u z$H5aoiNwMwjND3G>BV$~Q99DaFM$_<3bGBnp#G1Q=y`9IJ9FO4`wWrISavlJ+xB9#kNRuC0HehL?B{_+J>T-8oBehusc>w#KUkK1Fd zrh+N`Pu2e_X;nO9&Ho9uMzR8_3B^}|(+G12)}TB9_JhyBLF-n*9>o0xkoySyJ@^iM zYaw@t=UUMMmkw(yD=79TZj52k}pXtAZ*(Uro?g7UrSXgy)cGZMY85UpI7uOal6Y zknXA)!1@D`z80WA7Rg_%KNcw?rLBiajX>ywfjy zCSHM!$NGi4huYO*M|o<>v7X2Be@zRip58T&Ol#uPcipKqM_L@M5(@ig%3Sh{KGG;AD$n#@&rEZ+O_G_=A6JwW;s!V zZ<>t*!X5a|;MW7fck!y>4Fj?3$Bi=p1_ATsDLNdU~(6o;bGp*qvWqu|*B$hgfa4kV5cTvz~Clcg$-; zXsPk$cUf1N=tq#BZ(?e^x49HQdFS9IFF(DrEopT0GwEfp!e>QwtVr=Wc`XJHg_1P1n79} zZB5eN+IHr@28bo}HQ|)d#I*QFugbf=3*kEZ*&jD=(PIB~I6p%hE_k~cIE+{in<=8_ z&AsL5ZL@ipR|Rhr_zh$l4-Yq})sGQNL5c?*d~nJgV;>zF;x&PO!@b-m4iBd_{1yL7 z_`fu?Z`^JXr zjig2lZWTDpkdjZ6kJ^qtYjl$@L%~jMn8Nt1Fc)4*7Hi3Z^GI>xn4cEU8(DV%Wl+%> z`WsCV0Xn^815`NNWM{uhRW^75yd>VTK6hQ!I`a8T$M&mq?K-z<&#q^7Dec1qP_tB? zJ+bKhPycA8IY$uc_p1p~{7@V}jyft_Ke2W_f0kXmclK}7ra#BzR2eim&oKQ7*y-O_ znq{xh+uW(#c;{HGR6{P!*Pl4*8Xcw*2mp;>hqQ@Fo*{xT-df5^(~4TiIUHrEcr&OFmH8^%(g`^~`d&^mKewAq|0 zCthss8izR2^b?IYQ)aM&6_2C()@QeAl8ui|!-_VkgC>a-6MHrD7rFNvzVPwjCtqIW z6`-94(_h6h_lyrWNE}X_`V5l$PFuQp)}k%lY@r!NHbXy)#C23oYsWW_rmw91)Fmx! z+6)&qeYy7Y!P6cusjYF<#T)(qrY$>k47_Nzs+tGQhuO^7 z)~50VX6z}GIU&q#m!1Fqyssa8*;JbtZWXH0(sZ2|ZXDccMolDYb5m_5yBEW}tywG~ z!>pZ1S_93evMw_xCNjYCOxC1uhlYh``+e51*-vk-YBzKe)jFpQi=w8kd2CX+y&tWv zIWdXBe8SYrA*HCOm#Nn;{ z{qK#Vk>TCXe7-aJbYP7jA7hqJj-}Zl__K*j33upJv8~_QI}bKY84|v*hV2!Cufj)@ zddol7)`)goHPK6m>B?XKOzsrgD%ory1zxlNZVE%<4mwEd%cbtn;;$|nwI>v0g-B8G z6{cz~MO|mor$Wz~?y`278B@d8Bz9)VXbC>_%`**NXnb+h>E~CbC_X|}`F=M8M>vxJ{RjN)N zcRkx`V@BbIbGW7_7? zA`cT;1OEH=hc?Yh>A8c*oT$_yFPb!k^U9o%_#xqxebZ3Wb8mY*P6q;eV))W*$fHu* zQvFr4`nxR}>@fr9Uqj{&eLTe5vTv;=Em!i4^GC%lxm#t~;)(WBGIM0b5j1!GQM))|gl*!o?O8 zG3rmHh`mI8L@>dESYlKVE)u&as9}^QC{4v)Kv59XSkMUeuGkfOp1ttP4E85oOU#Gpb1Ay6LOnF4K(Cx>~^RcJ51guBdA zQcVwMAd7%CA(KX>gnWKOs6GJz3oDf^M_7j3^VkT0BQh0OMH5eMR4;;JXIfTE$LfQ^ z&LHTTh^}fUFS58KS!+9b@t9B;?p-?mYVL3VS>6T~y}anbZ&Gu0KQFSLDm~Fn^X4pL z9EL=Fv)!$orD_!3)WPt-qh;YLEa%rrhuWTQZOPgqlev;?ZE>q85t zVbG?%c__GYB|mXp>pkt*0s#;EY15nb0-@_65O-oHKTGNKB3D5S6_kQoF`0F~?*3At zjH4RUv2fwkd4p7^GUvC1Io;$l z`W$f$Pyl}mN}`~*(`!=urt+Q&ujT8mpASgf8eOJ}o&hmvq z>EcT*Ly*f26o^AF^md`C{g*0;F*G6sE3F5BxkI0h#Vxe;Yh@^aSV5`r^$+)wHcUCF zP_k$}x~dAPbmK>ToWn2I@YR18f^9N`974gpa1hSJ;J&^5!Lw@hjx;q@xgbMghIR!M zWKeqFxJQrNlS@7*l=n1)b=3^!fUQkUhdJJzRYw7|7nHV7LVRjk%qdYQgQ*BzH6Z{X zkI}yxz9P&e;YhgxNTPB8Tz3P&e6LNj^=(_fE$*fOE`fqHMZY9MJ2-60^KTW3$q@3M zfz_}bf@41rohti|nmG5czk+B33OjezpYEf&6?$5)Q2Gs_1oTw})Akus3*;}QGo-V+ zp?*9ca_W@YG&HgnJIy-7m7pAdL7A!zEH0fp{F&@K@}@M79)>~nzmZcUG78u=JRo?5 zWX1BE2UM!6V0Dt3YHw(Cpz%d_p9DjU8%-1t? zz&YvUt#1$QVT_6ZumC{oT)S=4;wFgzu;U6wx=2qMqetYMFX8ua^vH$e9ETl*BjzI) znxmK6fn1i@~TveCPMmI)9YsrsFqlI;rGfnoB_bmhsB;_RA;8-rRjy3!_JcZ|Mj5!O|;(& z86XFzKPhA;hNvFM=WIHtb-!bk)*b+WZPMT{oHhcW^Bv9Syug3i=G_+#UzIt?%JUPH z{Fd<-I`p^h2?}Bn+oBiH`t8b51P$v2F4O9gBpkIE}>u{38ERGR@D3t;zsM~3uX@NJlk z!={1HD)g9{)3otC-uIbzW`pgZp49+g%M8`drpB|S7FCY}z=Ao)Q}Ar5o?1JB7S2Ze zZaRS)tdy+Gu>ILjpuKpdYd3+fgiY<*WBWBWKLvgwG3x;e3t4NcpZQSU<+KYZ%uX=t z8&qQs?D8!&n}Y!(C(2c0eIgCTTTS0dJm(&q|Hv%i%0qT!5ru?IS`2{BWip>Z(%L0u zb*)a!0-!DULKU4sVV;mV?ZbHIWKCyNrX&>59AS8u(N+6I0A9Tb`K55svNW~oJl?P* z0>y){d6IRw-LHHt{Ri(WOfpY4Q>&`sjTI2B(8@-8@A053)cz+bCqL?Ndg?P|1@4-dtEDF%m!(rZ@#W{PowNy2ze(}+JX)O7%u3H|l>#<|mf zT8GMAW#f8Az6&r^l^Ha40aBO-Gq}}$2$KG!AHN4cgD3WFT}t0^#A%_EF{a zKR*=+tZ*PG%rm@(cy8MfRrsBtxS-fg4>5>liRk+M?Kks1e+*>Dd&V4Hv#8-hXl_4s zK%+Si97}ZXW<8$g^~yX?Vf2*71K?UMjPIZy4j<}y@~kF6VbmNHR@BsPo_GCD?N?fb z(lw0o79u8%1cEVdnb4zWn){qA1rb6|nGlKeRTPBS0h|?Z_A@fgUJf#o6kHK?0>JeS z0BpK@PbEK{IP0B-K}I{Auq}$(lSCNi(%k2!+gH&(v%eRNJao54o#sevR~WZ4ttm z*p!*mwbYa4V(fA2$!{^DX*T_VMl(8sTkxF2gWff6{Qcix!D12cQ^_eBDv;rIO|iR( z7oWbjA^&K}g(bal(UPaOt`83rEl#hVSTbhIk6^~)A=JRdX4x1sU)479iNWCSf9Js? z^o+&k_p4lOfp?L=1(?V<%WzqcDzmtPoR^H8UXYk`#b`cg|N41S>P(`;OBR^wRcrnMxDKjlZp9kj>xt?aH+WX!%ek{9G6H{)Y{q9 zehI3&BE{Dl{yuvA^5f=Vb3MsIH5)zII*7%=FCf6voJmjESj5Z?tbwf8|uAWnXc$% z20P~paHRXoC9UAE`FwewY^V!r&Ybie#<+PYQv--vcBh;$q*oN4@<)Adc zNG-ZATBhyg%3_$PmIw}#$Ja&}121ibFKnArNto_4|@0=5A${ zB@baDB;$?d%bX_Duz1KUaJ6E&b*~xXJFnKQb*P#cWaa?c9}k7Q5?zZ&EcPHC)>rKF zdmKG*(VrOIg%|SrfWj<3xnx&xNzI@|G6ls%d={lv2{;9eqQMDLL!LOZoaGO^R99a? zg$c0w=5g6C5~P}H?Xoy-~PH8g+H({#zIU2CMRC%}uv%k6pBt#p6*Tx4p- zL}40NKw&O!-lf|`bGL_W&yi%mK5&-w)v4?G5jeRbUD$lJ+Jnc=!0yqmq^;tERMzn6n4k;{Y z0CNveEHG@@=#be}+qqqO8QxCn?M^@!4LlP zT*+{y_u3Jex-I;CIpQFiLGn*>tnk%FUV%uBIXF~o5WN7G?-VVc&eTO z(JEdE23$)88Il$0(+7)36YRvEc#Kwpo%T8ab^r{Xp1S9`)s+p( zc&cPNl_s^;Bu?bc@?`&v;DobBPXfVIhj@@d4bw6C+0=nG%c*}lrfZOI_$pqd7=HeV zy?1iGd7QBhhnwkSj+t_W2zM|{%aePDjizGzXT7-^zA$|Tkf+aL=fw#(bhyt%F-+D^7E1FZmFHqj52W{PrWuU`1Y4m`CMJXbX$o9I%|DIGQteMi#m`Q$ z)u#<>r0J+{f45fZpfUW;Na56LxkaAue}y3I@C+}N?$(^b)h2=QhFAtGH zPVg%ecR}&#zS8yXpq7SHIo7pbCKYd%EbW-bPXY?}UG(!iUjNA^Z=h7}kQQh9be!D=lv$O59-T5hRrJ5*X-k{xtN z420QylK8b-OF;l@9M^F#sr#W(*Zhqq**?(5-id|OP)f;y>XuP%7QSYQuD0M(xSnr% z1AL3T{VcW}L>Cd$5F*y2T3$%`>k(wy^yYE|?)*N}rP8?DtU~A1hHWtwRXI6jDAm{i z-yJ8qx_Tbnk+Njlbfv3Y<+Q=aeAGAVP|yack|qt{I#BFf)2v@c)M`If0q4+SaMKk5 zz{267%Dt)E-EoBqprX1b7vyicjIOSgeRi*7CE!K4l95%62 zvjnB9T=uk4$pz0kRCAM5$&dq`BZp0>%2XWtnb&ax)GSZN%^>hDTNjX)bYkTW*(7AQ zJVBc`!6g1oMXcd**tC@+@26Xo&E0u?*wU`&GnyY$`c)hn*^rzEjGeo>A?68R(Egmm zMcLg>b?`*M`PT|d?pfBlSwJ8I($}ndt*`B)++hl0BPiJa^=Xe9-ix1~#t&KYG`=t> zjoyOPNkm=z*x1S~Q1q82cujk@!Y}Q1(W5O`?f){|e}rdi5uQc!aa3cbBC;Dt2Ks)R z_HYq}vm&cv;Qcgz8IF%nuK-g)>5w}l4 zVcGPMW(BSh(f!yFlhs0;@TXohY&$qSqTjY7`wyXYc+yk|mou3Hx(a~KZ7)y3rn|Se z?%b;1SKud#FFinEcHVxY=de3oohK`lP1I@!M#`rUG@38tH~=T_KX%}2cp|-L@cxB- z?=N;6e0I!_lVib_?Z}wGPvn#hwiBrrYa%Hi8@)!;F+6Fe?c-4?@B57K7o%THlBX@t zV*#mhP{#f8L}Ms22jQ(PmE?f!3@T&IQd*pg?ZkGcG!s7^m$DPD2GE3E7-``it`KWm zkD-kszT1wGSQZA=8{u$Nt8p5=nvffMiOz|DW15%>K4byaSsF$g8xXJ{z8wNG-D4M@lxn?0QnW;rFh~) zxY`%r~(TXfhPE+t+6lR=H)BL?SUb&s7JoLal zjjsyefv>1jf#jt&JwuBMFsIM&H-(8bay=CkU{1Mo5zUuyj`))WGB1Qj$Tvf5(8Ls? z?oz>}50T&&(bYn*<=@XCRGodeb&-x^6VtugUi4U^*%5hk8Xt&4vW>D27u)TOM>Y9>s#*{$^dzt?t;RCQr)kQ zMdqCBc^(uoUEzpX1V z2Vdd=eCVwK(f9i|{6iUE3>-}3*j>=cz}Y~~c+W%YqSpIORb~)HDeS7J(Tz_{3g9fN zS52N0RGu&s*TYaFk+1jZsp>%(6Q79Yhs#_sW|b#I=en)+6W8rfnh;YILJL=XPWcB} zidsY$4x;!NKs63w=#O5@;vKGtA!Jz6_(Qm8WE`DD6cLIQ0U(GRj)0|cbWpduO5G0Q ztkm@?pZ0{Cov-bU-%(vm8^L`z6|ndrqT#O;QG}-jRC@RmW^1WF3yypUT^4xNgHHCh z?cr^!y4^%kVFg!Q#V(3`yk z5zf$AXh|UXlP2{B|4!@OvvYI3cTt=oZ2>)Gvl0q8M-7>TsEx74NFBPbZpwe3p)Xo# zmNTN}qWubwmY`^%i_{7J9yP*CG8GC}mgdXK`UjO5hBuz2@k;&gG%**W4qUYrQ8c@5 z^SIh|Vn4g|K^%Q=#kM}N^upGSotPX;u(Yn! zs{}q|@plUA3e)MfX@MD$xneNRfx zuC`@dsmqtS??06@$XXe^87Pe)xLISW-m}b>71V^{dX&-blZf8_Krnw>nR`leEx6Za z1rbJ%Pr_Kaw~8QPh?ZY+dF)qW+22$7S@brt3m%^>>ES8KPGnNr@CST&GInu;K}06?~VByJv(^j(5axgx017~J+mnkK>{=U|BVVk&gyxTMki*U<$h;~4p= zv()2T&w27XhoCa(FC0q@l2_Q*SU-Hn`q+bWF+>ex=;zZU^?9jw)yj|g3UXKYhdn5O ze9vP^_*TTWhuP<`Js2Cj*gA#e`>5ds^x$gLo-pIt`0Ygt{o_2Qvl5WVkwyBddyb8Y zl`7v(b$O`YeLF#3BiYtVgpl)Qz1vTLz1inP(bqVY7G5C45P4^){I?LA1yA@c9DVM{ z(8cwiHUkgg2V$2>r>KkAg|mTU*^YO}+}UQU^I5@E;0mY!0Q|c7MKszkYq!lF6z0D=c0uwzx@ztLU;)7G#%->w-hF(v z0N^bBnw+lSgw*>b=iM)T`Ucz3Z&LvfieEun0Z<(w%~dGF?ls3%nb)QA)zz!qfD=k< z{+fDUmA2vPq1iR$l8JA5usP%1Eu(C4sfz+krxaG{=LLVw+XJKLk8MHGi zp*;ppw;PODW;tbG>-tfl-baLFP|G1uSVox^oAkh}!M{4oL&#=yn%qips*9lorN|&W zKTvw9q}Q63^947VnU{H}+eG%|MBMKX_Y~AM%jw7KD7V=F$;M3WpSpHM(U6fcX9Q~e zJwiD}1EF>dbSt%S@Jm9Y}US7vm@|IfMki1;C;qS1Sef=_NL-`x?b%D4_$W#i! z^FU$CRjjk@H~7-OD}%yz0j!3Fnl{|Pm9KBqDtRZ%x=>eF@WLAx&e&~9)D`gu+A8^$ zhxy+WYuE93vO?*rrg!M8!G#*xyGmTQdgTB0Y`B7mB!`=lO-J~f{JnfvT!3}=Wux~g z0DKyd@00ak>^^ft&+Cm9%H3NM2FIV0-J#hxCHL@vNx^;-Ck2=s_2{_kZTF#j`&w}W zJ2ZdGyM4WV(?{Z&P5#E@nSmDmJuZ&JGus-|#tdCBs(WYcUn*`M2POZtcDn~^$9}_$ za_SbdM#N@Rf1t-R%X!VuFQ4-^wrI~{JhT1B@|0!=N;|bKc_gfQcyI(#Wl3U@9x@)dTV=Gi`_;Pz)|JwXWv)kiYKzkd~C0cB`fr&vzeYUoSJYRsBER=$0e^ delta 55066 zcmeFadz?*W|Np-avop(Cav0}B%3v@~GYqpGQVxwn5egX$HpXBO6*JO-WZJRK2NX@~6E9eDGT3_IqlMYA|+-xoP_i`zl|#b>`f%AI$wC>DK&DXH5M%A)qUH z>5%#bkp^MU2n4d=a)Cf${)E`1819@uA?OENNYU{ryc|}uPl`<$ zo02y!a3&>`{h*s2s$cLS6;UENv!_na$@UXSxg}w?~>2;=uy>K(KXUxpcaeogv&Slnbm|G>B)^Qk?s=eB# zFmuY(*i^c0xwV(r(335fspr?=Vt0PHe!;-{em>{Hs#k6-Hz#H6=)kmml`0U(XyE6+ z239>*z$*WQ?EJjTrr_Vuw+F&1Z!cJ-xruP%>ny+7$Zw~fjr}q63^s$YQQ`Q!sa^x5 z;-RrHnqsOTFP-Tpu+{CBP-EDJCcZi*FK<$e%FW82J}1ES6rHDR-aO0C{;~-%4fQ}Q zKW8?<0!e54bK`4R#h#iyV?xTLoH-8@PsQEnZcM1r`yMP+ZcDP?Y2%vtm7bA3J!KpX z@j152)U&yt+FDrQZ?oJHRwuP^t3+C5U!CHYY3j_}sVZY8u@!pE1X^r*ATZpf_Crg* zOb1{Mp{1?-aMQ;q7IV9`ujj_5#ByW#Gayf| z#-@zV|Ei52?q=$!@K3h&SC_u+0s%%sVJBDvwg_FEf~}TXf~`6=#x4uTTYd#P=@b;s zw*eNAurjWh=67K3bd8}v;9YDjH!r}-_@Q(^gALeP4F+`d!y9ZZ2Ek5#hFS0#*fVFu zCab<>GyHg0!pdh{-t?55?1C{9oX&nt$Kk=CDO`iiY$^Pe1k~PNz{+SJteRX+MpfZy zmQRCKz<3Q`&h*oZPu*WS`0-}akYi~2X;f6i9l>L1*Moj*X_EWAY~FO^2KG^{aRVtR~w9Yw%2i)#){14TgVE zQ8nEU=letZ3%Ej{AW-;$=Li(eip|h;3yjOpnUynTM*h^i{260d9=G-L6L=g}f>W}m zA5-6$LF*m=Xl0t-C(&IZC;(|*Z+n|{?Oh7 zYuWgP|30=_>0G9rS9(_SsoDAYucKoZ6#j~b z$~lmxP`O_8Jqo|XRzmw>W%%9p1*r(6($3q!d8Fs>7{O{xS2o#oF zX50Nw5j#*rmAF2v#VD6ypi|u-I0;UsrKCsQqVlbVeSU>s{{!>LUgL*jeq>M19-FfnTV+@cYbdX=@o%!}%_E-tXJBip zT?%XQITt41g2FR#Xs(urYr@~m_2=k2u$tykxB+|{tb$$zD_kzDga%vNTZYGSh{CRg z-W0A1pAM^Hqn7xMaEt=U{~%mV%kEAqY=o8Y?XV&&hBa8G!)k%yR<9lO?R#(X2ibC1 zgQCMy-(CvKW)Yb&hr?qT^pM#aarMLK866<= z7v{h@L{tJ=DzYc%2WDYwG>nB+pboHx@A#Z4`E#a>2~5n-o6?>Jc>hkn_s3H)6{ODE zK!D?H;mP~`f)>LX#=AW}pS7pR9~E!HO86Ped)N6HG@)6mqCbxA!1uwb!PuO!?A_cs zV5|3EyWj0prJgfuz2A_N-0Uhf3MM_|TmLINIGOx6H}HbO|JxmWa^BeNeD;`}S-RB> z1m-{PcUOE)^{1INr&c}@2sDM$Hu>Fn1$Lvrh3uT01A#Vpw1k_%JGKM@E#P}#ZbJ$y zqt}D4#a4f%*#sNH)v*UZ?fZ9vYh$-}cb;CqpaQ;biwmpbPy(G^@I9tZ z&l{66Id6P9B4~8{w%s2U({pBc_g*>Er>Bg`8=G^2;jU3Oll?K4Gd9qEt6!k_fij|J9R+S+Dwy6xro3 zOG{vt>D||Om;jH)UyU1opwJ&%GoTx+Dfc0DP~9iI={MR1F!>e~e)fjH#B@PW>(_-F zz`vo_hrfX>2*^ z0RK+2_8+&H>v#J#h~;NbpPoG@u*&ULtwurceLuMwu#)+lqEcPzA z5uB)}sU*R>5BlBw z7%czg)}9Y5+(gS+a9!+AiKk{6^SRed1*MPD>QYQ47=NG?!q!y0nEI){+4(c3bMqYN zjIC~pKM|``>=*pRVZWNK@mB_C!D{D0U;62u{gq#UHE=!jc3&%9Htwc46rlnhwcziF zpp367@yFGh*p0AXhP5=G3v1j|{MH}Pm&1xT8J0frh|iN|~o@I%#bkJqSQaLt=3JGhpje?cu)Rf%psf@z>V}87MV72lNSmE;Xr^hr( zdHf;@1tz*HYNn;mJK>M9X|RIlz-r53mg7h5{@7mC++b4uZa<#%3&8`clyQ@@$LCGY zR-%CqfAhQWby$Ub4pwTLU=?CLtW+}H?4(wmMumdji0TQ~Mr{En!DqlV;a`J3AA&U! z-+(p3w*()3CFzON9$nbrlhcDAxUsg;$h=S>aDkiKHY4&TuFi4=%e%?#qE7#CAkdLW zVRzbybhoHoH1a;mATLBGH@ST@Sm?&uMJSZn=oa(Y&P`5>1{b<9KKHmqX;J5PCD+F>6y-88cGpPljs<%e(@mAA*{|=VfScyn$wV`9f=k4 zLT<;ppwy~L^Ostoobv9M9WtG_5C@b7X-L1ThC%lz84b2p$Sd_Ctp1+gMoPU0OKs`Z zK2n7qKHpv6AtN#Z*8sVk^|%IkDXZ;*3}Ch~N8FfO;Smj2e&{JLABDC3PYPO)8N^KsqR!EH) zI#I=)7|jfJbc>=BDQ$h{0;@mUQgw#=1s>j$70<>U5@LNlqF9cZ+&PokCi!s~7TUkF?;kZt}TN=QlLlXbgp3EQ&S+-M0`co$!9~ zpDndg>F8rvisu!@>A+;} zBi)mgov8Fe)l@LSn`Xw zsTZUW81dzTbtVdCQ7U=?=QdmqeWul2r(1+~M>DjC42Ul8nfsxLUgF2WB`2aH(s&W(n4J zW5c6PPO4wvGValVY0e5Pe_^6(kpo!$%=Q7Hw(h95iB2oJ&+ju0$eCD5%wPB)#j^8| zHaUS+y1oT_xUrGZ$UAMd=;w~iaAGvjMa1-n=r$}ZOAN;gyoK%3sMEVW&tu{Rb*{$J zxM*)Xps$6^+bA>*lT>l@WOc7n}RYj9?2lmK}9IPxC{w zbF!h}GSq zSk&p&&97b=@5J+PsYMfqe(L5O8v5E(o5o2WUVYWrB6mAOlJ*sb0=m*F2TjY4c7)-9QSYqX#_?gu7RblRk-?j z+P9^yF1>YFQMg5=uHB`sh76B$J>OZlGTrsPGeVE`ao6Q#hCc7(ewmjUN$sniDq&79 z!bKI;Wc|}Zd-}TTre;Q}Gwv9ecwd04JKp{_c?*_?O2nPkH9e7`rFE6#6O-{GtnOM# zBg=7RXjch+l;uvGp6Q%RZ>f)%iVUfFZt?V}^BS7cW!Uyei&X5d{1`aSP+XcYEI+Zd zpmB@yqmktU)c_^=8IjL%o$tBYTo8B7D|Nk6>Z*PrQ^X553Rf@BwYJoCq|}u@DDGQW z>e^B2sysOEJG9hwH?DL2vXr`7TqJG%oX!cJLj~Q8>l`oGucfZ8L*m-irLG-u7jvWZbm|mmeX_==Oa_gs?PrBg@KmEMZg9hYXTH&UFNurzMGbBgl{7VEwS2YcZ!Sj_Sf=x zSbkm{Qk;jdv{oi4^~i5noN_t-cPBmO410K?TweZ+aOWAU4qkZeFTY{27*cNS+MQTF zWO+MdWC0fEg>O0s$Ga1+&UAtk{2CLscUmL^i~Y1+hBF73VwLgIcpgi&_1E>vvG}Ql zl{V4`iwVgJe67{lk4$=^HJB|^*)S%?w~y3w)0}=-Dm-&_V0r>ZRNHOnqlxas>oOx% zCQ%u8{iM!`IC>I{_8*hxEXQIERdZ6~FR;$_tfP5pPReA`@It2cNpmJ+*@d@PTI3Nd z#yf3RCbx9I9Fm@hQ5wiu^oP|oEp#~7ZFYU8Gj>Wqf3Ri!*_gxe5X-jlIccGd*d#A*JW zoWHdW$Li&$L(C0WO2<1Qg-WKm6PIK<{ipkTd|5Y@o%DJvRm4BPJ%^1oD;ZIaQ}=Qo$aU2Q-l6#&RlB|hwb?(ET!(Xbm+&~?nF1!SvbePGv`(zEiLrH z9QRAau9y3R!Jq2aW7*-mG1KbY^h6BJd4Gz0ilr3&O4ceYZDblIhNWux zGx}aEh4fdBeb(~Mvren|@pxJZCSj@Jh^N8yheev-V<{ExtEo@(t9*;~acFuXhO(oS zc&)Tv-VzboeUA9E2IDLfOKCCAIIYiei*AcL8_+KH6CpR}>Ug8jdXWiO z{yO$5E|ri{aGt8<7T+EXUgRd<5smD-MrROhyy@5asnbrxor=ZzZBRz&(QDmiD>I#h z>*8}n73q%Uw?3z+$gNl`cUw9q;uuw0n)HSKh@gU$?RqS~q|?TxCt|Q-sP1?TSQPI) zS!=Pzmim>y-hUY6hn$Etq15kftUoH>VsSi`RJ!46ERF-@KvOvHmHLrGu%(;4D(Z~B z!9U9SDL;dyEy_P7mR}ODpVFF$UbyO$T2K>HkJ|W=_cP7joh)6 z{&iFC%WyuyrAfk!>6#X-?iSw{bq3z-_iS}{W3RN}GB>s+>b!^6g>c>@Iw#xp&$#|# z^9j~@Zpqk;;Ms2M{-`tYmOvnlu*^_5Ex5`pzCRk;eT&;{ZKl&|S$y-LWr8!@qP5Y` zj%DtbYcqqVxyeP*NZ(tv45y6GAm5^*sMEo4lprk@lJ4ApVhzAzTr#EiW2s44hKHm% zO_uwUm__EIv|x@~ye=9!gvO#iB*SU7!cT|i8iUdkF|vqA<7B5r!nZN6bfXY@|8}?8 zgPD;l@1X6xlj(D~I(WO(F>Sukv%F?KwGg!SZ`dRz6lcQs%_NN#TC1QHm4kc@M`NH-!XoTNTaa&07A`jgwgE`1v8*KNRmlYUs?uQoMjy-^U(un?02o z`3jMf@>3a+jvI8}BG)yguD42EbsvuV#&9ul2=^$iUY_ejsjJ7vxVE^|^-ig)_9JoM zF{Q2tN?qUMqEl6tN8_%7QrC;6u5yogiwfcTm%7|i*ZXmoZd{&?Mg~64R^{e0qL$$5 z>NS8Kb?w5^ipbK!h)jNh)zTY*FXEc+4V4Qv*|8W|hijatUB5XHxYl!3-oh7oJ=YJo zF85qho(u%0c&-m|`O~Y@Q}KCm3$6=1-_LRRn_K?V{+{9uLg#&~k(7z8ykG2 zh@~e!>u(g^)12UJx9H`lvmNbRFAHs|Ww!eb=k37Gd06se#PL9ViCeTI>g+)Kqk!F> z^AA_2d088*HhyLlYp3<|&zM=y`x~W~w{t(%`F_f5OW$LihgDV`4 z_ZyHFS%THtTlcr(VqkH~X}r_lar}Xhk97g*_|}V9Lp_TeBXwUP4>$L#&WSiw5bptr zvjA(5A82K|ynN&6gXxK{#>a)m{Rdb|OixPEB5hvtR^lE!7RIG9;b+-omw%q|9=%2G z!eVV;(fkV6^`)U^zU~*=8yKM%Uw6NJo3#tEA3u~cM#S&O_CKgg={yJ4w0`~m1%ywHudwGily=~dIqG0p4j6~+?VNm zj;II}n&x|Puiv!Zc_Y&N1Mld-a&#jubqAXtw_pdbx??f6`=uxB)A3x76UX7|=hgTz zx%}YVunzmsx4ge?I`?DwrP#>PDzM-8W7cw~+z*StcJ|JQJb{Z-LGKKw(?_hZq~(v& zwOD>j=s>#2jeQ&qZTi?<*DKTc;^WeD5wo<~C-JV)vxM`oT9XK~6u--`hL+A!i3o;?E!BV~b%-_fQBVOB21A&R9ek-vqDz(1Hy13LjdN4lGl>5NXPL1~z)~M2u zwGW+|%Cvv7Ud9?74;f5$lRt|FC%Z8|?{5n;YKt*z~E_PD}bWZq6D&j0Ler+4bb5XrFN<#HZ^Y_|pMMJ9fo0p9Te~w$ zw84@>@E$i-9CgZm6*l^&^(z`HNqd@8Zi(DuZ>dTl{r2 z@+cb1%gW9PIMTfvfF|GjMJIV~rl+{YB~fP$n${VrLx+8YrDma1UPw>;!B5pIje>s@ zb=IRPxc4B%`5sGinu*SH%;X>a?XHTq6FrLMJ&X#S{LyW8B-3gClONb$g(qS4BC5X& zJc`BBWEOygpHDr4W?9QyNg|7}xaDI7ctg6k{Z%;T?^LY3l)oER8&dW2xC%=vfZs@; zV0AC`YjoVthtb2(9EFvNA3HTSWlOPIVtG$~BHI+wYrm7Y($VQ-cDwe!l(rnZ!(~|Q z@bmwi@_@BS9lwvU+T&N*opwW-bH)k3jI{WI^hAt)UXlcie2m4-3(e5*SHJE3gG9Eq z{Nz?)WfF%)x<7HS{KsdtPnLEsqj)e@2hE|#VqE?JcpjJEJgPwWH-9AZFn}gF4@;Hv zo2~#$O~6wa9;+U~(k%4O_fFT}{doRje>GND{3zRI{t}3l>7}AAGZYA(GD^?K(me3H z<0dSP9cI<5>4_N1oFsYZg`rY{QSs;C*X4a2nhkgg}brR&Wrs2D(n= zFm_uYe|p@z#7d_VCCE+G6?7wzgRQbF3|{50(SzD}XN8%l}j%?(tt( z1zHIzfOVd)&r0wCpz1zs_5Ymx{Qp}K%aF+?o6%o!dHkLSD%cA)oLCjuVQsNm>=gyp z^$G|s+ZwDfP{H1m#3fd}b^|5%9?GiCBDl5Z=Ru{|J$l78R@GNWp zS7vhRl1I?24+ZO+r$fO81&L^_(ZuOC^8bXDd1vCQ@R>Hfb1nC?>7L4x`UeB%ig2)@ zw?15G1BundLoJVh<)xp3iZ9iN*%c1fFOX|AAIftqEIY^A<1NP|a{VW)2A)iK)nzKI zsQM+UF0q```B1o-K^?ArhrWIqSZo9S-*C|EN(i1!tCS?rKW9XOHN8>0jHFdZV|fLv z+-}pypIFlEe5ek0S^vLcjqV4mzgTs8$l9l{zX(aFL4X%+fd6-F7s3CH3{R&5@7oIe z$Lx)<|4GFEAR`6Y!-q!CH?X?+h>a&!7Z&_rg}-7&_{j$R1y&!PwBb)>Nx$(S{@wcj zJNAN*I9w12Dic-z zc>S&YZ@9nSF0PTKlh9UQ4aNSn+R$CEa3mv7EQ^q4ZW1;Lto=DfLe*eU%Nk+WP-HR)Y5v zP8qL-6=j{}2Vwbdu=YmF1&>-0vGfwl-&kF& z3VdhzCr_vU<&gWBC;T(3U?;3Dmh&VZ%HTK4zf0s2s{#o`l60CP{|lCXqWm@gQ&|c0L6=vS^%pDrKx_XME8d0pSAs{w1uF4)8{t$|fhJh}R8|I) ztu9uAQ($$`OjusC^3cB9v;-HyZ(cT_BjH%uD zCF}kFko|`K-^ft)+hHppR=ezkwUfL7YlOT5E8K3Y?+f?!h5ZQHL=V{jU%*P>u;pS{ z36xm>Z>{}3tV6M&7U1Tde5%Q2rsy37&|23d{dAY-L}@>S7hIlGQ6) zt^)HfP)#2`b8^8^-Fnor9)HEksE+kNl_fRcLlrpN`u``apv@DgzY5R-OBuAZ35exv zW9?H};o6}qUVG~=R^z3^s(Dvy_kb0?C#>-2!u$*Lv3B1ASzLXsaK7a%%l%*_FaXvi z*5jgK))veE5?C1wxAsVwe}U0fA0vZHtZ-wkZH`n4suBKBVL&b_j3Fd|4LXv3lrkY7nTAnkoqT9!dF{eTm^d>Ed5riixq!`)o-(W zyY&}q!Cq(e2P{A6*FO+=5JAh)Mp*0IRvX|MSQ)+n^Dpp@)!&uD^;ayfJvQ84SOxpg zh8L^g`(d@j#~K839DpmsM`2xJMf?Glbjq+hHot!pso!dR)hwy3fc%(xMr|MV_R!ySpP1tGRm|Zh09|1h81t1kQHSQ+KQiZD~2e`5JxX7y891-%?y1-L@~X4e@!zrqo?(gr`372Mmu z|HMjuz6~!{v6jF}_8*pSwEp6t$*LBtq1Fi8?3uaMSYDONavSPYRw^sdHKXoQaQJRm z;qS5G{~arz2W+@gS?N4zb=aJ!7Ie(7)q;uosOc4F1KtYuuni_wa$BtZSFB<^W#c^! z%YMe%+bll|>k`ZVIaq!7iq&C%`#eQZ_)`P?r7f|Eh1#n*PzEWMTfwSOYoO~?R`34t z%-+x6dw8#e{u>YNmF}qz@&9Mf?9U+)mGr;=(B6+XTBZ2=nZ4f_56~7GS`VvHxc+mt z!{9%U;O}sM^{ieQOV{e~JW%hx0Cb79s_u}%CDyq8`-#3dc4-PR4FAr8QB@*_Uj#nV0UxBdl z3WR;8Si)fmSyv+LH!H3T4heo_j*31uz2`!om{pj#5msJ{aKaQz zI4mLSI)syE#dT!%n>h-Feh-*F3xgM#UJLPGzYzbRIlhnx$0Uqcgb+4GixAc>La1;( zLc|Qao)k_q8%1S|vlvP=*&@em5tTJnZh*>}n5ewjE~;RXmOvHFG*Kn9Q&ibB{0CIU z%n_Y#-V#+c$u~l0nE9e=X0NEaNxccGVHSyMnggOF({U+O%PbYuHpP%Ryp+7MZlzSjX`lh!FH88704b5>;BQx+8sIe)6%-UO2%Vk7uVume4Kg(FX0JflFQKhT zz73)2Z3s(lLuhaIO4uWz%k2nhX3^~k3vWj#kT^mXp-+kXnG&QlKT(_o4peDNa(T#VTf6@hL4475K1HrGac_oNWULp z<^2ekm|_WsC1kBd7-3edMOeNT;iQC1P46OvUPTD&ix9HSaS6vHj97;-#uTkXSi26P z!UG67X4nG=LmxocDq*~F9z;ld5Fz(LgqYbPVY7s~>k%fI*m{Hs>k)QI$Tdk1A=G>b zVeUf+d1j}C9THMDAWSoJHXzL2fUsXezDa%&*9kp2k5%102cFvSuMOUQZ@VXj&6D8lkb5l%`dFufl`==B)F`o|FFo8uCW zNf_}s!U9wDIKtY;5h^@^aE%%E1j5iK5VlIV&N!P85;q~_ZbDdOwn*44q3&jc#U{2H zVZvsFT@sdI4mLS8HAN)#WM)YpFub&;V#pA z8$z#b2 z$ZV0YSwh|C5gstH=Mg46kFZO^dXw}5Ld_Qt=DvWi!R(Z}{8LfzL9UNy1T5hlEjuuH-&lk^5c%{LI{zJc(D*(qU% zgp@ZC-ZFFEM40_1!hQ+wnB=z*n!bgwm#CG3&VWk15t zX3>6xh5HdoBpf##KSD_V2w~+%2q#Rjgu@cDK1MicR(y=G{9}ZZ2%+DDrq3rjO?-l~ z{u6=(&GAnNa!kUA0|;SLbO2%P0fY*lB1FuvPZ5TGim+8e8RHy8NIZy;dl11fTO@3j zQ1>&0awhf}!i3Kdc1fsUk`5u%JjCH*-l1S09WEs7ID}Wq=Y*(Y=6sGY`*Vc-5~`Zy zFA$o3fw1HYglcB5ggp|v97d>N79B=dco?BXLXzoNjF4W8u(BATwkeiySVGp92zAYh zFAlN2I9ma zN;X?WoH)LPnwyxYh1o7jF-b?DmS&o$mDwq3Z5kehQq3Gu8}pW^tx5h4YG>w)+MB(i z4kq<`D9tQ_%);*}T*>zouA}Mr148-_2rGX;$S}nc4ok@T5uuA&@gu_W9}!MUh??F% zA@uqQVf{}C-OO1<_UzkClLCZof39PNck0EpqcY4!t7rW_Di_X zB%efRdJuY^4ky8MPP#4P%akA=S>lt>t6I{uE3{yW0T-w`e`#S#u9EXxXU zyjZp(G-TQGP=#eDu`V^egCW`?7@{qL2-)Vigkus$gb>DT`Eo8&};GfpLh#7YRcl@J!0EfO|Ms9PCfv58eim{1vEmxLuIsR}~PDhP9{ zAlztnO4uPG<#dFlX3psdvrk9ZFTpj*RS}w2MOac5VVT)0VUL6^XCN4}=nRB~XCRbF zSYbL=LrAZNu(BG$?WS15VF_8)5muTN)e)9gM>r|rF4MaPLa!PK>uVsaGRGwxlQ5zt z!o8-bCc@g92o;hL?lZ%Z5QZipY?W}oacUtX)muxz@Tf_yhtRYh!jgIjkDI*`_DJYb zA7PVOR3BkseS{JTTTI6W2B=S=0<+VKamh342Y)<_PJ{5mq)w*k_6*9F~yP0%5;d(E?$4 z3xtyrJ~q8m5PGE`tWQBWV2(>TCSgQNgoCE2CBoX42o+i(95TaNAq;JWuvNkr#%Ya^ z*cu_XHA1o3B4M+Hx~T|XnOG{qgj9rG5=u-`8-$u|5azZ)_}1){utP#hTZE%#PFsZ8 zZ4vfM_}(P9LulF#VM#lLAI)9~dn9yekMOfu)E;4BdxR1R$4$o$2^8zW@jSomr&ItM-iGv5tc*|s+qkK_DJZ`6`_V%)D>Z2SA-G?Nv2~r zg!FC*E4v}oHpLPSOUUYuP}i*Jj{7&*r4AIh23+|d0__L#isQ-~TdDY>CX{YEg6imUmpN&LS|NO0o+ z?O=JcbqYm(Y7`Bq%C+(;SK+n$z3)L6E_#rkx%$bLw!@|_(?aKkBVLavN^LJnX&)@! zv~gx=NJ7N>&&xK=9~jyYH1xm@ue%mr8LAwLG&^h?C@bA0VvAeOOTZZ&%gfE7$}=|&ye3q5d)ZzM{J+rN)YO!3 z817Q=+wcBGkiZ_ARexy`bj5A8c4bcq1omRcRw`Akw$H}X-|K2w?L({SkHB@TwjWLL z^rh+szE%+U1d)Hkkop~&eiWh?26z`9$X=^-vswsE zPW=Xi4)ea#8@8H$u6`xZ75~YiT5q1dUZ*BH%?4yH2NnWdWo#zZaNp=D)ZT_ufsEDk z6GmlR155yF-f~u}i97!Dgz{+o^Zq-fMaq<`ZY3K~{kGVOm919W3~U^(TA=Rp-s=IM zj+ZK47sP*QbA}CG5A7O_0j_FRtB-rJ)v8;q0on~#t6{Z)UhdE@jpQ~uwKb%$8hUv zXtidzkKooQY-Bb4(BP;I*Vt+;&~CDtMzD&mA0iA>#kiVSO@B5S5wgE{ILnHy5J%g9 zXIrf`+BmBJYGcE7Lc0@9BeSj5GBgcZ*_yPo zVrR70R%>syE@)$LYe;sm8n2TIB->uq!k~&oK|Pysy4AX(RYKE{>}a)axT~NwguN9+ zk-LL#Ho*)Vu!os;7Q^HmyzaGLU94A6wAEJ2wA#67YpoWw+IeX6t=83Qz0mYaxh8No ztM$g+!G`N@wLWMSmN)71c6=i6`taHre2S@B^q5OKI-aP=dg{4W4i(bS>?Y~%}Z*Rnq17(JJr7N-Hpps2G)%6rr5S9+p=fFe)#xHL{so3vTiP%LMY$NL zhSDyvarJhr_zN0_TWvU6hRtJy)kdIoMk`QrjI^TGrA!;}QZzX)1yQSM$yAL;fw8s~ z^eb>_*&t>$jb~}2!CK4^5YVo!x7@4;d%*`_AJ`8*0-u0S!9j2cd=9<sb9cR@E!O8{0M#mKZ7~o za&QH>5@_faf~(lKd$b5Q;R#2qMYw*!t!M`1fvI2`m=4qd>eMDc`_|b&n^ZE;CZwO^ zJpvvDkAcU*6JQhA4Az5(fPNi#FIWxMfcwE(Pz2URIKt^|SPm!)%7OV2Q!6FhGW2lR z^hpU{lzIlOT^-Z_NkBh}oD1fG4%qr0hUT5-*~MUlc`GGc)zRTVhk@%%NlG}a)7KQa z1bhSZW`Y8spA1g`F)$Hm3)hyN1IB?o!VE|-BU^^+6^N3SI-dKq}$eg6nWE1UG;s;2%JH^-^#%aDmoSt)E&i6Tu~=9y|zlP!qTg_&I7$bZ_pQ<53<17;8z;? zB+!fxf-vCihTgfL82L+Z47>{N2KR!U;0tgVJO#AnZvzj44Pc#y@GKmcfqc*kbO5QK z28kyD{nk^z|Lj3k^!^(ChEzW@)r-;Uf{Nfa?Aw9P1u2Blwy$kI6)Z!$2}E$~%|B^i zCJnEZDkt2-|K+~+dVMRf5oip~0&|Ge05k;J_qC^M3-1ofq0HX` z{f1my@)R%z^e4Z8K(EHp7Oda*w*sv}Dkulag9?D{IPg2=dJkw9-V5FYFM}+gjj=z_ zX7~Vj5Uc@4%lL8}w}U&tN^lpr8{7l*ij-AAcU8KJ(sr)xTQ7k+8*U1cf!?iD3Fu`| zw*nW81H6bW&<`{MjX@Jo4>SO;QR!XU5MIae26!IK1~Wlt5CuJej*PX4P#fq>pkMFa z2J0PoIuCRNx1t%a6r6^wBSB+Rw{5safqomW|84hiuo*lFo&rw;{d&9x(8(YPJbBOKDLKmO|fHwRxK%2Za z^$Q{__7~#NZr&9%2l^Gi-VE?2cniD@^u~afzz*;V(CZ$OKm>%qL)2z9xRJ!K0#}1; zz_max&eE&n27$rgA}|E(qktc4v-t#M5vU(H7fhuP(?LF%0kpdxAd^qQXW$Sx42pqX zU7)uGY#?*JooOK$L*jak-^E}ie*Zwb6!%D=8>|Cx3Ah_{{GQC`fg8Xwpd-d4P?JbH zxE%rCfz|{biB=Zq2UZ(QtbKS$!5uhPf(c*>(N=-`fZSWali*>n97tP1dF}vr0{yC9 zKeX46@JEw{j#o{oPZOZye^+=VxDzx7dOyS*pkw%@V7QLiSvbmoABe2Cpxg;Qri^-# z(oXOcm<7sEz*lS`RFD^}I}`2-?j}S1ZofTY+X5ZUT9EEzK(ArYiMc249zdsJor2ft zMH4#u&Hx=jC9t1}Z<4?~(2In1;?=pnALtLxpdg*`8$}|cffBE6S#G7JgQU)lI?d|* zcM;IRQs+jU6MKTbpqB==4vF1>Uac?*vWtsrx*g-%k>#BY2g}_6 zNe3|vjZeTwKnFIxCr>Z!+XY?$JHX4}1+WPGM%;yP3TOeE1MO)aZ2B=Rd}$c7Tm!lS zCDQ@E1ZdJ~IQlMh0)2PCpZtpPZwHU;(JOKZWU7Tv|J7VS~?ZxLZH=1 zX>`@Q_OwzA1KNzVG^r+PK&>LmM37bp3cy&PRYohy2rwLEgV8`M%_wV6gr|T>Kr4hc zy&RxbZ#*pjm=cVi>8Ik(16P0+xZsAr158x~UcY!;>4PY@) z3bseR4qalk+u;?!faTyu5CH!GOM!G92yO;90cp#?EkL?B?!Hy;v%L-BchZP2y>fR( zi&x=p>s|}1O80zGOLuU=0(oP_5B!c$%G1#rK<2%$j*gAnd zgr82Kx`isi|DaiU4kypgaUKGnfe$}G6G=nkC^!PX2a5DF_z5TzB`Qss1xX;Di86>M{tNzU zJjGF`#KRQgzRKFa!Sav$sZfPlcH;q*pl+bl0@^**qw2*ZpmSJtpaPYL%K@FibT29` z-XhhowUlTWX}s!TfKHw|KF6?i|DpR36}AFgxiueEfOaE2F;K>;shV4XYNOQxbwFKE z&*YrTfv*8h4Q<_8XmqKQRR%SpP9r*Q$IGQ-j#~ZH##GquKy}b@T*vZL{na~ablsRL zoK7}ffelws+AC^JL4o6e;u(u|jW;nBmUC* zgA2g`pu0@nZ4S_jQRNs6hJtuPvPXeS!7wlc$bUWwD$H=)mw=0b?07t7Gy;qU*+7TJ z8DI(+3v$6k5Capy_yRu0fgBmuJsF;4-SU%rI+zBgg1l2WAGb1@36zQ4ic<)b_FOOr z%mU>psQhMw%YfVkGUQO=R{~{lIk>{Q;|Yotb`iK5=*Hwaa4on7EC5#ljUoAqg_bmb zT$4M#4okaUe||ZQ!1rMM1HKE~308tTz;dt@xIjl>0|pTGR(KiE6OdbAt+R69X8l*d zF80k9ila1c2XEPMO80K{zxqRc^Evnoyb0a__kmY|nr;o)3D$!9!D^sxxfk36#sP(q zt#~?)#v%PhpfG2l?|>EVW$=>v=s{2gkIG;j?jjKHs|Rq$6Hphd2kPsG!3GfT9`$p4 zT&TZQICbMgAl|Ldei=PAA)&DBVvtS#Lrvg3$wt{$J{;D7f8&5o5n}21W8unr0 z{bAGpFCeII)JJMgHMg2rO|3qZ{R(&tx5i04+-taNp~dZ4*y_61!7iW{jCYUxR_q1}r%JpF;$hbBJi zypkz{kAO;A0nd2z@5k0iR_WD*;wwN!!W@J(C=Y;7z{lWI>sG<;!+i+IeHi{0d;>}> z~L9r1!TT z{oQ9eeo3(Y4y3>CR|oPJ>u*BJM``PsQ9YoOLV`Zb!~Mc_Dm6qprst?eI5{Jp5SX-WA|aAcd7scl=P1{RoU1H(zdo6TaV_B~`yw-g@zvBkP; z6ILB3Txx2|_AOfn9yZ$)?kTf(V7P7Y1ykXI@a=qQu;>CTzW;Rreof54i^A0t+Hu}A zRW3y6Vm1zfhL~2O9CN8e8`z5fC29|I;EzzX^?<1o<#{yp*|phydNm6LTeoc2vMqJ< z;{Pe@dSv}IF<6ER7bJ~;?Ul1Htwjwwwrs5^wluaFHh-_oNqj#$Z%8=Fv>6<(#W%6L zy-ZV#;GxVJB(!SYhmFpgmr$96+LBOfX0e$+n2Ibgw~LmU{RHPLsBg&HW{L;XA_Gm` zi?CuQ`$NcP(!@-Xm};)MDBQMouSEKj^m8X&estEOLtgc|#7lpS`SxwX<(d)&FEnL_ zkfLA0+RqV-xm9@e;2S6WSSI;7Vzu*2Wdl@k7#aj6XzOF4BL_k~hpN(4t}Cj5-JLFN^>4X#nA>85?xev?Si zQvIqfG#f4^5=H$iUtl)>6`d$*A6s$e0x?hmT)_!_2Buo*D`Mw_>W z6K%5jN_3goHWIqZR2dacQsym2Q3x`>VPv=_f2PbGf$wtj#%On4&CG0g(ylpm(&JNcL@}<=IqyJ00`3;p+_2PPdyBx33=<#Y@?>-U= z_A@6&^LOxnip5-=G=?+=nrp^TfQ$xyqzcuKU3}z*Px#-=ypHa`8P`O+Q z5@Us_G!9y08p^U_hS@5sm&p?iG)tzlCfqZYHNp3({Y)cTlg_Al*A*+4tR2+mkCF7x zDcIECG|?QoFtxG2lI*VY?1vXV_QGl}R%%NYtG|k6p3Nb{o@Sq-{_70=EZVQ2%9_Ss zZ|Jh>jK>EzwQ1As|2nFltC=;9e72gUYKNE115oYr>ictxuWFi+uV(v0KDA}rcKl)C zV}*Ouv|1RhZYqsum?W8$@l2Pm%@yOr^F#5;=TEwte4RdZLb!S8x29&~gm44C8DB7g z_*G2m%y9L3jNUrU{FS}V&)2*?-1+r#3a)8P!JC_16BtyPCKw~e`KER(JU%$wEQp2M z))_}EO_w^2zkhvo>O~WX)w(6?7I(T;%-gYW8$VigQ+pyM{M>Y$NJ=eC?nF}RXs(mh z(>x`*&3r3yt;wDrt{!3aAb~R{g$rx-1njb z=IqJgwxJ(dn&Fd~eoI^V^Yp1-AE**-w|cx6jTuN{=EljiQ!TTf@O<;UN-p`%H_b&$ zOsgr-3Uet|?ILQgz3Z3Lzpj1y6Q_686mH{f2~V2e?_n%Hm>Zr@yD_g#a28Uu8af*V*&7eEmlw{p$=mnYk)RUvt+~@_Bd)L&Fxa$Q+tN z@jYs5#^r@;)%k@PrC#{{rYVhoIl7q1NiR@T9^6zncjVC;r!mtsQEshV*sbk|hkAM; z+P7?z8mMXB$Ri`aLZ{|edm3@75~t)4dE5FmUe(sq=PA35886`WwG@M34L6b3! zj>$54Q0;x4{JK^CenI6LXXUjgxYkjc^b50<;I)4xfEMI+yN9lOY4O8+f0_Wy5jw>j zReIx0Io1t+w4)`*WK0jI)xI*rA5#~OsrX*=J4SA@iPB*HB2(Mx%t4Vv%kBMP+0ZA- zP5UF!HDbFbkh*RR6hSEsky2QF6~8K8wvRqIS5O0BnSXSA0GCNcjat zrv!My`uwuETjP1}teE*n)YrP3Il`G6P9}9~A76Z^ZKe1A2yvpj89)err||7% zR3Nnn%Mt;1KQiH_XKpXfOz?J4dOnb4R?ea&CYn`*3obNo$y#G_vFf}?EEeIyh6$DK z{&>*FPydK@sE28A8Ak!jwf}WUKdE@aHXA?Fe^V;I*!s2HZ2F|88F)RFXwugozfVS1 ztxni^|3+^laRSz{b=qu-eT7*J)!s!ojkuqt+Y z_QnzuQkKa!m3<9KjL0%$8B4zZeeQjGG?V$h&(H67d!GA0=bn4+x#ygFp67YLK+7CP z;J#Tia=ToxHf4Lpn(ghbG}a$pbdM{oTn$xaxzcuj$;|$DH|{?Q3$x<4SRd@l)(m*q z(k;<5d4Km*+ZxkK)ShQ<^cJ+T!C+3CeK#_-Uc-JbRYU{oI2U%<8UQ9$r`|DRGin%V zRe*!&NlFWxQuay9vuckk1%MPEGp6s5>eb|;%%pU7ZxNkBql*KrDY)iTE9>|9A6h4s zcIV)zd6?5t0ccydwT&j?PNE99EPBQ_c>Af5rRfW`=iy*-1ub5@3)xvQE`A?m9>#4$ zv1nvRcfK|1H2m_9b=znErV}qK+y3_se zdMet_5(b zLUbO1v!AzCacLgp8wfrB281~fjy2uC^ILSnOGVs54?7!K_`7ND&btt-_Pq0;L!d=Y zb16`2hpa#fk}lz+n`=Q3t&S%@2+Yw<&cD5A%rj*ND1ix?P%va_0sxE1rPGea4!`Hl zj&kf!25W^~kJ}EuZD}-svMqpY)2&;O*(dd#;YI-2p$mJ-ks<-m44_^MfEx}Ri!q&i z@}eUf1}H(uPKkxz(M`r^CIH3&=xpkCX_?<59*huOd8`aTrhr(PeHhWFPYBW=CC6b$ z<)1^~w9yldp1;wfJ34{eY|7$<=51Y*dJ4fip&&GYtV1Oi9F2lPF`l&-pJCX}iFs|i zy6p#$MMcEk?zAgZnxy^fJJN+=qO-{^Od6zxYZ#S)OCO341Nk1jzryBYFx>j0PX9^^bq87ttot7S?y!5It()#pp0Y9f~zfA&WD$4LPODLPfejk^CcJg z^<<8Z@LH38;OdE+S`G6}P<*we^mslPU-qV2;ZiWZ{f-ESAjwm?AYU5o+%$7p{u1R( zr!3_F$_ht<`2qkFNb0q8?>CdLuPcK9j3YF{yxjtb_!s;kJD(04_wfDem7XsI0%3wL z9*(Ocv4;4*eAWU8>_}+~q(SoFAGoF;xKEfnIHGkRs94I>6&sLD76RUk+Oei1^<5~n z`*e;EcbL4BRxOkoX^;8R_Jzzh`f>p*wMApx%gTJgid8ruz$NrB^9nZ}HFfHIO&ofV zn&5x6B42t7TKO3eERJrjeX;y~p9{7MLYbbD*_&&UssAF3-`-EDiUvDVz#^#aEiR2f z=8;uaJ+AN(J7qAfSh4&i9RTf(8FYFP_&=Dz*CX|(avz%n8NP;1lPP#My$4ViJ(B}o zy`KAh&hRxUT1_bKFej8YlMz}~nBq=1id~FhXXBCupm$R>JAIpdc@?C#oD{?6 zFGiRPnZ+%9geLBq^UL*2t1L~#6gi^40sgE>7A(froy|qw>SMKgYT1N!z>3lk55k&m zvTuj#MQUz|HZUm1yce+AcaI>s0aXzq4eJ$-?@C@xY;}aIxGFvV$s9QaAe($?y~*7 zdZNb`4#V@?$1j8S`>>5Ju%Vk`hm2OR=ZtG^sxT~Yxv z$rAt+H0GkwZ3K?#`9=4RuTKWncr0*O(gT6Cb2-Gk00i3@?U#Bkwcmf^tUy4|w*#qo zITl@s7v|Jy1zgb42{dkvWJX>qq)>Z%xHPsMFB*3Jp>F+w{S{KhBu}CK&ElcarO$Oi zrNorPqnAD&YA*zl{Yr$FZ^$wd!63-M-gOlKa zIKY-!p)t4nIN;+wVz{tKsWVG84@62XqBRq9V=0efVp)@P+Az5-w1r|zV#2>e!Y znBrpkA{I?O+QAwfd9tPh%|#>kTFsA`?fNZWqZ?@d6ih`4L%=x?T@G-{nXZ4g)ZS+t zmTEO^kqNPXXI4{rEL`K*H5?K1IQYmqzsz0Cv^YYD!5jJGoGd7ai7Rlw{>;rgZG`(` zle=3`x6qHs0aOx)deO}&zCC{UyX&h#Q-;VG)fQDdD5W%tbn%eu4G_%a6AFIyEin9H zxq?7t4=)RlTRbvyBbpm8HRY)+%Th9MQ@dv^701Ko&qZgLt&_iKm9otlvI; z&JdOk;yD*)_>rUuJ5;2qva_HyY?Yr{6yy^Q5k$msqZJA8?D|~ZgA%t$SjP@ss(H~3 z^oXjcfeoI)k_l=hIAgbC%|Z%F6Ua3*7I*9tF$i-9J+9`wj5AIQ6Z3=^JJ7=nr_rlv zkJ1JWe{`SX)4F8x3@tCI+gB6blbwG-v~cNTNv_a4z{Rmhv|s z*sjuW4eZ*{^VLt!%kqrbY?KF}{o}aJ)G^V_pV2U6H#p%0!8i>ei)3&bMV*sjf!;JB z85U?wO;aROicXdm^1p4gm)222I#M+c@=1|?`n1h@?h$DrWh>vWXlmcK z*%|Bvg}JiQ^_S$h5$3fchB~BTD^$H!3^Y@)VpF*iw8jqkl`z1(W|{P$m7=%g856`I{ww%?28{ zMRJh!KYNig=T_z^mv^%;D8d3;F~y&lYcFh~16z=h{jrH}9=Cq$?e7n7k0UJ)@pvs^ z6FmV!)}<;hUj#4dSv23q={cT|f|YUr06}`T}m3?2CjW9+aGIl z&q5(pj-h+f$Z#7H?Sv`B^eh9S8=I%_WrAfM^VaG3KbJlp*Dvd^gR_`ITMQOAW z*LGJnbDM8a-mGudj&sbbckW_IoS;c=31wzBs& z9UwZJZwH?SC#bc}D=4@5P#uCfMZag|qEU4!>YcBH#!u!O+7$`QY>V zh1*p!#Vwf&FQoTo739WrZ5PajZz04 zhjGZ9#_f@8tpgoThAru4va^vW|NWELo8FuAI5&O|hAx#G6S&~J%47LZe`02FU4wupQ z2KAZ=CZaszL2dxz$BE+6{0EK$G|rTffoH$YWVsJ!TAt10YJLxoOWvbqMu9E!KZs$U z<#4a|D%JeY#Q5l}D|PIZ1o)1A@};AxoCuTm&pnlj16tv)n17i{eg@+{Y^aqp4M zLfY&BTb36=)s=9X9O`%xR35BUBLGW`M1fege%wvdaJG6^%at9G6eN zbdqm#hmjZFY&$gYGerr?ftib}p9hx~QT{#VVdr*=`?LmshniYC88RxdR^!pb9N6im z=1vyJr+uaN%%(vHAxbdyfL3sFH_Sj^xUO92B>^fT=7|H&!48or;sy=*;Oac zJWwp7^@q@in?mt@=n=aquJ{nzOL^2i3(>MTkCz&{g!M5lKJQ)tDMf}@mPfuo*p&mp zJcM1FU&i)XGN+n44~u+$tU9#dg#XVO16d9!7OV#y#609705kw;eBiOv(hY{ERlxW3 zGz&RWaUOks7-b9`L0PqZ@nOkAu2Le!3>1_(J6B!@k+$?Kwau1X>}#Iqx!JzRc{h6} z{J2sT@Cj)|*RlG+bQq-BGIf?}pPni{drqutaG)<$N zv>F(IiH-^w=5s1Vqw92qZ>=ZKzWruxQsiAW7*vYU?%^rrG5DPBKrnF%zkR6D(n$7J zp%`T}t-zIRah+$ju`an=mTmK#qX@57&B zOYHB4r(0Ty$jz#gM4Ol^6k;{gfoQ5|S16BCjr&pjgaV2CCqgFr^mn`UngBD1B zB@ep8pE$Y>=+!pZ^;C?yVpGV7O$$#HFjqMQICh%({J{cUMw1%cc`GZ6x)Q@xQigW- z9oqUkto{PXbRbKf?$x_aP(iB7zLH{)NBr0H^~@_zi%a(Z?-P<%FjLg{&znqf@`MuZ z`1<;NZMku{L#SFjs&M(r&Jfnd?NgYdnMPP<<;_Gx&LSE$r)g)gc9kqy4#WGr?D#Ti zyz%(c_x#z5LO6;rk0su>tppd*jc*=v`OSSE4Bwi*Y2RwWn^F)9cVI*jh=Ns{p5hKG z?-k*VD(xod>Gw|obttB6))f=wj$l1M4^?no{x6e|%- zgd^g_dans-70f?I5G0keqspc$d}t{7Kzj1eL%Ob)uS)95v*ixHf`W4q+g86h{;3!U z+V|6)WqcL5o!WiecN;$DhS{v1LFDc5`61Abur2P@^%hTuuPWKzhkHWA9X=0vDmbwk z)8hM08httHFIMFd2@O}N9s3m$wg*a;^woZiRZye8Q#aZMoc8%U$}N(Db=%7M*wsQ0rRF;O9S2^#-6@{HYct9z@D3_aIY6?9Y01Nq zH%FfuF+t(16l8x#53_|W5s3>z>%8+Z)f_o$MwHz;zcy(R-ya-8p;O?`#d06&cF3)1H0@Ou6R)iP}E$-E1nmebaB`VJBpz%zAQ{ z{POn5VE2uKan08B&dkus#$Nrejlea_?^3)+Mts+=mo5{9Z}yb-H_2pFI*sAGH%?L{_2Sb$_CXl8nre^I{KM!DXJLw7hGyUL7k;0&647#rm|0wjGOo9bMfY; o(>~u!9O5_m%NhFw@Ny~DdSu{S>l60X5B~W+%oy>=pt0tE0DX+>>;M1& diff --git a/package.json b/package.json index 90eeb4c..f699db4 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "author": "Richard Leek ", "license": "MIT", "dependencies": { + "@epic-web/invariant": "^1.0.0", "@remix-run/express": "^2.13.1", "@remix-run/node": "^2.13.1", "@remix-run/react": "^2.13.1", From 0d134185c0c568567faacbd1d643f43ad32e7a5f Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 26 Oct 2024 16:12:38 -0600 Subject: [PATCH 17/75] Lint --- app/routes/404.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/routes/404.tsx b/app/routes/404.tsx index 26d0a97..45a0a2b 100644 --- a/app/routes/404.tsx +++ b/app/routes/404.tsx @@ -1,10 +1,10 @@ -import { type LoaderFunctionArgs, json } from '@remix-run/node'; +import type { LoaderFunctionArgs } from '@remix-run/node'; import { Link, useLoaderData } from '@remix-run/react'; +import { GitFeed } from '~/components/git-feed'; +import { Release } from '~/components/release'; import { getGitFeed } from '../.server/get-git-feed'; import { getLatestRelease } from '../.server/get-latest-release'; import { Layout } from './_index'; -import { GitFeed } from '~/components/git-feed'; -import { Release } from '~/components/release'; export async function loader({ request }: LoaderFunctionArgs) { try { From 0e38fc39cc8a9b3f4431b7702d414bdb73e3aa3f Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 26 Oct 2024 16:15:34 -0600 Subject: [PATCH 18/75] Reduce to 20 commits --- app/.server/get-git-feed.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/.server/get-git-feed.ts b/app/.server/get-git-feed.ts index 1ba4a6f..70016ec 100644 --- a/app/.server/get-git-feed.ts +++ b/app/.server/get-git-feed.ts @@ -45,7 +45,7 @@ async function fetchGitFeed(request: Request) { const clockOffset = getClockOffset(request); const response = await fetch( - 'https://api.github.com/repos/sorokya/reoserv/commits?sha=master&per_page=30', + 'https://api.github.com/repos/sorokya/reoserv/commits?sha=master&per_page=20', ); if (!response.ok) { From d410b20ddd07990ff5f15e8414f8a6da4a665a7e Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 26 Oct 2024 16:50:09 -0600 Subject: [PATCH 19/75] Enable single fetch --- vite.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/vite.config.ts b/vite.config.ts index afc4189..27bf36c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -13,6 +13,7 @@ export default defineConfig({ plugins: [ remix({ future: { + v3_singleFetch: true, v3_fetcherPersist: true, v3_relativeSplatPath: true, v3_throwAbortReason: true, From 9ee811a0c6c66a203dbc9c2aba863dce2d1e82be Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 26 Oct 2024 16:50:17 -0600 Subject: [PATCH 20/75] Add date, lastmod to docs as well --- content/docs/arenas.md | 2 ++ content/docs/commands.md | 2 ++ content/docs/configuration.md | 2 ++ content/docs/database.md | 2 ++ content/docs/formulas.md | 2 ++ content/docs/installation.md | 2 ++ content/docs/maps.md | 2 ++ content/docs/news.md | 2 ++ content/docs/packet-rate-limits.md | 2 ++ content/docs/pubs.md | 2 ++ content/docs/quests.md | 2 ++ 11 files changed, 22 insertions(+) diff --git a/content/docs/arenas.md b/content/docs/arenas.md index 7327b26..a7a5087 100644 --- a/content/docs/arenas.md +++ b/content/docs/arenas.md @@ -1,6 +1,8 @@ --- title: 'Arenas' description: 'In this section you will learn how to define PvP arenas for your server' +date: 2024-03-29T10:10:13+02:00 +lastmod: 2024-04-03T10:10:13+02:00 --- Defined in [RON (Rust Object Notation)](https://docs.rs/ron/latest/ron/). diff --git a/content/docs/commands.md b/content/docs/commands.md index e25c772..4b5e710 100644 --- a/content/docs/commands.md +++ b/content/docs/commands.md @@ -1,6 +1,8 @@ --- title: 'Commands' description: 'In this section you will learn how to change the permissions of admin commands' +date: 2024-03-29T10:10:13+02:00 +lastmod: 2024-04-03T10:10:13+02:00 --- Defined in [RON (Rust Object Notation)](https://docs.rs/ron/latest/ron/). diff --git a/content/docs/configuration.md b/content/docs/configuration.md index 48cb1c9..0dc9153 100644 --- a/content/docs/configuration.md +++ b/content/docs/configuration.md @@ -1,6 +1,8 @@ --- title: 'Server Configuration' description: 'In this section you will learn how to configure your server' +date: 2024-03-29T10:10:13+02:00 +lastmod: 2024-04-07T10:10:13+02:00 --- REOSERV uses [TOML](https://toml.io/en/) as the configuration language. diff --git a/content/docs/database.md b/content/docs/database.md index 85718c9..9651faf 100644 --- a/content/docs/database.md +++ b/content/docs/database.md @@ -1,6 +1,8 @@ --- title: 'Database' description: 'In this section you will learn how to setup the MySQL database for your server' +date: 2024-03-29T10:10:13+02:00 +lastmod: 2024-04-03T10:10:13+02:00 --- ## MySQL vs MariaDB diff --git a/content/docs/formulas.md b/content/docs/formulas.md index 53aeea5..29dce08 100644 --- a/content/docs/formulas.md +++ b/content/docs/formulas.md @@ -1,6 +1,8 @@ --- title: 'Formulas' description: 'In this section you will learn how to change the various formulas REOSERV uses for calculating stats, damage, hit rate, and experience sharing' +date: 2024-03-29T10:10:13+02:00 +lastmod: 2024-04-03T10:10:13+02:00 --- Defined in [RON (Rust Object Notation)](https://docs.rs/ron/latest/ron/). diff --git a/content/docs/installation.md b/content/docs/installation.md index 8d48855..013eb04 100644 --- a/content/docs/installation.md +++ b/content/docs/installation.md @@ -1,6 +1,8 @@ --- title: 'Installation' description: 'In this section you will learn how to download a prebuilt REOSERV binary or download the source code and build it yourself!' +date: 2023-11-17T10:10:13+02:00 +lastmod: 2024-04-03T10:10:13+02:00 --- ## Download a prebuilt binary for your OS diff --git a/content/docs/maps.md b/content/docs/maps.md index a456a6f..4407287 100644 --- a/content/docs/maps.md +++ b/content/docs/maps.md @@ -1,6 +1,8 @@ --- title: 'Map files' description: 'In this section you will learn where to put your map files' +date: 2024-04-07T10:10:13+02:00 +lastmod: 2024-04-07T10:10:13+02:00 --- REOSERV by default will load all map files (emf) in the `/maps` directory by default. diff --git a/content/docs/news.md b/content/docs/news.md index 94d38d9..0faca48 100644 --- a/content/docs/news.md +++ b/content/docs/news.md @@ -1,6 +1,8 @@ --- title: 'Server News' description: 'In this section you will learn how to configure the server news' +date: 2024-04-07T10:10:13+02:00 +lastmod: 2024-04-07T10:10:13+02:00 --- Modify the `/news.txt` file to change your server news. The format is the same as EOSERV. diff --git a/content/docs/packet-rate-limits.md b/content/docs/packet-rate-limits.md index f0ce305..2d60cd4 100644 --- a/content/docs/packet-rate-limits.md +++ b/content/docs/packet-rate-limits.md @@ -1,6 +1,8 @@ --- title: 'Packet Rate Limits' description: 'In this section you will learn how to change the rate limits for packets sent from players' +date: 2024-03-29T10:10:13+02:00 +lastmod: 2024-04-03T10:10:13+02:00 --- Defined in [RON (Rust Object Notation)](https://docs.rs/ron/latest/ron/). diff --git a/content/docs/pubs.md b/content/docs/pubs.md index 937f20d..391b1fe 100644 --- a/content/docs/pubs.md +++ b/content/docs/pubs.md @@ -1,6 +1,8 @@ --- title: 'Pub files' description: 'In this section you will learn where to put your pub files' +date: 2024-04-07T10:10:13+02:00 +lastmod: 2024-04-07T10:10:13+02:00 --- REOSERV by default will load the binary pub data files. JSON is also supported. diff --git a/content/docs/quests.md b/content/docs/quests.md index bf8bb87..c1b3f8d 100644 --- a/content/docs/quests.md +++ b/content/docs/quests.md @@ -1,6 +1,8 @@ --- title: 'Quest files' description: 'In this section you will learn where to put your quest files' +date: 2024-04-07T10:10:13+02:00 +lastmod: 2024-04-07T10:10:13+02:00 --- REOSERV by default will load all quest files (eqf) in the `/quests` directory by default. From 7875267ad25a64b147930b6038b5d69abf870881 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 26 Oct 2024 18:08:29 -0600 Subject: [PATCH 21/75] Assume date and lastmod is always present on markdown files --- app/.server/utils/parse-markdown.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/.server/utils/parse-markdown.ts b/app/.server/utils/parse-markdown.ts index 9671e90..6923f4a 100644 --- a/app/.server/utils/parse-markdown.ts +++ b/app/.server/utils/parse-markdown.ts @@ -37,8 +37,8 @@ async function parseMarkdown(filepath: string) { return { title: fm.data.title, description: fm.data.description, - date: fm.data.date ?? null, - lastmod: fm.data.lastmod ?? null, + date: fm.data.date, + lastmod: fm.data.lastmod, etag: etag(content), content, }; From bbbef0a3aba3cf3509b60c4224c2c61b098911bc Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 26 Oct 2024 18:08:53 -0600 Subject: [PATCH 22/75] Fix paths --- app/root.tsx | 4 ++-- app/routes/404.tsx | 33 ++++++++++++++++++--------------- app/routes/_index.tsx | 35 +++++++++++++++++++---------------- app/routes/docs.$name.tsx | 6 +++--- app/routes/news.$name.tsx | 6 +++--- app/routes/theme.tsx | 2 +- package.json | 3 +++ 7 files changed, 49 insertions(+), 40 deletions(-) diff --git a/app/root.tsx b/app/root.tsx index 81226da..5b7bb57 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -9,8 +9,8 @@ import { useLoaderData, useRouteError, } from '@remix-run/react'; -import { getThemeFromCookies } from './.server/theme'; -import { Header } from './components/header'; +import { getThemeFromCookies } from '~/.server/theme'; +import { Header } from '~/components/header'; import styles from './tailwind.css?url'; export async function loader({ request }: LoaderFunctionArgs) { diff --git a/app/routes/404.tsx b/app/routes/404.tsx index 45a0a2b..617b208 100644 --- a/app/routes/404.tsx +++ b/app/routes/404.tsx @@ -1,9 +1,9 @@ import type { LoaderFunctionArgs } from '@remix-run/node'; import { Link, useLoaderData } from '@remix-run/react'; +import { getGitFeed } from '~/.server/get-git-feed'; +import { getLatestRelease } from '~/.server/get-latest-release'; import { GitFeed } from '~/components/git-feed'; import { Release } from '~/components/release'; -import { getGitFeed } from '../.server/get-git-feed'; -import { getLatestRelease } from '../.server/get-latest-release'; import { Layout } from './_index'; export async function loader({ request }: LoaderFunctionArgs) { @@ -22,19 +22,22 @@ export default function FourOFour() { const { commits, release } = useLoaderData(); return ( - } - release={release ? : null} - > + <> 404 - Page not found | REOSERV -

    404 - Page not found

    -

    - Click - - here - - to go home. -

    -
    + + } + release={release ? : null} + > +

    404 - Page not found

    +

    + Click + + here + + to go home. +

    +
    + ); } diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index 5c6daf5..36f0c74 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -2,12 +2,12 @@ import type { LoaderFunctionArgs } from '@remix-run/node'; import { useLoaderData } from '@remix-run/react'; import { FcDownload } from 'react-icons/fc'; import { PiScrollLight } from 'react-icons/pi'; -import { getGitFeed } from '../.server/get-git-feed'; -import { getLatestRelease } from '../.server/get-latest-release'; -import { getNewsFeed } from '../.server/get-news-feed'; -import { GitFeed } from '../components/git-feed'; -import { News } from '../components/news'; -import { Release } from '../components/release'; +import { getGitFeed } from '~/.server/get-git-feed'; +import { getLatestRelease } from '~/.server/get-latest-release'; +import { getNewsFeed } from '~/.server/get-news-feed'; +import { GitFeed } from '~/components/git-feed'; +import { News } from '~/components/news'; +import { Release } from '~/components/release'; export async function loader({ request }: LoaderFunctionArgs) { try { @@ -26,17 +26,20 @@ export default function Index() { const { commits, articles, release } = useLoaderData(); return ( - } - release={release ? : null} - > + <> Home | REOSERV -
    -

    Latest News

    -
    -
    - -
    + + } + release={release ? : null} + > +
    +

    Latest News

    +
    +
    + +
    + ); } diff --git a/app/routes/docs.$name.tsx b/app/routes/docs.$name.tsx index cf3aaca..2390be5 100644 --- a/app/routes/docs.$name.tsx +++ b/app/routes/docs.$name.tsx @@ -1,8 +1,8 @@ import { invariant } from '@epic-web/invariant'; import { type LoaderFunctionArgs, data, redirect } from '@remix-run/node'; import { NavLink, useLoaderData } from '@remix-run/react'; -import { getDocsPage } from '../.server/get-docs-page'; -import { ProseContainer } from '../components/prose-container'; +import { getDocsPage } from '~/.server/get-docs-page'; +import { ProseContainer } from '~/components/prose-container'; export async function loader({ params }: LoaderFunctionArgs) { try { @@ -81,7 +81,7 @@ export default function Docs() { return ( <> - {title} | Docs | REOSERV + {`${title} | Docs | REOSERV`}
    diff --git a/app/routes/news.$name.tsx b/app/routes/news.$name.tsx index 2af39a1..02fa753 100644 --- a/app/routes/news.$name.tsx +++ b/app/routes/news.$name.tsx @@ -1,8 +1,8 @@ import { invariant } from '@epic-web/invariant'; import { type LoaderFunctionArgs, data, redirect } from '@remix-run/node'; import { useLoaderData } from '@remix-run/react'; -import { getNewsArticle } from '../.server/get-news-article'; -import { ProseContainer } from '../components/prose-container'; +import { getNewsArticle } from '~/.server/get-news-article'; +import { ProseContainer } from '~/components/prose-container'; export async function loader({ request, params }: LoaderFunctionArgs) { try { @@ -30,7 +30,7 @@ export default function Article() { return ( <> - {title} | REOSERV + {`${title} | REOSERV`} diff --git a/app/routes/theme.tsx b/app/routes/theme.tsx index 766114c..a138fdc 100644 --- a/app/routes/theme.tsx +++ b/app/routes/theme.tsx @@ -3,7 +3,7 @@ import { type LoaderFunctionArgs, redirect, } from '@remix-run/node'; -import { getThemeFromCookies, themeCookie } from '../.server/theme'; +import { getThemeFromCookies, themeCookie } from '~/.server/theme'; export async function action({ request }: ActionFunctionArgs) { const currentTheme = await getThemeFromCookies(request); diff --git a/package.json b/package.json index f699db4..b3510e8 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,9 @@ "build:contentdb": "node ./database/seed.js", "typecheck": "tsc" }, + "paths": { + "~/*": ["./app/*"] + }, "keywords": ["reoserv", "reoserv.net", "endless online emulator"], "author": "Richard Leek ", "license": "MIT", From 596cf9685568f0e306c213b4d7c9c3ee49e69243 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sun, 27 Oct 2024 18:20:51 -0600 Subject: [PATCH 23/75] Avoid initializing marked multiple times --- app/.server/utils/parse-markdown.ts | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/.server/utils/parse-markdown.ts b/app/.server/utils/parse-markdown.ts index 6923f4a..fe2f452 100644 --- a/app/.server/utils/parse-markdown.ts +++ b/app/.server/utils/parse-markdown.ts @@ -5,6 +5,7 @@ import { type Highlighter, createHighlighter } from 'shiki'; import { etag } from './etag'; let highlighter: Highlighter; +let marked: Marked; async function parseMarkdown(filepath: string) { if (!highlighter) { @@ -14,13 +15,8 @@ async function parseMarkdown(filepath: string) { }); } - const fileContents = await fs.readFile(filepath, { encoding: 'utf-8' }); - - const fm = frontmatter(fileContents); - - const markdown = await new Marked() - .use({ async: true, gfm: true }) - .use({ + if (!marked) { + marked = new Marked().use({ async: true, gfm: true }).use({ renderer: { code(code) { return highlighter.codeToHtml(code.text, { @@ -29,10 +25,16 @@ async function parseMarkdown(filepath: string) { }); }, }, - }) - .parse(fm.content); + }); + } + + const fileContents = await fs.readFile(filepath, { encoding: 'utf-8' }); + + const fm = frontmatter(fileContents); + + const html = await marked.parse(fm.content); - const content = replaceVideoTags(markdown); + const content = replaceVideoTags(html); return { title: fm.data.title, From b4cb9857fd05f76e95996aa91dfb4cb69db3de69 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sun, 27 Oct 2024 18:23:02 -0600 Subject: [PATCH 24/75] Clean up props --- app/components/git-feed.tsx | 14 ++++++-------- app/components/header.tsx | 4 ++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/components/git-feed.tsx b/app/components/git-feed.tsx index d6ba6b6..5f20e76 100644 --- a/app/components/git-feed.tsx +++ b/app/components/git-feed.tsx @@ -1,14 +1,12 @@ import { Link } from '@remix-run/react'; -type Commit = { - id: string; - link: string; - content: string; - timestamp: string; -}; - type GitFeedProps = { - commits: Commit[]; + commits: Array<{ + id: string; + link: string; + content: string; + timestamp: string; + }>; }; function GitFeed({ commits }: GitFeedProps) { diff --git a/app/components/header.tsx b/app/components/header.tsx index 16ad2cf..fc2bb28 100644 --- a/app/components/header.tsx +++ b/app/components/header.tsx @@ -13,7 +13,7 @@ const getLinkClasses = (active = false) => : 'bg-amber-2 text-amber-12 border-amber-8 hover:bg-amber-3 hover:text-amber-11' }`; -const links = [ +const HEADER_LINKS = [ { href: '/', label: 'Home', icon: }, { href: '/docs', @@ -68,7 +68,7 @@ function Header({ theme }: HeaderProps) {
    diff --git a/vite.config.ts b/vite.config.ts index 27bf36c..4918b6e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,6 +18,7 @@ export default defineConfig({ v3_relativeSplatPath: true, v3_throwAbortReason: true, v3_lazyRouteDiscovery: true, + unstable_optimizeDeps: true, }, }), imagetools({ From b5b2eabc6453d457314b2b4f6139a62fd38e0b5e Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Mon, 28 Oct 2024 16:58:33 -0600 Subject: [PATCH 32/75] Remove unneeded constants --- app/.server/constants.ts | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 app/.server/constants.ts diff --git a/app/.server/constants.ts b/app/.server/constants.ts deleted file mode 100644 index 2949c1a..0000000 --- a/app/.server/constants.ts +++ /dev/null @@ -1,7 +0,0 @@ -const GITHUB_RELEASE_URL = - 'https://api.github.com/repos/sorokya/reoserv/releases/latest'; - -const GITHUB_COMMITS_URL = - 'https://github.com/sorokya/reoserv/commits/master.atom'; - -export { GITHUB_COMMITS_URL, GITHUB_RELEASE_URL }; From 2194549837adc481a01085b162e4850529c7b71e Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Mon, 28 Oct 2024 16:59:16 -0600 Subject: [PATCH 33/75] Fix typo --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3f394f1..cc68548 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "reoserv.net", "version": "1.3.0", - "description": "The official documentationwebsite for the `reoserv` project", + "description": "The official documentation website for the `reoserv` project", "type": "module", "scripts": { "build": "remix vite:build", From e628b7d169b3d9350bd1ffc91bb0e76e874534cc Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Mon, 28 Oct 2024 17:00:47 -0600 Subject: [PATCH 34/75] Remove unneeded functions --- app/.server/content.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/.server/content.ts b/app/.server/content.ts index e68907d..81c90c1 100644 --- a/app/.server/content.ts +++ b/app/.server/content.ts @@ -76,11 +76,6 @@ export async function getContentBySlug(type: ContentType, slug: string) { return store[type]?.[slug]; } -export async function getContentByEtag(type: ContentType, etag: string) { - const store = await getStore(); - return Object.values(store[type] || {}).find((item) => item.etag === etag); -} - // For development: reset content store on module reload if (process.env.NODE_ENV === 'development') { contentStore = null; From 141c85cc3fcfb47dd59ccf75c90f5814af650ad0 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Tue, 29 Oct 2024 21:02:30 -0600 Subject: [PATCH 35/75] Update packages --- bun.lockb | Bin 317840 -> 318968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index 4d0ede7969f80a1d75a892c7fab37dbf717bd904..f9538d24bca8b0149874621bfbf40e4b540caf1b 100755 GIT binary patch delta 53635 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 P6Sx-qmh4@qVW|FJrOlam delta 52729 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
    vu>TR+<1xE-4g3Ylb>r%^Gz9SCm5Swq) zWFQpr<+Sh=jIW)-q;ksV`{sAZ_Y52!Yj4jnIQ%pc=9W7m6Kp)89{YJjw|~5MlG!Qj z2xcCChwh$6Evtk987)ir( z@I=;GYJO4dGV!;6Gq9aH<{!JPc9ycBw*&lRwyxxV7T*qjd{0SdHJ#>x)qd@1_%DLv)DPW1IaG|SKqU;7~=6Kznzq~bFHOL7GN6kZZ4UWiPOZZ zAp76d$L>aJ7Ee<~J-A0^g)lI-cC+QsAFY=Y;-QC3mMJ z&P~&lpkiM^&-OJq^fd*88Fjj->|I-R&;#W#c6Q@u6nasNgL^Xm0bz+#->SS-Am=H|wqds`dcLn}0#Q`yGb6p5>}bp59@Z5;)ebRd|T& zS=mHbq7&5=4PM2$YC3WWX`_~x!t#k_=u5J^4AcDml437ov=6_wuKP-uS+UUQNLU-w zd79BQ!O-{>Re@Ks1cH}+-QdH~y=VNsU7f{SW8PIi4J+G^lk93r2HMEX-LxA8y&UNM*}6@52VpQpm*tb9 zb~k#s6Zd?uGr6*P<*TTIA5%I|YB_#3qSH9xB+Gg^6zT^V*93UZ@}57-XPVQ5k`7f} z4tCW1cq{m*rpF-flo5?P>Wjr3{``!$;iI_G@6zYao9gcgb&s6#ZMg08rv9C02>i7% z!9R@MXVt<1_w1BQnvXGlV`ks-#y~tU#e-A5Cw(~}@Y6Ci|0ERtiptW%t|&X1QcR_? zB~3Cga3i})H2yOU41&|^KTv+vf~@KpG)#9iG Date: Wed, 30 Oct 2024 13:25:00 -0600 Subject: [PATCH 36/75] update packages --- bun.lockb | Bin 318968 -> 318968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index f9538d24bca8b0149874621bfbf40e4b540caf1b..b1466870d564b409dad3342ce17bef8a62f0fa0c 100755 GIT binary patch delta 513 zcmeydTlmLr;R$*Q@28g~{*zNHyYF@)!cUdOq+*-LpUc0p6O5+1OtXJ4xqG7@mn}z7 z*7APdYnBHlFEEmrTw$w#DzF1hVDk@K*1rzd%%-KD{vN)h{Oioa!G*b!s&9qzKmQAu zC|0^`@2-;Tclc{Rx@ol@-v45!R?mdzs*KCImnkJ?Yno0^n;XEvf(d<>#%O4ae7|zSriRWOR!4+U|<>x7Lh6%(VTj zHS@`}f@TKBsb+=-7P>|TMka;^MwZhJ`&neCKY7V47lI+DSCU?3pl4*NXP{e@tcxLC woSc!GQks)mWN4{pfI|($_>Py%Vgl&;r!zLPC`{k^idg}>)OOC-%gMFhPmn{dE zt#Ig)ey>ZD7Z^!QuCP@=71)6$u=$5A>tBZ$-mMJ5r&die+tDFjEbKAGTJ>J}c^~sh zLS9i{GjF(Z#a~cVm?q}7Q{=0;hNe&5?Q8u9{_s`Dtjj;9Idzes+|lW_){GMM&knws zu<^I0kGs2xcG1##>!sSNYwxe0-T&mV<(hMA?z1ip`+mf_#k@+mnO%FX_xEh&!)RfYk)FMMmJp)uVa6?(AcfVv7VTakp%gUlLedjA?1%&k=q3xWnncsf`06sCc AX8-^I From 3f8904351770476ba2efd630642795df10f79242 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sun, 10 Nov 2024 10:16:32 -0700 Subject: [PATCH 37/75] Update packages --- bun.lockb | Bin 318968 -> 318576 bytes package.json | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bun.lockb b/bun.lockb index b1466870d564b409dad3342ce17bef8a62f0fa0c..22d3573f7d553dba6dff58a3e2f4361e2e52a306 100755 GIT binary patch delta 45288 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 Iw)!hO4kraZIh$y^HRb`0_uEzG_%`X;S- z_RnVv(ISgNq<%k%Gi@7}RWr(DfIl<%LY#j-E~x(WR2I18wZwa12gIF%Unbo>0OM3r z>w|C@@=xu=gW}f;Au)$43XtPTSQSN`65Tz_b9oY*^qK9q$8LPn8Wd##+M&e)+_WN-C0M{>5@-a;G*UNPN7)GeQO#em?g)q~$3flv79-Q_x&mNDV1~V{>GE9E;P5h9Ae7{KO(kJq{SILaOMhb}r zZeZt3R*YlrAHo=Zm3&h%<;Ks`JJHHim~tcAAdq-kO!g-r@i)ahi?%OOoZ9}hlxe3t zh{-i>hQB`<`}ghf5!Gms^;R>4=Ath?OS0w!Hv9H8P>UGj0z9*X;59FemhuLYmO5Yt->1B+-#FPhzEluF(SalT+5+m4_ANV_$YP z(?X2$Z;qa6d-Dd5Amgk59{zBQ!#4elICZ+M6>V()07?a3c8EJK!g-=!FT5I2g`2pGI1l*zI3_Yiw z>w$CtvS5#K+9b10xq4(WTG$!m-ucr8wOny^zrIDDj=K9zUd7Gr{Z}75#r=+Y#D_D~ z$b7ld>rCXwvaskOa=%p|n5M~iU>YT^CJuD5=s`Bl{Y9PFkF2v#rOlYZT{V&3p$dPGAN zO$GuUoauzLk~(t`&XrN#IjlxdHO3@vEO%`I;<2_h54h;$#qwy}?5lxf z!MMGJGUAt2KZfX6P;v+=X5h~*iqW=%Yxq*Hdth%fWWpcp98Qj6++9&_0VW~GR`udi zo|?Z3bg$K%xxY(VJ1JEeSwohWka;6IMqPpjFn!4VR(RRP@tfN|?xJTv_8p4O^yZSN z^5_L%b8zajZ0%~}giMyq%PxB$T37|D?P9-;*#Xag*0-o=_+|L$#=Gi7Dmz&<`=7cq z1<8N-?B0_Nar}Hz^3^~VUWSLMt0i?I?BQiC`M!6xuB+wgV{h+^b*?*Y@Dz%aK6*w? z#y+}#KM%N0(iDn6%88Z<&ZqH!em&V=K{yJm=bazb($+c8{RPZG4&p1(!sfQ4tKGHq zcBwtk!rTtXMby(=^i{_K!IFpj9eUkOICCXIM!4bu_$#6_6%f=*tC6EJY1DJS}s|0cT|(9P&q6nld$%XeJmK0b5Zi#Kc8##&g~@?=32ZBxh;QF}Lp)H@YWL=II`LC#b2_DGF2ZGhN<|p1UTGB-&?@n2w z<46G|e1dyR5L3PBaS5g|noLWf%!v)$pI5(hn^V<66xd^KeOT6Rbf$s4N>QFF27-mE zR!=FaUH>bwdPEIc*h$|2r=Obsv)ry;--7?|D2Ust-tu_-bMmkO>ao4?(4UUDD`f+K zFOA;9rMYh@_F4EBUPcY2q8E9UiAPs#9>*8r$KD>76oF<9i~MH$e?NQfw4vjRJJ&fL z>mq&a3!_tm+aUj=!$0Yw;6n6%k?(I@pD_CWw=Y~gb%Ec)=|(5d%`@HkmDPgq861CW z%(A^>58A7C;x{wakTzq?-deib-c7;{W(w!}Od2&{$>*h6Wt__c<=U{DVt4b_9#cI$ zr}XaS=H%+^>h9v=+>2Z`E89|4jc7OeqqZK4W-dk90rARd!BnS@nio!;HGSG*|LF^G z7y=Jr5W~r@tr0&pFto!mr9GW~D7G`url=O}wap)io&sf6i5<1mYQ?oy_+)LZpmf}3 zsZ`S-6J>iU5|k$7AS#!WeN&|=m5a*O>}hYR6P5G%EiYqb2k8Ou8Tdm%t$z{GYo^jf zo6AQvO%Xv<71Ex*aMt`TQve2#xQ63vgeSQ;d zt>kl$o=!dGznpOFp>@eunpv1WC|624^+&mqhIbb`(7fA9%jR8g@w>xr(WcwVLCpi@ O-xasC<+qh~ivI(e)}Lem delta 45714 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 diff --git a/package.json b/package.json index cc68548..b670635 100644 --- a/package.json +++ b/package.json @@ -19,15 +19,15 @@ "license": "MIT", "dependencies": { "@epic-web/invariant": "^1.0.0", - "@remix-run/express": "^2.13.1", - "@remix-run/node": "^2.13.1", - "@remix-run/react": "^2.13.1", - "compression": "^1.7.4", + "@remix-run/express": "^2.14.0", + "@remix-run/node": "^2.14.0", + "@remix-run/react": "^2.14.0", + "compression": "^1.7.5", "cross-env": "^7.0.3", "express": "^4.21.1", "gray-matter": "^4.0.3", "isbot": "^5.1.17", - "marked": "^14.1.3", + "marked": "^15.0.0", "morgan": "^1.10.0", "react": "rc", "react-dom": "rc", @@ -37,7 +37,7 @@ }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@remix-run/dev": "^2.13.1", + "@remix-run/dev": "^2.14.0", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.9", @@ -57,7 +57,7 @@ "typescript": "^5.6.3", "vite": "^5.4.10", "vite-imagetools": "^7.0.4", - "vite-tsconfig-paths": "^5.0.1" + "vite-tsconfig-paths": "^5.1.2" }, "overrides": { "@types/react": "npm:types-react@rc", From 6615eeda5c2b0a6645f7c44ba6aa52231ed1aad1 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 16 Nov 2024 21:27:04 -0700 Subject: [PATCH 38/75] Update packages, migrate to routes.ts --- app/.server/content.ts | 8 +++--- app/.server/utils/parse-markdown.ts | 42 +++++++++++++--------------- app/routes.ts | 5 ++++ bun.lockb | Bin 318576 -> 320960 bytes package.json | 11 +++++--- vite.config.ts | 1 + 6 files changed, 37 insertions(+), 30 deletions(-) create mode 100644 app/routes.ts diff --git a/app/.server/content.ts b/app/.server/content.ts index 81c90c1..9403fb5 100644 --- a/app/.server/content.ts +++ b/app/.server/content.ts @@ -4,15 +4,15 @@ import { parseMarkdown } from './utils/parse-markdown'; type ContentType = 'news' | 'docs'; -interface ContentStore { +type ContentStore = { [key: string]: { [slug: string]: Awaited>; }; -} +}; -interface ContentMeta { +type ContentMeta = { [filePath: string]: number; // Last modified timestamp -} +}; // Simple in-memory store let contentStore: ContentStore | null = null; diff --git a/app/.server/utils/parse-markdown.ts b/app/.server/utils/parse-markdown.ts index d7c7742..bc6af4b 100644 --- a/app/.server/utils/parse-markdown.ts +++ b/app/.server/utils/parse-markdown.ts @@ -1,33 +1,31 @@ import fs from 'node:fs/promises'; +import { remember } from '@epic-web/remember'; import frontmatter from 'gray-matter'; import { Marked } from 'marked'; -import { type Highlighter, createHighlighter } from 'shiki'; +import { createHighlighter } from 'shiki'; import { etag } from './etag'; -let highlighter: Highlighter; -let marked: Marked; +const highlighter = await remember('highlighter', () => + createHighlighter({ + langs: ['md', 'sh', 'rust', 'text', 'yaml'], + themes: ['github-dark-dimmed'], + }), +); -async function parseMarkdown(filepath: string) { - if (!highlighter) { - highlighter = await createHighlighter({ - langs: ['md', 'sh', 'rust', 'text', 'yaml'], - themes: ['github-dark-dimmed'], - }); - } - - if (!marked) { - marked = new Marked().use({ async: true, gfm: true }).use({ - renderer: { - code(code) { - return highlighter.codeToHtml(code.text, { - lang: code.lang ?? 'text', - theme: 'github-dark-dimmed', - }); - }, +const marked = remember('marked', () => + new Marked().use({ async: true, gfm: true }).use({ + renderer: { + code(code) { + return highlighter.codeToHtml(code.text, { + lang: code.lang ?? 'text', + theme: 'github-dark-dimmed', + }); }, - }); - } + }, + }), +); +async function parseMarkdown(filepath: string) { const fileContents = await fs.readFile(filepath, { encoding: 'utf-8' }); const fm = frontmatter(fileContents); diff --git a/app/routes.ts b/app/routes.ts new file mode 100644 index 0000000..ad9a9b4 --- /dev/null +++ b/app/routes.ts @@ -0,0 +1,5 @@ +// app/routes.ts +import { flatRoutes } from '@remix-run/fs-routes'; +import type { RouteConfig } from '@remix-run/route-config'; + +export const routes: RouteConfig = flatRoutes(); diff --git a/bun.lockb b/bun.lockb index 22d3573f7d553dba6dff58a3e2f4361e2e52a306..e1c5376c8d80413af5c976a5610278251ea71400 100755 GIT binary patch delta 73017 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

    ;9*5RNG6B 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 u?!@i{M*U*Wy8=d$jYxr8>YZlw7z+Vo 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%0AZSwBUPNkPj&XS2`9>v*Lg@&=Mnd4Z$! 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⪻s!os=| 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 ICH>|91G$i0V*mgE delta 71355 zcmeFZcU%<9x&_)ZGCB>SqM~5LfEfe90l`5<6i`%*7*I(9l9PgpgIQ5jY_(081LlZg z79*mlxJ5Bw4w$nW-G;Zmt{yh$oPEzb_rCk?U%P(}tJbQjud2TKs=B&IIB}ucyR2&S zTQ`sUL%ZXf$Fk5K?+jy4_}99g*tl}T^;Z)1b#M34?f#s?`}c1faCFs68&qG}#566z zLbqPYag{hOc`(ojXjzWqDgrx$n*mdRwSdN`Ss54;7!;TQ6VcGk!2^KCKnoSenE=O) z4T6@N#^=aR|O|~7ZC$exj5gr_}IW|u^|z`fiWR*u@&S3&ua+Q<=X3>qhB<5TiH&0 zL{vx=rnQ;O>&nHyqa4{4>#=dX0FwO}-?3JHkpYQ*iE)9k=ucc?RG?KzEcc*3D}Mt> z;|>oA53~yKQR^Vb~`s`zS8?(1M+E( zr?rrlnl8CUODu5+Dj)?x95M(?faDWzAUXRD&=9EaXaG1F>M7?hhGFW^BP%xM@EB^6 z<5sn1KA8uk@`-KawGVE}>A2+DZCM3B2;{_z;MAa5JEq6Sg@lnu3c#sj-K|+eqatIh zu!@4OfzycF0paK5XdAW(okRIb;Cq0y#y0}VZf~?h(eFfvvdQ`AG0mEOgbVDLLH%+# zgM6wO9}y7ZAHs1$RP|=MfIz?aAoQxYJnUWetXHwYzA;hIe|6xvhNyH8XaPI{L^vj| z1(Lg`$`}NsovR114zP`krodX@KOC4>o&vEPlCJg4?h4`VP_Rz_Fv4P=Z0%JJNKQb&5z#Z$tMqS;7xp5Sb${7L;xu#t5 zZWN#ZNyo^^pQ+f}XptlXNslEItkku2-rbne3rHap;TsVdf&~&7>lYsq7QoeVXJaz} z(hRjpA^-kaUmToIMzX=`9L9TH8EpxLWFgt>YW zkQRr3Y;0hxKgTJ+X%bTgvq?FUHrO zHhrxxD>oHL9lQ>tC=}%K7?4g9CPAQ#@W7a$Kx>ZEH+&O|fJQjVH#ROB9gPW$k42}s zW$+4lWGDiaR{tg-?QiGh^8UftumgN!VzI|j!)JgdK-}2_0zzV?E4mJ(26-9(t9m+Dx#E#1d5-?6q6#CV4!#-13_D@}q0?C-pgFJvNDWp3 z()u4A5{ItiR2DXdfb)%k0bDrU#KnaK#vrI^i{Uck)#{@-Eh4l$+ z#LIv*(l&{#BYu&QVSbpifXHyV`@~v8r~G%oO2CIQ21dl8D_B6Wu~uV)edF{4As!bK z7#JQ9VHMyjjH+2nHycfxqiQ^m_PAC_%z1NwWHK2@U8^6@aN$H&4#s`Md;-UW5Z|HIqh|I%HsG44j)*$8bHv6*NAq~*~7 zNDho%A+#vpS~nB}q?=bef%*6ON{(v)p1g`VBmzi|(r;LazF}b@v2mRKB$A8rRNrq6 zi`;HN3hf!NR~fhf`Lr?StYyuff=&}L0*FA+C3i=HW~6W(3-QtHUdK&AMKVA;s&7~< zmkDkPz79woiU-n~3<`{hO^op8M#n}**kRUcK&Oy)#=xi}eK&D92yw|aK6hhXcsAZOp@KWQ?*3i}cswE`vl!ct{+#W;-ho78&3h8;q0J7~e25)Mp3t zkbZ48#mH!FhV8^t7_j^<<~a{=+B}-><~VEM59lp`;vSA`1&jtZ0p5dN4>*80xu~*i z@GC|@i@k9sE5HM3*D=^HEHkX9dxC88+^7TWAk_y*#T~Mkr?Y`HLz;ukLCt_PgPG7P z0z0ETaeXMY2R8!$;}EN-e|mZWP9an72wRKq4@(m=H2EPCWPm@)GNNK4{o%x*Tc|)Y zk_V)jz#T?cBluL?aLx9*U@0M1}P>yZAS;cxf{rd_1`wBl_ z_Do}RoJEfQeZzfpn#QSr4>8I&J`8cd;aLZV36A@GjQM5bDTe>m`wrLB%x~AuNL!vR zdDvOj&vg*mp@DWNKn~Zx$EXKh4ZI4FLVq8|MgGv7XO3(DqzT!Z!@j=1X z332SDL)%NNV>f_Q{}hl05)$hh6XTo69RR0#QSsq)_T&iBKF1Be!VE`7_y>Y=V`F@y zq7tzML#MUXBcD}#oySH@2hwpNQQRYN+T5-I$s7JH^}pB&q?s$f$oO)!;fad>Tmk#y}cT{0+7i-vAqdKLPTBWtEn?Za3LJ^tq5t zivDeu{w-E3Io}9K8}40{s|h>q>c%R2;!=N)1>NO-#vZEI(`*ML#=>(YT(CJ=IfS^ zncbg2>Oj&HwrdzYCA)~GUl6FmV-%uXm34UnRUZZY&uQ;4c+rrY(FwN7h-PVo90<7()%xYB@? zffe4f%6(*<0-Z*a03@RkKpIVyRk&{yLUz&zR__6jrsF!0%EiXUgiuJw`Nj~G;}YHq zhSgf@+I(j9|9Q>DLnrV1g;8;i^NSxfie4Rr1O^6b>}Q`SN?CX-du|(-3juSWy$OcH>j*JM5qnAv0(-h)w zH7deC*f%T`1|NQ74dQ*C)u=GvpvV|%hU3ov!Q$;OkUF#zNCR09Bu6X*lKqxHC_j)( z9_v3gBp@yr?|-G8IMzQ5O~TOFSjise4Io3FzgVDJ18aku18JoxfM&qwKN(&H(h55Q ztO4BklM|MkceFU#D7&ru)Tz_AxZrNfW$8(ougjaT$IwYGvq=-w)|)C%?d zXN7mo=bv7<*R1wCrC?UidqLA;wa2z!o1Zs(T~SzKWucxsg|mH7EBCCBWtF2gb$>F@ zctPVwLUL=1D*4`9uDE|%^~5i_amP+ZmFMk?B_vP^E(a$2BYv?{TO@B8a3Jxb1psot*Ze|pE*E>#s>$FH@y-fPu{ubO^t zH$NCmv|B19Tbh~Gv8ifrd8Kjs;H`~b7*88>q;2HorD-*j>;#K8X2I)5kBLwGIkawP zqfBnw#glVvdOZEIe@gQT8)mI;)S}l~?S%3^%RA255Rnoy`lye`^Rp|bA9l(3QEB7Y zsiU5@?j3JunEv3_)C!MmYH!xv+wm-u>veK(|LaHmmcI-?z1;hm*M$KiU;X+v-}j3U z)zYHbZsU57XQghoN~jZZ<-yG1AKE#ux12D=q}Hd6RaYn%jGC`EE@ZT^Zx(bS#izD& zn?qeI@7ffXdL<=b&i;WRcUHb>SYI@++pzEKlK8Jv2fSR6DO_poCaiAUO#SY3Qq+nY z7k?9S8b>X#v=D+V&D^e6a)_vE+QWUh>46uurX30WY7!Xw(>8Bu;`_|P+s;QOj&%1o zYB+1atp`8zb~Lj!UNURN^+5&$E1oz$IbiSBWjzK}Jk#)om*~|{C~1?R&bsY2==#_F zorI{iecIYA@E@0*zB(y#$>quuXZ95Pyj`|-@{J*@En>j;(*ziJ6Ep!eEibU z*Y~`2FMjWdwrYii!6UGIW@EpmwMQGg?CYU@`MB@P zF1-iz_DmIywLX^Bx{GzQtHMl+WT8p}vnoD4`WlbgR5jsb!u`V+dj5zP3LAP0of;Jj z_KkyuC6-Hss9I(gv1cYf+q2WdU{mzs`Bqo$=UCO5Hhjsv6Wwzg-ubfP^ul^VpC)EP za+9{|W7E%%TXdj@t8k@B+r7n2?G=Js^JY534x<}2?N;sX_^9i5%WWE!9UeOF{g}Oj zF0}9d`??!n>#sO%@7}AP;%VbAXZQCGZSd3J;O?R``zkc@jDFnt{)y%LE3S_Y=whtP z&$zHkl{KQ$+|vg~x2T-VO@7ei#q>G{EXo`CcKFr3Vr` z*SN;?ufNgTaqqe24HUw=7WRARx4f@VS1@o-%9`tRK}fKkue_%a3~jW=m6RN3Lkk}p zLk+>pzU2ZNwecQ^PGv>m#4%o>6mo5}igp5T>#P_pxZ64#A1udl{mYhHV8g2oIIbHs zPB4kk@P1&{U!oDuXKsxqu@T1VekRvZ7k>u-EdZ)vO!kC3EGl z6?c&g7ED=%eT0P9s+&>Xuld90j} z=AhvRfDH#je_`Y^7>$~-?%2OenR01G>NKyyU8GNGkpW;dT!oN^{>_q^QtJCru-;Oh zm%WCsh`rna4DPkjC|xTFxlUSD8pJ;264e8w`U|Nyoz#`}4y5jdfN4=nC3x9tnjHqC z5m#e(h|-^%pwn6Bh4G#(>nb!GD!j8cYgQAtbL!|n7cK{#3J-~_)pL(uC$&^~BgDV5 z{4a%f9W!q#8>Z%QBPzZAr7U`(&VgTDf1j~*xlFGmfpt|~{cKvUdR zW=d&xW`nWeo7icT=c@`HowWQP5L=--o1~@~U)xd^0A>ePnWj^@w3^`2S<7F9NLCD_ zX=#SR(@+)Cj7NcWEoCRc+Jmv+E0Ob9U))VuOmWm}Jhb z!F^X+jMR{FPYuDat5%s=Q}F1j<;&q-EzhK#hVKkUi$)=poNXo;x@!5~AhNz7U=%fl zS+36fFnE|ES@M-~rMY0(O{=_TE_ig)@>Os=?ZoozG>SgL`EJhqTxiq`b53Dt2?{1N z93RNkX>u2tsL z5mEr3>Ik{+TD}#I)l^yPf?|~5?%~XDgk~$5pn17fSIG6y^0n%fwt3iIaPQ%)TvJa- z>7nJnAcF>mbp&6vudnZRzMF=R0JBD3Im%P6t}mqY)bg(&QtvT0wi-nXf%kM)1PSh* z&dQY*LW-wWb;AM{1!Gsoie2$k;z~V1+zNf{TVWGb&T1fd^wO$cAU@L4fS59 z4)}rn>6_JH%r}^1{#GfYma7Zrdpj#)1-_3n{~8Zg-qeufL)XS^CuC8V21Y@PZ3FX? z4c3R1TxhShWHAKq_0}jx2(!GL`K8dPNemA=$!}n6I?y=f>}!gHfYAY%EG2SST~fCm}(YS7uuxw3rJA_m7^t~ zC@1g(oE4se`v7O0Il*yb0K$tR#mA5S`mx~I;vJ8)rV5NZA*?Dh`P)HDPR=; zXrZr0d99_8GDyo;$EtROi2ISdhVKm~2SIy{a$YOJ!&}Q=fJkv96;b|bCFFW*Rc=-s z*ICH(c2vzm%88m&{%$20uGI3oTkGSF9Q_2WCu&Puzp7muYy{G{QjntFsHEw*2G$*n z?dfeWPc%8@=(fn~z&x1+jYe76Rxn(RfNzJ#aEO>5okkhoPDoj;RX%Memzg|SMW*$5tMwW?MaZ$BZ`#gW$`MIK@M z=5a6=FboF!rV_heDO0-I2`THe%5*y+cb%5Mi99)e5fC*IJ8sMh*a$GP35WKxuLy#& z$+%H-)nS%S7^-U!yGT=5L!;lH=w3MltQQKaq(yoFjD?1Ymqzs#ti51t=cu%_7ji?i z{2=6!8!8BCkL=Zd5(kY^yM@lPrdN}fzkfN;%K|evm)3#2t!VU{Pz$mccpuPw* zFe-^VR;Wgm3)V?U^>XAJVv4&$$87b{@X=so0dcoaquL3E*hi_CNTCWWQ_x$X0=XW+ zjR4LBqpbwT5Jb&eFjms!rM&^RMMv5rjmIK|m`+x49EXBhiUa;0M4Dmr-d$r-6DBdq z$!aQsPa7fIx+xV4LJ<9l*)^CQg{f4G0ynu5#wxtCF&t~#*vs3=d9=<20Bc3kHX#)# zr78}@vXD}trKwz`SdFHG^gT#Mij})ps@Z#U+#ssUFGq^z3&GM?qq+gsi*_dCE`vD^ zYaqFt6cHu^TMEfpym|=R(s5eCRL=uLIMD*uXjDaDxR>IlVS*(HkI4}?0*vBMx_$FY z!LXy!8bEBG2g4FU<8+%d9LDUGmsl?_1RxG}*zJ@@h6%ZMwR{V#^-&O|dx~m4m=pC@ zdC^BOoT24ShUjq?9l?T>UI)|H#pw&wK?oBC_z%v9^N-7vO zLX^i{UzG>uBzQVH^885F2A*)R*7|~#t~}L3$`d@(9r-Ir(Wr6$_0XsceaSb*wvN0T zQsnLm(n)v$7m=pTMC=E{!bM4J zM*Md$XE1C79va>;uyosZ*Qh3eVX@!KV3KI-z@%fEy-OK3B;|oog2x># zZ-c$x3q`P(t<~^T!DMf{YLth91j8b&iVvo#F?M(4`yoZy7&iJai*zvTIB4q}SQju% ztfNN7he&%yFGr<+h>)9tgCKvR5uSnKk*g|N}kr~E}vE+hL<7(+(U=XDb zF^r7wBr`lEgG~S<>+BYu3)U5koiZy$vlj4Jk6TSonPD-)2Pt6Gg5+c6>1e?)7`ONs z`Hg{KVy{tdjuAY9w0z}Q76)v(4+dkA1S`rdv4Y`4Eq@zgYZ$|E3&Fw1F@}eFbg(-Z z3!Hr9>A+~(F%hmB{sLJ4QkFB8ownIA*CK%p40ltk%F$qLQIf5a-C$&s4f8pe>~8E@ z_K6snw65u!I4UJ=E&LXl;l>qeuLfaNOyKPfWJfXA*oaZ`0NO_^3qwvi_bkToUpc}2O-OeLav{d-!hTeVF%3$I@U1U zhpo~X%tc5Y;Ak=#DO$1$m{H-=R(}Ne4H;}P(XdUD^_`-*2n3_$$zIxQ0vlP{{R)#< z1hK&k29t+|NZ1R8MI{fk{$%}Zlbgqa1(fF91{+?=9Hwv_b_BWJ8n8dz^#_tw_3j4GgY5Z4>qi{6Zv2` z2FP7%G((@~b;w=~!dj)!x&ij5$(A$OhK0t_zgV!&Fk&dNePFC4rbuZvOUV78SgZsjh;t){)|lTFIuHIS4jDyRTa!dmS8-Ob|>`$_JD^I_DYTFDp&`4_A%bM5dVD-^%dwh&O1d?zxyu|QU+^P zvlmGx*ujpfn@HgViT$(Dk zRG-_UG$kN~8xr-UG*y3@UJEQuZAA*VYLt6hnzC80*T$Bn4kOi#UJF9Vzt7*OBkCn)L>;*xz0a(jL~ZSK-y- z9xy4`q+{1pu#r?nHFXWnjgpxcNDYxvUDqN&q|{WTa2SN?e57cgcm~25%xE39F4B$t zkaB`vfx}n5xRcVbR4XBNkj#HX%9~8_{ns;Z;J$$kc{-TXg!1fqAq7vxKOuC39d_^N zx&a|0F=}l-7#6Irqw>-QA$PP^X|z!=4ArVSZlp5+jH?8sdJD$(j(p-KJO!Yp^u|JY zcM~~JrOlw{SRBTbb2EgLFs-WXW?GqezT?LtMJ=KHA$tQN(hS$#A~(rLAk`ZMFvD0= zN5PmIaNJVoR5g*&l&C8ssmCC`m25h)e~gLiY>bSd{9Qe%*EGT6g$<0Pr$ zUXF{9Qd^N?!N>2@M~y#HeJPjEM5@2!Q;NJUne3Lt-XU!Sqg#@6LRD4SPu-uQV z^Ux?TTIXosN@*55+15G2Zn9F_{1`BbH5kS%?Ic)tFhlA5+3+YUDV=py6Ts}H5${8a zMhx#AwpW960by@5w8z+Xflvs+8xSz&GP+-G2BW6fvsjDc?7m|t9ot8P(P-HLf6H;f zL(uY%AyQzoXPJ5@*lvN<2#55Q8T0dWFd8oW9HLQWf%!=faJ8~o=WxEoYp-Eom@_>8 z%t2}t%Ci&H2e3X8qp<99l48bqijx`%Z&nBmz5=5r*f{H*Vx3`cdisK~;G#3sky1wU z=zCfp9@ugD&0u5`F2#viaYldI!hxH20UN3B2LA~xSYos{MVys)0satDI1ixf`EdR@ z)^q9Xr(AeWNLixgFG1{u5^RF&KY2-;F}9ZzC<7P+N&?ZW zBI^)l0(YAQVANUm*nbZUTQ1!WSWm#s`6wn&d?=Eh`Am7l8fQxY1SSdDfNg zU^E0onwLhIdR55XqUDc5qzdfLwBk2?G$X`R%4^c?7*Re7slHMvJR_>I!0@8j)=~8h zDHnRx%6BYap~5^eTV~QLL{;1C(y__ONsR>SL0Se*y(CNhp$B-&8*~@L+f!94Qr^;g zRFgt%$tb}#R~;BFViuw!ZwiLHw92_R>5D1;*v-+J&<|jLT5-EqmaPQy)7w;X_l18%B|yA1eCTs#l`ZFUU{sLZL3+Q?SEF550Au4Jb{UM^#};?9m-=mh@*=<}XjtAw zFsg^$5?-nPO20?JN6P-M1dk(HJ_TY26p>z6s7`~~O9$=mvJMy0BmZk5<*1fVdd;>Y z3=Id3Ofd2hyP>MyFzajwaeX7C9MkesA=3UOy?0O^c_Vn7)bfhAY{IeXu|H_QG$>*s z-Nv%P@S+_r&5Yg&9;dXt%R5$>ZQO}qZYYfH12>LrFdW2jnyLD}?CEZ(%%p8awG<3z zYAoX-(xrQ6?GJ1(V`uf=U~F;H*>FBsH?+Z=_6DpA7;C@nN7fF!g2;^kYll4C=J8T! z6L2suTQDau78MRZ zSUtv)z?ff6QtZ_r6!HjByncBJM%|Q{vhGhIC0|=E6#qSP_ScT8(ZA@Mk<_n_s#8b} zkWyxxg7cD6AxQO>Qdy;`3JL}1DQW$Y>Om>xDus~pM+aRKPWoL1{A5@jh(O?!_+a=j zfp5z2p{p#G14j>~d>hKdMM(89-5l9*#K#C9EDPx(qm4pC;kO_C|>wbg?=&) z08)nr;!{pY`d(8<%m*L32&r2m@u6#^^phc3@sl|r)$^BmStLC`)(MFR%DgO+K8oXn z3*XIklpTzZ3ZHO%C@%sZy2>Kyk&?=gc$Ccl9U7oaoLr8O#xh3cK%La!SXm&X0*Nvw zq=v@HoUlGVOYtFn89sFVcaS=?5+7rHwo1QFASIZ=ZAgtqdIlf52x$a3%u5#`dF%qC5>ok#GAAUShY!`u$A>OL8mR6%eo%oM_|Wz5 zkSg54hnB}fe5l?d86V5|1XvEAVtlA$xNl3>Um^0f+$*`jUm-Ps8?Iy!_dTh>_i}kc zg>dv&O&vKBJE?RLQmt={N~lI!36ao{GXIB2{-fVaq+wN&?U^YMLS)!NHe41-Y9Q-` zlx!$-LP|Em4>D*e>xAUz7BaR0QdV0T+Y!MmC=uK zaS>9|U*?3A43IHU#!)f`Q6{dxLh@t?@(Dxb@?osJj*}A-k`|61N2&B43pA{}D0&|0w()bBe$JqyyDaZmT?k|4o$Q|9`_E^=%t|P_Ui^(p;aG zJ6slNYI9^A$ktyOL8_RG0#xu4kmfdDu22?9x{4o!zsdRk4yg$J6(Yg{xqJbwf9mNC zSs)~SQ|5$}yd~pp8SjvY>#vYDpa*h3AtfK;2ibir^Cu+YdP3`;GM>p9#d1bjq#g2| zoc~_VC#2*D{Gj@ufV7qWLE=9ldGIH6%K9avR0&+CPn1QvMU^M3GE!14b3#fQ%DgO6 z14hsZE6VwVl%!t>po@^~R|leF^|+cyPz5u&03r3bHgVBdrKqVRT3;?^Ar~Vgy^+lS z9a6a_aydduHk0{(fGkF-AQ@^2tPk`6l8v6S-Wy0WFpxwUDHMi+)A)wTIw9E^A?qV$ zose{Yng5BbeJO+T0_6gPWOx*iq+nSmq~vJ)AcNsRX+tFu7yS`3J(3f#dbwWz!;|JNlDk0|oH&SsC(g+HHB;Atrze38o zBj*#6!6F&&0`YLl)k5pk;d(&YxoxR8|BMuWf0^-rq)YMt-{}Aix;;ihgK>~YL`Wm; zDD%HUs^^US%D`Sg@^rs)@;wR(=^`Xo_Lq5Cqz1fYosbL;0a9@J0x2tie#l4-gn*O1 z(LgF6Cg=Z&{;Xo8oIywhqh(G=JXYp^h4j3ZjC^Wnl3ad@T%NF^m}I1=FC9kHWcja< zsxOf9390|0%*!HmXQ`|cQoUs|E|+nIoL>gn&1j{ZK}Z!>0qKsh0Z0zs45S9O%KC1Z z?*-DW^03U00;&En8IJ?0{wX>CjLgpi={jEyfkqW_Wr2|R1(}ycn$fGWPDqBY1F2($ zGTxH&%Od69flhXdbWB-^u!4AvN?t&M%8(?+bJq zzz;cJk2-zguaGJ#@Pj&_1X2SAB+5uh`XxQO$|9Aczt~9ijO2VmYP%AUMqYz)9cPXN zRj3W53Uz?^$63g{0TEn;l;2RsMlv=AQvD`Cx(MlYQX82QQhqxi)whY-{KY^rzX^zc+*VoNMg-SiA!Y3%A5#Z*gVCt=$rT7m&jga24#;>ASOxq%kS;>1 zcM(X^6&bI|SO}zi`jf3>?+%bILgGaRm}45zLpg(xG9Ce`;!{~Cq~r_ypa}f{r2Nk$ z%1FEfoI3nXE~kWX3OFMm)vE@id{ZE`Q=`9}s0lQL&;UpUo6Fcv&bJ2QAE&_&a=i;s z3Lqer_oPfcircGVW{LKOO#SK$r1tvB#R!R0^K|_?r22#8a%GX4A1vD$BIgrQ_eQDY znGKQ)1j_{oso@YAN6Q#0=Mz$Xn2g~vM#vZmq=ut`bd^P_7XzIZSb|F4y%XgM^cQI9 z`YWVK)FGdWOvMix@eCjtoJpdLq|XMY4y4L@StNa)tj{BZbd?I=6begZy)05gOJ)7v zA(dMumm{PGR{%**mvusFN4HTH{tBsLhFozokoZ=aZX-wC8pJ0R=-FR1%3 z3zE?$@<*ShIctRvHT1vpZNs2{`*j1gTlVXRQckY(!iPHY_qPpyf7`HIij05!_JZ!z ze}CKX_qPpfm-zeJhX3SS2)af6{cXcPzT3wU9;#-HR|N3o%_|-~rQFmwhki#xMW*Z*V zAC_u6q@?Wz}9j~=-RWR*1x&rSUxFs(%_P-Ki=hpX-4&TT>Zz9 z^#fkJHP_a;UVgp#j;|w3Qxe-(sagMPOvYZPlP4;#TVZ_R=$UZ`eA*~16rE7O8h+cj_3@c<>C1PTLN(jT@9SscEO$FX{voyfSsm?({6%?drlY zbvGp$Z1g#A_`bJzw5`HSH^S|@*9pthk9|9Anbg&-vNiu|YQ3B0vuzA+H+O#7_e-@? zcYVh4*TtwY_ZyC`&?hnUNSN-G(V41U^QS77%qaetT4t2=1&IDK*!iwjT))HXxE2M< z0g0=gZ7s~}G4#Wzdxs7T(N$a3`PurQ!jXGIi(8ssTffKArpJ#LKX=|Azp?h$IpMqe z`NtN_YSKguZ-?%gP4CTxU2$wZZb|5M>*-!vb<_N7PgFlf9x6!myiu=Jlfde?7B73| zc=-O_%AM1{e5&3{d3#5ZVH>A!)o+DvPHtCr66n`R^p`=zhbqzc6ef@3bB12>`#Gah ztL>q_t^*$3&U?{Tx2$)MfjeV6TyFWSk@?bX(KFoNKdE@z{_anYAFVonGL30;IPC71 zJz`yJg_+pVM$toIEY7k~3=#{ik$O!+WzoSF!b}?o>9!C|#OEZ~+d}ZPgHTOeY6qd1 zgdZfBitg31TQYW zy13D|$6NOO+B1{=pKKPZb@e_18oXN^{>gpt)1JbLw+YK0y|)NBvaW$;*Triazct7k zzO+Y!`PXJUo#PYCUFMGNx2V#Tr)TRYH%tqAc-bxWVRnxpmn+v6J?$}z8``8fyc0RU z>*{At<0>eQc5JMRIJ?HbMdtObcJJ<_9$V7-Nn%vq!_^TEetBCQhOFG&js(SMC?bq9^O==AOb~`hy`p;FZa;oiYFlDj5k=CJQp23u;Z;zZU z&a?k=%e>b>4C#PL$#TFf<#oU;H4@DoAq01TkmLx#Qan$BnIi-%CkRc&L?;M2BovX* zTx{MELV^<})_ni?>B6~AIa3d(XJ>Sq*SVkbec!C92EpG(Ppvv3VS7sOHpjf9Zg2Km zsLo948}Vja@`O4&_uQ@VtHC~(U0i0T!ZMy~S=Muxw>N3I`{d)6nz34+I{SBcp3fWK z<$hwhz9W+T7AIt<`zWR+Z10jV&wO&=gx6}XTR-dXY@9W?>X)v=jTa14PqSFA7VCDz z#76c1ys7xqENxG>wsVz(18v(3)9e^~d+r2v{!*LDM-C_5OIj}8Yx-r_^1j(ye$~F6 z@Fu#+mJ3_Q{NXltUGWDL745_{X9)Jr5I&P&BX;ftp_qgXogmnW?@3tF3BrKR5H#YN&Jf%> zLr`^r;2?T+flxw1CJBzB!UaM`7YKna5ITyxN$_@oVA>Uev*_Cug1Re&GbD5tOcb!3Ddema2NAQNazm1&J98jagrN^ zW^NFkkl-n{bB9n!!XkGFy~PJ4%yfs~>H)z^O!I(X?*ZX63H`**Js=d5umL6&1H|_v zETO$_Ku-vR#5Fzf!>uO-l_!M3qL(Lx5)v{=7%D1yLCElg5ZDWXkGPuz?_Lm0dqWr@ z`u2vP?hWA#3BIC99|&0_#P@;VFJ_Yv+y{cC7lc4D+6#i27lZ;5g2V=WA>@!StuKTS zF`tBlz7XvCDSCK@mJO>0HTrgYb$)j9yGvA;{eHXqxR&~dNmaY4<2`2`ymI28^~Rz* zOLskM{o`tOOMl~n=Pf=|pa1Q_v69UOt$ydfmaqKyu2{DpqUs6kD#FEf{n1ciKQy$c zKZHo}0SPnvLvS4cAzDlu0Kt9$gwG_zik$~SC?;XUKnU^TdlHrmgfL(bgt6k9K@i*q zK~Q-^NEE%iA(W7iNy2zhF&ILIH-x~!5R$~*BzO;oU^)bXPV^lDK|KV*83>+}%6ec{ zmCKDcRPOKM@;d*rWA5Xy=a)BGe3*3NOlI)&ME@>R+SG6!eIwTN!h6TYu8%E?Ut||X z{Oq&r*5tg=H_{^FFP(iUZXW^<#1BP7Q^f3{Xef9n8nPS)VVW2{41(D(2n8g}5F7YF z$RS~x4}@7_J_!jv5bTCSm@T#&0ioG&2#ZEQNEIKDP)LI7NC@-9w2=^Ij)3r)gfy|U zF9iFM5H|Qi5XAQ+6q7K(55gjGjUR+1z7XuP6+M(9Cr-{*3>4k`pgbXEDJNQ=gi=Dv zqLWaTbK*lN$`zd0;S?~P6BiJ!Kt6F(5HNy-D5l@(bH2Dt*XGN$>t9+ zdmrAI5Ri8$a?7cyN8Yt))OFU`Ut7l(M1G#wYx=X>9d8~yaU|@kVd&OxUEAEWG#S?8 z?ZK;0BX&D=Dr0vq#?31Sip8)i9_5uil$jW@A(SOyP{IwN9Ke`KaSMl%nTXjqh|wEC zDIq1^2xSgq{7{rfII&hm;8FCK@E9lN5+3KohQ`1XoH&j!n-i}Rp5(+9m4K%Z1B9nJ z@fP73L_lTWSx!tLJcs!w%)$Iu0iMVF6Xs(62`^y&O@J3M|Acv%f5Jtn17%+ zGamj+4U9E76u6>!Mo5RxMI(HCv*!PPr%hnZxFZG2jLozm15IMup1B+Kc&~{|wO^~! z5_6|7z1G)#_tOQ(kDs5sFLQK28UN)Yj;g_~{TO({buE1J8zPF7Vp5E&!#4$psp?Rc zjD>QPlpE;vc8d4}DCyf#>n6NziZUgngqxzwZFrrOj6^7wf}+RZqO!4dz4k3_PDIBZ z(TTrJd)l>+NM6aoeL5j!XW`ZZ8VjAG7IGEs>xEr7>hC8NXSv|+HBYXj85WYm< z%>cf_vLk$rup@kfu$u{di?Abnhp;1jkFc8s{D80{{D`n4{DiPe0e(i<5q?3~5&n*_ zn++^M*b#n3*b#n1*v(N4)ZuRglwJm7=AEiO`rwo;MU`rXXm^Z`3|g_~;@y_pj@|6k zC~jr=4qJYn_*rS`V`Z8ad!^%#_YrA-obOi7)@#ChgXtC5em!_fngUKu|L+xlL!k6B z7-r}gC9e4BGVt8hCjnl(ORW_9i@z2n-A@eFwV!$It2)M@>+TU_i|QBEFluc-xqP@= zyY=?{pZr?X_UNLZk9mBi{L5&P;UA@D@whPO!SSo{x9>SmwOPM*%{-Ge-?l7Wb<}oa zo2KilgzW5jv?$-jy!*?`kD}^7*<>01u+Q2pN9`LmnS5_b>@<%RKD!c4>9^?6X*K<4 z!JlOf-(B6p^Of1Qra|`3-NZXPwaLw@t4293R~#F(EaH1Y#Q4k>cc*NtJC{3^_%AQDu&0l5h-ts&5Xl>@!7PY`ls5= zdg;|S3pam^t~1{2S{Fr9`}$Y1tq*R`sa+#JY2It6oLbkOo^W>V>QQ)llC5l*qMUlJ zzYMO8c(lDFx=F#z)-Ns2ZNHxAc(%8~{#aW($sRpgpzQuETF z2cK&^_9&X#HApvi*8Q-3!9QM9WQLVAcZ#xxCtV)z_4LH13Sn;7e&2e0 z;kb@zvl=&EbkA?jhe!@ZSZrFFs`>7)< z4ScREYB~7#x!3Mj@@(&L#d5gcwslS3uGyz+-y@hni083Ljnm5LA4`EvU*Ly%&5JL+AeDe*Avdp=Q5~cSG-o?|1KJv`2X7b5XKu zK%T&F(U&#cQ`5cG>cz=_Z29u3&hmyYr&qo`Y46Skm0M;87`{3k-Sp<$(5k!dor?57 zeqr4vvn=<#dYis&%iWanai-H$tKy{O)qfi1__B5v9KF9)W7EVoIsIa#9vO!xE-o1} zWW|xJ^ewu~uhY{eS>#3SFREfPbi^aYkaDWX_Z3&0_HH=X#jNV&!9$+x&V8C?E*qwO zLjSh}kmL*srp;YHsC-uIwPprcRpw>fF&*=3{l5CokIwHmQ*02vX^z{7Wsf{!elJ)4 zw+hvJjp*)lKGe_q(#=Mjr*^b<9N2Yp5dBhv0$(;I!oYKjrd$wQWlV|wTi)J5Qa?r6!R-ns+ zyX>TeT>>^~Y3nb8SUCo1G!+8o}}rTM;hm+n7~3%zXe zux>fGE*E!y?fat1MfJ+cD-OSS|MOD8-Rt8`+gQjQhH1{Ytl=MSp^a+QuA4k*qS?U> z>mT>AwLMjQXMyct2s-N!#uB^MT!`If4Uu-M)_bb@8KhNuFQG;4;H4k`Ny1X%e z+tR+9WSG6wsH709*1#F3vO*jU972C~L4O%EIK9*1bbfS?J}!HVIvpE*u*&_{<2&B@ z-My;kV5=Dz)2CnJlr_);5tvmT;PP3_O2W9P;D8vP| zl>-%3MU!K=M^{sb9VRITDyoZ{cj3-$Dk^pZYKVgY%9;vsTqE?!Od-BN9i_QK{7?s2 zOChGz0@hZD4+-nQ2-&PFK3Icl^%SBLd>S78lco$+=d$}#BY?{NFffX z4{WRum%W2-3F|=7Ou!k#vkp#AO_784#2iw5>OpC)5F5V2IV5qRqN1q!fHPN1h1mB4 zYBgJgGMS`UDMaN*D21e0HA1a63UNz4*qON)%F+5z+9^as3n=y?6wi04Wup-NNGT@e zj0MWrVMZE2S+WF5d;=&Ng?N$_x1~@l8$xkVh%pVJl#ufJ4eU6=zZj*Mu?))Rw@^C5 z9q*xdFNd=IJrrk!SgR&#saHTrstG%t6=E(aS)^E*L2-fa&7cIQLn$J~RUx)8hhnx8 zN~$@O?h5f1DLJH=Zo;X|UG&`q_av->aE62)qDcmXW~(8@XP|9Qg*aJ9-XSFq3f@(i zZ$^=sYak?ThTtWhC&7L#1gk9&`iY5KAQY2OM8W{E`Bn%^)peT4hTNt(j5@IH$wP9!U)lQCj|8-2-|l;@D;z3kVS&e zF7(}BAzCBe#NZ4vG8Rf8ygde^G20Bqbqtgs#40H{q->xvA&3XWnV7HzN&(GUC?c=| zlxAC@6j6kP!?%s06q1tK7)m63OUle`P&!&diAL00Lb2Zti0CFzib+Xt0wo@; zld@z76wjtm#v+EBLUG#(49a+n0*g@0*abz^97+K0GlE?(nEj<2jpR z3P-q~zTvA(^Qraq&1|DfU9TAJeY-O8*|)84Ppx=AZB3PrBaH7ZsCzq5eR}Vf+oFGu zJylM5#hl#SvdnHZ1M4S>ybQZycoe)m3oS)MNyvl}AB}e+v&-&artwBAt{&zZxqUi) z(V>q`pWwYeQgT0Ss(tnH`QFoKO+LHvmD@O<8HfG19DUmF#n(Zd$M<>OJ4i_Xd}jan zd1lR9Jre8gr*|T)Fs4+jLK;)yezat11!W#qp%s*w2cQ&?l7@YvH5B_SDAQU)5ftK8 zQi@5jYXfBwRze#nOAbPLLW+p^Y752f5R^r2p)AD?M@k7PuI->K$6U38l5rTyXHwD? zVi#*D-bbKpu!gboCK%P=b#^$s}b1X4npj*>Na= zc2G89hDpgG#k4(?&6wf#P!di+IYY`;_+0~~SvHh-4V3NZb24V4kd!KrJZ9ie1n#dd^}MamCSPGQArp#-0YvRw=140aGw z%yOYT!CN-Zb7g&eeb}r1{eKld$_y|#*L>Lm=NC&ZHweCYZ+^{dHf^_BTh=?!pjQr5aAWX#VBAt&J%=Jv1$l^!<+>HuVKv)7GTB*uVcjo18-oy z2n(@Z2yepAA;4Q$Erhq>Wx_jHE2Du$@G;?CL>=KhcsLZ%r~VD|efMm)*ug2|LSbjAB*1dD6%h{(zYMTwSCSCWu(9pK~S=GeW zQ8t%1(qEL(zdL(?c_O=6uq%3o!84CAPhn7kuc4)VMMX!w3I}P+O|yKM9@F^E+pwH3 zwVIS<+!)b%ZAh~tMgvvOY4Ll%S(WG>A1;12!rMAb5%S$~M!348U5>}?I_t}{^aQgV z4!dRrG~3~5=^195lpIogBA`6StVBRbxDLfQ63R==OC*$LH_)4mt~vbvzE*GE4F5Ht z+UZ}e{^=IIMsIEWChBFv#r+jSO1`wKw*T#bZpjA{x^lDH-S2fTv+@wrhs{m|yq@Kr z|8Z}pGQD|?d5VGELf91xV$jlC%v3CtnT1fM#X@CKS6kC?7FfaZrk(cv@UZ zIpa8V_zmOmZexANZ$FXSbew?L? zTv7G=;KT*BjlLT`DtJ+*H=i-<@vyt(7QQ$8u57IIYnmQrQAOFU%kfD6?j4GAzAbPt zxG7{``(vwTjWlK5Yb7fkb{SMm<<5_(S0lXcli%t^FK8|rY@6g0)%tcByT2o?zYMm& zs4}uJxyga0?N7$$?#jE^U)!LPdyR%RT+GPN2Y)=Udh*A-V@>yknK!J~b9Ma<$-jQ= zU%FOdxNYOF-AQ-)^|0;gD0aM!<@1AX{$DYf3FvUiZMf!jJd{5$nWSXgf#O3iLVsXs zjf3J{1SN1BlwVj}q^R#gF&z&@p%nebL&+lL3@PQ5V$}&yg6~0zp8!Rr6i4D z^qG&Ke4YfwL@9Qe48{I2lq9@ZR8~`pxdN18Qmht2F;$A=7D8F_1WFMpHI-tEMNr(H zLP=c&#T;#sQbJ0{#ZYRat;J9>o*%Bz~=TLr-(m*MC zEQOLq%J!vD8Y#tZqy)c!;31#LRC`l`!w1YQDv40E2 zY84b4cw-fmVp57ov4b~OLs{|;O6qDT8hC>gxA#ywu7TnJZ>)h*LP|Ql8g_&?)axfiVM840ZQ;^D8?J1xWXG7 zp_qMva+H+rN^#F_C^@8Ru?#N}$B=h2n`gB&CoP%Y9IK zBM$dLnfVn;0V!UH!%Qgl-=Iv(gwhXjNJ=p&cKe|WP>PfHLs{|%lqaMNQi|3Gptya9 zvgiPm!AkKVDJ7(+4nrBL6#E{AlJNt|_Crv7lwyZ0DBeGze9nS00?~UAiuxCnbW(ib zLsGIx`Ed}6KYVydF>q0^66Yfr_SF9=CE6zpUbS1ba@g9Rjz9JbKUio_3wZaHZ1Bvp8p^|6z5K z^}cB{Zt0ABwe5WDW|ou7kUDi*1bZKv+oI$7;eB`9kGQ?xea`oKPij0ZOq;gRwb6x9 zt%pr-I<9E((z5?~Box7Z9Q|!p4*g9!juC_-*hwiQ#p(oo{%yY6P^dftpb!qc~BBD;iQz1;(7_nc%``D z5|j)zl+UCjVR|n^@#djyxC}+76hDxnHiR1j4!SSOIVzmI2{> z_=_+NKDiED0B;cr@Ce~TYz#Mmi{KB!#n=`IMR=nSxCG<71zd`t1&SqA(c>St(BtI@ z+S^bvszKR)8%jF1iRZ1{}U|a-Yt7vi$LNjv+@%JEX7qdwy zB*F4Ngq>paeF!saK`0<$x7gqT1pC^`O5*ef3J=9zF`tCu+9+Z75G69jN&in}X8~7L z^8SDBJqN`E6&2*F*hz|5sMxNeVs{{*q6kWuDA?UGcITS7>b1r0Uc0+{b#4Ej&pC6v zuB-d~{dxIz<~;LE_uO;m-hyD71%kU2ScT7R2x{hpV9IR>HjA4SyrZDn9SF9H33nh^ zmJ5P66l@oj?n2NkHw26CLa?QHc+rn zm>xjjk{5#T2M`<($rK!05z_5Y*>UugS#=A;bO4zC!Us+P-Duh&H;_c>R6 zV67ex*57xnaNtzh@)g9f{1{RSJVrz(MEA#tXm|lcbe4isqBoDNN*9FS>Jtdgh$2rR zctF9Jrx2VK7b%!l2!is@AUH2ZJcFQSVFtYuL4#glS@D_rbqWfD2Hc@bvg4-g`-w<>v4#AMWA-F3}QQ+bM zLCJRz+!q7hL2!_QyA(VWKJOvu3z=V0zq=*<3 zH+qzur9@FgUNbj(r63t%hQwYGrzvqM4M|A_lGKVAs6cX%lDm|oQG~AwNv|@HOi>|8 zr-)mW6fO%%HG4=hC}N^LBo`=oLy4mzDyM>EcsWQGr-CGtB3@BaIslT!sUgXthy^^T zdO%5Q2jn5Es9({{1KQ;@vI|on3>VRyhO0=Xkwc`Z1j9{)(6ETjG;&%qRW{F5Czept zbPb8=5*~*4w#Cir=DBG`WyRG_cG?yACA>B^GtV+X$=d8Ub1Nmorb61iH%Yr;I$2HK z&9TbVX6DgQ$PgDB8XeUkw9B$mxRuEIvNhI(5R0R&%ntSyD&wFWZ?2e+P_suwTsUXa z$Z9z67rTPY4XOB~vDv}(c6B{&cEj-4_VE#sVRi*-K+W2{KXh=e-G&w+_D`s@@X)rCke6vT*@6cQR8!~4ps&c;ny}& zMpP*Ql?E<$1Ud&X6T$8kmYLa%YKwW;TUxeY&JEUu* zoz`k7cGI+thSFjyGWo5cyg)$ahLfzFJD4{zzt-Uq=6NQxpfEg$;$4t2(=Ay$(NqvD zYkPlOgzd;wGkqdB8lu)_yD0Ve=5-M|;*S?hGCbb(w4N6HUDjmy?3Lg5+aZOwspQ=*tHDvgwl?p%8<=-1EK>cd5zwpe`cq?U@Vebd{_qX)R(o5uL zzbvBnQjvET3$G0B1l|~i%Vl!1o%rW z^>V}BTFM-BS)!dggrQQHMk?lkEKJJMN?BgWI!akO$QVgJ&{@jZCYb2_AX3UQN?8HO zDoL56lof=mGA~r)9~%!nV_3H73FVfN$i z+h~7zAY*)`K@Ztx@=3iikoDxXYiy1ArLZjQicDbvDJut=DrE(wEC8~4u(RP6lCtu! ze}$cYg{7~Ce&6_K)vkllyO9cEGE(#$|SJd}#Xq+%t=vP)TUDXR>biP>~ zll55T1IVsIRt07i-cHLDHUvW;tO~QLRBQx$6UeH= ztOgk)X$_O(4^91G6S%_{Sfq<&SFe$F%HfOTW!vXCf)%V8wWwGylfj-gTuA zizhor83`L16&vl!<9AWt%ua;Lp35B3$mM?qXp+Wp*Mj+FJ{f!8-5hg`26w<+a1Y!E55Pn42s{DL02c%=z)Qe6_b!byh93r@&;+!}Mg2`YC5MUbU2D*b7 z5DT~fVH@Ls#u=6~DrZp6n4BSb2jpBZ56lM(z(TMHEC#$gawg#2l;gn!FbPcN{4oWV zsXzeUmYD$hf&PH2oR**!XbswcwxAsd0bKBe0xoj6sNrPC$&Hg4C$GGK6IOn}`H1rm z=Nry1oKLj*gYyOF2hIl^|2f`seCKe^;kyLj4$&zUUl#rs0BEP1py9RTvc%u)fTjK!ha#4J>V)TOqdFxeMZ2_g;5v4#n4lf@-y%p zbVe9m05AKk04jn&zy(reP!0qD4iCJ6xDY4|iU6*SxE3l7JU~b2bONuyYw#D?%l3H; zmgC?AI0;UHec%At1LlJTU?Jd}n|v8E7WO#M3-ktD5A_56K_cMVhHDwFU3i5&SNhy$ za7%I=90I&$CdQ0WH5QgQP#ka(hT0T)lDKxt40aN$%A1c36O0;mWA zK_yTbQ~^~%HBcSY09;)CiHscQ+jb|wNq}=3FVqNsYvU@o4)_BeM*uG~n+|4xnP3)} z4d#HkU>=wc7J!9d5m*eCfTds=SPp&%NuUPcEAX{IZ4dy*nhWFx@6nQug85((;Ck^ecmN)PZD1!z0jt1T zumbc1y+9n`0=E?K2E4d-B;d8Kyy`VO%F+$+zF6Kdi?5O=+Kq)}0Eh)~fQw2Kl(=S8 zfj!{WyS%RVA`qK7c@eaHPpFn;1;eE*O0oRON4s!X&<=!38 zQ*}hjVd(?7-b)Zq3o6+YUn21@Kud_YlB){JfP9Fz04NB!a#MjlNCi@Zn~3ukxDD=r zvtT7y4c34qU^d`FtQ-gc0!#ygz+fP$9FzumfIB#bj2#Cjz)7$d^aedZc@T*BwN;xh9(dRAXfOouR^CVi z&=5K0@-YL5hO8UlCCZoJ<_Gg5+&_WO;0yQ)>>wWjb0io8#)FAq5||7gf#-lr%a@7x zZxCn-crAGiP!n)q%mmVc7buaJ-~o6D9)WYPl|7f6jvy1@@-Yjz41ZiAa!FVe z6a!odx&Q_6V)3P58CVW}2UEcu-bg+VmIc5aJV(keg9~5=7!N`bK@-pnGzTrfeMHy= z6a}}pn;;ML@`4nNr~}XKA@hOV8@z&j1I%3@2K?6M!Vxes7zqW!$rc9`41R*($19A61m08Xl1!FBkJgvkcx2r`1J zkZlGVzFPz)3iCSN6seL7gv3RhpnEztp1racWv zCG9j(fZA~--BN?JQie=x>*qo+3xWaw5ozZ)nP6rF8GsXT1PmuX$OrNO3vdHDKz8;s zXIL0$R%vFFCS|U`MLyF`8OaTJz?W0v4l^&H8zU?VJOH!p5BvaU2p`}Dyg><2lKs3Q zECHY#C<{2R@R^4CYed0j{&CQwne)&oJm-f!}g14+}k(1I)=a zL=pg#kr2wlKq#mQYJke15(osdT5&zW( z+;ej8*%olW*&1;F*$OlUEdk|}aZgIK1!xY~sM^D%U;1k!%@COFKqt@vgoBRKWOYP= zL>B2VSeAk%U@TY+7J-Fe0hkZw0q($OgIQn(m=2}^0j7c}fXhZMA18tdfXm8pfJ@Cm zU?AuQq5&ge(qiI`418}II^WCm zNOixOob~^`0_|BK%OvGSAVx$pA^$#NBS7jg6ZB{3(rqqam~=P79(Hz{|{I;01BkgZj-cck!CW? zT_6SQ1UrBeU`b^Ld*m}^glEzm)Y8IC4S4qb0na=Y`2@Im<2>+!XJVJ|a1f4FAh-xS zbH{_UvXK1=^9(o*PJw!maZES?JGZJlV7m$ZhmehceE{t5VCN~r-!OUB)*ZZtowF79 z&e4FY|F@8hL;Tvj%!4v#2)tny0X!b(vVSz(bHe0V&I7m~0Qw+m`+pR4ZbE(oTnEg| zHEjB%c`xBVZ9T>^I;h-06qyz(`0K$Nvse@E#@=3`cql1BN>TJ=WX~!0gt44990T=ec%$P#4qzL7+C^ImB<@*@I!PC*^dbohMI?K_k|G zLt3QS6ec5S4j2jT^b`g{K?rCKT7V2lDBW6tmcX#nWZ>-p!)*iFO1lvrP5MjZiC!lV z3A%vJAOds*9RM2<-D#3cD1JjmyD{cd76m=__gD}EhJm4A2pA0dfgYe2=m`>7{|(@= zFCO}U60rA%$uXVwfw0rPKg=Y+(xN#)+Udr?1_5pgsLu$716B*G=r}kEHUTRb1O5Ok z!Lc0wlVKST#(~j*^)m{L1T4z2@|hmFayFoR6`)Qb$k)Q8zcpYrm<%#Qo(W8ZeF8A5 zY!d96f98mFF$J*BrvU*dW5BF$qkXX6nK;(xRAAKa3fMU&EP}ZZu;;nni?%TQ8KuUAF@pVo3C##MqxkpXnGG2_iCRCTa$DdCr6Vxe77l@f z-~c!*?M&Dh*pC6)Pr^J8&VjQM+BsW3g2}n$A=dD9) zDyvPnud`$=rG&{(MATC1n7oCxmVz$<)K)UPO+^||<4HG$WUcx%X;Y%v)W+A-$IsK- zZn222t+={zTaXS4Cr%Yh*+=>lE8-D<$}?=U26r8T^*=*dWDI@%8i- zJA)KAQzfycuHuU8B_`BCIAO>+2rHt3tg-x(TGt7cKN z$=lP;ol~znznPyYHvGfzq>npCJe?29KKi@IQh9c_OGog9>n7665 zy7Wd>YOkd@!)1Q|D|u`5SDoNe0x5yZVtaACp5kJ$!f$41bZqa`{^E3P|eOrO(SAe>6Q}3tu=0_xecl zd}w5W#LP5zGBT-9Esgex zL6YCV@p;Of*j4aH1sRYfeOf)Bj^!NIBt#D>13iB|M%T2WLIcIci1F8odW=%f{6{*G z0&kWh=wexsLjM|nFFgM~_bdeLs|S1|oygb_#cr4{(~H6lwXA9FTrW{Es-coI`#>k{ z!~k(oYnFVIG!ARBwa;lSJ=E zN=H*#+}jFA7x9sf>zzfm#&8S}zct3l5or~Tl`baBLo_oKSu18>#foSs_z!>r$|`B*wqn)_ zy_3u85&9!V6X1g6Ce^*v<3m)p9T-d)9|w~K*~N}#sC_-nZoe)bJ@eN5%@x)3Gc^W? zf#&~OMp_O#qC%N+k-4Rk!+bP{@NB90{w#1=MS9?25LEEDV%;c9FXc>d#&5Yzw1^=uX35bhQaBNAl?X za_02IIl6b7sMPLTH2)q{htAe^zD=!Zf6mU3xZjYaoXniF4<(xv(7WgT6?Yp(t()%5hFV7JGry>Z5`K0SMX?ZMzn!QSf=PXO zA<-v92{I*!19-%2`jJLO;nf~G`oJL@yGUrS6wiOSh+Y9fMfF;2HK|F`qqeOtm`(nk zzNI;=H!CVEoly~CMMY2qM!Yy^vNL_i{KPHu#>~hu>I*fFooZ2$6rm(po^zU&44Oq+2DGxE88n-?4 zwvr|$)Z&#PZGJ@Uhp17>dX`gh zdf0tDMLTFnpDvbh(B$Zq*POTP_;o7haXHh^^%Se8AbY*N^a5}?Q#g0m{7o}ML(ZCR z-r^I(I_fR5O;vo&E>r|zVxrVPeDU_^bpm!5} zlygGrSrd-t8+31h)J4Vr30JzLyZG0XW*gIWx5d-FgqS5zQfHA8HmhbUTfNE?+2Bv9 z;p1ngN8o}lVq!SSW{;4hl37%UR~*ct)4S zX!w7HMqX&NYt+EyNu#ZGZ5qFJk$(RpbQ!-{rsqFWY~<Y=5{T0_P50ApSiVc7=_=PG)qO6}a%x$ncuYoLL}0f&nYRYWi~(n5nH zk0jI(JOBw66TznW;(2X%6~n&{C7`KVi6%07Y8f9Gco1y0*E?n{^9>dH=S zGnMUSbNNt1tft=#HT8aVFm^G@#c~FPy zK2tC4vT3xgDZCR9dUvVOKHH}>j=7!R+BAkpmr3QGzIm#X4y2<-=_A1LXO|` zZhdOLQ_j7GAJ(%epxOBKQ+yL2*3lHEb{nkvvf&B`|K@) z`=fx`+WWzfEH+Qmq)X`+ed}d(8g|O&VucGwfl=c=&$8yr^vLFN5iVF_CB17iy}#eA z!(VMKpWwnI+^bZ;;Z2pQd+Cy>=QT%ttm5EQs?e&^z8_Ckw|OcHm;7*vxD5ekjc5G6gOi2y^zSXS$nkHc3tVR^030 zlmku!YtQZSczN0&o2R32;rQx!>y%INPe(r4Tpq~ahR4h-banV|8Eh_vOnUFG_3lul z{qu#5oJ<9p>%Au=rX$8(j7agPo_#;QQn-LK?wHNI;6B!Bj4#1iU}SUAZ8TOI z&Mm~ei%M4U_aP;xWl}4B&|5rWUcRDr7gUh(p(vNO5@Cm-{<@WDcSv#ZHMQ1@cF@}J z6Gh9^+YC*)-b)7;_VrIGrQRP2uOB8|yhYSd#Uj=o#^Pt*ekF%xPg^~Nw6kws8l3ue z3Fxufkhf~>M7G0sqK<9bc3#JB!b} zRIag0Ex2Iw!4{a@T+}^+*-bVboS4qpueh?hW`v4aN0cD{e}~EmmFt?8Vfu_dEOn7N zbr!B$s)dS;7Ya5^PG&^mxe?WdzM(azs*Y=y#*H~SQaeM@n)HF@qWwn2 z*MA>0G9hbWqc=8*xH9LN%mA|X(*n~bT}>4hSFh$dTlK1Z(d<$h>agzz2#jdq3f4j$Y; za@&>UKUP9RHjCKKB5Z_Gw8F>E`p}xSi=K`bd;4{pb^hoXX!@X)pamU)3(v-z?|f!I z>)O-8aA94eF}O#Hql{%`q@MpdzfXLeE$e9=Q5SwY3p{hY32VM*_Z-K0_GZ&SNVqCk z43llX@tG(2`$Ri6*P_*$&ThD5fQwJsmye59cUH}&)sV0f(?sb7QrBzu0@uTPa3)}! zfmZ7(P9i=t;yt+onF@v`N7NRkS(mH-J(tDL4I;9wYh*10>p24kugRuqMKiituE}BVH#p**G7u-#fUa>&-Pol&V8KApUY2i&r?ABY#-py7X0hF+&d(E5#Ib{DaQ{x@8>fUcjbU}JLorm4?TYOKQ?78JZ;J~Tj&9BVZ7!!eKJK=STbL_pn2EtA<`d5$|9iQ z3XRUIitH)UuFN`{-+?_uAT<0JK!f#RNgi?Qe&%-;o5psya4mIpeydikR@6UhbGh6@ zjHTb#(BOjadStUUhi>g|W7EjmQ;*kY^vdK{y#u|a3sUCUQ(R%nsz8GasJmU8hm0!Q zne(nJv$j2j(+Pwg4~=ZlcpKpL;c)*{&uw9hlA*^X@2!(}QpX)Ozl(Z`Ht=g++f(#9 zf%c$Jy)MG(9FB@6wGuZ@;G;4OvFYVKhUN#;D`+8UO+;!KnheQ&8X-2T zE`n{Q3)7bJ=XVXbct4Tq3?`xYe)_nPaLy_D^8)`|2-(jQ;{g@`XgEA3iJo@CvH$QO zp}A;7KvF*ubp|8YX!y+tjeXvuS?_$lBI$x&En3!pECS>C|6qlDvqB2uI9dPa#{v$|NSzFKURI|iwMxjw-K@a?2Stj6^k*@ zS^iyQvjxP-PDgJ({o{d_%h@6MudYk@(Yb0F%g8#H7@9>RJ_DP!JRO*mbF zw`QaCCXyyPVE?1~GjNjG-`~@x3{GlqjS}fEL*p?tG9%!63j>_5SWaU~E6P0#{yvWq zfz)sst?%H9)fhY3Qrn-0z4EM6hGE3!KLMKQ5Z2q@$}X#XtlVf@ShL{5@v+OL*B3^8 z?l{io;yFfKK`cfXhWQ_1JsG2?c=;chH|;u+w}UM#BiAFw>Ro1ei~1un-CcnbP9slJ zL;QXP3+vV6^umdHU*=t%&JEmB62)wGe8~X@z>;#cO`QQm+*;U2YVZlW0J6uWDFYQrjmh_YKF0^b&T-M^r zy&CY7I&EUbdQAj`Bg&tyO0{Kt)=8opH2jU5%69j5)$Bo7K)Xu zUGGU^Ec}{>ApLhUmPL{>+%;r6&;j*WU&yYRVH7Iib3aTcJhiR^y8QM@}ztb||7d-&yq z_3-JV$FIi~pN*t&!-mC=<79Dz8igk7Q+d{oPS=8q*0LI9Q1aVH5Li-pc0xKTLX*?u ztsyrSoNAd^4Vq|QEaH}M;pT7EMfcOYC-#}Ahk>Tx-Dk2$=%jRTn+pvmXmnlKY}Vr} z2gW(GdgMzbpF80*);v@6wv-{0X>e@z0qYS2_D~GGC|uYM3be6%n<1aedAP_mx8D>o zybE>|RiKdx8og_XZC#M1pB*Cll;Q`6I7EB_4ga4VBI+8uYUq92yYh^-)>Mu-e?n<# ze*df?Dn!EX&khlFjSteVL#7JFHkl?LwfW6ZQ;ddR%g+uGb-y@7OkwChJ4DnqTH_GU z8M!Q)xo`>7sN3^xp?9w-GIoXEpB*CVey2;n2j3>;PFU1kVc4<4! z(Yvth-eP>bqMF;HkH#w5a(Uau!^9TFKC5gTXsN~}GXBOwnDJh(u>(60|tE|%)^^{(6I;tS8Z^Ky)^`E5U61jc?V zRDS7OFG*K?ERXRmNRFE>mYofj*BrT>5WzvqgWlU^fBLBB8v7<%36LpJ!<_# zpZr|>(=FA9h18<|Ca*_dc_fGi#hEI%bg5TkuK$B(#f{T0G`12;#ql0!unnM52u*5a zgILV1oXuOpB@1$q{`Zq7%c`?@A}HtT*cD=1FC~e)0PU=I{z?&$h{nEhrD&3f z-OSsk+*R=O-K|6ljkT5I$j>ivV)rp7eRQ$Wjz*61SFh_T-daAu?6Q>_(OApgbq z!dT^yC>xaQyLbgaj+ociiiCj(paklh15}s4H~Lk0Re6{#>d$M%N{p$NLdn{f-;)+U z%kyyN$i?~wS4-T_qY%XhV!LDvGmY2j!%WRIYo88CS)AV%zD$9+`#O;{2sI$qiM348 z|BCNl1Cr5c4D(xFe+XI567+ABg3Q6x!HSa&ukUC{KV!`n~+kji%|3VH;CZD zNTIq>bRLYh<8KvD@NB7M)faUw3hnYAFuu`g_`v3aLwB%MxDSDk4pvci2qwGNtwa=_ z{eS91i=)gYy_{yg$g*P3mFXD}76)wfyA7MfHu$ydf<{)V6el&1zQUWu z3&vJzv#2oiKQ*O>%TIbC-qvLc4nYf^Jya>@|5FvbiGp{!x9Ich$@0z5cWD(j6$z26 zuS;7*#$ianBWPqoQcn%-7jIwT00(rQcp|AEw}{Haln(y4w(3O}P<-IJw>iAn?6eav zZ@ZUp;hef7U}@sp&TnJk!Vg{GSJ@`6!SBzDUDHUjU9=mH397k+SUV2sc(X%ah3x;k zS-TPH2a%>ytRp7a+q|X7(W)h0dH_7jfW=Q&pb{O?`Phi&mW#e@o`W# zQom%6p89ev&wgCBqqhFOnznzDsW&wB7+r&%_Uhx|(jsoHlg~EKgoLvVq3CkKh2vqi z_XC}C2WDhY(!~cZ&Tu)J$2BnL{;oA`F4gvmAf^?s$$nu`O-9;eOy=}yMeqc?;^K-` zxC?y$Q80Vf(KADNfG!s=S|PX^iiST~4wi-cw3`x=4(Gk{cGlj>JTHFdK6iN=L98{Q7}gImL&)ECcDboxBThpc^nXm ztkORY3ipZltZzFsoLCNfZq2`QWaVW|Lo4iKaN!79vdFr&RYvx*gNrP?Cvb6x%Z{Ok z`b@Fb=I%#^n*Na9R}W0TP+*;`gPrH&igALiBULD69e}#n>4*PHS^gyq$sAU{;-plSuF5`oMDJseQ9b z1$X)*-Lk#ZKBeb&+0uE@&k8xwMYcKl!j>6f?w_e7`TydW0kOV5t#3Tbs%evH3ntuUET}y+*d)AdLyauZ;0eS0#W8)hF3IU+(~v#Q z?0!akfu_F?G&zj+ANKCV;@3I!eUDbhmEn>FE}PeF3Y<8~u`|Muxomt!1Ys<)bbcc~Zb0XI|q~V8eCRp;E(;G;dc|D@O&KmdvKDhowW1H_Fw$0UEn%Aa*y-;Ks+o$e6 zerx&P@x=jck%yh=KeO{~u!%n}P9`J9C40o^dFTjt&x@3Kc>c!#7na`_~*` zjJL9W%yI-YKRYk_FGN=V*O=*Qx*&=#z(D=Bp^`bjF%s>&pchd0JC$yv%-on>77(&~ z?Sfbh^>1_2n+syzVmzn2D7LNq&-jj{6Yc0zrp#RYqWHw;1P9@bl$xtw6ah|!~6OJCu9a{gGn(9n-OGmvBDy<5Vv0yX=SFA-rC&o#ym zUDp_(rPwTcyg0c6Z8hf|@dTlni`@~aR$?Zab4M?*X_Eu@{<*0ck8R|~3QOU_4>6aQ+l%mbrWVIVWsxnJ*!;%lHMLpH|obocaWYIbsq zIYnmG`)W(l4-HdqU`A-hC@NQq2vnOhWS7--e~9s0N{oJPMDRn8_>YOB`TeOFqqXtJ z$j2{3HM)XPK5}0C=1&jH{6pksL)}Q+_c;>lla^g|g4UzCNqlclc2Ig*$ofBa5pNT)4)}86PrcSM=Z8Z7!~l z#aQ^Y{MxTETp24khbQ_P@6e;S*I$jE|0lwdt3cU^Md1yKpZVES(Pje@_5P`@{^@)z zbG1gthufn5wF~^NgkP~B1z!vpZ&gN`vvv`dO-N?cb3KdOg4!h5t!r{fi(DJ5dOa7x z(C{Aw4Q6$E;aq37=3eg!4Gs|{@!d4IIKriMn_B5S4)nv@WJbd0Jr{G}*Sz+**t7}D z>eMfV`(```zZ7LRW6wR{mG0C2d~H+Qf|5x#pXXkQZPdK^N}SuQtT!VSqqpFYB+na> zaVrK7uQ#GHOiP=S`m(o>X;Jk)8!GTb8ZV)9-4*{vjHf0x5PM;kJdY(j)4%ofz4psu z*K213`mxHtHws$L5Jr+HwoR#H`N`@Z?>KTKU-4E<-iAo@{ep*hK0~n=b9O4(bNk}( z^PN6apQ~Ga>Em%X{g5`z^1}Vms@5nH>!x_L#q%F?K~IaPP=F(I1Nb z4G>g%q^Czy-<)F->K;Z=>;*_-8@O=Yzj*4LC-&~`Dru2u71!mRIJzBYk3W6;O4GRY zLHO;!`Ra_1dga><+_CIn^%(uVQ@!%__plHmcSagFlCDx zFZzA@krts^{MyH9TR)0iJ5hy)K8i?~B6ugJGx=aH_E`+wiGsr$aa(pOLG^2W(UZ_A zcJSYv7O9dBe<~MPL_0T)cnd{so}y259PZAF5L9qeP5!>oqP&DLE~4=aFk@X z?TelGdR56@>NHfi4s(1hrsl42VxCRqAzWPGQqg0%L+4Amp4(hZU+qMlYfAQ2}<}2&b^$Eer; zMkPy%NpDOCl(64(Z)<9KSWsVon2QZ*J9TOLC!g`mPUv`X+OUsPk8Dqm<93dlc2EAi zd-z0ok$7G4NgUTqudKnP@k5@yGJc5*iHPhO5fxUW<>`XYiX|7)e%uS5#FrA4BiGi> z{Nqd8Kf3?;qV@O=dNaA)xbLE-E8JaY;+c(OK=#HNzdHN5U0VtPbG@%j+lCc;ls%uq zE1B{4`z33w8_EikQ%rc*h+ZBs@ljsky}IGI*+j8hio0lkOTl?3zTE%lmQq#Jyp7ST z&}}UBTijO4iu(Q4yyE0@CAHXoTlrIX-d56zr*{+=XTBp4*RfA@R7A)4nE0+C9&yng zqLP=IGw(k{onyT`ync{)h(r%Hzvy*OaT0mF5&nQXinkuq@AniJrp3DNo-#3&y*Hx} z&qGuf5%*N-Db_zgdcB6KX+^tnYAVrou!=q9GbQIg9qh%I5H*c>5~5ntXv7Ew9RB|@{w>TFU+>$<)zRe#zFiLyCVH!;4f>L6}zQuE~tjO*PkJk~2bHZCSST>syr zXGmn1@R)89q0wDK;zBzKb+bBCJp81%=`DYMAj+bjms$!JY;5pS7dw_>g;HHhOsr_@ zt=1D|K0-e4h~)2GMsy5|2!ZepSsb=0vDlKWy(%< z5C_WC!ey6QQdHQiW)sJzs`;%sXR3}SF?+8XAduEpf(~fft&SD1ry~sSy=r>v z%-t$(eMz3C=1hb1pecvM^cF9sp}RJkuFe&!W~hzD-7RVxu_m9I-CAX>Lvj)-k+icx0qkTuewP3MHglw}_~YA}PN*SyaleRun!3 z(YMkRKzgD$Ld_lymXiRH@`qW*c5#OHl#$24K_ z-6A7GL*l}%4fm_z_Tr`|iV?}kW<7R9&1p^_8WI%|9~sWWR z;!+~yIYzqpTxtp7bbNc(i7S0)EEC@ zB6SeuE~;gPsG>S5rO}j@S3$LMf}MIvO>IrMsGc&3`dKlGq+C)RtUWHPUsZ=Nq}&U? zY$`J4QFG~|YFs)srv-C(TwHIDuCe@iSC6RZuy8rLbq(t!4y98UWX8CTUz+vk5EC60 zhkD`2zAnAmQUqpDM~bwW)CR~(>rASjxrC?ao<<+0oW=1>$mo?UYEkQ^ENb6WVqFM^ z;Kn)Bo#J(X>TdOOQ_Gvh(46WCeF#UjW)lb9Q5&p4t5+WNtqDVA!F=jq7()uG!6NS~ zPTaZB9={Y&M~UnCP)**sFr0lVsCE}~3#qTBG=c15-wh9xEN-F@I#=A zAOF_6(weiXx3x}HG&FIg4pQs;77Ylt%4XqIAH_8{SbeUD5ekahvlfc;MQb(LUW|L9 zq?`H#dxxVP)bZMrX!bf z3amObz0|tOpfHR8Cm$*q#oBQ7uxQm$?QHV49_XlUH3@5Ocu(o1I*G}h@!x>X7>&Kf z03X&YrER;Yj@FT;7cu!q_qmGzGVb(_5?GZe$}ih&p|hYZA+vuqGLLtj2Vvj`Z3xjA|S zs`tonwJu|;A(jt=Ug8J@KV+y{dFn8zy&onE_q%`{hNIoE05pxd!|=44E3x?D7z^`^ zP-h6o5%7x8g0=Q+-919}NH3POMLD2-rx7kw)w$M}Q_D@j$-QywWtH<$@US^ zUG)*-*ljh9b-@j_i<0)iB~@F!{&h)YzoX{KgNFsPB9}SkD_`Z@^`%Fnn}j!riKrS| hm_Pf0znYgtlRIkVbiL&BjmxSSR#Pb;4&G7U{XfDOy?+1z diff --git a/package.json b/package.json index b670635..2fbe3fd 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,12 @@ "license": "MIT", "dependencies": { "@epic-web/invariant": "^1.0.0", + "@epic-web/remember": "^1.1.0", "@remix-run/express": "^2.14.0", + "@remix-run/fs-routes": "^2.14.0", "@remix-run/node": "^2.14.0", "@remix-run/react": "^2.14.0", + "@remix-run/route-config": "^2.14.0", "compression": "^1.7.5", "cross-env": "^7.0.3", "express": "^4.21.1", @@ -32,7 +35,7 @@ "react": "rc", "react-dom": "rc", "react-icons": "^5.3.0", - "shiki": "^1.22.2", + "shiki": "^1.23.0", "zod": "^3.23.8" }, "devDependencies": { @@ -50,12 +53,12 @@ "@types/react-dom": "npm:types-react-dom@rc", "autoprefixer": "^10.4.20", "cssnano": "^7.0.6", - "postcss": "^8.4.47", + "postcss": "^8.4.49", "prettier": "^3.3.3", - "tailwindcss": "^3.4.14", + "tailwindcss": "^3.4.15", "tailwindcss-animate": "^1.0.7", "typescript": "^5.6.3", - "vite": "^5.4.10", + "vite": "^5.4.11", "vite-imagetools": "^7.0.4", "vite-tsconfig-paths": "^5.1.2" }, diff --git a/vite.config.ts b/vite.config.ts index 4918b6e..ff59d2e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -19,6 +19,7 @@ export default defineConfig({ v3_throwAbortReason: true, v3_lazyRouteDiscovery: true, unstable_optimizeDeps: true, + unstable_routeConfig: true, }, }), imagetools({ From d462d887dbc02f21a39319ac8256b8860fc55928 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 16 Nov 2024 21:30:42 -0700 Subject: [PATCH 39/75] fix type --- app/.server/utils/pretty-date.ts | 41 ++++++++++++-------------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/app/.server/utils/pretty-date.ts b/app/.server/utils/pretty-date.ts index 488aab5..25497dc 100644 --- a/app/.server/utils/pretty-date.ts +++ b/app/.server/utils/pretty-date.ts @@ -1,32 +1,21 @@ type Timestamp = string | number | Date; const getMonthName = (date: Date) => { - switch (date.getMonth()) { - case 0: - return 'Jan'; - case 1: - return 'Feb'; - case 2: - return 'Mar'; - case 3: - return 'Apr'; - case 4: - return 'May'; - case 5: - return 'Jun'; - case 6: - return 'Jul'; - case 7: - return 'Aug'; - case 8: - return 'Sep'; - case 9: - return 'Oct'; - case 10: - return 'Nov'; - case 11: - return 'Dec'; - } + const monthNames = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ] as const; + return monthNames[date.getMonth()]; }; const offsetDate = (timestamp: Timestamp, offset: number) => { From 20fa1e9345358db9298235c61a9d04ae64084064 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Fri, 22 Nov 2024 23:01:52 -0700 Subject: [PATCH 40/75] Update dependencies --- bun.lockb | Bin 320960 -> 320640 bytes package.json | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bun.lockb b/bun.lockb index e1c5376c8d80413af5c976a5610278251ea71400..c262688088ac0c45d0c14e94f0ac4b87dd4a8229 100755 GIT binary patch delta 57910 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 diff --git a/package.json b/package.json index 2fbe3fd..7dfc3ed 100644 --- a/package.json +++ b/package.json @@ -20,27 +20,27 @@ "dependencies": { "@epic-web/invariant": "^1.0.0", "@epic-web/remember": "^1.1.0", - "@remix-run/express": "^2.14.0", - "@remix-run/fs-routes": "^2.14.0", - "@remix-run/node": "^2.14.0", - "@remix-run/react": "^2.14.0", - "@remix-run/route-config": "^2.14.0", + "@remix-run/express": "^2.15.0", + "@remix-run/fs-routes": "^2.15.0", + "@remix-run/node": "^2.15.0", + "@remix-run/react": "^2.15.0", + "@remix-run/route-config": "^2.15.0", "compression": "^1.7.5", "cross-env": "^7.0.3", "express": "^4.21.1", "gray-matter": "^4.0.3", "isbot": "^5.1.17", - "marked": "^15.0.0", + "marked": "^15.0.2", "morgan": "^1.10.0", "react": "rc", "react-dom": "rc", "react-icons": "^5.3.0", - "shiki": "^1.23.0", + "shiki": "^1.23.1", "zod": "^3.23.8" }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@remix-run/dev": "^2.14.0", + "@remix-run/dev": "^2.15.0", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.9", @@ -57,10 +57,10 @@ "prettier": "^3.3.3", "tailwindcss": "^3.4.15", "tailwindcss-animate": "^1.0.7", - "typescript": "^5.6.3", + "typescript": "^5.7.2", "vite": "^5.4.11", "vite-imagetools": "^7.0.4", - "vite-tsconfig-paths": "^5.1.2" + "vite-tsconfig-paths": "^5.1.3" }, "overrides": { "@types/react": "npm:types-react@rc", From 33fc1fa0f9d74ffc04b48d8e4a7268d6dab8cfd8 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Fri, 22 Nov 2024 23:13:44 -0700 Subject: [PATCH 41/75] Get close to rr v7 --- package.json | 5 ++++- server.js | 3 --- vite.config.ts | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 7dfc3ed..4ae3d11 100644 --- a/package.json +++ b/package.json @@ -68,5 +68,8 @@ "react": "rc", "react-dom": "rc" }, - "trustedDependencies": ["@biomejs/biome", "esbuild", "sharp"] + "trustedDependencies": ["@biomejs/biome", "esbuild", "sharp"], + "engines": { + "node": ">=20" + } } diff --git a/server.js b/server.js index ac666de..eff77c7 100644 --- a/server.js +++ b/server.js @@ -1,11 +1,8 @@ import { createRequestHandler } from '@remix-run/express'; -import { installGlobals } from '@remix-run/node'; import compression from 'compression'; import express from 'express'; import morgan from 'morgan'; -installGlobals(); - const viteDevServer = process.env.NODE_ENV === 'production' ? undefined diff --git a/vite.config.ts b/vite.config.ts index ff59d2e..cc4572b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -13,13 +13,13 @@ export default defineConfig({ plugins: [ remix({ future: { - v3_singleFetch: true, + unstable_optimizeDeps: true, v3_fetcherPersist: true, + v3_lazyRouteDiscovery: true, v3_relativeSplatPath: true, + v3_routeConfig: true, + v3_singleFetch: true, v3_throwAbortReason: true, - v3_lazyRouteDiscovery: true, - unstable_optimizeDeps: true, - unstable_routeConfig: true, }, }), imagetools({ From 8204d813f5d424529cfcd177d35aef758c9791c7 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sat, 23 Nov 2024 00:43:44 -0700 Subject: [PATCH 42/75] WIP migrate to rr v7 --- .gitignore | 5 ++ README.md | 18 ++++++ app/.server/theme.ts | 2 +- app/components/git-feed.tsx | 2 +- app/components/header.tsx | 2 +- app/components/news.tsx | 2 +- app/components/release.tsx | 2 +- app/root.tsx | 54 ++++++++-------- app/routes.ts | 24 +++++-- app/routes/$.tsx | 2 +- app/routes/{_layout.404.tsx => 404.tsx} | 2 +- app/routes/docs.$name.tsx | 10 +-- .../{docs._index.tsx => docs.index.tsx} | 2 +- app/routes/{_layout._index.tsx => home.tsx} | 2 +- app/routes/{_layout.tsx => layout.tsx} | 10 +-- app/routes/news.$name.tsx | 3 +- app/routes/theme.tsx | 4 +- bun.lockb | Bin 320640 -> 212808 bytes package.json | 31 +++++---- postcss.config.js | 7 --- react-router.config.ts | 3 + server.js | 59 +++++++++--------- server/app.ts | 23 +++++++ tailwind.config.ts | 7 ++- tsconfig.json | 31 +++------ tsconfig.node.json | 13 ++++ tsconfig.vite.json | 26 ++++++++ vite.config.ts | 34 ++++------ 28 files changed, 226 insertions(+), 154 deletions(-) rename app/routes/{_layout.404.tsx => 404.tsx} (89%) rename app/routes/{docs._index.tsx => docs.index.tsx} (63%) rename app/routes/{_layout._index.tsx => home.tsx} (91%) rename app/routes/{_layout.tsx => layout.tsx} (78%) delete mode 100644 postcss.config.js create mode 100644 react-router.config.ts create mode 100644 server/app.ts create mode 100644 tsconfig.node.json create mode 100644 tsconfig.vite.json diff --git a/.gitignore b/.gitignore index 039fe5e..0452294 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,10 @@ +.env +!.env.example .cache +.DS_Store +.react-router build node_modules git-feed.json latest-release.json +*.tsbuildinfo diff --git a/README.md b/README.md index 544e7ec..ddfb2a5 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,19 @@ To build the project, run: bun run build ``` +## Deployment + +Deploy the output of `npm run build` + +``` +├── package.json +├── package-lock.json (or pnpm-lock.yaml, or bun.lockb) +├── server.js +├── build/ +│ ├── client/ # Static assets +│ └── server/ # Server-side code +``` + ## Linting / Formatting To format, lint and apply fixes at the same time, use: @@ -61,6 +74,10 @@ To format markdown files (docs, news), use: bun run lint:docs ``` +--- + +Built with ❤️ using React Router. + [reoserv]: https://github.com/sorokya/reoserv [sorokya]: https://github.com/sorokya [node]: https://nodejs.org/ @@ -68,3 +85,4 @@ bun run lint:docs [reoserv.net]: https://github.com/sorokya/reoserv.net [biome]: https://marketplace.visualstudio.com/items?itemName=biomejs.biome [prettier]: https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode + diff --git a/app/.server/theme.ts b/app/.server/theme.ts index fcf5cfc..6318ec8 100644 --- a/app/.server/theme.ts +++ b/app/.server/theme.ts @@ -1,4 +1,4 @@ -import { createCookie } from '@remix-run/node'; +import { createCookie } from 'react-router'; export const themeCookie = createCookie('theme', { httpOnly: true, diff --git a/app/components/git-feed.tsx b/app/components/git-feed.tsx index e76d76e..a507075 100644 --- a/app/components/git-feed.tsx +++ b/app/components/git-feed.tsx @@ -1,5 +1,5 @@ -import { Link } from '@remix-run/react'; import { PiScrollLight } from 'react-icons/pi'; +import { Link } from 'react-router'; type GitFeedProps = { commits: Array<{ diff --git a/app/components/header.tsx b/app/components/header.tsx index fc2bb28..41cc44b 100644 --- a/app/components/header.tsx +++ b/app/components/header.tsx @@ -1,8 +1,8 @@ -import { Link, NavLink, useFetcher } from '@remix-run/react'; import { FaGithub } from 'react-icons/fa6'; import { FcDocument, FcHome, FcList } from 'react-icons/fc'; import { LuMoon, LuSun } from 'react-icons/lu'; import { SiKofi } from 'react-icons/si'; +import { Link, NavLink, useFetcher } from 'react-router'; // @ts-ignore import logo from '../assets/images/logo-full.png?as=metadata'; diff --git a/app/components/news.tsx b/app/components/news.tsx index af17aae..ead3b45 100644 --- a/app/components/news.tsx +++ b/app/components/news.tsx @@ -1,4 +1,4 @@ -import { Link } from '@remix-run/react'; +import { Link } from 'react-router'; type Article = { title: string; diff --git a/app/components/release.tsx b/app/components/release.tsx index 2256e5b..072513d 100644 --- a/app/components/release.tsx +++ b/app/components/release.tsx @@ -1,5 +1,5 @@ -import { Link } from '@remix-run/react'; import { FcDownload } from 'react-icons/fc'; +import { Link } from 'react-router'; type ReleaseProps = { release: { diff --git a/app/root.tsx b/app/root.tsx index 5b7bb57..5d5b572 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -1,4 +1,3 @@ -import type { LoaderFunctionArgs } from '@remix-run/node'; import { Links, Meta, @@ -6,22 +5,22 @@ import { Scripts, ScrollRestoration, isRouteErrorResponse, - useLoaderData, - useRouteError, -} from '@remix-run/react'; +} from 'react-router'; + import { getThemeFromCookies } from '~/.server/theme'; import { Header } from '~/components/header'; +import type { Route } from './+types/root'; import styles from './tailwind.css?url'; -export async function loader({ request }: LoaderFunctionArgs) { +export async function loader({ request }: Route.LoaderArgs) { const theme = await getThemeFromCookies(request); return { theme } as const; } -export const links = () => [ +export const links: Route.LinksFunction = () => [ { rel: 'icon', type: 'image/png', href: '/favicon-32.png' }, { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, - { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossOrigin: 'true' }, + { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossOrigin: 'anonymous' }, { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&family=Ubuntu:ital,wght@0,400;0,700;1,400;1,700&display=swap', @@ -30,11 +29,9 @@ export const links = () => [ { rel: 'stylesheet', href: styles }, ]; -export default function App() { - const { theme } = useLoaderData(); - +export default function App({ loaderData: { theme } }: Route.ComponentProps) { return ( - + @@ -75,24 +72,31 @@ export default function App() { ); } -export function ErrorBoundary() { - const error = useRouteError() as Error; +export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) { + let message = 'Oops!'; + let details = 'An unexpected error occurred.'; + let stack: string | undefined; if (isRouteErrorResponse(error)) { - return ( - <> -

    - {error.status} {error.statusText} -

    -

    {error.data}

    - - ); + message = error.status === 404 ? '404' : 'Error'; + details = + error.status === 404 + ? 'The requested page could not be found.' + : error.statusText || details; + } else if (import.meta.env.DEV && error && error instanceof Error) { + details = error.message; + stack = error.stack; } return ( - <> -

    Error!

    -

    {error?.message ?? 'Unknown error'}

    - +
    +

    {message}

    +

    {details}

    + {stack && ( +
    +          {stack}
    +        
    + )} +
    ); } diff --git a/app/routes.ts b/app/routes.ts index ad9a9b4..b5beb26 100644 --- a/app/routes.ts +++ b/app/routes.ts @@ -1,5 +1,21 @@ -// app/routes.ts -import { flatRoutes } from '@remix-run/fs-routes'; -import type { RouteConfig } from '@remix-run/route-config'; +import { + type RouteConfig, + index, + layout, + prefix, + route, +} from '@react-router/dev/routes'; -export const routes: RouteConfig = flatRoutes(); +export default [ + layout('./routes/layout.tsx', [ + index('./routes/home.tsx'), + route('404', './routes/404.tsx'), + ]), + ...prefix('docs', [ + index('./routes/docs.index.tsx'), + route(':name', './routes/docs.$name.tsx'), + ]), + route('news/:name', './routes/news.$name.tsx'), + route('theme', './routes/theme.tsx'), + route('*', './routes/$.tsx'), +] satisfies RouteConfig; diff --git a/app/routes/$.tsx b/app/routes/$.tsx index ef855fb..c8ea475 100644 --- a/app/routes/$.tsx +++ b/app/routes/$.tsx @@ -1,4 +1,4 @@ -import { redirect } from '@remix-run/node'; +import { redirect } from 'react-router'; export async function loader() { throw redirect('/404'); diff --git a/app/routes/_layout.404.tsx b/app/routes/404.tsx similarity index 89% rename from app/routes/_layout.404.tsx rename to app/routes/404.tsx index a4e7bb5..744b628 100644 --- a/app/routes/_layout.404.tsx +++ b/app/routes/404.tsx @@ -1,4 +1,4 @@ -import { Link } from '@remix-run/react'; +import { Link } from 'react-router'; export default function FourOFour() { return ( diff --git a/app/routes/docs.$name.tsx b/app/routes/docs.$name.tsx index 2390be5..c5a7050 100644 --- a/app/routes/docs.$name.tsx +++ b/app/routes/docs.$name.tsx @@ -1,10 +1,10 @@ import { invariant } from '@epic-web/invariant'; -import { type LoaderFunctionArgs, data, redirect } from '@remix-run/node'; -import { NavLink, useLoaderData } from '@remix-run/react'; +import { type LoaderFunctionArgs, data, redirect,NavLink, useLoaderData } from 'react-router'; import { getDocsPage } from '~/.server/get-docs-page'; import { ProseContainer } from '~/components/prose-container'; +import type { Route } from './+types/docs.$name'; -export async function loader({ params }: LoaderFunctionArgs) { +export async function loader({ params }: Route.LoaderArgs) { try { invariant(params.name, 'name is required'); const page = await getDocsPage(params.name); @@ -75,8 +75,8 @@ function ListItem({ title, link }: { title: string; link: string }) { ); } -export default function Docs() { - const { page } = useLoaderData(); +export default function Docs({loaderData}: Route.ComponentProps) { + const { page } = loaderData; const { title, content, description } = page; return ( diff --git a/app/routes/docs._index.tsx b/app/routes/docs.index.tsx similarity index 63% rename from app/routes/docs._index.tsx rename to app/routes/docs.index.tsx index 08fd3fd..52effd7 100644 --- a/app/routes/docs._index.tsx +++ b/app/routes/docs.index.tsx @@ -1,4 +1,4 @@ -import { redirect } from '@remix-run/node'; +import { redirect } from 'react-router'; export async function loader() { throw redirect('/docs/installation'); diff --git a/app/routes/_layout._index.tsx b/app/routes/home.tsx similarity index 91% rename from app/routes/_layout._index.tsx rename to app/routes/home.tsx index 9c9fd63..f4ec23b 100644 --- a/app/routes/_layout._index.tsx +++ b/app/routes/home.tsx @@ -1,4 +1,4 @@ -import { useLoaderData } from '@remix-run/react'; +import { useLoaderData } from 'react-router'; import { getNewsFeed } from '~/.server/get-news-feed'; import { News } from '~/components/news'; diff --git a/app/routes/_layout.tsx b/app/routes/layout.tsx similarity index 78% rename from app/routes/_layout.tsx rename to app/routes/layout.tsx index c1f41a7..d7bcf85 100644 --- a/app/routes/_layout.tsx +++ b/app/routes/layout.tsx @@ -1,11 +1,11 @@ -import type { LoaderFunctionArgs } from '@remix-run/node'; -import { Outlet, useLoaderData } from '@remix-run/react'; +import { Outlet } from 'react-router'; import { getGitFeed } from '~/.server/get-git-feed'; import { getLatestRelease } from '~/.server/get-latest-release'; import { GitFeed } from '~/components/git-feed'; import { Release } from '~/components/release'; +import type { Route } from './+types/layout'; -export async function loader({ request }: LoaderFunctionArgs) { +export async function loader({ request }: Route.LoaderArgs) { try { const commits = await getGitFeed(); const release = await getLatestRelease(); @@ -17,8 +17,8 @@ export async function loader({ request }: LoaderFunctionArgs) { } } -export default function Component() { - const { commits, release } = useLoaderData(); +export default function Component({loaderData}: Route.ComponentProps) { + const { commits, release } = loaderData; return (
    diff --git a/app/routes/news.$name.tsx b/app/routes/news.$name.tsx index 5a999c4..e615834 100644 --- a/app/routes/news.$name.tsx +++ b/app/routes/news.$name.tsx @@ -1,6 +1,5 @@ import { invariant } from '@epic-web/invariant'; -import { type LoaderFunctionArgs, data, redirect } from '@remix-run/node'; -import { useLoaderData } from '@remix-run/react'; +import { type LoaderFunctionArgs, data, redirect,useLoaderData } from 'react-router'; import { getNewsArticle } from '~/.server/get-news-article'; import { ProseContainer } from '~/components/prose-container'; diff --git a/app/routes/theme.tsx b/app/routes/theme.tsx index a138fdc..d55f3c2 100644 --- a/app/routes/theme.tsx +++ b/app/routes/theme.tsx @@ -2,8 +2,10 @@ import { type ActionFunctionArgs, type LoaderFunctionArgs, redirect, -} from '@remix-run/node'; +} from 'react-router'; import { getThemeFromCookies, themeCookie } from '~/.server/theme'; +import type { Route } from './+types/theme'; + export async function action({ request }: ActionFunctionArgs) { const currentTheme = await getThemeFromCookies(request); diff --git a/bun.lockb b/bun.lockb index c262688088ac0c45d0c14e94f0ac4b87dd4a8229..4588233da74563f2d991cfb8db1342fe513504e4 100755 GIT binary patch delta 43089 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 x(`O(>z2B!QOYKH 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 diff --git a/package.json b/package.json index 4ae3d11..4714304 100644 --- a/package.json +++ b/package.json @@ -2,31 +2,27 @@ "name": "reoserv.net", "version": "1.3.0", "description": "The official documentation website for the `reoserv` project", + "keywords": ["reoserv", "reoserv.net", "endless online emulator"], + "author": "Richard Leek ", + "license": "MIT", "type": "module", "scripts": { - "build": "remix vite:build", - "dev": "node ./server.js", + "build": "react-router build", + "dev": "cross-env NODE_ENV=development node ./server.js", "lint": "biome check --write --unsafe .", "lint:docs": "prettier --write *.md ./content/**/*.md", "start": "cross-env NODE_ENV=production node ./server.js", - "typecheck": "tsc" + "typecheck": "react-router typegen && tsc --build --noEmit" }, "paths": { "~/*": ["./app/*"] }, - "keywords": ["reoserv", "reoserv.net", "endless online emulator"], - "author": "Richard Leek ", - "license": "MIT", "dependencies": { "@epic-web/invariant": "^1.0.0", "@epic-web/remember": "^1.1.0", - "@remix-run/express": "^2.15.0", - "@remix-run/fs-routes": "^2.15.0", - "@remix-run/node": "^2.15.0", - "@remix-run/react": "^2.15.0", - "@remix-run/route-config": "^2.15.0", + "@react-router/express": "^7.0.1", + "@react-router/node": "^7.0.1", "compression": "^1.7.5", - "cross-env": "^7.0.3", "express": "^4.21.1", "gray-matter": "^4.0.3", "isbot": "^5.1.17", @@ -35,12 +31,13 @@ "react": "rc", "react-dom": "rc", "react-icons": "^5.3.0", + "react-router": "^7.0.1", "shiki": "^1.23.1", "zod": "^3.23.8" }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@remix-run/dev": "^2.15.0", + "@react-router/dev": "^7.0.1", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.9", @@ -48,10 +45,13 @@ "@total-typescript/ts-reset": "^0.6.1", "@types/compression": "^1.7.5", "@types/express": "^5.0.0", + "@types/express-serve-static-core": "^5.0.1", "@types/morgan": "^1.9.9", + "@types/node": "^20", "@types/react": "npm:types-react@rc", "@types/react-dom": "npm:types-react-dom@rc", "autoprefixer": "^10.4.20", + "cross-env": "^7.0.3", "cssnano": "^7.0.6", "postcss": "^8.4.49", "prettier": "^3.3.3", @@ -68,8 +68,5 @@ "react": "rc", "react-dom": "rc" }, - "trustedDependencies": ["@biomejs/biome", "esbuild", "sharp"], - "engines": { - "node": ">=20" - } + "trustedDependencies": ["@biomejs/biome", "esbuild", "sharp"] } diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index aab2694..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - ...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {}), - }, -}; diff --git a/react-router.config.ts b/react-router.config.ts new file mode 100644 index 0000000..2aa07a7 --- /dev/null +++ b/react-router.config.ts @@ -0,0 +1,3 @@ +import type { Config } from '@react-router/dev/config'; + +export default {} satisfies Config; diff --git a/server.js b/server.js index eff77c7..def5b55 100644 --- a/server.js +++ b/server.js @@ -1,45 +1,46 @@ -import { createRequestHandler } from '@remix-run/express'; import compression from 'compression'; import express from 'express'; import morgan from 'morgan'; -const viteDevServer = - process.env.NODE_ENV === 'production' - ? undefined - : await import('vite').then((vite) => - vite.createServer({ - server: { middlewareMode: true }, - }), - ); - -const remixHandler = createRequestHandler({ - build: viteDevServer - ? () => viteDevServer.ssrLoadModule('virtual:remix/server-build') - : await import('./build/server/index.js'), -}); +// Short-circuit the type-checking of the built output. +const BUILD_PATH = './build/server/index.js'; +const DEVELOPMENT = process.env.NODE_ENV === 'development'; +const PORT = Number.parseInt(process.env.PORT || '3030'); const app = express(); app.use(compression()); - -// http://expressjs.com/en/advanced/best-practice-security.html#at-a-minimum-disable-x-powered-by-header app.disable('x-powered-by'); -// handle asset requests -if (viteDevServer) { +if (DEVELOPMENT) { + console.log('Starting development server'); + const viteDevServer = await import('vite').then((vite) => + vite.createServer({ + server: { middlewareMode: true }, + }), + ); app.use(viteDevServer.middlewares); + app.use(async (req, res, next) => { + try { + const source = await viteDevServer.ssrLoadModule('./server/app.ts'); + return await source.app(req, res, next); + } catch (error) { + if (typeof error === 'object' && error instanceof Error) { + viteDevServer.ssrFixStacktrace(error); + } + next(error); + } + }); } else { - // Vite fingerprints its assets so we can cache forever. + console.log('Starting production server'); app.use( '/assets', express.static('build/client/assets', { immutable: true, maxAge: '1y' }), ); + app.use(express.static('build/client', { maxAge: '1h' })); + app.use(await import(BUILD_PATH).then((mod) => mod.app)); } -// Everything else (like favicon.ico) is cached for an hour. You may want to be -// more aggressive with this caching. -app.use(express.static('build/client', { maxAge: '1h' })); - app.use(morgan('tiny')); // set a clockOffset cookie to help render dates correctly on the server @@ -57,10 +58,6 @@ app.use((req, res, next) => { next(); }); -// handle SSR requests -app.all('*', remixHandler); - -const port = process.env.PORT || 3030; -app.listen(port, () => - console.log(`Express server listening at http://localhost:${port}`), -); +app.listen(PORT, () => { + console.log(`Server is running on http://localhost:${PORT}`); +}); diff --git a/server/app.ts b/server/app.ts new file mode 100644 index 0000000..8a154d3 --- /dev/null +++ b/server/app.ts @@ -0,0 +1,23 @@ +import 'react-router'; +import { createRequestHandler } from '@react-router/express'; +import express from 'express'; + +declare module 'react-router' { + interface AppLoadContext { + VALUE_FROM_EXPRESS: string; + } +} + +export const app = express(); + +app.use( + createRequestHandler({ + // @ts-expect-error - virtual module provided by React Router at build time + build: () => import('virtual:react-router/server-build'), + getLoadContext() { + return { + VALUE_FROM_EXPRESS: 'Hello from Express', + }; + }, + }), +); diff --git a/tailwind.config.ts b/tailwind.config.ts index 830d7f3..9608374 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -2,9 +2,10 @@ import type { Config } from 'tailwindcss'; const defaultTheme = require('tailwindcss/defaultTheme'); export default { - // tailwind dark mode based on system preference but not if there's a light class on the html element - darkMode: 'class', - content: ['./app/**/*.{js,jsx,ts,tsx}', './content/**/*.md'], + content: [ + './app/**/{**,.client,.server}/**/*.{js,jsx,ts,tsx}', + './content/**/*.md', + ], theme: { colors: { amber: { diff --git a/tsconfig.json b/tsconfig.json index 9d87dd3..966ab12 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,32 +1,15 @@ { - "include": [ - "**/*.ts", - "**/*.tsx", - "**/.server/**/*.ts", - "**/.server/**/*.tsx", - "**/.client/**/*.ts", - "**/.client/**/*.tsx" + "files": [], + "references": [ + { "path": "./tsconfig.node.json" }, + { "path": "./tsconfig.vite.json" } ], "compilerOptions": { - "lib": ["DOM", "DOM.Iterable", "ES2022"], - "types": ["@remix-run/node", "vite/client"], + "checkJs": true, + "forceConsistentCasingInFileNames": true, "isolatedModules": true, - "esModuleInterop": true, - "jsx": "react-jsx", - "module": "ESNext", - "moduleResolution": "Bundler", - "resolveJsonModule": true, - "target": "ES2022", - "strict": true, - "allowJs": true, "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "baseUrl": ".", - "paths": { - "~/*": ["./app/*"] - }, - - // Vite takes care of building everything, not tsc. + "strict": true, "noEmit": true } } diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..cf8c676 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "include": ["server.mjs", "tailwind.config.ts", "vite.config.ts"], + "compilerOptions": { + "composite": true, + "strict": true, + "types": ["node"], + "lib": ["ES2022"], + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext" + } +} diff --git a/tsconfig.vite.json b/tsconfig.vite.json new file mode 100644 index 0000000..9ad4126 --- /dev/null +++ b/tsconfig.vite.json @@ -0,0 +1,26 @@ +{ + "include": [ + ".react-router/types/**/*", + "app/**/*", + "app/**/.server/**/*", + "app/**/.client/**/*", + "server/**/*" + ], + "compilerOptions": { + "composite": true, + "strict": true, + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "types": ["vite/client"], + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "bundler", + "jsx": "react-jsx", + "baseUrl": ".", + "rootDirs": [".", "./.react-router/types"], + "paths": { + "~/*": ["./app/*"] + }, + "esModuleInterop": true, + "resolveJsonModule": true + } +} diff --git a/vite.config.ts b/vite.config.ts index cc4572b..8934f3c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,27 +1,20 @@ -import { vitePlugin as remix } from '@remix-run/dev'; +import { reactRouter } from '@react-router/dev/vite'; +import autoprefixer from 'autoprefixer'; +import tailwindcss from 'tailwindcss'; import { defineConfig } from 'vite'; import { imagetools } from 'vite-imagetools'; import tsconfigPaths from 'vite-tsconfig-paths'; -declare module '@remix-run/node' { - interface Future { - v3_singleFetch: true; - } -} - -export default defineConfig({ +export default defineConfig(({ isSsrBuild }) => ({ + build: { + rollupOptions: isSsrBuild ? { input: './server/app.ts' } : undefined, + }, + css: { + postcss: { plugins: [tailwindcss, autoprefixer] }, + }, plugins: [ - remix({ - future: { - unstable_optimizeDeps: true, - v3_fetcherPersist: true, - v3_lazyRouteDiscovery: true, - v3_relativeSplatPath: true, - v3_routeConfig: true, - v3_singleFetch: true, - v3_throwAbortReason: true, - }, - }), + reactRouter(), + tsconfigPaths(), imagetools({ defaultDirectives(url, metadata) { return new URLSearchParams({ @@ -29,6 +22,5 @@ export default defineConfig({ }); }, }), - tsconfigPaths(), ], -}); +})); From 12426d52f83cdef63868395de739248a8487e35b Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Sun, 24 Nov 2024 00:58:43 -0700 Subject: [PATCH 43/75] Got things mostly working --- app/root.tsx | 21 ++++++++++++++++----- app/routes.ts | 2 +- app/routes/docs.$name.tsx | 36 +++++++++++++++++++----------------- app/routes/home.tsx | 18 ++++++------------ app/routes/layout.tsx | 13 ++++--------- app/routes/news.$name.tsx | 38 ++++++++++++++++++++++---------------- app/routes/theme.tsx | 11 +++-------- bun.lockb | Bin 212808 -> 212808 bytes package.json | 7 +++++-- react-router.config.ts | 6 +++++- tailwind.config.ts | 1 + 11 files changed, 82 insertions(+), 71 deletions(-) diff --git a/app/root.tsx b/app/root.tsx index 5d5b572..cc8df72 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -5,8 +5,8 @@ import { Scripts, ScrollRestoration, isRouteErrorResponse, + useRouteLoaderData, } from 'react-router'; - import { getThemeFromCookies } from '~/.server/theme'; import { Header } from '~/components/header'; import type { Route } from './+types/root'; @@ -20,7 +20,11 @@ export async function loader({ request }: Route.LoaderArgs) { export const links: Route.LinksFunction = () => [ { rel: 'icon', type: 'image/png', href: '/favicon-32.png' }, { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, - { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossOrigin: 'anonymous' }, + { + rel: 'preconnect', + href: 'https://fonts.gstatic.com', + crossOrigin: 'anonymous', + }, { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&family=Ubuntu:ital,wght@0,400;0,700;1,400;1,700&display=swap', @@ -29,9 +33,12 @@ export const links: Route.LinksFunction = () => [ { rel: 'stylesheet', href: styles }, ]; -export default function App({ loaderData: { theme } }: Route.ComponentProps) { +export function Layout({ children }: { children: React.ReactNode }) { + const rootLoaderData = useRouteLoaderData('root'); + const theme = rootLoaderData?.theme ?? 'light'; + return ( - + @@ -54,7 +61,7 @@ export default function App({ loaderData: { theme } }: Route.ComponentProps) {
    - + {children}
    {process.env.NODE_ENV !== 'development' && ( @@ -72,6 +79,10 @@ export default function App({ loaderData: { theme } }: Route.ComponentProps) { ); } +export default function App() { + return ; +} + export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) { let message = 'Oops!'; let details = 'An unexpected error occurred.'; diff --git a/app/routes.ts b/app/routes.ts index b5beb26..bd88bc3 100644 --- a/app/routes.ts +++ b/app/routes.ts @@ -15,7 +15,7 @@ export default [ index('./routes/docs.index.tsx'), route(':name', './routes/docs.$name.tsx'), ]), - route('news/:name', './routes/news.$name.tsx'), + route('news/:name', './routes/news.$name.tsx'), route('theme', './routes/theme.tsx'), route('*', './routes/$.tsx'), ] satisfies RouteConfig; diff --git a/app/routes/docs.$name.tsx b/app/routes/docs.$name.tsx index c5a7050..9342076 100644 --- a/app/routes/docs.$name.tsx +++ b/app/routes/docs.$name.tsx @@ -1,26 +1,28 @@ import { invariant } from '@epic-web/invariant'; -import { type LoaderFunctionArgs, data, redirect,NavLink, useLoaderData } from 'react-router'; +import { NavLink, data, redirect } from 'react-router'; import { getDocsPage } from '~/.server/get-docs-page'; import { ProseContainer } from '~/components/prose-container'; import type { Route } from './+types/docs.$name'; export async function loader({ params }: Route.LoaderArgs) { - try { - invariant(params.name, 'name is required'); - const page = await getDocsPage(params.name); - return data( - { page }, - { - headers: { - 'Cache-Control': 'max-age=3600, public', - ETag: page.etag, - }, - }, - ); - } catch (e) { - console.error('There was an error getting the page', e); - return redirect('/404'); + invariant(params.name, 'name is required'); + + const page = await getDocsPage(params.name); + + if (!page) { + throw redirect('/404'); } + + return data( + { page }, + { + status: 200, + headers: { + 'Cache-Control': 'max-age=3600, public', + ETag: page.etag, + }, + }, + ); } const DOCS_NAV_LINKS = [ @@ -75,7 +77,7 @@ function ListItem({ title, link }: { title: string; link: string }) { ); } -export default function Docs({loaderData}: Route.ComponentProps) { +export default function Docs({ loaderData }: Route.ComponentProps) { const { page } = loaderData; const { title, content, description } = page; diff --git a/app/routes/home.tsx b/app/routes/home.tsx index f4ec23b..e395bcf 100644 --- a/app/routes/home.tsx +++ b/app/routes/home.tsx @@ -1,24 +1,18 @@ -import { useLoaderData } from 'react-router'; import { getNewsFeed } from '~/.server/get-news-feed'; import { News } from '~/components/news'; +import type { Route } from './+types/home'; export async function loader() { - try { - const articles = await getNewsFeed(); - return { articles }; - } catch (e) { - console.error(e); - throw new Error('There was an error getting the news feed'); - } + const articles = await getNewsFeed(); + return { articles }; } -export default function Index() { - const { articles } = useLoaderData(); - +export default function Home({ + loaderData: { articles }, +}: Route.ComponentProps) { return ( <> Home | REOSERV - ); diff --git a/app/routes/layout.tsx b/app/routes/layout.tsx index d7bcf85..3f90238 100644 --- a/app/routes/layout.tsx +++ b/app/routes/layout.tsx @@ -6,18 +6,13 @@ import { Release } from '~/components/release'; import type { Route } from './+types/layout'; export async function loader({ request }: Route.LoaderArgs) { - try { - const commits = await getGitFeed(); - const release = await getLatestRelease(); + const commits = await getGitFeed(); + const release = await getLatestRelease(); - return { commits, release }; - } catch (e) { - console.error(e); - throw new Error('There was an error getting the articles / commit feed'); - } + return { commits, release }; } -export default function Component({loaderData}: Route.ComponentProps) { +export default function Component({ loaderData }: Route.ComponentProps) { const { commits, release } = loaderData; return ( diff --git a/app/routes/news.$name.tsx b/app/routes/news.$name.tsx index e615834..910335f 100644 --- a/app/routes/news.$name.tsx +++ b/app/routes/news.$name.tsx @@ -1,25 +1,31 @@ import { invariant } from '@epic-web/invariant'; -import { type LoaderFunctionArgs, data, redirect,useLoaderData } from 'react-router'; +import { data, redirect, useLoaderData } from 'react-router'; import { getNewsArticle } from '~/.server/get-news-article'; import { ProseContainer } from '~/components/prose-container'; +import type { Route } from './+types/news.$name'; -export async function loader({ params }: LoaderFunctionArgs) { - try { - invariant(params.name, 'name is required'); - const article = await getNewsArticle(params.name); - return data( - { article }, - { - headers: { - 'Cache-Control': 'max-age=3600, public', - ETag: article.etag, - }, - }, - ); - } catch (e) { - console.error('There was an error getting the article', e); +export async function loader({ request, params }: Route.LoaderArgs) { + invariant(params.name, 'name is required'); + + const article = await getNewsArticle(params.name); + + if (!article) { throw redirect('/404'); } + + if (request.headers.get('If-None-Match') === article.etag) { + return data(null, 304); + } + + return data( + { article }, + { + headers: { + 'Cache-Control': 'max-age=3600, public', + ETag: article.etag, + }, + }, + ); } export default function Article() { diff --git a/app/routes/theme.tsx b/app/routes/theme.tsx index d55f3c2..186f570 100644 --- a/app/routes/theme.tsx +++ b/app/routes/theme.tsx @@ -1,13 +1,8 @@ -import { - type ActionFunctionArgs, - type LoaderFunctionArgs, - redirect, -} from 'react-router'; +import { redirect } from 'react-router'; import { getThemeFromCookies, themeCookie } from '~/.server/theme'; import type { Route } from './+types/theme'; - -export async function action({ request }: ActionFunctionArgs) { +export async function action({ request }: Route.ActionArgs) { const currentTheme = await getThemeFromCookies(request); const newTheme = currentTheme === 'light' ? 'dark' : 'light'; @@ -18,6 +13,6 @@ export async function action({ request }: ActionFunctionArgs) { }); } -export async function loader({ request }: LoaderFunctionArgs) { +export async function loader({ request }: Route.LoaderArgs) { throw redirect(request.headers.get('Referer') ?? '/'); } diff --git a/bun.lockb b/bun.lockb index 4588233da74563f2d991cfb8db1342fe513504e4..d19c4237baa002d78e4a0c4b2e40f0fce870b961 100755 GIT binary patch delta 12588 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 a{q-QRq%o}}?bRRrCBI74M*=0Y`2Pb)!`Zn2 delta 12748 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 VALNqG+IN1E-zC}uJtT$v{{z%=6Mg^y diff --git a/package.json b/package.json index 4714304..cad8243 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@types/express": "^5.0.0", "@types/express-serve-static-core": "^5.0.1", "@types/morgan": "^1.9.9", - "@types/node": "^20", + "@types/node": "^22.9.3", "@types/react": "npm:types-react@rc", "@types/react-dom": "npm:types-react-dom@rc", "autoprefixer": "^10.4.20", @@ -68,5 +68,8 @@ "react": "rc", "react-dom": "rc" }, - "trustedDependencies": ["@biomejs/biome", "esbuild", "sharp"] + "trustedDependencies": ["@biomejs/biome", "esbuild", "sharp"], + "engines": { + "node": ">=22" + } } diff --git a/react-router.config.ts b/react-router.config.ts index 2aa07a7..0bc0e55 100644 --- a/react-router.config.ts +++ b/react-router.config.ts @@ -1,3 +1,7 @@ import type { Config } from '@react-router/dev/config'; -export default {} satisfies Config; +export default { + future: { + unstable_optimizeDeps: true, + }, +} satisfies Config; diff --git a/tailwind.config.ts b/tailwind.config.ts index 9608374..f9c9aab 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -2,6 +2,7 @@ import type { Config } from 'tailwindcss'; const defaultTheme = require('tailwindcss/defaultTheme'); export default { + darkMode: 'class', content: [ './app/**/{**,.client,.server}/**/*.{js,jsx,ts,tsx}', './content/**/*.md', From b6fbaa0d62d1c39c7bfacc8c1a78b56d755b7601 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Tue, 26 Nov 2024 20:15:23 -0700 Subject: [PATCH 44/75] Fix vite config --- README.md | 8 ++++---- bun.lockb | Bin 212808 -> 222608 bytes package.json | 8 ++++---- tsconfig.vite.json | 4 ++-- vite.config.ts | 1 + 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ddfb2a5..fa49c46 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,16 @@ This website hosts the documentation for the [reoserv][reoserv] project Before you can run this project, you need to have the following installed on your machine: -- [Node.js][node] v20+ (for local development with the Remix web framework) -- [Bun][bun] v1.0.36+ (a modern package manager & script runner for Node.js +- [Node.js][node] v22+ (for local development with the Remix web framework) +- [Bun][bun] v1.1.36+ (a modern package manager & script runner for Node.js projects) Verify that both are setup on your system and meet our version requirements by running: ```sh -bun --version # eg: 1.0.36 -node --version # eg: v20.4.0 +bun --version # eg: 1.1.36 +node --version # eg: v22.10.0 ``` ## Installation diff --git a/bun.lockb b/bun.lockb index d19c4237baa002d78e4a0c4b2e40f0fce870b961..44ca2ce989c604dd88524af6d97a705ec07290bc 100755 GIT binary patch delta 32192 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 TbXr!-m2EDz$lh0{4*!1u6r$oY delta 26740 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
    +

    diff --git a/app/components/release.tsx b/app/components/release.tsx index 072513d..1b3cbd1 100644 --- a/app/components/release.tsx +++ b/app/components/release.tsx @@ -11,7 +11,7 @@ type ReleaseProps = { function Release({ release }: ReleaseProps) { return ( -
    +

    diff --git a/app/root.tsx b/app/root.tsx index cc8df72..ebbaa7f 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -59,7 +59,7 @@ export function Layout({ children }: { children: React.ReactNode }) { -
    +
    {children}
    diff --git a/app/routes.ts b/app/routes.ts index bd88bc3..52db8b1 100644 --- a/app/routes.ts +++ b/app/routes.ts @@ -7,15 +7,15 @@ import { } from '@react-router/dev/routes'; export default [ - layout('./routes/layout.tsx', [ - index('./routes/home.tsx'), - route('404', './routes/404.tsx'), + layout('./routes/_news/route.tsx', [ + index('./routes/_news.index/route.tsx'), + route('404', './routes/_news.404/route.tsx'), ]), + route('news/:name', './routes/news.$name/route.tsx'), ...prefix('docs', [ - index('./routes/docs.index.tsx'), - route(':name', './routes/docs.$name.tsx'), + index('./routes/docs.index/route.tsx'), + route(':name', './routes/docs.$name/route.tsx'), ]), - route('news/:name', './routes/news.$name.tsx'), - route('theme', './routes/theme.tsx'), - route('*', './routes/$.tsx'), + route('theme', './routes/theme/route.tsx'), + route('*', './routes/$/route.tsx'), ] satisfies RouteConfig; diff --git a/app/routes/$.tsx b/app/routes/$/route.tsx similarity index 100% rename from app/routes/$.tsx rename to app/routes/$/route.tsx diff --git a/app/routes/404.tsx b/app/routes/_news.404/route.tsx similarity index 90% rename from app/routes/404.tsx rename to app/routes/_news.404/route.tsx index 744b628..4b015c4 100644 --- a/app/routes/404.tsx +++ b/app/routes/_news.404/route.tsx @@ -1,6 +1,6 @@ import { Link } from 'react-router'; -export default function FourOFour() { +export default function Component() { return ( <> 404 - Page not found | REOSERV diff --git a/app/routes/home.tsx b/app/routes/_news.index/route.tsx similarity index 66% rename from app/routes/home.tsx rename to app/routes/_news.index/route.tsx index e395bcf..6d17435 100644 --- a/app/routes/home.tsx +++ b/app/routes/_news.index/route.tsx @@ -1,18 +1,19 @@ import { getNewsFeed } from '~/.server/get-news-feed'; import { News } from '~/components/news'; -import type { Route } from './+types/home'; +import type { Route } from './+types/route'; export async function loader() { const articles = await getNewsFeed(); return { articles }; } -export default function Home({ - loaderData: { articles }, -}: Route.ComponentProps) { +export default function Home({ loaderData }: Route.ComponentProps) { + const { articles } = loaderData; + return ( <> Home | REOSERV + ); diff --git a/app/routes/layout.tsx b/app/routes/_news/route.tsx similarity index 76% rename from app/routes/layout.tsx rename to app/routes/_news/route.tsx index 3f90238..6509554 100644 --- a/app/routes/layout.tsx +++ b/app/routes/_news/route.tsx @@ -3,9 +3,9 @@ import { getGitFeed } from '~/.server/get-git-feed'; import { getLatestRelease } from '~/.server/get-latest-release'; import { GitFeed } from '~/components/git-feed'; import { Release } from '~/components/release'; -import type { Route } from './+types/layout'; +import type { Route } from './+types/route'; -export async function loader({ request }: Route.LoaderArgs) { +export async function loader() { const commits = await getGitFeed(); const release = await getLatestRelease(); @@ -17,7 +17,7 @@ export default function Component({ loaderData }: Route.ComponentProps) { return (
    -
    +

    Latest News


    @@ -25,8 +25,8 @@ export default function Component({ loaderData }: Route.ComponentProps) {

    -
    - {release ? : null} +
    +
    diff --git a/app/routes/docs.$name.tsx b/app/routes/docs.$name.tsx deleted file mode 100644 index 9342076..0000000 --- a/app/routes/docs.$name.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import { invariant } from '@epic-web/invariant'; -import { NavLink, data, redirect } from 'react-router'; -import { getDocsPage } from '~/.server/get-docs-page'; -import { ProseContainer } from '~/components/prose-container'; -import type { Route } from './+types/docs.$name'; - -export async function loader({ params }: Route.LoaderArgs) { - invariant(params.name, 'name is required'); - - const page = await getDocsPage(params.name); - - if (!page) { - throw redirect('/404'); - } - - return data( - { page }, - { - status: 200, - headers: { - 'Cache-Control': 'max-age=3600, public', - ETag: page.etag, - }, - }, - ); -} - -const DOCS_NAV_LINKS = [ - { - section: 'Getting Started', - items: [ - { title: 'Installation', link: '/docs/installation' }, - { title: 'Database', link: '/docs/database' }, - { title: 'Configuration', link: '/docs/configuration' }, - ], - }, - { - section: 'Data', - items: [ - { title: 'Arenas', link: '/docs/arenas' }, - { title: 'Commands', link: '/docs/commands' }, - { title: 'Packet Rate Limits', link: '/docs/packet-rate-limits' }, - { title: 'Formulas', link: '/docs/formulas' }, - { title: 'Pub files', link: '/docs/pubs' }, - { title: 'Maps', link: '/docs/maps' }, - { title: 'Quests', link: '/docs/quests' }, - { title: 'News', link: '/docs/news' }, - ], - }, -] as const; - -function ListHeader({ title }: { title: string }) { - return ( -
  • - {title} -
  • - ); -} - -function ListItem({ title, link }: { title: string; link: string }) { - return ( -
  • - - `block border-l-4 py-1 pl-3 transition hover:border-l-amber-6 hover:text-amber-11 ${ - isActive - ? 'border-l-amber-7 font-bold text-amber-11 tracking-wide' - : 'border-l-sand-4 text-sand-11' - }` - } - to={link} - > - {title} - -
  • - ); -} - -export default function Docs({ loaderData }: Route.ComponentProps) { - const { page } = loaderData; - const { title, content, description } = page; - - return ( - <> - {`${title} | Docs | REOSERV`} - - -
    -
    -
      - {DOCS_NAV_LINKS.map(({ section, items }) => ( - <> - - {items.map(({ title, link }) => ( - - ))} - - ))} -
    -
    -
    - -

    {title}

    -
    - -
    -
    - - ); -} diff --git a/app/routes/docs.$name/nav.tsx b/app/routes/docs.$name/nav.tsx new file mode 100644 index 0000000..8e6bdbb --- /dev/null +++ b/app/routes/docs.$name/nav.tsx @@ -0,0 +1,70 @@ +import { NavLink as RouterNavLink } from 'react-router'; + +const LINKS = [ + { + section: 'Getting Started', + items: [ + { title: 'Installation', link: '/docs/installation' }, + { title: 'Database', link: '/docs/database' }, + { title: 'Configuration', link: '/docs/configuration' }, + ], + }, + { + section: 'Data', + items: [ + { title: 'Arenas', link: '/docs/arenas' }, + { title: 'Commands', link: '/docs/commands' }, + { title: 'Packet Rate Limits', link: '/docs/packet-rate-limits' }, + { title: 'Formulas', link: '/docs/formulas' }, + { title: 'Pub files', link: '/docs/pubs' }, + { title: 'Maps', link: '/docs/maps' }, + { title: 'Quests', link: '/docs/quests' }, + { title: 'News', link: '/docs/news' }, + ], + }, +] as const; + +function Nav() { + return ( +
      + {LINKS.map(({ section, items }) => ( + <> + + {items.map(({ title, link }) => ( + + ))} + + ))} +
    + ); +} + +function NavGroupHeader({ title }: { title: string }) { + return ( +
  • + {title} +
  • + ); +} + +function NavLink({ title, link }: { title: string; link: string }) { + return ( +
  • + + `block border-l-4 py-1 pl-3 transition hover:border-l-amber-6 hover:text-amber-11 ${ + isActive + ? 'border-l-amber-7 font-bold text-amber-11 tracking-wide' + : 'border-l-sand-4 text-sand-11' + }` + } + to={link} + > + {title} + +
  • + ); +} + +export { Nav }; diff --git a/app/routes/docs.$name/route.tsx b/app/routes/docs.$name/route.tsx new file mode 100644 index 0000000..3426e53 --- /dev/null +++ b/app/routes/docs.$name/route.tsx @@ -0,0 +1,47 @@ +import { invariant } from '@epic-web/invariant'; +import { redirect } from 'react-router'; +import { getDocsPage } from '~/.server/get-docs-page'; +import { ProseContainer } from '~/components/prose-container'; +import type { Route } from './+types/route'; +import { Nav } from './nav'; + +export async function loader({ params }: Route.LoaderArgs) { + invariant(params.name, 'name is required'); + + const page = await getDocsPage(params.name); + + if (!page) { + throw redirect('/404'); + } + + return { page }; +} + +export default function Docs({ loaderData }: Route.ComponentProps) { + const { + page: { title, content, description }, + } = loaderData; + + return ( + <> + {`${title} | Docs | REOSERV`} + + +
    +
    +
    +
    + +

    {title}

    +
    + +
    +
    + + ); +} diff --git a/app/routes/docs.index.tsx b/app/routes/docs.index/route.tsx similarity index 100% rename from app/routes/docs.index.tsx rename to app/routes/docs.index/route.tsx diff --git a/app/routes/news.$name.tsx b/app/routes/news.$name/route.tsx similarity index 70% rename from app/routes/news.$name.tsx rename to app/routes/news.$name/route.tsx index 910335f..146d502 100644 --- a/app/routes/news.$name.tsx +++ b/app/routes/news.$name/route.tsx @@ -1,8 +1,8 @@ import { invariant } from '@epic-web/invariant'; -import { data, redirect, useLoaderData } from 'react-router'; +import { redirect } from 'react-router'; import { getNewsArticle } from '~/.server/get-news-article'; import { ProseContainer } from '~/components/prose-container'; -import type { Route } from './+types/news.$name'; +import type { Route } from './+types/route'; export async function loader({ request, params }: Route.LoaderArgs) { invariant(params.name, 'name is required'); @@ -13,25 +13,13 @@ export async function loader({ request, params }: Route.LoaderArgs) { throw redirect('/404'); } - if (request.headers.get('If-None-Match') === article.etag) { - return data(null, 304); - } - - return data( - { article }, - { - headers: { - 'Cache-Control': 'max-age=3600, public', - ETag: article.etag, - }, - }, - ); + return { article }; } -export default function Article() { +export default function Article({ loaderData }: Route.ComponentProps) { const { article: { title, date, content, description }, - } = useLoaderData(); + } = loaderData; return ( <> diff --git a/app/routes/theme.tsx b/app/routes/theme/route.tsx similarity index 92% rename from app/routes/theme.tsx rename to app/routes/theme/route.tsx index 186f570..74e74df 100644 --- a/app/routes/theme.tsx +++ b/app/routes/theme/route.tsx @@ -1,6 +1,6 @@ import { redirect } from 'react-router'; import { getThemeFromCookies, themeCookie } from '~/.server/theme'; -import type { Route } from './+types/theme'; +import type { Route } from './+types/route'; export async function action({ request }: Route.ActionArgs) { const currentTheme = await getThemeFromCookies(request); From 64831dc0fba0a74884e4804a4c6990567f5a15ec Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Tue, 26 Nov 2024 21:31:27 -0700 Subject: [PATCH 46/75] Minor refactor --- app/root.tsx | 12 ++++---- app/routes/_news.404/route.tsx | 11 +++++-- app/routes/_news.index/route.tsx | 16 +++++----- app/routes/docs.$name/route.tsx | 51 ++++++++++++++++---------------- app/routes/news.$name/route.tsx | 45 ++++++++++++++-------------- 5 files changed, 70 insertions(+), 65 deletions(-) diff --git a/app/root.tsx b/app/root.tsx index ebbaa7f..5c40ab4 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -12,11 +12,6 @@ import { Header } from '~/components/header'; import type { Route } from './+types/root'; import styles from './tailwind.css?url'; -export async function loader({ request }: Route.LoaderArgs) { - const theme = await getThemeFromCookies(request); - return { theme } as const; -} - export const links: Route.LinksFunction = () => [ { rel: 'icon', type: 'image/png', href: '/favicon-32.png' }, { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, @@ -33,6 +28,11 @@ export const links: Route.LinksFunction = () => [ { rel: 'stylesheet', href: styles }, ]; +export async function loader({ request }: Route.LoaderArgs) { + const theme = await getThemeFromCookies(request); + return { theme } as const; +} + export function Layout({ children }: { children: React.ReactNode }) { const rootLoaderData = useRouteLoaderData('root'); const theme = rootLoaderData?.theme ?? 'light'; @@ -59,7 +59,7 @@ export function Layout({ children }: { children: React.ReactNode }) { -
    +
    {children}
    diff --git a/app/routes/_news.404/route.tsx b/app/routes/_news.404/route.tsx index 4b015c4..98948e5 100644 --- a/app/routes/_news.404/route.tsx +++ b/app/routes/_news.404/route.tsx @@ -1,10 +1,17 @@ import { Link } from 'react-router'; +import type { Route } from './+types/route'; + +export const meta: Route.MetaFunction = () => [ + { title: '404 - Page not found | REOSERV' }, + { + name: 'description', + content: 'The page you are looking for does not exist', + }, +]; export default function Component() { return ( <> - 404 - Page not found | REOSERV -

    404 - Page not found

    Click{' '} diff --git a/app/routes/_news.index/route.tsx b/app/routes/_news.index/route.tsx index 6d17435..a9d29fb 100644 --- a/app/routes/_news.index/route.tsx +++ b/app/routes/_news.index/route.tsx @@ -2,19 +2,19 @@ import { getNewsFeed } from '~/.server/get-news-feed'; import { News } from '~/components/news'; import type { Route } from './+types/route'; +export const meta: Route.MetaFunction = () => [ + { title: 'News | REOSERV' }, + { name: 'description', content: 'The latest news from the reoserv project' }, +]; + export async function loader() { const articles = await getNewsFeed(); + return { articles }; } -export default function Home({ loaderData }: Route.ComponentProps) { +export default function Component({ loaderData }: Route.ComponentProps) { const { articles } = loaderData; - return ( - <> - Home | REOSERV - - - - ); + return ; } diff --git a/app/routes/docs.$name/route.tsx b/app/routes/docs.$name/route.tsx index 3426e53..069af73 100644 --- a/app/routes/docs.$name/route.tsx +++ b/app/routes/docs.$name/route.tsx @@ -1,13 +1,19 @@ -import { invariant } from '@epic-web/invariant'; import { redirect } from 'react-router'; import { getDocsPage } from '~/.server/get-docs-page'; import { ProseContainer } from '~/components/prose-container'; import type { Route } from './+types/route'; import { Nav } from './nav'; -export async function loader({ params }: Route.LoaderArgs) { - invariant(params.name, 'name is required'); +export const meta: Route.MetaFunction = ({ data }) => { + const { page } = data; + + return [ + { title: `${page.title} | Docs | REOSERV` }, + { name: 'description', content: page.description }, + ]; +}; +export async function loader({ params }: Route.LoaderArgs) { const page = await getDocsPage(params.name); if (!page) { @@ -17,31 +23,24 @@ export async function loader({ params }: Route.LoaderArgs) { return { page }; } -export default function Docs({ loaderData }: Route.ComponentProps) { - const { - page: { title, content, description }, - } = loaderData; +export default function Component({ loaderData }: Route.ComponentProps) { + const { page } = loaderData; return ( - <> - {`${title} | Docs | REOSERV`} - - -

    -
    -
    -
    - -

    {title}

    -
    - -
    +
    +
    +
    +
    + +

    {page.title}

    +
    +
    - +
    ); } diff --git a/app/routes/news.$name/route.tsx b/app/routes/news.$name/route.tsx index 146d502..7d250ed 100644 --- a/app/routes/news.$name/route.tsx +++ b/app/routes/news.$name/route.tsx @@ -1,12 +1,18 @@ -import { invariant } from '@epic-web/invariant'; import { redirect } from 'react-router'; import { getNewsArticle } from '~/.server/get-news-article'; import { ProseContainer } from '~/components/prose-container'; import type { Route } from './+types/route'; -export async function loader({ request, params }: Route.LoaderArgs) { - invariant(params.name, 'name is required'); +export const meta: Route.MetaFunction = ({ data }) => { + const { article } = data; + return [ + { title: `${article.title} | REOSERV` }, + { name: 'description', content: article.description }, + ]; +}; + +export async function loader({ params }: Route.LoaderArgs) { const article = await getNewsArticle(params.name); if (!article) { @@ -16,27 +22,20 @@ export async function loader({ request, params }: Route.LoaderArgs) { return { article }; } -export default function Article({ loaderData }: Route.ComponentProps) { - const { - article: { title, date, content, description }, - } = loaderData; +export default function Component({ loaderData }: Route.ComponentProps) { + const { article } = loaderData; return ( - <> - {`${title} | REOSERV`} - - - -
    - {date} -

    {title}

    -

    {description}

    -
    -
    - - + +
    + {article.date} +

    {article.title}

    +

    {article.description}

    +
    +
    + ); } From f90506ab07fe9e9b1265c4cf881ac42c0bf25980 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Tue, 26 Nov 2024 23:14:37 -0700 Subject: [PATCH 47/75] Print pretty dates --- app/.server/utils/clock-offset.ts | 2 +- app/components/git-feed.tsx | 15 +++++++++------ app/components/news.tsx | 11 ++++++----- app/components/pretty-time.tsx | 0 app/components/release.tsx | 5 ++++- app/root.tsx | 6 ++++-- app/routes/_news.index/route.tsx | 11 +++++++++-- app/routes/_news/route.tsx | 15 +++++++++++++-- app/routes/news.$name/route.tsx | 15 ++++++++++++--- bun.lockb | Bin 222608 -> 222608 bytes server.js | 15 --------------- server/app.ts | 20 ++++++++++++++++++++ 12 files changed, 78 insertions(+), 37 deletions(-) create mode 100644 app/components/pretty-time.tsx diff --git a/app/.server/utils/clock-offset.ts b/app/.server/utils/clock-offset.ts index ce7b8df..7ffe74a 100644 --- a/app/.server/utils/clock-offset.ts +++ b/app/.server/utils/clock-offset.ts @@ -1,4 +1,4 @@ -// The clockOffset cookie is set in the entry.server.js file +// The clockOffset cookie is set in the server/app.ts file // use a named capture group const regex = /clockOffset=(?[+-\d]+)/; diff --git a/app/components/git-feed.tsx b/app/components/git-feed.tsx index b914976..ab47e48 100644 --- a/app/components/git-feed.tsx +++ b/app/components/git-feed.tsx @@ -7,6 +7,7 @@ type GitFeedProps = { link: string; content: string; timestamp: string; + localDate: string; }>; }; @@ -20,16 +21,18 @@ function GitFeed({ commits }: GitFeedProps) { Recent changes

      - {commits.map(({ id, link, content, timestamp }) => ( -
    • - {timestamp} + {commits.map((commit) => ( +
    • + - - {content} + + {commit.content}
    • diff --git a/app/components/news.tsx b/app/components/news.tsx index ead3b45..5e82bf0 100644 --- a/app/components/news.tsx +++ b/app/components/news.tsx @@ -5,6 +5,7 @@ type Article = { name: string; description: string; date: string; + localDate: string; }; type NewsProps = { @@ -28,17 +29,17 @@ function News({ articles }: NewsProps) { } function Preview({ article }: PreviewProps) { - const { title, date, description } = article; - return (
      -
      {date}
      +

      - {title} + {article.title}

      - {description} + {article.description}

      diff --git a/app/components/pretty-time.tsx b/app/components/pretty-time.tsx new file mode 100644 index 0000000..e69de29 diff --git a/app/components/release.tsx b/app/components/release.tsx index 1b3cbd1..0f97b53 100644 --- a/app/components/release.tsx +++ b/app/components/release.tsx @@ -3,6 +3,7 @@ import { Link } from 'react-router'; type ReleaseProps = { release: { + localDate: string; timestamp: string; link: string; name: string; @@ -19,7 +20,9 @@ function Release({ release }: ReleaseProps) { Latest release

    - {release.timestamp} + [ @@ -30,7 +31,8 @@ export const links: Route.LinksFunction = () => [ export async function loader({ request }: Route.LoaderArgs) { const theme = await getThemeFromCookies(request); - return { theme } as const; + const clockOffset = getClockOffset(request); + return { theme, clockOffset } as const; } export function Layout({ children }: { children: React.ReactNode }) { @@ -59,7 +61,7 @@ export function Layout({ children }: { children: React.ReactNode }) { -
    +
    {children}
    diff --git a/app/routes/_news.index/route.tsx b/app/routes/_news.index/route.tsx index a9d29fb..bf72580 100644 --- a/app/routes/_news.index/route.tsx +++ b/app/routes/_news.index/route.tsx @@ -1,4 +1,6 @@ import { getNewsFeed } from '~/.server/get-news-feed'; +import { getClockOffset } from '~/.server/utils/clock-offset'; +import { getPrettyDate } from '~/.server/utils/pretty-date'; import { News } from '~/components/news'; import type { Route } from './+types/route'; @@ -7,10 +9,15 @@ export const meta: Route.MetaFunction = () => [ { name: 'description', content: 'The latest news from the reoserv project' }, ]; -export async function loader() { +export async function loader({ request }: Route.LoaderArgs) { const articles = await getNewsFeed(); - return { articles }; + return { + articles: articles.map((article) => ({ + ...article, + localDate: getPrettyDate(article.date, getClockOffset(request)), + })), + }; } export default function Component({ loaderData }: Route.ComponentProps) { diff --git a/app/routes/_news/route.tsx b/app/routes/_news/route.tsx index 6509554..9d79efa 100644 --- a/app/routes/_news/route.tsx +++ b/app/routes/_news/route.tsx @@ -1,15 +1,26 @@ import { Outlet } from 'react-router'; import { getGitFeed } from '~/.server/get-git-feed'; import { getLatestRelease } from '~/.server/get-latest-release'; +import { getClockOffset } from '~/.server/utils/clock-offset'; +import { getPrettyDate } from '~/.server/utils/pretty-date'; import { GitFeed } from '~/components/git-feed'; import { Release } from '~/components/release'; import type { Route } from './+types/route'; -export async function loader() { +export async function loader({ request }: Route.LoaderArgs) { const commits = await getGitFeed(); const release = await getLatestRelease(); - return { commits, release }; + return { + commits: commits.map((commit) => ({ + ...commit, + localDate: getPrettyDate(commit.timestamp, getClockOffset(request)), + })), + release: { + ...release, + localDate: getPrettyDate(release.timestamp, getClockOffset(request)), + }, + }; } export default function Component({ loaderData }: Route.ComponentProps) { diff --git a/app/routes/news.$name/route.tsx b/app/routes/news.$name/route.tsx index 7d250ed..178f521 100644 --- a/app/routes/news.$name/route.tsx +++ b/app/routes/news.$name/route.tsx @@ -1,5 +1,7 @@ import { redirect } from 'react-router'; import { getNewsArticle } from '~/.server/get-news-article'; +import { getClockOffset } from '~/.server/utils/clock-offset'; +import { getPrettyDate } from '~/.server/utils/pretty-date'; import { ProseContainer } from '~/components/prose-container'; import type { Route } from './+types/route'; @@ -12,14 +14,19 @@ export const meta: Route.MetaFunction = ({ data }) => { ]; }; -export async function loader({ params }: Route.LoaderArgs) { +export async function loader({ params, request }: Route.LoaderArgs) { const article = await getNewsArticle(params.name); if (!article) { throw redirect('/404'); } - return { article }; + return { + article: { + ...article, + localDate: getPrettyDate(article.date, getClockOffset(request)), + }, + }; } export default function Component({ loaderData }: Route.ComponentProps) { @@ -28,7 +35,9 @@ export default function Component({ loaderData }: Route.ComponentProps) { return (
    - {article.date} +

    {article.title}

    {article.description}

    diff --git a/bun.lockb b/bun.lockb index 44ca2ce989c604dd88524af6d97a705ec07290bc..56fd044e899a7f177118eed5443af30e46c53f55 100755 GIT binary patch delta 31 jcmbPmns>r!-i8*&ElexD*_jx?pnZck)AkMC%nu|1rSA#5 delta 31 ncmbPmns>r!-i8*&ElexD*%{+Z^$he3+BbMJZQtO{{6G=_xCILd diff --git a/server.js b/server.js index def5b55..ce635d9 100644 --- a/server.js +++ b/server.js @@ -43,21 +43,6 @@ if (DEVELOPMENT) { app.use(morgan('tiny')); -// set a clockOffset cookie to help render dates correctly on the server -app.use((req, res, next) => { - const cookies = req.headers.cookie; - - if (!cookies || !cookies.includes('clockOffset')) { - const script = `document.cookie = 'clockOffset=' + (new Date().getTimezoneOffset() * -1) + '; path=/'; window.location.reload();`; - res.set('Content-Type', 'text/html'); - res.set('Set-Cookie', 'clockOffset=0; path=/'); - res.set('Refresh', `0; url=${req.originalUrl}`); - return res.send(``); - } - - next(); -}); - app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`); }); diff --git a/server/app.ts b/server/app.ts index 8a154d3..ff49cf7 100644 --- a/server/app.ts +++ b/server/app.ts @@ -1,6 +1,7 @@ import 'react-router'; import { createRequestHandler } from '@react-router/express'; import express from 'express'; +import type { NextFunction, Request, Response } from 'express'; declare module 'react-router' { interface AppLoadContext { @@ -10,6 +11,25 @@ declare module 'react-router' { export const app = express(); +// set a clockOffset cookie to help render dates correctly on the server +app.use((req: Request, res: Response, next: NextFunction) => { + const cookies = req.headers.cookie; + + if (cookies?.includes('clockOffset')) { + return next(); + } + + const script = ` + const offset = new Date().getTimezoneOffset() * -1; + document.cookie = 'clockOffset=' + offset + '; path=/'; + window.location.reload(); + `; + res.set('Content-Type', 'text/html'); + res.set('Set-Cookie', 'clockOffset=0; path=/'); + res.set('Refresh', `0; url=${req.originalUrl}`); + res.send(``); +}); + app.use( createRequestHandler({ // @ts-expect-error - virtual module provided by React Router at build time From f5f556351d3d7b6c9b967ebc0cedd11f36016755 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Tue, 26 Nov 2024 23:20:20 -0700 Subject: [PATCH 48/75] Fix vite config --- bun.lockb | Bin 222608 -> 222608 bytes tsconfig.vite.json | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 56fd044e899a7f177118eed5443af30e46c53f55..044d53127534dbe4028bbd18ac06b95725dfbfd7 100755 GIT binary patch delta 151 zcmV;I0BHY^%MFmr4UjG%J_XbWE7mBqLk^VxF(HfY_!-N3<}ClR&Im<==Turiu};cT zlb9+nvq)3L!9Xq9`htqf8onk8(Px?94lf6Z#hv&bGN%r12O5r#>!JjyJWy|bl@ZZN zKtoE!Xzrxf=psAOQhP9tePN}6DUF9s6#=(R6#`r~2LWC+E-)@Ix3EhBqnrUTw^Zl? FJbhJ)K=S|q delta 151 zcmbPmns)*a=_%M8D~`)|E7VE5Sp2h$ef~PW?abYl%-?3t>Pr-BbPv?s=yxh;@(nG6 z%^tx=4>~yK?>xy`{lz_f>E^;7+y4%wJ{)2b?yQP^{JZ;kDBCXCKRHc2zs_mgiQ2?% zlJ6_Sn*Ur((S7FLr5n8OY}2t_RoU(<%DCNElqtrHorwVqwr}ueT0Do*V0*|5CYxFS D0kc1M diff --git a/tsconfig.vite.json b/tsconfig.vite.json index a9db053..9bea40c 100644 --- a/tsconfig.vite.json +++ b/tsconfig.vite.json @@ -21,6 +21,7 @@ "~/*": ["./app/*"] }, "esModuleInterop": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "skipLibCheck": true } } From 33be75f56af8d75fc4f82103ab7df6443e02af40 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Wed, 27 Nov 2024 19:13:11 -0700 Subject: [PATCH 49/75] Update deps --- bun.lockb | Bin 222608 -> 222608 bytes package.json | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index 044d53127534dbe4028bbd18ac06b95725dfbfd7..4ba77f1a9f66eb85051912a0ce71d875a1f1e744 100755 GIT binary patch delta 233 zcmVr|o!?f*rxV#GiiPRC`=C`#tjuzheZhi jw?zp8yj=k@w*qGZM|1%-mrC0LXO~qe10c82+XBCdC^>7& delta 233 zcmV_# zZEr&2h_oa=S16SV#SA@n$qV~sX32tOP;=%ud$^bF2mu&CTs1M=2Q^l Date: Wed, 27 Nov 2024 19:40:36 -0700 Subject: [PATCH 50/75] Minor tweaks --- app/.server/theme.ts | 9 +++++++-- app/components/git-feed.tsx | 2 +- app/components/{release.tsx => latest-release.tsx} | 6 +++--- app/routes/_news/route.tsx | 4 ++-- 4 files changed, 13 insertions(+), 8 deletions(-) rename app/components/{release.tsx => latest-release.tsx} (89%) diff --git a/app/.server/theme.ts b/app/.server/theme.ts index 6318ec8..de03403 100644 --- a/app/.server/theme.ts +++ b/app/.server/theme.ts @@ -1,11 +1,16 @@ import { createCookie } from 'react-router'; -export const themeCookie = createCookie('theme', { +const themeCookie = createCookie('theme', { httpOnly: true, secure: true, + sameSite: 'lax', + path: '/', + maxAge: 0, }); -export async function getThemeFromCookies(request: Request) { +async function getThemeFromCookies(request: Request) { const theme = await themeCookie.parse(request.headers.get('Cookie')); return theme === 'dark' ? 'dark' : 'light'; } + +export { getThemeFromCookies, themeCookie }; diff --git a/app/components/git-feed.tsx b/app/components/git-feed.tsx index ab47e48..8e9bd8a 100644 --- a/app/components/git-feed.tsx +++ b/app/components/git-feed.tsx @@ -37,7 +37,7 @@ function GitFeed({ commits }: GitFeedProps) { ))} - {' '} +
    ); } diff --git a/app/components/release.tsx b/app/components/latest-release.tsx similarity index 89% rename from app/components/release.tsx rename to app/components/latest-release.tsx index 0f97b53..e849dd1 100644 --- a/app/components/release.tsx +++ b/app/components/latest-release.tsx @@ -1,7 +1,7 @@ import { FcDownload } from 'react-icons/fc'; import { Link } from 'react-router'; -type ReleaseProps = { +type LatestReleaseProps = { release: { localDate: string; timestamp: string; @@ -10,7 +10,7 @@ type ReleaseProps = { }; }; -function Release({ release }: ReleaseProps) { +function LatestRelease({ release }: LatestReleaseProps) { return (

    @@ -37,4 +37,4 @@ function Release({ release }: ReleaseProps) { ); } -export { Release }; +export { LatestRelease }; diff --git a/app/routes/_news/route.tsx b/app/routes/_news/route.tsx index 9d79efa..01c3d61 100644 --- a/app/routes/_news/route.tsx +++ b/app/routes/_news/route.tsx @@ -4,7 +4,7 @@ import { getLatestRelease } from '~/.server/get-latest-release'; import { getClockOffset } from '~/.server/utils/clock-offset'; import { getPrettyDate } from '~/.server/utils/pretty-date'; import { GitFeed } from '~/components/git-feed'; -import { Release } from '~/components/release'; +import { LatestRelease } from '~/components/latest-release'; import type { Route } from './+types/route'; export async function loader({ request }: Route.LoaderArgs) { @@ -37,7 +37,7 @@ export default function Component({ loaderData }: Route.ComponentProps) {


    - +
    From e5320bdf9fa62a01fcac2fee9291c48b87c3668e Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Wed, 27 Nov 2024 22:18:12 -0700 Subject: [PATCH 51/75] Add table of contents --- app/.server/utils/parse-markdown.ts | 25 ++++++++----- app/root.tsx | 2 +- app/routes/news.$name/route.tsx | 32 ++++++++++------- app/routes/news.$name/table-of-contents.tsx | 37 ++++++++++++++++++++ bun.lockb | Bin 222608 -> 223400 bytes package.json | 1 + tailwind.config.ts | 3 ++ 7 files changed, 77 insertions(+), 23 deletions(-) create mode 100644 app/routes/news.$name/table-of-contents.tsx diff --git a/app/.server/utils/parse-markdown.ts b/app/.server/utils/parse-markdown.ts index bc6af4b..51826c5 100644 --- a/app/.server/utils/parse-markdown.ts +++ b/app/.server/utils/parse-markdown.ts @@ -2,6 +2,7 @@ import fs from 'node:fs/promises'; import { remember } from '@epic-web/remember'; import frontmatter from 'gray-matter'; import { Marked } from 'marked'; +import { getHeadingList, gfmHeadingId } from 'marked-gfm-heading-id'; import { createHighlighter } from 'shiki'; import { etag } from './etag'; @@ -13,16 +14,19 @@ const highlighter = await remember('highlighter', () => ); const marked = remember('marked', () => - new Marked().use({ async: true, gfm: true }).use({ - renderer: { - code(code) { - return highlighter.codeToHtml(code.text, { - lang: code.lang ?? 'text', - theme: 'github-dark-dimmed', - }); + new Marked() + .use({ async: true, gfm: true }) + .use(gfmHeadingId()) + .use({ + renderer: { + code(code) { + return highlighter.codeToHtml(code.text, { + lang: code.lang ?? 'text', + theme: 'github-dark-dimmed', + }); + }, }, - }, - }), + }), ); async function parseMarkdown(filepath: string) { @@ -34,6 +38,8 @@ async function parseMarkdown(filepath: string) { const content = replaceVideoTags(html); + const toc = getHeadingList(); + return { title: fm.data.title, description: fm.data.description, @@ -41,6 +47,7 @@ async function parseMarkdown(filepath: string) { lastmod: new Date(fm.data.lastmod).toISOString(), etag: etag(content), content, + toc, }; } diff --git a/app/root.tsx b/app/root.tsx index a0d4941..4e59e05 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -40,7 +40,7 @@ export function Layout({ children }: { children: React.ReactNode }) { const theme = rootLoaderData?.theme ?? 'light'; return ( - + diff --git a/app/routes/news.$name/route.tsx b/app/routes/news.$name/route.tsx index 178f521..20ed820 100644 --- a/app/routes/news.$name/route.tsx +++ b/app/routes/news.$name/route.tsx @@ -4,6 +4,7 @@ import { getClockOffset } from '~/.server/utils/clock-offset'; import { getPrettyDate } from '~/.server/utils/pretty-date'; import { ProseContainer } from '~/components/prose-container'; import type { Route } from './+types/route'; +import { TableOfContents } from './table-of-contents'; export const meta: Route.MetaFunction = ({ data }) => { const { article } = data; @@ -33,18 +34,23 @@ export default function Component({ loaderData }: Route.ComponentProps) { const { article } = loaderData; return ( - -
    - -

    {article.title}

    -

    {article.description}

    -
    -
    - +
    + +
    + +

    {article.title}

    +

    {article.description}

    +
    +
    + +
    + +
    +
    ); } diff --git a/app/routes/news.$name/table-of-contents.tsx b/app/routes/news.$name/table-of-contents.tsx new file mode 100644 index 0000000..5b37f82 --- /dev/null +++ b/app/routes/news.$name/table-of-contents.tsx @@ -0,0 +1,37 @@ +type TableOfContentsProps = { + toc: Array<{ + level: number; + id: string; + text: string; + raw: string; + }>; +}; + +function TableOfContents({ toc }: TableOfContentsProps) { + const filteredToc = toc.filter( + (item) => item.level === 2 || item.level === 3, + ); + + if (filteredToc.length === 0) { + return null; + } + + return ( +
    + ); +} + +export { TableOfContents }; diff --git a/bun.lockb b/bun.lockb index 4ba77f1a9f66eb85051912a0ce71d875a1f1e744..00c194749b5197f494efef636a24c7f8bc2383b3 100755 GIT binary patch delta 39326 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 R7GFZV8K!!RBo~phi^?zG{02T@V&|mLybzU6PRC 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 Date: Wed, 27 Nov 2024 22:22:22 -0700 Subject: [PATCH 52/75] Fix theme cookies --- app/.server/theme.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/.server/theme.ts b/app/.server/theme.ts index de03403..3b12510 100644 --- a/app/.server/theme.ts +++ b/app/.server/theme.ts @@ -3,9 +3,6 @@ import { createCookie } from 'react-router'; const themeCookie = createCookie('theme', { httpOnly: true, secure: true, - sameSite: 'lax', - path: '/', - maxAge: 0, }); async function getThemeFromCookies(request: Request) { From ef6ebb8f4df2a5683eb84396a0257dc25792fb9d Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Wed, 27 Nov 2024 22:29:43 -0700 Subject: [PATCH 53/75] Fix table of contents --- app/routes/news.$name/table-of-contents.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/routes/news.$name/table-of-contents.tsx b/app/routes/news.$name/table-of-contents.tsx index 5b37f82..065e310 100644 --- a/app/routes/news.$name/table-of-contents.tsx +++ b/app/routes/news.$name/table-of-contents.tsx @@ -17,13 +17,13 @@ function TableOfContents({ toc }: TableOfContentsProps) { } return ( -

    EkIh{EL8g~xa0+#O6WmC^qc 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 diff --git a/package.json b/package.json index cad8243..9b98b9e 100644 --- a/package.json +++ b/package.json @@ -45,20 +45,20 @@ "@total-typescript/ts-reset": "^0.6.1", "@types/compression": "^1.7.5", "@types/express": "^5.0.0", - "@types/express-serve-static-core": "^5.0.1", + "@types/express-serve-static-core": "^5.0.2", "@types/morgan": "^1.9.9", - "@types/node": "^22.9.3", + "@types/node": "^22", "@types/react": "npm:types-react@rc", "@types/react-dom": "npm:types-react-dom@rc", "autoprefixer": "^10.4.20", "cross-env": "^7.0.3", "cssnano": "^7.0.6", "postcss": "^8.4.49", - "prettier": "^3.3.3", + "prettier": "^3.4.1", "tailwindcss": "^3.4.15", "tailwindcss-animate": "^1.0.7", "typescript": "^5.7.2", - "vite": "^5.4.11", + "vite": "^6.0.0", "vite-imagetools": "^7.0.4", "vite-tsconfig-paths": "^5.1.3" }, diff --git a/tsconfig.vite.json b/tsconfig.vite.json index 9ad4126..a9db053 100644 --- a/tsconfig.vite.json +++ b/tsconfig.vite.json @@ -11,8 +11,8 @@ "strict": true, "lib": ["DOM", "DOM.Iterable", "ES2022"], "types": ["vite/client"], - "target": "ES2022", - "module": "ES2022", + "target": "ESNext", + "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", "baseUrl": ".", diff --git a/vite.config.ts b/vite.config.ts index 8934f3c..d63eb4c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -8,6 +8,7 @@ import tsconfigPaths from 'vite-tsconfig-paths'; export default defineConfig(({ isSsrBuild }) => ({ build: { rollupOptions: isSsrBuild ? { input: './server/app.ts' } : undefined, + target: 'ESNext', }, css: { postcss: { plugins: [tailwindcss, autoprefixer] }, From 70eced997d3c2d7dfdb36a01c594b3496df36303 Mon Sep 17 00:00:00 2001 From: Abhinandan Panigrahi Date: Tue, 26 Nov 2024 21:02:31 -0700 Subject: [PATCH 45/75] Fix routes and types, remove etags --- app/components/git-feed.tsx | 2 +- app/components/release.tsx | 2 +- app/root.tsx | 2 +- app/routes.ts | 16 +-- app/routes/{$.tsx => $/route.tsx} | 0 app/routes/{404.tsx => _news.404/route.tsx} | 2 +- .../{home.tsx => _news.index/route.tsx} | 9 +- app/routes/{layout.tsx => _news/route.tsx} | 10 +- app/routes/docs.$name.tsx | 115 ------------------ app/routes/docs.$name/nav.tsx | 70 +++++++++++ app/routes/docs.$name/route.tsx | 47 +++++++ .../{docs.index.tsx => docs.index/route.tsx} | 0 .../{news.$name.tsx => news.$name/route.tsx} | 22 +--- app/routes/{theme.tsx => theme/route.tsx} | 2 +- 14 files changed, 145 insertions(+), 154 deletions(-) rename app/routes/{$.tsx => $/route.tsx} (100%) rename app/routes/{404.tsx => _news.404/route.tsx} (90%) rename app/routes/{home.tsx => _news.index/route.tsx} (66%) rename app/routes/{layout.tsx => _news/route.tsx} (76%) delete mode 100644 app/routes/docs.$name.tsx create mode 100644 app/routes/docs.$name/nav.tsx create mode 100644 app/routes/docs.$name/route.tsx rename app/routes/{docs.index.tsx => docs.index/route.tsx} (100%) rename app/routes/{news.$name.tsx => news.$name/route.tsx} (70%) rename app/routes/{theme.tsx => theme/route.tsx} (92%) diff --git a/app/components/git-feed.tsx b/app/components/git-feed.tsx index a507075..b914976 100644 --- a/app/components/git-feed.tsx +++ b/app/components/git-feed.tsx @@ -12,7 +12,7 @@ type GitFeedProps = { function GitFeed({ commits }: GitFeedProps) { return ( -