Repository: rootvc/cli-website Branch: main Commit: e988c7bc969e Files: 36 Total size: 575.6 KB Directory structure: gitextract_vtgkc4un/ ├── .github/ │ └── workflows/ │ ├── claude.yml │ └── test.yml ├── .gitignore ├── .stignore ├── LICENSE ├── README.md ├── config/ │ ├── commands.js │ ├── fs.js │ ├── help.js │ ├── jobs.js │ ├── portfolio.js │ └── team.js ├── css/ │ ├── bootstrap.css │ └── styles.css ├── index.html ├── js/ │ ├── addon-fit.js │ ├── addon-web-links.js │ ├── app.bundle.js │ ├── ascii-art.js │ ├── bootstrap.js │ ├── comcastify.js │ ├── geo.js │ ├── rickroll.js │ ├── terminal-ext.js │ └── terminal.js ├── netlify/ │ └── functions/ │ └── submit-application.js ├── netlify.toml ├── package.json ├── scripts/ │ └── build-assets.js ├── tests/ │ ├── ascii-art.test.js │ ├── bootstrap.test.js │ ├── fs.test.js │ ├── helpers/ │ │ └── browser-env.js │ ├── terminal-ext.test.js │ └── terminal.test.js └── welcome.htm ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/workflows/claude.yml ================================================ name: Claude PR Assistant on: issue_comment: types: [created] pull_request_review_comment: types: [created] issues: types: [opened, assigned] pull_request_review: types: [submitted] jobs: claude-code-action: if: | (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || (github.event_name == 'issues' && contains(github.event.issue.body, '@claude')) runs-on: ubuntu-latest permissions: contents: read pull-requests: read issues: read id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 1 - name: Run Claude PR Action uses: anthropics/claude-code-action@beta with: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} timeout_minutes: "60" ================================================ FILE: .github/workflows/test.yml ================================================ name: Test on: push: branches: - main - "codex/**" pull_request: jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npm test - run: npm run build ================================================ FILE: .gitignore ================================================ # for build css/xterm.css js/xterm*.js* js/aalib.js* images/*Zone.Identifier # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Runtime data pids *.pid *.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage *.lcov # nyc test coverage .nyc_output # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) bower_components # node-waf configuration .lock-wscript # Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules/ jspm_packages/ # TypeScript v1 declaration files typings/ # TypeScript cache *.tsbuildinfo # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Microbundle cache .rpt2_cache/ .rts2_cache_cjs/ .rts2_cache_es/ .rts2_cache_umd/ # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # dotenv environment variables file .env .env.test # parcel-bundler cache (https://parceljs.org/) .cache # Next.js build output .next # Nuxt.js build / generate output .nuxt dist # Gatsby files .cache/ # Comment in the public line in if your project uses Gatsby and *not* Next.js # https://nextjs.org/blog/next-9-1#public-directory-support # public # vuepress build output .vuepress/dist # Serverless directories .serverless/ # FuseBox cache .fusebox/ # DynamoDB Local files .dynamodb/ # TernJS port file .tern-port # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.js # testing /coverage # production /build # misc .DS_Store .env.local .env.development.local .env.test.local .env.production.local npm-debug.log* yarn-debug.log* yarn-error.log* .vscode/settings.json # Local Netlify folder .netlify .DS_Store **/.DS_Store ================================================ FILE: .stignore ================================================ .git # Runtime data pids *.pid *.seed *.pid.lock # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) bower_components # node-waf configuration .lock-wscript # Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules jspm_packages # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # Yarn Integrity file .yarn-integrity # parcel-bundler cache (https://parceljs.org/) .cache # next.js build output .next # nuxt.js build output .nuxt # vuepress build output .vuepress/dist # Serverless directories .serverless ================================================ FILE: LICENSE ================================================ MIT License With Custom Attribution Condition Copyright (c) 2025 Root Ventures Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: > You must give Root Ventures a shoutout on at least one (1) of: LinkedIn, X, podcast interview, television news interview, your next Annual General Meeting, or OnlyFans. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # cli-website Who needs a website when you have a terminal. [![Netlify Status](https://api.netlify.com/api/v1/badges/f3bfb854-9bc6-40a7-8d4c-2cccd3850764/deploy-status)](https://app.netlify.com/sites/rootvc-cli-website/deploys) ## Basic Commands - help: list all commands - whois root: learn about us - whois [partner]: learn about a partner - tldr: list all portfolio companies - tldr: [company_name]": learn about a portfolio company - email: reach out to us - twitter: twitter accounts - instagram: instagram account - git: this repo - github: all repos - test: do not use - other: try your favorite linux commands ## Advanced Commands - alias - cat - cd - chmod - chown - clear - cp - curl - df - echo - emacs - exit - fdisk - find - finger - free - ftp - grep - groups - gzip - head - history - kill - less - ls - man (alias: woman) - mkdir - more - mv - nano - open - passwd - pico - pine - ps - pwd - quit - rm - say - sftp - ssh - stop - su - sudo - tail - top - touch - uname - vi - vim - zsh Missing a favorite one? Make a PR! ## Portfolio CLIs Future project: get the Hello Worlds working for every portfolio company with a CLI or npm/pypi/cargo package - esper - great_expectations (alias: ge) - meroxa - okteto - particle - privacy_dynamics (alias: privacy) - zed ## Build Notes Run `npm run build` before serving the site locally or deploying. That build now: - copies and minifies the xterm vendor assets - bundles the app boot/runtime code into `js/app.bundle.js` - emits a minified lazy-load asset for the RickRoll animation ## Performance Notes The terminal now initializes on `DOMContentLoaded` instead of waiting for `window.onload`, and optional work such as ASCII art preloading happens after the terminal is already usable. In local repeated Chromium benchmarks against the previous `HEAD`, median startup timings improved roughly: - homepage prompt visible: `1941.7ms` -> `70.1ms` - homepage first command rendered: `2076.5ms` -> `223.5ms` - `#whois-lee` deep link rendered: `1159.9ms` -> `151.9ms` Live at: [https://root.vc](https://root.vc). Special thanks to [Jerry Neumann](https://www.linkedin.com/in/jerryneumann/) at [Neu Venture Capital](https://neuvc.com/) for the inspiration for this website concept. Thanks to the team at [divshot](https://www.divshot.com) for the awesome and hilarious [Geocities Bootstrap Theme](https://github.com/divshot/geo-bootstrap). _aut viam inveniam aut faciam_ ================================================ FILE: config/commands.js ================================================ // commands.js — Terminal command definitions for the Root Ventures interactive CLI. // // Each key in `commands` maps to a function that runs when the user types that // command. Commands receive `args` as an array of whitespace-split tokens // (everything after the command name). They communicate with the user via the // global `term` object (see terminal-ext.js for its API). // // To add a new command, add an entry to `commands` below. // To add a simple redirect (alias), add an entry to `_aliases` at the bottom. // Blurb displayed by `whois root`. const whoisRoot = "Root Ventures is a San Francisco-based deep tech seed fund. As engineers ourselves, we specialize in leading initial funding for founders tackling new technical opportunities. Our initial investments typically range from $3-5M. With a selective few new deals a year and 2/3 of our funds in reserve, we are committed to being a long-term partner. Try %whois% and one of avidan, kane, chrissy, lee, ben, zodi, or laelah to learn more about our team."; // Set to 10 during development to speed up animated sequences (upgrade, etc.). const timeUnit = 1000; // Tracks whether the user has "killed" the fake crypto miner easter egg (pid 337). let killed = false; // Emits a series of styled strings that the RickRoll animation in rickroll.js // interprets as frame pointers. Triggered by `cat id_rsa` or `test`. function SpawnRickRollPointers() { function padNumber(num, length) { let str = num.toString(); while (str.length < length) { str = "0" + str; } return str; } const colSize = term.cols >= 90 ? 39 : 24; for (let i = 0; i <= colSize; i++) { term.stylePrint( `${colorText(`vsabnBRXofjub${padNumber(i, 2)}`, "command")}`, false ); } } const commands = { // ── Info & Discovery ──────────────────────────────────────────────────────── // Lists all public commands from help.js, aligned to terminal width. help: function () { const maxCmdLength = Math.max(...Object.keys(help).map((x) => x.length)); Object.entries(help).forEach(function (kv) { const cmd = kv[0]; const desc = kv[1]; if (term.cols >= 80) { const rightPad = maxCmdLength - cmd.length + 2; const sep = " ".repeat(rightPad); term.stylePrint(`${cmd}${sep}${desc}`); } else { if (cmd != "help") { // skip second leading newline term.writeln(""); } term.stylePrint(cmd); term.stylePrint(desc); } }); }, // Displays bio and ASCII art portrait for a team member, or the firm blurb. whois: function (args) { const name = args[0]; const people = Object.keys(team); if (!name) { term.stylePrint( "%whois%: Learn about the firm, or a partner - usage:\r\n" ); term.stylePrint("%whois% root"); for (const p of people) { term.stylePrint(`%whois% ${p}`); } } else if (name == "root") { const description = whoisRoot; term.printArt("rootvc-square"); term.stylePrint(description); } else if (Object.keys(team).includes(name)) { const person = team[name]; term.printArt(name); term.stylePrint( `\r\n${person["name"]}, ${person["title"]} - ${name}@root.vc` ); term.stylePrint(`${person["linkedin"]}\r\n`); term.stylePrint(person["description"]); } else { term.stylePrint(`User ${name || ""} not found. Try:\r\n`); term.stylePrint("%whois% root"); for (const p of people) { term.stylePrint(`%whois% ${p}`); } } }, // Displays info about a portfolio company, or lists all companies. // Each entry is sourced from portfolio.js; companies with a `demo` field // also get a runnable command registered at the bottom of this file. tldr: function (args) { const name = args[0] || ""; if (!name) { const companies = Object.keys(portfolio); term.stylePrint("%tldr%: Learn about a portfolio company - usage:\r\n"); for (const c of companies.sort()) { const data = portfolio[c]; const tabs = c.length > 10 ? "\t" : "\t\t"; const sep = term.cols >= 76 ? tabs : "\r\n"; term.stylePrint(`%tldr% ${c}${sep}${data["url"]}`); if (term.cols < 76 && c != companies[companies.length - 1]) { term.writeln(""); } } } else if (!portfolio[name]) { term.stylePrint( `Portfolio company ${name} not found. Should we talk to them? Email us: hello@root.vc` ); } else { const company = portfolio[name]; term.cols >= 60 ? term.printArt(name) : term.writeln(""); term.stylePrint(company["name"]); term.stylePrint(company["url"]); if (company["memo"]) { term.stylePrint(`Investment Memo: ${company["memo"]}`); } term.stylePrint(""); term.stylePrint(company["description"]); if (company["demo"]) { term.stylePrint(`Try it with command: %${name}%`); } } }, // ── Social & Contact ──────────────────────────────────────────────────────── git: function () { term.displayURL("https://github.com/rootvc/cli-website"); }, agm: function () { term.openURL("http://annualmeeting.root.vc"); }, github: function () { term.displayURL("https://github.com/rootvc"); }, twitter: function () { term.displayURL("https://twitter.com/rootvc"); term.displayURL("https://twitter.com/machinepix"); }, instagram: function () { term.displayURL("https://instagram.com/machinepix/"); }, pine: function () { term.openURL("mailto:hello@root.vc"); }, // ── File System ───────────────────────────────────────────────────────────── // The virtual file system is defined in fs.js. Files are stored as hidden // DOM elements and fetched from GitHub on first load. other: function () { term.stylePrint( "Yeah, I didn't literally mean %other%. I mean try some Linux commands" ); }, echo: function (args) { const message = args.join(" "); term.stylePrint(message); }, say: function (args) { const message = args.join(" "); term.stylePrint(`(Robot voice): ${message}`); }, // Expands ~ to /home/ to mimic a real shell. pwd: function () { term.stylePrint("/" + term.cwd.replaceAll("~", `home/${term.user}`)); }, ls: function () { term.stylePrint(_filesHere().join(" ")); }, // Simulates a minimal Unix directory tree: // / // ├── bin/ (contains zsh) // └── home/ (contains guest, root, and each team member) // └── ~/ (the current user's home) // // Team member home dirs are always permission-denied to keep things fun. // Paths are matched by regex before the switch so we don't have to hardcode // team member names here — they're derived from team.js at runtime. cd: function (args) { let dir = args[0] || "~"; if (dir !== "/") { dir = dir.replace(/\/$/, ""); // strip trailing slash } const teamMembers = Object.keys(team); // ../home/ — relative path from ~ or /bin const relativeHomeMatch = dir.match(/^\.\.\/home\/(.+)$/); if (relativeHomeMatch) { if (term.cwd === "~" || term.cwd === "bin") { term.command(`cd ${relativeHomeMatch[1]}`); } else { term.stylePrint(`No such directory: ${dir}`); } return; } // /home/ — absolute path to a home dir const absoluteHomeMatch = dir.match(/^\/home\/(.+)$/); if (absoluteHomeMatch) { const member = absoluteHomeMatch[1]; if (teamMembers.includes(member)) { term.stylePrint(`You do not have permission to access this directory`); } else { term.stylePrint(`No such directory: ${dir}`); } return; } // Bare team member name (e.g. `cd avidan`) if (teamMembers.includes(dir)) { term.stylePrint(`You do not have permission to access this directory`); return; } switch (dir) { case "~": term.cwd = "~"; break; case "..": if (term.cwd === "~") { term.command("cd /home"); } else if (term.cwd === "home" || term.cwd === "bin") { term.command("cd /"); } break; // Any deeply nested upward traversal just lands at root. case "../..": case "../../..": case "../../../..": case "/": term.cwd = "/"; break; case "home": // `home` alone is only reachable from / if (term.cwd === "/") { term.command("cd /home"); } else { term.stylePrint(`You do not have permission to access this directory`); } break; case "/home": term.cwd = "home"; break; // guest and root can only cd to their own home case "guest": case "root": if (term.cwd === "home") { if (term.user === dir) { term.command("cd ~"); } else { term.stylePrint(`You do not have permission to access this directory`); } } else { term.stylePrint(`No such directory: ${dir}`); } break; case "/bin": term.cwd = "bin"; break; case "bin": if (term.cwd === "/") { term.cwd = "bin"; } else { term.stylePrint(`No such directory: ${dir}`); } break; case ".": break; // no-op default: term.stylePrint(`No such directory: ${dir}`); break; } }, // Reinitializes the terminal under the current user (simulates a new shell). zsh: function () { term.init(term.user); }, // Reading id_rsa triggers the RickRoll easter egg. cat: function (args) { const filename = args[0]; if (_filesHere().includes(filename)) { term.writeln(getFileContents(filename)); } else { term.stylePrint(`No such file: ${filename}`); } if (filename == "id_rsa") { SpawnRickRollPointers(); } }, // Grepping id_rsa redirects to an appropriate reaction GIF instead. grep: function (args) { const q = args[0]; const filename = args[1]; if (filename == "id_rsa") { term.openURL("https://i.imgur.com/Q2Unw.gif"); } if (!q || !filename) { term.stylePrint("usage: %grep% [pattern] [filename]"); return; } if (_filesHere().includes(filename)) { let file = getFileContents(filename); const matches = file.matchAll(q); for (const match of matches) { file = file.replaceAll(match[0], colorText(match[0], "files")); } term.writeln(file); } else { term.stylePrint(`No such file or directory: ${filename}`); } }, // `open test.htm` is an easter egg; all other .htm files open in-page. open: function (args) { if (!args.length) { term.stylePrint("%open%: open a file - usage:\r\n"); term.stylePrint("%open% test.htm"); } else if ( args[0].split(".")[0] == "test" && args[0].split(".")[1] == "htm" ) { term.openURL("https://i.imgur.com/Q2Unw.gif"); } else if (args[0].split(".")[1] == "htm") { term.openURL(`./${args[0]}`, false); } else if (args.join(" ") == "the pod bay doors") { term.stylePrint("I'm sorry Dave, I'm afraid I can't do that."); } else { term.command(`cat ${args.join(" ")}`); } }, find: function (args) { const file = args[0]; if (Object.keys(_FILES).includes(file)) { term.stylePrint(_FULL_PATHS[file]); } else { term.stylePrint(`%find%: ${file}: No such file or directory`); } }, // ── Users & Permissions ───────────────────────────────────────────────────── // These mimic standard Unix user commands. guest and root are the only two // switchable users; team member home dirs are always permission-denied. // Reports login info. Team member data comes from team.js. finger: function (args) { const user = args[0]; if (user === "guest") { term.stylePrint("Login: guest Name: Guest"); term.stylePrint("Directory: /home/guest Shell: /bin/zsh"); } else if (user === "root") { term.stylePrint("Login: root Name: That's Us!"); term.stylePrint("Directory: /home/root Shell: /bin/zsh"); } else if (team[user]) { term.stylePrint(`Login: ${user} Name: ${team[user]["name"]}`); term.stylePrint(`Directory: /home/${user} Shell: /bin/zsh`); } else { term.stylePrint( user ? `%finger%: ${user}: no such user` : "usage: %finger% [user]" ); } }, // Group memberships live in each person's entry in team.js. // guest and root have their own special groups defined inline here. groups: function (args) { const user = args[0]; const specialGroups = { guest: "guest lps founders engineers investors", root: "wheel investors engineers deep tech firms", }; if (specialGroups[user] !== undefined) { term.stylePrint(specialGroups[user]); } else if (team[user]) { term.stylePrint(team[user].groups); } else { term.stylePrint( user ? `%groups%: ${user}: no such user` : "usage: %groups% [user]" ); } }, whoami: function () { term.stylePrint(term.user); }, passwd: function () { term.stylePrint( "Wow. Maybe don't enter your password into a sketchy web-based term.command prompt?" ); }, // Only root can sudo; otherwise logs an incident (just like real life). sudo: function (args) { if (term.user == "root") { term.command(args.join(" ")); } else { term.stylePrint( `${colorText( term.user, "user" )} is not in the sudoers file. This incident will be reported` ); } }, // Switch between the two valid users: guest and root. su: function (args) { const user = args[0] || "root"; if (user == "root" || user == "guest") { term.user = user; term.command("cd ~"); } else { term.stylePrint("su: Sorry"); } }, chown: function () { term.stylePrint("You do not have permission to %chown%"); }, chmod: function () { term.stylePrint("You do not have permission to %chmod%"); }, mv: function (args) { const src = args[0]; if (_filesHere().includes(src)) { term.stylePrint(`You do not have permission to move file ${src}`); } else { term.stylePrint(`%mv%: ${src}: No such file or directory`); } }, cp: function (args) { const src = args[0]; if (_filesHere().includes(src)) { term.stylePrint(`You do not have permission to copy file ${src}`); } else { term.stylePrint(`%cp%: ${src}: No such file or directory`); } }, touch: function () { term.stylePrint("You can't %touch% this"); }, // ── Process & System ──────────────────────────────────────────────────────── // Shows a fake process list. PID 337 is a fake crypto miner that stays // visible until the user runs `kill 337`. ps: function () { term.stylePrint("PID TTY TIME CMD"); term.stylePrint("424 ttys00 0:00.33 %-zsh%"); term.stylePrint("158 ttys01 0:09.70 %/bin/npm start%"); term.stylePrint("767 ttys02 0:00.02 %/bin/sh%"); if (!killed) { term.stylePrint("337 ttys03 0:13.37 %/bin/cgminer -o pwn.d%"); } }, // `kill 337` disables the fake crypto miner shown in `ps`. kill: function (args) { if (args && args.slice(-1) == 337) { killed = true; term.stylePrint("Root Ventures crypto miner disabled."); } else { term.stylePrint("You can't kill me!"); } }, locate: function () { term.stylePrint("Root Ventures"); term.stylePrint("2670 Harrison St"); term.stylePrint("San Francisco, CA 94110"); }, history: function () { term.history.forEach((element, index) => { term.stylePrint(`${1000 + index} ${element}`); }); }, uname: function (args) { switch (args[0]) { case "-a": term.stylePrint( "RootPC rootpc 0.0.1 RootPC Kernel Version 0.0.1 root:xnu-31415.926.5~3/RELEASE_X86_64 x86_64" ); break; case "-mrs": term.stylePrint("RootPC 0.0.1 x86_64"); break; default: term.stylePrint("RootPC"); } }, ping: function () { term.stylePrint("pong"); }, // Opens the GeoCities-style welcome page (welcome.htm). exit: function () { term.command("open welcome.htm"); }, // Reinitializes the terminal, clearing history and resetting the prompt. clear: function () { term.init(); }, // ── Easter Eggs & Jokes ───────────────────────────────────────────────────── gzip: function () { term.stylePrint( "What are you going to do with a zip file on a fake terminal, seriously?" ); }, free: function () { term.stylePrint("Honestly, our memory isn't what it used to be."); }, rm: function () { term.stylePrint("I'm sorry Dave, I'm afraid I can't do that."); }, mkdir: function () { term.stylePrint("Come on, don't mess with our immaculate file system."); }, alias: function () { term.stylePrint("Just call me HAL."); }, df: function () { term.stylePrint("Nice try. Just get a Dropbox."); }, // Editor wars — each editor points you to a different one. emacs: function () { term.stylePrint("%emacs% not installed. try: %vi%"); }, vim: function () { term.stylePrint("%vim% not installed. try: %emacs%"); }, vi: function () { term.stylePrint("%vi% not installed. try: %emacs%"); }, pico: function () { term.stylePrint("%pico% not installed. try: %vi% or %emacs%"); }, nano: function () { term.stylePrint("%nano% not installed. try: %vi% or %emacs%"); }, // Cross-origin policy joke — all network commands hit this wall. curl: function (args) { term.stylePrint( `Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource ${args[0]}. Use a real terminal.` ); }, // scp gets a more redacted treatment than curl. scp: function (args) { term.stylePrint( `████████████ Request Blocked: The ███████████ Policy disallows reading the ██████ resource ${args[0]}.` ); }, zed: function () { term.stylePrint("Coming soon! ;)"); }, eval: function (args) { term.stylePrint( "please instead build a webstore with macros. in the meantime, the result is: " + eval(args.join(" ")) ); }, test: function () { SpawnRickRollPointers(); if (typeof window.ensureRickRollLoaded === "function") { window.ensureRickRollLoaded().then(() => { window.requestAnimationFrame(() => { window.requestAnimationFrame(() => { if (typeof RickRoll === "function") { RickRoll(); } }); }); }); } }, // ── Upgrade ───────────────────────────────────────────────────────────────── // Animated sequence that "upgrades" the terminal to fund version 4.0. // Locks the terminal during the animation to block user input. upgrade: async function (args) { term.VERSION = 4; term.init(); term.locked = true; term.write( `\r\n${colorText( "==>", "hyperlink" )} Downloading https://ghcr.io/v2/homebrew/core/rootvc/manifests/4.0.0` ); await term.progressBar(4 * timeUnit); term.write( `\r\n${colorText( "==>", "hyperlink" )} Downloading https://ghcr.io/v2/homebrew/core/go/blobs/sha256:51869c798355307b59992918e9a595c53072d7a29458dbe5b8d105b63d3dd1c0` ); await term.progressBar(2 * timeUnit); term.write( `\r\n${colorText( "==>", "hyperlink" )} Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:51869c798355307b59992918e9a595c53072d7a29458dbe5b8d105b6` ); await term.progressBar(1 * timeUnit); term.write( `\r\n${colorText("==>", "hyperlink")} npm install left-pad@latest` ); await term.progressBar(0.5 * timeUnit); await term.delayStylePrint("\r\n", 1 * timeUnit); await term.dottedPrint("Calculating new fund size", 3); await term.delayPrint( `Updated fund size: ${colorText("$190M", "prompt")}\r\n`, 1 * timeUnit ); await term.delayPrint( `Updated typical check size: ${colorText("up to $5M", "prompt")}\r\n`, 1 * timeUnit ); await term.delayPrint( `Found mission: ${colorText( "Seeding bold engineers.", "user" )}\r\n`, 1 * timeUnit ); await term.delayPrint( `Thesis (no update): ${colorText( "Investing at the earliest stages of technical founders taking engineering risk.", "user" )}\r\n`, 1 * timeUnit ); await term.delayStylePrint( `\r\n${colorText( "You are now running Root Ventures version 4.0.", "hyperlink" )}\r\n`, 1 * timeUnit ); await term.delayStylePrint( `To learn more about this release, RTFM at: ${colorText( "https://bit.ly/rvfund4", "hyperlink" )}\r\n`, 0.5 * timeUnit ); await term.delayStylePrint( `or remote into our coffee grinder at: ${colorText( "https://rootventures.coffee", "hyperlink" )}\r\n`, 0.5 * timeUnit ); await term.delayPrint( "Note that VERSION 4.0 is an unstable build of the terminal.\r\n", 1 * timeUnit ); await term.delayPrint("Please report any bugs you find.\r\n", 1 * timeUnit); term.stylePrint( `\r\nType ${colorText( "help", "command" )} to get started. Or type ${colorText( "exit", "command" )} for web version.`, false ); term.prompt(); term.clearCurrentLine(); term.locked = false; }, // ── Jobs & Recruiting ──────────────────────────────────────────────────────── // Job data lives in jobs.js. Each job is an array of lines where index 0 // is the title and the rest is the description shown by `fg`. jobs: function () { const jobIds = Object.keys(jobs); if (jobIds.length === 0) { term.stylePrint(`No jobs currently found. Check back later.`); } else { term.stylePrint(`Open positions:\r\n`); jobIds.forEach((id) => { const jobTitle = jobs[id][0]; term.stylePrint(`[${id}] ${jobTitle}`); }); term.stylePrint(`\r\nUse %fg% [job_id] to view details, or %apply% [job_id] to apply.`); } }, bg: function (args) { term.stylePrint( `Sorry. If you want to background one of these jobs, you'll need to help us fill it. Try %fg% ${args} instead.` ); }, // Prints all lines of a job listing. fg: function (args) { const job = jobs[args]; if (job) { job.map((line) => term.stylePrint(line)); term.stylePrint(`\r\n%apply% ${args} to apply!`); } else { term.stylePrint(`job id ${args} not found.`); } }, // Multi-step async application form. The terminal is locked during collection // so normal keypress handling is suspended. Returns 1 to tell the main input // loop not to re-render the prompt — the async IIFE does that itself when done. // // collectInput() resolves to: a string on submit, "" if skipped (optional // fields), or null on Ctrl+C. Null means the user cancelled. apply: function (args) { if (args == 1 || (args.length > 0 && args[0] == 1)) { term.locked = true; (async () => { // Shared cancellation handler — restores the terminal to a usable state. const cancel = () => { term.stylePrint("\r\nApplication cancelled."); term.prompt(); term.clearCurrentLine(true); term.locked = false; }; term.stylePrint( "Great! Let's get your application started. (Press Ctrl+C to cancel at any time)\r\n" ); const name = await term.collectInput("What's your name?"); if (!name) { cancel(); return; } const email = await term.collectInput("Email address"); if (!email) { cancel(); return; } const linkedin = await term.collectInput("LinkedIn profile URL", true); if (linkedin === null) { cancel(); return; } const github = await term.collectInput("GitHub username", true); if (github === null) { cancel(); return; } const notes = await term.collectInput( "Why Root? What makes you a great fit?", true ); if (notes === null) { cancel(); return; } term.stylePrint("\r\nSubmitting application..."); try { const response = await fetch("/.netlify/functions/submit-application", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name, email, linkedin: linkedin || undefined, github: github || undefined, notes: notes || undefined, position: "Venture Capital Associate", }), }); const result = await response.json(); if (response.ok) { term.stylePrint( `\r\n${colorText("✓", "prompt")} Application submitted successfully!` ); term.stylePrint( "\r\nThanks for applying! We'll review your application and get back to you soon." ); term.stylePrint( `\r\nIn the meantime, check out our portfolio with ${colorText( "tldr", "command" )} or learn more about the team with ${colorText( "whois", "command" )}.` ); } else { throw new Error(result.error || "Submission failed"); } } catch (error) { term.stylePrint( `\r\n${colorText("✗", "user")} Error submitting application: ${error.message}` ); term.stylePrint( "\r\nPlease try again or email us directly at hello@root.vc" ); } term.prompt(); term.clearCurrentLine(true); term.locked = false; })(); // Return 1 synchronously so terminal.js skips its automatic prompt render. return 1; } else if (!args || args == "" || args.length === 0) { term.stylePrint( "Please provide a job id. Use %jobs% to list all current jobs." ); } else { term.stylePrint( `Job id ${args[0]} not found. Use %jobs% to list all current jobs.` ); } }, }; // ── Portfolio Demo Commands ──────────────────────────────────────────────────── // For any portfolio company that has a `demo` URL, register a command with the // company's key that opens the demo. E.g. `meroxa` opens meroxa's demo URL. for (const [key, val] of Object.entries(portfolio)) { if (val["demo"]) { commands[key] = () => term.displayURL(val["demo"]); } } // Returns the list of files visible in the current directory. // README.md is hidden from guest — root can see everything. function _filesHere() { return _DIRS[term.cwd].filter((e) => e != "README.md" || term.user == "root"); } // ── Aliases ─────────────────────────────────────────────────────────────────── // Simple one-to-one redirects. Each alias forwards its args to the target // command. Chains are fine — ge → great_expectations → superconductive. const _aliases = { // Standard file viewing aliases tail: "cat", less: "cat", head: "cat", more: "cat", // Network commands all hit the same CORS wall ftp: "curl", ssh: "curl", sftp: "curl", // man/woman both show the tldr for a portfolio company man: "tldr", woman: "tldr", // Session control quit: "exit", stop: "exit", // Process management killall: "kill", top: "ps", fdisk: "rm", // Contact shortcuts email: "pine", insta: "instagram", // Portfolio easter egg chains ge: "great_expectations", great_expectations: "superconductive", privacy: "privacy_dynamics", }; for (const [alias, target] of Object.entries(_aliases)) { commands[alias] = (args) => term.command([target, ...args].join(" ").trim()); } ================================================ FILE: config/fs.js ================================================ // fs.js — Virtual file system for the Root Ventures terminal. // // Since there's no real file system in the browser, files are stored as hidden //
elements in the DOM (inside #files-all). Content is written to // div.innerText on load and read back via div.innerHTML when accessed — // the browser's HTML entity encoding/decoding is what necessitates the // replaceAll() calls in getFileContents(). // // Remote files (README.md, welcome.htm) are fetched from GitHub on first load // and inserted into the DOM the same way. Local files are inserted directly. // Files with hardcoded content that don't need to be fetched. const _LOCAL_FILES = { "id_rsa": "Nice try!", }; // Files fetched from GitHub at startup. The key is used as the DOM element ID. const _REMOTE_FILES = { "README.md": "https://raw.githubusercontent.com/rootvc/cli-website/main/README.md", "welcome.htm": "https://raw.githubusercontent.com/rootvc/cli-website/main/welcome.htm", }; // Combined map of all known files (used by `find`). const _FILES = { ..._LOCAL_FILES, ..._REMOTE_FILES, } // Directory structure. "home" is populated dynamically from team.js so we // don't have to update it when team members are added or removed. const _DIRS = { "~": ["id_rsa", "welcome.htm", "README.md"], "bin": ["zsh"], "home": Object.keys(team).concat("guest", "root").sort(), "/": ["bin", "home"], }; // Pre-compute absolute paths for every known file, used by `find`. let _FULL_PATHS = {}; let _LOADING_FILES = {}; for (const [key, values] of Object.entries(_DIRS)) { for (const value of values) { switch (key) { case "~": _FULL_PATHS[value] = `${key}/${value}`; break; case "/": _FULL_PATHS[value] = `/${value}`; break; default: _FULL_PATHS[value] = `/${key}/${value}`; } } } // Called at terminal init to populate the DOM with file content. function preloadFiles() { for (const name of Object.keys(_REMOTE_FILES)) { _loadFile(name); } for (const [name, content] of Object.entries(_LOCAL_FILES)) { _insertFileToDOM(name, content); } } // Fetches a remote file and inserts it into the DOM when ready. function _loadFile(name) { if (document.getElementById(name)) { return Promise.resolve(); } if (_LOADING_FILES[name]) { return _LOADING_FILES[name]; } _LOADING_FILES[name] = fetch(_REMOTE_FILES[name]) .then(response => response.text()) .then((body) => _insertFileToDOM(name, body)) .finally(() => { delete _LOADING_FILES[name]; }); return _LOADING_FILES[name]; } function ensureFileLoaded(name) { if (!_FILES[name]) { return Promise.resolve(); } if (document.getElementById(name)) { return Promise.resolve(); } if (_REMOTE_FILES[name]) { return _loadFile(name); } if (_LOCAL_FILES[name]) { _insertFileToDOM(name, _LOCAL_FILES[name]); } return Promise.resolve(); } function getPreloadFileForCommand(cmd, args) { const filename = args[0]; if (!filename) { return null; } if (["cat", "grep"].includes(cmd) && _REMOTE_FILES[filename]) { return filename; } return null; } // Stores file content as the innerText of a
inside #files-all. // innerText is used (vs innerHTML) so the content is treated as plain text and // won't be interpreted as HTML markup. function _insertFileToDOM(name, txt) { const parentDiv = document.getElementById("files-all"); let div = document.getElementById(name); if (!div) { div = document.createElement("div"); div.id = name; parentDiv.appendChild(div); } div.innerText = txt; return txt; } // Retrieves file content from the DOM. We read innerHTML (not innerText) because // the browser HTML-encodes the plain text when it was written — innerHTML gives // us the encoded form, which we then manually decode back to the original chars. function getFileContents(filename) { const div = document.getElementById(filename); if (!div) { if (_REMOTE_FILES[filename]) { _loadFile(filename); return `Loading ${filename}. Try again in a moment.`; } return `File not found: ${filename}`; } return div.innerHTML .replaceAll("
", "\r\n") .replaceAll(">", ">") .replaceAll("<", "<"); } ================================================ FILE: config/help.js ================================================ const help = { "%help%": "list all commands (you're looking at it)", "%whois%": "list all partners", "%whois% [partner]": "learn about a partner", "%whois% root": "learn about us", "%tldr%": "list all portfolio companies", "%tldr% [company_name]": "learn about a portfolio company", "%email%": "reach out to us", "%twitter%": "twitter accounts", "%instagram%": "instagram account", "%git%": "this repo", "%github%": "all repos", "%locate%": "physical address", "%jobs%": "check out our job openings", "%test%": "do not use", "%upgrade%": "upgrade to the latest version of Root Ventures", "%other%": "try your fav commands (e.g. %ls%, %groups%, %su%)", }; ================================================ FILE: config/jobs.js ================================================ const jobs = { 1: [ "Venture Capital Associate", "", "Root Ventures is looking for a technical associate to join our team in San Francisco.", "", "We're a deep tech seed fund that invests in bold engineers building the future.", "As an associate, you'll work directly with partners to source deals, conduct", "technical diligence, and support portfolio companies.", "", "What we're looking for:", " • Strong technical background (CS degree, engineering experience, or equivalent)", " • Genuine curiosity about emerging technologies and startups", " • Excellent communication skills - you can explain complex tech simply", " • Hustle and resourcefulness - you figure things out", " • Passion for working with technical founders", "", "Bonus points:", " • You've built side projects or contributed to open source", " • You're active in technical communities", " • You have startup experience", "", "This is a rare opportunity to learn venture capital from experienced operators", "and work with some of the most innovative technical founders in the world.", ], }; ================================================ FILE: config/portfolio.js ================================================ const portfolio = { esper: { name: "Esper", url: "https://esper.io", description: "Esper is devops for devices, allowing teams to seamlessly build and manage enterprise hardware.", memo: null, demo: "https://esper.io/signup", }, meroxa: { name: "Meroxa", url: "https://meroxa.com", description: "Meroxa is a platform for software engineers to build mature, scalable data engineering infrastructure with a single command.", memo: "https://github.com/rootvc/investment-memos/blob/main/meroxa.md", demo: "https://meroxa.com/#data-warehouse", }, particle: { name: "Particle", url: "https://particle.io", description: "Particle is the largest professional IoT development platform.", demo: "https://docs.particle.io/", }, daily: { name: "Daily", url: "https://daily.co", description: "Daily makes it easier for developers to add video to websites and apps.", demo: "https://docs.daily.co/docs/introduction-1", }, hash: { name: "HASH", url: "https://hash.ai", description: "HASH is an open-source, self-building database that grows and maintains a typed graph of entities on your behalf.", demo: "https://app.hash.ai/", }, superconductive: { name: "Superconductive", url: "https://superconductive.ai", description: "Superconductive is a SaaS platform for verifying and enforcing data integrity at every stage of the lifecycle of data in an organization.", demo: "https://docs.greatexpectations.io/en/latest/guides/tutorials/quick_start.html#tutorials-quick-start", }, okteto: { name: "Okteto", url: "https://okteto.com", description: "Okteto is the best emphemeral environment for developers.", demo: "https://okteto.com/docs/getting-started/index.html", }, privacy_dynamics: { name: "Privacy Dynamics", url: "https://privacydynamics.io", description: "Privacy Dynamics ensures your customers' data privacy without slowing down your team.", demo: "https://privacydynamics.io/demo/contact", }, nautilus: { name: "Nautilus Labs", url: "https://nautiluslabs.com", description: "Nautilus Labs allows maritime fleets to optimize shipping routes and energy costs in real time.", }, ntopology: { name: "nTopology", url: "https://ntopology.com", description: "nTopology is the future of mechanical engineering software.", }, tortuga: { name: "Tortuga AgTech", url: "https://tortugaagtech.com", description: "Tortuga automates agriculture for high value produce.", }, instrumental: { name: "Instrumental", url: "https://instrumental.com", description: "Instrumental generates real time insights for mass manufacturing.", }, stellar: { name: "Stellar Pizza", url: "https://eatstellarpizza.com", description: "Stellar Pizza is building the future of automated food production.", }, versatile: { name: "Versatile", url: "https://versatile.ai", description: "Versatile is an onsite construction data provider for accelerating schedules.", }, dusty: { name: "Dusty Robotics", url: "https://dustyrobotics.com", description: "Dusty Robotics automates layout in complex construction projects.", }, thruwave: { name: "ThruWave", url: "https://thruwave.com", description: "Thruwave increases the efficiency and transparency of high volume logistics operations.", }, seismic: { name: "Seismic", url: "https://myseismic.com", description: "Seismic augments strength and safety for workers through soft robotics.", }, seam: { name: "Seam", url: "https://getseam.com", description: "Seam provides an API for managing building systems.", }, chargelab: { name: "ChargeLab", url: "https://chargelab.co", description: "ChargeLab builds API- and software-defined EV charging networks.", }, wildtype: { name: "Wildtype Foods", url: "https://wildtypefoods.com", description: "Wildtype creates organic, clean, high-quality, animal-free meat.", }, nordsense: { name: "Nordsense", url: "https://nordsense.com", description: "Nordsense optimizes pickup routes for waste management fleets.", }, trucklabs: { name: "TruckLabs", url: "https://trucklabs.com", description: "Trucklabs reduces fuel costs and increases profit margins for long haul trucking fleets.", }, sensable: { name: "Sensable", url: "https://getsensable.com", description: "Sensable generates real-time industrial engineering insights.", }, crux: { name: "Crux", url: "https://cruxocm.com", description: "Crux automates critical energy infrastructure.", }, iasql: { name: "IaSQL", url: "https://iasql.com", description: "IaSQL is the next evolution of infrastructure management, allowing you to manage your infra in a database instead of stateless config files.", }, mashgin: { name: "Mashgin", url: "https://mashgin.com", description: "Mashgin automates self-checkout.", }, creator: { name: "Creator", url: "https://creator.rest", description: "Creator builds fully autonomous hamburger robots.", }, apolloshield: { name: "ApolloShield", url: "https://apolloshield.com", description: "ApolloShield safeguards airspace from autonomous and remote piloted aircraft.", }, skycatch: { name: "Skycatch", url: "https://skycatch.com", description: "Skycatch provides high resolution 3D mapping and modeling of high-value infrastructure.", }, shaper: { name: "Shaper", url: "https://shapertools.com", description: "Shaper Tools makes the Origin, a handheld, auto-correcting CNC.", }, cape: { name: "Cape", url: "https://capenetworks.com", description: "Cape Networks allows IT professionals to monitor, text, and repair enterprise networks remotely.", }, righthook: { name: "Righthook", url: "https://righthook.io", description: "Righthook reduces the time and cost required to develop autonomous vehicles.", }, sixwheel: { name: "SixWheel", url: "https://sixwheel.com", description: "SixWheel brings autonomy and electrification to long haul trucking operations.", }, radical: { name: "Radical", url: "https://radicalsemiconductor.com", description: "Radical Semiconductor provides hardware security down to the individual IC.", }, zed: { name: "Zed", url: "https://zed.dev", description: "Zed is a fully-native desktop code editor focused on high performance, clean design, and real-time collaboration.", }, kayhan: { name: "Kayhan", url: "https://kayhan.space", description: "Kayhan’s spaceflight operations platform allows satellite operators to focus on their core mission.", }, allspice: { name: "AllSpice", url: "https://allspice.io", description: "Collaboration and testing platform for hardware teams.", }, quilter: { name: "Quilter", url: "https://quilter.ai", description: "Automated design tools for electrical engineers.", }, adept: { name: "Adept", url: "https://adept.ai", description: "Useful general intelligence.", }, aperture: { name: "Aperture Data", url: "https://aperturedata.io", description: "Aperture manage images and videos with a database purpose-built for data science and machine learning.", }, supertokens: { name: "SuperTokens", url: "https://supertokens.io", description: "SuperTokens is the best Open Source solution for user authentication.", }, fudge: { name: "Fudge", url: "https://fudge.ai", description: "Fudge is the best way to speed up your website to improve conversion rates and increase revenue.", }, kodra: { name: "Kodra", url: "https://kodra.ai", description: "Fast dataset curation for machine learning.", }, topologic: { name: "Topologic", url: "https://topologic.io", description: "Design and automation software for textile manufacturing.", }, ruby: { name: "Ruby Robotics", url: "https://ruby-robotics.com", description: "Robotics and AI to autonomously prepare, image, and assess tissue during biopsy procedures.", }, instance: { name: "Instance", url: "https://instance.bio", description: "Instance is the fastest way to synthesize DNA.", }, cady: { name: "CADY Solutions", url: "https://cadysolutions.com", description: "CADY automates the electrical schematic analysis process.", }, sublayer: { name: "Sublayer", url: "https://sublayer.com", description: "Sublayer is AI-assisted coding that works the way you do.", }, nullify: { name: "Nullify", url: "https://nullify.ai", description: "Nullify performs product security tasks alongside your developers.", }, trieve: { name: "Trieve", url: "https://trieve.ai", description: "Trieve provides infrastructure for building AI search into your applications.", }, breakpoint: { name: "Breakpoint AI", url: "https://setbreakpoint.com", description: "Breakpoint uses AI to detect failures in computer vision models and re-trains them to prevent future issues.", }, determinate: { name: "Determinate Systems", url: "https://determinate.systems", description: "Determinate provides enterprise-grade solutions for Nix package management.", }, genalpha: { name: "Gen Alpha", url: "https://www.generation-alpha-transistor.com", description: "Gen Alpha builds AI copilots for analog and mixed-signal chip design to streamline workflows.", }, hunch: { name: "Hunch", url: "https://hunchdata.com", description: "Hunch provides collaborative data exploration and visualization tools for non-technical users.", }, illoca: { name: "Illoca", url: "https://illoca.com", description: "Illoca accelerates commercial architecture workflows with generative AI for AEC software.", }, integrated: { name: "Integrated Biosciences", url: "https://integratebio.co", description: "Integrated uses optogenetics and ML to discover drugs for neurodegenerative and age-related diseases.", }, latent: { name: "Latent Technology", url: "https://latent-technology.com", description: "Latent helps animators and game developers create life-like 3D assets with AI-powered tools.", }, patterns: { name: "Patterns", url: "https://patterns.app", description: "Patterns provides tools and infrastructure for developing modern AI applications efficiently.", }, subtrace: { name: "Subtrace", url: "https://subtrace.dev", description: "Subtrace automatically tracks all HTTP requests coming in and going out of your production backend.", }, digichem: { name: "Digichem", url: "https://www.digichem.com/", description: "Digichem prototypes and manufactures custom molecules online.", }, loopwork: { name: "Loopwork", url: "https://loopwork.com/", description: "Loopwork is building the next generation of agents.", }, feather: { name: "Feather", url: "https://feather.solutions/", description: "Feather provides FEA that runs in the browser.", }, vibe_robotics: { name: "Vibe Robotics", url: "https://vbr.sh/", description: "Vibe Robotics, founded by Kai Backman and Luke Church, builds novel programming interfaces for robotics.", } }; ================================================ FILE: config/team.js ================================================ const team = { avidan: { name: "Avidan Ross", title: "Managing Partner", description: "Avidan is the Founding Partner of Root Ventures. Previously, he designed industrial robotics for Food Network's kitchens and was CTO of CIM Group, where he focused on industrial investing, and worked as an embedded application developer at Excite@Home. Avidan has a BA in Computer Science from Columbia University.", linkedin: "https://www.linkedin.com/in/avidanross/", groups: "wheel investors engineers managingpartner handypersons tinkers agtech foodtech foodies coffeesnobs", }, kane: { name: "Kane Hsieh", title: "Partner", description: "Before joining Root Ventures, Kane was founder and Head of Product at Brilliant Bicycle Co. He has also worked as an early-stage investor at RRE Ventures, a software engineer at Romotive, and a Project Manager at Microsoft. Kane has an AB in Computer Science from Harvard.", linkedin: "https://www.linkedin.com/in/kanehsieh/", groups: "wheel investors engineers partners tinkerers cad motorcyclists gearheads machinepix sportshooters gamers", }, chrissy: { name: "Chrissy Meyer", title: "Partner", description: "Chrissy has spent the past decade developing and shipping hardware as an engineering manager at Apple and Square. She was a founding team member at Pearl Automation, a vehicle technology startup. Chrissy has an MS in Electrical Engineering from Stanford and a BSEE from Rose-Hulman.", linkedin: "https://www.linkedin.com/in/chrissymeyer/", groups: "wheel investors engineers partners electrical manufacturing ecad wearables healthtech gearheads automotive sportshooters", }, lee: { name: "Lee Edwards", title: "Partner", description: "Lee was most recently CTO at Teespring. Previously, Lee was a mechanical engineer at iRobot, a software engineer at Pivotal Labs, Lead Engineer at SideTour (acquired by Groupon in 2013), and engineering manager for GrouponLive. He graduated from Olin College of Engineering with a degree in Systems Engineering.", linkedin: "https://www.linkedin.com/in/leeredwards/", groups: "wheel investors engineers partners software devtools data ai+ml gamers winesnobs", }, zodi: { name: "Zodi Chalat", title: "Associate", description: "Zodi began his career as an engineer working on ML infrastructure at Netflix before moving into venture investing. He previously studied CS and comparative literature at Yale.", linkedin: "https://linkedin.com/in/zodi", groups: "wheel investors engineers ai+ml simulation terraforming maine", }, ben: { name: "Ben Lovell", title: "Head of Operations", description: "Ben worked at a16z, Menlo Ventures, and FT Partners to build operational automation and data pipelines. He also cofounded an adtech startup for rideshare companies. Ben graduated with a BA from Stanford University.", linkedin: "https://www.linkedin.com/in/lovellb/", groups: "wheel operations photography ironman racecars canyoneering", }, laelah: { name: "Laelah Reino", title: "Operations Manager", description: "Laelah has spent over 15 years in marketing for films, consumer products, and subscription-based services. Laelah Reino has a BA in Business Administration with a Marketing concentration from Drexel University.", linkedin: "https://www.linkedin.com/in/laelah-reino-78b6a51/", groups: "wheel admin operations miracleworkers gamers", }, }; ================================================ FILE: css/bootstrap.css ================================================ /*! * Bootstrap v2.3.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; line-height: 0; content: ""; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } audio:not([controls]) { display: none; } html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } a:hover, a:active { outline: 0; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { width: auto\9; height: auto; max-width: 100%; vertical-align: middle; border: 0; -ms-interpolation-mode: bicubic; } #map_canvas img, .google-maps img { max-width: none; } button, input, select, textarea { margin: 0; font-size: 100%; vertical-align: middle; } button, input { *overflow: visible; line-height: normal; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } label, select, button, input[type="button"], input[type="reset"], input[type="submit"], input[type="radio"], input[type="checkbox"] { cursor: pointer; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } textarea { overflow: auto; vertical-align: top; } @media print { * { color: #000 !important; text-shadow: none !important; background: transparent !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page { margin: 0.5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } body { margin: 0; font-family: "Comic Sans", "Comic Sans MS", "Chalkboard", "ChalkboardSE-Regular", "Marker Felt", "Purisa", "URW Chancery L", cursive, sans-serif; font-size: 16px; line-height: 20px; color: #ffff00; background-color: #0000ff; } a { color: #00eeee; text-decoration: none; } a:hover, a:focus { color: #00eeee; text-decoration: underline; } .img-rounded { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .img-polaroid { padding: 4px; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .img-circle { -webkit-border-radius: 500px; -moz-border-radius: 500px; border-radius: 500px; } .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; line-height: 0; content: ""; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .span12 { width: 940px; } .span11 { width: 860px; } .span10 { width: 780px; } .span9 { width: 700px; } .span8 { width: 620px; } .span7 { width: 540px; } .span6 { width: 460px; } .span5 { width: 380px; } .span4 { width: 300px; } .span3 { width: 220px; } .span2 { width: 140px; } .span1 { width: 60px; } .offset12 { margin-left: 980px; } .offset11 { margin-left: 900px; } .offset10 { margin-left: 820px; } .offset9 { margin-left: 740px; } .offset8 { margin-left: 660px; } .offset7 { margin-left: 580px; } .offset6 { margin-left: 500px; } .offset5 { margin-left: 420px; } .offset4 { margin-left: 340px; } .offset3 { margin-left: 260px; } .offset2 { margin-left: 180px; } .offset1 { margin-left: 100px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; line-height: 0; content: ""; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; float: left; width: 100%; min-height: 30px; margin-left: 2.127659574468085%; *margin-left: 2.074468085106383%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.127659574468085%; } .row-fluid .span12 { width: 100%; *width: 99.94680851063829%; } .row-fluid .span11 { width: 91.48936170212765%; *width: 91.43617021276594%; } .row-fluid .span10 { width: 82.97872340425532%; *width: 82.92553191489361%; } .row-fluid .span9 { width: 74.46808510638297%; *width: 74.41489361702126%; } .row-fluid .span8 { width: 65.95744680851064%; *width: 65.90425531914893%; } .row-fluid .span7 { width: 57.44680851063829%; *width: 57.39361702127659%; } .row-fluid .span6 { width: 48.93617021276595%; *width: 48.88297872340425%; } .row-fluid .span5 { width: 40.42553191489362%; *width: 40.37234042553192%; } .row-fluid .span4 { width: 31.914893617021278%; *width: 31.861702127659576%; } .row-fluid .span3 { width: 23.404255319148934%; *width: 23.351063829787233%; } .row-fluid .span2 { width: 14.893617021276595%; *width: 14.840425531914894%; } .row-fluid .span1 { width: 6.382978723404255%; *width: 6.329787234042553%; } .row-fluid .offset12 { margin-left: 104.25531914893617%; *margin-left: 104.14893617021275%; } .row-fluid .offset12:first-child { margin-left: 102.12765957446808%; *margin-left: 102.02127659574467%; } .row-fluid .offset11 { margin-left: 95.74468085106382%; *margin-left: 95.6382978723404%; } .row-fluid .offset11:first-child { margin-left: 93.61702127659574%; *margin-left: 93.51063829787232%; } .row-fluid .offset10 { margin-left: 87.23404255319149%; *margin-left: 87.12765957446807%; } .row-fluid .offset10:first-child { margin-left: 85.1063829787234%; *margin-left: 84.99999999999999%; } .row-fluid .offset9 { margin-left: 78.72340425531914%; *margin-left: 78.61702127659572%; } .row-fluid .offset9:first-child { margin-left: 76.59574468085106%; *margin-left: 76.48936170212764%; } .row-fluid .offset8 { margin-left: 70.2127659574468%; *margin-left: 70.10638297872339%; } .row-fluid .offset8:first-child { margin-left: 68.08510638297872%; *margin-left: 67.9787234042553%; } .row-fluid .offset7 { margin-left: 61.70212765957446%; *margin-left: 61.59574468085106%; } .row-fluid .offset7:first-child { margin-left: 59.574468085106375%; *margin-left: 59.46808510638297%; } .row-fluid .offset6 { margin-left: 53.191489361702125%; *margin-left: 53.085106382978715%; } .row-fluid .offset6:first-child { margin-left: 51.063829787234035%; *margin-left: 50.95744680851063%; } .row-fluid .offset5 { margin-left: 44.68085106382979%; *margin-left: 44.57446808510638%; } .row-fluid .offset5:first-child { margin-left: 42.5531914893617%; *margin-left: 42.4468085106383%; } .row-fluid .offset4 { margin-left: 36.170212765957444%; *margin-left: 36.06382978723405%; } .row-fluid .offset4:first-child { margin-left: 34.04255319148936%; *margin-left: 33.93617021276596%; } .row-fluid .offset3 { margin-left: 27.659574468085104%; *margin-left: 27.5531914893617%; } .row-fluid .offset3:first-child { margin-left: 25.53191489361702%; *margin-left: 25.425531914893618%; } .row-fluid .offset2 { margin-left: 19.148936170212764%; *margin-left: 19.04255319148936%; } .row-fluid .offset2:first-child { margin-left: 17.02127659574468%; *margin-left: 16.914893617021278%; } .row-fluid .offset1 { margin-left: 10.638297872340425%; *margin-left: 10.53191489361702%; } .row-fluid .offset1:first-child { margin-left: 8.51063829787234%; *margin-left: 8.404255319148938%; } [class*="span"].hide, .row-fluid [class*="span"].hide { display: none; } [class*="span"].pull-right, .row-fluid [class*="span"].pull-right { float: right; } .container { margin-right: auto; margin-left: auto; *zoom: 1; } .container:before, .container:after { display: table; line-height: 0; content: ""; } .container:after { clear: both; } .container-fluid { padding-right: 20px; padding-left: 20px; *zoom: 1; } .container-fluid:before, .container-fluid:after { display: table; line-height: 0; content: ""; } .container-fluid:after { clear: both; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 24px; font-weight: 200; line-height: 30px; } small { font-size: 85%; } strong { font-weight: bold; } em { font-style: italic; } cite { font-style: normal; } .muted { color: #999999; } a.muted:hover, a.muted:focus { color: #808080; } .text-warning { color: #000000; } a.text-warning:hover, a.text-warning:focus { color: #000000; } .text-error { color: #ffffff; } a.text-error:hover, a.text-error:focus { color: #e6e6e6; } .text-info { color: #000000; } a.text-info:hover, a.text-info:focus { color: #000000; } .text-success { color: #ffffff; } a.text-success:hover, a.text-success:focus { color: #e6e6e6; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6 { margin: 10px 0; font-family: inherit; font-weight: bold; line-height: 20px; color: inherit; text-rendering: optimizelegibility; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-weight: normal; line-height: 1; color: #999999; } h1, h2, h3 { line-height: 40px; } h1 { font-size: 44px; } h2 { font-size: 36px; } h3 { font-size: 28px; } h4 { font-size: 20px; } h5 { font-size: 16px; } h6 { font-size: 13.6px; } h1 small { font-size: 28px; } h2 small { font-size: 20px; } h3 small { font-size: 16px; } h4 small { font-size: 16px; } .page-header { padding-bottom: 9px; margin: 20px 0 30px; border-bottom: 1px solid #eeeeee; } ul, ol { padding: 0; margin: 0 0 10px 25px; } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } li { line-height: 20px; } ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } ul.inline, ol.inline { margin-left: 0; list-style: none; } ul.inline > li, ol.inline > li { display: inline-block; *display: inline; padding-right: 5px; padding-left: 5px; *zoom: 1; } dl { margin-bottom: 20px; } dt, dd { line-height: 20px; } dt { font-weight: bold; } dd { margin-left: 10px; } .dl-horizontal { *zoom: 1; } .dl-horizontal:before, .dl-horizontal:after { display: table; line-height: 0; content: ""; } .dl-horizontal:after { clear: both; } .dl-horizontal dt { float: left; width: 160px; overflow: hidden; clear: left; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } hr { margin: 20px 0; border: 0; border-top: 1px solid #eeeeee; border-bottom: 1px solid #ffffff; } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999999; } abbr.initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 0 0 0 15px; margin: 0 0 20px; border-left: 5px solid #eeeeee; } blockquote p { margin-bottom: 0; font-size: 20px; font-weight: 300; line-height: 1.25; } blockquote small { display: block; line-height: 20px; color: #999999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { float: right; padding-right: 15px; padding-left: 0; border-right: 5px solid #eeeeee; border-left: 0; } blockquote.pull-right p, blockquote.pull-right small { text-align: right; } blockquote.pull-right small:before { content: ''; } blockquote.pull-right small:after { content: '\00A0 \2014'; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 20px; font-style: normal; line-height: 20px; } code, pre { padding: 0 3px 2px; font-family: "Courier New", Courier, monospace; font-size: 14px; color: #333333; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } code { padding: 2px 4px; color: #d14; white-space: nowrap; background-color: #f7f7f9; border: 1px solid #e1e1e8; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 15px; line-height: 20px; word-break: break-all; word-wrap: break-word; white-space: pre; white-space: pre-wrap; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } pre.prettyprint { margin-bottom: 20px; } pre code { padding: 0; color: inherit; white-space: pre; white-space: pre-wrap; background-color: transparent; border: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } form { margin: 0 0 20px; } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 24px; line-height: 40px; color: #333333; border: 0; border-bottom: 1px solid #e5e5e5; } legend small { font-size: 15px; color: #999999; } label, input, button, select, textarea { font-size: 16px; font-weight: normal; line-height: 20px; } input, button, select, textarea { font-family: "Comic Sans", "Comic Sans MS", "Chalkboard", "ChalkboardSE-Regular", "Marker Felt", "Purisa", "URW Chancery L", cursive, sans-serif; } label { display: block; margin-bottom: 5px; } select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { display: inline-block; height: 20px; padding: 4px 6px; margin-bottom: 10px; font-size: 16px; line-height: 20px; color: #555555; vertical-align: middle; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } input, textarea, .uneditable-input { width: 206px; } textarea { height: auto; } textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { background-color: #000000; border: 1px solid #00ff00; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; -moz-transition: border linear 0.2s, box-shadow linear 0.2s; -o-transition: border linear 0.2s, box-shadow linear 0.2s; transition: border linear 0.2s, box-shadow linear 0.2s; } textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { border-color: rgba(82, 168, 236, 0.8); outline: 0; outline: thin dotted \9; /* IE6-9 */ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; *margin-top: 0; line-height: normal; } input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { width: auto; } select, input[type="file"] { height: 30px; /* In IE7, the height of the select element cannot be changed by height, only font-size */ *margin-top: 4px; /* For IE7, add top margin to align select with labels */ line-height: 30px; } select { width: 220px; background-color: #000000; border: 1px solid #00ff00; } select[multiple], select[size] { height: auto; } select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .uneditable-input, .uneditable-textarea { color: #999999; cursor: not-allowed; background-color: #000000; border-color: #00ff00; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); } .uneditable-input { overflow: hidden; white-space: nowrap; } .uneditable-textarea { width: auto; height: auto; } input:-moz-placeholder, textarea:-moz-placeholder { color: #999999; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #999999; } input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #999999; } .radio, .checkbox { min-height: 20px; padding-left: 20px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { float: left; margin-left: -20px; } .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 5px; } .radio.inline, .checkbox.inline { display: inline-block; padding-top: 5px; margin-bottom: 0; vertical-align: middle; } .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 10px; } .input-mini { width: 60px; } .input-small { width: 90px; } .input-medium { width: 150px; } .input-large { width: 210px; } .input-xlarge { width: 270px; } .input-xxlarge { width: 530px; } input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { float: none; margin-left: 0; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 926px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 846px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 766px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 686px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 606px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 526px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 446px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 366px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 286px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 206px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 126px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 46px; } .controls-row { *zoom: 1; } .controls-row:before, .controls-row:after { display: table; line-height: 0; content: ""; } .controls-row:after { clear: both; } .controls-row [class*="span"], .row-fluid .controls-row [class*="span"] { float: left; } .controls-row .checkbox[class*="span"], .controls-row .radio[class*="span"] { padding-top: 5px; } input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { cursor: not-allowed; background-color: #cccccc; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { background-color: transparent; } .control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { color: #000000; } .control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { color: #000000; } .control-group.warning input, .control-group.warning select, .control-group.warning textarea { border-color: #000000; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { border-color: #000000; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333; } .control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { color: #000000; background-color: #ffff00; border-color: #000000; } .control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { color: #ffffff; } .control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { color: #ffffff; } .control-group.error input, .control-group.error select, .control-group.error textarea { border-color: #ffffff; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { border-color: #e6e6e6; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; } .control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { color: #ffffff; background-color: #ff0000; border-color: #ffffff; } .control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { color: #ffffff; } .control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { color: #ffffff; } .control-group.success input, .control-group.success select, .control-group.success textarea { border-color: #ffffff; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { border-color: #e6e6e6; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; } .control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { color: #ffffff; background-color: #008000; border-color: #ffffff; } .control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { color: #000000; } .control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { color: #000000; } .control-group.info input, .control-group.info select, .control-group.info textarea { border-color: #000000; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { border-color: #000000; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #333333; } .control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { color: #000000; background-color: #00ffff; border-color: #000000; } input:focus:invalid, textarea:focus:invalid, select:focus:invalid { color: #b94a48; border-color: #ee5f5b; } input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus { border-color: #e9322d; -webkit-box-shadow: 0 0 6px #f8b9b7; -moz-box-shadow: 0 0 6px #f8b9b7; box-shadow: 0 0 6px #f8b9b7; } .form-actions { padding: 19px 20px 20px; margin-top: 20px; margin-bottom: 20px; background-color: #0000ff; border-top: 1px solid #e5e5e5; *zoom: 1; } .form-actions:before, .form-actions:after { display: table; line-height: 0; content: ""; } .form-actions:after { clear: both; } .help-block, .help-inline { color: #ffff4d; } .help-block { display: block; margin-bottom: 10px; } .help-inline { display: inline-block; *display: inline; padding-left: 5px; vertical-align: middle; *zoom: 1; } .input-append, .input-prepend { display: inline-block; margin-bottom: 10px; font-size: 0; white-space: nowrap; vertical-align: middle; } .input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input, .input-append .dropdown-menu, .input-prepend .dropdown-menu, .input-append .popover, .input-prepend .popover { font-size: 16px; } .input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; vertical-align: top; -webkit-border-radius: 0 0 0 0; -moz-border-radius: 0 0 0 0; border-radius: 0 0 0 0; } .input-append input:focus, .input-prepend input:focus, .input-append select:focus, .input-prepend select:focus, .input-append .uneditable-input:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 20px; min-width: 16px; padding: 4px 5px; font-size: 16px; font-weight: normal; line-height: 20px; text-align: center; text-shadow: 0 1px 0 #ffffff; background-color: #eeeeee; border: 1px solid #ccc; } .input-append .add-on, .input-prepend .add-on, .input-append .btn, .input-prepend .btn, .input-append .btn-group > .dropdown-toggle, .input-prepend .btn-group > .dropdown-toggle { vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #99ff99; border-color: #00ff00; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 0 0 0 0; -moz-border-radius: 0 0 0 0; border-radius: 0 0 0 0; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 0 0 0 0; -moz-border-radius: 0 0 0 0; border-radius: 0 0 0 0; } .input-append input + .btn-group .btn:last-child, .input-append select + .btn-group .btn:last-child, .input-append .uneditable-input + .btn-group .btn:last-child { -webkit-border-radius: 0 0 0 0; -moz-border-radius: 0 0 0 0; border-radius: 0 0 0 0; } .input-append .add-on, .input-append .btn, .input-append .btn-group { margin-left: -1px; } .input-append .add-on:last-child, .input-append .btn:last-child, .input-append .btn-group:last-child > .dropdown-toggle { -webkit-border-radius: 0 0 0 0; -moz-border-radius: 0 0 0 0; border-radius: 0 0 0 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append input + .btn-group .btn, .input-prepend.input-append select + .btn-group .btn, .input-prepend.input-append .uneditable-input + .btn-group .btn { -webkit-border-radius: 0 0 0 0; -moz-border-radius: 0 0 0 0; border-radius: 0 0 0 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 0 0 0 0; -moz-border-radius: 0 0 0 0; border-radius: 0 0 0 0; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 0 0 0; -moz-border-radius: 0 0 0 0; border-radius: 0 0 0 0; } .input-prepend.input-append .btn-group:first-child { margin-left: 0; } input.search-query { padding-right: 14px; padding-right: 4px \9; padding-left: 14px; padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ margin-bottom: 0; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } /* Allow for input prepend/append in search forms */ .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append { display: inline-block; *display: inline; margin-bottom: 0; vertical-align: middle; *zoom: 1; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display: inline-block; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { padding-left: 0; margin-bottom: 0; vertical-align: middle; } .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: left; margin-right: 3px; margin-left: 0; } .control-group { margin-bottom: 10px; } legend + .control-group { margin-top: 20px; -webkit-margin-top-collapse: separate; } .form-horizontal .control-group { margin-bottom: 20px; *zoom: 1; } .form-horizontal .control-group:before, .form-horizontal .control-group:after { display: table; line-height: 0; content: ""; } .form-horizontal .control-group:after { clear: both; } .form-horizontal .control-label { float: left; width: 160px; padding-top: 5px; text-align: right; } .form-horizontal .controls { *display: inline-block; *padding-left: 20px; margin-left: 180px; *margin-left: 0; } .form-horizontal .controls:first-child { *padding-left: 180px; } .form-horizontal .help-block { margin-bottom: 0; } .form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block, .form-horizontal .uneditable-input + .help-block, .form-horizontal .input-prepend + .help-block, .form-horizontal .input-append + .help-block { margin-top: 10px; } .form-horizontal .form-actions { padding-left: 180px; } table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 20px; } .table th, .table td { padding: 8px; line-height: 20px; text-align: left; vertical-align: top; border-top: 1px solid #008000; } .table th { font-weight: bold; } .table thead th { vertical-align: bottom; } .table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { border-top: 0; } .table tbody + tbody { border-top: 2px solid #008000; } .table .table { background-color: #0000ff; } .table-condensed th, .table-condensed td { padding: 4px 5px; } .table-bordered { border: 1px solid #008000; border-collapse: separate; *border-collapse: collapse; border-left: 0; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .table-bordered th, .table-bordered td { border-left: 1px solid #008000; } .table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { border-top: 0; } .table-bordered thead:first-child tr:first-child > th:first-child, .table-bordered tbody:first-child tr:first-child > td:first-child, .table-bordered tbody:first-child tr:first-child > th:first-child { -webkit-border-top-left-radius: none; border-top-left-radius: none; -moz-border-radius-topleft: none; } .table-bordered thead:first-child tr:first-child > th:last-child, .table-bordered tbody:first-child tr:first-child > td:last-child, .table-bordered tbody:first-child tr:first-child > th:last-child { -webkit-border-top-right-radius: none; border-top-right-radius: none; -moz-border-radius-topright: none; } .table-bordered thead:last-child tr:last-child > th:first-child, .table-bordered tbody:last-child tr:last-child > td:first-child, .table-bordered tbody:last-child tr:last-child > th:first-child, .table-bordered tfoot:last-child tr:last-child > td:first-child, .table-bordered tfoot:last-child tr:last-child > th:first-child { -webkit-border-bottom-left-radius: none; border-bottom-left-radius: none; -moz-border-radius-bottomleft: none; } .table-bordered thead:last-child tr:last-child > th:last-child, .table-bordered tbody:last-child tr:last-child > td:last-child, .table-bordered tbody:last-child tr:last-child > th:last-child, .table-bordered tfoot:last-child tr:last-child > td:last-child, .table-bordered tfoot:last-child tr:last-child > th:last-child { -webkit-border-bottom-right-radius: none; border-bottom-right-radius: none; -moz-border-radius-bottomright: none; } .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; } .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; } .table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { -webkit-border-top-left-radius: none; border-top-left-radius: none; -moz-border-radius-topleft: none; } .table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { -webkit-border-top-right-radius: none; border-top-right-radius: none; -moz-border-radius-topright: none; } .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth-child(odd) > th { background-color: #000000; } .table-hover tbody tr:hover > td, .table-hover tbody tr:hover > th { background-color: #0000ff; } table td[class*="span"], table th[class*="span"], .row-fluid table td[class*="span"], .row-fluid table th[class*="span"] { display: table-cell; float: none; margin-left: 0; } .table td.span1, .table th.span1 { float: none; width: 44px; margin-left: 0; } .table td.span2, .table th.span2 { float: none; width: 124px; margin-left: 0; } .table td.span3, .table th.span3 { float: none; width: 204px; margin-left: 0; } .table td.span4, .table th.span4 { float: none; width: 284px; margin-left: 0; } .table td.span5, .table th.span5 { float: none; width: 364px; margin-left: 0; } .table td.span6, .table th.span6 { float: none; width: 444px; margin-left: 0; } .table td.span7, .table th.span7 { float: none; width: 524px; margin-left: 0; } .table td.span8, .table th.span8 { float: none; width: 604px; margin-left: 0; } .table td.span9, .table th.span9 { float: none; width: 684px; margin-left: 0; } .table td.span10, .table th.span10 { float: none; width: 764px; margin-left: 0; } .table td.span11, .table th.span11 { float: none; width: 844px; margin-left: 0; } .table td.span12, .table th.span12 { float: none; width: 924px; margin-left: 0; } .table tbody tr.success > td { background-color: #008000; } .table tbody tr.error > td { background-color: #ff0000; } .table tbody tr.warning > td { background-color: #ffff00; } .table tbody tr.info > td { background-color: #00ffff; } .table-hover tbody tr.success:hover > td { background-color: #006700; } .table-hover tbody tr.error:hover > td { background-color: #e60000; } .table-hover tbody tr.warning:hover > td { background-color: #e5e600; } .table-hover tbody tr.info:hover > td { background-color: #00e5e6; } [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; margin-top: 1px; *margin-right: .3em; line-height: 14px; vertical-align: text-top; /* background-image: url("../images/geo/glyphicons-halflings.png"); */ background-position: 14px 14px; background-repeat: no-repeat; } /* White icons with optional class, or on hover/focus/active states of certain elements */ .icon-white, .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:focus > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > li > a:focus > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"], .dropdown-submenu:hover > a > [class^="icon-"], .dropdown-submenu:focus > a > [class^="icon-"], .dropdown-submenu:hover > a > [class*=" icon-"], /* .dropdown-submenu:focus > a > [class*=" icon-"] { background-image: url("../images/geo/glyphicons-halflings-white.png"); } */ .icon-glass { background-position: 0 0; } .icon-music { background-position: -24px 0; } .icon-search { background-position: -48px 0; } .icon-envelope { background-position: -72px 0; } .icon-heart { background-position: -96px 0; } .icon-star { background-position: -120px 0; } .icon-star-empty { background-position: -144px 0; } .icon-user { background-position: -168px 0; } .icon-film { background-position: -192px 0; } .icon-th-large { background-position: -216px 0; } .icon-th { background-position: -240px 0; } .icon-th-list { background-position: -264px 0; } .icon-ok { background-position: -288px 0; } .icon-remove { background-position: -312px 0; } .icon-zoom-in { background-position: -336px 0; } .icon-zoom-out { background-position: -360px 0; } .icon-off { background-position: -384px 0; } .icon-signal { background-position: -408px 0; } .icon-cog { background-position: -432px 0; } .icon-trash { background-position: -456px 0; } .icon-home { background-position: 0 -24px; } .icon-file { background-position: -24px -24px; } .icon-time { background-position: -48px -24px; } .icon-road { background-position: -72px -24px; } .icon-download-alt { background-position: -96px -24px; } .icon-download { background-position: -120px -24px; } .icon-upload { background-position: -144px -24px; } .icon-inbox { background-position: -168px -24px; } .icon-play-circle { background-position: -192px -24px; } .icon-repeat { background-position: -216px -24px; } .icon-refresh { background-position: -240px -24px; } .icon-list-alt { background-position: -264px -24px; } .icon-lock { background-position: -287px -24px; } .icon-flag { background-position: -312px -24px; } .icon-headphones { background-position: -336px -24px; } .icon-volume-off { background-position: -360px -24px; } .icon-volume-down { background-position: -384px -24px; } .icon-volume-up { background-position: -408px -24px; } .icon-qrcode { background-position: -432px -24px; } .icon-barcode { background-position: -456px -24px; } .icon-tag { background-position: 0 -48px; } .icon-tags { background-position: -25px -48px; } .icon-book { background-position: -48px -48px; } .icon-bookmark { background-position: -72px -48px; } .icon-print { background-position: -96px -48px; } .icon-camera { background-position: -120px -48px; } .icon-font { background-position: -144px -48px; } .icon-bold { background-position: -167px -48px; } .icon-italic { background-position: -192px -48px; } .icon-text-height { background-position: -216px -48px; } .icon-text-width { background-position: -240px -48px; } .icon-align-left { background-position: -264px -48px; } .icon-align-center { background-position: -288px -48px; } .icon-align-right { background-position: -312px -48px; } .icon-align-justify { background-position: -336px -48px; } .icon-list { background-position: -360px -48px; } .icon-indent-left { background-position: -384px -48px; } .icon-indent-right { background-position: -408px -48px; } .icon-facetime-video { background-position: -432px -48px; } .icon-picture { background-position: -456px -48px; } .icon-pencil { background-position: 0 -72px; } .icon-map-marker { background-position: -24px -72px; } .icon-adjust { background-position: -48px -72px; } .icon-tint { background-position: -72px -72px; } .icon-edit { background-position: -96px -72px; } .icon-share { background-position: -120px -72px; } .icon-check { background-position: -144px -72px; } .icon-move { background-position: -168px -72px; } .icon-step-backward { background-position: -192px -72px; } .icon-fast-backward { background-position: -216px -72px; } .icon-backward { background-position: -240px -72px; } .icon-play { background-position: -264px -72px; } .icon-pause { background-position: -288px -72px; } .icon-stop { background-position: -312px -72px; } .icon-forward { background-position: -336px -72px; } .icon-fast-forward { background-position: -360px -72px; } .icon-step-forward { background-position: -384px -72px; } .icon-eject { background-position: -408px -72px; } .icon-chevron-left { background-position: -432px -72px; } .icon-chevron-right { background-position: -456px -72px; } .icon-plus-sign { background-position: 0 -96px; } .icon-minus-sign { background-position: -24px -96px; } .icon-remove-sign { background-position: -48px -96px; } .icon-ok-sign { background-position: -72px -96px; } .icon-question-sign { background-position: -96px -96px; } .icon-info-sign { background-position: -120px -96px; } .icon-screenshot { background-position: -144px -96px; } .icon-remove-circle { background-position: -168px -96px; } .icon-ok-circle { background-position: -192px -96px; } .icon-ban-circle { background-position: -216px -96px; } .icon-arrow-left { background-position: -240px -96px; } .icon-arrow-right { background-position: -264px -96px; } .icon-arrow-up { background-position: -289px -96px; } .icon-arrow-down { background-position: -312px -96px; } .icon-share-alt { background-position: -336px -96px; } .icon-resize-full { background-position: -360px -96px; } .icon-resize-small { background-position: -384px -96px; } .icon-plus { background-position: -408px -96px; } .icon-minus { background-position: -433px -96px; } .icon-asterisk { background-position: -456px -96px; } .icon-exclamation-sign { background-position: 0 -120px; } .icon-gift { background-position: -24px -120px; } .icon-leaf { background-position: -48px -120px; } .icon-fire { background-position: -72px -120px; } .icon-eye-open { background-position: -96px -120px; } .icon-eye-close { background-position: -120px -120px; } .icon-warning-sign { background-position: -144px -120px; } .icon-plane { background-position: -168px -120px; } .icon-calendar { background-position: -192px -120px; } .icon-random { width: 16px; background-position: -216px -120px; } .icon-comment { background-position: -240px -120px; } .icon-magnet { background-position: -264px -120px; } .icon-chevron-up { background-position: -288px -120px; } .icon-chevron-down { background-position: -313px -119px; } .icon-retweet { background-position: -336px -120px; } .icon-shopping-cart { background-position: -360px -120px; } .icon-folder-close { width: 16px; background-position: -384px -120px; } .icon-folder-open { width: 16px; background-position: -408px -120px; } .icon-resize-vertical { background-position: -432px -119px; } .icon-resize-horizontal { background-position: -456px -118px; } .icon-hdd { background-position: 0 -144px; } .icon-bullhorn { background-position: -24px -144px; } .icon-bell { background-position: -48px -144px; } .icon-certificate { background-position: -72px -144px; } .icon-thumbs-up { background-position: -96px -144px; } .icon-thumbs-down { background-position: -120px -144px; } .icon-hand-right { background-position: -144px -144px; } .icon-hand-left { background-position: -168px -144px; } .icon-hand-up { background-position: -192px -144px; } .icon-hand-down { background-position: -216px -144px; } .icon-circle-arrow-right { background-position: -240px -144px; } .icon-circle-arrow-left { background-position: -264px -144px; } .icon-circle-arrow-up { background-position: -288px -144px; } .icon-circle-arrow-down { background-position: -312px -144px; } .icon-globe { background-position: -336px -144px; } .icon-wrench { background-position: -360px -144px; } .icon-tasks { background-position: -384px -144px; } .icon-filter { background-position: -408px -144px; } .icon-briefcase { background-position: -432px -144px; } .icon-fullscreen { background-position: -456px -144px; } .dropup, .dropdown { position: relative; } .dropdown-toggle { *margin-bottom: -3px; } .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; } .caret { display: inline-block; width: 0; height: 0; vertical-align: top; border-top: 4px solid #000000; border-right: 4px solid transparent; border-left: 4px solid transparent; content: ""; } .dropdown .caret { margin-top: 8px; margin-left: 2px; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; list-style: none; background-color: #ffffff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); *border-right-width: 2px; *border-bottom-width: 2px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { *width: 100%; height: 1px; margin: 9px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 20px; color: #333333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a { color: #ffffff; text-decoration: none; background-color: #00e4e4; background-image: -moz-linear-gradient(top, #00eeee, #00d4d5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00eeee), to(#00d4d5)); background-image: -webkit-linear-gradient(top, #00eeee, #00d4d5); background-image: -o-linear-gradient(top, #00eeee, #00d4d5); background-image: linear-gradient(to bottom, #00eeee, #00d4d5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00eeee', endColorstr='#ff00d4d5', GradientType=0); } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #333333; text-decoration: none; background-color: #00e4e4; background-image: -moz-linear-gradient(top, #00eeee, #00d4d5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00eeee), to(#00d4d5)); background-image: -webkit-linear-gradient(top, #00eeee, #00d4d5); background-image: -o-linear-gradient(top, #00eeee, #00d4d5); background-image: linear-gradient(to bottom, #00eeee, #00d4d5); background-repeat: repeat-x; outline: 0; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00eeee', endColorstr='#ff00d4d5', GradientType=0); } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999999; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; cursor: default; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .open { *z-index: 1000; } .open > .dropdown-menu { display: block; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0; border-bottom: 4px solid #000000; content: ""; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } .dropdown-submenu { position: relative; } .dropdown-submenu > .dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px 6px; border-radius: 0 6px 6px 6px; } .dropdown-submenu:hover > .dropdown-menu { display: block; } .dropup .dropdown-submenu > .dropdown-menu { top: auto; bottom: 0; margin-top: 0; margin-bottom: -2px; -webkit-border-radius: 5px 5px 5px 0; -moz-border-radius: 5px 5px 5px 0; border-radius: 5px 5px 5px 0; } .dropdown-submenu > a:after { display: block; float: right; width: 0; height: 0; margin-top: 5px; margin-right: -10px; border-color: transparent; border-left-color: #cccccc; border-style: solid; border-width: 5px 0 5px 5px; content: " "; } .dropdown-submenu:hover > a:after { border-left-color: #ffffff; } .dropdown-submenu.pull-left { float: none; } .dropdown-submenu.pull-left > .dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .dropdown .dropdown-menu .nav-header { padding-right: 20px; padding-left: 20px; } .typeahead { z-index: 1051; margin-top: 2px; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #000000; border: 1px solid #000000; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } .well-large { padding: 24px; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .well-small { padding: 9px; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; -moz-transition: opacity 0.15s linear; -o-transition: opacity 0.15s linear; transition: opacity 0.15s linear; } .fade.in { opacity: 1; } .collapse { position: relative; height: 0; overflow: hidden; -webkit-transition: height 0.35s ease; -moz-transition: height 0.35s ease; -o-transition: height 0.35s ease; transition: height 0.35s ease; } .collapse.in { height: auto; } .close { float: right; font-size: 20px; font-weight: bold; line-height: 20px; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover, .close:focus { color: #000000; text-decoration: none; cursor: pointer; opacity: 0.4; filter: alpha(opacity=40); } button.close { padding: 0; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .btn { display: inline-block; *display: inline; padding: 4px 12px; margin-bottom: 0; *margin-left: .3em; font-size: 16px; line-height: 20px; color: #333333; text-align: center; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); vertical-align: middle; cursor: pointer; background-color: #e6e6e6; *background-color: #e6e6e6; background-image: -moz-linear-gradient(top, #e6e6e6, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #e6e6e6, #e6e6e6); background-image: -o-linear-gradient(top, #e6e6e6, #e6e6e6); background-image: linear-gradient(to bottom, #e6e6e6, #e6e6e6); background-repeat: repeat-x; border: 1px solid #bbbbbb; *border: 0; border-color: #e6e6e6 #e6e6e6 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border-bottom-color: #a2a2a2; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffe6e6e6', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); *zoom: 1; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { color: #333333; background-color: #e6e6e6; *background-color: #d9d9d9; } .btn:active, .btn.active { background-color: #cccccc \9; } .btn:first-child { *margin-left: 0; } .btn:hover, .btn:focus { color: #333333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn.active, .btn:active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn.disabled, .btn[disabled] { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 11px 19px; font-size: 20px; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .btn-large [class^="icon-"], .btn-large [class*=" icon-"] { margin-top: 4px; } .btn-small { padding: 2px 10px; font-size: 13.6px; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .btn-small [class^="icon-"], .btn-small [class*=" icon-"] { margin-top: 0; } .btn-mini [class^="icon-"], .btn-mini [class*=" icon-"] { margin-top: -1px; } .btn-mini { padding: 1px 6px; font-size: 12px; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .btn-block { display: block; width: 100%; padding-right: 0; padding-left: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255, 255, 255, 0.75); } .btn-primary { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #00eeee; *background-color: #00eeee; background-image: -moz-linear-gradient(top, #00eeee, #00eeee); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00eeee), to(#00eeee)); background-image: -webkit-linear-gradient(top, #00eeee, #00eeee); background-image: -o-linear-gradient(top, #00eeee, #00eeee); background-image: linear-gradient(to bottom, #00eeee, #00eeee); background-repeat: repeat-x; border-color: #00eeee #00eeee #00a1a2; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00eeee', endColorstr='#ff00eeee', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { color: #ffffff; background-color: #00eeee; *background-color: #00d4d5; } .btn-primary:active, .btn-primary.active { background-color: #00bbbb \9; } .btn-warning { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #ffaa00; *background-color: #ffaa00; background-image: -moz-linear-gradient(top, #ffaa00, #ffaa00); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffaa00), to(#ffaa00)); background-image: -webkit-linear-gradient(top, #ffaa00, #ffaa00); background-image: -o-linear-gradient(top, #ffaa00, #ffaa00); background-image: linear-gradient(to bottom, #ffaa00, #ffaa00); background-repeat: repeat-x; border-color: #ffaa00 #ffaa00 #b37700; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffaa00', endColorstr='#ffffaa00', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { color: #ffffff; background-color: #ffaa00; *background-color: #e69900; } .btn-warning:active, .btn-warning.active { background-color: #cc8800 \9; } .btn-danger { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #ff0000; *background-color: #ff0000; background-image: -moz-linear-gradient(top, #ff0000, #ff0000); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff0000), to(#ff0000)); background-image: -webkit-linear-gradient(top, #ff0000, #ff0000); background-image: -o-linear-gradient(top, #ff0000, #ff0000); background-image: linear-gradient(to bottom, #ff0000, #ff0000); background-repeat: repeat-x; border-color: #ff0000 #ff0000 #b30000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff0000', endColorstr='#ffff0000', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { color: #ffffff; background-color: #ff0000; *background-color: #e60000; } .btn-danger:active, .btn-danger.active { background-color: #cc0000 \9; } .btn-success { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #00ff00; *background-color: #00ff00; background-image: -moz-linear-gradient(top, #00ff00, #00ff00); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00ff00), to(#00ff00)); background-image: -webkit-linear-gradient(top, #00ff00, #00ff00); background-image: -o-linear-gradient(top, #00ff00, #00ff00); background-image: linear-gradient(to bottom, #00ff00, #00ff00); background-repeat: repeat-x; border-color: #00ff00 #00ff00 #00b300; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff00', endColorstr='#ff00ff00', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { color: #ffffff; background-color: #00ff00; *background-color: #00e600; } .btn-success:active, .btn-success.active { background-color: #00cc00 \9; } .btn-info { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #00ffff; *background-color: #00ffff; background-image: -moz-linear-gradient(top, #00ffff, #00ffff); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#00ffff), to(#00ffff)); background-image: -webkit-linear-gradient(top, #00ffff, #00ffff); background-image: -o-linear-gradient(top, #00ffff, #00ffff); background-image: linear-gradient(to bottom, #00ffff, #00ffff); background-repeat: repeat-x; border-color: #00ffff #00ffff #00b2b3; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ffff', endColorstr='#ff00ffff', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { color: #ffffff; background-color: #00ffff; *background-color: #00e5e6; } .btn-info:active, .btn-info.active { background-color: #00cccc \9; } .btn-inverse { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #000000; *background-color: #000000; background-image: -moz-linear-gradient(top, #000000, #000000); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#000000), to(#000000)); background-image: -webkit-linear-gradient(top, #000000, #000000); background-image: -o-linear-gradient(top, #000000, #000000); background-image: linear-gradient(to bottom, #000000, #000000); background-repeat: repeat-x; border-color: #000000 #000000 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000', endColorstr='#ff000000', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { color: #ffffff; background-color: #000000; *background-color: #000000; } .btn-inverse:active, .btn-inverse.active { background-color: #000000 \9; } button.btn, input[type="submit"].btn { *padding-top: 3px; *padding-bottom: 3px; } button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { padding: 0; border: 0; } button.btn.btn-large, input[type="submit"].btn.btn-large { *padding-top: 7px; *padding-bottom: 7px; } button.btn.btn-small, input[type="submit"].btn.btn-small { *padding-top: 3px; *padding-bottom: 3px; } button.btn.btn-mini, input[type="submit"].btn.btn-mini { *padding-top: 1px; *padding-bottom: 1px; } .btn-link, .btn-link:active, .btn-link[disabled] { background-color: transparent; background-image: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-link { color: #00eeee; cursor: pointer; border-color: transparent; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-link:hover, .btn-link:focus { color: #00eeee; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, .btn-link[disabled]:focus { color: #333333; text-decoration: none; } .btn-group { position: relative; display: inline-block; *display: inline; *margin-left: .3em; font-size: 0; white-space: nowrap; vertical-align: middle; *zoom: 1; } .btn-group:first-child { *margin-left: 0; } .btn-group + .btn-group { margin-left: 5px; } .btn-toolbar { margin-top: 10px; margin-bottom: 10px; font-size: 0; } .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group { margin-left: 5px; } .btn-group > .btn { position: relative; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group > .btn + .btn { margin-left: -1px; } .btn-group > .btn, .btn-group > .dropdown-menu, .btn-group > .popover { font-size: 16px; } .btn-group > .btn-mini { font-size: 12px; } .btn-group > .btn-small { font-size: 13.6px; } .btn-group > .btn-large { font-size: 20px; } .btn-group > .btn:first-child { margin-left: 0; -webkit-border-bottom-left-radius: none; border-bottom-left-radius: none; -webkit-border-top-left-radius: none; border-top-left-radius: none; -moz-border-radius-bottomleft: none; -moz-border-radius-topleft: none; } .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: none; border-top-right-radius: none; -webkit-border-bottom-right-radius: none; border-bottom-right-radius: none; -moz-border-radius-topright: none; -moz-border-radius-bottomright: none; } .btn-group > .btn.large:first-child { margin-left: 0; -webkit-border-bottom-left-radius: none; border-bottom-left-radius: none; -webkit-border-top-left-radius: none; border-top-left-radius: none; -moz-border-radius-bottomleft: none; -moz-border-radius-topleft: none; } .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: none; border-top-right-radius: none; -webkit-border-bottom-right-radius: none; border-bottom-right-radius: none; -moz-border-radius-topright: none; -moz-border-radius-bottomright: none; } .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { *padding-top: 5px; padding-right: 8px; *padding-bottom: 5px; padding-left: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn-group > .btn-mini + .dropdown-toggle { *padding-top: 2px; padding-right: 5px; *padding-bottom: 2px; padding-left: 5px; } .btn-group > .btn-small + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-toggle { *padding-top: 7px; padding-right: 12px; *padding-bottom: 7px; padding-left: 12px; } .btn-group.open .dropdown-toggle { background-image: none; -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn-group.open .btn.dropdown-toggle { background-color: #e6e6e6; } .btn-group.open .btn-primary.dropdown-toggle { background-color: #00eeee; } .btn-group.open .btn-warning.dropdown-toggle { background-color: #ffaa00; } .btn-group.open .btn-danger.dropdown-toggle { background-color: #ff0000; } .btn-group.open .btn-success.dropdown-toggle { background-color: #00ff00; } .btn-group.open .btn-info.dropdown-toggle { background-color: #00ffff; } .btn-group.open .btn-inverse.dropdown-toggle { background-color: #000000; } .btn .caret { margin-top: 8px; margin-left: 0; } .btn-large .caret { margin-top: 6px; } .btn-large .caret { border-top-width: 5px; border-right-width: 5px; border-left-width: 5px; } .btn-mini .caret, .btn-small .caret { margin-top: 8px; } .dropup .btn-large .caret { border-bottom-width: 5px; } .btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .btn-group-vertical { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; } .btn-group-vertical > .btn { display: block; float: none; max-width: 100%; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group-vertical > .btn + .btn { margin-top: -1px; margin-left: 0; } .btn-group-vertical > .btn:first-child { -webkit-border-radius: none none 0 0; -moz-border-radius: none none 0 0; border-radius: none none 0 0; } .btn-group-vertical > .btn:last-child { -webkit-border-radius: 0 0 none none; -moz-border-radius: 0 0 none none; border-radius: 0 0 none none; } .btn-group-vertical > .btn-large:first-child { -webkit-border-radius: none none 0 0; -moz-border-radius: none none 0 0; border-radius: none none 0 0; } .btn-group-vertical > .btn-large:last-child { -webkit-border-radius: 0 0 none none; -moz-border-radius: 0 0 none none; border-radius: 0 0 none none; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 20px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); background-color: #ffff00; border: 1px solid #ff0000; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .alert, .alert h4 { color: #000000; } .alert h4 { margin: 0; } .alert .close { position: relative; top: -2px; right: -21px; line-height: 20px; } .alert-success { color: #ffffff; background-color: #008000; border-color: #00aa00; } .alert-success h4 { color: #ffffff; } .alert-danger, .alert-error { color: #ffffff; background-color: #ff0000; border-color: #aa0000; } .alert-danger h4, .alert-error h4 { color: #ffffff; } .alert-info { color: #000000; background-color: #00ffff; border-color: #aaaa00; } .alert-info h4 { color: #000000; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } .nav { margin-bottom: 20px; margin-left: 0; list-style: none; } .nav > li > a { display: block; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eeeeee; } .nav > li > a > img { max-width: none; } .nav > .pull-right { float: right; } .nav-header { display: block; padding: 3px 15px; font-size: 11px; font-weight: bold; line-height: 20px; color: #999999; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); text-transform: uppercase; } .nav li + .nav-header { margin-top: 9px; } .nav-list { padding-right: 15px; padding-left: 15px; margin-bottom: 0; } .nav-list > li > a, .nav-list .nav-header { margin-right: -15px; margin-left: -15px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } .nav-list > li > a { padding: 3px 15px; } .nav-list > .active > a, .nav-list > .active > a:hover, .nav-list > .active > a:focus { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); background-color: #00eeee; } .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { margin-right: 2px; } .nav-list .divider { *width: 100%; height: 1px; margin: 9px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } .nav-tabs, .nav-pills { *zoom: 1; } .nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { display: table; line-height: 0; content: ""; } .nav-tabs:after, .nav-pills:after { clear: both; } .nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > li > a, .nav-pills > li > a { padding-right: 12px; padding-left: 12px; margin-right: 2px; line-height: 14px; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { margin-bottom: -1px; } .nav-tabs > li > a { padding-top: 8px; padding-bottom: 8px; line-height: 20px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #dddddd; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus { color: #555555; cursor: default; background-color: #0000ff; border: 1px solid #ddd; border-bottom-color: transparent; } .nav-pills > li > a { padding-top: 8px; padding-bottom: 8px; margin-top: 2px; margin-bottom: 2px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .nav-pills > .active > a, .nav-pills > .active > a:hover, .nav-pills > .active > a:focus { color: #ffffff; background-color: #00eeee; } .nav-stacked > li { float: none; } .nav-stacked > li > a { margin-right: 0; } .nav-tabs.nav-stacked { border-bottom: 0; } .nav-tabs.nav-stacked > li > a { border: 1px solid #ddd; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .nav-tabs.nav-stacked > li:first-child > a { -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -moz-border-radius-topleft: 4px; } .nav-tabs.nav-stacked > li:last-child > a { -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-bottomleft: 4px; } .nav-tabs.nav-stacked > li > a:hover, .nav-tabs.nav-stacked > li > a:focus { z-index: 2; border-color: #ddd; } .nav-pills.nav-stacked > li > a { margin-bottom: 3px; } .nav-pills.nav-stacked > li:last-child > a { margin-bottom: 1px; } .nav-tabs .dropdown-menu { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .nav-pills .dropdown-menu { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .nav .dropdown-toggle .caret { margin-top: 6px; border-top-color: #00eeee; border-bottom-color: #00eeee; } .nav .dropdown-toggle:hover .caret, .nav .dropdown-toggle:focus .caret { border-top-color: #00eeee; border-bottom-color: #00eeee; } /* move down carets for tabs */ .nav-tabs .dropdown-toggle .caret { margin-top: 8px; } .nav .active .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } .nav-tabs .active .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } .nav > .dropdown.active > a:hover, .nav > .dropdown.active > a:focus { cursor: pointer; } .nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover, .nav > li.dropdown.open.active > a:focus { color: #ffffff; background-color: #999999; border-color: #999999; } .nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret, .nav li.dropdown.open a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; opacity: 1; filter: alpha(opacity=100); } .tabs-stacked .open > a:hover, .tabs-stacked .open > a:focus { border-color: #999999; } .tabbable { *zoom: 1; } .tabbable:before, .tabbable:after { display: table; line-height: 0; content: ""; } .tabbable:after { clear: both; } .tab-content { overflow: auto; } .tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } .tabs-below > .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } .tabs-below > .nav-tabs > li > a { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .tabs-below > .nav-tabs > li > a:hover, .tabs-below > .nav-tabs > li > a:focus { border-top-color: #ddd; border-bottom-color: transparent; } .tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover, .tabs-below > .nav-tabs > .active > a:focus { border-color: transparent #ddd #ddd #ddd; } .tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { float: none; } .tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } .tabs-left > .nav-tabs > li > a { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .tabs-left > .nav-tabs > li > a:hover, .tabs-left > .nav-tabs > li > a:focus { border-color: #eeeeee #dddddd #eeeeee #eeeeee; } .tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover, .tabs-left > .nav-tabs .active > a:focus { border-color: #ddd transparent #ddd #ddd; *border-right-color: #ffffff; } .tabs-right > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } .tabs-right > .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .tabs-right > .nav-tabs > li > a:hover, .tabs-right > .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #eeeeee #dddddd; } .tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover, .tabs-right > .nav-tabs .active > a:focus { border-color: #ddd #ddd #ddd transparent; *border-left-color: #ffffff; } .nav > .disabled > a { color: #999999; } .nav > .disabled > a:hover, .nav > .disabled > a:focus { text-decoration: none; cursor: default; background-color: transparent; } .navbar { *position: relative; *z-index: 2; margin-bottom: 20px; overflow: visible; } .navbar-inner { min-height: 40px; padding-right: 20px; padding-left: 20px; background-color: #000000; background-image: -moz-linear-gradient(top, #000000, #000000); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#000000), to(#000000)); background-image: -webkit-linear-gradient(top, #000000, #000000); background-image: -o-linear-gradient(top, #000000, #000000); background-image: linear-gradient(to bottom, #000000, #000000); background-repeat: repeat-x; border: 1px solid #000000; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000', endColorstr='#ff000000', GradientType=0); *zoom: 1; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); } .navbar-inner:before, .navbar-inner:after { display: table; line-height: 0; content: ""; } .navbar-inner:after { clear: both; } .navbar .container { width: auto; } .nav-collapse.collapse { height: auto; overflow: visible; } .navbar .brand { display: block; float: left; padding: 10px 20px 10px; margin-left: -20px; font-size: 20px; font-weight: 200; color: #00ff00; text-shadow: 0 1px 0 #000000; } .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } .navbar-text { margin-bottom: 0; line-height: 40px; color: #ff00ff; } .navbar-link { color: #00ff00; } .navbar-link:hover, .navbar-link:focus { color: #333333; } .navbar .divider-vertical { height: 40px; margin: 0 9px; border-right: 1px solid #000000; border-left: 1px solid #000000; } .navbar .btn, .navbar .btn-group { margin-top: 5px; } .navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn, .navbar .input-prepend .btn-group, .navbar .input-append .btn-group { margin-top: 0; } .navbar-form { margin-bottom: 0; *zoom: 1; } .navbar-form:before, .navbar-form:after { display: table; line-height: 0; content: ""; } .navbar-form:after { clear: both; } .navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { margin-top: 5px; } .navbar-form input, .navbar-form select, .navbar-form .btn { display: inline-block; margin-bottom: 0; } .navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { margin-top: 3px; } .navbar-form .input-append, .navbar-form .input-prepend { margin-top: 5px; white-space: nowrap; } .navbar-form .input-append input, .navbar-form .input-prepend input { margin-top: 0; } .navbar-search { position: relative; float: left; margin-top: 5px; margin-bottom: 0; } .navbar-search .search-query { padding: 4px 14px; margin-bottom: 0; font-family: "Comic Sans", "Comic Sans MS", "Chalkboard", "ChalkboardSE-Regular", "Marker Felt", "Purisa", "URW Chancery L", cursive, sans-serif; font-size: 13px; font-weight: normal; line-height: 1; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .navbar-static-top { position: static; margin-bottom: 0; } .navbar-static-top .navbar-inner { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; margin-bottom: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { border-width: 0 0 1px; } .navbar-fixed-bottom .navbar-inner { border-width: 1px 0 0; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding-right: 0; padding-left: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .navbar-fixed-top { top: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); } .navbar-fixed-bottom { bottom: 0; } .navbar-fixed-bottom .navbar-inner { -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); } .navbar .nav { position: relative; left: 0; display: block; float: left; margin: 0 10px 0 0; } .navbar .nav.pull-right { float: right; margin-right: 0; } .navbar .nav > li { float: left; } .navbar .nav > li > a { float: none; padding: 10px 15px 10px; color: #00ff00; text-decoration: none; text-shadow: 0 1px 0 #000000; } .navbar .nav .dropdown-toggle .caret { margin-top: 8px; } .navbar .nav > li > a:focus, .navbar .nav > li > a:hover { color: #333333; text-decoration: none; background-color: transparent; } .navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { color: #555555; text-decoration: none; background-color: #000000; -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); } .navbar .btn-navbar { display: none; float: right; padding: 7px 10px; margin-right: 5px; margin-left: 5px; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #000000; *background-color: #000000; background-image: -moz-linear-gradient(top, #000000, #000000); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#000000), to(#000000)); background-image: -webkit-linear-gradient(top, #000000, #000000); background-image: -o-linear-gradient(top, #000000, #000000); background-image: linear-gradient(to bottom, #000000, #000000); background-repeat: repeat-x; border-color: #000000 #000000 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000', endColorstr='#ff000000', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); } .navbar .btn-navbar:hover, .navbar .btn-navbar:focus, .navbar .btn-navbar:active, .navbar .btn-navbar.active, .navbar .btn-navbar.disabled, .navbar .btn-navbar[disabled] { color: #ffffff; background-color: #000000; *background-color: #000000; } .navbar .btn-navbar:active, .navbar .btn-navbar.active { background-color: #000000 \9; } .navbar .btn-navbar .icon-bar { display: block; width: 18px; height: 2px; background-color: #f5f5f5; -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); } .btn-navbar .icon-bar + .icon-bar { margin-top: 3px; } .navbar .nav > li > .dropdown-menu:before { position: absolute; top: -7px; left: 9px; display: inline-block; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .navbar .nav > li > .dropdown-menu:after { position: absolute; top: -6px; left: 10px; display: inline-block; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff; border-left: 6px solid transparent; content: ''; } .navbar-fixed-bottom .nav > li > .dropdown-menu:before { top: auto; bottom: -7px; border-top: 7px solid #ccc; border-bottom: 0; border-top-color: rgba(0, 0, 0, 0.2); } .navbar-fixed-bottom .nav > li > .dropdown-menu:after { top: auto; bottom: -6px; border-top: 6px solid #ffffff; border-bottom: 0; } .navbar .nav li.dropdown > a:hover .caret, .navbar .nav li.dropdown > a:focus .caret { border-top-color: #333333; border-bottom-color: #333333; } .navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { color: #555555; background-color: #000000; } .navbar .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #00ff00; border-bottom-color: #00ff00; } .navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } .navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { right: 0; left: auto; } .navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { right: 12px; left: auto; } .navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { right: 13px; left: auto; } .navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { right: 100%; left: auto; margin-right: -1px; margin-left: 0; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .navbar-inverse .navbar-inner { background-color: #ff00ff; background-image: -moz-linear-gradient(top, #ff00ff, #ff00ff); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff00ff), to(#ff00ff)); background-image: -webkit-linear-gradient(top, #ff00ff, #ff00ff); background-image: -o-linear-gradient(top, #ff00ff, #ff00ff); background-image: linear-gradient(to bottom, #ff00ff, #ff00ff); background-repeat: repeat-x; border-color: #008000; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00ff', endColorstr='#ffff00ff', GradientType=0); } .navbar-inverse .brand, .navbar-inverse .nav > li > a { color: #0000ff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover, .navbar-inverse .brand:focus, .navbar-inverse .nav > li > a:focus { color: #0000ff; } .navbar-inverse .brand { color: #0000ff; } .navbar-inverse .navbar-text { color: #000000; } .navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { color: #0000ff; background-color: transparent; } .navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { color: #0000ff; background-color: #ff00ff; } .navbar-inverse .navbar-link { color: #0000ff; } .navbar-inverse .navbar-link:hover, .navbar-inverse .navbar-link:focus { color: #0000ff; } .navbar-inverse .divider-vertical { border-right-color: #ff00ff; border-left-color: #ff00ff; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { color: #0000ff; background-color: #ff00ff; } .navbar-inverse .nav li.dropdown > a:hover .caret, .navbar-inverse .nav li.dropdown > a:focus .caret { border-top-color: #0000ff; border-bottom-color: #0000ff; } .navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #0000ff; border-bottom-color: #0000ff; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #0000ff; border-bottom-color: #0000ff; } .navbar-inverse .navbar-search .search-query { color: #ffffff; background-color: #ff80ff; border-color: #ff00ff; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; } .navbar-inverse .navbar-search .search-query:-moz-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query:-ms-input-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { padding: 5px 15px; color: #333333; text-shadow: 0 1px 0 #ffffff; background-color: #ffffff; border: 0; outline: 0; -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); } .navbar-inverse .btn-navbar { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #e600e5; *background-color: #e600e5; background-image: -moz-linear-gradient(top, #e600e5, #e600e5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e600e5), to(#e600e5)); background-image: -webkit-linear-gradient(top, #e600e5, #e600e5); background-image: -o-linear-gradient(top, #e600e5, #e600e5); background-image: linear-gradient(to bottom, #e600e5, #e600e5); background-repeat: repeat-x; border-color: #e600e5 #e600e5 #990099; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe600e5', endColorstr='#ffe600e5', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { color: #ffffff; background-color: #e600e5; *background-color: #cc00cc; } .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { background-color: #b300b2 \9; } .breadcrumb { padding: 8px 15px; margin: 0 0 20px; list-style: none; background-color: #f5f5f5; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .breadcrumb > li { display: inline-block; *display: inline; text-shadow: 0 1px 0 #ffffff; *zoom: 1; } .breadcrumb > li > .divider { padding: 0 5px; color: #ccc; } .breadcrumb > .active { color: #999999; } .pagination { margin: 20px 0; } .pagination ul { display: inline-block; *display: inline; margin-bottom: 0; margin-left: 0; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; *zoom: 1; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .pagination ul > li { display: inline; } .pagination ul > li > a, .pagination ul > li > span { float: left; padding: 4px 12px; line-height: 20px; text-decoration: none; background-color: #ffffff; border: 1px solid #dddddd; border-left-width: 0; } .pagination ul > li > a:hover, .pagination ul > li > a:focus, .pagination ul > .active > a, .pagination ul > .active > span { background-color: #f5f5f5; } .pagination ul > .active > a, .pagination ul > .active > span { color: #999999; cursor: default; } .pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover, .pagination ul > .disabled > a:focus { color: #999999; cursor: default; background-color: transparent; } .pagination ul > li:first-child > a, .pagination ul > li:first-child > span { border-left-width: 1px; -webkit-border-bottom-left-radius: none; border-bottom-left-radius: none; -webkit-border-top-left-radius: none; border-top-left-radius: none; -moz-border-radius-bottomleft: none; -moz-border-radius-topleft: none; } .pagination ul > li:last-child > a, .pagination ul > li:last-child > span { -webkit-border-top-right-radius: none; border-top-right-radius: none; -webkit-border-bottom-right-radius: none; border-bottom-right-radius: none; -moz-border-radius-topright: none; -moz-border-radius-bottomright: none; } .pagination-centered { text-align: center; } .pagination-right { text-align: right; } .pagination-large ul > li > a, .pagination-large ul > li > span { padding: 11px 19px; font-size: 20px; } .pagination-large ul > li:first-child > a, .pagination-large ul > li:first-child > span { -webkit-border-bottom-left-radius: none; border-bottom-left-radius: none; -webkit-border-top-left-radius: none; border-top-left-radius: none; -moz-border-radius-bottomleft: none; -moz-border-radius-topleft: none; } .pagination-large ul > li:last-child > a, .pagination-large ul > li:last-child > span { -webkit-border-top-right-radius: none; border-top-right-radius: none; -webkit-border-bottom-right-radius: none; border-bottom-right-radius: none; -moz-border-radius-topright: none; -moz-border-radius-bottomright: none; } .pagination-mini ul > li:first-child > a, .pagination-small ul > li:first-child > a, .pagination-mini ul > li:first-child > span, .pagination-small ul > li:first-child > span { -webkit-border-bottom-left-radius: none; border-bottom-left-radius: none; -webkit-border-top-left-radius: none; border-top-left-radius: none; -moz-border-radius-bottomleft: none; -moz-border-radius-topleft: none; } .pagination-mini ul > li:last-child > a, .pagination-small ul > li:last-child > a, .pagination-mini ul > li:last-child > span, .pagination-small ul > li:last-child > span { -webkit-border-top-right-radius: none; border-top-right-radius: none; -webkit-border-bottom-right-radius: none; border-bottom-right-radius: none; -moz-border-radius-topright: none; -moz-border-radius-bottomright: none; } .pagination-small ul > li > a, .pagination-small ul > li > span { padding: 2px 10px; font-size: 13.6px; } .pagination-mini ul > li > a, .pagination-mini ul > li > span { padding: 1px 6px; font-size: 12px; } .pager { margin: 20px 0; text-align: center; list-style: none; *zoom: 1; } .pager:before, .pager:after { display: table; line-height: 0; content: ""; } .pager:after { clear: both; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #f5f5f5; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #999999; cursor: default; background-color: #fff; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000000; } .modal-backdrop.fade { opacity: 0; } .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } .modal { position: fixed; top: 10%; left: 50%; z-index: 1050; width: 560px; margin-left: -280px; background-color: #ffffff; border: 1px solid #999; border: 1px solid rgba(0, 0, 0, 0.3); *border: 1px solid #999; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; outline: none; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; } .modal.fade { top: -25%; -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; -moz-transition: opacity 0.3s linear, top 0.3s ease-out; -o-transition: opacity 0.3s linear, top 0.3s ease-out; transition: opacity 0.3s linear, top 0.3s ease-out; } .modal.fade.in { top: 10%; } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } .modal-header .close { margin-top: 2px; } .modal-header h3 { margin: 0; line-height: 30px; } .modal-body { position: relative; max-height: 400px; padding: 15px; overflow-y: auto; } .modal-form { margin-bottom: 0; } .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; text-align: right; background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; *zoom: 1; -webkit-box-shadow: inset 0 1px 0 #ffffff; -moz-box-shadow: inset 0 1px 0 #ffffff; box-shadow: inset 0 1px 0 #ffffff; } .modal-footer:before, .modal-footer:after { display: table; line-height: 0; content: ""; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-bottom: 0; margin-left: 5px; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .tooltip { position: absolute; z-index: 1030; display: block; font-size: 11px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); visibility: visible; } .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } .tooltip.top { padding: 5px 0; margin-top: -3px; } .tooltip.right { padding: 0 5px; margin-left: 3px; } .tooltip.bottom { padding: 5px 0; margin-top: 3px; } .tooltip.left { padding: 0 5px; margin-left: -3px; } .tooltip-inner { max-width: 200px; padding: 8px; color: #ffffff; text-align: center; text-decoration: none; background-color: #000000; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-right-color: #000000; border-width: 5px 5px 5px 0; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-left-color: #000000; border-width: 5px 0 5px 5px; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; max-width: 276px; padding: 1px; text-align: left; white-space: normal; background-color: #ffffff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { padding: 8px 14px; margin: 0; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } .popover-title:empty { display: none; } .popover-content { padding: 9px 14px; } .popover .arrow, .popover .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover .arrow { border-width: 11px; } .popover .arrow:after { border-width: 10px; content: ""; } .popover.top .arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: #999; border-top-color: rgba(0, 0, 0, 0.25); border-bottom-width: 0; } .popover.top .arrow:after { bottom: 1px; margin-left: -10px; border-top-color: #ffffff; border-bottom-width: 0; } .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: #999; border-right-color: rgba(0, 0, 0, 0.25); border-left-width: 0; } .popover.right .arrow:after { bottom: -10px; left: 1px; border-right-color: #ffffff; border-left-width: 0; } .popover.bottom .arrow { top: -11px; left: 50%; margin-left: -11px; border-bottom-color: #999; border-bottom-color: rgba(0, 0, 0, 0.25); border-top-width: 0; } .popover.bottom .arrow:after { top: 1px; margin-left: -10px; border-bottom-color: #ffffff; border-top-width: 0; } .popover.left .arrow { top: 50%; right: -11px; margin-top: -11px; border-left-color: #999; border-left-color: rgba(0, 0, 0, 0.25); border-right-width: 0; } .popover.left .arrow:after { right: 1px; bottom: -10px; border-left-color: #ffffff; border-right-width: 0; } .thumbnails { margin-left: -20px; list-style: none; *zoom: 1; } .thumbnails:before, .thumbnails:after { display: table; line-height: 0; content: ""; } .thumbnails:after { clear: both; } .row-fluid .thumbnails { margin-left: 0; } .thumbnails > li { float: left; margin-bottom: 20px; margin-left: 20px; } .thumbnail { display: block; padding: 4px; line-height: 20px; border: 1px solid #ddd; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } a.thumbnail:hover, a.thumbnail:focus { border-color: #00eeee; -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); } .thumbnail > img { display: block; max-width: 100%; margin-right: auto; margin-left: auto; } .thumbnail .caption { padding: 9px; color: #555555; } .media, .media-body { overflow: hidden; *overflow: visible; zoom: 1; } .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media-object { display: block; } .media-heading { margin: 0 0 5px; } .media > .pull-left { margin-right: 10px; } .media > .pull-right { margin-left: 10px; } .media-list { margin-left: 0; list-style: none; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 13.536px; font-weight: bold; line-height: 14px; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); white-space: nowrap; vertical-align: baseline; background-color: #999999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-right: 9px; padding-left: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #ffffff; } .label-important[href], .badge-important[href] { background-color: #e6e6e6; } .label-warning, .badge-warning { background-color: #ffaa00; } .label-warning[href], .badge-warning[href] { background-color: #cc8800; } .label-success, .badge-success { background-color: #ffffff; } .label-success[href], .badge-success[href] { background-color: #e6e6e6; } .label-info, .badge-info { background-color: #000000; } .label-info[href], .badge-info[href] { background-color: #000000; } .label-inverse, .badge-inverse { background-color: #333333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-ms-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { height: 20px; margin-bottom: 20px; overflow: hidden; background-color: #f7f7f7; background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); background-repeat: repeat-x; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } .progress .bar { float: left; width: 0; height: 100%; font-size: 12px; color: #ffffff; text-align: center; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e90d2; background-image: -moz-linear-gradient(top, #149bdf, #0480be); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); background-image: -webkit-linear-gradient(top, #149bdf, #0480be); background-image: -o-linear-gradient(top, #149bdf, #0480be); background-image: linear-gradient(to bottom, #149bdf, #0480be); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width 0.6s ease; -moz-transition: width 0.6s ease; -o-transition: width 0.6s ease; transition: width 0.6s ease; } .progress .bar + .bar { -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); } .progress-striped .bar { background-color: #149bdf; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -webkit-background-size: 40px 40px; -moz-background-size: 40px 40px; -o-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; -ms-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-danger .bar, .progress .bar-danger { background-color: #dd514c; background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); } .progress-danger.progress-striped .bar, .progress-striped .bar-danger { background-color: #ee5f5b; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-success .bar, .progress .bar-success { background-color: #5eb95e; background-image: -moz-linear-gradient(top, #62c462, #57a957); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); background-image: -webkit-linear-gradient(top, #62c462, #57a957); background-image: -o-linear-gradient(top, #62c462, #57a957); background-image: linear-gradient(to bottom, #62c462, #57a957); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); } .progress-success.progress-striped .bar, .progress-striped .bar-success { background-color: #62c462; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-info .bar, .progress .bar-info { background-color: #4bb1cf; background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); background-image: -o-linear-gradient(top, #5bc0de, #339bb9); background-image: linear-gradient(to bottom, #5bc0de, #339bb9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); } .progress-info.progress-striped .bar, .progress-striped .bar-info { background-color: #5bc0de; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-warning .bar, .progress .bar-warning { background-color: #ffb92e; background-image: -moz-linear-gradient(top, #ffc34d, #ffaa00); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffc34d), to(#ffaa00)); background-image: -webkit-linear-gradient(top, #ffc34d, #ffaa00); background-image: -o-linear-gradient(top, #ffc34d, #ffaa00); background-image: linear-gradient(to bottom, #ffc34d, #ffaa00); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffc34d', endColorstr='#ffffaa00', GradientType=0); } .progress-warning.progress-striped .bar, .progress-striped .bar-warning { background-color: #ffc34d; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .accordion { margin-bottom: 20px; } .accordion-group { margin-bottom: 2px; border: 1px solid #e5e5e5; -webkit-border-radius: none; -moz-border-radius: none; border-radius: none; } .accordion-heading { border-bottom: 0; } .accordion-heading .accordion-toggle { display: block; padding: 8px 15px; } .accordion-toggle { cursor: pointer; } .accordion-inner { padding: 9px 15px; border-top: 1px solid #e5e5e5; } .carousel { position: relative; margin-bottom: 20px; line-height: 1; } .carousel-inner { position: relative; width: 100%; overflow: hidden; } .carousel-inner > .item { position: relative; display: none; -webkit-transition: 0.6s ease-in-out left; -moz-transition: 0.6s ease-in-out left; -o-transition: 0.6s ease-in-out left; transition: 0.6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; line-height: 1; } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 40%; left: 15px; width: 40px; height: 40px; margin-top: -20px; font-size: 60px; font-weight: 100; line-height: 30px; color: #ffffff; text-align: center; background: #222222; border: 3px solid #ffffff; -webkit-border-radius: 23px; -moz-border-radius: 23px; border-radius: 23px; opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.right { right: 15px; left: auto; } .carousel-control:hover, .carousel-control:focus { color: #ffffff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-indicators { position: absolute; top: 15px; right: 15px; z-index: 5; margin: 0; list-style: none; } .carousel-indicators li { display: block; float: left; width: 10px; height: 10px; margin-left: 5px; text-indent: -999px; background-color: #ccc; background-color: rgba(255, 255, 255, 0.25); border-radius: 5px; } .carousel-indicators .active { background-color: #fff; } .carousel-caption { position: absolute; right: 0; bottom: 0; left: 0; padding: 15px; background: #333333; background: rgba(0, 0, 0, 0.75); } .carousel-caption h4, .carousel-caption p { line-height: 20px; color: #ffffff; } .carousel-caption h4 { margin: 0 0 5px; } .carousel-caption p { margin-bottom: 0; } .hero-unit { padding: 60px; margin-bottom: 30px; font-size: 18px; font-weight: 200; line-height: 30px; color: inherit; background-color: #eeeeee; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .hero-unit h1 { margin-bottom: 0; font-size: 60px; line-height: 1; letter-spacing: -1px; color: inherit; } .hero-unit li { line-height: 30px; } .pull-right { float: right; } .pull-left { float: left; } .hide { display: none; } .show { display: block; } .invisible { visibility: hidden; } .affix { position: fixed; } h1 { color: #ff0000; } h2 { color: #ffcc00; } h3 { color: #ffff00; } h4 { color: #66ff00; } h5 { color: #0000ff; } h6 { color: #ff00ff; } .page-header { border-bottom: 1px solid #B6B2A3; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), 0 1px 0 #eae7d8; -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), 0 1px 0 #eae7d8; box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2), 0 1px 0 #eae7d8; } a { text-decoration: underline; } a:hover { text-decoration: underline !important; } blink { -webkit-animation: blink 1s linear infinite; -moz-animation: blink 1s linear infinite; -ms-animation: blink 1s linear infinite; -o-animation: blink 1s linear infinite; animation: blink 1s linear infinite; } body { -webkit-font-smoothing: none; background: #0000ff url('../images/geo/microfab.gif') top left; } .navbar { border-bottom: 1px solid #fff; -webkit-box-shadow: 0 2px 0 #D4D0C8, 0 3px 0 #808080, 0 4px 0 #404040; -moz-box-shadow: 0 2px 0 #D4D0C8, 0 3px 0 #808080, 0 4px 0 #404040; box-shadow: 0 2px 0 #D4D0C8, 0 3px 0 #808080, 0 4px 0 #404040; } .navbar-inner { background: #000000 url('../images/geo/stars.gif') top left; border-bottom: 1px solid #D4D0C8; } .btn { border: 6px ridge #bbbbbb; } .btn-primary { background: #000000 url('../images/geo/rainbow.gif') top left; } legend { font-weight: bold; color: yellow; } .control-group.error input { background: #000000 url('../images/geo/flames.gif') 0 -30px repeat-x; } .dropdown-menu { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .label-important, .badge-important { background-color: red; } .label-important[href], .badge-important[href] { background-color: red; } .label-warning, .badge-warning { color: black; background-color: yellow; } .label-warning[href], .badge-warning[href] { color: black; background-color: yellow; } .label-success, .badge-success { background-color: green; } .label-success[href], .badge-success[href] { background-color: green; } .label-info, .badge-info { background-color: #00ffff; } .label-info[href], .badge-info[href] { background-color: #00ffff; } .label-inverse, .badge-inverse { background-color: black; } .label-inverse[href], .badge-inverse[href] { background-color: black; } .hero-unit, .well { background: #000000 url('../images/geo/stars.gif') top left; } .breadcrumb { color: white; background: black; } .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { background: black; border-color: black; } .progress .bar { background: #c0c0c0 url('../images/geo/progress.gif') top left repeat-x !important; border: 1px solid #fff; border-top: 1px solid #808080; border-left: 1px solid #808080; } @-webkit-keyframes blink { 0% { opacity: 0; } 40% { opacity: 0; } 41% { opacity: 1; } 99% { opacity: 1; } 100% { opacity: 0; } } @-moz-keyframes blink { 0% { opacity: 0; } 40% { opacity: 0; } 41% { opacity: 1; } 99% { opacity: 1; } 100% { opacity: 0; } } @-ms-keyframes blink { 0% { opacity: 0; } 40% { opacity: 0; } 41% { opacity: 1; } 99% { opacity: 1; } 100% { opacity: 0; } } @-o-keyframes blink { 0% { opacity: 0; } 40% { opacity: 0; } 41% { opacity: 1; } 99% { opacity: 1; } 100% { opacity: 0; } } @keyframes blink { 0% { opacity: 0; } 40% { opacity: 0; } 41% { opacity: 1; } 99% { opacity: 1; } 100% { opacity: 0; } } .pull-right { float: right; } .pull-left { float: left; } .hide { display: none; } .show { display: block; } .invisible { visibility: hidden; } .affix { position: fixed; } ================================================ FILE: css/styles.css ================================================ @import url(https://fonts.googleapis.com/css?family=Abel|Source+Code+Pro&display=swap); body, html { height: 100%; overflow: hidden; } body { background-color: #2c2c2c; font-family: "Abel"; margin: 0; } .terminal { height: 100%; padding: 24px; } #terminal { height: 100%; } :root { --brand-bg-color: #2c2c2c; --brand-txt-color: #fff; --brand-link-color: #fff; } ================================================ FILE: index.html ================================================ Root Ventures

Root Ventures | Seeding bold engineers

Seed stage venture capital firm investing in deep tech. San Francisco, CA

================================================ FILE: js/addon-fit.js ================================================ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FitAddon=t():e.FitAddon=t()}(self,()=>(()=>{"use strict";var e,t={};return e=t,Object.defineProperty(e,"__esModule",{value:!0}),e.FitAddon=void 0,e.FitAddon=class{activate(e){this._terminal=e}dispose(){}fit(){const e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;const t=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal)return;if(!this._terminal.element||!this._terminal.element.parentElement)return;const e=this._terminal._core,t=e._renderService.dimensions;if(0===t.css.cell.width||0===t.css.cell.height)return;const r=0===this._terminal.options.scrollback?0:e.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),o=parseInt(i.getPropertyValue("height")),s=Math.max(0,parseInt(i.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),l=o-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),a=s-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-r;return{cols:Math.max(2,Math.floor(a/t.css.cell.width)),rows:Math.max(1,Math.floor(l/t.css.cell.height))}}},t})()); ================================================ FILE: js/addon-web-links.js ================================================ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.WebLinksAddon=t():e.WebLinksAddon=t()}(self,()=>(()=>{"use strict";var e={6:(e,t)=>{function n(e){try{const t=new URL(e),n=t.password&&t.username?`${t.protocol}//${t.username}:${t.password}@${t.host}`:t.username?`${t.protocol}//${t.username}@${t.host}`:`${t.protocol}//${t.host}`;return e.toLocaleLowerCase().startsWith(n.toLocaleLowerCase())}catch(e){return!1}}Object.defineProperty(t,"__esModule",{value:!0}),t.LinkComputer=t.WebLinkProvider=void 0,t.WebLinkProvider=class{constructor(e,t,n,o={}){this._terminal=e,this._regex=t,this._handler=n,this._options=o}provideLinks(e,t){const n=o.computeLink(e,this._regex,this._terminal,this._handler);t(this._addCallbacks(n))}_addCallbacks(e){return e.map(e=>(e.leave=this._options.leave,e.hover=(t,n)=>{if(this._options.hover){const{range:o}=e;this._options.hover(t,n,o)}},e))}};class o{static computeLink(e,t,r,i){const s=new RegExp(t.source,(t.flags||"")+"g"),[a,c]=o._getWindowedLineStrings(e-1,r),l=a.join("");let d;const p=[];for(;d=s.exec(l);){const e=d[0];if(!n(e))continue;const[t,s]=o._mapStrIdx(r,c,0,d.index),[a,l]=o._mapStrIdx(r,t,s,e.length);if(-1===t||-1===s||-1===a||-1===l)continue;const h={start:{x:s+1,y:t+1},end:{x:l,y:a+1}};p.push({range:h,text:e,activate:i})}return p}static _getWindowedLineStrings(e,t){let n,o=e,r=e,i=0,s="";const a=[];if(n=t.buffer.active.getLine(e)){const e=n.translateToString(!0);if(n.isWrapped&&" "!==e[0]){for(i=0;(n=t.buffer.active.getLine(--o))&&i<2048&&(s=n.translateToString(!0),i+=s.length,a.push(s),n.isWrapped&&-1===s.indexOf(" ")););a.reverse()}for(a.push(e),i=0;(n=t.buffer.active.getLine(++r))&&n.isWrapped&&i<2048&&(s=n.translateToString(!0),i+=s.length,a.push(s),-1===s.indexOf(" ")););}return[a,o]}static _mapStrIdx(e,t,n,o){const r=e.buffer.active,i=r.getNullCell();let s=n;for(;o;){const e=r.getLine(t);if(!e)return[-1,-1];for(let n=s;n{var e=o;Object.defineProperty(e,"__esModule",{value:!0}),e.WebLinksAddon=void 0;const t=n(6),r=/(https?|HTTPS?):[/]{2}[^\s"'!*(){}|\\\^<>`]*[^\s"':,.!?{}|\\\^~\[\]`()<>]/;function i(e,t){const n=window.open();if(n){try{n.opener=null}catch{}n.location.href=t}else console.warn("Opening link blocked as opener could not be cleared")}e.WebLinksAddon=class{constructor(e=i,t={}){this._handler=e,this._options=t}activate(e){this._terminal=e;const n=this._options,o=n.urlRegex||r;this._linkProvider=this._terminal.registerLinkProvider(new t.WebLinkProvider(this._terminal,o,this._handler,n))}dispose(){this._linkProvider?.dispose()}}})(),o})()); ================================================ FILE: js/app.bundle.js ================================================ function runRootTerminal(e){if(e._initialized)return;e.init(),e._initialized=!0,e.locked=!1,e.prompt(),e.runDeepLink();let t=!1;window.addEventListener("resize",()=>{t||(t=!0,window.requestAnimationFrame(()=>{t=!1,e.resizeListener()}))},{passive:!0}),e.onData(t=>{if(e._initialized&&!e.locked&&!e.busy){switch(t){case"\r":e.tabIndex=0,e.tabOptions=[],e.tabBase="",e.executeCommandLine(e.currentLine);break;case"":e.write("".repeat(e.pos()));break;case"":e.pos()0){const t=e.currentLine.slice(0,e.pos()-1)+e.currentLine.slice(e.pos());e.setCurrentLine(t,!0)}break;case"":e.tabIndex=0,e.tabOptions=[],e.tabBase="";var r=[...e.history].reverse();e.historyCursor0?(e.historyCursor-=1,e.setCurrentLine(r[e.historyCursor],!1)):e.clearCurrentLine(!0);break;case"":e.pos()0&&e.write("");break;case"\t":const o=e.currentLine.split(" "),n=o[0],i=o.slice(1).join(" ");if(e.tabBase!==e.currentLine&&(e.tabIndex=0,e.tabOptions=[],e.tabBase=e.currentLine,1===o.length?e.tabOptions=Object.keys(commands).filter(e=>e.startsWith(n)).sort():["cat","tail","less","head","open","mv","cp","chown","chmod","ls"].includes(n)?e.tabOptions=_filesHere().filter(e=>e.startsWith(i)).sort():["whois","finger","groups"].includes(n)?e.tabOptions=Object.keys(team).filter(e=>e.startsWith(i)).sort():["man","woman","tldr"].includes(n)?e.tabOptions=Object.keys(portfolio).filter(e=>e.startsWith(i)).sort():["cd"].includes(n)&&(e.tabOptions=_filesHere().filter(t=>t.startsWith(i)&&!_DIRS[e.cwd].includes(t)).sort())),0===e.tabOptions.length);else if(1===e.tabOptions.length)1===o.length?(e.tabOptions[0],e.setCurrentLine(`${e.tabOptions[0]} `)):e.setCurrentLine(`${n} ${e.tabOptions[0]}`),e.tabBase="",e.tabIndex=0,e.tabOptions=[];else if(0===e.tabIndex)e.writeln(`\r\n${e.tabOptions.join(" ")}`),e.prompt(),e.setCurrentLine(e.currentLine),e.tabIndex=1;else{const t=e.tabOptions[(e.tabIndex-1)%e.tabOptions.length];1===o.length?e.setCurrentLine(t):e.setCurrentLine(`${n} ${t}`),e.tabIndex++,e.tabBase=e.currentLine}break;default:if(e.tabIndex=0,e.tabOptions=[],e.tabBase="",1===t.length&&t.charCodeAt(0)>=32){const r=e.pos(),o=e.currentLine.slice(r);e.currentLine=e.currentLine.slice(0,r)+t+o,e.write(t),o.length>0&&(e.write(o),e.write("".repeat(o.length)))}}e.scrollToBottom()}})}function colorText(e,t){return`${{command:"",hyperlink:"",user:"",prompt:"",bold:""}[t]||""}${e}`}const extend=e=>{e.VERSION=e.VERSION||3,e.currentLine="",e.user="guest",e.host="rootpc",e.cwd="~",e.sep=":",e._promptChar="$",e.history=[],e.historyCursor=-1,e.busy=!1,e.tabIndex=0,e.tabOptions=[],e.tabBase="",e.pos=()=>e._core.buffer.x-e._promptRawText().length-1,e._promptRawText=()=>`${e.user}${e.sep}${e.host} ${e.cwd} $`,e.deepLink=window.location.hash.replace("#","").split("-").join(" "),e.promptText=()=>e._promptRawText().replace(e.user,colorText(e.user,"user")).replace(e.sep,colorText(e.sep,"")).replace(e.host,colorText(e.host,"")).replace(e.cwd,colorText(e.cwd,"hyperlink")).replace(e._promptChar,colorText(e._promptChar,"prompt")),e.prompt=(t="\r\n",r=" ")=>{e.write(`${t}${e.promptText()}${r}`)},e.clearCurrentLine=(t=!1)=>{e.write("\r"),e.prompt(""," "),e.currentLine="",t&&(e.historyCursor=-1,e.scrollToBottom())},e.setCurrentLine=(t,r=!1)=>{const o=e.pos(),n=e.currentLine.length;e.clearCurrentLine(),e.currentLine=t,e.write(t),r&&e.write("".repeat(n-o))},e.stylePrint=(t,r=!0)=>{const o=t.matchAll(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,24}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g);let n=!0;for(const e of o)n=e[0].length<76,t=t.replace(e[0],colorText(e[0],"hyperlink"));n&&r&&(t=_wordWrap(t,Math.min(e.cols,76)));const i=Object.keys(commands);for(const e of i){const r=t.matchAll(`%${e}%`);for(const o of r)t=t.replace(o[0],colorText(e,"command"))}e.writeln(t)},e.printArt=t=>{if(e.cols>=40){const r=getArt(t);r?e.writeln(`\r\n${r}\r\n`):ensureASCIIArt(t)}},e.printLogoType=()=>{e.writeln(e.cols>=40?LOGO_TYPE:"[Root Ventures]\r\n")},e.openURL=(t,r=!0)=>{e.stylePrint(`Opening ${t}`),e._initialized&&(r?window.open(t,"_blank"):window.location.href=t)},e.displayURL=t=>{e.stylePrint(colorText(t,"hyperlink"))},e.timer=e=>new Promise(t=>setTimeout(t,e)),e.dottedPrint=async(t,r,o=!0)=>{e.write(t);for(let t=0;t{var o;r&&e.write(r),e.write("\r\n[");for(let r=0;r{await e.timer(r),e.write(t)},e.delayStylePrint=async(t,r,o)=>{await e.timer(r),e.stylePrint(t,o)},e.command=t=>{const r=t.split(/\s+/),o=r[0].toLowerCase(),n=r.slice(1,r.length),i=commands[o];if(void 0!==i)return i(n);e.stylePrint(`Command not found: ${o}. Try 'help' to get started.`)},e.parseCommandLine=e=>{const t=e.trim(),r=t?t.split(/\s+/):[""];return{line:t,cmd:(r[0]||"").toLowerCase(),args:r.slice(1)}},e.normalizeCommandForPreload=(e,t)=>{switch(e){case"man":case"woman":return{cmd:"tldr",args:t};case"tail":case"less":case"head":case"more":return{cmd:"cat",args:t};case"open":return t.length?"test"==t[0].split(".")[0]&&"htm"==t[0].split(".")[1]||"htm"==t[0].split(".")[1]||"the pod bay doors"==t.join(" ")?{cmd:e,args:t}:{cmd:"cat",args:t}:{cmd:e,args:t};default:return{cmd:e,args:t}}},e.preloadCommandAssets=async t=>{const r=e.parseCommandLine(t),o=e.normalizeCommandForPreload(r.cmd,r.args),n=[],i=getASCIIArtIdForCommand(o.cmd,o.args),s=getPreloadFileForCommand(o.cmd,o.args);i&&n.push(ensureASCIIArt(i)),s&&n.push(ensureFileLoaded(s)),n.length>0&&await Promise.all(n)},e.executeCommandLine=async(t,r={})=>{const o={addToHistory:!0,manageBusy:!0,promptAfter:!0,showLeadingNewline:!0,trackAnalytics:!0,...r},n=e.parseCommandLine(t);let i;try{o.manageBusy&&(e.busy=!0),await e.preloadCommandAssets(n.line),o.showLeadingNewline&&"upgrade"!=n.cmd&&e.writeln(""),n.line.length>0&&(o.addToHistory&&e.history.push(n.line),i=e.command(n.line),o.trackAnalytics&&(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"commandSent",command:n.cmd,args:n.args.join(" ")})))}catch(t){console.error("Command preparation failed",t),e.stylePrint("Command failed to load required assets. Please try again.")}finally{o.promptAfter&&1!=i&&"upgrade"!=n.cmd&&(e.prompt(),e.clearCurrentLine(!0)),o.manageBusy&&(e.busy=!1),e.scrollToBottom()}return i},e.resizeListener=()=>{e._initialized=!1,e.init(e.user,!0),"function"==typeof preloadASCIIArt&&window.scheduleIdleTask(()=>preloadASCIIArt(),1500),e.runDeepLink();for(const t of e.history)e.prompt("\r\n",` ${t}\r\n`),e.command(t);e.prompt(),e.scrollToBottom(),e._initialized=!0},e.init=(t="guest",r=!1)=>{window.fitAddon.fit(),e.reset(),e.printLogoType(),3==e.VERSION?(e.stylePrint(`\n${colorText("New version of Root Ventures detected.","user")}`),e.stylePrint(`Please upgrade your terminal with ${colorText("upgrade","command")}.`)):(e.stylePrint("Welcome to the Root Ventures terminal. Seeding bold engineers!"),e.stylePrint(`Type ${colorText("help","command")} to get started. Or type ${colorText("exit","command")} for web version.`,!1)),Object.keys(jobs).length>0&&e.stylePrint(`\r\nOpen jobs detected. Type ${colorText("jobs","command")} for more info.`,!1),e.user=t,r||(e.history=[]),e.focus()},e.runDeepLink=()=>{""!=e.deepLink&&e.executeCommandLine(e.deepLink,{addToHistory:!1,promptAfter:!1,showLeadingNewline:!1,trackAnalytics:!1}).catch(e=>{console.error("Deep link failed",e)})},e.collectInput=(t,r=!1)=>new Promise(o=>{e.locked=!0,e.write(`\r\n${t}${r?" (optional)":""}: `);let n="";const i=e.onData(t=>{switch(t){case"\r":e.write("\r\n"),i.dispose(),e.locked=!1,o(n.trim());break;case"":e.write("^C\r\n"),i.dispose(),e.locked=!1,o(null);break;case"":case"\b":n.length>0&&(n=n.slice(0,-1),e.write("\b \b"));break;case"":for(;n.length>0;)e.write("\b \b"),n=n.slice(0,-1);break;case"":case"":case"":case"":break;default:1===t.length&&t.charCodeAt(0)>=32&&t.charCodeAt(0)<127&&(n+=t,e.write(t))}})})};function _wordWrap(e,t){const r="\r\n";let o="";for(;e.length>t;){let n=!1;for(let i=t-1;i>=0;i--)if(_testWhite(e.charAt(i))){o+=[e.slice(0,i),r].join(""),e=e.slice(i+1),n=!0;break}n||(o+=[e.slice(0,t),r].join(""),e=e.slice(t))}return o+e}function _testWhite(e){return/^\s$/.test(e.charAt(0))}const LOGO_TYPE=" _____ \n| __ \\ _ \n| |__) |___ ___ | |_ \n| _ // _ \\ / _ \\| __| \n| | \\ | (_) | (_) | |_ \n|_| \\_\\___/ \\___/_\\__| \n__ __ _\n\\ \\ / /__ _ __ | |_ _ _ _ __ ___ ___ \n \\ \\/ / _ | '_ \\| __| | | | '__/ _ / __|\n \\ | __| | | | |_| |_| | | | __\\__ \\\n \\/ \\___|_| |_|\\__|\\__,_|_| \\___|___/\n\n".replaceAll("\n","\r\n");let asciiArtPreloadPromise=null,asciiArtLoadPromises={};function isASCIIArtLoaded(e){const t=document.getElementById(e);return!!t&&"true"===t.dataset.loaded}function _asciiArtScale(){return term.cols>=60?.5:1}function _getASCIIArtSpec(e){return"rootvc-square"===e?[e,1,_asciiArtScale(),"png",!1]:team[e]?[e,1,_asciiArtScale(),"png",!0]:portfolio[e]?[e,.5,1,"jpg",!1]:null}function getASCIIArtIdForCommand(e,t){const r=t[0];if("whois"===e&&term.cols>=40){if("root"===r)return"rootvc-square";if(team[r])return r}return"tldr"===e&&term.cols>=60&&portfolio[r]?r:null}function _queueASCIIArtWork(e,t=1e3){"function"==typeof window.scheduleIdleTask?window.scheduleIdleTask(e,t):window.setTimeout(e,t)}function preloadASCIIArt(){if(asciiArtPreloadPromise)return asciiArtPreloadPromise;const e=[_getASCIIArtSpec("rootvc-square"),...Object.keys(team).map(e=>_getASCIIArtSpec(e)),...Object.keys(portfolio).map(e=>_getASCIIArtSpec(e))].filter(Boolean);return asciiArtPreloadPromise=window.ensureAALibLoaded().then(()=>new Promise(t=>{let r=0;const o=()=>{const n=e.slice(r,r+2).map(e=>e[0]);r+=n.length,0!==n.length?Promise.all(n.map(e=>ensureASCIIArt(e))).finally(()=>{r{console.warn("Failed to preload ASCII art",e)}).finally(()=>{asciiArtPreloadPromise=null}),asciiArtPreloadPromise}function ensureASCIIArt(e){const t=_getASCIIArtSpec(e);return!t||isASCIIArtLoaded(e)?Promise.resolve():(asciiArtLoadPromises[e]||(asciiArtLoadPromises[e]=window.ensureAALibLoaded().then(()=>_loadArt(...t)).finally(()=>{delete asciiArtLoadPromises[e]})),asciiArtLoadPromises[e])}function _loadArt(e,t,r,o,n,i){const s=document.getElementById("aa-all"),a=Math.floor(term.cols*r),l=Math.floor(a/2*t);var c=`/images/${e}.${o}`,m=document.getElementById(e);return m||((m=document.createElement("div")).id=e,s.appendChild(m)),isASCIIArtLoaded(e)?Promise.resolve():(m.dataset.loaded="false",new Promise(t=>{if(term.cols>=40){const e=aalib.charset.SIMPLE_CHARSET+" ";var r=aalib.read.image.fromURL(c).map(aalib.aa({width:a,height:l}));n&&(r=r.map(aalib.filter.inverse())),r.map(aalib.render.html({el:m,charset:e})).subscribe(()=>{m.dataset.loaded="true",i&&i(),t()})}else m.innerText=`[ Photo: ${document.location.href}images/${e}.${o} ]`,m.dataset.loaded="true",i&&i(),t()}))}function getArt(e){const t=document.getElementById(e);return isASCIIArtLoaded(e)?t.innerText.replaceAll("\n","\n\r"):""}const help={"%help%":"list all commands (you're looking at it)","%whois%":"list all partners","%whois% [partner]":"learn about a partner","%whois% root":"learn about us","%tldr%":"list all portfolio companies","%tldr% [company_name]":"learn about a portfolio company","%email%":"reach out to us","%twitter%":"twitter accounts","%instagram%":"instagram account","%git%":"this repo","%github%":"all repos","%locate%":"physical address","%jobs%":"check out our job openings","%test%":"do not use","%upgrade%":"upgrade to the latest version of Root Ventures","%other%":"try your fav commands (e.g. %ls%, %groups%, %su%)"},portfolio={esper:{name:"Esper",url:"https://esper.io",description:"Esper is devops for devices, allowing teams to seamlessly build and manage enterprise hardware.",memo:null,demo:"https://esper.io/signup"},meroxa:{name:"Meroxa",url:"https://meroxa.com",description:"Meroxa is a platform for software engineers to build mature, scalable data engineering infrastructure with a single command.",memo:"https://github.com/rootvc/investment-memos/blob/main/meroxa.md",demo:"https://meroxa.com/#data-warehouse"},particle:{name:"Particle",url:"https://particle.io",description:"Particle is the largest professional IoT development platform.",demo:"https://docs.particle.io/"},daily:{name:"Daily",url:"https://daily.co",description:"Daily makes it easier for developers to add video to websites and apps.",demo:"https://docs.daily.co/docs/introduction-1"},hash:{name:"HASH",url:"https://hash.ai",description:"HASH is an open-source, self-building database that grows and maintains a typed graph of entities on your behalf.",demo:"https://app.hash.ai/"},superconductive:{name:"Superconductive",url:"https://superconductive.ai",description:"Superconductive is a SaaS platform for verifying and enforcing data integrity at every stage of the lifecycle of data in an organization.",demo:"https://docs.greatexpectations.io/en/latest/guides/tutorials/quick_start.html#tutorials-quick-start"},okteto:{name:"Okteto",url:"https://okteto.com",description:"Okteto is the best emphemeral environment for developers.",demo:"https://okteto.com/docs/getting-started/index.html"},privacy_dynamics:{name:"Privacy Dynamics",url:"https://privacydynamics.io",description:"Privacy Dynamics ensures your customers' data privacy without slowing down your team.",demo:"https://privacydynamics.io/demo/contact"},nautilus:{name:"Nautilus Labs",url:"https://nautiluslabs.com",description:"Nautilus Labs allows maritime fleets to optimize shipping routes and energy costs in real time."},ntopology:{name:"nTopology",url:"https://ntopology.com",description:"nTopology is the future of mechanical engineering software."},tortuga:{name:"Tortuga AgTech",url:"https://tortugaagtech.com",description:"Tortuga automates agriculture for high value produce."},instrumental:{name:"Instrumental",url:"https://instrumental.com",description:"Instrumental generates real time insights for mass manufacturing."},stellar:{name:"Stellar Pizza",url:"https://eatstellarpizza.com",description:"Stellar Pizza is building the future of automated food production."},versatile:{name:"Versatile",url:"https://versatile.ai",description:"Versatile is an onsite construction data provider for accelerating schedules."},dusty:{name:"Dusty Robotics",url:"https://dustyrobotics.com",description:"Dusty Robotics automates layout in complex construction projects."},thruwave:{name:"ThruWave",url:"https://thruwave.com",description:"Thruwave increases the efficiency and transparency of high volume logistics operations."},seismic:{name:"Seismic",url:"https://myseismic.com",description:"Seismic augments strength and safety for workers through soft robotics."},seam:{name:"Seam",url:"https://getseam.com",description:"Seam provides an API for managing building systems."},chargelab:{name:"ChargeLab",url:"https://chargelab.co",description:"ChargeLab builds API- and software-defined EV charging networks."},wildtype:{name:"Wildtype Foods",url:"https://wildtypefoods.com",description:"Wildtype creates organic, clean, high-quality, animal-free meat."},nordsense:{name:"Nordsense",url:"https://nordsense.com",description:"Nordsense optimizes pickup routes for waste management fleets."},trucklabs:{name:"TruckLabs",url:"https://trucklabs.com",description:"Trucklabs reduces fuel costs and increases profit margins for long haul trucking fleets."},sensable:{name:"Sensable",url:"https://getsensable.com",description:"Sensable generates real-time industrial engineering insights."},crux:{name:"Crux",url:"https://cruxocm.com",description:"Crux automates critical energy infrastructure."},iasql:{name:"IaSQL",url:"https://iasql.com",description:"IaSQL is the next evolution of infrastructure management, allowing you to manage your infra in a database instead of stateless config files."},mashgin:{name:"Mashgin",url:"https://mashgin.com",description:"Mashgin automates self-checkout."},creator:{name:"Creator",url:"https://creator.rest",description:"Creator builds fully autonomous hamburger robots."},apolloshield:{name:"ApolloShield",url:"https://apolloshield.com",description:"ApolloShield safeguards airspace from autonomous and remote piloted aircraft."},skycatch:{name:"Skycatch",url:"https://skycatch.com",description:"Skycatch provides high resolution 3D mapping and modeling of high-value infrastructure."},shaper:{name:"Shaper",url:"https://shapertools.com",description:"Shaper Tools makes the Origin, a handheld, auto-correcting CNC."},cape:{name:"Cape",url:"https://capenetworks.com",description:"Cape Networks allows IT professionals to monitor, text, and repair enterprise networks remotely."},righthook:{name:"Righthook",url:"https://righthook.io",description:"Righthook reduces the time and cost required to develop autonomous vehicles."},sixwheel:{name:"SixWheel",url:"https://sixwheel.com",description:"SixWheel brings autonomy and electrification to long haul trucking operations."},radical:{name:"Radical",url:"https://radicalsemiconductor.com",description:"Radical Semiconductor provides hardware security down to the individual IC."},zed:{name:"Zed",url:"https://zed.dev",description:"Zed is a fully-native desktop code editor focused on high performance, clean design, and real-time collaboration."},kayhan:{name:"Kayhan",url:"https://kayhan.space",description:"Kayhan’s spaceflight operations platform allows satellite operators to focus on their core mission."},allspice:{name:"AllSpice",url:"https://allspice.io",description:"Collaboration and testing platform for hardware teams."},quilter:{name:"Quilter",url:"https://quilter.ai",description:"Automated design tools for electrical engineers."},adept:{name:"Adept",url:"https://adept.ai",description:"Useful general intelligence."},aperture:{name:"Aperture Data",url:"https://aperturedata.io",description:"Aperture manage images and videos with a database purpose-built for data science and machine learning."},supertokens:{name:"SuperTokens",url:"https://supertokens.io",description:"SuperTokens is the best Open Source solution for user authentication."},fudge:{name:"Fudge",url:"https://fudge.ai",description:"Fudge is the best way to speed up your website to improve conversion rates and increase revenue."},kodra:{name:"Kodra",url:"https://kodra.ai",description:"Fast dataset curation for machine learning."},topologic:{name:"Topologic",url:"https://topologic.io",description:"Design and automation software for textile manufacturing."},ruby:{name:"Ruby Robotics",url:"https://ruby-robotics.com",description:"Robotics and AI to autonomously prepare, image, and assess tissue during biopsy procedures."},instance:{name:"Instance",url:"https://instance.bio",description:"Instance is the fastest way to synthesize DNA."},cady:{name:"CADY Solutions",url:"https://cadysolutions.com",description:"CADY automates the electrical schematic analysis process."},sublayer:{name:"Sublayer",url:"https://sublayer.com",description:"Sublayer is AI-assisted coding that works the way you do."},nullify:{name:"Nullify",url:"https://nullify.ai",description:"Nullify performs product security tasks alongside your developers."},trieve:{name:"Trieve",url:"https://trieve.ai",description:"Trieve provides infrastructure for building AI search into your applications."},breakpoint:{name:"Breakpoint AI",url:"https://setbreakpoint.com",description:"Breakpoint uses AI to detect failures in computer vision models and re-trains them to prevent future issues."},determinate:{name:"Determinate Systems",url:"https://determinate.systems",description:"Determinate provides enterprise-grade solutions for Nix package management."},genalpha:{name:"Gen Alpha",url:"https://www.generation-alpha-transistor.com",description:"Gen Alpha builds AI copilots for analog and mixed-signal chip design to streamline workflows."},hunch:{name:"Hunch",url:"https://hunchdata.com",description:"Hunch provides collaborative data exploration and visualization tools for non-technical users."},illoca:{name:"Illoca",url:"https://illoca.com",description:"Illoca accelerates commercial architecture workflows with generative AI for AEC software."},integrated:{name:"Integrated Biosciences",url:"https://integratebio.co",description:"Integrated uses optogenetics and ML to discover drugs for neurodegenerative and age-related diseases."},latent:{name:"Latent Technology",url:"https://latent-technology.com",description:"Latent helps animators and game developers create life-like 3D assets with AI-powered tools."},patterns:{name:"Patterns",url:"https://patterns.app",description:"Patterns provides tools and infrastructure for developing modern AI applications efficiently."},subtrace:{name:"Subtrace",url:"https://subtrace.dev",description:"Subtrace automatically tracks all HTTP requests coming in and going out of your production backend."},digichem:{name:"Digichem",url:"https://www.digichem.com/",description:"Digichem prototypes and manufactures custom molecules online."},loopwork:{name:"Loopwork",url:"https://loopwork.com/",description:"Loopwork is building the next generation of agents."},feather:{name:"Feather",url:"https://feather.solutions/",description:"Feather provides FEA that runs in the browser."},vibe_robotics:{name:"Vibe Robotics",url:"https://vbr.sh/",description:"Vibe Robotics, founded by Kai Backman and Luke Church, builds novel programming interfaces for robotics."}},team={avidan:{name:"Avidan Ross",title:"Managing Partner",description:"Avidan is the Founding Partner of Root Ventures. Previously, he designed industrial robotics for Food Network's kitchens and was CTO of CIM Group, where he focused on industrial investing, and worked as an embedded application developer at Excite@Home. Avidan has a BA in Computer Science from Columbia University.",linkedin:"https://www.linkedin.com/in/avidanross/",groups:"wheel investors engineers managingpartner handypersons tinkers agtech foodtech foodies coffeesnobs"},kane:{name:"Kane Hsieh",title:"Partner",description:"Before joining Root Ventures, Kane was founder and Head of Product at Brilliant Bicycle Co. He has also worked as an early-stage investor at RRE Ventures, a software engineer at Romotive, and a Project Manager at Microsoft. Kane has an AB in Computer Science from Harvard.",linkedin:"https://www.linkedin.com/in/kanehsieh/",groups:"wheel investors engineers partners tinkerers cad motorcyclists gearheads machinepix sportshooters gamers"},chrissy:{name:"Chrissy Meyer",title:"Partner",description:"Chrissy has spent the past decade developing and shipping hardware as an engineering manager at Apple and Square. She was a founding team member at Pearl Automation, a vehicle technology startup. Chrissy has an MS in Electrical Engineering from Stanford and a BSEE from Rose-Hulman.",linkedin:"https://www.linkedin.com/in/chrissymeyer/",groups:"wheel investors engineers partners electrical manufacturing ecad wearables healthtech gearheads automotive sportshooters"},lee:{name:"Lee Edwards",title:"Partner",description:"Lee was most recently CTO at Teespring. Previously, Lee was a mechanical engineer at iRobot, a software engineer at Pivotal Labs, Lead Engineer at SideTour (acquired by Groupon in 2013), and engineering manager for GrouponLive. He graduated from Olin College of Engineering with a degree in Systems Engineering.",linkedin:"https://www.linkedin.com/in/leeredwards/",groups:"wheel investors engineers partners software devtools data ai+ml gamers winesnobs"},zodi:{name:"Zodi Chalat",title:"Associate",description:"Zodi began his career as an engineer working on ML infrastructure at Netflix before moving into venture investing. He previously studied CS and comparative literature at Yale.",linkedin:"https://linkedin.com/in/zodi",groups:"wheel investors engineers ai+ml simulation terraforming maine"},ben:{name:"Ben Lovell",title:"Head of Operations",description:"Ben worked at a16z, Menlo Ventures, and FT Partners to build operational automation and data pipelines. He also cofounded an adtech startup for rideshare companies. Ben graduated with a BA from Stanford University.",linkedin:"https://www.linkedin.com/in/lovellb/",groups:"wheel operations photography ironman racecars canyoneering"},laelah:{name:"Laelah Reino",title:"Operations Manager",description:"Laelah has spent over 15 years in marketing for films, consumer products, and subscription-based services. Laelah Reino has a BA in Business Administration with a Marketing concentration from Drexel University.",linkedin:"https://www.linkedin.com/in/laelah-reino-78b6a51/",groups:"wheel admin operations miracleworkers gamers"}},whoisRoot="Root Ventures is a San Francisco-based deep tech seed fund. As engineers ourselves, we specialize in leading initial funding for founders tackling new technical opportunities. Our initial investments typically range from $3-5M. With a selective few new deals a year and 2/3 of our funds in reserve, we are committed to being a long-term partner. Try %whois% and one of avidan, kane, chrissy, lee, ben, zodi, or laelah to learn more about our team.",timeUnit=1e3;let killed=!1;function SpawnRickRollPointers(){function e(e,t){let r=e.toString();for(;r.length=90?39:24;for(let r=0;r<=t;r++)term.stylePrint(`${colorText(`vsabnBRXofjub${e(r,2)}`,"command")}`,!1)}const commands={help:function(){const e=Math.max(...Object.keys(help).map(e=>e.length));Object.entries(help).forEach(function(t){const r=t[0],o=t[1];if(term.cols>=80){const t=e-r.length+2,n=" ".repeat(t);term.stylePrint(`${r}${n}${o}`)}else"help"!=r&&term.writeln(""),term.stylePrint(r),term.stylePrint(o)})},whois:function(e){const t=e[0],r=Object.keys(team);if(t)if("root"==t){const e=whoisRoot;term.printArt("rootvc-square"),term.stylePrint(e)}else if(Object.keys(team).includes(t)){const e=team[t];term.printArt(t),term.stylePrint(`\r\n${e.name}, ${e.title} - ${t}@root.vc`),term.stylePrint(`${e.linkedin}\r\n`),term.stylePrint(e.description)}else{term.stylePrint(`User ${t||""} not found. Try:\r\n`),term.stylePrint("%whois% root");for(const e of r)term.stylePrint(`%whois% ${e}`)}else{term.stylePrint("%whois%: Learn about the firm, or a partner - usage:\r\n"),term.stylePrint("%whois% root");for(const e of r)term.stylePrint(`%whois% ${e}`)}},tldr:function(e){const t=e[0]||"";if(t)if(portfolio[t]){const e=portfolio[t];term.cols>=60?term.printArt(t):term.writeln(""),term.stylePrint(e.name),term.stylePrint(e.url),e.memo&&term.stylePrint(`Investment Memo: ${e.memo}`),term.stylePrint(""),term.stylePrint(e.description),e.demo&&term.stylePrint(`Try it with command: %${t}%`)}else term.stylePrint(`Portfolio company ${t} not found. Should we talk to them? Email us: hello@root.vc`);else{const e=Object.keys(portfolio);term.stylePrint("%tldr%: Learn about a portfolio company - usage:\r\n");for(const t of e.sort()){const r=portfolio[t],o=t.length>10?"\t":"\t\t",n=term.cols>=76?o:"\r\n";term.stylePrint(`%tldr% ${t}${n}${r.url}`),term.cols<76&&t!=e[e.length-1]&&term.writeln("")}}},git:function(){term.displayURL("https://github.com/rootvc/cli-website")},agm:function(){term.openURL("http://annualmeeting.root.vc")},github:function(){term.displayURL("https://github.com/rootvc")},twitter:function(){term.displayURL("https://twitter.com/rootvc"),term.displayURL("https://twitter.com/machinepix")},instagram:function(){term.displayURL("https://instagram.com/machinepix/")},pine:function(){term.openURL("mailto:hello@root.vc")},other:function(){term.stylePrint("Yeah, I didn't literally mean %other%. I mean try some Linux commands")},echo:function(e){const t=e.join(" ");term.stylePrint(t)},say:function(e){const t=e.join(" ");term.stylePrint(`(Robot voice): ${t}`)},pwd:function(){term.stylePrint("/"+term.cwd.replaceAll("~",`home/${term.user}`))},ls:function(){term.stylePrint(_filesHere().join(" "))},cd:function(e){let t=e[0]||"~";"/"!==t&&(t=t.replace(/\/$/,""));const r=Object.keys(team),o=t.match(/^\.\.\/home\/(.+)$/);if(o)return void("~"===term.cwd||"bin"===term.cwd?term.command(`cd ${o[1]}`):term.stylePrint(`No such directory: ${t}`));const n=t.match(/^\/home\/(.+)$/);if(n){const e=n[1];return void(r.includes(e)?term.stylePrint("You do not have permission to access this directory"):term.stylePrint(`No such directory: ${t}`))}if(r.includes(t))term.stylePrint("You do not have permission to access this directory");else switch(t){case"~":term.cwd="~";break;case"..":"~"===term.cwd?term.command("cd /home"):"home"!==term.cwd&&"bin"!==term.cwd||term.command("cd /");break;case"../..":case"../../..":case"../../../..":case"/":term.cwd="/";break;case"home":"/"===term.cwd?term.command("cd /home"):term.stylePrint("You do not have permission to access this directory");break;case"/home":term.cwd="home";break;case"guest":case"root":"home"===term.cwd?term.user===t?term.command("cd ~"):term.stylePrint("You do not have permission to access this directory"):term.stylePrint(`No such directory: ${t}`);break;case"/bin":term.cwd="bin";break;case"bin":"/"===term.cwd?term.cwd="bin":term.stylePrint(`No such directory: ${t}`);break;case".":break;default:term.stylePrint(`No such directory: ${t}`)}},zsh:function(){term.init(term.user)},cat:function(e){const t=e[0];_filesHere().includes(t)?term.writeln(getFileContents(t)):term.stylePrint(`No such file: ${t}`),"id_rsa"==t&&SpawnRickRollPointers()},grep:function(e){const t=e[0],r=e[1];if("id_rsa"==r&&term.openURL("https://i.imgur.com/Q2Unw.gif"),t&&r)if(_filesHere().includes(r)){let e=getFileContents(r);const o=e.matchAll(t);for(const t of o)e=e.replaceAll(t[0],colorText(t[0],"files"));term.writeln(e)}else term.stylePrint(`No such file or directory: ${r}`);else term.stylePrint("usage: %grep% [pattern] [filename]")},open:function(e){e.length?"test"==e[0].split(".")[0]&&"htm"==e[0].split(".")[1]?term.openURL("https://i.imgur.com/Q2Unw.gif"):"htm"==e[0].split(".")[1]?term.openURL(`./${e[0]}`,!1):"the pod bay doors"==e.join(" ")?term.stylePrint("I'm sorry Dave, I'm afraid I can't do that."):term.command(`cat ${e.join(" ")}`):(term.stylePrint("%open%: open a file - usage:\r\n"),term.stylePrint("%open% test.htm"))},find:function(e){const t=e[0];Object.keys(_FILES).includes(t)?term.stylePrint(_FULL_PATHS[t]):term.stylePrint(`%find%: ${t}: No such file or directory`)},finger:function(e){const t=e[0];"guest"===t?(term.stylePrint("Login: guest Name: Guest"),term.stylePrint("Directory: /home/guest Shell: /bin/zsh")):"root"===t?(term.stylePrint("Login: root Name: That's Us!"),term.stylePrint("Directory: /home/root Shell: /bin/zsh")):team[t]?(term.stylePrint(`Login: ${t} Name: ${team[t].name}`),term.stylePrint(`Directory: /home/${t} Shell: /bin/zsh`)):term.stylePrint(t?`%finger%: ${t}: no such user`:"usage: %finger% [user]")},groups:function(e){const t=e[0],r={guest:"guest lps founders engineers investors",root:"wheel investors engineers deep tech firms"};void 0!==r[t]?term.stylePrint(r[t]):team[t]?term.stylePrint(team[t].groups):term.stylePrint(t?`%groups%: ${t}: no such user`:"usage: %groups% [user]")},whoami:function(){term.stylePrint(term.user)},passwd:function(){term.stylePrint("Wow. Maybe don't enter your password into a sketchy web-based term.command prompt?")},sudo:function(e){"root"==term.user?term.command(e.join(" ")):term.stylePrint(`${colorText(term.user,"user")} is not in the sudoers file. This incident will be reported`)},su:function(e){const t=e[0]||"root";"root"==t||"guest"==t?(term.user=t,term.command("cd ~")):term.stylePrint("su: Sorry")},chown:function(){term.stylePrint("You do not have permission to %chown%")},chmod:function(){term.stylePrint("You do not have permission to %chmod%")},mv:function(e){const t=e[0];_filesHere().includes(t)?term.stylePrint(`You do not have permission to move file ${t}`):term.stylePrint(`%mv%: ${t}: No such file or directory`)},cp:function(e){const t=e[0];_filesHere().includes(t)?term.stylePrint(`You do not have permission to copy file ${t}`):term.stylePrint(`%cp%: ${t}: No such file or directory`)},touch:function(){term.stylePrint("You can't %touch% this")},ps:function(){term.stylePrint("PID TTY TIME CMD"),term.stylePrint("424 ttys00 0:00.33 %-zsh%"),term.stylePrint("158 ttys01 0:09.70 %/bin/npm start%"),term.stylePrint("767 ttys02 0:00.02 %/bin/sh%"),killed||term.stylePrint("337 ttys03 0:13.37 %/bin/cgminer -o pwn.d%")},kill:function(e){e&&337==e.slice(-1)?(killed=!0,term.stylePrint("Root Ventures crypto miner disabled.")):term.stylePrint("You can't kill me!")},locate:function(){term.stylePrint("Root Ventures"),term.stylePrint("2670 Harrison St"),term.stylePrint("San Francisco, CA 94110")},history:function(){term.history.forEach((e,t)=>{term.stylePrint(`${1e3+t} ${e}`)})},uname:function(e){switch(e[0]){case"-a":term.stylePrint("RootPC rootpc 0.0.1 RootPC Kernel Version 0.0.1 root:xnu-31415.926.5~3/RELEASE_X86_64 x86_64");break;case"-mrs":term.stylePrint("RootPC 0.0.1 x86_64");break;default:term.stylePrint("RootPC")}},ping:function(){term.stylePrint("pong")},exit:function(){term.command("open welcome.htm")},clear:function(){term.init()},gzip:function(){term.stylePrint("What are you going to do with a zip file on a fake terminal, seriously?")},free:function(){term.stylePrint("Honestly, our memory isn't what it used to be.")},rm:function(){term.stylePrint("I'm sorry Dave, I'm afraid I can't do that.")},mkdir:function(){term.stylePrint("Come on, don't mess with our immaculate file system.")},alias:function(){term.stylePrint("Just call me HAL.")},df:function(){term.stylePrint("Nice try. Just get a Dropbox.")},emacs:function(){term.stylePrint("%emacs% not installed. try: %vi%")},vim:function(){term.stylePrint("%vim% not installed. try: %emacs%")},vi:function(){term.stylePrint("%vi% not installed. try: %emacs%")},pico:function(){term.stylePrint("%pico% not installed. try: %vi% or %emacs%")},nano:function(){term.stylePrint("%nano% not installed. try: %vi% or %emacs%")},curl:function(e){term.stylePrint(`Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource ${e[0]}. Use a real terminal.`)},scp:function(e){term.stylePrint(`████████████ Request Blocked: The ███████████ Policy disallows reading the ██████ resource ${e[0]}.`)},zed:function(){term.stylePrint("Coming soon! ;)")},eval:function(args){term.stylePrint("please instead build a webstore with macros. in the meantime, the result is: "+eval(args.join(" ")))},test:function(){SpawnRickRollPointers(),"function"==typeof window.ensureRickRollLoaded&&window.ensureRickRollLoaded().then(()=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{"function"==typeof RickRoll&&RickRoll()})})})},upgrade:async function(e){term.VERSION=4,term.init(),term.locked=!0,term.write(`\r\n${colorText("==>","hyperlink")} Downloading https://ghcr.io/v2/homebrew/core/rootvc/manifests/4.0.0`),await term.progressBar(4*timeUnit),term.write(`\r\n${colorText("==>","hyperlink")} Downloading https://ghcr.io/v2/homebrew/core/go/blobs/sha256:51869c798355307b59992918e9a595c53072d7a29458dbe5b8d105b63d3dd1c0`),await term.progressBar(2*timeUnit),term.write(`\r\n${colorText("==>","hyperlink")} Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:51869c798355307b59992918e9a595c53072d7a29458dbe5b8d105b6`),await term.progressBar(1*timeUnit),term.write(`\r\n${colorText("==>","hyperlink")} npm install left-pad@latest`),await term.progressBar(.5*timeUnit),await term.delayStylePrint("\r\n",1*timeUnit),await term.dottedPrint("Calculating new fund size",3),await term.delayPrint(`Updated fund size: ${colorText("$190M","prompt")}\r\n`,1*timeUnit),await term.delayPrint(`Updated typical check size: ${colorText("up to $5M","prompt")}\r\n`,1*timeUnit),await term.delayPrint(`Found mission: ${colorText("Seeding bold engineers.","user")}\r\n`,1*timeUnit),await term.delayPrint(`Thesis (no update): ${colorText("Investing at the earliest stages of technical founders taking engineering risk.","user")}\r\n`,1*timeUnit),await term.delayStylePrint(`\r\n${colorText("You are now running Root Ventures version 4.0.","hyperlink")}\r\n`,1*timeUnit),await term.delayStylePrint(`To learn more about this release, RTFM at: ${colorText("https://bit.ly/rvfund4","hyperlink")}\r\n`,.5*timeUnit),await term.delayStylePrint(`or remote into our coffee grinder at: ${colorText("https://rootventures.coffee","hyperlink")}\r\n`,.5*timeUnit),await term.delayPrint("Note that VERSION 4.0 is an unstable build of the terminal.\r\n",1*timeUnit),await term.delayPrint("Please report any bugs you find.\r\n",1*timeUnit),term.stylePrint(`\r\nType ${colorText("help","command")} to get started. Or type ${colorText("exit","command")} for web version.`,!1),term.prompt(),term.clearCurrentLine(),term.locked=!1},jobs:function(){const e=Object.keys(jobs);0===e.length?term.stylePrint("No jobs currently found. Check back later."):(term.stylePrint("Open positions:\r\n"),e.forEach(e=>{const t=jobs[e][0];term.stylePrint(`[${e}] ${t}`)}),term.stylePrint("\r\nUse %fg% [job_id] to view details, or %apply% [job_id] to apply."))},bg:function(e){term.stylePrint(`Sorry. If you want to background one of these jobs, you'll need to help us fill it. Try %fg% ${e} instead.`)},fg:function(e){const t=jobs[e];t?(t.map(e=>term.stylePrint(e)),term.stylePrint(`\r\n%apply% ${e} to apply!`)):term.stylePrint(`job id ${e} not found.`)},apply:function(e){if(1==e||e.length>0&&1==e[0])return term.locked=!0,(async()=>{const e=()=>{term.stylePrint("\r\nApplication cancelled."),term.prompt(),term.clearCurrentLine(!0),term.locked=!1};term.stylePrint("Great! Let's get your application started. (Press Ctrl+C to cancel at any time)\r\n");const t=await term.collectInput("What's your name?");if(!t)return void e();const r=await term.collectInput("Email address");if(!r)return void e();const o=await term.collectInput("LinkedIn profile URL",!0);if(null===o)return void e();const n=await term.collectInput("GitHub username",!0);if(null===n)return void e();const i=await term.collectInput("Why Root? What makes you a great fit?",!0);if(null!==i){term.stylePrint("\r\nSubmitting application...");try{const e=await fetch("/.netlify/functions/submit-application",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,email:r,linkedin:o||void 0,github:n||void 0,notes:i||void 0,position:"Venture Capital Associate"})}),s=await e.json();if(!e.ok)throw new Error(s.error||"Submission failed");term.stylePrint(`\r\n${colorText("✓","prompt")} Application submitted successfully!`),term.stylePrint("\r\nThanks for applying! We'll review your application and get back to you soon."),term.stylePrint(`\r\nIn the meantime, check out our portfolio with ${colorText("tldr","command")} or learn more about the team with ${colorText("whois","command")}.`)}catch(e){term.stylePrint(`\r\n${colorText("✗","user")} Error submitting application: ${e.message}`),term.stylePrint("\r\nPlease try again or email us directly at hello@root.vc")}term.prompt(),term.clearCurrentLine(!0),term.locked=!1}else e()})(),1;e&&""!=e&&0!==e.length?term.stylePrint(`Job id ${e[0]} not found. Use %jobs% to list all current jobs.`):term.stylePrint("Please provide a job id. Use %jobs% to list all current jobs.")}};for(const[e,t]of Object.entries(portfolio))t.demo&&(commands[e]=()=>term.displayURL(t.demo));function _filesHere(){return _DIRS[term.cwd].filter(e=>"README.md"!=e||"root"==term.user)}const _aliases={tail:"cat",less:"cat",head:"cat",more:"cat",ftp:"curl",ssh:"curl",sftp:"curl",man:"tldr",woman:"tldr",quit:"exit",stop:"exit",killall:"kill",top:"ps",fdisk:"rm",email:"pine",insta:"instagram",ge:"great_expectations",great_expectations:"superconductive",privacy:"privacy_dynamics"};for(const[e,t]of Object.entries(_aliases))commands[e]=e=>term.command([t,...e].join(" ").trim());const _LOCAL_FILES={id_rsa:"Nice try!"},_REMOTE_FILES={"README.md":"https://raw.githubusercontent.com/rootvc/cli-website/main/README.md","welcome.htm":"https://raw.githubusercontent.com/rootvc/cli-website/main/welcome.htm"},_FILES={..._LOCAL_FILES,..._REMOTE_FILES},_DIRS={"~":["id_rsa","welcome.htm","README.md"],bin:["zsh"],home:Object.keys(team).concat("guest","root").sort(),"/":["bin","home"]};let _FULL_PATHS={},_LOADING_FILES={};for(const[e,t]of Object.entries(_DIRS))for(const r of t)switch(e){case"~":_FULL_PATHS[r]=`${e}/${r}`;break;case"/":_FULL_PATHS[r]=`/${r}`;break;default:_FULL_PATHS[r]=`/${e}/${r}`}function preloadFiles(){for(const e of Object.keys(_REMOTE_FILES))_loadFile(e);for(const[e,t]of Object.entries(_LOCAL_FILES))_insertFileToDOM(e,t)}function _loadFile(e){return document.getElementById(e)?Promise.resolve():(_LOADING_FILES[e]||(_LOADING_FILES[e]=fetch(_REMOTE_FILES[e]).then(e=>e.text()).then(t=>_insertFileToDOM(e,t)).finally(()=>{delete _LOADING_FILES[e]})),_LOADING_FILES[e])}function ensureFileLoaded(e){return _FILES[e]?document.getElementById(e)?Promise.resolve():_REMOTE_FILES[e]?_loadFile(e):(_LOCAL_FILES[e]&&_insertFileToDOM(e,_LOCAL_FILES[e]),Promise.resolve()):Promise.resolve()}function getPreloadFileForCommand(e,t){const r=t[0];return r&&["cat","grep"].includes(e)&&_REMOTE_FILES[r]?r:null}function _insertFileToDOM(e,t){const r=document.getElementById("files-all");let o=document.getElementById(e);return o||(o=document.createElement("div"),o.id=e,r.appendChild(o)),o.innerText=t,t}function getFileContents(e){const t=document.getElementById(e);return t?t.innerHTML.replaceAll("
","\r\n").replaceAll(">",">").replaceAll("<","<"):_REMOTE_FILES[e]?(_loadFile(e),`Loading ${e}. Try again in a moment.`):`File not found: ${e}`}const jobs={1:["Venture Capital Associate","","Root Ventures is looking for a technical associate to join our team in San Francisco.","","We're a deep tech seed fund that invests in bold engineers building the future.","As an associate, you'll work directly with partners to source deals, conduct","technical diligence, and support portfolio companies.","","What we're looking for:"," • Strong technical background (CS degree, engineering experience, or equivalent)"," • Genuine curiosity about emerging technologies and startups"," • Excellent communication skills - you can explain complex tech simply"," • Hustle and resourcefulness - you figure things out"," • Passion for working with technical founders","","Bonus points:"," • You've built side projects or contributed to open source"," • You're active in technical communities"," • You have startup experience","","This is a rare opportunity to learn venture capital from experienced operators","and work with some of the most innovative technical founders in the world."]};!function(){const e={};function t(t){return e[t]||(e[t]=new Promise((e,r)=>{const o=document.createElement("script");o.src=t,o.async=!0,o.onload=e,o.onerror=r,document.head.appendChild(o)})),e[t]}window.scheduleIdleTask=(e,t=1e3)=>{"requestIdleCallback"in window?window.requestIdleCallback(()=>e(),{timeout:t}):window.setTimeout(e,t)},window.ensureAALibLoaded=()=>t("js/aalib.js"),window.ensureRickRollLoaded=()=>t("js/rickroll.min.js");const r=document.getElementById("terminal"),o=new Terminal({cursorBlink:!0}),n=new FitAddon.FitAddon,i=new WebLinksAddon.WebLinksAddon;window.term=o,window.fitAddon=n,o.open(r),o.loadAddon(n),o.loadAddon(i),extend(o),window.deepLinkAssetPromise=Promise.resolve(),o.deepLink&&(window.deepLinkAssetPromise=o.preloadCommandAssets(o.deepLink).catch(e=>{console.warn("Failed to preload deep link assets",e)})),runRootTerminal(o),window.scheduleIdleTask(()=>{preloadASCIIArt(),preloadFiles()},1500)}(); ================================================ FILE: js/ascii-art.js ================================================ const LOGO_TYPE = ` _____ | __ \\ _ | |__) |___ ___ | |_ | _ // _ \\ / _ \\| __| | | \\ | (_) | (_) | |_ |_| \\_\\___/ \\___/_\\__| __ __ _ \\ \\ / /__ _ __ | |_ _ _ _ __ ___ ___ \\ \\/ / _ | '_ \\| __| | | | '__/ _ / __| \\ | __| | | | |_| |_| | | | __\\__ \\ \\/ \\___|_| |_|\\__|\\__,_|_| \\___|___/ `.replaceAll("\n", "\r\n"); let asciiArtPreloadPromise = null; let asciiArtLoadPromises = {}; function isASCIIArtLoaded(id) { const div = document.getElementById(id); return div ? div.dataset.loaded === "true" : false; } function _asciiArtScale() { return term.cols >= 60 ? 0.5 : 1.0; } function _getASCIIArtSpec(id) { if (id === "rootvc-square") { return [id, 1.0, _asciiArtScale(), "png", false]; } if (team[id]) { return [id, 1.0, _asciiArtScale(), "png", true]; } if (portfolio[id]) { return [id, 0.5, 1.0, "jpg", false]; } return null; } function getASCIIArtIdForCommand(cmd, args) { const name = args[0]; if (cmd === "whois" && term.cols >= 40) { if (name === "root") { return "rootvc-square"; } if (team[name]) { return name; } } if (cmd === "tldr" && term.cols >= 60 && portfolio[name]) { return name; } return null; } function _queueASCIIArtWork(task, timeout = 1000) { if (typeof window.scheduleIdleTask === "function") { window.scheduleIdleTask(task, timeout); } else { window.setTimeout(task, timeout); } } function preloadASCIIArt() { if (asciiArtPreloadPromise) { return asciiArtPreloadPromise; } const specs = [ _getASCIIArtSpec("rootvc-square"), ...Object.keys(team).map((person) => _getASCIIArtSpec(person)), ...Object.keys(portfolio).map((company) => _getASCIIArtSpec(company)), ].filter(Boolean); asciiArtPreloadPromise = window .ensureAALibLoaded() .then( () => new Promise((resolve) => { let index = 0; const loadNextBatch = () => { const batch = specs.slice(index, index + 2).map((spec) => spec[0]); index += batch.length; if (batch.length === 0) { resolve(); return; } Promise.all(batch.map((id) => ensureASCIIArt(id))).finally(() => { if (index < specs.length) { _queueASCIIArtWork(loadNextBatch, 1000); } else { resolve(); } }); }; loadNextBatch(); }) ) .catch((error) => { console.warn("Failed to preload ASCII art", error); }) .finally(() => { asciiArtPreloadPromise = null; }); return asciiArtPreloadPromise; } function ensureASCIIArt(id) { const spec = _getASCIIArtSpec(id); if (!spec || isASCIIArtLoaded(id)) { return Promise.resolve(); } if (asciiArtLoadPromises[id]) { return asciiArtLoadPromises[id]; } asciiArtLoadPromises[id] = window .ensureAALibLoaded() .then(() => _loadArt(...spec)) .finally(() => { delete asciiArtLoadPromises[id]; }); return asciiArtLoadPromises[id]; } // TODO: Here is where we should insert alternatives to ASCII as text function _loadArt(id, ratio, scale, ext, inverse, callback) { const parentDiv = document.getElementById("aa-all"); const width = Math.floor(term.cols * scale); const height = Math.floor(width / 2 * ratio); var filename = `/images/${id}.${ext}`; var div = document.getElementById(id); if (!div) { div = document.createElement("div"); div.id = id; parentDiv.appendChild(div); } if (isASCIIArtLoaded(id)) { return Promise.resolve(); } div.dataset.loaded = "false"; return new Promise((resolve) => { if (term.cols >= 40) { const NICE_CHARSET = aalib.charset.SIMPLE_CHARSET + " "; var aa = aalib.read.image.fromURL(filename) .map(aalib.aa({ width: width, height: height })); if (inverse) { aa = aa.map(aalib.filter.inverse()); } aa.map( aalib.render.html({ el: div, charset: NICE_CHARSET, }) ).subscribe(() => { div.dataset.loaded = "true"; if (callback) { callback(); } resolve(); }); } else { div.innerText = `[ Photo: ${document.location.href}images/${id}.${ext} ]`; div.dataset.loaded = "true"; if (callback) { callback(); } resolve(); } }); } function getArt(id) { const div = document.getElementById(id); return isASCIIArtLoaded(id) ? div.innerText.replaceAll("\n", "\n\r") : ""; } ================================================ FILE: js/bootstrap.js ================================================ (function bootstrapTerminal() { const optionalScriptPromises = {}; function loadOptionalScript(src) { if (optionalScriptPromises[src]) { return optionalScriptPromises[src]; } optionalScriptPromises[src] = new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = src; script.async = true; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); return optionalScriptPromises[src]; } window.scheduleIdleTask = (task, timeout = 1000) => { if ("requestIdleCallback" in window) { window.requestIdleCallback(() => task(), { timeout }); } else { window.setTimeout(task, timeout); } }; window.ensureAALibLoaded = () => loadOptionalScript("js/aalib.js"); window.ensureRickRollLoaded = () => loadOptionalScript("js/rickroll.min.js"); const terminalElement = document.getElementById("terminal"); const term = new Terminal({ cursorBlink: true }); const fitAddon = new FitAddon.FitAddon(); const webLinksAddon = new WebLinksAddon.WebLinksAddon(); window.term = term; window.fitAddon = fitAddon; term.open(terminalElement); term.loadAddon(fitAddon); term.loadAddon(webLinksAddon); extend(term); window.deepLinkAssetPromise = Promise.resolve(); if (term.deepLink) { window.deepLinkAssetPromise = term.preloadCommandAssets(term.deepLink).catch( (error) => { console.warn("Failed to preload deep link assets", error); } ); } runRootTerminal(term); window.scheduleIdleTask(() => { preloadASCIIArt(); preloadFiles(); }, 1500); })(); ================================================ FILE: js/comcastify.js ================================================ var comcastifyjs = (function () { // setup slowload modifier callback, structure avoids some annoying timer/closure problems var slowloadModiferCallback = function (slowloadDiv, args) { return function () { (function (slowloadDiv, args) { // calculate new height for box based on args var img = slowloadDiv.slothifyData.img; var newTopClip = slowloadDiv.slothifyData.imageTopClip + args.loadIncrement; if (args.randomPause === 0.0 || Math.random() > args.randomPause) { slowloadDiv.style.width = img.offsetWidth + 'px'; slowloadDiv.style.height = img.offsetHeight + 'px'; slowloadDiv.style.top = img.offsetTop + 'px'; slowloadDiv.style.left = img.offsetLeft + 'px'; // update slowload div slowloadDiv.style.clip = 'rect(' + newTopClip + 'px auto auto auto)'; // check stopping conditions var maxImageHeight = img.height * args.loadMaxPercent; } if (!img.complete) { setTimeout(slowloadModiferCallback(slowloadDiv, args), args.loadSpeed); } else if (typeof img.naturalHeight !== "undefined" && img.naturalWidth === 0) { setTimeout(slowloadModiferCallback(slowloadDiv, args), args.loadSpeed); } else if (!maxImageHeight || maxImageHeight === 0 || newTopClip < maxImageHeight) { // create new update timeout slowloadDiv.slothifyData.imageTopClip = newTopClip; setTimeout(slowloadModiferCallback(slowloadDiv, args), args.loadSpeed); } })(slowloadDiv, args); }; }; var prepare = function () { // hide images so image doesn't show up before box var imgs = document.getElementsByTagName('img'); for(var i = 0; i < imgs.length; i++) { var img = imgs[i]; img.style.visibility = 'hidden'; } }; var slowImages = function (args) { return function () { var params = { elements: args.elements || document.getElementsByTagName('img'), // elements affected boxColor: args.boxColor || '#000000', // color of box overlay loadMaxPercent: args.loadMaxPercent || 0.0, // max percentage to load images loadSpeed: args.loadSpeed || 300, // how often in ms to pass randLoadIncrement: args.randLoadIncrement || false, // true to randomize load increment loadIncrement: args.loadIncrement || 1, // pixels to load per pass randomPause: args.randomPause || 0.0 // probability of skipping a pass }; // make 'em load slow for(var i = 0; i < params.elements.length; i++) { // get some things we need var img = params.elements[i], parent = img.parentNode, slowload = document.createElement('DIV'); // set up initial state of box slowload.style.backgroundColor = params.boxColor; slowload.style.width = img.offsetWidth + 'px'; slowload.style.height = img.offsetHeight + 'px'; slowload.style.position = 'absolute'; slowload.style.top = img.offsetTop + 'px'; slowload.style.left = img.offsetLeft + 'px'; slowload.style.clip = 'rect(0 auto auto auto)'; // remember what the max height should be for later calculation slowload.slothifyData = { img: img, imageTopClip: 0, maxImageHeight: img.height * params.loadMaxPercent }; // put box over image parent.appendChild(slowload); // show image again img.style.visibility = 'visible'; if (params.loadMaxPercent > 0.0) { // allow for some changing of params per image var modParamPerImg = Object.create(params); if(modParamPerImg.randLoadIncrement) { // randomize load increment modParamPerImg.loadIncrement = Math.floor((Math.random() * 20) + 1); } // slowload using timeout since this is nicer to the browser :) setTimeout(slowloadModiferCallback(slowload, modParamPerImg), params.loadSpeed); } } } }; return { letsPrepareTheseImages: prepare, fixMyImagesLoadingSoFast: slowImages }; })(); ================================================ FILE: js/geo.js ================================================ function buildGeoPage() { const whois = document.getElementById("whois"); whois.innerHTML = whoisRoot.split(" Try")[0]; const portfolioTable = document.getElementById("portfolio"); const sortedPortfolioKeys = Object.keys(portfolio).sort((a, b) => portfolio[a].name.localeCompare(portfolio[b].name) ); for (const p of sortedPortfolioKeys) { const row = portfolioTable.insertRow(-1); const logoCell = row.insertCell(); const descriptionCell = row.insertCell(); const urlCell = row.insertCell(); logoCell.setAttribute("class", "portfolio-photo"); descriptionCell.setAttribute("class", "portfolio-description"); // of company logo const logoImgTag = document.createElement("img"); logoImgTag.setAttribute("src", `images/${p}.jpg`); logoImgTag.setAttribute("alt", `${portfolio[p].name}`); if (portfolio[p].url != "(inactive)") { // add logo w company link to table const logoLinkImgTag = document.createElement("a"); logoLinkImgTag.setAttribute("href", portfolio[p].url); logoLinkImgTag.setAttribute("target", `_blank`); logoLinkImgTag.setAttribute("alt", `${portfolio[p].name}`); logoLinkImgTag.appendChild(logoImgTag); logoCell.appendChild(logoLinkImgTag); // add company URL to table const urlATag = document.createElement("a"); urlATag.setAttribute("href", portfolio[p].url); urlATag.setAttribute("alt", `${portfolio[p].name}`); urlATag.setAttribute("target", "_blank"); urlATag.innerHTML = portfolio[p].url; urlCell.appendChild(urlATag); } else { // inactive company doesn't have links logoCell.appendChild(logoImgTag); urlCell.innerHTML = portfolio[p].url; } // add company description to table descriptionCell.innerHTML = portfolio[p].description; } const teamTable = document.getElementById("team"); for (const t of Object.keys(team)) { const row = teamTable.insertRow(-1); const photoCell = row.insertCell(); const nameCell = row.insertCell(); const titleCell = row.insertCell(); const descriptionCell = row.insertCell(); photoCell.setAttribute("class", "team-photo"); descriptionCell.setAttribute("class", "team-description"); const photoImgTag = document.createElement("img"); photoImgTag.setAttribute("src", `images/geo/${t}2.jpg`); photoImgTag.setAttribute("alt", `${team[t].name}`); photoCell.appendChild(photoImgTag); const linkedinATag = document.createElement("a"); linkedinATag.setAttribute("href", team[t].linkedin); linkedinATag.setAttribute("alt", `${team[t].name}`); linkedinATag.innerHTML = team[t].name; nameCell.appendChild(linkedinATag); titleCell.innerHTML = team[t].title; descriptionCell.innerHTML = team[t].description .replaceAll("\n\r", "
") .replaceAll("\t", "    "); } comcastifyjs.letsPrepareTheseImages(); comcastifyjs.fixMyImagesLoadingSoFast({ boxColor: "#000000", loadMaxPercent: 1.0, loadSpeed: 800, loadIncrement: 5, })(); } ================================================ FILE: js/rickroll.js ================================================ let currentFrame = 0; let intervalId = null; const baseSearchText = "vsabnBRXofjub"; const xpathExpression = `//span[starts-with(text(),'${baseSearchText}') and string-length(text())=string-length('${baseSearchText}')+2 and substring(text(), string-length('${baseSearchText}')+1) >= '00' and substring(text(), string-length('${baseSearchText}')+1) <= '99']`; function RickRoll() { const isMobile = term && term.cols >= 90 ? false : true; const colSize = isMobile ? RickRollPhone[0].length : RickRollDesktop[0].length; const frameArray = isMobile ? RickRollPhone : RickRollDesktop; const frameLength = frameArray.length; let result; try { result = document.evaluate( xpathExpression, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); } catch (e) { return; } const spanElements = []; for (let i = 0; i < result.snapshotLength; i++) { spanElements.push(result.snapshotItem(i)); } if (spanElements.length === 0) { return } // Clear any existing interval if (intervalId !== null) { clearInterval(intervalId); } let ColArray = [] for (let i = 0; i < spanElements.length; i++) { let colnumber = parseInt(spanElements[i].innerText.match(/\d+/g), 10); ColArray.push(colnumber) } intervalId = setInterval(() => { for (let i = 0; i < ColArray.length; i++) { spanElements[i].innerText = frameArray[currentFrame][ColArray[i]]; } currentFrame = (currentFrame + 1) % frameLength; }, 40); } const RickRollPhone = [ [ "8988$8$889999944449988889499455559988$#8", "998$89999889994989498889998954559454988$", "988899#89889998953}}1499888894559954449$", "999898$899999997)))_)+188888945544499449", "98988889$#89992+))+7}=)49998945549449599", "98889#080&899977}11232+25499455598849445", "999998#88#89941===}1}1}49454555548998949", "8899898#8889995177}223154499945549988994", "8899999988999851777122354994995555599989", "89499449889994551}}}11559885555359944494", "44989445989449545}=}1131}499555359955499", "498899849894495351=7113=*;_)=}2559559599", "44989999999555535}}}7}4+;;;;;;;_+5559448", "54494994945551+_1531}53_;;;;;;;;;=455958", "99454488955});;;=13}}});;;;;;;;;;)544554", "9994988889+;;;;;;;+++);;;;;--;;;;_499459", "9994498894);;;;-;;+++);;;;;-;--;;_599959", "9994999945+;;;;;;-)))_;;;;--;-;;;;344559", "9994989999+;;-;;--)));;;;;--;--;;;+55944", "9994999999);;-----)));;;;;--;--;;;_55955", "9994999944=)=;----)__;;;;;-;;--;;;;35555", "99999988951}7;----)__;;;;;;;;--;;;;14555", "5444999942==};----)__;;;;;;;-----;;}4455", "554499994}++7;----);;;-;;;;-----;;;74445", "554499995+;__-----_;;;--;;;--:--;;;}4444" ], [ "8988$8$889999944449988889499455559988##8", "998#8999988999498955988999895455945498$$", "98$899#8988999892=+)))}4888894559954949$", "999898#898999995+___)))+9888945544499949", "98988888$#89999}+7}1231+5988995549449599", "98899#080&89995==77111173499455598849945", "9999980$8#899942777711114454555548998849", "8899898#88899991}77712324499945549998994", "88999999889998953}7712254994995555599989", "894994498899944593}}12133995555359944494", "499894949894495994=7}123)_+}135559955499", "498899899894495355=7}}15_;;;;;_)}5559598", "449898899995555}+31}=752_;;;;;;;;_559448", "4499999994553});;132}11_;;;;;;;;;;255958", "99944488945=);;;;)1}++);;;;;;;;;;;}94554", "99949888893*;;;;;;)++);;;;;--;-;;;}99459", "99894988943_;;;;;-)++);;;;;-;--;;;=99959", "99949999445);;----)))_;;;;--;--;;;;34554", "99949899995);-----)))_;;;;--;--;;;;75944", "99949999995};-----__)_;;;;--;--;;;;)5955", "998999894453_-----___;;;;--;;--;;;;_5555", "998999889551;-----___;;;;;;;-----;;_4555", "5444999941}}_-----___;;;;;;;-----;;)4455", "5544999947=}+-----_;-;-;;;;-----;;;+4444", "5544999941+7+-----_)_;-;;---:---;;;14444" ], [ "8988$8#889994944444988889499455559988##8", "998#89999889994995}}+=}549895455945498$$", "988898#8988999895+_*;__)288994559954449$", "999898#898999989=)+=7}17+988945544499449", "98988888$#899999)77}1232+489945559444599", "98889#080&899944====71}11599555548849445", "9999980$80899945}777=1233554555548998849", "8899898#888999892}7771235549945559498995", "88999999889998944477}1225945995555599989", "894994498899945594}}=}12}+23545559955445", "449894959894495495=77}12=;;;;)+}39955599", "49889984489459531}=77=}4+;;;;;;;;)359599", "549899999945551);)11=}5};;;;;;;;;;=59448", "544949449453});;;*317=+;;;;;;-;;;;+55959", "99454488955);;;--;}7++);;;;-----;;)44554", "99949888895);;----))+);;;;;--;--;;_49454", "999449889457;;----))+);;;;---;--;;;79954", "999499994451;-----)_)_;;;;--;---;;;_5554", "999498999953;-----););;;;;--;---;;;;}954", "999499999955+;----);_;;;;---;---;;;;+455", "9989998944537;----);;;;;;---------;;1555", "998999889553;-----_;;;;;;;-------;;_4555", "544499995127_;----_;;;;;--;-:---;;;=4455", "554499947711)-----_;;---;;--:---;;)54445", "554499941+71+--:--)))_--;++)_--;;)344444" ], [ "8988$8#889999944445532349499555559988##8", "99$#89999889994984+____)74995455945498$$", "988898#89889998857))))++)18994559954449$", "999898#8889999883)7}1223}798945544499449", "98988888$#8999985+==711}1199945559444599", "98889#080&89994937777}212599555548849445", "9999980$808999495}777}122554555549998849", "8899898#888999899517=}125549945359498995", "8899999988999894491==7113155995555599989", "894994498899945599}}=7112__)713559955445", "449894959894445443=777721;;;;;;*+1455594", "4988998448945937)+=77715+;;;;;-;;;+59599", "44989999994527_;;*}1}}}+;;;;;;-;;;)49448", "544949449457_;;-;;1}=++;;;;;--;;;;_55959", "99454488955+;;---;}=++);;;;-----;;;54554", "999498888957;-----)_));;;;;--;--;;;19454", "998449889451;-----)_+);;;;---;--;;;_9954", "999499994451;-----);)_;;;;---;--;;;;}554", "999498999953_;----);_;;;;;--;---;;;;_455", "999499999953+;----);_;;;);;-;-----;;)455", "998999894453+-----);;;;;}7+)------;;2555", "998999889553);----);;;;;7}}7;--;;;;=4555", "544499991111_;--;-_;----+777*;;;;;)34455", "554499957111=-----___--:_+++;;;;;3444445", "354499941=}1)-;)--)));::--;---;;;1444444" ], [ "898888$8899999444457+)))7344555559988$#8", "998#89999889994995})_*___+5954559554988$", "988899#89889998891)=7}111+2995559954449$", "999898$89999998887+77}222}29945545499449", "98988889$#89999881=777111199945559449599", "98899$08#&8999499}}77=}23299555549949445", "999998#88#899999452777122555555549998949", "8899898#88899989955}77122549945559498995", "88999999889998944957==}12772995555599989", "8949944988994455991}77113);;_)7159955445", "44989495989444537=7=}7725_;;;;;;;)155594", "49889984489553+_;_==1}35);;;;;;;;;_39599", "449899999941)*;;;;+7===);;;;;;;;;;;39449", "54494944945+;;;;;;+1==+_;;;;;-;;;;;25959", "99454488955=;;;;;;+}++);;;;;----;;;14554", "99949888895};;;;;;_)))_;;;;--;--;;;+4454", "99944988945};;---;_)+);*}+_;-;--;;;;1954", "999499994451;;----*)__;_1}7);;---;;;_354", "999498999953;;----*)_;;_77}=;;----;;;+55", "999499999953_-----*)_;;_+=7=;;;;;--;;}55", "999999994453);----___;;-;_));;;;;;-;=555", "998999889223+*----*;;;-------;;;;;;)4555", "5444999937}}7;--;-_;;-----:-----;=144455", "5544999957=7=;-_;-_));---------;;}444445", "55449999451+;_12;-_++;-------;;;;)544444" ], [ "898888$889999944455=_____+34555559988$#8", "998#899998899949857)))))+)=454559554988$", "988899#89889998884)=712331+995559954449$", "999898$89999998885)7==}1}1}9945544499449", "98988889$#899998837777721259945559444599", "98899$08#&89994993}777}13249555549949445", "999998#88#899949454}77}12555555549998949", "8899898$88899989955}==}11349945359498995", "8899999988999994495}77112=)}595555599989", "8949944988994553521}}7}}5);;;_)729955445", "44989445989455})_)7=}7}53_;;;;;;;_755594", "498899844892=);;;*==}}11_;;;;;;;;;*39599", "45989999994);;;;;;)7===);;;;;;-;;;;39448", "54494944955);;;;;;)17=+;_);;--;-;;;15959", "99455488955);;---;)}+)_;7}=);---;;;}4534", "99949888895);-----;+));_7777;;;-;;;)4454", "99944988945);-----;+));_+=}7;;;--;;;)454", "99949999445=;-----;))_;;;)77;;;---;;;754", "99949899995};-----;));;;;;;;;_;;;;-;;;25", "99949999995};-----*));-------_;;;;;-;=55", "998999994427+_----;)*;------------;;+355", "998999889177=_--;-;_;;--------:----+4555", "5444999993=}7)-;--_)------------;3544455", "55449999943+_)11;-)++;;-------;;;=444444", "354499994551}55}_;=++;;;;-----;;;*544444" ], [ "8988$8#889999944455}_**__)75555554988$#8", "99$#89999889994989}++++=7=)55455945498$$", "98$898#89889998889)=}}2333=595559954449$", "999898#89899998889=7==71}119945544499449", "98988888$089999885}}}}713339945559449599", "98899#&80&899949941}77}12349555599949445", "9999980$8#899999459177}12555555549998949", "8899898$8889998995517=}11259945549498994", "8899999988999994443}77112=)7395555599989", "8949944988994551=}1}}}}15);;;*)=19955445", "4498944598951=_;;)==1}241_;;;;;;;_}55594", "49889984495);;;;;_+=}}1}**;;;;;;;;_39599", "44989999993*;;;;;;)}==+_)}7+_;;;;;_59448", "44494944951;;;;;;;+1++);7}}});;;;;*34959", "9945448895};;;;;;;+}=+_;)7}});;-;;;14554", "99949888891;;;;;;;_++);;;)7}+;;;;;;)4454", "99944988942;;;;;;;_)));;;;_)_;;;;;;;)554", "99949999443_;---;;_)));;;---;)+;;;;;;+35", "9994989999};*;--;;_+);--------;;;;;-;;}5", "9994999999}}});;--_)_;----------;-;;;)55", "998999894417}7;;--_)_;--------:----;_255", "99899988941=7};---)_;------;;---;_*)5555", "54949999945+))};;;))--;-------;-;3444455", "544499999453}33;;;+=+;;;------;;;+444444", "554499999455557)__==+*;;;-----;;;;344444" ], [ "8988$8#8899999444551);;;__+5555354988$#8", "99$#89999889994989})+=77}7)15455945498$$", "98$898#89889998889=+7}12337195559954449$", "999898#89899998889}7===1}}19945544499449", "98988888$089999884}}7}=13339945559449599", "98899#&80&899949942}77712349555599949945", "9999980$8#899999459277}12354555549998849", "8899898$8889999995517=711349945549498994", "8899999988999994553777112=)}595555599989", "894994498894451=)71}7}}15_;;;_+}39955445", "44989445984}+_;;;++71}34}*;;;;;;;)155594", "49889984491;;;;;;)+=77}7;_=7+_;;;;_59599", "44989999997;;;;;;;+===+**}}}1);;;;;59448", "5449494495+;;;;;;;}}+));;_=}1);;;;;34959", "9995448895);;;;;;;77))_;;;)7});-;;;24554", "9994988899);;--;--)++);;;--;__;;;;;}9454", "9984498895);------)))_;;-----;_*;;;;=454", "9994999941_;--_;--))__---------;;;;;;)25", "999498999+_*=}})--_));----------;;;;-;)5", "999499999=)+7=7)--)));------------;;;;25", "998999894=_))+=_--))_;---------:----;}55", "9989998893=;;*;--;)__;-----------;;_2455", "449499999453}1)-;;);;;--------;--}444445", "54449999945555);;;++);;;-------;;_344444", "55449999955555_-;;+=+*;;;------;;;=44444" ], [ "8988$8#$898999444451);;;__+5555559988$#8", "99$#899998899949891)++==7=)15455945498$$", "98$898#89889998888=+7}12337195559954449#", "999898#88899998888}7===1}}}4945544499449", "98988888$089998884}}7}=13339945559449599", "88899#&80&899949942}77712359555548949445", "9999980$8#899949459177}11555555549998849", "8899898#8889998995517=712549945549498994", "8899999989994995553}77113=}5995555599989", "89499454889453}+)}}}}7}13_;;)72559955445", "44989445992+);;;;++}}}34};;__;;;+1455594", "4988998449);;;;;;)+}7}2};;)7}});;;=59599", "4598999445_;;;;;;;=7==+_;;+711_;;;)49448", "544949444};;;;---;17++);;-;+11_;;;_54959", "994554989+;;-----;1=++_;---_=}_;;;_44554", "999448889+;-------)++);;-----;;;;;;59454", "999449884);-------))));--------;;;;)4454", "99949495);---_===)))))----------;;;;;}35", "99949847_)__)}7=7;)));-------:---;;;-;+5", "99949942_;;*;)+=+;))_;--------:------;15", "99899994);;;;;;;--)));--------::----;+55", "9989998892}}=)---;))_;-------------;=555", "5444999994555}--;;);;------------1554444", "5544999994555};-;;))_;;;-------;;_344444", "55449999455557;--;)=+;;;;-------;;+44444" ], [ "8988$8#$898999444451_*___)14555559988$#8", "99$#899998899949891+))))+))35455945498$$", "98$898#89889998889+=7}2333+595559954449$", "999898#88899998889=7==}11174945544499449", "98988888$#899988851}}}721239945559449599", "98899#&80&899949951}77}13259555598949945", "9999980$8#899949454177}12555555549998849", "8899898$9889999995577=}13549945549488994", "889999998999499554377}113155995555599989", "89449459889453}+=1}}7}113_)=255559955445", "4498944599}+_;;;;7=}}}24};;;;;)739955599", "4988999453;;;;;;;=+}}142_;;)77+;;)559598", "559899944=;;;;;;;;77=77_;;;+}11_;;}59448", "554949452_;;;;---;277=);;;-;=1};;;755959", "99455499=;;;-----;1=++_;;---)}};;;}44554", "99944989);--------))++;;;----;_;;;+49454", "99944992_;-----;;;)++);-------;;;;_39954", "9994457_;--;;;)77}+))_----------;;;)3554", "999494;;_;;_;;==77+))_-----------;;;;+35", "499499=;;;;;-;)))_)));------------;;;;15", "9994943_;;;;;;----))_;--------:-----;+55", "9984998951}}7-----))_;--------------)555", "5444999995531;---;)_*;----------;++}4444", "5544999995551;---;)_;-;;-------;;1544444", "5544999945531;---;)++;;;;-------;;344444" ], [ "8988$8#$898999444441)___)=54555559988#08", "99$#889998899949891+)__)))=45455945498$#", "98$898#89889998889+7}12331+994559954949#", "999898#89899998884+7771111=9945544499949", "98988888$0899988831}77}11159995549449599", "88889#&80&89994993}}77}23249455598849944", "9999980$8#899949454}77123554555548998849", "8899898#88899989953777113549945549988994", "889999998999499554177}123445995555499989", "89499459889453}=73}}7}112)}2545559944444", "4498944594}+_;;;)1=}1}157_;;_+}359955499", "498899945+;;;;;;_7+}1543_;;;;_;;)3559598", "459899943*;;;;;;;_777=}_;;;;)}1=__559948", "55494945+;;;;;;--;2}=7+;;;;;)}11_;355958", "99455492;;;--;---;1=77_;;;;-;+17;;594554", "99954997;---------+=+);;;;---)}=;;599459", "9994593);------;;;)+));;-----;_);;199954", "99944}_;------_=77+)+)---------;;;_44554", "99945_;*;;;_;;+=7}+));-----------;;)}954", "49949=;;;;;--;_)__))_;------------;;;755", "999442_;;;;;;;----)));--------:---;;;155", "999499942}7};-----))_;--------:----;7455", "554499994553;-----)_;-------------;=4445", "554499999553;-----);----------;;15544444", "554499994553;-----))=;;;-------;*1444444" ], [ "8988$8#$898999444457))))=344455559988#08", "99$#88999889999985})_____)595455945998$#", "98$898089889998883+7}1121+2994559954948#", "999898#8989999888}=771223}29995544499949", "98988888$#89998892}7}71}1199995549499499", "88889#&80&899949411777133299445598849944", "9999980$8#89999945277}223554555598998849", "8899898#88899989951771224499945549988994", "889999998999499554}7=}125945994554499989", "894994498894531715}}7112}}45545559944994", "4498944593}+_;;;=2=}}}14)*;_+}3559955499", "498899941_;;;;;;+}+}1592_;;;;;;)}9459598", "44989994+;;;;;;;;)77=11_;;;;;;;;;}559998", "54494951_;;;;;;;;)2}}7);;;;;;)7=)+455958", "9945559);;;;;;;--_17=+_;;;;;;+111=494559", "9995499_;;-------_=+++;;;;;--)}17=999949", "999454};;-----;;;;+++);;;;---_=}_+499949", "99953+_;-----;+}=)++);;;;;---;)=__549559", "99957;;_;-;;;)=7+))));---------;;-=35944", "49953;;;;;;-;)+)_;)_);------------;_3955", "99944+;;;;;;------))_-------------;;7555", "999499517+=;------))_-------------;)4555", "54449999453;------)_;---------:---_34445", "55449999453;------_---;-------;7}}444444", "55449999452;;-----))+;;-------;)34444444" ], [ "8988$8#$89899944451=+++75499455559988#08", "99$#89999889994993+_____)1995455945998$#", "98$898#89889998897=7}}11+=9994559954948#", "999898#8999999885+7712331=98995544499949", "98988888$#8999984}77=1}11399995549499499", "98899#&80&89994912}77}332599445598849944", "999998#88#89994943}771235454545548998849", "8899898$8889999995}7}1234499945549988994", "8899999989994994537771154945995554499989", "894994498894552132}}}123=595545559944994", "449894459417);;;13=}}}13_;_+}35559954499", "49889995=_;;;;;;21+}159}_;;;;;)759459598", "44989995_;;;;;;;;+77}3}_;;;;;;;;)5559998", "5449495=;;;;;;;;;)2}7=_;;;;;;;;;;2455948", "9945555_;;;;;;;;;+27==;;;;;;;;_;;2494559", "9995493;;;;;-;--;_++=);;;;;;-;=}=3999949", "9994541;;--------_==)_;;;;;-;_}115998949", "999541);----_))+_;+));;;;;--;_71}1449449", "9995}_;;;;_)7}77;;)));;;;;--;_+=_}455944", "4495};_;;;;;+=7=;;))_;;;------;_-;+55945", "99945_;;;;-;__;---));------------;;+5555", "999443=)___;------));------------;_59555", "5444499455)-------));--------:---;144455", "5544999945_-------_;---------;+)+1444444", "5544999453;;------)));;-;;--;;1544444444" ], [ "8988$8#889999944452}}}299499445559988#08", "99$#89999889994997_____)19995455945998##", "98$898#8988999892++++==+)98994559954949#", "999898#898999989+7}12232+588995544499999", "98988888$#899998}7==1111}988995549449599", "98899#080&89994531}7}2232499445598849944", "999998#88#8999493177}2335454555598998849", "8899898$888999999277}2259499945549988994", "8899999989999995417=}1254995994555499989", "894994598894455351}}11222995555559944494", "449894459951=)_)51=}}121__+}255559954489", "49889995=)_;;;;_51+}}34=_;;;;_=159559598", "55989991;;;;;;;;)=}}15}_;;;;;;;;}4559998", "5549495+;;;;;;;;;=3777_;;;;;;;;;)5455948", "9945555*;;;;;;;;;+27}+;;;;;;;;;;_5594559", "9995492;;;;;;;--;)==+_;;;;;;;;;;_4999949", "9994541;;;;-----;_=++_;;;;;-;+=)_4998949", "999545};--------;;++);;;;;;-_}11+5449449", "999591_;--;+==*-;;+)_;;;;;-;)}1})5455994", "44953_)_;)}=7=;-;;))_;;;;;-;)+=_;+555944", "99945+_;;_++==;--;));--------;;-;;)54555", "999447;;;;;)_;----));-----------;;749555", "5545445}7+;;------)_;-------:---;+444455", "554499944};-------);;-------;)__+5444445", "555449945+;-------))_-------;35444444444" ], [ "8988$8#889999944455459889499445559988#08", "99$#8999988999495+))))=249995455945998##", "98$898#898899984})__))))588894559954998#", "999898#8999999837}11233=1888995544499999", "98988888$#8999927771112}1988995549449499", "98899#080&899945177721215499445598849944", "999998088#899943277713324454545598998849", "8899898#888999995}7}12349499945549988994", "88999999899999945}7}11354994994554499989", "894994498894455551}}12339895555559944994", "4498944599953}==5}=}113=)725555559954489", "49889995537)*;;)51=}}14+_;;;)=1559559598", "55989993_;;;;;;_11}1543_;;;;;;;_34559998", "5549495+;;;;;;;;*73}=}_;;;;;;;;;=5455948", "9945559);;;;;;;;;=277+;;;;;;;;;;)5544559", "9995495;;;;;;;;;;+=}=_;;;;;;;;;;)4999949", "9994595;;;;;;;-;;)=+);;;;;_+);;;_4998949", "9994453;;-------;_++);;;;;+}1}_;_5449449", "9995992;;-------;;++_;;;;;+}}=;;)4454999", "449595);-;+)----;;));;;;;-_+=_;;_3455944", "999447))}}})------));------;_;;;;;244554", "999441))++7+------));-------;-*;;*299555", "554543)_)++_------)_;;-----:--;;_3444455", "55444941);;-------);;;;-----_;;)24444455", "555449453;--------)_;-;----;154444444455" ], [ "8988$8#$89899944454988889999445559988#08", "99$#8999988999493}7+739999895955945998##", "98$898#898899993)____)+2888894559954998#", "999898#89899999}++=}}1+=9888995544499999", "98988888$#89995=}}1233}+9888995549449499", "98899#&80&89995}==71}1115499445598849944", "9999980$8#899953}77133239444545598998849", "8899898#88899995177123349498945549988994", "889999998899989427}122454994994554499989", "89499449889945551}}112549885545559944994", "44989445989455221}=1123)}599555359954489", "498899944951+_;+5}=}}15_;;;)=25559459598", "55989995}+_;;;;+55}}243_;;;;;;_=54559998", "5549495=;;;;;;;;+}3}12);;;;;;;;;15455948", "9945559);;;;;;;;;727=);;;;;;;;;;}5544559", "9995495;;;;;;;;;;+==+_;;;;;;;;;;74999949", "9994595;;;-;;;;;;+==);;*+7);;;;;+4998949", "9994453;;---;;-;;_+));;_}}}=;;;;+4549449", "9995995;;-------;;++_-;_=}})--;;}4454999", "4994992;---------;+);---_+=_;-;;)4455944", "999445))_---------));-----;;;;;-;=454544", "999443}}})--------));;----;;;;;--)599555", "554543==}};-------))*;---:---;;;)5444455", "5544447+=7--------)_;;;--;--;-;=44444455", "3555441_;---------_;--;;;--)554444444455" ], [ "8988$8#889999944449988889999445559988#08", "99$#8999988999495312988999895955945998##", "98$898#89889999})))_)=39888894559954998#", "999898#89899993+)))+=))98888995544499999", "98988888$08999}}}11231)59888995549499599", "98899#&80&8999}}=71}11+55499445598849944", "9999980$8#899451=71113199444545598998849", "8899898#88899932771332399498945549988994", "889999998899989577}223954994994554499989", "89499449889944557}}113549885545559944494", "4498944598945435=}=1221}5999555359954489", "49889994499527)1}}=}12}_;_)=}55559559598", "5598999445});;;751}}141_;;;;;;)154559998", "5549495});;;;;;+223133);;;;;;;;_55455948", "9945559_;;;;;;;-_=27=);;;;;;;;;;35544559", "9995495;;;;;;;;;;+++);;;;;;;;;;;24999949", "9994592;;--;;;;;;)+));+}=);;;;;;}4998949", "999445};;---;;;;;)++);7}}=;;;-;;}4549449", "9995991;;--------;+);;)7}=;---;;24454999", "499499};---------;+)_--)=);;--;;=4455944", "999445=;----------+);-----;;;;--;1454554", "999445}+;---------));;----;;;;;-;+499555", "55453111};-----;;-))_;--:----;;;+4444455", "55453=111_--------)_;;;;---;--_}44444455", "355543+=_---------);--;;;--1554444444455" ], [ "8988$8#889994944449988889999445559988#08", "99$#8999988999499454888998895955945998##", "988898#898899937+)))7399888894559954948#", "999898#8989994}____)))}88888995544499949", "98988888$08995}7}}132)799888995549449599", "98899#&80&899517}11127745499445598849944", "9999980$8#899437=}1}2}299454555598998849", "8899898#888994577}2222399498945549988994", "889999998899994}7}1225454994995554499989", "89449449889945517}}115549884555559944494", "4498944598945451=}=}23159889555559954489", "49889994494531=1=}=}13)__+71395559459598", "55989994442+_;;327}}14+*;;;;;_=554559998", "554949527);;;;;}553245_;;;;;;;;755455948", "9945555_;;;;;;-;)+17+_;;;;;;;;;)55594559", "4495492;;;;;;;;-_+=+);;;;;;;;;;_54999949", "9994541;;--;;;;;;+=+))7+_;;;;;;;54998949", "9995457;----;;;--_+)_=}}7;;;--;;34549449", "999599};---------;+)_)7}7;;---;;54454999", "449599=;---------;));-)==;;---;;74455944", "999445+;----------));---;;;;;;--;1554544", "9994531=;-----;;--))_;---;;;;;;--+499555", "554511117;-----;;-));;-------;;-)4444555", "55452711};-----;;-)_;;;;-:----*754444455", "355543+);-------;-);---;;--1554444444455" ], [ "8988$8#889994944449888889999445559988#08", "99$#8999988999499949888998895955945998##", "98$898#89889993}=)+72998888894559954948#", "999898#8989995+____)))488888995544499949", "98988888$08993}=7}11=_299888995549499499", "98889#&80&89931}11231)395499444598849944", "9999980$8#8995}+71712+499444545598998849", "8899898#88899517712221499498945549988994", "8899999988999937712225954994994554499989", "894494498899455}71}125549884555559944994", "4498944598945457+}=}23499889555359954489", "498899944945311==}=}12_)=135595559459598", "55989994441+_;=3}}}733_;;;;;)73554559998", "554949527);;;;)3533341;;;;;;;;)555455948", "994555=;;;;;;;;)+=2}}_;;;;;;;;;255594559", "449549);;;;;;;-;)7==);;;;;;;;;;155999949", "999454_;--;;;;;;_)+)_))_;;;;;;;=55498949", "999545_;---;;;;;;+++_)}}7;;;--;)45549449", "999599);----;----)+);+}}};;---;)44454999", "449594);---------;));-)77_;---;;24455994", "9994452})--------;+);--;);;;;;--_2554544", "999451111_----;--;));;---;;;;;;--+499555", "55454}711+-----;;;)_*;------;;;-)4444555", "554542)+);-----;;-));;;--:----;+54444455", "555545);------:-;-)_;--;;--7225444444455" ], [ "8988$8#889999944449888889999445559988#08", "99$#8999988999498999888998895945945998##", "98$898#898899952}=}34998888894559944998#", "999898#8989993)____))}988888995594499999", "98988888$#8993=++7}7))399888995549999499", "98889#&80&89931}1133=)495499444598899944", "9999980$8#8995==}}}1}+999444544598998849", "8899898#888945}7122311999498945549988994", "88999999889994}7}22225944994994554499989", "894994498899451=}1}135599884545559944994", "449894459894441==}=155999889555559954989", "498899944995311==}=}3=715995595559459498", "5598999445})*_3}7}}}5+;;;_)=145554559998", "5549493})_;;;;1531354+;;;;;;;_5555455948", "994551_;;;;;;;)7}}237;;;;;;;;;7555594549", "94954=;;;;;;;;-_==++_;;;;;;;;;)455999949", "99955);;;-;;;;;;+7=+_;;;;;;;;;)455998999", "99955);---;;;;;;)7+);;_++_;;-;_545599449", "99954+;-;_-;-;;;_++);;_}}})--;;544454999", "44954)_=17;-;---;)+);-_7}}_---;144455994", "99945)+=7}_------_+_;--;+7_;;;;;}4554544", "99945)++=})------;));---;;;;;;;-;1499555", "55452_)_)+;------;))_;----;;;;;;+4444455", "55453));-------;;;))*;;-:-----;)44444455", "35554}_;--------;;)_;;-;---)+=1444444455" ], [ "8988$8#889999944449888889999445559988#08", "99$#8999988999498899888998895955945998##", "988898#89889999533599998888894559944998#", "999898#8989993+))_)+73988888895544499999", "98988888$08993+)))))_)599888995549999499", "98889#&80&8945111232))995499444598899944", "999998088#8993=7}}22+)999444545598998849", "8899898#8889437}3}1271999498945549988994", "889999998899437}112225944994994554499989", "8949944988994377111155599884445559994994", "44989445989444}=}}=295999889555559954989", "49889994494523=+7}=131549995595559459498", "5598999452+)_1}=7}}11__)7135545559559998", "5549441+_;;;;}521}351_;;;;;_=54555455948", "99453);;;;;;;)}11125);;;;;;;;+4553594549", "4495};;;;;;;;;;+77=+;;;;;;;;;*5555999949", "9995+;;;;;;;;;;+}7+);;;;;;;;;;5555998899", "9995+;;--;;;;;;)==+);;;;;;;;;;5455599449", "99957;;-;)7});;_}=+_;;;;*++_;;5454454999", "4495+;--)+=});;;))+_;;;;;=11+;1444454994", "9995);-;_++=*;;;_)+);;;;;=}});)344554444", "9995_;;_;_+)----;)+);----_+=;;;;}4499455", "5551*;*_;;-------)));-----;;;;;;14444555", "5551;;;;---------*))_---:-;-;;;+44444555", "5555};;;--------;;)_;;;;----;;+544444455" ], [ "8988$8#$8989994494988$889999445549988#08", "99$#89999889999988998$8998894945945998##", "98$898#898899999999899988$8894559944998#", "999898#8889994}7))+}34988888895594999999", "98988888$08993)____))=499888995549999499", "8$889#&80&89951}112}))594488444598899994", "9999980$8#89937}1232))999449444598998899", "8899898#8889417}1712)}999998845598988994", "88999999889941712222}5949994994544499989", "894994498899417}111155599884445549899999", "449894959894437}1}=395999889555559944989", "49889994499531=+}}=255549894595559459498", "5598999451=)71==}1}3+=134455545559559998", "554955})_;;;+52}}135)*;;)+15554555455948", "9945+;;;;;;;)1221332_;;;;;;_744555599549", "4443_;;;;;;;;;===}7);;;;;;;;_54555999999", "999};;;;;;;;;;)=}}=*;;;;;;;;;14555998899", "999};;-;;;;;;_)}7=+;;;;;;;;;;14455599999", "999=;;----;=}}77==+;;;;;;;;;;14454454999", "444);;----_==7=+7++;;;;;;;;;)24454454994", "995*;;----_++)_;+));;;;;;;-_=13444549444", "992;;;---;__;--;))+_;;;----)711544499455", "55+;;;-;;;;----;_)+_;-;----_)7=744444555", "55=;;-----------;))_;------;;;;144444455", "555=;;;;---------_)_;;----:-;-;344444455" ], [ "8988$8#889999944449888889999445559988#08", "99$#89999889994988998$8998894945945998##", "98$898#898899988888899988888945599449980", "999898#8989999327=}599988888895594499999", "98988888$08995+_)_))+1999888995549999499", "98889#&80&8995}====+_)595499444598899944", "999998088#8993}11331))499944444598998849", "8899898$88894}=}7}21)+999498845598988994", "8899999988995}}21121=3944994994544499989", "8949944988995}71111125599884445549894994", "449894459894517}}}=195999889555559944989", "4988999449953}==}}=155549894595559459498", "55989995317+17==11}215455455545559559998", "5549537);;;;15}7}}31__)}3545554555455948", "9952_;;;;;;;2551}33=*;;;;_=3955533599549", "444+;;;;;;;;;_+=157_;;;;;;;_395535999949", "994_;;;;;;;;;*}777=;;;;;;;;;744555998899", "943;;;-;;---;;+=}}+;;;;;;;;;=44555599999", "99};----;---_7}}}++;;;;;;;;;=44554454999", "44);;------_+}}}+++;;;;;;;;;=44454454994", "95*;;------)+=++)));;;;-;;-;745555549444", "91;--------__;-;)));;;;-;;--_3}+}5499455", "5);;;---;_;;---;)));-;-----;;)+=13445555", "5+;------------;_))_--------;))=15444555", "55);;;;;-------;*))_;-----:--;__}4444455" ], [ "8988$8#889994944449888889999445559988#08", "99$#89999889994988998$8998895955945998##", "988898#898899988888899988888945599449480", "999898#8989999531}2994988888895544499949", "98988888$08995)))__)=3999888995549999499", "98889#&80&89957+))))_)495499444598849944", "999998088#8945}11231)_499444544598998849", "8899898$88894}=}712})+999498845548988994", "8899999988995}}2111}+5944994994554499989", "894494498894577111}115599884445549844994", "4498944598945}7}}1=}95999889555559944989", "49889994494537=7}}=}53549894595559459498", "5598999551}=1===11}155455455545359559998", "555932=);;;;3177}}3}_)}55545554555455948", "9957;;;;;;-_342}}33+;;;;)734955533599549", "443_;;;;;;--;)=7241_;;;;;;;7945535999949", "99};;-;;;----_=+=7+*;;;;;;;_444535998899", "94=----;-----;+=7++;;;;;;;;;555555599949", "94);--------)}}7+++;;;;;;;;;544554454999", "41;--------_+}}}+));;;;;;;;_544554454994", "4+;--------)++)))_);;;--;-;)444555559444", "3;---------;;--;)));;;-----;544455599555", "+--------;-----;)));-;------+551++155555", "=;---------::--;_));---------)+++=145555", "5);-------------__);;------:-;+++7344555" ], [ "8988$8#889999944949888889999445559988#08", "998#89999889994988998$8998894945945998##", "988898#89889998888889998888894559944998#", "999898$8999999531}2999988888895594499999", "98988888$#8995)))__)=5999888995549999499", "98899#&80&89957++)))_)995499444598899944", "999998088#8953}11231))999949444598998849", "8899898$88895}=}}121)}999498845598988994", "8899999988993}}2111}+9944994984544499989", "8949944988945771111125599884445549894994", "4498944598945}7}}1=795999888545559944989", "49889994499537=7}1=755549894595559459498", "55989995317+2===11}155455455545559559998", "555931+_;;;;5177}}21_+145545554555455948", "995+;;;;;;;_342}135=;;;*+154955533599549", "441;;;;;;;;-;)=}251_;;;;;;_3995535999999", "99);;;;;;---;)===}=_;;;;;;;=994555998899", "94)----;;--;;_==7++_;;;;;;;+455555599999", "95_----;--;7}}7++++_;;;;;;;=444554454999", "4=;;;---;-)=}}7++++_;;;;;;;7444554454994", "5_;-------_+=)_))_);;;-;;;;1444555549444", "7;--------;_;--_)));;;-;--;}444455499455", ";--------;-----;)));-------_54517}544555", "_----------:---;_));--------+}=++}544555", "2*;-;----------;__);--------;)++=}544555" ], [ "8988$8#889899944449888889999445559988008", "998#89999889994988998$8998894945945998##", "988899#898899989888899988888945599449980", "999898$89999951}=+}499988888895594499999", "98988888$#8941)____)+5999888995549999499", "98899#080&89537====)_7895489444598899944", "999998088#8952}11331)1999949444598998849", "8899898$888957=}}}1})4899998845548988994", "8899999989943}71212119944994984544499989", "894994498894577}11}155599884445549899999", "4498944598945}=}}1=}95999889545559944989", "4988999449432=+=}1=}53549894595559459498", "559899951=))2===11}}35455455545359559998", "55541=);;;;;52}7}}3};_+25545554355455948", "993);;;;;;;;1531245+;;;;_=34955333599549", "447;;;;;;;;-;)+=15}_;;;;;;;3995535999999", "99_;--;;;;;;;_7}}7=_;;;;;;;7994535998899", "94_----;;--;;;=+=7+*;;;;;;;=455555599999", "95;----;;)7}=;)+7++;;;;;;;;7444554459999", "4+;-----;=777;_=))+;;;;;;;;7444554454994", "5;;-----;+==);;))));;;-;;;;7444555549444", "7;-------_);--;_)))-;--;--;)445555499455", ";;------;;;---;;)))-----;;-;3}=155445555", ")------;---:--;;)));-------_++=}54445555", "5);-;---------;;_));-------)++=144444555" ], [ "8988$8#$8989994494988$$899994455499880&8", "99$#89999889994988998$8998894945944998#0", "98$898#898899999999899988$88995599449980", "999898#8889941++))+149988888895594999999", "98988888$0893=_____)+4999888895549999499", "98889#&80&89}1}11227)9894488444598899994", "9999980$80892171133}+9889949444598898899", "8899898#88855}7}1}1138899998895598988994", "8899999989953}7}233159949999884544499989", "8949944988945}7}111145498889445549899999", "4498944599943}7}11=195998888545549944989", "49889994493}1=+=11=155549894595559459498", "55989941+)*;3}=711}=+}555454545559559998", "55537)_;;;;;2511}15+*;;)7345554555455948", "993_;;;;;;;;=111343)*;;;;*+5955553599549", "44=;;;;;;;;;;_77}1=*;;;;;;;1995555998999", "99);;;;;;;;;;;77}}=*;;;;;;;=994555998899", "94_;;--;;;;;;;)=}7+;;;;;;;;=455555599999", "95_;---;;));;;)}=++;;;;;;;;=444554449899", "47;;;--)77+;;;;++++;;;;;;;;+444554444999", "4);;;-;++==;;;;)+++;;;;;;;*+444555549499", "2;;;--;_++_;;;;_)));;;;;;*)7344455499455", "+;;;;;-;__--;;;;)));;;;-;)+7154455445555", "1;;;;;;;;----;;;)));----;)+}344455455555", "5};;;;;-------;;)))_---:-;_)344455444555" ], [ "8988$8#$8989994494988$8899994455599880&8", "99$#89999889994988998$8998894945945998#0", "98$898#898894511}15999988$88945599449980", "999898#888942)____)+49988888895594499999", "98988888$0857))))++)19999888895549999499", "98899#&80&81+}}1233}18894488444598899944", "9999980$8#83===7111}48889949444598898849", "8899898#8881177711219889999884559898$994", "8899999989951777122399944894884544499989", "89499454889437==11}245598884445549899999", "5498944599931=+=}}=195999888545559944989", "4988999553=_1=++}}=}13549894595559459498", "5599442+_;;;7277}7}+;;)=2455545359559998", "5551);;;;;;-=552}55);;;;;_75554355455948", "993;;;;;;;;-;+7}132_;;;;;;;2955333599549", "44=;---;;;;;;;=}}}+;;;;;;;;}995535998999", "99)-----;;;;;;)7}7+;;;;;;;;}994535998899", "94)------;;;;;_}}=);;;;;;-;7455535599999", "95;-------;;;;;=+));;;;;;-;+444555449899", "41;----_---;;;;)++);;;__;;;)444555444999", "9+;--;}}_----;;_+));;;)7}+_)444555549499", "4_--;+=}7----;;;)))--;)7}});544555499455", "1;;;;))+};-----;)));--;+}=_;244555455555", "5)--;-;_;--:----)));---;;;;1444455555555", "52;--;--:--::---__)*-----;74444455455555" ], [ "8988$8#$8989994444988$$8999944554998$&&8", "99$#89999889945999998$899889494594499800", "98$8980898893=++)+}499988$8899559944998&", "999898#88941=_***__799988888895594999999", "98988888$#9))+7}}11=49999888895549999499", "8$889#&80&9++}}1333198894988444598899994", "9999980$8#9==777}11588889949444598898899", "8899898#889}77}}72348889999889559898$994", "8899999989951777}135999448998845444999$9", "8949945488941==7}11345598884445549899999", "44989445994}1+++}}=145999888545559944989", "498894951=_;}7==}}=7_)=14895595559459498", "5599437_;;;;)5}1}}}=;;;;*+15545559559998", "555}_;;;;;;-_543155);;;;;;_5554355455948", "993;;;-;;;;;;_7}1}1_;;;;;;;3955533599549", "447;---;;;;;;;)7}=+;;;;;;;;2995535998999", "99+-----;;;;;;_}}=+;;;;;;-;1994535998899", "94)-------;;;;;==+);;;;;;-;=455555599999", "95;-------;;;;;)))))++);-;;=444554449899", "41;--------;;;;_+)))=}}+-;;+444554444999", "97;--;;-----;--;)))_=}}+;;;_344555549499", "9)--;}}+;----;--)))--)=_;;;;144555499455", "5_;;+711+-------)));--;;;;;2444555445555", "57;-_)71=---:-;;)));----;)14444455455555", "53);;;__-----:-;;;);--;}5444444455444555" ], [ "8988$8#88999994444988$$8999944554998$&&8", "99$#89999889521112398$899889494594499800", "98$898#89883}_____)599988$8899559944998&", "999898#8997)__)))+=399988888895594999999", "989888898$}_)7}1333299999888895549999499", "8$899#08##1_+77}}21588894988444598899994", "999998#88$3+=7}1}12488889949444598898899", "8899898$98917771}1249889999889559898$999", "889999998994}=7}}135999448998845444999$9", "894494548895}=+=}}}255598884445549899999", "4498944599})}=+=}}=}+7249889555559944989", "49889441+*;;717}}7=7*;;*)195595559459498", "55992=_;;;;;)532}11+;;;;;;75545359559998", "555);;;;;;;;;}32213);;;;;;)5554355455948", "991;;;;;;;;;;;+7}=1);;;;;;_4955533599549", "44+;----;;;;;;)}7++;;;;;;;*5995535998999", "99)------;;;;;;7=++;;;;;;;;2994535998899", "95;-------;;;;;)))+++);;-;;1455555599999", "91;--------;;;-;)_)+}}+--;;7444554449899", "4=;---------;;;;)))+}}+;-;;)594554444899", "9);--------:-;;;)_)-;+_;;;-_344555549499", "5_;--;+_------;;)_)--;-;;;_3444555499455", "1;;;;7}}=-----;;)_);---;_+34444555445555", "5=;-;+=11*-----;;;);;-_34444444455455555", "53+;;;)7)-------)))-;;;54444444455444555" ], [ "8988$8$88999455555988$$8999944554998$&&8", "99$#899998851+))))=48$899889494594499800", "98$899#8983=)*__;_+999988$88945599449980", "999898$894___)=}122999988888895594999999", "9898888988)_)=}1233599999888895549999499", "88899$08#8+))77}}11588894988444598899994", "999998#8883777}1171488889949444598898899", "8899898$9892777}11249889999889559898$999", "884999999995}==7}135999449948845444999$9", "89449554885}7===}}}135549884445549899999", "549995452=;_1==71}=7);)=2989555559944989", "4999437);;;;73}1}7=7_;;;;)95595559459498", "559});;;;;;;)543131+;;;;;;25545559559998", "55};;;;;;;;;;+}}172=;;;;;;15554555455948", "94);;;-;;;;;;;=}7+}+;;;;;;19955555599549", "43;------;;;;;)}=++*;;;;;;=9995555998999", "9=;-------;;;;;=+))+));;-;)9995555988899", "4_;--------;;;;))_)+7}};;;_4455555599999", "2;;---------;;;_);))}}};;;;7444554449899", "};---------:-;;*);_-;++;;;;)494554444899", "};----------:-;__;_--;-;;;)4444555549499", "_;-----;)_----;;_;)----;_+54944555499455", "=-----_+77;----;;;);--+24444444555445555", "5_----;)=};-----;;);;;)44444444455455555", "557;---;)+;----)+));;;;14444444455444555" ], [ "8988$8$8999431+=7}298888999944554998$&&8", "99$#89999891)_;___)3888998894945945998#0", "98$899$899+___))++}999988$88945599449980", "999898$895___+}1355999988888895594999999", "9898889984___+7}112399999888895549999499", "98899$#8$9=++=}1211588894488444598899994", "999998$88857777}111588889949444598898899", "8899998898927==711149889999889559898$999", "884999499953====7155999449948845444999$9", "8954455491_=7=7}12}}7}149884445549899999", "5499951+*;;)37}}}1==);;_=989555559944989", "5995=_;;;;;;153113=7);;;*}95595559459498", "55+;;;;;;;;;+5312}7=;;;;;)55545559559998", "53;;;;--;;;;;)}}}+1};;;;;)45554555455948", "4+;------;;;;*}}=+=+;;;;;)44955553599549", "5_;-------;;;;+}=+)_;;;;;;59995555998999", "};---------;;;)++)_)+=+)_;39995555988899", ");---------;;;;));_))=}17;)4455555599999", ";;----------;;;)_-;;_)}1=;;1444554449899", "_----------:-;;_*-*;--;);;+5544555444899", ";---------;*-;;_;-_-----;)54454555549499", ";-------;)=+;-;;;;_;--_+1554944555499455", "7;------;)+=)----;);-;144544444555445555", "51);-----_)+;--;;;);;;)54444444555455555", "55=;---;-------)););;;;14444444455444455" ], [ "8988$8$89995}+)___+58888999944554998$0&8", "99$#8999992+______)2888998894945945998#0", "98$899$895___)=}122999988$88945599449980", "999898$893___)71233499988888895594999999", "9898899982_)_+7}111399999888895549999499", "98899$#8$877777}22}588894488444598899994", "999998$888577=7}111488889949444598898899", "8899998898917==7}1399889999889559898$999", "8949994493}77777}125999449948845444999$9", "9954453});*177}}157}++}39884445549899999", "5594});;;;;+5}1}14==+;;_}889555559944989", "55+_;;;;;;;)543153=7);;*_995595559459498", "5+;;;;;-;;;;+1}17))7*;;;;255545559559998", "2;;;-----;;;;=}7+)71;;;;;345554555455948", "7;-------;;;;)}}=)+=;;;;;354955553599549", "_;--------;;;_}=+___;;;;;199995555998999", ";;--------;;;;+));__;;;__749995555988899", ";;---------;;;)));__;;*+}134455555599999", ";----------;;;_);-;;--*+}124544554449899", "-----------;)))_;-*;---;)+15444555444999", "----------_++77);-_;-:---;34454555549499", ";---------_)+=+;;;_;;;=71554944555499455", "1);--------_));--;);-;345444444555445555", "45}_----;---:-;_;;);;;+44444444455445555", "55+;-----------_;;);;;*54444444455444455" ], [ "8988$8$89993=_**___}8888999944554998$&&8", "99$#899999}_____)))28889988949459449980&", "98$899$893___)=1353499988$8894559849998&", "999898$891*;_)7}112599988888895599998999", "9898889982)+)+}}121599999888895548999499", "98899$#8$8=7}=7}131588894488444598899994", "999998$888477=7711198888994944459888$899", "88999988995}77==71399889999889559898$999", "894994441)777}}}2113999448998845444999$9", "995551+_;;)3}}}1317}++739884445549899999", "53}+;;;;;;;1511}43+=)*;_3889555559944989", "3);;;;;;;;;+53111++=);;;+995595559459498", "};;;---;;;;;)7}7+*)7;;;;)455545559559998", ");------;;;;_}}}+;71;;;;)445554555455998", "_--------;;;;)=+_;)=;;;;)459955553599549", ";---------;;;_=+);__;;;;)499995555998999", ";----------;;;++_;__;;--;249994555988899", "------------;;_);;__;;---)54455555599999", "------------_++++___;----;+=+}5554449899", "-----------_+==7=;_;---:-;))+15454444899", "-----------;)++=_;_;-;-:--;)}54455549999", ";------------;;;-;_;__7))_)+344555499455", "52}*-----;--:----;_;--544444444455444555", "553);-------:--;;;_;-;744444444455444455", "552_---------:-_;-_;;;)44444444454444455" ], [ "8988$8$89941+_;*___}8888999944554998$&&8", "99$#8999997_*__))))18889988949459449980&", "988899$892___)=1353499988$8894559849998&", "999898$89}*;_)7}112599988888895594998999", "9898899981)=++}1121599999888895548999499", "988998#8$8+7}77}131588894488444598899994", "999998$88857777711298888994944459888$899", "88999988953777==}1399889999889559898$999", "89499451+;177}}13135999448998845444999$9", "9953}+_;;;+3}11}577}+=159884445549899999", "57);;;;;;;_553}191+7)**)4889555559944989", "7;;;;;;;;;;+1111})+7);;;1995595559459498", "_;;;--;;;;;;)777)*+7;;;;=455545559559998", ";;-----;;;;;;+=});}1;;;;+445554555455998", ";-------;;;;;+7=_;+=;;;;)459955553599549", ";;--------;;;;+)_;)_;;;;)499995555998999", "--;----------;))_;__;;;;*549994555988899", "------------;)=7=+)_;;;;;}54455555599999", "-----------;)+7}}))_;;--;)35554554449899", "-----------;)+77=;);;;-----;+=}}25454899", "------------;;;;-;_;;---::-;)+++}1349444", ");;------;;------;_;_;);----;)+7}3349455", "445+;------------;_;--24517+))}545444555", "555+;----------;;;);--744444444444444455", "553+;----------;_;_;--)44444444444444455" ], [ "8988$8$89942=_*___)1888899994455499880&8", "99$#8999997_____)__1888998894945945998#0", "988899$891___)=1233999988888945599449980", "999898889=;;_)7}113499988888895594999999", "9898899987)+)+}1111599999888895549999499", "988998#889)}}77}131588894488444598899994", "999998888837777}112988889949444598898899", "88999988942777==}1599889999889559898$999", "89499451))17}}}}5445999449948845444999$9", "9952})_;;;}2}11}5+}1}2549884445559899999", "2=);;;;;;;+552}197=7)*)}9889555559944989", ");;;;;;;;;;711121)+7);*_5995595559459498", ";;;;;;;;;;;;+}7})_+=;;;;}455545559559998", ";;;----;;;;;)=}}_;1};;;;=445554555455948", ";------;;;;;;===_;=+;;;;)454955553599549", ";;--------;;;_+7_;)_;;;;_499995555998999", "--;----------;++)_)_;;;;;349994555998899", "------------_+}}7))_;;;;;}54455555599999", "-----------;)+7}=;);;;;-;794444554459899", "------------))))_;);;;---;=1545554454994", "---------;;------;);;;-------)+712234444", ")__;-------------;);;_-------_+++=}13555", "455=;-------------);;-)1+_;--;_)=}112355", "555=;;----------););--)444452}==55454455", "555=;---------:-)_);--_44444444444444455" ], [ "8988$8$899937)____)38888999944554998$0&8", "99$#899999})_______1888998894945945998#0", "988899$892____+}121999988$88945599449980", "9998988897;;_)7}123499988888895594999999", "989889998=)))+}}111599999888895548999499", "988998#884)}7=7}131588894488444598899994", "999998888817777}112988889949444598898899", "88999988993777==}2599889999889559898$999", "89499455=)}7}}}}3445999449948845444999$9", "99531=_;;;11}1115=}135549884445559894999", "3})_;;;;;;=421}}4}+7__=59889555559944989", ");;;;;;;;;_121142++7_;;_5995595559459498", ";;;;--;;;;;;=}7=)_=+;;;;}455545559559998", ";;-----;;;;;+}77_;17;;;;+445554555455948", ";-------;;;;;+=}_;7);;;;)454955553599549", ";;--------;;;)==;;);;;;;_599995555998999", "-------------;+=););;;;;;349994555998899", "------------_)}}7_);;;;;;754455555599999", "-----------;)+7}=;);;;;;;+45544554459899", "-----------;))+)_;);;;---_54444454454994", "---------;;------;);;;-----;+23}25549444", ";;;--------------;);;;-------;)+7=}13355", "555};-------------);;;-_-----;)+==7}2255", "555};----------;+_);--;5437)*-;;71132555", "555};---------:;=));---34444443144444455" ], [ "8988$8$89995}))__)+5888899994455499880&8", "99$#8999992)__;____}888998894945945998#0", "988899$895____+7}11999988$88945599449480", "999898889};*_)71233999988888895594999999", "9898899987_)_+}}}}1399999888895548999499", "988998#884+}7=7}22}588894488444598899994", "999998888817777}111988889949444598898899", "88999988995777=7}2399889999889559898$999", "894994441+}77}}72555999449998845444999$9", "99553}+_;;1}}1}137}155549884445549894999", "51=);;;;;;=511}74}+7_)759889555559944989", "7;;;;;;;;;)333155++7_;;*2995595559459498", "_;;;;;;;;;;_7}==)_=+;;;;+455545559559998", ";;----;;;;;;)=7});1=;;;;)445554555455948", ";------;;;;;_=}7_;7);;;;;554955553599549", ";;------;;;;;+++_;);;;;;;399995555998999", "-------------;)+*;);;;;;;149994555998899", "------------;_+=+_);;;;;;+54455555599999", "-----------;)+}77_);;;;;;_44544554459899", "-----------;)+}7););;;---_44444554454999", "-----------;_)));;);;;---;;+143255549444", "---------;--------_;---------)+=7}159455", "3117--------------);--;------)+++=}14455", "5553;----------;)));--)51);--;_+}}254455", "5551;---------:-=));--;54443}+_145444455" ], [ "8988$8$89995}7)_)+}9888899994455499880&8", "99$#8999992+_*;____1888998894945945998#0", "988899$893___)+=771999988$88945599449480", "999898889}*__+}1333999988888895594999999", "989889998=___=7}}11599999888895549999499", "988998#88577=7}1311488894488944598899994", "999998888817777}111988889949444598898899", "88999988984777=711399889999889559898$999", "89499444571777771545999449998845444999$9", "9955527);;1}}}}137}155549884445559894999", "531+_;;;;;+5}1}74}=}))}59889555559944989", "1_;;;;;;;;)5431547+7_;;_2995595559459498", ");;;;;;;;;;_=77}=_=+;;;;+455545559559998", ";;;---;;;;;;)7}7_;1=;;;;_545554555455948", ";------;;;;;_==+_;7);;;;;554955553599549", ";;------;;;;;)+=_;);;;;;;599995555998999", ";;;------;;;;;+);;);;;;;;149994555998899", "----------;;-;));;);;;;;;=54455555599999", "-----------;;_)+););;;;;;_44544554459899", "-----------_+777=;);;;---_44444554454999", "-----------)+77}_;);;;----)}123555549444", "-----------_))+)--_;-------;)+++24499455", "7+)_----;;--------);--;----;)++=14445555", "555};-----------;;_---11+;--;_7154445555", "555};---------::;_)---_54437+=4444444455" ], [ "8988$8$899952})=7}39888899994445499880&8", "99$#8999995=)_____)4888998894945944998#0", "988899$892___))+++2999988$88945599499980", "999898$891__)=12355899988888895599999999", "989889998}__)7}1121499999888894548999499", "988998#8857+=7}12}2488894988944598899994", "999998$8882}7771113988889949444598898899", "88999988989}777}11599889999889559898$999", "89499944922777==1545999499998845444999$9", "99544527);}77}}13}}155599889445549899999", "5553=_;;;;)5}1}}52=7))}59889545559944989", "5+_;;;;;;;)543}291=7)*;_}994595559459498", "};;;;;;;;;;)7}11}_++;;;;)455545559559998", ");;;-;-;;;;;)7}=)*}7;;;;_545554555455998", ";;-----;;;;;_==7);=+;;;;;359955553599549", ";-------;;;;;)+7);)_;;;;;399995555998999", ";;-------;;;;_=)_;)_;;;;;149994555998899", ";---------;;;;))_;)_;;;;;=54455555599999", ";---------;;;;;);;);;;;;;)94544554449899", "-----------;;;_);;);;;--;_44494554454899", "----------;)++==_;);;;---_+}144455549444", "----------)+==7+;;_;-----*+}154455499455", "_;--------_)===;--_-------_+144455444555", "452);--;;--;;;--;;_---1});;;244444444555", "5557;---------:-;__---_54455444444444455" ], [ "8988$8$899943}1223988$8899994445499880&8", "99$#89999991)____)}98$8998894945944998#0", "988899$891))__)))+1999988$88995599499980", "999898$89}__+}13353889988888894599999999", "9898899982_)=7}1223999999888894548999499", "988998#885++7}11}23988894988944598899994", "999998$8881}77}1}15988889949444598898899", "88999988989}77}}12599889999889559898$999", "89499949995}7==71545999499998845444999$9", "995445553+=7777}12}}55599889445549899999", "55995}+*;;)3}}}}15===+}59889545559944989", "55});;;;;;;3521}45+7)*;_+994595559459498", "5);;;;;;;;;=32125+)7*;;;*255545559559998", "1;;;-;;;;;;;)7}}=_71;;;;;}45554555455998", "7;-----;;;;;_7}}+;)=;;;;;}59955553599549", ");------;;;;;+7+);_);;;;;}99995555998999", "_;------;;;;;_7+);_);;;;;+49994555998899", ";;-------;;;;;++_;__;;;;;)54455555599999", ";---------;;;;;)*;__;;___)45544554449899", "-----------;;;;_*;__;;)}1155594554449899", "------------;;;;;-_;--)=}154454555549999", "----------;_)_;;;-;;---;)+14944555499455", ";--------)++=7_-;-*;--:--;14444555444555", "2+;;-----)++=+---;_;--=}}344444455455555", "555);----;)));--))_;-;_54444444454444455" ], [ "8988$8$89994555444988$$899994455499880&8", "99$#89999891+)))+}498$8998894945945998#0", "988899$895}+_____)5999988$88945599449480", "999898$897_)+7}}211889988888895594999999", "9898889983_+}}13331999999888895548999499", "98899$#8$4)=77}}115488894488944598899994", "999998$884777}}=134988889949444598898899", "88999988985}77}}13498889999889559898$999", "88499949994}==7}2545999449998845444999$9", "89544554941}===}13}}35599884445549899999", "5499953}+;_1777}}5==7+149889555559944989", "59991);;;;;13}1714==+;;;)595595559459498", "53+*;;;;;;;}451143)};;;;;)55545559559998", "57;;;;;;;;;;+}}77)+1;;;;;_45554555455948", "4);----;;;;;;=}}=_)=;;;;;_59955553599549", "3;------;;;;;)1}+;_);;;;;;59995555998999", "1;------;;;;;;==);_);;;;;;29995555998899", "=;-------;;;;;+=);_))__;;;14455555599999", ");--------;;;;_)_;_+7}1}_;35544554449899", "*----------;;--__-;)+7}1);)5444555454899", ";--------------;_-;;-;)+;;74454555549499", ";--------------;;-;;:---;_54945555499455", ")-------;;;-----;-;;-;-;7344444555445555", "1;-----_++__--;---;*--}54444444455455555", "53=;--;)+=7)-:--)))_;;)54444444455444555" ], [ "8988$8$89999494444988$$889994455499880&8", "99$#8999988521}159998$8998894945945998#0", "98$899$8993)____)=9899988$88945599449480", "999898$891+))))+7+2889988888895594999999", "9898888982)}}13331}999999888895548999499", "98899$08$4+77711113488894488444598899994", "999998#884=77}72235988889949444598898899", "8899998899}7777133598889999889559898$999", "88499949994177712555999449998845444999$9", "89549554984}==7115}}35549884445549899999", "5499954541)}===}13==}7299889555559944989", "5999951+;;;1}77}75==+;;;)195595559459498", "5595=_;;;;;=421734}};;;;;;15545559559998", "55+;;;;;;;;)13112=+1;;;;;;+5554555455948", "95;;---;;;;;;+77=_)=;;;;;;+9955553599549", "41;-----;;;;;)7}=__);;;;;;)4995555998999", "9=;-----;;;;;;=7);_);;;;-;;5995555998899", "4)-------;;;;;)));)=7=);-;;3455555599999", "4_--------;;--;))_+=}1};-;_5444554449899", "5;-------------__-;)+}+;;;;=494555454899", "3;-------------;_-;;-_;;;;;+444555549494", "};--------------_;;;---;;;=4444555499455", "1;-----------;;-_;;;---;=}44444555445555", "5_;--;+)------;-;;_*--744444444455455555", "52_;)}=})----:--;;)*;;_54444444455444555" ], [ "8988$8#88999994494988$$889994455499880&8", "99$#89999884445988998#$898894945945998#0", "98$899$89837+)))739899988$88945599449480", "999898$895=_**__))3889988888895594999999", "9898888983+=7}132+}999999888895548999499", "88899$08$3=}}1123}1488894988944598899994", "999998#889}=+=1}113988889949444598898899", "889989889517771232598888999889559898$999", "88499999995177122445999448998845444999$9", "894494548892771115}}55549884445549899999", "549894459921+==}11==21499889555559944989", "49989995});}7==}}1==);;_+145595559459498", "559943=_;;;+5}}77457;;;;;;)5545559559998", "555});;;;;-)542}331};;;;;;;2554555455948", "99};;;;;;;;;_=777))+;;;;;;;}955533599549", "44=;---;;;;;;_+=+___;;;;;;;+995535998999", "99)-----;;;;;;=7+)_);;;;;-;_494555998899", "94_------;;;;;_))_)==+);--;;345555599999", "94*-------;;--;))_++}}};-;;*544554459899", "45;-------;----_);_+=}};--;;}44554454899", "95;;-----------;_;;;-*);;;;-_54555549494", "93;-------------_;_;---;;;;)544555499455", "51;----------;;-___;----;_+5444455445555", "55)+}7)-------;-;*_;;--}5444444455455555", "5511}}1)---:::--;-_;;;;74444444455444455" ], [ "8988$8$88999994494988$$889994455499880&8", "99$#89999889994988998#$898894945945998#0", "98$899$89891}==}398899988$88945599449480", "999898$899=____)))3889988888895594999949", "9898888989=+++7}})}999999888895548999499", "98899$08#37}}1233=7488894988944598899994", "999998#889}=+}}}1}2988889949444598898899", "8899998899377}2232298889999889559898$999", "88499999993}7}122545999449998845444999$9", "894494548892771112}155549884445559894999", "549894459942==711}=745499889555559944989", "4998999555+}===}1}=7)_)+}595595559459498", "5599494});;+2777733+;;;;;;_2545559559998", "55541+_;;;;_5527295=;;;;;;;)554555455948", "995);;;;;;-;=}}7}}7);;;;;;;_445553599549", "445;-;;;;;;;;)777+)_;;;;;;;;395555998999", "993;----;;;;;;+++))_;;;;;;;;}94555998899", "991;----;;;;;;)=+))_)_;;;-;;)44555599999", "991;-----;;;;;;)))))+7}})-;;_44554454899", "441;------;----*)_))+=}17;;;_14454454999", "99};;------;---;)));;_+}+;;;-;5455549494", "99};--------;---)))-::-;;;;;;34455499455", "551+)_-------;--_));----;;;_144455445555", "553}}1+-:-----;-;));;;--+}54444455455555", "55}}11};----::--;;);-;;;1444444454444455" ], [ "8988$8#88989994494988$$889999445499880&8", "99$#89999889994988998#$898894945945998#0", "98$898#898853125988899988$88945598449480", "999898#8991)))_))=5889888888895594999949", "9898888889})))+=+)+499999888895548999499", "88899#&8#9}}112337+488894988944598899994", "999998#88817=}}1217988889949444598898899", "8899898$9857=}2122148889999889559898$999", "88999999893}7}122255999448998845444999$9", "894494448892771111}155599884445559894999", "44989445989577}11}=}95499888555559944989", "498899944931==+}1}=}++715995595559459498", "55989995}+_+17=71}1+;;;;;_)1545559559998", "554953=_;;;_5317}55+;;;;;;;_354555455948", "9951);;;;;-;1317131);;;;;;;;}45553599549", "444+;;;;;;;;;)==7=+;;;;;;;;;)94555998949", "999);;;;;;;;;;=}}=+;;;;;;;;;_54555998899", "994_;---;;;;;;)++));;;;;;;-;;14555599999", "994_-----;;;;;;++++;;;;_;;-;;=4454454899", "444_;-----;;-;;_)));;;_+7=);;+4454454999", "994_;------;-;;;)));;;)=}11+;;_555549444", "994}7+;---------)));--;)=}}+;;2455499455", "553111};--------_));--:--_)_;+4455445555", "5551211_--------;))_------;+144455445555", "5551}}+;--------;_)*;-;--}54444455444555" ], [ "8988$8#88989994994988#$889999445499880&8", "99$#89999889999988998#$898894945944998#0", "98$898#898894499888899988#88994498499980", "999898#8884}=)))+}58898$8888894599998999", "98988888$$3)__)))))599999888894548999499", "8$899#&80#3}}1233})388894988944598899994", "9999980$8$21711131+588889949444598898899", "8899898$889}=72}12748889999889559898$999", "88999999895177123225999498998845444999$9", "894994498893771121}145599889445549899999", "449894959895}7111}=195999888545559944989", "498899944943}=+}1}=}11349994595559459498", "5598999451++}==71}}+;;;_)=}3545559559998", "5549441+*;;_51}7725+;;;;;;;_254555455948", "9943=);;;;;;243}243);;;;;;;;+44555599549", "444};;;;;;;;*)+==}=;;;;;;;;;*54555999999", "999=;;;;;;;;;;+===+;;;;;;;;;;}4555998899", "999+;---;;;;;;+}7++;;;;;;;;;;+4455599999", "999+;----;;;;;_++)+;;;;;;;;;;_5454454899", "444+;)_--;;;;;;++++;;;;;;;-;;;3454454999", "99977}});-;;;;;_++);;;;;;;_)_;_144549494", "9997}11};--;;;;;)));;;;;;;)=}})144499455", "555+7}}1_---;;;;)))_-;;--_+711}444444555", "555=+)+);----;;;)++);----:;)7}}544444455", "555}+;;-------;-;)));-----;;;)3444444455" ], [ "8988$8$88989994494988$$899994455499880&8", "99$#89999889994988998$$998894945945998#0", "988899#898899998888899988$88945599449480", "999898$898951}++734889988888895594999949", "98988888$#97____)))199999888895549999499", "98899#&80&9}==711})=88894488944598899994", "9999980$8#51}11233==98889949444598898899", "8899898$8893+=1}}1}198899998845598988999", "88999999894377122212999449948845444999$9", "89449449889377}111}155599884445559844999", "44989445989417}11}=}95999888555559954989", "4988999449951==71}=}55549895595559459498", "55989994451=1===11}+_)+71555545559559998", "5549593}+;;;3}7=}}3=;;;;;;_+254555455948", "99551+_;;;;;1527}53+;;;;;;;;)54555599559", "4443;;;;;;--)==7}3};;;;;;;;;;24555999949", "9991;;;;;;;--;====+;;;;;;;;;;+4555998899", "9947;---;;---;+==7+;;;;;;;;-;_4455599949", "999=;--;));--;)}=++;;;;;;;;-;;3454454999", "444};;+77+;--;;+))+;;;;;;;;;;;}454454994", "9997;*=71=;--;;)+)+;;;;;;;--;;_244549444", "999=;;+=})-;-;;_)));;;;;------;;54499455", "555))+;)=;--;;;;)))_;;;;-----;))54444555", "555)));;-----;;;))));-;;---:-)+=}5444455", "5557;;--------;;_)))_------:-)=}15444455" ], [ "898888$88999994494988$889999445559988#08", "998$89999889994988998$8998894945945998##", "988899$898899988888899988$8894559944949#", "999898$89899532}159889988888895594999949", "98988888$#85=)))_)+749999888895549999499", "98899$&8#&83+))+77+)58894488444598899994", "999998#88#811}11331)38889949444598998899", "8899898$98831+71}11+48899998845598988999", "8899999989951772122159944994984544499989", "894494498895177111}}55599884445559944999", "44989445989437=}11=745499889555559954989", "4988999449955}=7}}=755549894595559459498", "55989994495237=+}11})7134455545359559998", "554959531+_;}1==7}23_;;;_)71554555455948", "99453}+_;;;;}52}=131_;;;;;;;_35533599559", "4445=;;;;;-;)7}7}32);;;;;;;;;=4555999949", "9995);;;;;;--;++=77_;;;;;;;;;_4555998899", "9993;---;;---;+7=++_;;;;;;;;;;1455599449", "9991;----_+=+;)++++_;;;;;;;;;;=454454999", "4441;---)7=7+;_7=++_;;;;-;;;;;)444455994", "9991;---)+=7);;)+))*;;;;-;;-;;;144554444", "9997;-;;_++_-;;*))+_;;;;-;;--;;;14499555", "555);__;;;;--;;;))));;;;;-------+4444555", "553_;;_;-----;;;))))_-;;;------;+5444455", "335};;-------;;;_)))_;-;;;--:--;)=}34455" ], [ "898888$88989994444988$889999445559988#08", "998#89999889994988998$8998894945945998##", "988899#898899988888899988$8894559944948#", "999898$898999443259889988888895594499949", "98988888$#893+))__)739999888895549999499", "98899#&80&841))))++)+9895488444598899944", "9999980$8#84}}}11337)9889444544598898899", "8899898$98841}=}}}11+9899498845549988994", "88999999899437=7211119944994984554499989", "8944944988943}7711}}25599884445559944994", "44989445989451==}1+755499889555559954989", "498899944995557=7}=735549895595559459498", "55989994494532=+=1117}555455545359559998", "5549494551+))3=+=}257;;_)725554335455948", "9945531+_;--)5377713=;;;;;;;)24533594559", "44455);;----_}11}33}*;;;;;;;;_5555999949", "99951;--------)+++7);;;;;;;;;;3455998849", "9995=;--------_++==);;;---;;-;+455549449", "9993)------;*_)7==+_;;;;--;---;554454999", "4443)-----)=+=)=+)));;;;--;---;144455994", "9995_----;+==7+)+)+);;;--------)44554544", "9992_--;-_+)__;;)))_;;;;------;;14499535", "555+;;;;;;;---;;_)));-;;--------*5444555", "555);-;*---:--;;__))_;-;--------;5444455", "3351;;----::--;;_)))_;------:---;1554455" ], [ "898888$889999944449888889999445559988#08", "998$89999889994988998$8998894455945498$#", "988899$898899988888899988$8894559944949#", "999898$898999994335999988888895544499949", "98988888$#8941+))_)+}4999888895549499599", "98899$080&8957)_)+++)1895489444598849944", "999998#88#892}}}1132+7999444544598998849", "8899898$88893}==}}1171899498845549988994", "88999999899952==}21212954994994554499989", "894494548899537=71}}13549884545559944994", "44989445989444}==}=755499889555559954489", "498899944995591==}=755549995595559459598", "55989994494535}=+}112=355455545354559998", "5549494443}))1}+=7215);;)=25554335455948", "9945553});;;;}5}7=135_;;;;;;)}5533594559", "444545;;;----=}1}113+;;;;;;;;;}555999949", "999557;;------;+++==_;;;;;;;;;+555498949", "99955)--------;)+==+;;;;--;;-;_555549449", "99953;-----;)=)+==+);;;;--;;--;754454999", "44453;----+7++))+)++_;;;---;--;)44455944", "99951_---;=77=))+++)_;;;--;-;;-;34554555", "9995=;-;;;+=));;))))_;;;-----;;;+4449555", "5551*;;;-;_;--;;_)))_;;;--------;2445555", "5551;;-;;;;----;__)));-;--------;1444455", "3355+;;----:---;_))_)_----------;2444455" ], [ "898888$899994944449988889999445559988##8", "998$8999988999498899888998895455945498$#", "988899$89889998888889998888894559954949#", "999898$89999999327}244988888895544499449", "98988889$#8995=)___))7499888995549449599", "98899$080&8993+))+7}=)595499444598849944", "999998#88#894}}}11231+399444555598998849", "8899998$8889417+=}}}17499498845549988994", "88999999889995177}2221554994994554499989", "8944945488999327=}}}13549884555559944994", "5498944598944457+7=725499889553359954489", "498899944995595}=7=725549995595359459598", "559899944945323===}}12)}3455545354559998", "5549494443})__2}==2115_;;;)7155535555948", "9945559})*;;;;351}1242;;;;;;;_=553544559", "444549};;;---;+7}}}33_;;;;;;;;;155499949", "999554);-------_+==7=;;;;;;;;-;755498949", "999545*--------;77=+);;;;--;;-;)55549449", "999545;--;___;-;+++++_;;;--;---;34455944", "449595;-;7)=+;-;+7++);;;;------;}4455944", "999551;-)=7}=);-_++))_;;;------;+4555555", "99955+;;)==7=;--;)++)_;;;------;;5449535", "55552___;)+;----;))))_;-;--------+445555", "55555);;;;;-----;)))));----------_545555", "33555+;;;---:---;_))));-----:---;}444455" ], [ "898888$899994944449988889999445559988##8", "998$8999988999498949888998895455945498$#", "988899$89889998999999998888894559954949#", "999898$89999994}=)))=1988888845544499449", "98988989$#89991);;_)))}99888995549449599", "98899$080&89947=7}1227+55499445598849945", "999998#88#8995+77}1111+99454555548998849", "8899998$8889991=+=1}12199498845549988994", "889999998899992}7=}122254994994555499989", "8944945488999432=7}}12549884555559944994", "54989445989444557}+712499889553359955489", "4988999449955953=7+711224995595359559598", "5598999949452}72+=}}112__)71545354559998", "5549494443});;;32=21}52;;;;;;)7355555958", "99455595);;---;2552254);;;;;;;;_55544559", "44454997;;-----;)+=72};;;;;;;;;;14499949", "9994599+;-------_7777+;;;;;;;;-;74498949", "9995444_--------;==+++;;;;--;--;+5549449", "9995995_--------;+=+++;;;;--;--;_5455944", "4495995);_;------)+++);;;------;;1455945", "9994445=)=)------*)++);;;-------;7455555", "999449}}}}=;-----;)++)_;;-------;_549535", "554544}=7}+------;)))));----------}45555", "5555447)+7_------;)))));---------_345555", "3555441_;_;--:---;)))));-----;)_;}444455" ], [ "898888$899994944449988889499455559988##8", "998$8999988999498949888998895455945498$#", "988899$898899989327}1599888894559954949#", "999898$89999999=)____)798888945544499449", "98988989$#89993+))+=7=)39888995549449599", "98899$080&899977}}1132+}5499455598849945", "999998#88#89941===}1}1}59454555598998849", "8899998$88899951==7122134498945549488994", "8899999989999841777122234994995555599989", "89449459889994551}}}11549884555359944494", "54989445989444543}=711339889553359955489", "498899944895595227+71127)+}1345559559598", "5598999449451=))37}}}}51;;;;;_=154559498", "55494944437);;;*5531}54+;;;;;;;;)5555958", "994554981;;;---;7}2115};;;;;;;;;;1544554", "99454989=;;;;----_+=7=);;;;;;;;;;7499959", "99945989+;--;----*=77=);;;;;-;--;)499949", "99954494);-------;++++);;;;--;--;;544559", "99959945+;-------;)+++);;;;----;;;155944", "449599457;--------)+++);;;------;;755945", "99944494=;-------;))++);;;------;;+55555", "99944995_--------;)))+)_;;--------;39535", "554544517)-------;)))))_-;_)_;----_34555", "555553111=;------;__)))_-;)=}7_;;_544455", "355545}}1=;----:--__))_;;-)+77);;1444555" ] ] const RickRollDesktop = [ [ "8888999888888888$$$889999994449444449445499988888888889944999944555555554999998888$$#89999", "99999998888888888899999889999999455499994444988888889944444455555995555555554998888$$#$899", "9999988$$$88899999999988$99999944499998894449988888899999888994554455554945555499988888889", "99999$$##$8999988899998$$99999999989999995555549999999988888889455555559999555555549888$$8", "889998899999998$$$889988$999999989953}}}+))))+=1254888988888999999555554994554999454498$#$", "889999999999988$8889999999999999891+))))_)))__))+=1988988899999995555554955599999944449998", "8999989988889998889988$89999999995}+____*___)))))))298999999999994555555549554999994449944", "88998$8998889888999$0###8999994531=+)+++==}11111}+)}54499899999994555555999945444555999944", "999988$899999$$##8980#0&$99999951++7}}}1111222332}++35554999899555553555999884549945494549", "9998988888998$#$0$98###0899999892)+}}7}}1111122221=+54555549455559955555999894988999555499", "999999999999998$$089$#$#899999455}===+===711}7}}11}299994554445555455555999894988899459999", "89988889998899988#$98$$$8999944995}}7====7}22112321249994549999945555555999949888894455555", "888888899988999988899988999999885131}77777}11223321155555554999999555555999459888999994499", "888888999889999999998899999999889211}7777=}11222222555549995549999955555555554989499889549", "8888899444444444449888889999444995321}7}}}111112225335998889555999533335549995544449989554", "988999444999945554988888994449555555417}}}}}}111115559998889455553553333499999554444445555", "44444449989994445559998894444444554995}}}==7}11111251}399999945335553333599995555549999555", "4444499888899499945599889444449943554421}===}1111125}__)=}25545554455333599955554554999994", "89449988888994989944498894455599533335517=+=}1111135+__;;;;;__)+=}125555599455359455999988", "994444988889998889494998445555544555353}===7}}}}7245)_*;;;;;;;;;;;;;_)71344553549955499888", "99455549889998899449949945555453331}}551=1117=+72445+_;;;;;;;;;;;;;;;;;;_75555554995599889", "945545549994999444499444555554517))_)15453337=}3545+_*;;;;;;;;;;;;;;;;;;*_2445535495549889", "55499995544544499999455555331}+_*;;;*}535552}12355=_;;;;;;;;;;;;;;;;;;;;;_}555455555359944", "499999945555549888889455317+)*;;;;;;;+2}}127=7=+++*;;;;;;;;;;;;;;;;;;;;;;*+544999553355448", "999999999454999888899993+_*;;;;;;;;;;;;;)+++++++)_;;;;;;;;;;-;--;;;;;;;;;;)544999945554998", "999999994554988888888893);;;;;;;;;;;;;;;_++++++));;;;;;;;;;----;;;;-;;;;;;_344499994554999", "999999999444499888889453);;;;;;;;;;;;;;;;++++++)_;;;;;;;;;;----;;---;;;;;;_344999994554988", "999999999444444988994553+;;;;;;;;;;;;;;;;)++++))_;;;;;;;;;;----;;--;;;;;;;_144999455555988", "999999999449994444444943=*;;;;;;;;;;;;;-;)+))))_*;;;;;;;;;;---;;;-;;;;;;;;;)55555554555988", "999999999449989944999993);;;;;;;;;;;;---;_+))))_;;;;;;;;;;----;;;---;;;;;;;;75533499455988", "499949994449888994999993);;;;;--;;;;;----_+)))__;;;;;;;;;;----;;;--;;;;;;;;;)5555999555499", "444449999449899444449993);;;;;;-;;;------_+))__*;;;;;;;;;;---;;;;--;;;;;;;;;_1555549555444", "999999999449949999944945=;;*));--;;------_+)___;;;;;;;;;;;---;;;----;;;;;;;;;7553334553499", "9999999994444498888955531=}22}_;---------_+____;;;;;;;;;;---;;;;----;;;;;;;;;+444533333499", "999999999449999888999451}77}}+;----------_)____;;;;;;;;;;;;;;;;;-----;;;;;;;;)544455533544", "444444494449999999994437===7}7;----------_)__*_;-;;;;;;;;;;;;;;;-------;;;;;;_344444555554", "5555554444499999999945177===7}_----------_)____*;-;;;;;;;;;;;;;---------;;;;;_144444555555", "555555444449999999994317+=++7}_----------_)_____;--;;;;;;;;;;;;--------;;;;;;*144444455555", "555555444449999999945}+)_)++7);----------_);;;;;;---;;;;;;;;-----------;;;;;;_144444455555", "3333355554444999444452));;;;;------------_)*--;*;---;;;;;;;-----:------;;;;;;_354444455555" ], [ "8888999888888888$$$889999994449444499445499988888888889944999944555555554999998888$$#89999", "9999999888888888889999988899999945549999444498888888994449445555599555555555499888$####899", "9999988$$$$$899999999988$999999444998999455559988888999998889945544555549455554999888$8889", "89999$$##$8999988899998$$999999999888432}77+))++=1554998888888945555555999955555554988$$$8", "889998889999998$$$889988$999999989895=))_))_)))_))+739988888999994555554994554999454498$#$", "889999999999988#$$8899999999999989951+)___*;____)))))2988899999995555554955599999944449998", "8999989988$89998889988$8999999988431=+))++++=}}111}+)=499998899999555555549554999994499944", "88998$89988898889998&0#089999999995+)=}}}1112222332}++599899999994555555999945494555999944", "99998$$899999$$##898&00&$9999994551)+7777}}111223321=+355999999555555555999884549945494559", "9998988888999$##X##$089999989453=+7=====7}1177}}1}1555549455559955555999894988999555499", "99999999999998$$$089$###8999994454917777==7=7121112212494555445555455555999894988899449999", "8898888899889998$#$98$$#89999449993}}}7777777122233222494549999945555555999949888899455555", "888888899988999988899988999999888991}77777777}12222225555554999999555555999459888999994499", "88888899988999999998889999999988999522}777==7}11122355549995559999955555555555989499889549", "8888889449444444449888889999944994555951}}}}}112211255498889555999533333549995554449989555", "98889944499994554498888899999955555599931}}7}}11111235729989453555553333499999555444455555", "44445449989994445559888899444444554999941===}1}1111223)__+}1333555555533599995555549999555", "4444499888899499945599889444449943554999}===}}}111115}__*;;;;*_)+7}13555499945554554999994", "88949988888994989944498894455599433335547=+=}}}}}}}54+__;;;;;;;;;;;;;_)=134455359955998888", "9945599888899988899949984455555495532}1517=7}7===}344}_*;;;;;;;;;;;;;;;;;_+555549955498888", "99455549888998899449949945555453317)__+55311====}345=_*;;;;;;;;;;;;;;;;;;__755554995599889", "9455455998949994444994545555552}+__;;;_133331771235=_;;;;;;;;;;;;;;;;;;;;;*+45555495549889", "5549999554444449999945555531}+);;;;;;;;735527==7=+);;;;;;;;;;;;;;;;;;;;;;;*)55455555359944", "4999999455554498888894555}+)_;;;;;;;;;;;_}1}=+==++_;;;;;;;;;;;;-;;;;;;;;;;;_34999553555449", "9999999994549988888899955=_;;;;;;;;;;;;;;_+++++++);;;;;;;;;;----;;;;-;;;;;;_34999945554998", "99999999955498888888889557*;;;;;;;;;;;;;;_++++++)_;;;;;;;;;;---;;----;;;;;;_54499994554999", "9999999994444998888894555}_;;;;;;;;;;;;;;_++++++)_;;;;;;;;;----;;---;;;;;;;*74999994555988", "99999999944444498889445552_;;;;;;;;;;;;;;_+)+))));;;;;;;;;;----;;--;;;;;;;;;_1499455555988", "99999999944999444944499553);;;;;;;;;;;;;;_+)++))_;;;;;;;;;----;;;---;;;;;;;;;)555354555988", "99999999944988899499999553);;;----;;;;--;_+))))__;;;;;;;;;----;;;---;;;;;;;;;_253599455998", "99494999444988899998989553};;;--;-------;_+))))_;;;;;;;;;;----;;;----;;;;;;;;;+55999455499", "494949999449899944449995533+;;;;--------;_+_))__;;;;;;;;;;---;;;;---;;;;;;;;;;_25549555549", "9999999994499999999449955531_;-----------_+_))__;;;;;;;;;----;;;-----;;;;;;;;;;15335433499", "9999999894444998888945555531);-----------_)_)___;;;;;;;;;;-;;;;;------;;;;;;;;;14533333599", "999999989449998888999455551);------------_)_____;;;;;;;;;;;;;;;---------;;;;;;_24455555549", "5444449944499999999945311}}7_;-----------_)_____;;;;;;;;;;;;;;----------;;;;;;_24444555545", "555555444449999999995}===}}}=_;----------_)*__;;;-;;;;;;;;;;_*----------;;;;;;)54444555555", "555555444449999999995}===7}1}_;----------_);;-;;;--;;;;;;;;;;----------;;;;;;;+54444455555", "5555554444499999999945}=++711)-----------_);_---;--;;;;;;;-----------;;;;;;;;*}44444455555", "33333555544499999444551=++7}=;-----------_)))))__;--;;;;;------:------;;;;;;;+544444445555" ], [ "8888999888888888$$$889999994449444449445599988888888889944999944555535554999988888$$#88999", "9999999888888888889999988999999945549999555599999898994444445555599555555555499888$#$##899", "9999988$$$88899999999988$99999944499999511==7+)))+=1554998889945544555599455554999888$8889", "89999$$##$8999988899998$$99999999988893+)______)___)+758888888945555555999955555554988$8$8", "889998899999998$$$889988$9999999898952})__;;;;;____)))+59898999999555554994554999454498$#8", "889999998899988#$$88999999999999888527+))++====}1111}))19999999995555554955599999944449998", "8999989988$89998889988$8999999988889}))77}}1112222332}+=4998999999555555549554999945449944", "88998$89998898889998&0#08999999999997)+7777}}111123221+=4999999994555555999945444555999944", "99998$$899999$$##898&00&$999999444992)+7======}1177}11735999999555555555999884549945494559", "9999988888999$##X##$089999989455537=77==77=71211122155544455359955555999894988999555499", "99999999999999$$$089$###899999444995}7}777777==1122332154555445555555555999894988899444999", "8898888899889998$#$98$$#8999944998993}7777777=71122222394559999945553355999949888894455555", "8888888999889999888999889999998889995531}777==7}111225555554999999553355999459888949994599", "88888899998999999999889999999988999554991}7777}1222115549945559999955555555555999499889549", "88888894494444444498888899999449945559993111}77}111113572999555499553333549995555449999555", "9889994449999455549888889999995555559999}7==7==7}111223)__+}123555555333599999555544455555", "4444544998999454555988889944444455549999}===}}=}111115}__;;;;;*_)=711355599995555559999533", "94444998888994999555998894445499435549957+==}}=7}}7}54+_*;;;;;;;;;;;;;_+}25955354554999994", "889499888889949899444988944555994333217}==+=}77===}5447_;;;;;;;;;;;;;;;;;;_755559955999888", "99455498888999888999449845555554431=)__+}}=}}+==71543+_;;;;;;;;;;;;;;;;;;;;_15549955599888", "994555498889998994499449455555317)_;;;;_1211317}1233)*;;;;;;;;;;;;;;;;;;;;;*}5554995599889", "94554554999499944444945455531}+_;;;;;;;;73317===7=+_;;;;;;;;;;;;;;;;;;;;;;;;=5555495549889", "554999955445444999994555557)_;;;;;;;;;;;_25}=====+);;;;;;;;;;;;;-;;;;;;;;;;;)4455555359944", "49999994555544988888945553);;;;;;;;;;;;;;71==+=+++_;;;;;;;;;;;---;;;;;;;;;;;)4449453355449", "99999999945499988889899553);;;;;;;;;;;;;;_+)+++++);;;;;;;;;;;---;;----;;;;;;)4499945555498", "99999999955498888888889555=;;;;;;;;;;;;;;)+_++++)_;;;;;;;;;;----;;---;;;;;;;;7499994554999", "999999999444499888889455552_;;;;;;;;;;;;;)+;)++));;;;;;;;;;----;;;--;;;;;;;;;;199994555988", "999999999444444988894455553+;;;;;;-;;;;;;_);)+))_;;;;;;;;;;----;;;---;;;;;;;;;)59455555988", "999999999449994449444995553+;;;;;;;;;;;;;));))))_;;;;;;;;;;---;;;;---;;;;;;;;;;=5354555998", "999999999449888994999995553};;;;;;--;;;;;));_))_;;;;;;;;;;----;;;-----;;;;;;;;;_1599555498", "4949499994498889999898955553);;;;-----;;;_);_)__;;;;;;;;;;---;;;;----;;;;;;;;;;;)499555499", "49494999944989994444999555532_;;--------;));____;;;;;;;;;----;;;;-----;;;;;;;;;;+549533549", "99999998944999999994499555332+;---------;));___*;;;;;;;;;-;;;;;;---------;;;;;;_2335533599", "9999999894444998888945555533+;;----------));;;;;;;;;;;;;;;-;;;;----------;;;;;;)4433333599", "9999999894499988888994555531_;-----------));;;__;;;;;;;;;;;;;;----------;;;;;;_14455555549", "554444994449999999994323331)_;;----------));;;;;;;;;;;;;;;;;;---------;;;;;;;;+54444555555", "55555544444999999995311111}+_;;;-----;---));;--;;;;;;;;;;;;-;-:-------;;;;;;;)144444555555", "5555554444499999995}==711111);-------;---));_-----;;;;;;;;;---:------;;;;;;;)2544444555555", "55555544444999999941=++711111_-----------)))))));-;----)))))__;-----;;;;;;;+25444444455555", "3333355554449999444517=+=}117;-----------))))+++_;;----)+===++));;;;;;;;;)}354444444445555" ], [ "8888999888888888$$$889999994449444449445549999999998889944999944555333554999988888$##88999", "9999999888888888889999988999999945549994521}++=))))+=155544555535995555555554998888#$##899", "9999988$$$88899999999988$9999994449999941)_____;_)___)+15999995354455554945555499998888889", "99999$$##$8999988899998$$999999999889431+)_*;;;;;____)))}9889995555555599995555555498888$8", "889998899999998$$$889988$9999999898943}+))++=7777}111}=)+499999994555554994554999455498$#8", "889999999999988#8$88999999999999888885))+777}1112223321=)399999995555554955599999945449998", "8999989988$89998889988$899999998888883))=77777}111223217+299999999555555549555999945549944", "88998$89998898889998&0#089999999998885=)===+===711}=7}1}1999999995555555999945444555999954", "999988$899999$$##898&00&89999994549994}=777777==}12111215999999555555355999894549945595559", "9999998888999$##b###0899999894555517}777777==712222213544455359953355999894988999555499", "99999999999999$$$0898###89999944599995177777777=}12222135555445335553335999894988899454999", "99988888998899988#$98$$#89999449989889532}777===}11122394559999945333335999949888894455555", "888888899988999988899988999999888999455551}7777}112211555554999999533333999459888949994599", "8888889999899999999988999999998899955499927===77}11111321455559999955533555555999499889559", "88888994444444444498888899994449945559994511}=+=7}111131__+}135494555333549995555449999555", "9989994549999455559888889994495555559999}===7===}111115+_;;;;;_)+}123555599999555544555335", "4444554998999454555999889444444433549995}===1}==7}}7}53__;;;;;;;;;;;;_)=154995335559994333", "44554998888994999555998894455499535551717++=}77====}545);;;;;;;;;;;;;;;;;;)=55354535999995", "99949988888994989944499844555544531=)_;==++=}7===72541)*;;;;;;;;;;;-;;;;;;;;+5559455999988", "99455498888999888949449845555531=);;;;;_=}=}33}7}2351_;;;;;;;;;;;;--;;;;;;;;)5549955599888", "994555498889998944499549555317)_;;;;;;;;)11}77==77=)*;;;;;;;;;;;;;-;;;;;;;;;)5554995599889", "94555554999499945454945455})_;;;;;-;;;;;;121======+_;;;;;;;;;;-;---;;;;;;;;;_3555495549889", "55499995545545599999455553+;;;;;;---;-;;;25}++++++);;;;;;;;;;-----;;----;;;;*1455555359944", "54999994555554988888945553=;;;;;;------;;=}=+++++)_;;;;;;;;;;----;;-----;;;;;2449453355549", "99999999945499988889999553}_;;;;---------_+;)+++));;;;;;;;;;-----;;----;;;;;;7449945555498", "999999999554988888888895533);;-----------_+;)++))_;;;;;;;;;-----;;-----;;;;;;;}49994555999", "999999999444499888889455553);;----------;_+;)))));;;;;;;;;;-----;;----;;;;;;;;;19994555988", "999999999444944988894555553);;----------;_);_)))_;;;;;;;;;;----;;;----;;;;;;;;;_5555555988", "999999999449994444444945553};;;---------;_);_))_;;;;;;;;;;;----;;;-----;;;;;;;;;)335555998", "9999999994499889449999955532_;;;---------_);_)__;;;;;;;;;;-----;;-----;;;;;;;;;;;}49555498", "4949499994498889949999955533+;;;---------_);___*;;;;;;;;;-----;;;--------;;;;;;;;+49555599", "49444999944989994444999555337+_----------_);___;;;;;;_=)_;;;;;;;;----------;;;;;)349533544", "9999999994499499999449955533}_;----------_+;;;;;;;;;;)17=+)))*;------------;;;;_2335533599", "99999998944444988889455555337_;----------_+;;;;;-;;;;_17}7===+;-------;;;---;;_14533333599", "9999999894499988889994555531)_;;---------_);;;;;-;;;;;177}}}}7_;----;;;;;;;;;;244455555544", "544444994449999999951123331=)_;;-----;---_);;--;--;;-;+=7777}7);;;;;;;;;;;;;;_344445555555", "55555544444999999943}}}1111}_;-------;---_)-;;--------)==7777=);;;;;;;;;;;_+}5444444555555", "555555444449999999277}121111}_-------;---_)_))_;------_++++=+)_;-;;_;;;;)25444444445555555", "5555554444499999995}=+7111111+-----------_)))))_--:----;_))));;---;;;;;;;25444444444555555", "333335555544499944451}++7}1});--;_1+-----_)))))_-----------;-------;;;;;;+5554444444555555" ], [ "8888999888888888$$$8889999944494444994455452}}++=)))+=7355499944555535554999998888$##89999", "999999988888888888999998889999994554999453})_______)__))=25555535495555555554998888#$#$899", "9999988$$$$$89999999998$$9999994449989451}+)__**;;;____))+399953544555549455554999888$8889", "89999$$##$8999888899998$$9999999998889527+)))++====7}}}=))}999955555555499955555554988$8$8", "889998889999998$$$889988$999999989888991))=77}}112233332})=9999994555554994554999454498$#8", "889999999999988#$$8899999999999988888897))7777}}122233321==4999995555554955599999944449998", "8899989988$89998889988$89999999888888991)+7======}11}7}11739999999555555549554999945449944", "88998$8998889888999$&0#08999999999888892=77777}7=7121}112299999994555555999945444555999944", "99998$$899999$$##898&00&$99999945499891}7}777}77==1233332149999555555555999894549945494559", "9999988888998$##X###&8999998945554451}7777777=7}122222344455359955555999894988999555499", "99999999999999$$$089$#$#8999994449999455551777===}}111235555545355455355999994988899454999", "8898888899889998$##98$$#8999944998888945442}7777}}1222154559999945553355999949888894455555", "888888899988999988899988899999888999455553177==77}1111133554999999533355999459888949994599", "88888899998999999999889999999988999554999537===+=7}11113})=1359999955555555555999499889559", "888888944944444444988888999944499455599995511}7==}111115+_*;_)=}15555553549995555549999555", "99899944499994555498888899944955555599943}===77==}}1}}53)_;;;;;;;;_)+7}2599994555545555335", "444454499899944455598988944445443355517=17==71777===}541_*;;;;;;;;;;;;;;_+}245335559994333", "44444998888994999555998894455494531=)_;_}=+==1==7=725457_;;;;;;;;;;;;;;;;;;*)3554534999945", "99949988888994989944498844555531=);;;;;;7=++=11}}15441_;;;;;;;;;;;;;;;;;;;;;_7559455999988", "9945549888899988899944984552}=)_;;;;;;;;)7===77=7}7==_;;;;;;;;;;;;;;;;;;;;;;;7449955599888", "99455549888999899449944955})*;;;;;;;;;;;;_}17=77===+_;;;;;;;;;;;;;-;;;;;;;;;;}544995599889", "945545549894999444449454537_;;;;;;;;;;;;;_23}=====+);;;;;;;;;;;;;--;;;;;;;;;;+555495549889", "554999955445444999994555537*;;;;;;;;;;;;;)33=+++++)_;;;;;;;;;;;---;;---;;;;;;)555555359944", "54999994555544988888945553}_;;;;;;;;;;;;;_71++++++);;;;;;;;;;;---;;;---;;;;;;)549453355549", "999999999454999888888995533);;;;;;;;;;;;;;)+++)++)_;;;;;;;;;;----;;;--;;;;;;;_149945555498", "999999999554988888888895552);;;;;;;;;;;;;;)+)+)++);;;;))_;;;----;;;;---;;;;;;;;}4494555999", "999999999444499888889455552_;;;;;;--;;;;;;)+)))))_;;;)1}=))*;---;;;;---;;;;;;;;;1994555988", "999999999444949988894455553);;;;;-----;;;;)+))))_;;;;=11}==++_-;;;;;----;;;;;;;;_133555988", "999999999449994449444995553+;;;;;----;;;;;)+))___;;;;}}}}}}77+;;;;;;----;;;;;;;;;)35555998", "999999999449888994999995553};;;;--------;;)))___;;;;*77777}}}=;;;;;-------;;;;;;;;)5555498", "4949499994498889999899955531_;;;---------;))____;;;;*===77}77=;;;;;;-------;;;;;;;)2555599", "4949499994498999444499955533);;----------;))__**;;;;;))++=777=_;;;;;;;;;;;---;;;;_34533549", "9999999894499999999449955533=_;----------;)_____;;;;;;;_))+++)_;;;;;;;;;;;;;--;;_235533599", "9999999894444998888945555531))_;---------;)____;;-------;;___;;-;_)_;;;;;;;;;;;)5433333599", "9999999894499988888995112331=)_;;----;---;)_;-;;--------------;--;__;;;;;;;;;;)54455555599", "44444499444999999999517}}}}1}+;;-----;---;);-;--------------------------;;;_=2544444555544", "55555544444999999995}==7}7}}}7);-----;---;)_;_--------------:----------;_35444444444555555", "5555554444499999999457====7===)----_;----;))++)_---------------------;;;;=5544444444555554", "55555544444999999999452}==++)_;;;)75=;---;))+++_-----------------;;;;;;;;;1544444444455555", "33333555544499994444455532+;;;;}5551)----_+++++_;;;;;----------;;;;;;;;;;;)554444444445555" ], [ "8888999888888888$$$8899999944494444494555441)_______)__))}349444535333555999998888$$#89999", "9999999888888888889999988999999945549995321=)_*;;;;;__*__)+355335445335555555998888#$#$899", "9999988$$$$8899999999988$99999944499899317+))))))))))++))))}445355453354945555499988888889", "99999$$##$8999988899998$$9999999998888891))+777}112223321=)=9995555535549995555555498888$8", "889998899999998$$$889998$999999989898884=_)7777}}122233321++5999945535549945549994554988#8", "889999999999988#8$89999999999999888888847)+7=====7}11}}111+}999995553554955549999945449998", "89999899888899988899888899999998888888891+=77==77==11}7}1119999994553555549555999945549944", "88998889998898899998&##0899999999988889}77}77}}}7=7122233219999995555555999945544555999954", "999988$899999$$##898&00&8999999454998893}77777777==}12332159999555553355999894554955595559", "9999988888998$##b###08999998945554455321}777==7}122222354455354953335999894988994555499", "999999999999998$$0898#$#8999994459999455945177777}}111125335555335553335999994988899454999", "99988888998899988#$98$$#8999944999988945445}}7777}1121125559999945533335999954888894455555", "8888888999889999888999889999998899994555533}7===+=7}11122}35499994553333999459988949994599", "8888889999899999999988999999499899955599953177777}1111231__+}34999955533555555994499889559", "88888994444444444498888899944549945359945521}}777}111125+_*;;;_)+}133533549995555549999555", "99899944499994555598888899444455533332}}1}777}7777}}7152__;;;;;;;;;;_)+}349994555555553335", "4444554998999454555999889444555532}+)_;_}7===}}}77=}5442_*;;;;;;;;;;;;;;;_)=35333559994333", "4455499888899499955599884455532}+_;;;;;;=7++=}}77}3545})*;;;;;;;;;;;;;;;;;;;_2554535999945", "994499888889949899454998452}=)_;;;;;;;;;+=+++}1}11233+_;;;;;;;;;;;;;;;;;;;;;*=559455999989", "99455499888999888949449945)_;;;;;;;;;;;;_)+===++++++);;;;;;;;;;;;;--;;;;;;;;;=549955599888", "99455549888999894449954953);;;;;;;;;;;;;;;717===++++_;;;;;;;;;;;;--;;;;;;;;;*7554995599889", "94555554999499945454945552_;;;;;;;;;;;;;;;12}===+++);;*_)_;;;;;-;--;;;;;;;;;;)555495359989", "55499995545545599999455533);;;;;;;;;;;;;;_23}7=++))_;*=11=+)_;;---;;----;;;;;_355555359944", "54999994555554988888945553+;;;;;;;;;;;;;;;}1=++++)_;;)}}}}77=+;---;;---;;;;;;*344453355559", "99999999955499988889999533_;;;;;;;;;;;;;;;)=++++));;;7777777}7;-;;;;--;;;;;;;;+59945355498", "99999999955498888888889553);;;;;---;;;;;;;)=+))))_;;_7=7=777}7;;;;;;----;;;;;;;)3494555999", "99999999944444988888945553+;;;;---------;;)=)))))*;;_)++=7}}}7_;;;;;----;;;;;;;;_345555998", "999999999444444988894555537;;;;---------;;)+))))_;;;;;_)+=7777_;;;;;;----;;;;;;;;)23355998", "999999999449994444444945531_;;;---------;;)+)))__;;;;;;;_)+=7+_;;;;;;;;-----;;;;;;)3335499", "999999999449988944999995531_;;;----------;)+)))_;;;;;;;;;;;__;;;;__;;;;;;;;--;;;;;;_135498", "494949994449888994999995551_;;----------;;))____;;;;;;;---------;)};;;;;;;;;---;;;*7533599", "494449999449899444449995533+_;----------;;))____;----------------;*;;;;;;;;;;--;;*74533544", "99999999944994999994499531}+++_;---------;)))_*;---------------------;;;---;;;-;_}35533599", "999999989444449888894553}====+);;---;;---;));;;;-----------------------------;;_2533333599", "9999999894499988888995}7=7}7=+);----;----;));;;;-------------;;---:::--------;754455555544", "54444499444999999999451==7}}7=+)----;----;)__;-------------------------;+11}15444445555555", "5555554444499999999994527=7}}=+;-;)_;----_)))*;------------------------;*}5544444444555555", "55555544444999999999945551++)_;)7251_----)+++++_-;;---------------;;;;;;;_3544444444555555", "55555544444999999999445553=*;)254457+;;;;++++++_;;;;;;;------------;;;;;;;+554444444455555", "33333555554499999444455555323555531}=;;;)7+++++_;;;;;;;;---;;;;-;;;;;;;;;;*154444444444444" ], [ "8888999888888888$$$88999999444944444945554457_*;_____)__))+34454535333355999998888$$$89999", "9999999888888888889999988999999945549994127+))_*_;;;;____))+33335443333533555998888$$#$899", "9999988$$$88899999999988$9999994449999993}+))++=777=7}}}7+))145355433354945555499998888889", "99999$$##$8999988899998$$9999999998888895))+777}1122233331=)1995555335549995555555498888$8", "889998899999998$$$889998$9999999898988893))=7777}}12223332}+}999945535549945549994554988$8", "899999999999988$$$89999999999999888888893++77=++===}1}7}}1}7499995553555955549999945449998", "8999989988889998889988$899999998888889842777777}}7=}21}}1214999994553555544555999945549944", "889988899988988999980###8999999999888893}}1}777}77=}12333213999995553555999945545555999954", "999988$899999$$##8980##089999994549988942}777777777}12222239999555553335999894554955595559", "9999988888999$##b##$0899999895555445555527777==7}11122354555359953335999895988994555499", "999999999999998$$0898#$#89999945599994559491}7777}1122115335555335553335999994988899454999", "99988888998899988$$98$$$8999944999988955454}77==77}111125559999945533335999954888894455555", "88888889998899998889999899994988999945555331777===}}11122+15499994553333999459988949994599", "8888889499899994999988999994499899955599552177777}1111131__)715499955553555555994499889559", "8888894444444444449888889944454995333532352}}}777}}11}35)_*;;;;_)=113553549995555549999555", "998999444499955555988888944444555317+)_+1777}}7}7777}54}__;;;;;;;;;;*_)7249994555555553335", "4444554998999554555499889455531}+);*;;;_}=+=717777}3544}_;;;;;;;;;;;;;;;;_)=35333559994333", "445549988889949995559998451}=)_;;;;;;;;;}+++=11}135442)_;;;;;;;;;;;;;;;;;;;*)3554535999945", "9994998888899498995559995}_;;;;;;;;;;;;;++++=}77777}7_;;;;;;;;;;;;;;;;;;;;;;_}559455999999", "9945549988894988894444995=;;;;;;;;;;;;;;))+=7}7777=+);;)7}=+)_;;;;-;;;;;;;;;;}549955599888", "9945554988999989444995493);;;;;;;;;;;;;;;_}1=+====+);;_1}}}777=_;--;;;;;;;;;_1554995549889", "9455555499949994545494553);;;;;;;;;;;;;;;)127+++++)_;;}}}}777}});--;;;;;;;;;*7555495359989", "5549999555554559999955533);;;;;;;;;;;;;;;)337=+))));;)7777}}}}}_;-;;----;;;;;)555555359944", "5499999455555498898895532_;;;;;;;;;;;;;;;)}1+++)))*;;;_)=7}}}}});;;;--;;;;;;;_344453355559", "9999999995549998899999953_;;;;;;;-;;;;;;;;)+)))))_;;;;;;)+=}}}});;;;-;;;;;;;;;754945355498", "9999999995549888888888953);;;;;;--;;;;;;;;++)))))_;;;;;;;)+=7}7);;;;;;--;;;;;;;)2494555999", "9999999994444498888894553+;;;;;;----;;;;;;)))))));;;;;---;;_)___;;;;;;;;;;;;;;;;;745555998", "99999999954444498889455537;;;;--------;;;;+)))))_;;;;;;-------;;;_+);;;;;;;;;;;;;*73335998", "99999999944999444444494537_;;;--------;;;;+))))_;;;;;;;----------_=};;;;;;;;--;;;;*+133499", "9999999994499889449999951);;;;----------;;)+))__;-----------------;;;;;;;;;;;--;;;;;)35499", "494949994449888944999993}))+}=);--;;-----;+))))_;--------------------;;;;;;;;;--;;;)233599", "4944499994498994444499937}11}7=);-;;;----;+))))_;---------------------------;;;-;;_3533544", "9999999994499499999449951}7}}}}+_;;;-----;+)____-------------------:----------;;;)25533599", "999999989444449888894553}===}1}=);;------_+___;;------------;))----::----------;=333333599", "99999998944999888899945527===}17);-------_+);_;;-------------;;---------;__;;;+34455555544", "5444449944499999999994555}+++=+)_)_-----;*++;---------------------------+35555444455555555", "55555544444999999999945553=__;;755+;;;;;;)++_;;---;;--------------;;;;;;;75554444444555555", "5555554444499999999994455551772553_;;;;;_++==++_;;;;;;------------;;;;;;;*}554444444455555", "555555444449999999994455555535555};*_;;;)=+++++_;;;;;;;------------;;;;;;;_354444444455555", "333335555544999994444455555335553)_))_;;=7+++++_;;;;;;;;-----------;;;;;;;;755444444444444" ], [ "8888999888888888$$$8899999944494444494555455})_;;;*;______+=5454535333355999998888$$$89999", "999999988888888888999998899999994554999421}=+)____;;;____)))75335443333535555998888$$#$899", "9999988$$$88899999999988$99999944499899941+))+==}}}}}}11}7+)+55355433354945555499998888889", "99999$$##$8999988899998$$9999999998888899}_)=777}112222332}++495555335549995555555498888$8", "889998899999998$$$889998$9999999898988884=)+77===7}12123321++499945535549945549994554988$8", "889999999999988$$$89999999999999888888889}+=7==+===71}==}}17599995553554955599999945449998", "8999989988889998889988$899999998888889891}}}77}}}7=712111213999994553555544555999945549944", "889988899988988999980###89999999998888891}}}777777==}1233322999995553555999945544555999954", "999988$899999$$#$8980##0899999945499889431}}7777777112222229999535553335999894559955595559", "9999988889999$##b##$089999989455544555545}777==7}}1122354555359953335999894988994555499", "999999999999998$$#898#$#89999945599994559492}7777}}112213535555335553335999994988899454999", "99988888998899988$$98$$$8999444999988955559277====7}11115559999945533335999944888894455555", "88888889998899998889999899994988999945555332777==7}}11122=15499994553333999459988949994599", "8888889499899994999988999994499999955545551}77777}1111131__)}34999955553555555994499889559", "8888894444444444449888889444455995321}71352}}7777}}1}}35)_*;;;_)=1335553549995555549999555", "9989994444999555554988889444543217))_;_=}7==777}77771547__;;;;;;;;;_)+71599994555555555335", "4444554998999554555499884531}=)_;;;;;;;)}++=}1777}25445=_;;;;;;;;;;;;;;;*)7145333559994333", "4455499888899449955599995+)_;;;;;;;;;;;_7++=}31}254441);;;_)));;;;;;;;;;;;;_=5554535999945", "9994998888899498945559992);;;;;;;;;;;;;_++++77+====}=_;;;)=7777=+_;;;;;;;;;;_1559455999988", "994554998889498889444499}_;;;;;;;;;;;;;;)++=++++++++_;;_7}7777}}});;;;;;;;;;;}549955599888", "994555498899998944499554=*;;;;;;;;;;;;;;;+1}++++++));;;)777}}}}}}_;;;;;;;;;;*}554995599889", "945555549994999454549555+_;;;;;;;;;;;;;;;721=++++));;;;;;)=7}}}}7_;;;;;;;;;;*}555495359989", "554999955555455999995532_;;;;;;;;;;;;;;;;}31=++))));;;;--_+=}}}}});;----;;;;;=555555359944", "549999945555549889889531_;;;;;;-;-;;;;;;;=}7++))))*;;;;--;_)=7}}});;;--;;;;;;)544453355549", "999999999554999989999941_;;;;;;---;;;---;_+)++))));;;;;----;_))))_;;;;;;;;;;;)549945355498", "999999999554988888888942_;;;;-----------;_+))))))_;;;;;--------;;;;;;;;;;;;;;;)14494555999", "999999999455449888894533_;;;--------;---;_+))))));;;;;;-----------;_)_;;;;;;;;;;)245555998", "999999999544444988945531_;;;------;;-----_+)))))_;-;;;--------------;;;;;;;;;-;;;*73335998", "9999999994499944445555=_;;-----;)7+_;----_+))))__;-------------------;;;;;;;;;-;;;;_=33499", "9999999994499889444992))_;;;+}121}+);----_+))))_;---------------------;;;;-;;;;--;;;*}3499", "499949994449888944999+++)_)}}===77=_;----_+))))_;---------------------------;;;--;-;=33599", "4944499994498999444493)+)_+}7=+=77=_-----_+))))_;---------------------------;;;;;;;=533544", "9999999994499499999553)__)))++++=77_-----_+)))__-------------------------------;;;+5533599", "99999998944444988889557_));;_))+++;------_+____;---------------------::---------_753333599", "99999998944999888899945}=);;;;;;;----;;;;_+__;;;-------------------------;;;;;_}5455555544", "54444499444999999999945552}=)__+7;---;;;;_+;;-;;------------------------;}5555444444555544", "555555444449999999999455555335551;--;;;;;_+_--;;--;;---------------;;;;;;_2554444444555555", "555555444449999999999455555555551;;-;;;;;++=++)*-;;;;;-------------;;;;;;;_155444444455454", "55555544444999999999445555553555=;;-;;;;;++=+++);;;;;;;-------------;;;;;;;)55444444444455", "33333555554499999444445555533555);;-;;;;_=+=+++_;;;;;;;;-------------;;;;;;;}5544444444444" ], [ "8888999888888888#$$88999999444944449945554441+_*;**;_____)+}4454535333355999998888$$#89999", "9999999888888888889999988999999945544994321=+)__**;;;*____))}5335443333555554998888$$#$899", "9999988$$$88899999999988$99999944499999951=))++=7777=7}}7=))+55355433354945555499998888889", "99999$$##$8999988899998$$9999999998888889}_)=777}112222332})+49555533554999555555549888888", "889998899999998#$8889998$9999999898988894=)+77==7}122223321++599945535549945549994554988#8", "889999999999988#8889999999999999888888889}+=7=++=+=}1}77}11+299995553555955549999945444998", "89999899888899988899888899999998888889893}}}777}}7=7121}1113999994555555544555999945549944", "889988899988988999980##08999999999888884}}}}777777=712333321999995555555499945544555999954", "99998888999998$#$898&00&89999994549988993}}77777777}11222224999535553335999994554955595559", "9999988889999$##b##$089999989555544455543}777==7}11122354455354953335999994988994555499", "999999999999998$$0898#$#89999945549994559491}7777}}112113535555335553335999994988899454999", "99988889998899988$$98$8$8999444499988955559177====7}11135559999945533335999954888894455555", "88888889998899998889999899994998999945555351777===}}11133555999994533333999459988949994599", "8888889499899994999988994444449999955555551}77777}}11113})73359999955333555555994499889559", "888889444444455555999888944455549531}}}3351}}7777}}11}35)_*_)=1349555333549995555549999555", "998999454499955555499988445555217))__;)}7===77}}7777154+_;;;;;;;_)=}1355599994555555553335", "44445549989995545554999951}7+)_;;;;;;;;7+++=17}}7}25445)*;;;;;;;;;;;;;)+154995335559994333", "445549988899954995559999=_;;;;;;;;;;;;;=+++=12}1354443);;;;_+=7=)_;;;;;;;;)}55554535999945", "994499988889449894555993);;;;;;;;;;;;;;++++=}=7777127_;;;;)=777}}}});;;;;;;_75559455999988", "994554998889498889445547_;;;;;;;;;;;;;;_)+=7===777=+_;;;;_+777}111}_;;;;;;;;)5549955599888", "99455549989449894559953+;;;;;;;;;;;;;;;;_}17++====+);;;;;;;)=711117;;;;;;;;;_3554995599889", "9455555499954994555495});;;;;;;;----;;;;_127+++==++*;;;;---;+=}11}7*;;;;;;;;_3555495359989", "5549994555555554999953);;;;;;--;-------;)337+++++));;;;-----_+7}}}=_;;;;;;;;_5555555359944", "5499999455555599999943_;;;;;------------*71+=++)))*;;;;------_)+777);;;;;;;;*2444553355549", "9999949995559999899995_;;;;;------------;))+++))));;;;;;---------;;;;;;;;;;;;}449945355498", "9999449945559888888995_;;---------------;)+))))))_;;------------;;;;;_;;;;;;;+344445555999", "9999999995555498898951_;;----------------)+)))))_;-------------------;;;;;;;;;_14945555998", "99999999955445499893=);;--------_))++++);)+)))))_;-------------------;;;;;;;;;;;)}33335998", "9999999995549945551)_*;;---;;;_}}7==77+_;)+)))___---------------------;;;;;;;;;;-;_7233499", "999999999549999953);_)+)*;_+)+1177=777+;;)+))))_;----------------:-----;;;;;;;;--;;;_}3499", "494449994549998953+)_*__;;))*;)=====77);-)+))))_;-----------------:----------;;;-;-;)23599", "4944449994498944552);;;;;*;;;;;)++++=+;--)+))))_;----------------------------;-;;;;_333544", "9999999994499449993);;;;*;;;;--;__*;----;)))))__-------------------::----------;;;_3533599", "99999998944444988893=)*;;;__;;;;------;;;)))))_*----------------------:---------;_15333599", "999999989449999888999453211}}}+;------;;;)))))_;---;;-------------------------;_}555555544", "5444449944499999999944555533355_;----;;;;))**_*;---;--------------------;7}}}}254444555544", "5555554455499999999944555553355);---;;;;;))-;_;----;----------------;;;;;)3554444444455555", "5555554444499999999994555553355);---;;;;;)))__;;--;;;;---------------;;;;;+255444444445454", "5555554444499999999444555553355);;---;;;;)+=++)_;;;;;;;---------------;;;;;_35444444444444", "3333355555549999444445555533353_;;----;;;)+=+++_;;;;;;;;--------------;;;;;;=5544444444444" ], [ "8888999888888888#$$8899999944495444494555445})_______)__)+154454535333355999998888$$#89999", "9999999888888888889999988999999945544994331}+)_;;;;;*__*_))=33335443333555555998888$$#$899", "9999988$$$88899999999988$999999444998999327+)))))))))+++))))145355433354945555599998888889", "99999$$##$8999988899998$$9999999998888894=))=77}112223332}))}995555335549995555555498888$8", "889998899999998$$$889998$9999999898988895))=777}}1122233327)}999945535549945549994554988#8", "899999999999988$8889999999999999888888895++7======}11}}1117+299995553555955549999945444998", "8999989988889998889988889999999888888989577777==7==}2}=}}1}5999994555555544555999945549944", "889988899988988999980##08999999999888892}}2}77}}777}23233215999994553555999945544555999954", "99998888999998$#$8980##0899999945499899517}}77777==}}2222229999535553335999994554955595559", "99999988899998##b##$08999998955555455533}777==7}122222354455354953355999994988999555499", "999999999999998$$0898#$#89999945549994554451777777}111125335555335553335999994988899454999", "99988889999999988$$98$8$8999444499998955553777777}1111135559999945333335999944888894455555", "8888888999899999888999989994499899994555532777=++=7}11155555999994533333999459888949994599", "888889949989999499998899444444999945354453177777}11112151555559999955333555555994499889549", "888889444444455555998888944555544532112353}}}777}}111123_)72335499553333549995555549999555", "9999995554999555554999884555552}=+)__)7}77777777}}}}}35+_*;;_)=}35553333599999555544555335", "44555549989995545554999931}=+)*;;;;;;;+}++=71}}777}3441_*;;;;;;;;_)+}135544995335559994533", "445549989899954995554997_*;;;;;;;;;;;;)1+++71}}}154445=_;;;;;;_))_;;;;_+}34945354534999995", "99454999889944999455542);;;;;;;;;;;;;;*=+++=}7}135442);;;;;;_+7}}}7=);;;;;)355559455999988", "9955549989894988895555+*;;;;;;;;;;;;;;;))+=}=++++=17_;;;;;;;+777}}}1}_;;;;*)55549955599888", "9945554999944999455943);;;;;;;;;;;;;;-;;)}17777===+);;;;;;;;)+=71111=_;;;;;_35554995599889", "945555549995499455553)_;;;;;;;;;;------;)127=====+);;;;;;;;;-;+=}11}+;;;;;;*15555495359989", "55499945555555549995+;;;;;-;-;;;-------;+33=+===++_;;;;;-----;)=}}}}+;;;;;;_15555555359944", "54999995555555499995_;;;;;--------------)}1++++++);;;;;;;-----;)=}}}+;;;;;;_34444553355549", "49444499955599999993_;;-----------------;))+++++));;;;;--------;__)));;;;;;;}4499945555498", "49994499455599999957;;;-----------------;))+++)))_;;--------------;__;;;;;;;+4449494555999", "999999999555549993}+;;;-------------;;;;;))))+)));--------------------;;_;;;_7549994555998", "9999999995554555})_*;------------*)=77777+))))))_;---------------------;;;;;;;744533555998", "999999999554943+_*;;;;;;;-;)___;+777777}}+))))))_-----------------------;;;;;;;)7235333499", "999999999554991*;;_____;;;))*;;_++=77=7}}+))))))*----------------:-------;;;;;;;;;+2333499", "494449994554994+**;;;--;;_;;---;)++====7)))))))_;-----------------:------;;;;;;;;;;;733599", "4444449995499952);;;;;;;;;;---;;_))_*;;;;))))))_;----------------------------;;;-;;_133544", "9999999994444455+;;;;;;;;;**;;;---------;)))))_*-------------------::----------;;;_3533599", "999999999444449993}+)_;;;;;;_;----------;)))))_;--------------------:-----------;;15333599", "99999999944999999999953222233);---------;))))__;---;---------------------------;_155555544", "55555449454499999994445533333+;--------;;))___;;---;-------------------------;)}5444555544", "55555544554499999999445555333+;;------;;;)_*_;;;---;----------------;---733335544444455555", "555555445549999999944455553337;;-------;;)_;_-----;;;---------------;;;;_15555444444455544", "55555544544999999994445555333};;;------;;)))))));;;;;;---------------;;;;*+355444444444444", "333335555554999444444555533337;;;------;;)+==++);;;;;;;;--------------;;;;;=55444444444444" ], [ "88$89998888888$8###88899999444944444945554957)))_))_))))=1499454555535555999998888##088999", "9999999888888888889999988999999944449999532}+)_**_;___*_)+=355355495555555554988888##0#899", "9999988#$#$$899999999988$999999444998884327+))_______))))))=4455554555549455554999888$$$89", "99999$#00$899998$899998$$9999999998888893=++=77}11111221}+)+49945555555499955555554988$$$8", "889998899999988#$$8$9998#999999988888889})+777}}1122233331++599994555554999554999454498$0$", "889999998899988#$$8999999999999988888889})+7====7}22123331+=499995555554945599999944449998", "8899989988$8999888998888999999988888888927777==7==}2}==}1175999999555555549555999944499944", "88998$899988988899980##&8999999999888891}22}}}}}77}222223139999994555555999945444555999944", "99998$$899999$$00898&0#0$999999454998991}}177777==}}23333229999555555555999884549945494559", "9999998888999$##Ͱ##08999998945555445211}77777}1333322354455359955555999894988899555498", "999999999999998$$0898#$#8999994459999955993}777=77}111235555445555455555999894988899459999", "88888888998899988##98$$#8999944998988945541}777}}11221244559999945555555999949888899445555", "888888899988999988899998999949889999455553}77====7}111355554999999455555999459888949994599", "888888949989999499998899994449999995554443}77777}11122359945559999955555555555989499889549", "8888889444444444449888889444555495333325511}}7771111215}+399555499555555549995554449999555", "9989994549999455559999884455552}7+)))+}5}777777}}111}35+__)=}13555553333599999554444455555", "44455549989995545554999531}=+)_;;;;;;_}5===711}7}}7154}__*;;;;*)+}235555599995555559999535", "4455499888899549955549})_*;;;;;;;;;;;;33=++=11}7}25444=_*;;;;;;;;;;*)=13599945554554999994", "9994998888894498945552);;;;;*;;;;;;;;;+7+++=112554443+_;;;;;;;;;*__;;;;*)75455559955998888", "994554998889498889553+_;;;;;;;;;;;;;;;;)++===777}231)*;;;;;;;;;)=}}}=)_;;*+555599945498888", "994555498894498945593_;;;;;;;;;;;;;;;;;;)}17===777=);;;;;;;;;;_=}}}111});*_145554995599889", "9455555499954994555}+_;;;;;;;;;;;;;;;;;;)23}===77=+_;;;;;;;;;;_+}}}111});;*}45555994549889", "5549999555555554993_;;;;;;;-;;;;;;;;;;;;)337=====+);;;;;;;;;--;_)=}11}=;;;*}55455555359944", "549999945555554999=;;;;;;;---;;;-------;_}1=++===+_;;;;;;;;----;)+7}1});;;_244999453555448", "994444999555999994);;;;;;;----;;--------;++++++++);;;;;;;;;-----_+=}}7_;;;*144999945554998", "999999994555999991_;;;;-----------------;)+++++))_;;;;;;;;;-----;)+7}7+;;;;=44499999554999", "9999999995555545}=_;;;-------------;;;;;;)+++))));;;;;;;;;--------;;___;-;;)54999994555988", "99999999955555}))_;;-------------;)=77===++++)))_;------------------;**;;;_;+5499455555988", "9999999995545+_*;;;;;-;---;;;--;)++=}7777++)))))_;----------------------;;;;*1455354555988", "9999999995551_;;;____;;;-;);;;;;+++7}77}}=+)))));-----------------------;;;;;*)73599555498", "4944499945544);;;;;;;;;;;;;---;_)++=7=77))+))))_;------------------------;;;;;;;;+59535599", "44444999955992_;;;;;;;;;;;;;;;;;;__;;;---)))))__;-------------------------;;;;;;;;_3533549", "99999999944445);;;;;;;;;;_*_;;;;---------)))))_;------------------:--------;;;;;;*}5533599", "9999999994444543}+_*;;;;;;;;-------------)))))_;-------------------:--------;;;;;}53333599", "9999999994449999999453111237;------------)))))_;--;;;;--------------:---------;;}455555599", "555554494449999999944455333};;-----------)))))_;--;;;---------;--------------;*}4444455544", "555555444544999999994455533};;;---------;));;;;---;;--------------;;--;__*;;)}544444455544", "5555554444499999999944555331;;;---------;));-------;---------------;;;;1555544444444444444", "5555554444499999999944555332*;;;;-------;)_))))_;;;;;--------------;;;;_}35544444444444444", "3333355555449999444455553331;;;;;-------;)_+===);;;;;;--------------;;;;;)3544444444444444" ], [ "88$8999888$8$8$$###88899999444944449944554417=+)+))))+7155999944555555554999988888##088999", "99999998888$8888889999988899999944449999531+______))__))=1555555599555555555498888$##0#$99", "9999988#$#$$89999999998$$9999994449989952}+)____;;*____))+199955544555549455554999888$$$89", "89999$#0#$899988$89999$$$999999999888895}=+===777=7}}}7=))=999945555555999955555554988$$$8", "$89998889999988$$$$$9988$999999988888991))7}}}1122233332})=9999999555554999554999444998$0$", "889999998899988#$$8999999999999988888897)+77777}122233331+=4999994555554945599999994449998", "8899989988$89998889988889999999888888891=77==77==11}}}111+29999999555555549554999994499944", "88998$899888988899980##&899999999988895121}777777}21}1221399999994555555999945494555999944", "99998$$899999$$0#898&0#&$99999944499891}21}77777=}1333332299999555455555998884549945494549", "9999988888998$##X###08999998945554451}1}77777}11233221544455559955555998894988899555998", "99999999999999$$$089$#$#899999444999995595}77===}}1122355555445555455555999894988889449999", "88888888998899988$$98$$#899994499898894552}777}}112212594559999945555555999949888899945555", "88888889998899998889999899994988999945555}77==77}11113555554999999455555999459888999894499", "88888899998999999999899999444988999555495}777==7}}1123549945559999955555555554989998889549", "8888889444444444449888889444455995333354211}}771111223219999555999555555549995544499989554", "988999444499945555998988444555217++)+}55}777}77}1111157_)725555555555555499999544444455555", "44445449989995545554999531}=))_;;;;;_=557===1}}}}}7145)__;;;_)=}25555555599995555549999555", "945549988889954995555}))__;;;;;;;;;;;}52=+==11}7}25441__*;;;;;;;;_)=}355599945559554999994", "999499888889449894551);;;;;;;;;;;;;;;=1}=++=}12544443)_;;;;;;;;;;;;;;;)=149455559955998888", "99455499888949888953)_;;;;;;;;;;;;;;;;;)++=7}}}1545}_;;;;;;;;;;;;;;;;;;;_74555599945498888", "99455549889449894551_;;;;;;;;;;;;;;;;;;)+}1}77===7+_;;;;;;;;;;;;;;;__;;;;_2545559995599889", "945555549995499555})_;;;;;;;;;;;;;;;;;;_=23}77777+);;;;;;;;;;;;;;)+7}7)_;_}495555994549889", "554999955555555493_;;;;;;;;;;;;;;;;;;;;_=33}=777=+_;;;;;;;;;;;;;;)}}111}=_}555455555559994", "54999994555555499=;;;;;;;;;;;;;;;;----;;+}1=====+);;;;;;;;;;;;;;;+}11111})1449999455554448", "99994999955599999);;;;;;;;;---;;------;;+=++++=++_;;;;;;;;;;----;+7}}111=_1499999994554998", "99999499455599992_;;;;---------;------;;)==+++++);;;;;;;;;;;-----_+=}}}=__1449999999554999", "99999999955555517_;;;-------------;;;;;;_+==+))));;;;;;;;;;-----;_++7}});;}449999999444988", "99999999955552=+);;;;----------;_+77===+)++++)))_;;;;;;;;;-------;)+=}});;+544999955555988", "999999994553=_;;;;;;----------;)+=}7=++)*)++))));;;;;;;;;;--------;;_)))--;=55545554555988", "99999999955});;;;;_*;;--;)_;;;)++=}7===);)+))))_;--;-----------------;;;;--_15335499455988", "494449994553_;;;_;;;;;;;;;;--;)++==7==+;;))_)));-------------------------;;;;_755999555498", "4444499995541_;;;;;;;;;;;;--;;_))))_;;---_+)___;--------------------------;;;;;_1449555599", "9999999995545);;;;;;;;;;;;_;;;-----------))))_;;--------------------------;;;;;;)554533499", "99999999945552=)_;;;;;;;;*;;-------------)))))_;--------------------------;;;;;+5533333599", "99999999944499999521}7==}};--------------))))__;---------------------------;;;+54455555599", "55555499444499949444455331;;-------------))))__;------------------:--------;;)544444555544", "5555554445499999999444533};;------------;));_;;--;;;----------------------;_75444444455544", "5555554444499999999444533};;;-----------;)_-------;;-------------;;-_}1}7=1544444444444444", "55555544444999999994455337;;;;;---------;)__)));-;;;-------------;;;;755444444444444444444", "3333355554449999444455533);;;;;;--------;)_)==+;;;;;;-------------;;;;)1544444444444444444" ], [ "88$8999888$8$8$$###8899999944494494994555531}=77+)+7159944999944555555554999988888##088999", "99999998888$888888999998889999994544999437)___)_))))))=}55455555599555555554498888$##΃", "9999988###$$89999999998$#999999444999943}+)_***;*____))+74999955544555599455554999888$$$89", "89999##00#899988889999$##999999999889451=++++++))+==++)))29899945555555999955555544988$$#8", "889998889999988##$$89988#9999999888989})=7}}}1222333331+)199999999555559989554999444998#0$", "889999999999988#$$88999999999999888885+)7}7}}}1222333327+}99999994555554945599999994449988", "8999989988$899988$99888899999998888884}+7=====7}1}}}1117+599999999555555549554999994499944", "88998$899988988999980##&8999999999888421}777}77}22}}111}5999999994555555999945494555999944", "99998$$899999$###898&00&$999999444994}}517}}777}133333313999999555555555988894549945494549", "9999988888999#00ϔ##089999989455552}1177777=7}12332215549445559955555999894988899555498", "99999999999999$#$089$###89999945549994333}77==7}122233344555445555455555999894988889449999", "99988888998899988#$98$8#89994444989889553}7777}}122224994559999945555555999949888899445555", "8888888999889999888999989999498899994555}}7777}1221135555554999999455555999459888999894499", "8888889999899994999988999944499999955545}77====7}11255549945559999955555555554989998889549", "8888884444444454449888889444555995553343}1}}}711122233298889555999555555549995544499989554", "988999454499945555988988444555321}77}342}77}}7}1111132)+1499555555555553499999544444455555", "444454499899955455549999531}=)_*;;;_+2557==71}}}1}}34=__*;_)=}2555555553599995555549999555", "445549988889954995553}7+))_;;;;;;;;;)553=+=71}}7}2445)__;;;;;;;_)=}35555599945559554999994", "99949988889944999452);;;;;;;;;;;;;;;+331+++=1}1544441__;;;;;;;;;;;;;_+}3499455559955998888", "9945549988894988895+_;;;;;;;;;;;;;;;;_)77==7}135445+_;;;;;;;;;;;;;;;;;;_}49555599945498888", "9945554988944989551_;;;;;;;;;;;;;;;;;;*+=}17+++=11)*;;;;;;;;;;;;;;;;;;;*_25555559995599889", "945555549995499532)*;;;;;;;;;;;;;;;;;;;+723}77=7=+_;;;;;;;;;;;;;;;;;;;;;_}5495555994599889", "55499945555555554+*;;;;;;;;;;;;;;;;;;;;+}33}77==+);;;;;;;;;;;;;;;;;;;;;;*74555555555559994", "54999994555555493_;;;;;;;;;;;;;;;;-;;;;)7}27====+_;;;;;;;;;;;;;;;;____;;*74549999455554448", "99944999955599997;;;;;;;;;;;-;;;;----;;_=+++==++);;;;;;;;;;;;;--;;)=7}7+)}4499999994544998", "49994499455599997;;;;;;;;;;---;;------;*+==++++)_;;;;;;;;;;;;---;;)}1111}24449999999544999", "9999999995555545+;;;-----------;------;;)+==+)));;;;;;;;;;;;---;;*=}1111134449998899444988", "999999999555552});;;----------;;;;_)_;;;_+=++))_;;;;;;;;;;;----;;)7}1111114444999945544988", "9999999945555=)_;;---------;)7}77777+_;;;)+++))*;;;;;;;;;;-----;;)+=7}}7))5455545559555988", "999999994552+__;;;;;---;;*)+}}}}77}7+;;;;)+))));;;;;;;;;;;-----;;)+++==_;)5445335499455988", "444449995557;;;_))_;;;;))__++=7777}7);;;;)))))_;;;;;;;;;;--------;_)+++;-;+154535999455998", "444444494553);*;;;;;;-;;;;;_)+====7+;--;;))__)_;;;;;;---------------;;;----;_}533549455599", "9999999995541_;;;;;;;;;;-;;;_)))_;;-----;)))__;----------------::-----;;-;-;;;=55354455499", "9999999994553);;;;;;;;;;;;;;;;----------;))))_;-----------------:---------;;;_}49433333599", "999999999444993}=)_*;;;));;;------------;)))_*;-----------------:---------;;)3449455555599", "555554994554999444553323+;--------------;))__;;-----------------:::------;;_24444444555544", "555555444554999994445533_;--------------;)))_;;------------------::------;;754444444555544", "555555444544999994444531*;--------------;)_;--;------------------;)+)___)}3444444444455444", "55555544444999999444553};;--------------;)_*_*;--;;-------------;;=35544444444444444544444", "33333555554449944455553+;;;;;-----------;)_+==);;;;;--;;;------;;;_15544444444444444444444" ], [ "88$8999888$8$8$$#$$888999994449444499455553333113598889944999944555555554999988888##088999", "9999999888888888889999988899999945449941=+)))))))))+}25454455555599555545554498888$##00$99", "9999988#$#$$89999999998$$99999944499995})____;_____))+739888994554455559945555499988$$$$89", "89999$###$899988$899998$$9999999998953}+)_______)))))))=988889945555555999955555549988$$#8", "$89998889999988#$$$$9988$9999999888941==77}}111122221+)+4888999999555559989544999444998#0$", "889999998899988#$$8899999999999988892)+7}}}}112223333}++5998999994555554945599999994499998", "8899989988$89998889988$89999999888893+=77===}111123321++5998888999555555599554999994499944", "88998$899888988899980##&8999999999899177==77=711}7}111=39988888994555555999945494555998944", "99998$$899998$$##898&00&$999999444942331}}777712211232135999889555455555988884549945494549", "9999988888998$##X###0899999894555}13}7777==}1233332155549445559955555998884988899555998", "99999999999999$$$089$###8999994449994131}7777}13332222599554445555455555998894888889449999", "8888888899889998$#$98$$#8999944998988952}77==7}1112259999549999945555555999949888899444544", "8888888999889999888999889999998899994551}777}}12221245555554999999455555999959888999894499", "888888999989999499998899999449889995554}7====7}1111355549995559999955555555554989998889549", "8888889444444444449888889944454995555451}1}}7}11122355998889555999555555549995544499989554", "9889994449999455559888889444445533211511}77}}}1112215)759889455555555555499999544449445554", "44445449989995545554998945531}=)))_)7452===71}111}}53)___)71545555555553599994555549999555", "445549988899954995555531}=))_;;;;;;*=542===71}}}7144=___;;;;;_)=}3555553599945559459999994", "9994998888994499945}))_*;;;;;;;;;;;;235}=++=17}24444+__;;;;;;;;;;;_)7155499455559955998888", "9945549988894988891);;;;;;;;;;;;;;;;7}}====}1354445=_;;;;;;;;;;;;;;;;;_}499555599945498888", "994555498894498955);;;;;;;;;;;;;;;;;;;)+7117777131)*;;;;;;;;;;;;;;;;;;;_145555554995599889", "945555549995499551_;;;;;;;;;;;;;;;;;;;)+}33777}}7)*;;;;;;;;;;;;;;;;;;;;;+55595535994598889", "55499995555555545)_;;;;;;;;;;;;;;;;;;;_=133=7777+_;;;;;;;;;;;;;;;;;;;;;;)55555555555549999", "54999994555555491_;;;;;;;;;;;;;;;;;;;;;+}}1=====);;;;;;;;;;;;;;;;;;;;;;;)55549999455544498", "99944999955599997;;;;;;;;;;;;;;;;--;-;;)7+===+++_;;;;;;;;;;;;;;;;;;;;;;;)54999999994544998", "9999999995559999+;;;;;;;;;;-;;;;----;;;)====+++);;;;;;;;;;;;;;;;___;;;;;)54449999999444999", "9999999995555549+;;;;;;-;;-----------;;;++==+))_;;;;;;;;;;;;--;;)+7}7)_;)54499998899444988", "9999999995555554+;;;;----------------;;;)+=++));;;;;;;;;;;;---;*+}1111}+)54554999944444988", "9999999995549451);;;----------;;;----;;;_+++))_;;;;;;;;;;;;--;;)7}11111=)34455545549444988", "99999999955495+_;;-------_)+=77=);---;;;_++)))_;;;;;;;;;;;---;;+}}1111=_)54445355499444988", "4444499945543)__;;;;;;;_71}77}7=_;---;;;;))))_;;;;;;;;;;;;---;;)+=7}7);;)15494554999955988", "444449994555=;*)+)___))7}7===77=);---;;;;))))_;;;;;;;;;;-----;;))++=+;;;;;)145535599455499", "9999999995552))___;;_)_)++====7=_-----;;;)))_*;-;;;;;;---------;;;__;--;;;;;+5545554455999", "9999999995555=;;;;;;;;;;))+++==);-------;)))_;;--------------:----;;;---;;;;;1499455555499", "99999998944441_;;;;;;;;;;_))_;----------;)))__;---------------:--------;__;)34499455555599", "5555549945549451=))_;;;;;;;;------------;)))__;---------------:::------;;;+544444444555544", "55555544454499999445532);;--------------;)))__;----------------:--------;)3444444444555555", "55555544454499999444451;;---------------;));;;-----------------;)_;---;_+34444444444455544", "5555554444499999944455=;;---------------;)_;;;---;-------------;15553554444444444444455555", "3333355555444444445553);;---------------;)=++));;;-----;;-----;;+3555444444444444444454455" ], [ "88$8999888888888#$$888999994449444449445549999988888889944999944555555554999988888###88999", "99999998888888888899999889999999454444532}}}=+=}1399944444445555499555545554498888$##0#$99", "9999988$$#$$899999999988$9999994449993=)))))))))))+=154998889945544555599455554999888$$$89", "99999$$##$8999888899998$$9999999999951+)___*______))+=58888889945555555999955555449988$$$8", "889998889999998$$$$$9988$999999989952=+))))))+==77=)))198888999999555559999544999444998##$", "889999999999988#$$8899999999999988927=}}}11112223331+)}98888999994555554945599999994499998", "8999989988$8999888998888999999988897+7}}}}11112233327)=99998888999555555599554999994499944", "88998$899988988999980##0899999999992=77====}11}}1111}+199898899994555555999945494555998944", "99998$$899999$$##898&0#&8999999444942}77777=}21}}122}}554999999555455555988884549945494549", "9999988888998$##b###089999989453153}}}777}133333311355549445559955555998894988899555998", "99999999999998$$$0898#$#89999944499113}7777=}112332222499554444555455555999894988899449999", "8988888899889998$#$98$$$899944499999542}}77}1122233359999549999945555555999949888899444544", "888888899988999988899998999949889999453}7777}122222945555544999999455555999459888999994499", "888888949989999999998899999449889995551}777}1122112455549995549999955555555554989998889549", "8888889444444444449888889944444994555411}}}}7}11123555998889555999555555549994544499989454", "98899944499994555498888894444455553355}1}77}}112222513998889455555555555499999444444445554", "444444499899955455549998444555321}}}35}1===}11112114=_)71599945555555333599994554449999555", "4455499888999549955599995531}+)__;_)2451===}1}11}155)___;;_)+}1344455555599945559454999994", "99949999889944989455532}=))_;;;;;;;_354}=++71}7}3445)___;;;;;;;;_)715555599455559955998888", "9945549988894988893+)__*;;;;;;;;;;;)53511==}}134444}__*;;;;;;;;;;;;;_)}5499555599945498888", "994555498894498955=_;;;;;;;;;;;;;;;;+=77}111135444=_*;;;;;;;;;;;;;;;;;_=445555554995599889", "945555549995499552_;;;;;;;;;;;;;;;;;;;+=133====}1+_;;;;;;;;;;;;;;;;;;;*_355545535994598889", "55499995555555549}_;;;;;;;;;;;;;;;;;;;)=1337777=+_;;;;;;;;;;;;;;;;;;;;;_155555555555549999", "54999994555555494)*;;;;;;;;;;;;;;;;;;;_7}}1777=+);;;;;;;;;;;;;;;;;;;;;;_}55544999455544498", "99444999955599993_;;;;;;;;;;;;;;;;;;;;;+7+=77++)*;;;;;;;;;;;;;;;;;;;;;;*=44999999994544998", "99999999455599993_;;;;;;;;;;;;;;;;;;;;;)}==7+++);;;;;;;;;;;;;;;;;;;;;;;*)54449999999444999", "99999999955554492_;;;;;;;;;;;;;;;;;;;;;)7===++)_;;;;;;;;;;_)=7=+_;;;;;;;)54449998899444988", "99999999955555543_;;;;;-;;;-;;;;---;;;;*++++++);;;;;;;;;;;_+}}1117)_;;;;)54554999944444988", "99999999955494552_;;;;-------;;;----;;;;)++++)_;;;;;;;;;;;)7}11}1}=);;;*)54455545549444988", "99999999955499951_;;;---------;-----;;;;)+++))_;;;;;;;;;;_+7}}}1}7);;;;*744445355999944988", "444449994554999});;-----;;_;--------;;;;_++)));;;;;;;;;;;;_)=7}}=);;;;;_144444554999955988", "444444994559947)_;;--;_+11=);--------;;;;+)))_;--;;;;;;;--;))+++);;;;;;;*75445335499455499", "9999999995545})))_)=111}}7+;------------;))))_;------------;*_)));;;;;;;;;)155545554455999", "99999999945551++__+77+==77=_------------;)))__;---------------;----;;;;;;;;_24499455555499", "99999999944495))_;+=+++=7}=_------------;)))__;--------------;;;--;__;;;;;_}54999455333599", "55555449455445+____))+++=}+;------------;)))__;;;-----------------;;;;;;;)5444444445555554", "5555554455549451=)_*_))++_--------------;+)___;-;;----------:------;;;;;=54444444445555555", "555555444544999445});;*;;---------------;+)_;;;-;;;-----------;;----;;_}544444444444555555", "555555444444999444552+;-----------------;);-;;--;;;;----------+331}13544444444444444555555", "333335555554444445555);;----------------;+)__;;;;;;;;;;;;;;;;;)354444444444444444444555555" ], [ "88$899988888888$#$$888999994449544499445599888888888889994999949555555554999988888##088999", "9999999888888888889999988999999945444455555549988888994449445555599555545554498888$0#0#$99", "9999988$$$$$89999999998$$999999444995217}=))))+7159994499888994554955559945555499988$$$$89", "99999$$##$8999888899998$$999999999957)_____))__))+=15998888889945555555999955555549988$$$8", "889998889999998$$$889988$9999999995}+___*;*_____))))79988888999999555559989554999444998##$", "889999999999988#$$88999999999999995}=++++==7}111}7)))4988888889994555554945599999994499988", "8999989988$89998889988889999999885==}}}}11112223327))3999998888999555555599554999994499944", "88998$899988988899980##08999999993+=}}7}}1111233331++2499888888994555555999945494555998944", "99998$$899998$$##898&00&$99999945517}===+=}1}77}111=75554999899555455554988884549945494549", "9999988888998$##b###&899999894532}7====7121}1222725555549445559955555998894988899555498", "99999999999998$$$089$#$#8999994552151}7777712223332124999554445555455555998894988889449999", "8998888899889998$##98$$$8999944499233}777=711222222259999549999945555555999949888899445555", "8888888999889999888999889999998899955177==7}1112225995555449999999455555999959888999994499", "888888949989999999998899999949889995517777}11221129455549995549999955555555554989998889549", "88888844444444444498888899944449945351}1}1111111135355998889555999555555549995544499989554", "9889994449999455559888889444445553354}7}777}}112225549998889455555555335499999444444455554", "4444554998999554555999889445555533325}71===}2111215})}399999945355553333599994554449999555", "445549988889954995559998455553217++}5}71===}1111}147____)=}2545544455333599945559454999994", "994599998889449894555999531}+)_;;;;+542}+++71}}7154+__;;;;;;;_)+}2555555599455559955998888", "99455499888949888955531}=)_;;;;;;;;=5541}=7}77}3444=__;;;;;;;;;;;;_)=155599553599945498888", "994555498894498955}+)__;;;;;;;;;;;;=3354511}1344441_;;;;;;;;;;;;;;;;;;+5545553354995599889", "945555549995499552);;;;;;;;;;;;;;;;;++77133}}}135}_;;;;;;;;;;;;;;;;;;;_}555545335994598889", "55499995555555544};;;;;;;;;;;;;;;;;;;;+=133=====);;;;;;;;;;;;;;;;;;;;;;+555555555355549999", "54999994555555499+;;;;;;;;;;;;;;;;;;;;)=}}1777=+_;;;;;;;;;;;;;;;;;;;;;;)555544999455554498", "99944999955599993_;;;;;;;;;;;;;;;;;;;;_=7+=77=+);;;;;;;;;;;;;;;;;;;;;;;)554999999994544998", "49994499455599991_;;;;;;;;;;;;;;;;;;;;;+7==7+++);;;;;____;;;;;;;;;;;;;;_344449999999444999", "99999999955555491*;;;;;;---;;;;;;;;;;;;)=+++++)_;;;;;)+7}}=);;;;;;;;;;;_244449998899444988", "99999999955555541_;;;;;;---;;;;;;;;;;;;_=++++));;;;;*)7}}}}}}+*;;;;;;;;*144554999944444988", "99999999955494552_;;;;------;;;;;;;;;;;;+++++)_;;;;;)+}}}}}}7);;;;;;;;;_244455545559444988", "99999999955499943_;;;--------;;-----;;;;)+++))_-;;;;)+7}}}}}=_;---;;;;;)544445355999944988", "44444999455499942);;;------------------;)++)));----;;;_+=77=+;;----;;;;+544444534999955988", "4444499945599953}_;;--------------------_+)))_;-------;))+==);;;;;;;;;;;)54445335499455499", "999999999554453+_;;_;-------------------;+)))_;----------;_*;;;;;;;;;-;;;=5455555554455999", "99999999955555}++7}}+_;-----------------;)))__;----------;---;;;;;;;;;--;;_344499455555499", "999999999554941111}}}});----------------;)))__;;;--------;;--;__;;;;;;-;;;+544999455333599", "5555544945544517777}}1});---------------;)))__;;;;------:-----;;;;;;;;;;_14444444455533555", "55555554555445}=++=7}11=;----------;;---;+)___;;;;------:::--------;;;;+544444555555555555", "5555554455449437=+++=}})-----------;;---;))__;;;-;;;----;;---------;;)15444444444445555555", "5555554455449443+)))));-------------;---;)_;;----;;;;;;------711}7}25444444444444545555555", "3333355555544445}_;;--------------------;);;_-;;-;;;;;;;;;;;;=5554444444444444444444555555" ], [ "88$8999888888888#$$888999994449544499455499888888888889994999949455555554999988888###88999", "9999999888888888889999988999999945549999554498888888999449945555599555545554498888$000#$99", "9999988$$$$$899999999988$9999994449945531}}125988888999998889945549555599455554999888$$$89", "99999$$##$8999888899998$$9999999993}7+=+)_))))+715499998888888945555555999955555549988$$$8", "889998889999988$$$$$9988$9999999941+___*_)____)))+7498988888999999555559989554999444998##$", "889999999999988#$$8899999999999942=)______))))+))_)798988888899994555554945599999994499998", "8999989988$89998889988$899999999427777}}}11223317))=98999888888999555555599554999994499944", "88998$899988988899980##089999945}+}}}}}1111123331+)+54499888888994555555999945494555998944", "99998$$899999$$##898&0#&$99999951=}1===}111112221=)755554999889555455554988884549945494549", "9999988888998$##b###&89999989511}=++=711}=7}11}+549555549445559955555998894988899555998", "99999999999998$$$0898#$#89999945355}77777122222331}299999554445555455555998894888889449999", "8998888899889998$#$98$$#89999444225}777==}122222221399999549999945555555999949888899445555", "888888899988999988899988999999889352}777}1232222235995554449999999455555999959888999994499", "888888949989999999998899999949889993}7===}111222299955599995549999955555555554989998889549", "888888444444444444988888999444499455177111222111353355998889555999555555549995544499989554", "988999444999945554988888944444555335}==}77=}}112355999998889455555555335499989444444455554", "444555499899955455599988944455553354}==1===73222251}59999999945355553333599994554449999555", "4455499888899549955599984555554431}5}==1===7211115}__)+}2549995554453333599945559454999994", "99959999888944989455599945552}7+)))5377}=++=11}7347___;;;;;_)+7134455533599455559955998888", "99455499888949888954549931}+_;;;;;_3551}7==}}773441___;;;;;;;;;;;_+71555599533599945498888", "9945554988944989455431}+)_;;;;;;;;;13545111}715444}_*;;;;;;;;;;;;;;;;+55545553354995599889", "945555549995499553=+)_;;;;;;;;;;;;;}2355533125444}_;;;;;;;;;;;;;;;;;;*=5555545335994598889", "554999955555555447_;;;;;;;;;;;;;;-;;_)++}5577===);;;;;;;;;;;;;;;;;;;;;)5555555555355549999", "54999994555555494);;;;;;;;;;;;;;;;--;*++}}1=77+)_;;;;;;;;;;;;;;;;;;;;;_3555544999455554498", "49444499955599993_;;;;;;;;;;;;;;;;;;;;)+=++=++));;;;;;;;;;;;;;;;;;;;;;*1554499999994544998", "4994449945559999}*;;;;;;;;;;;;;;;;;;;;_+===++))_;_)))_;;;;;;;;;;;;;;;;;7454449999999444999", "9999999995555549+;;;;;----;;;;;;;;;;;;;)=++))));;_+}}}}=)_;;;;;;;;;;;;;+544449998899444988", "9999999995555554);;;;;-----;;;;;;;;;;;;)+++)))_;;+7}}}}}}+;;;;;;;-;;;;;)544554999954444988", "9999999995549453);;;;;------;;;;;;---;;;)++)))_;*+7}}}}}7);;;;;--;;;;;;+544455545559454988", "9999999995549995+;;;;;-----------------;)++))_;-;)=77}}}7);;;------;;;;}444455355999944988", "4444499945549995+;;;;-------------------_)+))_;---;)+=77=_;;;------;;;;1544444554999955988", "4444449945549953);;;--------------------_)+))_;----;_)==+_;;;;;;;-;;;;;;144445335499455499", "9999999995544551)_;---------------------*))))_;-------;;--;;;;;;;;;---;;)34455555554455999", "9999999995555557_;;---------------------;))))_;;;-----;--;_;;;;;;;;;----;;}454499455555499", "999999999554953117+);;-----------;;;;---;)))__;;;---------;*;;;;;;;;;---;_}444999455333599", "555554494555531}}111+_;----------;;;;;--;))))_;;;;---:-------;;;;;;;;-;;+54444444455535555", "555555545552}}}11}111+;;----------;;;;--;)))__;;;;;;---::---------;;;;;7444444554555555555", "555555445555}==}11111};;-----------;;;--;)))__;;-;;;;;;-----------;;_+34444444444445555555", "55555544555551==}}117_;-------------;---;)_;;;;;-;;;;;------)1}777135444444444444445555555", "333335555554453+++)_;-------------------;);;_--;--;;;;;;;;;;)55444444444444444444444555555" ], [ "8888999888888888#$$889999994449544449445599888888888889994999944555555554999988888##088999", "9999999888888888889999988999999945549999554498888888999449445555599555545555498888$0000$99", "9999998$$#$$899999999988$999999454999994555549888888999998889945549555599455554999888$$$89", "99999$$##$8999888899998$$99994499451}1=)))++=13499999998888888945555555999955555554988$$$8", "889998899999998$$$889998$99994995})))))))__))))+=14988988888999999555554999554999444498##$", "889999999999988#$$8999999999944527)__*;______)__))}988988888999994555554945599999944449998", "8999989988889998889988889999944527++++++=7}}1}=)__=998999888888999555555599554999994499944", "88998$899988988899980##0899999527}}}}}1111233327))+554499888899994555555999945444555999944", "999988$899999$$##898&00&8999999}73}}}}1111233321+)+455555999899555455555988884549945494549", "9999988888998$##b###&8999999513}=++7}}777}1117)1994555549445559955555988894988899555998", "999999999999998$$0898#$#89999945537====}22}}}122}=3999999554445555455555999894988889449999", "99988889998899988##98$$#8999945155}7777}22222222112499999549999945555555999949888899445555", "8888888999889999888999989999498925}777=7}1222222225995555549999999455555999459888999994499", "8888889499899994999988999999498844277=77}1112222599455549995559999955555555554989998889549", "88888944444444444498888899944449943}777}12322112453355998889555999555555549995544449989554", "99999945449994555598888894444455533177=}}777}112555499998888955555553335499999444444455555", "44455549989995545559998894445555335}==+}7==71322533999999899945355353333599994555449999555", "44554998889995499555999845555544525}===1=+=7121131_)71259999995554453333599945559454999994", "99454999889944999455599945553317++3}===}=++=}1}}41___;;;__)+7}2349455533599455559955998888", "995554998889498889545499532}+)_;;*15377}7=7}}7}542)_*;;;;;;;;;;_)=135553599533599945498888", "994555498994498945594331=)_;;;;;;;=3551}}11}=15445)_*;;;;;;;;;;;;;;;+355545555354995599889", "94555554999549955331}+)_;;;;;;;;;;+13545333135445=_;;;;;;;;;;;;;;;;;*+55553545335994598889", "55499945555555545+_;;;;;;;;;;;;;-;;=77==735}7=77);;;;;;;;;;;;;;;;;;;;_25555555553355549999", "54999995555555491_;;;;;;;;;;;;;;;---;)+==}1===+);;;;;;;;;;;;;;;;;;;;;;15555549999455544498", "49444499955599997;;;;;;;;;;;;;;;;;--;_++7=+=++)_;;;;;;;;;;;;;;;;;;;;;;75554999999994544998", "4944449945559999+;;;;;;;-;;;;;;;;;;;;;)====+++))_)_;;;;;;;;;;;;;;;;;;;)5554449999999444999", "9999999995555544);;;;-----;;;;;;;;;;;;_+++++))__+7}}7+_;;;;;;;;;;;-;;;_5555449998899444988", "9999999995555555_;;;;------;;;;;;;;;;;;)+++)))_)7}}}}}});;;;;;;;--;;;;_3555554999944444988", "9949499945549453_;;;;------;;;;;-------_)++))__+77}}}}});;;;;;;--;;;;;_3554553545559444988", "9999999945549995);;;;-------;;;--------;))+))__+=777}}}+;;;;-------;;;_5444455355999944988", "4444449945549995);;;---------;;---------))+))_;--)+7}}7+;;;;-------;;;_2544444554999955988", "444444494554995}_;;;;-------------------_)+))_;---_)=77);;;;;;----;;;;;;244445335499455499", "9999499995544557*;;;--------------------;)+))_;-----;;;;;;;;;;;;;;----;;)24455555554455499", "999999999555555});;-------------;-------;)+))_;;;-------;;;;;;;;;;;;----;;=554499455555499", "99999999955553}}11=);-----------;;;;;;--;)+))_;;;;------;;;;;;;;;;;;----;_}544499455333599", "5555554455521111}}1}+;;----------;;;;;--;)+))_;;;;---------;;;;;;;;;--;-)34444445555533555", "555555555537=}1211111);-----------;;;;--;))___;;;;;;-------------;;;;;;+544444555555555555", "5555555555527=}111111+;------------;;;--;))_*;;;-;;;;;;-:----------;;)15444444555555555555", "5555555555555177}}}7);--------------;;--;))__;;;;-;;;;;-----)}7=++715444454445555555555555", "333335555555553)__;------------------;---)_;_;-----;;;;;;;;;)55544444444554445555555555555" ], [ "8888999888888888#$$889999994449544449455599888888888889994999949555555554999988888##088999", "9999999888888888889999988999999945549999554498888888999449445555599555545555498888$0000$99", "9999998$$#8$899999999988$999999454999999944499888888999998889945549555599455554999888$$$89", "99999$$##$8999888899998$$99994499452317=77}1554989999998888888945555555999955555554988$$$8", "889998889999998$$$889988$9999445}=+++)))))))++71349888888888899999555559989554999444498#0$", "889999999999988#8$88999999999453})______**_))))))19888988888899994555554945599999944449998", "899998998888999888998888999994527)))))))+++==)___+5998989888888999555555599554999994499944", "88998$899988988899980##0899994311}}}}}11122331=)_+5549999888888994555555999945494555999944", "9999888899999$$##898&00&899999113}}}}111123332}+))5955554999899555455554988884549945494549", "9999988888998$##b###&899999433}===}}}}}11221+)+4999555599945559955555988894988899555998", "999999999999998$$0898#$#8999995327++==12}77}122=)19999999554445555455555999894988889449999", "99988888998899988#$98$$#899944353}77771232223321}15999999549999945555555999949888899445555", "888888899988999988899988999949953}77==}112222222139995554449999999455555999959888999994499", "8888889499899999999988999999499941777}}122222213499955549995549999955555555554989998889549", "888889444444444444988888999445499377==7112332225453355998889455999555555549995544449989554", "9989994544999455559888889444445553177771}7=7}135335499998888955553553335499989444444455555", "4444554998999554555999889444555533}==++17==71225559999998899995355353333499994555449999555", "4455499888899549955599984555554435}=+==1=+=712131+1549999999995554453333599945559459999994", "99454999889944999455599945553217+37====}=++=11}52__*__)+}133353549455333599955559955998888", "9955549988894988895454995317))_;_331=77}7=7}}=241__*;;;;;;;;_)+}35455533599553599945498888", "994555498894498945594331=)*;;;;;;7353}7}111}73445)_*;;;;;;;;;;;;;;)15533545555359995598888", "945555549995499555317+)*;;;;;;;;;+135432133154441_;;;;;;;;;;;;;;;;;_1555553545335999598889", "55499945555555557)_*;;;;;;;;;;;-;_1111122551355}_;;;;;;;;;;;;;;;;;;;)555553555553355549999", "549999955555554}_;;;;;;;;;;;;;;;--;;_)+++}1++=+;;;;;;;;;;;;;;;;;;;;;_255553354999555544498", "494444999555999+;;;;;;;;;;;;;;;;;--;_)+==++++));;;;;;;;;;;;;;;;;;;;;;155554499999994544998", "494944994555994);;;;;;;-;;;;;;;;;;;;;))+===++)_;;;;;;;;;;;;;;;;;;;;;;=55554449999999449999", "999999999555553_;;;;;----;;;;;;;;;;;;_+++==+))_))+))_;;;;;;;;;;;;-;;;)55555449998899444988", "999999999555553_;;;;-----;;;;;;;;;;;;;)++++)));;)7}}}}=);;;;;;;;--;;;_34555554999944444988", "994949994554943_;;;;------;;;;;;;;--;;_++++))_;;=7}}}}}7;;;;;;--;;;;;*14454553545549444988", "999999999554994);;;--------;;;;-------;))++))_;_=77}}}}7;;;;-------;;*24444455355999944988", "444444994554995+;;;----------;---------_))+)__;;)+77}}77_;;-------;;;*15444444554999955988", "444444494554941)+);;-------------------;))+)_*;---_+=}}=_;;;;-----;;;;;=544445335499455499", "99994999955445332}=);------------------;))+))*;----;)+=+*;;;;;;;-;---;;;=54453555559955999", "9999999995555311}}1}=_------------------_)+)__;----------;;;;;;;;;;;----;*}555499455555499", "9999999995555}7}11}117_---------;;;;;---_)+))_;;;-----;-;__;;;;;;;;;----;_1444499455333599", "5555544445545}=7111111);---------;;;;;;-*))))_;;-;--------;;;;;;;;;;---;)54444455555533555", "55555554555442=+=}1111+;----------;;;;;-;))))__;-;;--:-----------;;;;;;)544445555555555555", "55555555555445=+++77+_;;--------:--;;;;-;)))__**;;;;----:----------;;_}5444444555555555555", "555555555555457);;;-----------------;;;-;))__*;;;-;;;;;-----;)))__)72544554445555555555555", "333335555555453=_;;---------------:--;;-;)_;*;----;;;;;;;;;;)35544454444554445555555555555" ], [ "88$899988888888$#$$888999994449444499445499888888888889994999949555555554998888888##088999", "9999999888888888889999988999999945549999444498888888999949944555499555545554498888$0000$89", "9999988$$#$$899999999988$99999944499888899449988888899999888994554955559945555499988$$$$89", "99999$$##$899988889999$$$9999999999445335559999989999998888888945555555999955555449988$$$8", "889998889999988$$$889988$99994451}=7+)_))))=}135449888888888889999555559989544999944998#0$", "889999999999988#$$88999999999451+____))___))))++149888988888888994555554945599999994499998", "8999989988$89998889988$899999531+)________))___))74988988888888999555555599554999994499944", "88998$899988988899980##08999943217777}111121}+___75549999888888994555555999945494555998944", "99998$$899999$$##898&00&899994231}}}1111233331+))}9945554998889555455554988884549945494549", "9999988888998$##X###&89999455177}}}}1233321+))}9999455599945559955555988894988899554998", "99999999999999$$$089$###899999537+++71}===}1127))39999999554444555455555998894888889449999", "8998888899889998$#$98$$#89994553}777}1311112227+}49998999549989945555555999949888899444545", "88888889998899998889998899994453}77=}11211222111159994444449999999455555999959888999894499", "88888894998999999999889999994994}777}11212222122599955599994449999955555555554989998889549", "8888889444444444449888889994444417===}1213322135455555998889455999555555549994544499989554", "988999444999945554988888944444553}7=7}11777}1253355999988888955555555555499989444499445554", "44445549989995545559998894445545317===}1===}3394559999998889995355553555499994554449899555", "4455499888899449955599984455554557=+++=1===}3152354999998888995549453355499945549459998999", "999499888889449894555999455531}}37====7}=++71}51_)=713599995333349955555599955549955988888", "994554998889498889445499517+)__+51====77}=7}7}41__;;;;*_)=7}135549455555599555599945988888", "9945554988944989455952}+);;;;;;*25517}}}11171541__;;;;;;;;;;;*)+}3555533545555359995598888", "9455555499954995521=)_;;;;;;;;;;}254511113324443__;;;;;;;;;;;;;;;_}55553553595335994598889", "554999455555551+)_;;;;;;;;;;;;;;=13555312555443)_;;;;;;;;;;;;;;;;;_15555553555553355549999", "54999995555553+;;;;;;;;;;;;;;;;;;_))++=7}}1}3}_;;;;;;;;;;;;;;;;;;;;+5555553349999455544498", "99444999455541_;;;;;;;;;;;;;;;;;-;;_+==77+=7=);;;;;;;;;;;;;;;;;;;;;_3455555999999994444998", "49994499455547*;;;;;;;;;;;;;;;;;;-;;)+==7===+);;;;;;;;;;;;;;;;;;;;;_2455554449999999449999", "9999999995553+;;;;;;;--;;;;;;;;;;;;;)+=7==++)_;;;;;;;;;;;;;;;;;;;;;;}455555449998899444988", "9999999995555);;;;;-----;;;;;;;;;;;;_+=7=+++)_;;;;)))_*;;;;;;;;;-;;;7445555554998944444988", "9999999945554+;;;;;------;;;;;;;;;;;;)+=++++)_;;;;_+7}}}=);;;;--;;;;+545554555594549444988", "9999999945544=;;;;---;_;--;;;-;;;;;;;_+++++))*;;;;_=}}}}}}=;;--;;;;;)544554455555999944988", "4444499945544=;;;;)711=_---;;;;;;;-;;;)))++)_;--;;)=}}}}}}+;-----;;;)544544444554999944988", "4444444945545);*+}77}}}+;---;;;-------_))++)_;----_+7}}}}});-----;;;;+54444445335499955499", "9999999995553__+====7}}7_----;;-------;))+))_*;-----;)=77=);;;--;;;;;;_1544453545559955999", "9999999995553)_++++=7}}})--------------_)+))_*;------_)+=+_;;;;;;;;---;;)15554999455555499", "9999999995552_*)++++=}}});-------------;)+)))_;---------;;-;;;;;;;;;---;;)5444999455333599", "5555544945557)_=))))+}}})--------------;)))___;;-------;;--;_;;;;;;;;-;;+54444445455533555", "555555545555+____;;;;__;---------;;----;)+)___;;-;------;---;;;;;;;;;;;=544444554455555555", "5555555555557_)));;;--------------;;;;;-))))___;;-;----:---------;;;;;}4444444444555555555", "5555555555545=)+);;----------------;;;;;_))))_;;;-;;;----::-------;_=344444444455555555555", "33333555555553)*;;------------------;;;;_)__;;;;;;-;;;;-----)11111554444444444444445555555" ], [ "88$8999888888888#$$889999994449444499445499888888888889994999949555555554999988888##088999", "9999999888888888889999988999999945449999444488888888999949944555499555545554498888$000#$89", "9999988$$#$$899999999988$999999444998888994499888888999998889945549555599455554999888$$$89", "89999$$##$899988889999$$$9999999999999999999999989999998888888945555555999955555449988$$#8", "889998899999988$$$889988$99994994311}=)+==}39944449888888888889999555559989544999444998##$", "889999999999988#8$88999999999452+))))))))))))+72599888988888888994555554945599999994499998", "8999989988$89998889988$899999431)______*__))))))=54988989888888999555555599554999994499944", "88998$899988988899980##089999432}+++)++====+)___)=5449999888888994555555999945494555998944", "99998$$899999$$##898&00&$99995551}}1111233331+)_)19945554998889455455554988884549945494549", "9999988888998$##b##$089999495}}}1111233332=)))19999455599945559955555988894988899554998", "99999999999999$$$089$###89999451===7}77}}12227)))39999999554444555455555999894988889449999", "8998888899889998$#$98$$#89994551===712}7}}112}))}99998999449989945555555999949888899444544", "8888888999889999888999889999455}}77}2321122221}1299994444449999999455555999959888999894499", "8888889499899999999988999999445}77=}}11111221111599955599994449999955555555554989998889549", "88888894444444444498888899944551777}112233321135453554998889454999555555599994544499989554", "9889994449999455559888889444445277=7}11}777}1555355999988888955555555555499989444499445554", "4445554998999554555999889444555517=7}11}==7}5994559999998889995555553555499994554449899555", "44554998889995499555999844555544}7=++=1}===}5955354999998888895549455555499945549459998999", "999499888889449894555999455531337====717=+=}15}1355559999894533349955555599955549955988888", "9945549988894988895455942}=+))137=====}}}=7}}57__)+=}2549453533549455333599555599945988888", "994555499894498955551}+)_;;;;;+5517777}}111}54=__;;;;;;_)+71355555555333545555359995598888", "94555554994549451}+)_;;;;;;;;;+3545111}}233544=__;;;;;;;;;;;;_+735445533553595335994598889", "55499945555557)__;;;;;;;;;;;;;+2354452}}353545)_;;;;;;;;;;;;;;;;)1445553333555555355549999", "5499999555537_;;;;;;;;;;;;;;;;;)++++7}1111153);;;;;;;;;;;;;;;;;;;)545555333349999455544498", "994444494533);;;;;;;;;;;;;;;;;-;;_+7==++++7});;;;;;;;;;;;;;;;;;;;;}55555355999999994444998", "499444494531_;;;;;;;;;;;;;;;;;;;;;)777777=++_;;;;;;;;;;;;;;;;;;;;;+54555554449999999449999", "999999999537;;;;;;;;;;;;;;;;;;;;;;)+77777=+)_;;;;;;;;;;;;;;;;;;;;;)54555555449998899444988", "99999999953=;;;;;-----;;;;;;;;;;;;_+77777++);;;;;;;;;;;;;;;;;;;;;;+54555555554998944444988", "99999999433};;;;;;-----;;;___;;;;;;)=}7==++);;;;;;;;;;;;;;;;;;-;;;+54555554535594549444988", "999999994531_;;;-----;)7}11}+_;;;;;_+}7++++);;;;;;;;;;;)+++)*;;;;;=54455554455555999944988", "44445449533}_;;----;+==+=7}7+;;;;;;;)==++++);;;;;;;;;;;_+7}11}+_;;)54445554449554999944988", "44444444533+_;;----;+=++=7}7+;;;;;;;_)++++));;;;;;;;;;-)=}}111}+;;_15445554445355499955499", "99994999433)*;;----;_)+++7}7);;;;;;;;_)+++))_;;;;;;;;-;)=}}11}7+_;;)1544554453545559955999", "99999999452);;;--;_)__)++==_;--------;))++))_;--;;;;---;)7}}}7+_;;;;;+15455554999955555499", "99999999451_;;;__)*_;;_)+=);----------_))+))_;;---------_))==+_;;;;;;;;)244444999455333599", "5555555453)__;;;_;_;;;;;;;------------;))+)))_;----------;_))_;;;;;;-;;_144444455555533555", "5555555531_;;;;;_));;;----------------;))+)))_;-----------;---;;;;;;;;)5444444545555555555", "5555555532);;;;;*_;--------------------_)+)))_;;----------;;--;__;;;;_34444444555555555555", "55555555553=;;;;;;---------------------;)+))_;;;;-;;------------;;;;_}44444445555555555555", "333333555553);;;;;-----------------;;;;;)+)_))*;;;-;;;----:----;;_)73444444444555555555555" ], [ "88$8999888888888#$$889999994449444499445499888888888888994999949455555554999988888##088999", "9999999888888888889999988999999944449999444498888888999949944555499555545554498888$0000$89", "9999988$$#$$899999999988$999999444998888994499888$88999998888945549555599455554999888$$$89", "89999$$##$899988889999$$$9999999998888888999999989999988888888944555555999945555449988$$#8", "889998889999988$$$889988$99999999945552355988899499888888888889999555559989544999944998##$", "889999998999988#$$88999999999995177}+))))))=1544499888888888888994555554945599999994499998", "8999989988$89998889988$899999453+)__)))__))))))=344988989888888999555555599554999994499944", "88998$899988988899980##089999452=)________)__))))24449999888888994555555999945494555998944", "99998$$899999$$##898&00&$99994552}}}}}11111}+)__)+9945554998889455455554988884449945494549", "9999988888998$##b###0899994931}}1111233331+)_)}9999455599945549945554988884988899554998", "999999999999998$$089$###8999945177}}}11233321+)))29999999554444555455555998894888889449999", "8998888899889998$#$98$$#899944277==}}7=7}1121+))+49998999449989945555555998899888899944444", "8888888999889999888999889999443}77}132}}11221+)+599994444449998999455555999949888999899499", "8888889499899999999988999994451}7=}1111122211}}1599955499994449999945555455454989998889499", "8888889444444444449888889994451}7}}1111223321213455554998889444999455555599994444499989454", "99899944499994555498888894444417===}1}1}}77}1555554999988888955555555555499989444499445554", "44445449989995545559998894445551777}1111==7}4994559999998888994555555555499994444449889555", "44554998889994499555999844455541}7=7}}1}===}4945554999998888895549455555499995549459888999", "99444999889944989455599945532337==++=}17=+=}5555555559999894555549955555499955549955988888", "994554998989498889445544217==21======}1}}=}15771355555499955555549455555599555599945988888", "99455549999449994532}=)__*;;_1527====}}112124=___)+=13555555955555555333595555549995498888", "9455555499454951}+)_;;;;;;;;*1545}}}}}}}23355)__;;;;;;_)+}25555555445533553595535999598889", "554999455551+)_;;;;;;;;;;;;;_33544311}7}35355)_*;;;;;;;;;;;_)=1555445553333555455554549999", "54999995532);;;;;;;;;;;;;;;;;+7}}}1211355113+_;;;;;;;;;;;;;;;;*+54555553333549999455444998", "4444444445=_;;;;;;;;;;;;;;;;;;;*)+++=77}2=7)*;;;;;;;;;;;;;;;;;;_}4445555354999999999449988", "4444444452);;;;;;;;;;;;;;;;;;;;;)===77}77=+_;;;;;;;;;;;;;;;;;;;;)5445555554449999999499999", "999999994};;;;;;;;;;;;;;;;;;;;;;_+===7}}}=)_;;;;;;;;;;;;;;;;;;;;_3444555555449998899449988", "999949994};;;;;---;;;;;;;;;;;;;;;)=7777}7+);;;;;;;;;;;;;;;;;;;;;_344455555555499894444498$", "994944445};;;;;;---;-;;;;-;;)+++++}7==77=+);;;;;;;;;;;;;;;;;;;;;_3444555554535494449444988", "999949995+;;;----------;;)7}}77}7==}7===++);;;;;;;;;;;;;;;;;;;;;_3444455554445554998944988", "444444443);;;-----------*+77777}}=)77=++++);;;;;;;;;;;;;;;;;;;;;)5444555554449554999944988", "44444444}*;;;;----------*)+====77+_)=+++++);;;;;;;;;;;;;;;--;_)+73544455554445555499944499", "99494944+;;;;;---------;_)++====+);*++))++);;;;;;;;;;--;;;--;_)=}}125455554453545559955999", "99999995);;;;-----------;))++);--;;;_))+++)_;;;;;;;;---;;--;_)+7}1113555555554999955555499", "99999942_;;;----------;;____;-----;;;_)))+)_;;-;;;;;-------;_)+7}1111545555444999455333599", "5555555+*;;;;;;---;;;;;;;;---------;;__))+))*;--;;;;--------*_)+}1}}=754454444445555533554", "5555552_;;;;;;----;_;---------------;*)_)+))_;---;----------;_)))++)_)34444444445555555555", "5555553);;;;;------------------------;)))+)_;;;---------:----;;_*;;;_244444444445555555555", "555555557*;;;--;----------------------;))+)__;;;--------:-:--;;----;_344444444445555555555", "3333333331_;;;;;;-;;------------------;_)+___*;;;---------::---;--;;+544444444444555555555" ], [ "88$8999888888888#$$889999994449444499445499888888888888994999999454555554999988888##088999", "9999999888888888889999988999999944449999444488888888999999944555499555545554498888$0000$89", "9999988$$#$$899999999988$99999944499888899449988888899999888894554955559945555499988$$$#89", "99999$$##$8999988899998$$9999999998888888999999989999988888888944555555999945555449988#$#8", "889998889999988$$$889988$99999998999999999888899999888888888889999555559989444999944998#0$", "889999999999988$$$8899999999999945321}++77149899499888888888888994555554945499999994499988", "8999989988$89998889988$8999999457)))+)))_))))7}3449988988888888999555555599554999994499944", "88998$899988988899980##089999453=)_____;*_))))))}44449998888888994555555999945494555998944", "99998$$899999$$##898&00&8999995317++))))))))___))79945554988889455455554988884449945494549", "9999988888998$##b###0899999951}}}111233317)___+4999455599945559945554988884988899554998", "999999999999998$$089$#$#89999452}}}111133332}+)_)19999999554444555445555988894888889449999", "8998888899889998$#$98$$$89994517==7}7}}12322}+)))59898999449989945555555998899888899944444", "88888889998899998889998899994427=7}21}=7}}12})))}99994444449998999455555999949888999899499", "888888949989999999998899999443}7}}1331112222}++7999955599994449999945555455554989998889499", "888888444444444444988888999445}7=7}}111323321111455554998889444999455555599994444499989454", "988999444999945554988888944445}==7}11111}77}1235554999988888945545555555499989444499444554", "444454499899955455599988944455177=}}}}11===}5994559999998888994555555555499994444499889455", "4455499888999449955599984445555}7}}}}}}1===}5945554998998888894549455555499995549449888999", "994449998899449994555999455525}7=+++=}}1=+=73553333359998884555549955555499955549955988888", "99455499898949988944554931}}137===+=}111}=712555555555499945553599455555599555599945988888", "99455549999449995531}+)))__)}51=====7}1111251)=}259945555555955555555333595555549994498888", "94555354994554517+)_;;;;;;;_7542777=7}111335}_*;;_)713555499555535445333553595555999598889", "55549945552=))_;;;;;;;;;;;;_3354311}}}}71552)_*;;;;;;;_)7155544455545533333555455554549999", "5499999532)*;;;;;;;;;;;;;;;_13355521}125412}_*;;;;;;;;;;;;_)734995555533333549999455444998", "444444445+*;;;;;;;;;;;;;;;;;;;*)++=}13544}+_;;;;;;;;;;;;;;;;;_}494455533354999999999449988", "444444441);;;;;;;;;;;;;;;;;;;;;)77=++)+127+*;;;;;;;;;;;;;;;;;*)344445553354449999999499998", "99999994=;;;;;;;;;;;;;;;;;;;;;;_=777}}7}7=+;;;;;;;;;;;;;;;;;;;*}44445555355499998899949888", "99494444+;;;;;;--;;;;;-----;;;;;+7=77777=+);;;;;;;;;;;;;;;;;;;;74454455555555999894444498$", "99444445);;-;;;---;;---------;;;)=+=777=++);;;;;;;;;;;;;;;;;;;;754444555554555494449444988", "4999444}_;;-------;;--------;)7}}}}1}}7+++);;;;;;;;;;;;;;;;;;;;744444555554445554998944988", "4444445);;;;;------;-------_++}}}}}}}=+++++;;;;;;;;;;;;;;;;;;;;}44444555554449454999944988", "4444441_;;;;;-------------_++=7}}7}}7++)+++;;;;;;;;;;;;;;;;;;;*}44444455554445555499944499", "944444+;;;;;;;------------)+++=}}77}+))))++;;;;;;;;;-;;;;;;;;;_144444555554453545549945999", "994443_;;;;;-------------;_)+++_;;;))))))));;;;;;;;--;;;;----;;}54552112555554999955555499", "999947;;;----------------;__;;----;;)))))))_;;;;;;---;;;;------;}32}++=7}25444999955333599", "55552_;;--;;;-------;;));;;;-----;;;_))))+)*;-;;;;---;----;;;;;;*=+)++7}125444445455533545", "5555+;;;--;;--------;;------------;;_))))))_;--;;;---;;--------;_))++=}}125454445555535555", "5555}_;;;-------------------------;;;)))))));;--;;---;;--------;)))))+}1154444445555555555", "555551_;;;---;;-------------------;;;*)_)))_;;-----------------;_))+))+1544444445555555555", "3555552);;;;;;;;-;;----------------;;*)))))__;;;----------::-----;;;;;;)344444444555555555" ], [ "88$8999888888888#$$889999994449444499445499888888888888994999999455555554998988888##088999", "9999999888888888889999988999999945549999444488888888999999944555499555545554498888$0000$89", "9999988$$#$$899999999988$999999444998888994499888$8899999888894554955559945555499988$$$#89", "99999$$##$8999988899998$$9999999998888888999999989999988888888944555555999945555449988#$#8", "889998889999988$$$889988$99999998989998889888899999888888888889999555559989444999944998#0$", "889999998999988$$$889999999999999453321123498899499888888888888994555554945599999994499998", "8999989988$89998889988$899999995}++=+)___))+7354449988988888888999555555599554999994499944", "88998$899988988899980##089999453=)___)__*_)))))=594449999888888994555555999945494555998944", "99998$$899999$$##898&00&$9999953}+))__________)))39945554988889455455554988889549945494549", "9999988888998$##b###0899994451}}}}}1111}7+___)+9999455599945559955554988884988899554998", "999999999999998$$089$#$#89999551}}}111123332})__)19999999554494555445555988894888889449999", "9898888899889998$#$98$$$89994517==}}}11333327))))59898999449989995555555998899888899944444", "8888888999889999888999889999451===71}==7}1117)))}99994444449998999455555999949888999899499", "888888949989999499998899999452}7}}1331}}1121=))7999955599994449999945555455554989998889499", "888888444444444444988888999452}777}111122332}}11455555998889444999455555599994444499989454", "988999454999945555988888944442777}111111}777}125554999988888955555555555499989444499445554", "444555499899955455549988944452}7==7}}}11}==71994559999998888994555555555499994444449889555", "445549988899954995559998445555177}}}}}}1}==71945354998998888894549455555499995549459888999", "9945499988994499945559994553237==+==77}17++=}533333359998889555349955555499955549955988888", "99555499898949988954559932}73}===++=}111}7=}3555355335599945553599455335599555599945988888", "99555559999449995533}=)))_))52======}1111122+}55559945555335953355553333595555549994498888", "945553549945553}=)__;;;;;;;_35377===}}11}235)__)+}1544555599535335445333553595555999598889", "33549443337+)_*;;;;;;;;;;;;73545}}}7}}771552_;;;;;;_)=135555554455545333333555455554548999", "549999953+*;;;;;;;;;;;;;;;;73554531}}}254317_;;;;;;;;;;;)=15499995555333333349999455544998", "444444457*;;;;;;;;;;;;;;---;;;))+=}1354443=_;;;;;;;;;;;;;;;_+5499445553333599999899944998$", "44444442);;;;;;;;;;;;;;;;;;-;;;=+)))+=13}7=_;;;;;;;;;;;;;;;;;+4444445533354449999989999988", "99999947;;;;;;;;;;;;;---;;;;;;;)7====777=+=*;;;;;;;;;;;;;;;;;_3444455553335499998899999888", "9949444=;;;;;----;;;;--------;;_==+===7=+++;;;;;;;;;;;;;;;;;;;144555555533335998894444498$", "9944445);;-------;;;---------;;_+======++++;;;;;;;;;;;;;;;;;;;1455455555554535494449444988", "499944}_;;--------;;-------;)=}}}}}7===+)++;;;;;;;;;;;;;;;;;;;1444444555554455554998944988", "444443);;;;--------;------;)+=}}}}}}=++))++;;;;;;;;;;;;;;;;;;_2444444555554449554999944988", "44445=;;;;;;;------------;)++=7}}}}}+)))))+;;;;;;;;;;;;;;;;;;_3444444555554455555499945499", "99443_;;;;;;;-------------)+++=}}7=+))))))+;;;;;;;---;;;;;;;;)5444444555554553545559955999", "9944=;;;;-----------------_)++)_--;__)))_));-;;;;;---;;;-;;;;+5544444455555554999955555499", "9942_;;------------------;;;;;----;_))))))+;-;;;;------------_1544444455555544999955333599", "555);;----------------;+;-;;------;;_))))));--;;;-------------_15444552}=+=}35455555533555", "557;;----------------;;-----------;;_))))));;--;;--------;;-;;;)2553}=++)+7}13455555535555", "552_;----------------------:------;;;_)))));;-------------------)++)+++++=7}15455555555555", "5552_;;----------------------------;;__))));;;-------------------_)++++++7}}15455555555555", "35551);;;-;;;;---------------------;;__)_));;;;---;----------:---_)++++))+}154445555555555" ], [ "88$8999888888888#$$889999994449444499445499888888888888994999999455555554999988888##088999", "9999999888888888889999988999999945549999444498888888999999944555599555545554498888$0000$89", "9999988$$#$$899999999988$9999994449988889944998$8$88999998889945549555599455554999888$$$89", "99999$$##$8999988899998$$9999999998888888999999989999988888888944555555999945555449988$$#8", "889998899999998$$$889988$99999998989998889888899999888888888889999555559989444999944998#0$", "889999999899988$8$889999999999999452321123498899499888888888888994555554945599999994499998", "8999989988$8999888998888999999957))=+))_)))+}354449988988888888999555555599554999994499944", "88998$899988988899980##089999452+)___)____)))))7499449999888888994555555999945494555998944", "99998$$899999$$##898&00&$99994527+))______)__)))+49945554988889455455554988889549945494549", "9999988888998$##b###0899945451}}}}11111}7+___)}9999455599945559945555988884988899554998", "999999999999998$$0898#$#89994551}}1111123332}))_+49999999554494555445555988894888889449999", "8998888899889998$#$98$$$89994517==}}}12333327+))}99898999449889995555555998899888899944444", "888888899988999988899988999955}===71}==7}1117))+599994444449998999455555999949888999899499", "888888949989999499998899999452}7771331}}1122=)+5999955599994449999945555455554989998889499", "888889444444444444988888999452}7=7}1111233331113455554998889444999455555599994444499989454", "998999454999945555988888944451777}111111}777}155554999988888945555555555499989444499945554", "44455549989995545554998894445177==7}}}11}==7}494559999988888894555555555499994544499889555", "445549988899954995559998445555177}}11}}1}===}445354998998888894549455555499995549459888999", "99454999899944989455599945533177=+=77}}17=+=}533333359998889555549955555499955549955988888", "99555499898949888954559431}}5}===++=}111}}7}3555355335499945553599455335599555599945988888", "995535599994499453217+))___+51======}11111227155354945555355953355553333595555549994498888", "9553535599455517+)_;;;;;;;;)541777==}}1}}135+__)=}3544555599533335445333553595535999598889", "3354945331+))_;;;;;;;;;;;;;}3543}1}7}}7}2555)*;;;;;)+1355555554455545333333555455554548999", "549999451);;;;;;;;;;;;;;;;;}3554531}}134451}_;;;;;;;;;;)=155449995555333333349999455544998", "44444443);;;;;;;;;;;;;;;;--;;*)++7}1344443=);;;;;;;;;;;;;;_+39999445553333599999899944998$", "5444445)_;;;;;;;;;;;;;;;;;;-;;_==+)++723}7=_;;;;;;;;;;;;;;;;)54944445533354449999989999998", "9949945_;;;;;;;;;;;;;;---;;;;;;+7====77}7+=_;;;;;;;;;;;;;;;;_14994455533335449998899999888", "4944442;;-;-----;;;;;------;;;;_==+===77=++_;;;;;;;;;;;;;;;;;}444555555333335998894444998$", "4944441;;--------;;;-----;;))+++7}7+==7=+++_;;;;;;;;;;;;;;;;;}4455555553355535494449944988", "494445+;;--------;;;----;)7}}}}}}=+++==++++_;;;;;;;;;;;;;;;;;14444445555554955554998944988", "444457_;;;;-------;;----_+=7}}}}}}+++++))++_;;;;;;;;;;;;;;;;_24444445555554449559999944988", "44442_;;;;;;-------;;--;)++7}}}}}7+++)))+++_;;;;;;;;;;;;;;;;_54444445555554455555499955499", "4445+;;;---;-----------;)+++7}7+))))))))))+;;;;;;;--;;;;;;;;)54444444555554553545559955999", "4441_;;;----------------_))++_;--;))))))_)+;;;;;;---;;;;;;;;+54444444555555555999955555499", "445);;------------------;__;-----;;)))))))+;-;;;----;;---;;;_34444444555555544999955333599", "55+;;-----------------;--;;------;;_))))))+;--;;---;;;------;+5444445532}}2544455555533555", "51;;----------------;;_-----------;;)))))));---;---;--;;;;;;;;}554551=+++=}254555555533555", "53);;---------------------:-------;;_))))));;------;----------_1117+++++=7}154555555555555", "553);;;-----;---------------------;;___))));;-----;;------------_)++++++=7}254555555555555", "3553+;;;;;;;;---------------------;;*_))_));;;----;------------;))++++++7}1354445555555555" ], [ "8888999888888888#$$889999994449444499445499888888888888994999999455555554999988888##088999", "9999999888888888889999988999999945549999444498888888999999944555599555545554498888$0000$89", "9999988$$$$$899999999988$9999994449988889944998$8$8899999888994554955559995555499988$$$$89", "99999$$##$8999988899998$$9999999998888888999999989999988888888944555555999945555449988#$#8", "889998899999998$$$889988$99999999994999989888899999888888888889999555559989444999944998#0$", "889999999999988$$$88999999999445321}}7++7}248899498888888888888994555554945599999994499998", "8999989988$89998889988889999945})_)))))__)))+=14449988988888888999555555599554999994499944", "88998$899888988899980##089994527)______;;__))))=494449998888888994555555999945494555998949", "99998$$899999$$##898&0#&899945317=+)))))))))___)799945554988889455455554988889449945494549", "9999988888999$##X##$089993352}}}112223331+__)299899455599945559945554988884988899554998", "999999999999998$$089$#$#8999553}}}11111233327)))599998999554994555445555988899888889449999", "9998888999889998$#$98$$$899455}===7}}}}12321=))=999888999449888995555555998899888899944444", "888888899988999988899998999553}===712}=7}}117)=4989894444449998999455555999949888999899499", "8888889499899994999988999945317777}2321122227719999955599994449999945555455554989998889499", "888889444444444444988888994452}7==7}111223332135455554998889444999455555599994444499888454", "9989994549999455559988889444527==7}11111}77=}555554999988888945555555555499989444499444554", "444555499899955455549988944553}7==7}}}}1}==7}994559999988888994555555555499994544499889555", "445549989899954995554998455552}777}}}}}1}==7}945354998998888894549455555499995549449888999", "99454999899944999455599955315}==+++=7}117=+=}533333359998894555549955555499955549955988888", "995554998994499989555532}=+=37===++=}111}}=}2555355335499945553599455335599555599945988888", "995535599994499431}+)___;;;)537=====}1111122)+}2354945555355953355553333595555549994498888", "9553535599531}=)_*;;;;;;;;;)345}7}77}}}}7335)_;;_)7254555599533335445333553595535999598889", "335494533=)_;;;;;;;;;;;;;;;=3545211}}}}25453_;;;;;;;*)=15555554455545333333555455554548999", "54999943+_;;;;;;;;;;;;;;;;;)}123331}15444317_;;;;;;;;;;;_+}3449995555333333349999455544998", "4444444}_;;;;;;;;;;;;;;;;;--;;_+++=7715452=_;;;;;;;;;;;;;;;_19999445553333599999899944998$", "4444443_;;;;;;;;;;;;;;;;;;;;;;;+7=77==71}==_;;;;;;;;;;;;;;;;)54994445533354449999989999988", "9949941;;;-----;;;;;;;;;;;;;;;;)===7}}}7=+=_;;;;;;;;;;;;;;;;_3499445553333549998888999988$", "4944447;;-------;;;;;;----;;;;;;=7==7}}7+++*;;;;;;;;;;;;;;;;*2444555555333335998894449998$", "494444=;;--------;;;;;--;_))))_;)7=+=77=+++_;;;;;;;;;;;;;;;;_34455555553355535494449944988", "494445+;;--------;;;-_+7}}}}7+;;;+=++==++++;;;;;;;;;;;;;;;;;_34444445555554945554998944988", "444457*;;;--------;;;+=7777}}=_;;)=++++++++;;;;;;;;;;;;;;;;;_34444445555554499459998944988", "44451;;;-;;;-------;_+==777}7+_;;*+++++)))+;;;;;;;;;;;;;;;;;_54444445555554445555499944499", "4445);;;;--;--------;)++=7777);;;;)+))))))+;;;;;;;-;;;;;;;;;_54444444555554553544549944989", "444}_;;;-------------_)++=+*----;;*)+))))));;;;;;--;;;;;;;;;;14444444555555554999955555499", "443);;---------------;_)));-----;;;_)))))))--;;;---;;----;;;;75444553555555544999955333599", "55);;;--;;------------;;;------;;;;;)))))))--;;;---;--;;-;;;;_5552}77}35555444555555533555", "52;;;--------------;_-;;;-------;;;;_))))));------;---;;;;--;;7}=++=7}15455454555555533555", "557;;------------;_;------:-----;;;;))_))));------;---------;_)+++++7}13455454555555555555", "555}_;;----;;--------------------;;;_))))));;----;;--------;_)+++++=7}25455455555555555555", "55551_;;;;;;;--------------------;;;;)))_));*----;----------_))+++)+}135455555555555555555" ], [ "8888999888888888#$$889999994449444499445499888888888888994999999455555554999988888##088999", "9999999888888888889999988999999944449999444498888888999999944555499555545554498888$0000$89", "9999988$$$$$899999999988$9999994449988889944998$8$8899999888994554955559995555499988$$$$89", "99999$$##$8999988899998$$9999449999988888999999989999988888888944555555999945554449988$$#8", "889998899999998$$$889998$99994495533321254988899999888888888889999555559989444999944998#0$", "889999999999988$$$8899999999451==)++))_)))+13499498888888888888994555554945499999994499998", "8999989988$89998889988889994531+_____)____)))+}5449888988888888999555555599454999994499944", "88998$8999889888999800#0899433}+))________)))))1999449998888888994555555999945494555998949", "99998$$899999$$##898&##&8995}}1}}}}}}}111117)_)3989945554988889455455554988889449945494549", "9999988888999$##b##$089937}2}}}1111223331=))3988899455599945549945554988884988899444998", "999999999999998$$0898#$#8995122==7}111123331=)+4989998999554994555445555988899888889449999", "89988889998899988$$98$$$894553}====71}=7}111=+59988898999449888995555555999899888899944444", "888888899988999988899998995152}7777}231}12227}49889894444449998999455555999949888999899499", "888888949989999499998899994231}77771122222211249989955499994449999945555455454989998889499", "888889444444444444988888994452}777}}121313323555455554998889444999455555499994444499888454", "998999444999945555498888944445}7===71111}7771955554999988888945545545555499989444499444554", "444555499899955455549998444552}7777}11117==}3994559999988888894555555555499994444499889455", "44554998989995499555499945535}=====7}}}2===73945554998998888894549455555499995549449888999", "994549998999449994555999317=5}==++++}111=++72553333359998894555549955555499955549955988888", "995554999994499994531}=+)__)51===++=}111}77}=}25555555499945553599455555599555599945988888", "9955555999955452}+)_*;;;;;;*243}7777}}1}}12}_**_)=1345555355955355553333595555549994498888", "94555355952}=))_;;;;;;;;;;;;1545}}1}}}}}353}_*;;;;;;_+}25499555335445333553595555999598889", "335494531)_;;;;;;;;;;;;;;;;_13544521}134455=_**;;;;;;;;;_+}3554455545533333555455544548999", "54999943);;;;;;;;;;;;;;;;;;;))+7=7}}2544411)_*;;;;;;;;;;;;;_249995555333333349999455444998", "4444444=_;;;;;;;;;;;;;;;;;;;;;;+}=++==}327+*;;;;;;;;;;;;;;;*)4999445553333499999899944998$", "4444443_;;;;;;;;;;;;;;;;;;;;;;;_7}}}}}}}7=+*;;;;;;;;;;;;;;;;_34994445533354449998989999988", "9949941;;;;----;;;;;;;;;;;;;;;;;+}}7}}}}=++;;;;;;;;;;;;;;;;;_1499445553333549998888999988$", "494444};;;;;;---;;;;;;;;;;;;;;;;_=}7=}}7+++;;;;;;;;;;;;;;;;;*1444555555533335998894999998$", "494444};;---;----;;;;;;;;;;;;;;;;+}7==7=+++;;;;;;;;;;;;;;;;;*14455555553354535494449944988", "494444=;;--------;;;-;)))*;;;;;;;)}7===++++;;;;;;;;;;;;;;;;;*14444445555554945554998944988", "44444}_;;;-------;*)7}}=);;;;;;;;*=7++++)+);;;;;;;;;;;;;;;;;*}4444445555554499459998944988", "44445);;;;;;----;+7=====+);;;;;;;;)=++)))+);;;;;;;;;;;;;;;;;;=4444444555554445555499944499", "4444}_;;;;;;----_+++++===);;;;;;;;_++))))));;;;;;;;;;;;;;;;;*+4444444555554555544549944988", "9445);;;--------_)++++===);;;;;;;;;)++)))));;;;;;;;;;;;;;;_))+5444444555555554999945555499", "994}_;--;;;----;;*))++++*--;;;;;;;;_)+)))));-;;;;;;;;--;;_)+=7}254444555555544999945533599", "553_;;;;;;;---;---;_))+_-----;;;;;;;)))))));-;;;;;;;---;_)++=}}135444555555444555455533544", "55};;;-;;;;--------;;;;------;;;;;;;)))))));---;;;;---;;))+=77}135444555555445555555555555", "555=*;---------;;;;;;;--------;;;;;;_))))));-----------*))+=}}1354444455555555555555555555", "55551_;;;;;;;-;__;-------------;;;;;;)))_));;----------;_)))+}2554444455555555555555555555", "35555}_;;;;;;;------------------;;;;;___)))__-------:----;;;;_}544444555555445555555555555" ], [ "8888999888888888#$$888999994449544499445499888888888889994999949555555554999988888#0088999", "9999999888888888889999988999999945544999454498888888999449944555599555545554498888$0000$89", "9999998$$$888999999999888999999454999888944499888888999998888945549555599455554999888$$$89", "99999$$##$8999988899998$89999445355544499999999989999998888888945555555999955555549988#$#8", "889998899999998$$$88999889994311}+)=+))++7159999999888888888889999555559989544999954498#0$", "889999999999988$88889999994531)______))__))+=599499888988888888994555554945599999944449998", "89999899888899988899888899531=)_*;;;;*_**_)))+54449988988888888999555555599554999994499944", "88998$899988988999980###89517+++++++++=7777)))59994449999888888994555555999945494555998944", "9999888899999$$##898&##0893+)=}}}}1122223331+)58888945554988889455455554988889449945494549", "9999988889999$##b##$#893++7}}7}}111223331++58888899455599945559945554988884988899554998", "999999999999998$$0898#$$895}=7=++==7}1}}}}11=598889998999554444555445555988894888889449999", "99988889998899988$$98$8$951}1}7777==}21}}111}598888898999449889945555555999849888899944444", "888888899989999988899998941}1}77}777}12233221498989894444449998999455555999959888999899499", "8888889449899994999988999451}}7777==7}1112125499999955599994449999945555455554989998889499", "88888944444455555549888894445277===7}11223355555455555998889454999455555599994544499989454", "999999555499955555499988944551}===+=7}117==}3955355999988888955555555555499989444499445554", "54555549999995555554999945533}=+====}111===75994359999998888994555553355499994544449889555", "455559999899954945554999531737=+++)+=}11++=75953334999998888895549453555499995549459888999", "99454999999945999555553}+_;_1}=+++++711}=++=}713333359999894553349955555499955549955988888", "99555499999454999317)_*;;;;;=517====}}1}==7});;;_+7135499955533549453333599555599945988888", "99553359999532}=)_;;;;;;;;;;_253}7}}}}}=111=*;;;;;;;;_)}2335953355553333545355559995498888", "9533533541=));;;;;;;;;;;;;;;)2545321}7}3533=*;;;;;;;;;;;;)+2533333445333553595335999598889", "33544453}_;;;;;;;;;;;;;;;;;;_12322211354455);;;;;;;;;;;;;;;_154453545333333555453354549999", "55999943_;;;;;;;;;;;;;;;;;;;-;;)++=7}}}13}}_;;;;;;;;;;;;;;;;+49995553333333349999455544998", "4455544=;;;;;---;;;;;;;;;;;;;;;;+777}}}}7+);;;;;;;;;;;;;;;;;_54994455333335999998999449988", "5444445_;;------;;;;;;;;;;;;;;;;)=77}}}}=+);;;;;;;;;;;;;;;;;_54944455533354449999989499998", "9949445;;--------;;-;;;;;;;;;;;;;+77}}}=++);;;;;;;;;;;;;;;;;_54994455533335549998899949988", "4444443;;---------;--;;;;;;;;;;;;)77}}=+++);;;;;;;;;;;;;;;;;_5444555553333335999894444998$", "4444441;;-------------;;;;;;;;;;;;=}}=++++);;;;;;;;;;;;;-;;;_24555555533355535494449944988", "494445+;---------------;;;;;;;;;;;+7=+++)+);;;;;;;;;;;;-;;;;;}5544445553354455554998994988", "545451*;;---------------;;;;;;;;;;_=+++))+);;;;;;;;;;;;-;;;;;+5444445555554449459999944988", "54545+;;--------;++_-----;;;;;;;;;;))))))));;;;;;_))))_;;;;;;+5444445555554455555499944499", "44445);;;-----;)1}=);----;;;;;;;;;;))++))));;;;;;_)+=}}7+_;;;)5555545555555533544549944988", "44441_;;-----)}}}}}}+;-----;;;;;;;;_))))))_;-;;;;_)+=7}}}7+_;)5445555555555554999955555499", "4945);------)++++=}}}_------;;;;;;;;))))))_;---;;)+=777}}7+_;;1444555555555544999955333599", "5551_;;;;;;-;)++++7}}=;------;;;---;))))))_;-----;)=7}}}}=);;;_544445555555555555555533555", "5557;;-;;;;;_*_)))+=}+;-------;-----))))))_;-----:-*)+==+)*;;)1445555555555555555555533555", "5553=;;----;;-;;;_))_----------;----_)))))_;;----:--;;;;;;;;)54444555555555555555555555555", "55555};;--;;;---;;------------------_))))))_;-------;---;;;)344455545555555555555555555555", "335553+;;;;;;_);--------------:--;--;;;;;)__;----;;-;;--;_73444555555555555555555555555555" ], [ "8888999888888888#$$88999994444954449944549988888888888899499999945555555499898888800088999", "9999999888888888889999988999999945549999444498888888999999944555499555545554498888$&0&0#89", "9999998$$$$$899999999988$9999995554999999444998$8$8899999888994554955559995555499988$#$#89", "99999$###$8999988899998$8994531}1}7}}==}1259999989999988888888944555555999955555449988###8", "889998899999998$$$88999889552=)______)))))+}9999999888888888889999555559889544999944998#0#", "889999999999988$$$889999932}}+)__;;*;;__*_)+2999498888888888888994555554945499999944499998", "8999989988$899988899888857+))))_)))))))++++)=444449888988888888999555555599554999994499944", "88998$899988988999980#$$93)__+=7}}1222333327+599899449998888888994555555998945494555998949", "99998$8899999$$##8980###83)_)7}}}}1122233321=598888945554988889455455554888889449945494549", "9999988889999$##b##$$93))+777=777111111115988888899455599945549945554988884988899454998", "999999999999998$$0898#$893=)+77==7}==}11}1119998889998999554444555445555988899888889449999", "89988889998899988$$98$8891}=7777}11}=7122333999888889899944988894555555599889988$899944444", "88888889998899998889999895}}7=777}77==}122254999889894444449998999455555999949888999899499", "8888889499899994999988994453}}777777711222355499999955599994449999945555455554989998889499", "88888944444445555499888894452}===7===7}213555555455554998889444999455555599994444999888454", "998999555499955555499988944537=++==7}}1177=73955355999988888955555555555499989444499944554", "44555549999995555554999945313==++++++711===75994559999998888994555553555499994544499889555", "4455499998999549455549941=))17=+++++7}11++=71}12354999998888895549453555499995549449888999", "9945499999994599955317)_;;;;=3}=====7}17+++==*;;__+=15499894553549955555499955549955988888", "99555499999454952}+_;;;;;;;;_25177}}}}1=7=71)*;;;;;;;;_+}553533349453333599555599945988888", "99553359999317)_;;;;;;;;;;;;;}3451111}=}3111_;;;;;;;;;;;;;)1453355553333595555549995498888", "9553535547)_;;;;;;;;;;;;;;;;;73544431}34433);;;;;;;;;;;;;;;)555335445333553595335999598889", "335494537_;;;;;;;;;;;;;;;;;;;;+}1}77}11}253);;;;;;;;;;;;;;;;}44455545333333555455554548999", "55999943);;;;;;-;;;;;;;;;;;;;;;;+7}}1111}}1_;;;;;;;;;;;;;;;;749995555333333349999455544998", "44444447;;;;;----;;;;;;;;;;;;;;;_=7}}}}}++);;;;;;;;;;;;;;;;;=4999445553333599999889944998$", "4444445);;--------;;;;;;;;;;;;;;;+7}}}}=++);;;;;;;;;;;;;;;;;+44994445533354449999989999988", "9949945);----------;-;;;;;;;;;;;;_=7}}=+++);;;;;;;;;;;;;;-;;)5499445553333549999888999988$", "4944443_;----------;--;;;;;;;;;;;;+7}=++++);;;;;;;;;;;;--;;;_3444555553333335998899999998$", "444444=_;--------------;;;;;;;;;;;)7=+++++);;;;;;;;;;;;-;;;;;14455555533355535494449944988", "494445);;---------------;;;;;;;;;;;++)+)))))+++++)*;;;--;;;;;14444445555354945554998994988", "444451;;;----------------;;;;;;;;;;))))))))_)+=77}}7);--;;;;;74444445555554499459988944988", "444447;;;-----------------;;;;;;;;;_)))))))))+=}}}}}=_;;;;;;;74444445555554445555998944499", "44444);;;------------------;;;-----;)))))))_)+77}}}}=_;---;;;)5555445555554555594449944988", "99445_;;-----;7=);----------;;;----;))))))_;;)+7}}}}+;;;;;;;;;_345555555555554999955555999", "9944};;----;*71}}7+_---------;;;----))))))_;---;)+==_;;;;;;-;;=544455555555559999945333599", "5555)_;;;;;71}111}}}_---------;;;---))))))_;-----;_;;;;;;;;;)25444445555555445555555533555", "5555);-;;;;)++=}11117;---------;;;--))))))_;--;--;--;;;;;;;)344445555555555555555555533555", "55553+;;;;;_))+=}111};-------:--;;;;_)))))_;---;--;--;;;;_=3444444544555555555555555555555", "555553_;---;;_))+7=);------------;;;;;;;_)_;------;;;)+13544444444444555555555555555555555", "3555531);;;;;--;;;----------------;;;-_;_)_;----;-;255444444444444444555555555555555555555" ], [ "8888999888888888#$$88999999444954444944549988888888$888999999999455555554998888888&&&$8999", "9999999888888888889999988999999955554999444498888$88999999944555499555545554498888#&&&Y", "9999988#$#$$899999999988$994552771}}1}}11254998$8$8899998888894554955559995555499988$###89", "99999$#00#8999988899998889453})))_____))))=599998999998$$$8888944555555999944554449988##08", "889998899999998$$$8899989517=)_****_*;*___)399999998888888888899995555598894449999449980&#", "889999998999988$8$889995=)))___________)+++}9899498888888888888994555554945499999994499988", "8899989988$8999888999889=____)++7}112113331}4949999888988888888999555555599454999994499994", "88998$899988988999980#881)__)+7}}}11233333315498899499998888888999555555988994494555998949", "99998$$899999$$##8980#$81)__)+7}7}}}}12221124988888944544988888455455554888889449945494449", "9999988889999$##b#$882))))777=7}}77}11}129988888899445599945549945554988884988899444998", "999999999999998$$0898#$83}=++7}7}}11177}23339998889898999554994555445555988899888889449999", "89988889998899988$$98$8841}}77777}11}==71235999888888899944988899555555598889988$899944444", "8888888999889999888999989531777777}}}}1122354998889894444449988899455555999949888999889499", "8888889499899994999988994445}===77}}77}111355499989955499994449898945555455454989998889499", "88888944444455545449888894451======7}}1113455555455554998889444999455555599994444999888444", "98899945549995555549998944551====++++7}}7==71955555999988888945545555555999989444999944554", "44455549999995555554999937)+1==++++=7}11===717}1254999998888995555555555499994444499889455", "4455499898999549453553}+_;;*117=====7}1}++=7}_;;;_)+}3498888895549455555499995549449888999", "994549999999559952}+_;;;;;;;)53}=7}}}}}7=++=7_;;;;;;;;_)=294555349955555499955549955988888", "995554999994531=)_;;;;;;;;;;;7552}}11}=71777);;;;;;;;;;;**+555359945533359955559994598888$", "995533599517)_;;;;;;;;;;;;;;;+2544531}15421=_;;;;;;;;;;;;;_1455555553333595555549995498888", "955353551);;;;;;;;;;;;;;;;;;;*155311111}}33=_;;;;;;;;;;;;;*=5555354453335535955559894988$9", "33549453);;;;;;;;;;;;;;;;;;;;;;_+=7}}}}}}55+*;;;;;;;;;;;;;;)449455545533333555455554548999", "55999941_;;;;;;;;;;;;;;;;;;;;;;;)7}}}}}==71);;;;;;;;;;;;;;;)499995555533333349999455449998", "4444445);;;;;;;--;;;;;;;;;;;;;;;;+}}}}7++++;;;;;;;;;;;;;;;;_59999945553333499999889949998$", "4444445_;;;-------;;;;;;;;;;;;;;;_7}}7+++++;;;;;;;;;;;;;;;;*144999945533354499998989999988", "9999941_;;---------;;-;;;;;;;;;;;;+77=++)++;;;;;;;;;;;;-;;;;=4499445553335549998888999988$", "999945+;;--------------;;;;;;;;;;;_7+++)))+)))__;;;;;;--;;;;+4494555555333335998899999998#", "494443_;;---------------;;;;;;;;;;;)+)))++==7}}}}=_;;--;;;;;)54455555555554535494499949988", "99444};;;----------------;;;;;;;;;-_))))_)++7}}}}}+;---;;;;;_54444445555354945544988999988", "44445);;;-----------------;;;;;;;--;)))__)++7}}}}}+;----;;;;*24444945555554499459988944988", "44445_;;;-------------------;;;;;;-;)))__)+)+7}}}}+;;;;;;;;;;_}544445555554445555998944999", "99441_;;;;-------------------;;;;;--))));))---_+=7_;;;;;;;;;;;)545444555554555494449944988", "9944}*;--------------------:--;;;;;;_))_;)_----;__;;;;;;;;;;_}5445554555555554999944555999", "9995+*;;------)1}+_;-----------;;;;;)))_*));---;;--;_;;;;;;)344444555555555549999945555599", "555}_;;;;;;-;)}}}}7});----------;;;;))))_));;---;--;;;;;;*+3444444445555555444555455533544", "5552);;;;;-;}1}111}}})-----------;;;))))_));;;----;;;_+}2544444444445555555445555555555555", "55555);;;--;_++=}11117;-----------;;;;;;;)_;;;;---)135444444444444444555555555555555555555", "55555}_;;--;;_)+=}11})-------------;;*;_;)_;;;;;;;_244444444444444444555555555555555555555", "5555532}+*;;;;;_)+7+*--------------;)))+_));-;;;;;;+54444444444444444455555545555555555555" ], [ "8888999888888888$8$88999994444455454445559988888888888899499999945555555499898888800088999", "9999999888888888889999988944533}=}1}2111235498888888999949944555499555545554498888$00&0$89", "9999998$$$8889999999998889521}+)_______)))=54988888899999888894554955559995555499988$#$#89", "99999$$##$899998889999889527+)_;**___*;___)3449989999998888888945555555999945555449988###8", "889998899999998$88889993=)))____________)+}99999999888888888889999555559989544999944498#&#", "899999999999988$8889994+______))+=}}122133248899498888888888888994555554945499999944499988", "899999998888999888999891_____)+7}}11233333359944449888988888888999555555599554999994499994", "88998889998898899998#882)____)+77}11112333125499999449998888888994555555998945494555998949", "999988889999988$$898#882)___)+=7777}}}7}21124988888945554988889455455554888889449945494549", "99999988899998$$0$98$8837++))+77}}}111}}}2239988888899455599945559945554988884988899454998", "9999994444999988$#898$883}77777777}111}==1239998889998999554494555445555988899888889449999", "99988889999999988$89888893}}7777777}111}12259998888898999449888995555555998899888899944444", "88888889498999998889999894517===777}1}}}}1254999889894444449998999455555999949888999889499", "88888944498999449949999444557======7}}1112555499999955549994449999945555455554989998889499", "8888894454455555554998884533}=====+++=7}}3555555455355998889454999455555599994444999888454", "9999945554949555554999993=+17=======71117===}113335499998888955555555555499989444499445554", "5555555999999555535543}+*;;=17=====7}}11====}+**_)+715498889995555353355499994554499889555", "4555599999994559531=);;;;;;_13}==777}1}==++=})*;;;;;;*_+1988995349453555499995549459888999", "9945499999945317)_;;;;;;;;;;)352}7}11}=}==+=7)*;;;;;;;*__795553349955555599955549955988888", "99555599943}+_;;;;;;;;;;;;;;*}354521}7152}7=+*;;;;;;;;;;;_23533349453333599555599945988888", "995333547_*;;;;;;;;;;;;;;;;;;+3554531321}12}_;;;;;;;;;;;;*74453355553333595355549995498888", "4533533}_;;;;;;;;;;;;;;;;;;;;;)7}}77}}}=+231_;;;;;;;;;;;;;=4555335445333553595535999598889", "3354445);;;;;;;;;;;;;;;;;;;;;;;_=77}}}7+=351_;;;;;;;;;;;;;+5544455545333333555455554548999", "5599447;;;;;;;;--;;;;;;;;;;;;;;;)7}}}}=++=}+*;;;;;;;;;;;;;+5449995555333333349999455549998", "545553);;---------;--;;;;;;;;;;;;+7}}=+++)+*;;;;;;;;;;;;;;_349999945553333499999889949998$", "54445=_;;-------------;;;;;;;;;;;_777+++))+_;;;;;;;;;;-;;;;}444944455533354449998989999988", "49443_;;;--------------;;;;;;;;;;;+7+++)))+==+))_*;;;--;;;;744499445553333549998888999988$", "44447;;;----------------;;;;;;;;;;)+++))_)+++7}}}}7);-;;;;;)54444555553333335998899999998$", "4445);;;------------------;;;;;;;;;))+)_;_+)+7}}}}}+;;;;;;;_244555555533355535494449944988", "4441;;;;-------------------;;;;;;;;))));-_+)+7}}}}});;-;;;;;+35544445553354945544998999988", "545+;;;;--------------------;;;;;;-_))_;-_+*_)+7}}7_;;;;;;;;;*3444445555554499459998944988", "445);;;----------------------;;;;;;_))*--_)----_+=+;;;;;;;;;_75444445555554455555998944499", "445+;;---------------------::--;;;;___;--_)----;;;--;;;;;;;)344555445555555535494449944988", "442_;;-----------------------:--;;;_);;;;_)----;;--;_;;;;;)3444445555555555334999945555999", "45)*;;------------;)+)_----------;;___*;;_);----;--;;;*)+}54444444555555555549999945333599", "55+;---;--------*)++=7=;----------;____;;_);------_)=1555544444444455555555545555555533555", "555};-;--------_+==}}}}+;----------;;-;;-_);;;---;1544455544445555555555555555555555533555", "5555);;--------;_)++=}}=;-----------;-;;;_);;;;;;;)544444444444455555555555555555555555555", "555551+_;-------;_))+7}+*----------_)__;;));;;;;;;;754444444444444445555555555555555555555", "55555551_;--------;_)))*-----------+==+)_));;;;;;;;;15444444444444445555555555555555555555" ], [ "8888999988888888$888999999455332}7}1131135998888888888899499999945555555499898888800088999", "9999999888888888889999988953}}=+_*_*___)))+398888888999949944555599555545554498888$00&0$89", "9999998$$$888999999999889517)__;;*_____;__)}49888888999998888945549555599455554999888#$#89", "999998$##$899998889999847+____**_________)}4949989999998888888945555555999945555449988###8", "88999889999999888888944=__**___))+=7}11112398999999888888888889999555559889544999944498#&#", "89999999999998888889995=______)=7}11233533348899498888888888888994555554945499999994499998", "899999998888999988999847_**___)==7}1122333339944449888988888888999555555599554999994499994", "88998889998898899998$84+__*__)+=777}}}}}12}15499999449998888888994555555998945494555998949", "999988889999988$$898$84+)++)))+77}}11111}1139988888945554988889455455554888889449945494449", "99999988899998$8#$99888417777=7777}}122177}29998888899455599945559945554988884988899454998", "44499944444499888$89888841777===777}}12111139998889998999554444555445555988894888889449999", "9998888999999498888998889517====7777}1}}}1159998889898999449888995555555999849888899944444", "8888888949899949888999999451========7}1112354999999994444449998999455555999949888999889499", "8888894449899944994999945531======+++=7}13535499999955549994449999945555455554989998889499", "8888894554555555554999957+17=======77}1212335355453355998889454999455555599994444999888454", "9999945554944553355951=_;;+177==777}}1121===7=))+=}349998888955555555555499989444499444554", "555555549994933531=)*;;;;;*13}7=77}}}}73}===77_;;;;*_)759899995555353355499994554499889555", "455559999994517)_;;;;;;;;;;)352}7}11}=}57+++7=_;;;;;**__3988995349453555499995549459888999", "9945499943}+_;;;;;;;;;;;;;;;}354322}71547=+=7+**;;;;;;**+995553349955555599955549955988888", "99533557_*;;;;;;;;;;;;;;;;;;+35444312322}+=7+_;;;;;;;;;;_253533349453333599555599945988888", "995333}_;;;;;;;;;;;;;;;;;;;;;)}11}7}1}7++=11)*;;;;;;;;;;;}55453355553333595355549995498888", "453353);;;;;;;;;;;-;;;;;;;;;;;_=7}7}}}=++}33)*;;;;;;;;;;;}44555335445333553595535999598889", "33545+;;;;;;;;------;;;;;;;;;;;)7}}}77+++}53)*;;;;;;;;;;;}55554455545333333555455554548999", "55441_;;;------------;;;;;;;;;;;=77}7+++))+7_;;;;;;;;;;;;=55449995555333333349999455549998", "5555);;;--------------;;;;;;;;;;)777=+++)_+);;;;;;;;;;;;;)5499999945553333499999889949998$", "545}*;;;---------------;;;;;;;;;*=77+++)_*+);;**;;;;;-;;;_34499944455533354449998989999988", "495);;;------------------;;;;;;;;+7++++)*;+)_)=}}77=+)_;;*1499999445553333549998888999988$", "441*;;;-------------------;;;;;;;_++++)_;;)__))+=7}}117);;)544994555553333335998899999998$", "45+;;;;--------------------;;;;;;;))++);-;))_)++=7}}}1}+;;;_254555555533355535494449944988", "45_;;;----------------------;;;;;;_)));--;)_;_)++7}}}}7);;;;)55544445553354945544998999988", "45);;---------------------:--;;;;;;_)_;--;);-----;_+==);;;;)255544445553554499459988944988", "45+;--------------------------;;;;;__;---;);------;__*;;;;_2555554445555354455555998944499", "57;;--------------------;;;;--;;;;;__;---;);----;;----;;;_25555555445555355535494449944988", "2;;;-----------------;_))));---;;;;*;;;;;*);-----;---;;_+235444455555555555334999945555999", "5=;;----------------;)++==++);--;;;_;;;;;_);---:-*_)=}333555444445555555555544999945333599", "55}*----------------_)++==+7+;--;;;;---;;_+;----;+5445555544444444455555555544555555533554", "5557;;--------------;)))++=7+;---;;----;;_+;;;;;;;}544455544555555555555555555555555533555", "55553}+_;------------__)))+7)-----;;;;-;;_);;;;;;;)344455544455555545555555555555555555555", "5555555});--------;----;;;;-------_)));;;_+;;;;;;;;)54444444444444555555555555555555555555", "5555553);;------;;;---------------_+))*;;_);;;;;;;;*14444444444444444555555555555555555555" ], [ "8888999888888888$8$8899999532}}++)____)_)+739888888888899999999945555555499888888800088999", "9999999888888888889999999421+)____________)+48888888999999944555499555545554498888$00&0$89", "9999988$$$$$8999999999891=)_______________)}49888888999998888945549555599955554999888#$#89", "99999$$##$89999888999991)______)))++=7777714999989999988888888944555555999944555449988###8", "889998899999998$8888945+______))=}11233555358999999888888888889999555559889444999944998#&#", "88999999999998888889992)_*____)+77}1123333359899498888888888888994555554945499999994499988", "89999899888899998899991)______)+7777}}}}}2114944449888988888888999555555599454999994499994", "88998889998898999998$81)_))))))=7}}1111111125499999449998888888994555555988994494555998949", "999988889999988$$898$89}=7777==777}112321}129988888944554988888455455554888889449994499449", "99999988899998$8#$998889}=7777=7777}}12211}29988888899455599945549945554988884988899444998", "94499944444999888$8988889}===7==777}}11}11159998889998999554494555445555988899888889449999", "99988889999999988889988895277======7}}111239999888888899944988899555555598889988$899944444", "888888894989994988899999452777========}}12554999989994444449988899455555999949888999889499", "88888944498999444949995}717====777===71233555499999955599994449999945555455454989998889499", "889999455455555555552=_;*}}=7777}7}}1125=7}12212555355998889454999455555599994444999888454", "999994555494453317)_;;;;;)32}77}}}}}1}341===7=___)+729998888955555555555499989444999944554", "55555554994517)_;;;;;;;;;;+55177}1}}=}542===7}_*;;;*__799899995555553555499994444499889455", "555554943}+_;;;;;;;;;;;;;;_1545112}7}5441++=7}__;;*____29888895549453555499995549459888999", "995553+_*;;;;;;;;;;;;;;;;;;}3544431254447===}=__;;;*_*_)4994553349955555499955549955988888", "99533+_;;;;;;;;;;;;;;;;;;;;;7232}}11}7++))=7+_*;*;;;;;;_345553354945535559955559994598888$", "9453}_;;;;;;;;;;;---;;;;;;;;;)7}}}}}}7+)_)12=_;;;;;;;;;_2555453355553333595555549994498888", "4532_;;;;;;---------;;;;;;;;;*=}}}}7}=+)_+33=_;;;;;;;;;_24995553354453335535955359895988$9", "3357;;;;;------------;;;;;;;;;_7}777=+))_+53=_;;;;;;;;;_3455544455545533333555455544548999", "552);;;---------------;;;;;;;;;+7777+)));_+7);;;;;;;;;;_3555499995555333333349999455449998", "45+;;;;---------------;;;;;;;;;_777+)))_;;));;;;;;;;;;;;}44999999945553335499999889949998$", "52_;;;;;---------------;;;;;;;;;=77++));;;+);;;;;;;;;;;;+444999999945533354499998889999988", "4+;;;;;-----------------;;;;;;;;)=+)))_;;;+);;;;;;;;)))_)34499999445553333549998888999988$", "3_;;;;-------------------;;;;;;;_)))));;;;+);;;;;;;;)+7}}12549994555555333335998899999988$", "1_;;;;--------------------;;;;;;;))))_;;;;+);;;;;*)+=}}11112544555555553354535499449949988", "2);;----------------------;;;;;;;_)))_---;)_;;;--;_+=}}}1113455544945553354945544988999988", "3);------------------------;__)))))));---;)*-------;_+7}}}15455444945555554499459988944988", ");-----------------------;_)++))))))_;---;);---------;;_))+5555544445555554445555998944499", ";;;---------------------_)++++=77=+)*;---;+;---:---;;----;=5554555445555554555494449944988", ");;--------------------;)+++++=7}=)_;;;;-;);-;-------;;_+155444445555555555554999945555999", "5+;;--------------------_))++++=7)*;;-;;;_+;;;--_11111353555444444555555555549999945553599", "557_;;------------------;;))))+=+;;---;;;_+;----;14445555544444444445555555444445555533544", "55553}+);-----------------;;;;;;;;;---;;;_+;;;;;;)5444455444444445544555555445555555553555", "5555555}__;-------;__;----------;;;_*-;;;_+;;;;;;;=544444444444444444555555555555555555555", "5555555+__;----------------------;_)_;;;;_+;;;;;;;_244444444444444444555555555555555555555", "5555551);;;----------------------;;)_;;;;_+;;;;;;;;+54444444444444444555555555555555555555" ], [ "8888999888888888$888999994521))____**__)_))=4888888888999999999945555555499888888800&88999", "99999998888888888899999953}+))_;;;*_____*;_)39888888999949944555599555545554498888$&0&&$89", "9999988$$#$8899999999995}_***_______))))__)159888888999998888945549555599955554999888###89", "99999$$##$8999988899995+________)=7}11233125499989999998888888945555555999944555449988###8", "88999889999999888888943)_*____))=}}1223353359999999888888888889999555559889444999944998#&#", "89999999999998888889941)*;;___))=}}}111123339899498888888888888994555554945499999994499988", "89999999888899998899997__*____)+7}7}}}}}111}4944449888988888888999555555599454999994499994", "88998889998898999998$83))=}7=++=7}}1123321135499999449998888888994555555998994494555998949", "999988889999988$$898$891)=}}7777777}}1231}}14988888945554988889455455554888889449994494449", "99999988899998$8#8998888})=7}7==777}}11222259988888899455599945549945554988884988899444998", "44449444444449888$898888917777===777}11111149998889998999554994555445555988899888889949999", "99988889499944988889988895}777======7}112259999888889899949988899555555598884988$899944444", "8888889949899949888949513}77=7777===+7}113554999989994444449988899455555999949888999889499", "888899454999995544543=__}7===77777}}}15112355499999955599994449999945555455454989998889499", "889999555555555317+)*;;;)31777}1}}}11247+=}}11}1555335998889454999455555599994444999888454", "9999945555452}+_*;;;;;;;;753}7}1}}117343+===77_*_)+729998888955555555555499989444999944554", "5555333317)_;;;;;;;;;;;;;_1542}111}+1444}===7}__***__)599889995555553555499994544499889455", "55533=)_*;;;;;;;;;;;;;;;;_1344432}}3444}=+++=}__***___=99888895549455355499995549459888999", "9953+_;;;;;;;;;;;;;;;;;;;;)1551}}11}}1}_+=+=}=_*****;*_39994553349955555499955549955988888", "9457_;;;;;;;;;;;;;;;;;;;;;;;)7}}777=7+_*__=7+_*;**;;;;*}995553354945535559955559994598888$", "943_;;;;;;;;;;----;;;;;;;;;;_+}}}}}77+_;*)117_;;;;;;;;*}5555453355553333595555549995498888", "45};;;;;;----------;;;;;;;;;;)7}}}77=+_;;+337_;;;;;;;;;}54995553354453335535955359895988$9", "32+;;;;;------------;;;;;;;;;;+}}}77=)_;*+337_;;;;;;;;;}4555549455545533333555455554548999", "5+_;;;---------------;;;;;;;;;_=777=+)*;;_+=);;;;;;;;;;}5555499995555333333349999455449998", "2_;;;;----------------;;;;;;;;;)77=+));;;;));;;;;;;;;;;1544999999945553335499999889949998$", ");;;;;-----------------;;;;;;;;;+7+)));;;;+);;;;;;;;;;;+5444999999945533354499998889999988", "*;;;;;-------------------;;;;;;;_=+))_;;;;+);;;;;;;-;;;;154499999445553333549998888999988$", ";;;;;---------------------;;;;;;;))))_;;;;));;;;;;-;;;;;_25544944555553333335998899999998$", ";;--------------------------;;;*_))++*;;;;)_;;;;;------;;121355555555533354535494449944988", "_;--------------------------_)+++++++++_;*+_;;;;--------;))+==++=}235555554945544988999988", ";-------------------------;)+++====777+*;*+_;;;---------;_))))))+}255555554449459988944988", ";;------------------------_++++=7==777_;;;);;-----------;*)))++=}2555555554445555998944499", ";;------------------------;))++====77);;;*);--------------;_)+=}25544555554555594449944988", "*;------------------------;_)))++++=)-;;;*);-;_;=)----------;;)154445555555554999955555499", "3);;--------------------------;;;;;;---;;;+;-__-_3}==+)____))72544455555555549999945553599", "55317+));;;---------;_;_--------;;;----;;*+;----;14444555444444444445555555444445455533544", "55555555=_);--------------------;;;----;;_+;----;+5444445444444444444555555445555555555555", "55555555++_;------------------:-;;;__;-;;_);;--;;;1444444444444444444555555555555555555555", "55555553+);;---------------------;;__;-;;_);;;;;;;+544444444444444444455555545555555555555", "55555552+*;;---------------------;;_)*-;;_);;;;;;;_344444444444444444455555444545555555555" ], [ "8888999888888888$88899999531})__;*****_)__)+5888888888999499999955555555499888888800&88999", "999999988888888888999999317))__*;;**____;;_)29888888999949944555599555545554498888$&0&&$89", "9999988$$#$88999999999937_;***_____))))))_)159888888999998888945549555599955554999888###89", "99999$$##$8999988899493+__*_____)=7111233225449989999998888888945555555999944555449988###8", "88999889999999888888941)*;*___))+}}1123333359999999888888888889999555559889444999944998#&#", "89999999999998888889457_;;;*__))+}}}111112339899498888888888888994555554945499999994449998", "8999999988889999889999+___)___)+7}}}}}}}11119944449888988888888999555555599454999994499994", "88998889998998999998881))=}7=++=7}}1123321135499999449998888888994555555998994494555998949", "999988889999988$$898$89})+}}}7==777}}1231}}15988888945554988889455455554888889449994494449", "99999988899998$8#89988897)=7}7===77}}11222359988888899455599945549945554988884988899444998", "44449444444449888$898888917777=====7}11111299998889998999554994555445555988899888889949999", "999888894999449888899894517777======7}112259999888888899949988899555555599889988$899944444", "8888889449899949989452+1}777=77777===}1113554999989994444449988999455555999949888999889499", "8888994549999955453})*;)2}7777}}}}}}133355555499999955599994449999945555455454989998889499", "889999555555531=)_;;;;;;751777}1}}11153)+}113213453335998889454999455555599994444999888454", "9999455332}=)_;;;;;;;;;;*143}7}1}}17149+++==7=__)+}349998888955555555555499989444999944554", "555531}+)*;;;;;;;;;;;;;;;}3442111}+75442=++=77_**;**)2499888995555553555499994554499889455", "5531);;;;;;;;;;;;;;;;;;;;+5444451}34441)++++7=_*****_)599888895549455355499995549459888999", "993);;;;;;;;;;;;;;;;;;;;;;)+}}77}}77}}__+++=}+*;;;;;;*799994553349955555499955549955988888", "94=*;;;;;;;;;;-;;;;;;;;;;;;;)=}}}}777)**_)=7)_;;;;;;;;)4995553354945535559955559994598888$", "43_;;;;;;;------;;;;;;;;;;;;*++7}}}7=);;*)11+*;;;;;;;;)55555453355553333595555549994498888", "5}*;;;;----------;;;;;;;;;;;;_=+=7}}7);;;=23+;;;;;;;;;_354995553354453335535955359895988$9", "7);;;-;;-----------;;;;;;;;;;;)=====7);;;733+;;;;;;;;;*24455549455545533333555455544548999", ");;;;---------------;;;;;;;;;;*++===+_;;;_+=_;;;;;;;;;;15555499995555333333349999455449998", ";;;;;;----------------;;;;;;;;;_+++++_;;;*+);;;;;;;;;;;1544999999945553335499999889949998$", ";;;;;;;------------------;;;;;;;)+)));;;;_+);;;;;;;;;;;}5444999999945533354499998889999988", ";;-----;;---------------------;;;))))_;;;*+);;;;;;;;;;;)354499999445553333549998888999988$", ";---------------------------;;;;_++==++))_+_;;;;;;;;;;;;=55544444555555533335998899999998$", ";;-------------------------;*))+=}77==7=)_+_;;;;;;;;;;;;)555544555555555354535494449944988", "---------------------------_)+++=}}}}}}+;_+_;;;;;;----;;_244555555445555554945554988999988", "---------------------------*)++++}}77}+;;_+_;;;;;---------;;)=11}}133555554449459988944988", "---------------------------;)))++777==_;;_);;;;;;------------;_)++====7}123555555498944499", "---------------------------;_______;;-;;;_);;;;;--------::---;_))++++++=}35335545549944989", ";;----------------------;--------------;;_);;;;;------::-----;_))++++++71}}}15999955555499", "1=)_;;;;--------------_;;--------;;----;;_);-;))-))*-----------;_)))+=1}=25535499955533599", "554555532));---------------------;;-:--;;_);-----+5451}=+);;;-----;)7154535444554455533545", "555555552));---------------------;;--;-;;_);-----_5544444444555322355444554455555555555555", "555555551+);----------------------;;__-;;_);-----;1444444444444444444445554445555555555555", "555555551=_;-----------------------;__;-;_);------)544444444444444444455555445555555555555", "555555331+;;-----------------------;)_;-;_);-----;_344444444444444444455555444445555555555" ], [ "8888999888888888$888999995321+__*__**__)_)+}9888888888994499999945555555499888888800&88999", "99999998888888888899999932}+)__*;;**____*;_)59888888999949944555599555545554498888$&0&&$89", "9999988$$$$8899999999995})****____________)}59888888999998888945549555599955554999888###89", "99999$$##$8999988899492)________)+7}}1121}14999989999998888888944555555999945555449988###8", "8899988999999988888895}_*;*___))+}}1123333359999999888888888888999555559889444999944998#&#", "8999999999999888888945+_;;;___))=}}}112233359899498888888888888994555554945499999994449998", "8999999988889999889993)_**____)+7}}}}}}}}1119944449888988888888899555555599454999994499994", "8899888999899899999889+_)=}=+)+=7}}1122221155499999449998888888994555555988994494555998949", "999988889999988$$898$85+)=}}77==777}11231}}14988888945554988888455455554988889449994494449", "99999988899998$8#8998885)+=}}7===77}}12222159988888899455599945549945554988884988899444998", "44449444444449888$8988883}77777==77}}11111399998889998999554994555445555988899888889949999", "9998888949994498888998995}77777====7}}122299999888888899949988899555555598889988$899944444", "8888889949899449989452}3}77777777==+=}}123554999989894444449988899455555999949888999889499", "8888994549999955453})__1}7777}}}}}}}154995555499999955499994449999945555455454989998889499", "889999555555321=)_*;;;;)33}77}1}}}1115=+13535555455335998889454999455555599994444999888454", "9999455331}+)_;;;;;;;;;;+5517}11}11=143)+===7=+}135499998888955555555555499989444999944554", "55531}=)_;;;;;;;;;;;;;;;)25431111}+}544+=+==}+_**_)739998888995555553555499994554499889455", "553+_;;;;;;;;;;;;;;;;;;;_2544452}}24441++++=7+_**;**_1499888895549455355499995549459888999", "94+_;;;;;;;;;;;;;;;;;;;;;_+}}77}111251_)+++=})*;;;***)599994555349955555499955549955988888", "91_;;;;;;;;;;;;;;;;;;;;;;;;_=}}}=++=}_*__)=7)*;;;;;;;;74995553354945533559955559999598888$", "4);;;;;;;;--;;-;;;;;;;;;;;;;)=71}}7==_;**=11);;;;;;;;;+55555453355553333595555549994498888", "2);;;;;------;--;;;;;;;;;;;;*+=7}}}7+*;;*}23);;;;;;;;;)554995553354453335535955359895988$9", ")_;;--;;---------;;;;;;;;;;;;_===777+;;;_153);;;;;;;;;_34455554455545533333555455554548999", ";;;;;-------------;;;;;;;;;;;;)====7+;;;;)==_;;;;;;;;;;15555499995555533333349999455449998", ";;;;;;--------------;;;;;;;;;;;+++=7);;;;_+_;;;;;;;;;;;7544999999945553335499999889949998$", ";;;;;;;;-------------------;;;;_+++=);;;;_+_;;;;;;;;;;;+5444999999945533354499998889999988", ";-------;---------------------;;)++=7+)_;_+_;;;;;;;;;;;_354499999445555333549998888999998$", ";---------------------------;;_)=}}7===+__+_;;;;;;;;;;;;}55544944555555533335998899999998$", ";--------------------------;)+++=}}}}}=;;_+_;;;;;;;;;;;;)455554555455555354535494449944988", "---------------------------;)+++=}}}}});;_+;;;;;;;;-;;;;)494555544445555554945554988944988", "---------;;-----;----------;)++++7}=7+;;;_+;;;;;;;----;;;}54445444444555554449559988944988", "---------------------------;))))))_;;;;;;_);;;;;;;-----;;;;)+71544453235554445555498944499", "--------------------------------------;;;_);;;;;;--------------;)=7++713335553545549944989", ";---------------------;;;;------;;--;-;;;_);;;;;;---------------;_)+++++===7}1113555555499", "7+)__**;;;----------------------;------;;_);;;)+_---------------;_))++++++=7}1354545333599", "544445555));----------------------------;_);;;;;--_+);-----------;))+++===77121}}135533545", "555555555));----------------------------;_);------)5445317+)_;-----;;*)}7=1317}55535555555", "555555553)+;;;;-----------------:---_)_;;_);;-----)54444444445531}=+))}5453444554455555555", "555555553));;--------------------:--_));-_);;;----;344444444444444444445554444445555555555", "555555331+_;---------------------::-_))_;));;;----;244444444444444444445444444444445555555" ], [ "8888999888888888$888999994532=))___*_____)=29888888888899499999945555555499888888800&88999", "999999988888888888999999431=)__;;;**_____*_)39888888999949944555499555545554498888$&0&&$89", "9999998$$#$88999999999951)_**_____________)=59888888999998888945549555599955554999888###89", "99999$$##$8999988899493+__**____)++=77}}}=}4999989999998888888944555555999945555449988###8", "88999889999999888888951)_**____)+}}1223333359999999888888888889999555559889444999944498#&#", "8899999999999888888945=_;;;___))=}}}123333358899498888888888888994555554945499999994449988", "8999999988889999889995)_*;;*__)+7}77}}}}}1119944449888988888888899555555599454999994499994", "8899888999889899999889+_)+=+)))=}}}1111121155498899499998888888994555555988994999555998949", "999988889999988$$898$83))7}777==77}}113311134988888945554988888455455554888889449944494449", "99999988899998$8#8998881)+7}}7===77}}12211139988888899455599945549945554988884988899444998", "44449444444449888$898888277=7777==7}}11111399998889998999554994555445555988899888889949999", "9998888949994498888998884}77777====7}1122249999888888899944988899555555598889988$899944444", "888888994989944998944525177777777====7}113554999989894444449988899455555999949888999889499", "888889454999995544537))177777}}}}}}7}54995555499999955499994449998945555455454989998889499", "8899995555555331=+);;;;=3}777}1}}111151133535555455355998889454999455555599994444999888454", "99994553531}+)_;;;;;;;;*152}7}1}}11}}53)+===}123355499998888955545555555499989444999944554", "5555321=)_;;;;;;;;;;;;;;=345}}111}=+344=++==})__)71599998888995555553555499994554499889455", "5537)*;;;;;;;;;;;;;;;;;;+3544532}7}34457+++=})_*;;;_+3499888895549455355499995549459888999", "94=_;;;;;;;;;;;;;;;;;;;;;=}1}}11134442))+++=})**;;;;_)599994553349955555499955549955988888", "91_;;;;;;;;;;;;;;;;;;;;;;;;+}}==7==}1)___+==);;;;;;;;*}4995555354945533559955559994598888$", "4+;;;;;;;-------;;;;;;;;;;;_+7}777777_**_711_;;;;;;;;;)55555453355553333595555549995498888", "5);;;;;----------;;;;;;;;;;;)7777777=*;;_122_;;;;;;;;;_554995553354453335535955559895988$9", "=_;;-;;;----------;;;;;;;;;;;+7=7777+;;;_252_;;;;;;;;;*14455554455545533333555455554548999", ";;;;;--------------;;;;;;;;;;_====77+;;;;)=+;;;;;;;;;;;75555499995555333333349999455449998", ";;;;;;--------------;;;;;;;;;;)7++==);;;;_+;;;;;;;;;;;;+544999999945553335499999889949998$", ";;;;;;;;-----------------;;;;;;+=)+=);;;;)+*;;;;;;;;;;;)5444999999945533354499998889999988", ";------;;---------------------;;++++=)_;;_+;;;;;;;;;;;;*254499499445553333549998888999998$", "----------------------------;;_)=}}7777);_+;;;;;;;;;;;;;=55544994555555333335998899999998$", ";;;------------------------_))++7}}}}}=;;)+;;;;;;;;;;;;;_555554555555553354535494449944988", "---------------------------_)+++=}}}}}_;;)+;;;;;;;;;;;;;;244555544445555554945554988944988", "---------;;-----;----------*)++++}}=7+;;;)+;;;;;;;;---;;;149455544445555554499559988944988", "---------------------------;)))))))_*;;;;));;;;;;;-----;;)15554444444555554445555498944499", "-----------------------------------;--;;;));;;;;;;------;;;;_)=154445311554455545549944989", ";---------------------_;;;------;--;;--;;));;;;;;---------------;)77+)+}222335499955555499", "_;;;----------------------------;--;;--;;_);;;;;;----------------;))++===+===}}}}125333599", "5553332217_---------------------;-------;));;;_);;---------------;))++++=++=7}}12535533545", "5555555551);-----------------------;;---;));;;;;---7}=);---------;*))+++===7}7}111}1555555", "555555553});;;;;-------------------;++)_;));;-----;1544451}+)*;-----;;_+1}}=1531}555555555", "5555555537+;;----;-----------------;==))_));-------=5444444444531}=+)_)2444334445455555555", "555555333}_;-----;;-------------::-;=7+))));;------_54444444444444444445554444444455555555" ], [ "8888999888888888$888999994533}7+))____)))+}59888888888899499999945555555499888888800&88999", "9999999888888888889999999511=)_*;**____)__))58888888999949944555599555545554498888$00&Y", "9999998#$$$88999999999891+)_*___;**_____*__+59888888999998888945549555599955554999888###89", "99999$$##$8999988899494})_______)))+++==++74949989999998888888944555555999945555444988###8", "88999889999999888888943)_______)+}}1223353348999999888888888888999555559889444999944498#&#", "8899999999999888888945}_;;*___)+=}}1123333358899498888888888888894555554945499999994449988", "8999999988889999889994+_*;;___)+7}}}}}}}}2219944499888988888888899555555599454999994499994", "8899888999889899999889+__))))))=7}}1111111135498899449998888888994555555988944494555998949", "999988889999988$$898$83++}}77==777}112331}134988888945554988888455455554888889449944494449", "99999988899998$8#8998882)=}}}7=7777}}1231}}39988888899455599945549945554988884988899444998", "44449444444449888$89888817=777=7777}}11111399998889998999554994555445555988899888889949999", "99988889499944988889988891777777==77}1111159999888888899944988899555555598889988$899944444", "8888889949899949988944553}7777777===77}123554999989894444449988899455555999949888999889499", "8888894549899955445437)2}7777777777=725545555499999955499994449998945555455454989998889499", "88999955555555331}+);;;+3}777}}}}}11133233535555455355998889454999455555599994444999888454", "99999555555317)_;;;;;;;_15177}1}}}11}55)====}333335499988888955545555555499989444999944554", "555533317+__;;;;;;;;;;;;+343}}11}1}+1447=+==})__+73499998888994555553555499994554499889455", "5532+)_;;;;;;;;;;;;;;;;;=354522217=1444}+++=})_*;;*_+2499888895549455355499995549459888999", "992);;;;;;;;;;;;;;;;;;;;*1553332125445=+++=7}___*****_199994555349955555499955549955988888", "95)*;;;;;;;;;;;;;;;;;;;;;;*+=77}7==}1+___+==)*;;;;;;;*)4995553354945533559955559999598888$", "41*;;;;;;;;;;--;;;;;;;;;;;;_+=77}}777_**_711_;;;;;;;;;_25555453355553333595555549994498888", "5};;;;;;;---;---;;;;;;;;;;;;)+=77}}7=_;*_131_;;;;;;;;;*}54995553354453335535955559895988$9", "3+;;-;;;---------;;;;;;;;;;;_===77}7+*;;_251_;;;;;;;;;;+5455544455545533333555455544548999", "+_;;;-;;----------;;;;;;;;;;;)=++=77+;;;;)7+;;;;;;;;;;;)5555499995555533333349999455449998", ";;;;;;-------------;;;;;;;;;;;+=)+=7+;;;;)+*;;;;;;;;;;;_344999999945553335499999889944998$", ";;;;;;;--------------;;;;;;;;;*=+)+=);;;;)+*;;;;;;;;;;;_3444999999945533354499998889999988", ";;---;;;;---------------------;_+))));;;;)+;;;;;;;;;;;;;}54499499445555333549998888999988$", ";-;----;;---------------------;;)))+=_*;;_+;;;;;;;;;;;;;)55544994555555333335998899999998$", ";;;;------------------------;_)+7}77777);_+;;;;;;;;;;;;;;155554555555555354535494449944988", ";--------------------------_)++=}}7777=_;_+;;;;;;;;;;;;;;=44555544445555554945554988944988", "-;;-----------------------;)++++7}}7}7_;;)+;;;;;;;;---;;;=49455444444555554449559988944988", "--------;;----------------;)))++7}777);;;));;;;;;;-----;;)54555444444555554445555498944999", "--------------------------;_))))+=++);;;;));;;;;;;-----;;;;+715554445555554455545549944988", ";---------------------------;;;;;;-;;--;;_);;;;;;;------------;)7117++13355554999955555499", ";;-------------------;;;;-------;;-;;---;_);;-;;;---------------;))+=7=====}13499455333599", "21}7=++)));---------------------;;------;));;--;---------------;_))+++++++=7}1154455533555", "5555555555+;------------------------;---;));;;----)+_-----------;))+++===+=777154455555555", "5555555535+;;-----------------------++));));;;----)5551=);-------;;_))====}221544455555555", "5555555533+;;;;---------------------+=+))));;-----;354444551=);;-;;--)54431344444455555555", "5555553331_;;----;---------------:--+7=+)));;------)5444444444452}+)+344554444444455555555" ], [ "8888999888888888$8889999945531}}=)_))+++71599888888888899499999945555555499888888800&88999", "9999999888888888889999999521+)))_**;*_)__))}98888888999949944555599555545554498888$00&Y", "9999998#$$$889999999999417+))_*;;*____*;*_)749888888999998888945549555599955554999888###89", "99999$$##$8999988899499}_***_____)))))))))14949989999998888888944555555999945555444988###8", "88999889999999888888951_______))=}11233333598999999888888888888999555559889444999954498#&#", "88999999999998888889957_;*___))=7}11233333398899498888888888888894555554945499999994449988", "8999999988889999889994=_*;*__))=77}}111123239944449888988888888899555555599454999994499994", "8899888999889899999884)______)+7777}}}1}11}35499899449998888888994555555988945494555998949", "999988889999988$$898$81+=7==++=7}}11233211259988888945554988888455455554888889449944494449", "99999988899998$8#89988927777777777}}1231}}159988888899455599945549945554988884988899444998", "44444444444449888$898888}=777=7777}}112223399998889998999554994555445555988899888889949999", "9998888949994498888998889177777=777}111}1159999888888899944988899555555598889988$899944444", "8888889949899949988999945177777====7711223554999989894444449988899455555999949888999889499", "8888894549899955444992=2}777777777=+=12355555499999955599994449998945555455454989998889499", "88999955555553353317)_;+177777}7}}}1133333535555455555998889454999455555599994444999888454", "99999555554531}+__;;;;;_15}77}1}}}11}55)====}555355499988888955545555555499989444999944554", "555533532}=)_;;;;;;;;;;;)3527}11}}}=}447=+==1)_)+}3999998888994555553555499994554499889455", "553317+)*;;;;;;;;;;;;;;;)25451121}+}5441+++=})_**;*_+2499888895549455355499995549459888999", "995=_;;;;;;;;;;;;;;;;;;;_2544453}134441+++=7}___**;*__}99894555349955555499955549955988888", "94}_;;;;;;;;;;;;;;;;;;;;;_)7}777}}}131__)+==)*;;;;;;;*)5995553354945533359955559999598888$", "45);;;;;;;;;;-;;;;;;;;;;;;;_+}}}7====__*_71}_;;;;;;;;;*15555453355553333595555549994498888", "41*;;;;;;;--;--;;;;;;;;;;;;;)+=}}77==_;*_131_;;;;;;;;;;754995553354453335535955559895988$9", "57;;;;;---------;;;;;;;;;;;;*++=}}77+_;;_25}_;;;;;;;;;;)5455544455545533333555455554548999", "});;;-;;---------;;;;;;;;;;;;_=+=77=+*;;;)7+;;;;;;;;;;;)5555499995555533333349999455549998", "_;;;;-------------;;;;;;;;;;;;)+++==)*;;;)+;;;;;;;;;;;;)544999999945553335499999889944998$", ";;;;;;;-------------;;;;;;;;;;;+++++);;;;)+*;;;;;;;;;;;_3444999999945533354499998889999988", ";;;;;;;;;-------------;;;;;;;;;_+))));;;;)+;;;;;;;;;;;;;}54499499445555333549999888999988$", ";;;----;;--------------;;;;;--;;))))_;;;;_+;;;;;;;;;;;;;)55544994555555333335498899999998$", ";------;;----------------;;;;;-;;))));;;;)+;;;;;;;;;;;;;_355554555555555554535494449944988", ";-------------------------;;;;;_))++)_;;;_+;;;;;;;;;;;;;;744555544445555554945554988944988", "--------------------------;_)+=7777777+;;)+;;;;;;;;---;;;=49455444445555554499559988944988", "-;-;;------;-------------;)+++=}}77777_;;));;;;;;;-----;;754555444444555554445555998944999", "-------------------------;)+++=7}77}7_;;;));;;;;;-----;;-;)7155535444555554455544549944988", ";------------------------;))))+77777);-;;));;;;;;-----------;_+++=777}15555554999955555499", ";------------------------;__)))+++));---;));--;;------------;_))++++)+=1355544999955333599", "7)_;;;--------------;;;---------;;---:--;_);----------------;_))++++++=}254444555555533555", "555555332=_--------;_;;-----------------;_);;----+);---------;))+++++=}1544444555555555555", "5555555557);-------------------------*_*;_);-----)5527);-------;;_)==725444444555555555555", "555555555}+;-------------------------___;));-----;7555553}+_;-;;-;754444444444455555555555", "555555335=);----------------------::-;)__));------;}554444445317=1544445544444444455555555" ], [ "8888999888888888$88889999945333}++7}111135988888888888899999999945455555499888888800&$8899", "999999988888888888999999843}}=+)_;;____)++}498888888999999944555599555545554498888$00&Y", "9999988#$$$$8999999999895}=+__*;______;___+54988888899999888899554955559995555499988$###89", "99999$$##$8999988899994=________________)+3999998999998$$$888889455555599894555444998$###8", "88999889999999888888957______))+=77}111112488999999888888888888999555559889444999944998#&#", "889999999999988$8889951)_____)=}}112355553598899998888888888888894555554945499999994499988", "8999989988889999889999}_____))=77}11223333399949999888988888888889455555599454999994499994", "8899888999889889999889+_____)+=777}}}}}11}155498899499998888888999555554988994499555998949", "999988889999988$$898$9}7==+)+=77}111121}12359988888945554988888455445554888889499994999499", "99999988899998$$#$998883}77}77777}1121}7}1349988888899445599944549945554988884988899444998", "99999999444999888$8988882}}7777777}1111111599998888898999554994555445554988899888$89949999", "9998888949999498888998889177777777}11}}11249999888888899949888899555555598889988$$99994444", "888888894989994988899999437777====7}111235559998889894444449988899455555989949888999889998", "8888894449899945494999322}777777====7}1345555499999955499994449898945555455454989998889499", "889899455555555555541+_)1777777777}}125535555555455555998889444999455555499994444999888444", "9999945555944532}+)_;;;;}2777}}}}}11115+====}555555999988888945545545555999989444999944454", "5555555449517)_;;;;;;;;;)3517}1}}}1}7591====}=)+=15999998888994555555555499994444499889455", "55555531=)_;;;;;;;;;;;;;_1543}}11}7+2495=+==}+_**;_)72498888895549455555499995549449888999", "99557)*;;;;;;;;;;;;;;;;;;1544453}715444}+===})_***;;__+99894555349955555499955549955988888", "945}_;;;;;;;;;;;;;;;;;;;;)}12}}1123544=_))=7)_;;*;;;*__199555535994555555995555998959888$$", "943);;;;;;;;;;;;;;;;;;;;;;;_+}}=====7+___+11)_;;;;;;;;;+5555953555553333595555549994498888", "457;;;;;;;;;;;;-;;;;;;;;;;;;)=7}77===);*_}22_;;;;;;;;;;)54995555354453335435955559894988$9", "53);;;;;---------;;;;;;;;;;;;+==777=+);;_152_;;;;;;;;;;)5455549455545553333555455544548999", "51_;;;;-----------;;;;;;;;;;;_===77=+);;;)==*;;;;;;;;;;_5555499995555533333349999955449998", "3)*;;--------------;;;;;;;;;;;)7++==)_;;;_+_;;;;;;;;;;;_549999999945555335499999889949998$", "+*;;;;--------------;;;;;;;;;;;+=+++)_;;;_+_;;;;;;;;;;;_3449999999945553354499998889999988", "*;;;;;---------------;;;;;;;;;;_=+)))_;;;_+_;;;;;;;;;;;;}54499999445555333549998888999988$", ";;;;;;;;--------------;;;;;;;;;;)=)))_;;;_+_;;;;;;;;;;;;)5554999455555535333599889999998$#", ";;;;;;;;;--------------;;;;;;;;;;)))_;;;;_+_;;;;;;;;;;;;_35555455545555555455549949994998$", ";;;;;-------------------;;;;;;;;;;))_;;;;_+_;;;;;;;;;;;;;194455544945555554945554988999988", ";------------------------;;;;;;;;;_)_;;;;_+*;;;;;;;---;;;)49455444945555554499459988944988", "--------------------------;;;;;___))_;;;;_+;;;;;;-----;;_+54555544945555554945555998944999", ";------------------------;_)++++++=+)*;;;_);;;;;;------;;)+7}1}254444555554455594449944988", ";;--------;;------------_)++=====7}});;;;_);;;;;-------;_))+=}}135444555555554999955555999", ";;---------------------;)+++=====77)_;;-;_);------------;_)+7}1135444555555549999945533599", "};;;-------------------;_))+=====7+------_);-------------;_)+7}254444555555444445455533544", "531=)_;;---------------;;_))++++=+;-----;_)-----;);--------;;_+254444455555455555555555555", "555545531);;;-----;;;-----;;;;;;;----;;;-_)------=517+_;---;;;+344444445454444555555555555", "555555555=);-----;__;----------------___;_)------;}5444531}==}3444444445555455555555555555", "555555535=+;----------------------:--;)_;_);------;}54444444444444444445555444444445555555" ], [ "88$8999888888888$8$88999994553213554455549988888888$88889999999945455555499888888800&$8899", "999999988888888888999999895317))))))))+=}354988$8888999999944455499555545554498888$00&Y", "9999988#$$$$89999999998993}7)__**_____)_)+5499888$8899998888899554955559995555499988$###89", "99999$$##$89999888999941=+))_______*;;_))79999998999998$$$888889455555599894455444998$###8", "889998899999998$888895)______))))++=++7}}}488899999888888888888999555559889444999944998#&#", "889999999999988$888994}_____)=}}1133355532588899998888888888888894555559945499999994499988", "89999899888899998899991)___)+77}}112333333599949999888888888888889455555599454999994499994", "88998889998898899998881)___)=7777}}}}12111554998899499998888888999555554988994999554998949", "999988889999988$$898$82=)))+777}}}11}}1112559888888944554988888455445554888889499994999499", "99999988899998$$#$99889}7===777}1121}7}133599988888899445599944549945554988889988899444998", "99999999444999888$8988891}}777777}11}77123999998888898999554994555445554988899888$89949999", "99988889499994988889988891}777777}1}}1112399998888888899949888889555555598889988$$99994444", "88888889498999498889999895}77===77}}}11235559998889894444449988899455555989949888999889998", "888889444989994449499945537777====7}}12395555499999955499994449898945555455454989998889499", "88988945545555555549993=2}7777=====7}15552323355455555998889444999455555499994444999888444", "99999455549445333353})_;+1==777777}11131+===7355555999988888945545545555999989444999944454", "555555549999931}+);;;;;;_15}7}}}}}}1}}547+==71)+715999998888994555555555499994444499889455", "45555999942}+_*;;;;;;;;;;+5517}1}}}}=2441++=7}_;;;_)=1598888895549455555499995549449888999", "99555517)_;;;;;;;;;;;;;;;+3545112}773494}=+=}7_***;;;*_}9894555349955555499955549955988888", "99532);;;;;;;;;;;;;;;;;;;_2544452124444}))=7+_;;;;;;;*__59555535994555555995555998959888$$", "9953);;;;;;;;;;;;;;;;;;;;;_)7}}}}}}}12=__)11+_;;;;;;;;;;7555953555553333595555549994498888", "455}_;;;;;;;;;;;;;;;;;;;;;;;_+7}}}}}}=)*_)33+_;;;;;;;;;;=4995555354453335435955559894988$9", "355);;;;---------;;;;;;;;;;;;)==}}}77=_;*)53+;;;;;;;;;;;+455549455545533333555455544548999", "555_;;;;----------;;;;;;;;;;;*=}77777+_;;_+7_;;;;;;;;;;;+555499995555533333349999955449998", "44};;;-------------;;;;;;;;;;;)77====)*;;;));;;;;;;;;;;;+49999999945553335499999889949998$", "55+;;;-------------;;;;;;;;;;;;+77==+);;;;));;;;;;;;;;;;)544999999945553354999998889999988", "4});;---------------;;;;;;;;;;;_=7++));;;;));;;;;;;;;;;;_34499999445553333549998888999988$", "5);;;;---------------;;;;;;;;;;;)=+)));;;;));;;;;;;;;;;;;}5549994555555353335998899999988#", "2_;;;;----------------;;;;;;;;;;;)+))_;;;;));;;;;;;;;;;;;75555455545555355455549949999998$", "};;;;------------------;;;;;;;;;;_)))_;;;;));;;;;_)_;;;;_79455554494555555494554498899998$", "+;;;--------------------;;;;;;;;;;_)_;;;;;));;;;;_)=777}}}39455544945555554499459888944988", "_;------------------------;;;;;;;;;__;;;;;)_;;;;;_)=}}111114555544945555554945554998944999", ";--------------------------;;;;;;;;__;-;;;)_;;--;_)=7}}11135554555445555554555594449944988", ";;;------------------------;;;;;;--__;;--;);------;)+=}}}}24449445555555555554999945555999", "+;;----;--;;-----------;_))))))_;--;_;;--;);--------;_)+++=5444944554555555549999945555599", "5=;------------------;)++++))+===_--;;;--;);-----::------;+5444444444555555444445455533544", "52);;;--------------;))+++++=7}});-------;);-----------;;+25444444444555555555555555555555", "5551+_;;;;----------;_))++++=7});-----;--;)*-----)11}}}12544444444444455555555555555555555", "55555531=*;;;;-------;_)))))+7+;----;)));;)_-----;=544444444444444444455555455555555555555", "555555535);;;---;------;_))))_------;)))_;)_--;;;;;=54444444444444444455555444455555555555" ], [ "8888999888888888$8$88999994444955444944549988888888888889999999945555555499888888800&88999", "9999999888888888889999988945113233112354544498888888999999944455499555545554498888$00&Y", "9999988#$#$$899999999988852=++)_)__)))+=244499888$88999988888995549555599955554999888###89", "99999$$#0$8999988899998951=)___________)=599999989999998$$8888944555555999944555454988###8", "8899988999999988888893}=+))______**__))))}988899999888888888888999555559889444999954498#&#", "889999999999988$888993+)___))+=7}}}}22327=488899998888888888888894555554945499999994499988", "89999899888899988899992)__+7}}}12333333327399999999888988888888889555555599454999994499999", "88998889998898899998$85)_)+7}}}}1123333221555498899499998888888999555555988995494555998949", "999988889999988$$898$85+))=77==7777}1}}}13559988888944554988888455445554888889449994494449", "99999988899998$$0$998847))=7777}1}77122235499888888899445599945549945554988884988899444998", "99999994444999888#89885}777777}}}}==}12335999998889898999554994555445555988894888889949999", "9998888999999998888998841}777777}}77}1233499999888888899949988889555555598889988$899994444", "88888889498999498889999895}77777}7=7}11235554998889894444449988899455555999949888999889499", "88888944498999449949999445}7===77}}1122595555499999955499994449999945555455454989998889499", "88888945545555555549998953}=======7}}13992322355455555998889444999455555599994444999888444", "999994555494955555499957+27=======7}11137====}55355999988888945545555555499989444999944554", "555555549999955533317)*;*}}=7777==7}11141===7}}7}35999998888994555553555499994554499889455", "4555599999994331=)*;;;;;;+53}7}}77}}}7343=++=})*;*_)72599888895549455555499995549459888999", "994549999951=)_;;;;;;;;;;*15517}1}}7+2495=+=7}_;;;;;;;_)1994555349955555499955549955988888", "99555531=)_;;;;;;;;;;;;;;_1344532}7}34442)+7=_*;;;;;;*___25555354945533559955559999598888$", "995331);;;;;;;;;;;;;;;;;;;+3555331135541__}2}_;;;;;;;;;;*+55953355553333595555549994498888", "45355+;;;;;;;;;;;;;;;;;;;;;_)=7777}77}7___23}_;;;;;;;;;;;)595553354453335535955559895988$9", "33542_;;;;;-;;;-;;;;;;;;;;;;;)=}}}7777)**_237_;;;;;;;;;;;)55554455545533333555455554548999", "5594+;;;;--------;;;;;;;;;;;;_+7}}777=);;;)=);;;;;;;;;;;;)55499995555533333349999455449998", "5443_;;;----------;;;;;;;;;;;;_=}}}7=+);;;)+;;;;;;;;;;;;;_5999999945553335499999889949998$", "4441*;;;-----------;;;;;;;;;;;;+7}}7+)_;;;)+;;;;;;;;;;;;;_24999999945533354499998889999988", "4947;;--------------;;;;;;;;;;;_=7}=+)_;;;)+;;;;;;;;;;;;;;7499999445553333549998888999988$", "445);;---------------;;;;;;;;;;;)77+))*;;;)+_)_;;;;;;;;;;;+449994555553333335998899999998#", "441_;;----------------;;;;;;;;;;_+=+));;;;)+)+7==+++);;;;;+5554555555533354535499499999988", "447;;;-----------------;;;;;;;;;;_)))_;;;;)++77}}}}11=*;;_24555544945553354955544988999988", "45);;;------------------;;;;;;;;;;)))_;;;;)+++77}}111}+;;;+5455544945555554449459988944988", "43_;;--------------------;;;;-----_))_;---))_)+=7}}}1}+;;;;_555544945555554445555998944999", "47;;------------------------------;_)_;---))---;)+=77+_;;;_7544555445555554553594449944988", "3_;--------------------------------*__;---)_-----;;_*;;;;_35444445555555555554999955555999", "2_;;-------------------------------;_*;;--)_----;;----__;+55444444555555555549999945533599", "53+;---;--;;------------------------_;;;-;)_------;--;*)=544444444455555555444555555533555", "551;;;;;----------;;))))_*-----;;;--;;;;-;)_---__-;;+2544444444444555555555555555555555555", "555+;;;;---------;)++++);__;----;;-------;)_;----+5544444444444444444455555555555555555555", "55551+_;--------;)++======+*----;;--;;;;;;));;;;;;}544444444444444444455555555555555555555", "55555551+;;;----;_)++++=77);---:----;+++)_)_;;;;;;_}54444444444444444455555444555555555555" ], [ "8888999888888888$8$899999944449444449445499888888$8888889999999945555555499888888800&88999", "9999999888888888889999988994449955544999444498888$88999999944455499555545554498888$00&Y", "9999988#$#$$8999999999888432211}==}}13499944998$8$88999988888995549555599955554999888###89", "99999$$##$899998889999889}++)_)__)))))+75999999989999988$$8888944555555999944555454988###8", "8899988999999988888899953=)____**_____))+3988899999888888888888999555559889444999954498#&#", "889999999999988$88899227+))______))++=+))}988899998888888888888894555554945499999994449988", "89999899888899988899991)))+=7}111133332}++499999999888988888888889555555599454999994499994", "88998889998898899998$81))=}}}}11222233327+355998899499998888888999555555988994494555998949", "99998888999998$#$898$85))=}7777}11111111}1559988888944554988888455445554888889449994494449", "99999988899998$$0#998897)77======}117}1112499888888899445599945549945554988884988899444998", "9999999444999988$#89883}+7777}}77712233322999998889898999554994555445555988894888889949999", "99988889999999988889984}}7777777==}123322599999888888899949988889555555599889988$899994444", "8888888949899999888999941}7777777}12222355554998889894444449988899455555999949888999889499", "888889444989994499499994451777====}1112595555499999955499994449999945555455454989998889499", "8888894454455555554998884517==777}11212992322355455555998889444999455555599994444999888444", "99999455549995555549999955}==++++=7}11151====}53355999988888945545555555499989444999944554", "55555559999995555554995})}}=======7}11}32=+==122354999998888994555553555499994554499889455", "45555999999995494531}+_;;)17======7}11755+++=})*__)=}3499888895549455555499995549459888999", "9945499999995553}+_;;;;;;;15177}}77}}+143=+=7}_;;;;;;;*)=395553349955555599955549955988888", "995555999993}+)*;;;;;;;;;;+345}7117=+15442+7=_;;;;;;;;;;;_1553354945533559955559999598888$", "995333551=)_;;;;;;;;;;;;;;=254453}7}34442)}2}_;;;;;;;;;;;;)5453355553333595555549995498888", "4533533);;;;;;;;;;;;;;;;;;*1333111}1}11}__23}_;;;;;;;;;;;;*15553354453335535955559895988$9", "335444=;;;;;;;;;;;;;;;;;;;;;;)=}}77777=);_33=*;;;;;;;;;;;;;1449455545533333555455554548999", "559995);;;-----;-;;;;;;;;;;;;*+=}}}}77+_;;)=);;;;;;;;;;;;;;}499995555533333349999455449998", "444441_;;---------;;;;;;;;;;;;_=77777=)_;;)+;;;;;;;;;;;;;;;+49999945553335499999889949998$", "44445);;-----------;;;;;;;;;;;;)=7777+)*;;)+;;;;;;;;;;;;;;;)549999945533354449998889999988", "49945_;;------------;;;;;;;;;;;*+=77++);;;)+;;;;;;;;;;-;;;;_14499445553333549998888999988$", "44443_;;-------------;;;;;;;;;;;_==+)));;_)=+))))_;;;--;;;;;74994555553333335998899999998#", "4444};;---------------;;;;;;;;;;;)+)))_;)++=7}}}117;---;;;;;744555555533354535499499944988", "4444=;;;--------------;;;;;;;---;;)))___)++==}}}11})--;;;;;_355544945555554945554988999988", "4445);;-----------------;;;-------_))_;;*_)++=}}}1}*;--;;;;)355444945555554449459988944988", "4453);;;;----------------;;-------;))_;---))_)+7}}+;;;;;;;--;)3444945555554445555998944999", "9442_;;;------------------;;-------_));;--)_--;_));;;;;;;;-;;)3455445555554553544449944988", "994};;---------------------;-------;__*;--)_-------;;;;;;;;_154445555555555554999955555499", "445+;;-----------------------;------_*;;-;)_---;;--;_;;;;;)3444444555555555544999945533599", "555+*;-----------:-----------;;;;;--__;;;;)_-------;;;;;_+34444444455555555444555555533555", "5553);-------------------------;;;--;__;;;)_------;;)1544444444444555555555555555555553555", "5555+;;;------_))+);------------;;---;;;;;)_;----_3444444444444444444455555555555555555555", "55553);;;---;+77=77+;------------;-----;-_)_;;;;;;+544444444444444444455555555555555555555", "5555537);;;)}1}77}}});---------:-----____))_;;;;;;;=54444444444444444455555444555555555555" ], [ "8888999888888888$$$88999999444944449944549988888888$88889999999945555555499888888800&88999", "9999999888888888889999988999999945549999444498888$88899999994455499555545554498888$00&Y", "9999988#$#$$89999999998889445545559998889944998$$$88999988888995549555599955554999888###89", "99999$$00#89999888999988952}7}++)+++}259899999998999998$$$8888944555555999945555454988###8", "889998899999998$888899947)))))_)))_))++=14988899999888888888888999555559889444999954498#&#", "889999999999988$88899453=)____;_____)))))1988899998888888888888894555554945499999994449988", "89999899888899988899995}+)))))))+=}}}}=))7999999999888988888888889555555599454999994499994", "88998$89998898899998$82++}}}}1112223331=)+555998899499998888888999555555988995494555998949", "99998$$899999$$##898$8})=}}}}}111223333}++359988888944554988888455455554888889449994994449", "99999988899998##𘉄==7====7}1}}}1111+2499888888899445599945549945554988884988899444998", "999999999999998$$#898893}7==+===121}}122}1499998889898999554994555445555988894888889949999", "99988889999999988889882}3}777777122233221299999888888899949988889555555599889988$899994444", "888888899989999988899941}17777==}112222235554998888894444449988899455555999949888999889499", "88888844998999449949999433}7777}}111222595555499999955499994449999945555455454989998889499", "888889444445555555499888943}}7==7}12112443333555455555998889444999455555599994444999888444", "9999995554999555554999894527==77}11111153===7253355999988888945545555555499989444999944554", "445555499899955555549999531=++=+==}111111===7345554999998888994555553555499994554499889455", "455549999899954945554941++1=======}1111}1++=7}))+=}259999888895549455555499995559459888999", "994549999999449995317+_;;*11=7====7}1}72}=+=}7*;;;;;;*)+}245553349955555599955549955988888", "99555499999459951=);;;;;;;+55}77}}7}7+}555}7+_;;;;;;;;;;;;)155354945533559955559994598888$", "99553559999517)_;;;;;;;;;;_15431}17==1544432+*;;;;;;;;;;;;*)353555553333595555549995498888", "9553535531=)*;;;;;;;;;;;;;_1354452}}25443733+*;;;;;;;;;;;;;;7555354455335535955559895988$9", "33544452);;;;;;;;;;;;;;;;;;)}}11}77777}=_+53)*;;;;;;;;;;;;;;)44455545533333555455554549999", "5599994=;;;;;;;;;;;;;;;;;;;;;;)=}}}}}7=)__+=_;;;;;;;;;;;;;;;)54995555533333349999455549998", "4444445+;;;;-;;;-;;;;;;;;;;;;;_+=7777=+)*;));;;;;;;;;;;;;;;;*1499945553335499999889944998$", "4444443);;;--;;;--;;;;;;;;;;;;;)==77=++);;));;;;;;;;;;;;;;;;;=4449945553354449998989999988", "9999941;;;---------;;;;;;;;;;;;;)===++));;+);;;;;;;;;;;;;;;;;)544445553333549998888999988$", "494444};;;----------;;;;;;;;;;;;*+++++)_;*+++)))_;;;;;;-;;;;;;}44555555553335998899999998$", "4944447;;------------;;;;;;;;;;;;_)))))_)++==}}}11}_;;---;;;;;=445455555354535494499944988", "499944=;;-------------;;;;;;;----;))))__))+++}}}}}}+;---;;;;;*}444945555554945554988999988", "444445+;;--------------;;;;-------;)))__))+++7}}}}1+;---;;;;;)3444444555554449459988944988", "444445+;;---------------;;;--------)))_;-;))))=7}}});;;;;;;;-;;+34444555554445555998944999", "994445);;;;---------------;;-------;))_;;;);---;)++_;;;;;;;;---;+5444555554553544549944988", "999445);;;-----------------;;-------___;;;);-----;;;;;;;;;;;-;_}54454555555554999955555499", "999945_;--------------------;;;-----*__;;;);---;---;_;;;;;;;;=5444455555555544999945533599", "555551_;---------------------;;;;;--;)_*;;)_----------;;;;;*=54444444555555444545555533555", "555551*;;--;;;;---------------;;;;--;))_*_)_;--------;;)=135444444444555555555555555553555", "555555)))+=1}}7+_;--------------;;---_____)*;;;----)13544444444444444455555555555555555555", "5555551)+}}}77}}});--------------;---;;--;);;;;;;;;_35444444444444444455555555555555555555", "55555552221}}}}11}_------------:-----;-;;*);-;;;;;;;=5444444444444444455555444555555555555" ], [ "8888999888888888$$$88999999944944449944449988888888$88889999999945555555499888888800&88999", "9999999888888888889999988999999945449999444498888$88899999994455499555545554498888$00&Y", "9999988#$#$$89999999998889999994549988889944988$$$88999988888995549555599955554999888###89", "99999$$00#899998889999888955332111359998899999998899998$$$8888894555555999945555444988###8", "889998899999998888889999317+7)))))))+=}149988899999888888888888999555559889444999954498#&#", "889999999999988$88889943=)____))____))))+1988899998888888888888894555554945499999994449988", "899998998888999888999941+)___;___)))+)__)+999999999888988888888889555555599454999994499994", "88998889998898899998#841======7}1123317)))555998899499998888888994555555988994494555998949", "99998$$8999998$##898#82+7}}}}1111223331=))259888888944554988888455455554888889449994494449", "99999988899998##𘉅+=}77}}111123332})+599888888899445599945549945554988884988899444998", "999999994999998$$#898882}7++++=}17+=}111+}999998889898999554994555445555988894888889949999", "9998888999999998888988953}7===7}22112322}139999888888899949988899555555599889988$899944444", "88888889998999998889995}51}7777}1212222222554998889894444449988899455555999949888999889499", "88888894498999449949999513}777=}1122222355555499999955499994449999945555455454989998889499", "8888894444455555559998889517===7}111111555555555455555998889444999455555599994444999888444", "999999555499955555499988943}7777}1111113}===}555355999988888945555555555499989444499444554", "4455554998999554555499994537====7}}11111====}495554999998888994555553555499994554499889455", "4555499998999549955549995157=++++=}11111=++=}1}}125999999888895549455555499995559459888999", "99454999999944999455545}))1}====++7}111}====});;;;*_))=13495533349955555599955549955988888", "99555499999459999431+)_;;;+31======}}}=}3177)_;;;;;;;;;;;*)=35354945533359955559994598888$", "9955355999955993}+_;;;;;;;;155}7}}}77=}54521_;;;;;;;;;;;;;;;)35555553333595555549995498888", "95555355995317)_;;;;;;;;;;;}3545117=71544531_;;;;;;;;;;;;;;;*755554455335535955359895988$9", "335494533}+);;;;;;;;;;;;--;+235553}}12353351_;;;;;;;;;;;;;;;;)5455545533333555455554549999", "54999945}_;;;;;;;;;;;;;;;--;))+==++=====))=+;;;;;;;;;;;;;;;;;_2495555533333349999455544998", "44444445+;;;;;;;;;;;;;;;;;;-;;_)+======+)_+_;;;;;;;;;;;;;;;;;;=49945555335499999889944998$", "44444445);;---;;--;;;;;;;;;;;;;)++====+))_+_;;;;;;;;;;;;;;;;;;)549945553354449998989999988", "99999995_;;--------;;;;;;;;;;;;;)====++))_+_;;;;;;;;;;;;;;;;;;*14445555333549998888999988$", "99994442_;;---------;;;;;;;;;;;;_++=+++))_+_;__;;;;;;;;;--;;;;;)5555555533335998899999998$", "49444441*;;----------;;;;;;;;;;;;_++))))_)+_;_++)__;;;;;--;;;;;*24445555554535494449944988", "99994441*;;-----------;;;;;;;;;;;;))))))__+_))+=7}}}}=);--;;;;;*14444555554945554988944988", "44444441*;;------------;;;;;-;;;;;;)))))__+_)+++7}}}}1});-;;;;;)54444555554449554988944988", "44444441*;;;------------;;;--------_))))__+))+++=}}}}1}+;;-;;;;;)}544555554445555498944999", "99994941;;;;;------------;;--------;))))_)+;-;))+=}}}}=);;;;;;---;)54455554553544549944989", "9999994};;;;---------------;--------_)))__)------;_)+=)*;;;;;;-;;)144455555554999955555499", "9999994};;;-----------------;;------*)))__);--::----;;;;;;;;;;;;}5444455555544999945533599", "55555557_;;;;----------------;;-----;))))));;-----;---;_;;;;;;*}54444455555444555555533555", "55555551111}}}+_;-------------;;;;---))))));;;----------;;;)+73444444555555555555555533555", "555555531}}}}11}_;--:----------;;;---_)))));-;;;;----;))=154444444444455555555555555555555", "555555311}}11111=;;-------------;;;--;___));;-;;;----_254444444444444455555555555555555555", "33355317}}111111}_-----:-----:-:--;---_;;_)*;--;;;;;;;754444444444444455555444555555555555" ], [ "8888999888888888$$$889999999449444499444499888888$8$88889999999945555555499888888800&88999", "99999998888888888899999889999999454499994444888$8$88899999994455499555545554498888$00&Y", "9999988#$#$$89999999998889999994449988889944988$$$8899998888899554955559995555499988$###89", "99999$$00#8999988899998$8994555549998888899999998899998$$$8888894555555999944555444988###8", "889998899999998$$$889998853}1}=++++=1254898888999998888$8888888999555559889444999954498#&#", "889999999999988$88889995}++)+))))_))++++=3988899998888888888888894555554945499999994449988", "8899989988$89998889988851+___*______))_)))299999999888988888888899555555599454999994499994", "88998$89998898889998#$95}+)))))+=7}}}}+)_)155998899499998888888994555555988994494555998949", "99998$$899999$$##898##92}}}}}1112223331=))759888888844554988888455455554888889449994494449", "9999988888999$##b#$9==}}}}1111233332}+)799888888899445599945549945554988884988899444998", "999999999999998$$#898$83}1=+==}}}}7}1121+)399998889898999554994555445555988899888889949999", "99988889998899988$$98$8951=++==1317712227739998888888899949988889555555599889988$899944444", "88888889998999998889999351}777713322332221254998888894444449988899455555999949888999889499", "88888894998999949999899513}77==}1112222223555499989955499994449998945555455454989998889499", "88888944444445544499988855}7777}1111222125555555455555998889444999455555599994444999888454", "998999555499955555999988943}7===}111111}===71955355999988888945555555555499989444499944554", "44455549989995545554999844517777}1111111===71994559999998888994555553555499994554499889455", "4455499888999549955599994552===++=7}1111++==1455554999998888895549455555499995559459888999", "9945999999994499945559993}}2====++7}111}===7}___)+=}13549994555349955555599955549955988888", "99555499899949998955521=)_)37======}}11}}}7=)*;;;;;;;;;_)+7135354945533359955559994598888$", "9945555999944994531=_*;;;;*151777777}}7}5327_*;;;;;;;;;;;;;;_}5555555333595555549995498888", "945553549945443}+)*;;;;;;;;+34517}}7==15453}_;;;;;;;;;;;;;;;;_}555445533553595535999598889", "3554994335317)_;;;;;;;;;;;;+235453}7}3544557_;;;;;;;;;;;;;;;;;)555445533333555455554549999", "549999953});;;;;;;;;;;;;;;;;}111}7==77}12}});;;;;;;;;;;;;;;;;;*145555533333349999455544998", "444444445);;;;;;;;;;;;;;;;;;;;_+=7==7777+++;;;;;;;;;;;;;;;;;;;;+4945555335499999889944998$", "444444445_;;;;;;;;;;;;;;;;;;;;;)+777777=+++;;;;;;;;;;;;;;;;;;;;_54445553354449999989999988", "999999993_;;;;;;;-;;;;;;;;;;;;;;+==777=++++;;;;;;;;;;;;;;;;;;;;;}445555335549999888999988$", "99994444};;;-------;;;;;;;;;;;;;_+==7=+++++;;;;;;;;;;;;;;;;;;;;;)555455555335499899444998$", "99444444};;;;-------;;;;;;;;;;;;;)+==++++++;;;;;;;;;;;;;;;-;;;;;;1445555554555594449944988", "99994994};;;---------;;;;;;;;;;;;*+=++++))+;;;;;;;;;;;;;;---;;;;;+444555554945554998949988", "444444441*;;;---------;;;;;;;;;;;;_)))++))+;;;;;;;;_++)__;;;;;;;;7444455554499554988944988", "444444441*;;;;---------;;;;--;;;;;;))))))));;;;;;_)+=7}}}}}+_;;;;)154455554945555498944999", "99999994};;;;;----------;;;;--;;;;;*)))))));;;;;*_)+=7}}11117);;;;;;}455554455544549944989", "99999994}))_*;------------;;;--;;;-;)))))));--;;;_)+==7}}1117+*;;;;_1545555554999955555499", "999999991}77}7+_;----------;;;------_))))));------;*)+=7}}}}=);;;;+54455555544999955533599", "555555551}}}111}+;-----------;------;))))));-------:--;_)+++)_;;;_244455555444455555533555", "55555552}}111111});------------------_)))))*;------:-----;;;;;;;_1444455555554555555553555", "555555551}1211111+;------------;-----_)))))_;----------;---;_)=154444455555555555555555555", "555555553}}}11111);-------------;;---;_))))_;;--;;-----;))+}354444444445555555555555555555", "33333333377777=+_;---------------;;---___))_;;;--;;;---;1554444444444445555544555555555555" ], [ "8888999888888888$$$889999999449444499444499888888$8$88889999999945555555499888888800088999", "99999998888888888899999889999999444499994449888$8$88899999994455499555545554498888$00&Y", "9999988$$#$$89999999998889999994449988889944988$$$8899998888899554955559995555499988$###89", "99999$$##$8999988899998$$999944999888888899999998899998$$$8888894555555999944555449988#$#8", "889998899999998$$$8899988945333211113999898888999998888$8888888999555559889444999954998#&#", "889999999999988$88889999931}77+))))))+=}15988899998888888888888894555559945499999994449988", "8899989988$89998889988$95})____))___)))))+}99999999888988888888899555555599454999994499994", "88998$899888988899980#$937)_____))))++))_))25998899499998888888994555555988995494555998949", "99998$$899999$$##8980#$851}7}}}}1223332})))24888888844544988888455455554888889449994994449", "9999988888999$##&088##$9711}}11111233331=))19888888899445599944549945554988884988899444998", "999999999999998$$0898#$912177}}111122332}++39998889898999554994555445555988899888889949999", "99988889998899988$$98$8855}++++}11==7}121+=4998888888899949988899555555599889988$899944444", "8888888999889999888999984517777}232123331}119998888894444449988899455555999949888999889499", "88888894998999999999889425}}77=}1122222222155499989955499994449998945555455454989998889499", "888889444444444444988888432}777}1222222112355555455555998889444999455555499994444999888444", "998999455999955555998888945}7===711111117==71955354999988888945555555555499989444499944554", "4445554998999554555499884453}777}1111111===72994559999998888994555553555499994554499889455", "4455499888999549955599984555}77=7}}}111}===72945554999998888895549455555499945559459888999", "9945999989994498945559994535}===++=}111}===71}}1235559499894555549955555599955549955988888", "9955549989894988894455951=+3}======}1111777=)_;;;__)+=}1355555354945555359955559994598888$", "994555499994499945551+))_;_13}=====7}11}}227__;;;;;;;;;;;*)+=15555555333595555549995498888", "945555549945494317+_;;;;;;;+54277}}777=15537_*;;;;;;;;;;;;;;;_=555445533553595535999598889", "5549994555533}+)_;;;;;;;;;;)254521}7=}24445=_;;;;;;;;;;;;;;;;;_}55545533333555455554549999", "54999995537)_;;;;;;;;;;;;;;_1355531}135441});;;;;;;;;;;;;;;;;;;)54555553333349999455544998", "4944444451_;;;;;;;;;;;;;;;;;_))+++++==7117+;;;;;;;;;;;;;;;;;;;;*}445555535499999899944998$", "4944444457_;;;;;;;;;;;;;;;;;;;;)+===7777=++;;;;;;;;;;;;;;;;;;;;;)5445555354449999989999988", "999999994=;;;;;;;;;;;;;;;;;;;;;_++==7=7=+++;;;;;;;;;;;;;;;;;;;;;_144455555549999888999998$", "999999995);;;;;;;;;;;;;;;;;;;;;;)+=777=++++;;;;;;;;;;;;;;;;;;;;;;=44455555335499899444998$", "999944445);;;;----;;;;;;;;;;;;;;;+=77++++++;;;;;;;;;;;;;;;;;;;;;;_544555554555494449944988", "999999995);;;;------;;;;;;;;;;;;;)+==++++++;;;;;;;;;;;;;;;;;;;;;;;}44455554945554998944988", "444444445);;;;;;;-----;;;;;;;;;;;;)=+++))++;;;;;;;;;;;;;;;--;;;;;;+54455554499554998944988", "444444445+;;)+=+);----;;;;;-;;;;;;)++)))))+;;;;;;;;;;;;;;;--;;;;;;)54445554445555498944499", "999949995))=}}}}7);;----;;;;;;;;;;;))))))));;;;;;;;;;;;;;;;))_;;;;;_=345554455544549944989", "999999995777}}111}+_;---;;;;;;;;;;;_)))))));;;;;;;;;;;;;;;;)+==+)_;;;)54555554999955555499", "999999995+=}}111}1}+;-----;;;;;;;;;;)))))))*;;;;;;;;;;;;;;_)+7}}}17))345555444999955533599", "555555551)=7}11}}11=;------;;;;;;;;;_))))))_;;;;;;;;;;;;_)+==7}}11}7}545554444444455533545", "55555555}++7=7}}111+;--------;;;;;;;;)))))+)_;---;-------_)+=7}}11}72445554444445555555555", "555555552++7+)+7}7);;---------;;;;;;;)))))+)_;----------:--;)+7}}}7=1544444444545555555555", "555555555+)=_;;;;--------------;;;;--)++++++)_;--------------;;_)+=}3544554555555555555555", "3333333331+=_;;;;----------------;---;)))))))_;;----;;----)_;;--;)135444554444555555555555" ], [ "8888999888888888$$$889999999449444499444499888888$8$88889999999945555555499888888800088999", "99999998888888888899999889999999444499994449888$8$88899999994455499555545554498888$00&Y", "9999988$$#$$89999999998889999994449988889944988$$$8899998888899554955559995555499988$###89", "99999$$##$8999988899998$$999999999888888899999998899998$$$8888844555555999944555449988#$#8", "889998899999998$$$889988$999444999999888888888999998888$8888888999555559889444999954498#&#", "889999999999988$888899999955211}+++++=1344988899998888888888888894555559945499999994449988", "8899989988$89998889988$8951+))+))))_))+)+=}59999999888988888888899555555599454999994499994", "88998$8998889888999$0###85})___*_____))))))+3498899499998888888994555555988994494555998949", "99998$$899999$$0#89$&00#93}+))))+=7}}}}7+__)3988888844544988888455445554888889449944994549", "9999988888999$##&088####91}1}}11112233331+))1988888899445599944549945554988884988899444998", "999999999999998$$0898#$$4721}}}1111233331=))1998888898999554994555445555988894888889949999", "9998888899889998$$$98$$$9331====}}}7}}112})+598888888899949988889555555599889988$899944444", "888888899988999988899988955}=+==}22}7}1221+}5998888894444449988899455555999949888999889499", "8888889498899999999988994351}777}232222222113499989955499994449998945555455454989998889499", "8888884444444444449888889331777=7}11122212225555455555998889444999455555499994444999888454", "9889994559999555559988889453}7=77}1111117===}455354999988888945555555555499989444499944554", "4444554998999554555999889445177=7}111111===71994559999998888894555553555499994554499889455", "44554998889995499555999844555}777}111111====1955354999998888895549455555499945559459888999", "994599998899449894555999455537==+++=}111====}555555559999894555549955555599955549955988888", "995554998889498889445499551}37===++71111}7=7+)+=}1135549995555354945555359955559994598888$", "99455549999449994559431}+))+3}======}111}121_*;;;;;;_))+7}25455555555333595555549995498888", "94555554994549955317)_;;;;;_55}=====7}}77331_*;;;;;;;;;;;;;_)=1555445533553595535999598889", "5549994555555317+);;;;;;;;;;1545}7}7===15451_;;;;;;;;;;;;;;;;;*=55445553333555455554549999", "549999955337+)_;;;;;;;;;;;;;1354431=7}3543}+;;;;;;;;;;;;;;;;;;;_14555555333349999455544998", "49444444457*;;;;;;;;;;;;;;;;+}}}7=77}12552=_;;;;;;;;;;;;;;;;;;;;+445555555499999899944998$", "4944444453);;;;;;;;;;;;;;;;--;;)+++++++=}7+;;;;;;;;;;;;;;;;;;;;;_1444555554449999989449988", "9999999943_;;;;;;;;;;;;;;;;--;;_+=7=7777==+;;;;;;;;;;;;;;;;;;;;;;)54455555549999888944998$", "999999995}_;;;;;;;;;;;;;;;;;;;;;)=======+++;;;;;;;;;;;;;;;;;;;;;;*24445555555499894444998$", "999944445=;;;;-----;;;;;;;;;;;;;_=7=====+++;;;;;;;;;;;;;;;;;;;;;;;}44455554555594449944988", "999999995=;;;;;---;_)));;;;;;;;;;+77=++++++;;;;;;;;;;;;;;;;;;;;;;;)54455554945554998944988", "4444444457;;;;;;)+}}}=);;;;;;;;;;)77=++++++;;;;;;;;;;;;;;;;;;;;;;;_24445554449554998944988", "4444444451_;;;_====7}7+_;;;--;;;;;+7+++))++;;;;;;;;;;;;;;;;;-;;;;;;}4444554445555499944499", "9999499957_;;;)=777}1}=);;---;;;;;_+++))))+;;;;;;;;;;;;;;;;--;;;;;;_1544454455545549944989", "999999994+_;;;)++=7}1}+;;;;;-;;;;;;))++)))+;;;;;;;;;;;;;;;;----;;;;;;)15445554999955555499", "999999994+_;;;)=++=}}});-;;;;;;;;;;_))))))+_;;;;;;;;;;;;;;;-------;;;;_3444444999955533599", "555555551_;;_++)))+7}7_----;;;;;;;;;))))))+)*;;;;;;;;;;;;;-------;;_)_75444444444455533545", "555555557)_)++);;;_))*------;;;;;;;;_)))))+)_;;;;;;;;;;;;;------;;_)))75544444444555555555", "55555555})_*++_;;;;----------;;;;;;;_)))))+))_;--;;;;;;;;-------_))++=7}134444444445555555", "555555553+;;)_;;;-------------;;;;;;;))))))))_;;---;;;;----::--;_)+==777}35444445555555555", "3333333331_;;;;;---------------;;;;;;_)))))__)_;;---------------;)+=7}}1254444444455555555" ], [ "8888999888888888$8$88999999944944449944549988888888888899999999945555555499898888800088999", "9999999888888888889999988999999945449999444498888$88899999944455499555545554498888$00&Y", "9999988$$#$889999999998889999994449988889944998$8$88999988888995549555599955554999888###89", "99999$$##$8999988899998$$999999999888888899999998999998$$$8888945555555999944555544988#$#8", "8899988999999988$8889998$999949989898888898888999998888$8888889999555559889444999954498#&#", "889999999999988$8888999999994533521}112499988899998888888888888994555554945599999944449998", "8999989988889998889988$89943}}===)))))))+7}39999949888988888888899555555599554999994499944", "88998$89998898889998&0#089527)____)____)))))=399899449998888888994555555998945494555998949", "99998$$899999$$0#898&&0&8451+)____)))++++)__)}98888945554988888455455554988889449945494549", "9999988889999$##&098###08431}77}}}11223321+))798888899445599945549945554988884988899444998", "999999994999998$$0898#$$84}71}}}}1111333327))+98889998999554994555445555988894888889449999", "99988889998899988$#98$8$841137==}}1}1112221+)}98888888999449888995555555999849888899944444", "88888889998999998889999899532=+++=11}==}112=+599989894444449988899455555999949888999889499", "88888894998999949999889994552}7777122112332}1199999955599994449999945555455554989998889499", "88888944444444444498888894331777==}1112211221355455555998889444999455555599994444499888454", "99899955549995555599888894533}777}}12111}===}355354999988888945555555555499989444499444554", "4445554998999554555499889445517====}}}}1}===}595359999998888994555553555499994554449889555", "445549989899954995559998455555}777}}11117++=}555354999998888895549453355499945559459888999", "994549998999449894555999455555}7==+=7}117===}355533559999894555349955355599955549955988888", "995554998989498889445499455535}==+++7}11}}=7}+}3555555499955533549455333599555599945498888", "995555599994499945599555217=}57===++7}1111221__*_)+7}1355335455355555333595355549995598888", "9455555499454995555527+___;_=51====+=7}111331__;;;;;;;;_)+71355555445533553595335994598889", "554999455555553317+);;;;;;;;)545}=77=77773552_*;;;;;;;;;;;;;;_)755545533333555455554549999", "549999955553}=+)*;;;;;;;;;;;+33443}}7=7155}17_;;;;;;;;;;;;;;;;;;)5555553333349999455544998", "444444444531_;;;;;;;;;;;;;;;)1232331}15444}+_;;;;;;;;;;;;;;;;;;;;}455553354999999999449988", "49444444533);;;;;;;;;;;;;;;-;;;_)+++==7}327);;;;;;;;;;;;;;;;;;;;;+544555354449999999449999", "99999999433_;;;;;;;;;;;;;;;---;;)======777=);;;;;;;;;;;;;;;;;;;;;*144555555449998899444988", "99994999437*;;;;;;;;;;;;-;;---;;)=++====7=+_;;;;;;;;;;;;;;;;;;;;;;)5445555555499894444498$", "9999444953);;;------;;;;-;;;;;;;_+==+====++_;;;;;;;;;;;;;;;;;;;;;;;}4455554555594449444988", "9999499953_;;;-------;_))=}}7+_;;+===++=+++_;;;;;;;;;;;;;;;;;;;;;;;+5455554955555998944988", "4444544453_;;-------*+77=+++);;;;_===++++++_;;;;;;;;;;;;;;;;;;;;;;;)5445554444554999944988", "4444544453);;------;+7=+=7}}}=);;;+7=++))++_;;;;;;;;;;;;;;;;;;;;;;;_3444554445335499955499", "9999499952);;------*)+++=7}7+_;;;;_+=+))))+_;;;;;;;;;;--;;;;;;;;;;;;)344554455545559955999", "999999995})*;------;)+++=77+_;;;;;;)+)))))+_;;;;;;;;;;--;;;;---;;;;;;_34444554499955555499", "9999999957_;;--*_;;;_++++_;---;;;;;*))))))+)_;;;;;;;;;--;;;;-----;;;;;;7544444999455333599", "555555552_;;;*____;;*)))_-----;;;;;;__))))+)_;;;;;;;;;;;;;;;---------;;;244444445555533555", "55555555=__;;;__)*;;;;--------;;;;;;__))))+))*;-;;;;;;;;;;-----------;;_344444445555555555", "55555555+*;;;;)+_;;;---------;;;;;;;____))+))_;;-;;;;;;;;;;-----------;;155444455555555555", "555555551+;;-;;;;-------------;;;;;;*)))_))))__;;--;;;;;;;;----------;;_+7}254445555555555", "3333333332_;;;;;;-------------;;;;;;;))))))))))*;---;;;;;;----::::--;*))++==7}255455555555" ], [ "8888999888888888$8$88999999944944449944549988888888888899999999945555555499898888800088999", "9999999888888888889999988999999944449999444498888$88899999944455499555545554498888$00&Y", "9999988$$#$$89999999998889999994449988889944998$$$88999988888995549555599955554999888###89", "99999$$##$8999988899998$$999999999888888899999998899998$$$8888944555555999944555544988#$#8", "889998899999998$$$889998$999999888888888898888999998888$8888888999555559889444999954498#&#", "889999999999988$8$889999999999499994554999888899998888888888888994555554945599999944449998", "8899989988$89998889988$899994321}}=))))))=}35949949888988888888899555555599554999994499994", "88998$8999889888999$&0#089993}+)___))___)))++=59899449998888888994555555998945494555998949", "99998$$899999$$0#89$&&0&899527)___;_____)))__)+9888945554988888455455554988889449945494549", "9999988888999$##&088###089952}=++===}11122}+)_)4988899455599945549945554988884988899444998", "999999999999998$$089$###8942=}}}}}1111233331+))3989998999554994555445555988894888889449999", "88988888998899988##98$$#8942=1}77}}111233331=)+598888899944988899555555599984988$899944444", "8888888999889999888999889995131++++71}=+=}11})}9989894444449988899455555999949888999889499", "888888999989999999998899999453}====7131111221715999955599994449999945555455554989998889499", "888889444444444444988888994323}777=7111121322115455555998889444999455555599994444499888454", "998999544999945555998888944525177==7}111}===7155354999988888945555553555499989444499444554", "44445549989995545554998894445537===+=}1}}+==7394359999998888994555353335499994554449889555", "445549988899954995559998444554417===7}11}++=7343334999998888895549453335499945559459888999", "99459999889944989945499845555542}7=+=7}}}=++7333333359999894553349953333599955549955988888", "99555499888949888944449945555551=+++++711}=711}3555555499953333549455333599533599945988888", "9945554999944989455995495321115}==+++=}1112233__)71355555335455355553333595355549995598888", "94555554999549955555431}+))_)751+++++=}}113535)*;;;;*)+=}254555555445333553595335994598889", "5549994555555554452}+)*;;;;;;+552=+===7}}15535);;;;;;;;;;;;_)71355545533333555453354549999", "54999995555552}7+)_;;;;;;-;;;}3545}7}7==}2}233_;;;;;;;;;;;;;;;;;)1555533333349999455544998", "4944444445555);;;;;;;-------;7235553}7}355}}1);;;;;;;;;;;;;;;;;;;_244555354999999999449988", "494944444333}_;;;;;;;--------;__)++++=7}35}=);;;;;;;;;;;;;;;;;;;;;=44555554449999999449999", "999999999533+;;;;;;-;----------;;)+++++++7=+_;;;;;;;;;;;;;;;;;-;;;)54455555499998899444988", "999949994531_;;---;------------;;)++=+====+)_;;;;;;;;;;;;;;;;;--;;;}4455555554998944444988", "99994449433+;;-----------------;;)=++++==++);;;;;;;;;-----;;;----;;_3455554553544449444988", "99999999433_;;--------------;;;;_)+=+++++++);;;;;;;;;;----;;;;---;;;+545554955555998944988", "44445449533_;-----------;))+====++7}=++++++)_;;;;;;;;;----;;;;----;;_344454444554999944988", "44445444533);----------;+===++==+_)==++)))+)_;;;;;;;;-----;;;;;;-;;;;}54444445335499455499", "99994999431);;--------;)+====7}7===+=+))))+)_;;;;;;;;-----;;;;;;;--;;_34444453545559955999", "99999999437_;;--------)++=====77);;_++))))+);;;;;;;;;-----;;---;;;;;;;+5444554499955555499", "9999999943+_;----;;--;)++++)__;;;;;;_)))))+)_;;;;;;;;-----;------;;;;;;=544444999455333599", "555555553=;;;_;;;;;;;;__)_;-----;;;;__))))+)_;;-;;;;;--------------;;;;;=54444445555533555", "555555552_;;;;-;;;_*;;;;--------;;;;___)))+))_;;-;;;;;-----------------;;34444445555555555", "55555555};;;;--;;);;;;----------;;;;;___))+)))_;--;;;;-----------------;)55444444445555555", "555555553+_;--;-----------:-----;;;;;_)__)+))))_;---;;;-------:--------;_35444444455555555", "3333333333+;;;;;----------------;;;;;_))))))))_*;;---;;;------::-------;;+3555544444555555" ], [ "8888999888888888$88889999994449444449445499888888888888994999999555555554999998888##088999", "9999999888888888889999988999999945549999444498888888999999944555599555545554499888$0#00$89", "9999998$8$8889999999998889999994449989889944998$8$88999998888945549555599455554999888$$#89", "99999$$##$8999988899998$$9999999998888888999999989999988$$8888945555555999945555554988$$#8", "889998899999998$$$889998899999998989888889888899999888888888889999555559989544999954498#0#", "889999999999988$88889999999999999999955499988899998888888888888994555554945599999944449998", "8899989988889998889988$8999999453}}}+)))))+}2544449988988888888899555555599554999994499944", "88998889998898899998&00&8999951=))___))___)))+=3994449998888888994555555999945494555999944", "99998$$899999$$##898&00&899953})___*;____)))__))588945554998889455455554988884449945494549", "9999988888999$##&088#0#0899953}=++===7}11111})_)398899455599945549945555988884988899454998", "999999999999998$$0898###899957=}}}}}1111233327))}99999999554444555445555988894988889449999", "99988889998899988$#98$$#89995==}}7}}}111233321+)}99898999449888945555555999949888899944444", "88888889998899998889998899995271=++++}1}=+7}11=+499995554449998999455555999959888999899499", "888888949989999499998899999945517====}12111222}}399955549994449999945555555554989998889449", "88888944444444444498888899445152777==71122322211355555998889454999555555599994544499989454", "99899954499994555599888894444515}7===7}1}7==7123555999988888955555553555499989444499445555", "4445554998999554555499889444455517++++=}}===}545359999998888995555353355499994554449989555", "445549988899954995559998444554995}==+=71}++=}553334999998888895549453355499945559459988999", "994599998899449899454998455555445}7=++=}}=++7353333359499894553349955333599955549955998888", "995554998899498889444499455555545==++++7}}=7123}355555449955333549455333599533599945498888", "995555499994498945599549553321}51=++++=}1222115+_)7135555335455355553333545355359995598888", "94555554999549955555953317))))+51+++++=7}233}24+_;;;;_)+7154555555445333553595335994598889", "55499945555555549951}=)_;;;;;;)553=++===}255244+_;;;;;;;;;;_)=1355545533333555553355549999", "5499999555555551}+)_;;;;;;;;;;+5545}7}7==}}1545)*;;;;;;;;;;;;;;;_+255553333349999455544498", "444444444555991_;;;;;;;;;;--;;=235553}7}257155);;;;;;;;;;;;;;;;;;;_15555554999999994544998", "49494444455595);;;;;;---------;)_)+++=7}13712+;;;;;;;;;;;;;;;;;;;;;+5555554449999999449999", "99999999955551_;;;;;;;----------;;)+++++++==+);;;;;;;;;;;;;;;;;-;;;)5555555449998899444988", "9999999995555=;;;-;;;;----------;;)+++=+==++)_;;;;;;;;;;;;;;;;--;;;;1555555554999944444988", "9999499945553_;;-----;----------;;)===+=+++))_;;;;;;;;---;;;;;----;;_355554553544549444988", "9999999945557;;;----------;;)+777))+=+++++++));;;;;;;;-----;;;;----;;=55554455555999944988", "444444495555};;---------;)=7=++++)*+==+++++)));;;;;;;;-----;;;;----;;_34444444554999955988", "445454444555};;--------_}===+===)_;)==+))++)));;;;;;;;----;;;;;;;;-;;;75444445335499455499", "999949994555=_;--------)=7=====++==++=+)))+)))*;;;;;;;;---;;;;;;;;;;;;_5444455555559455999", "999999994552)_;-------;)+7}777}});;;)++)))+))_*;;;;;;;----;;;---;;;;;;;7554554499455555499", "999999994537_;;---*;;;;++===+))_;;;;_)))))+))_;;;;;;;;----;;;----;;;;;;*254444499455333599", "55555554537;;;__;;;;--;))))------;;;;_))))+))_*;;;;;;;-------------;;;;;)34444455555533555", "5555555552)_;;;;;;;;;;;;;;-------;;;;__)))+)))_;;--;;;------------------;)5444555555555555", "5555555553_*;;;-;;;_*;;;;--------;;;;___))+)))__;--;;;------------------;)5444445555555555", "55555555551);;;;;;;;-------:-----;;;;_))))+)))))_;---;;;--------------;;;}5444454455555555", "333333355537;;;;;;;--------:-----;;;;__))))))))_*;;---;;----------------;}5444444444555555" ], [ "8888999888888888$88889999994449444449445499888888888889944999949555555554999998888###88999", "9999999888888888889999988999999945549999444498888888999449944555599555555554499888$##0#$89", "9999998$8$888999999999888999999444999988994499888888999998888945549555599455554999888$$$89", "999998$##$8999988899998$89999999998888888999999989999998888888945555555999955555554988$$$8", "889998899999998$$8889998899999998989898889888899999888888888889999555559989554999455498$0$", "889999999999988$88889999999999999945521}}}124999498888888888888994555554945599999944449998", "899998998888999888998888999999941}=+++))))))++}1549988988888888999555555599554999994499944", "889988899988988999980##089999943}+___*___*__))))+35449999888888994555555999945494555999944", "99998$$899999$$##898&00&89999451=)_____))++==+)_)79945554998889455455555988884549945494549", "9999988888999$##b###089999451777}}}}1112332}))+9999455599945549945555988894988899555498", "999999999999998$$#898###899994})7}}}}}111123331=))5999999554444555455555998894988889449999", "99988889999999988$$98$$$8999451+=}===7}1}}}1111})=9998999549989945555555999949888899944445", "88888889998999998889998899999991}7++++=}1177}121+29995554449998999455555999959888999899499", "888888949989999499998899999949455}77=7=}12112222115955549994449999955555555554989998889449", "8888894444444454449888889994453}5177==+}12333211125355998889454999555555599995544499989454", "9989995544999555559988889444495313}====}}===}122355999998888955555553555499989444499445555", "4445554999999554555499889444444453}=+++=}===}315354999998889995335333333599994555449989555", "44554998989995499555999844455499532}===7}++=}215335999998888895349453333499945559454998994", "99454999899944989945499945555594531=+++=7=++}213553359499894553349953333599455559955998888", "99555499899949888944549945555555551=+++=7}=711123+}355449953333349555333599533599945498888", "995555499994498945499549553311}7}57++====11111}25)**_)=}2355453555555333545353359995599888", "9455555499954994555495331}+)__;_751+++===133}7155)*;;;;;;;)+713555445533553545335994598889", "5549994555555554994217+)*;;;;;;;=555}=77725272545)*;;;;;;;;;;;;_)7155553333535553355559999", "54999995555555995=)_;;;;;;;;;;;;133552}}7}}154447_;;;;;;;;;;;;;;;;;_}555553354999455554498", "4444444445554994+;;;;;;;;;-----;}1111221}1=2445=*;;;;;;;;;;;;;;;;;;;_155555499999994544998", "4999444945559992_;;;;;;---------;;;_+++=77=131=);;;;;;;;;;;;;;;;;;;;;755554449999999444999", "9999999995555557;;;--;;-----------;_+=======7=+_;;;;;;;;;;;;;;;;--;;;+55555549998899444988", "999999999555553);;;;;;;------------_+=====+==++_;;;;;;;;;;;;;;;;-;;;;_25555554999944444988", "999999994554951*;;-----------------;+=7===++++)_;;;;;;;;--;;;;;----;;;=5555553545559454988", "99999999455499};;;-----;;_____;----;)=7=++++++));;;;;;;;---;;;;----;;;_3544455355499444988", "44445449455499};;----_=}=)+==);----;_=7=+++++++);;;;;;;;----;;;-----;;;}544444535999455498", "444454494554941;;---_==+))=7=)_;---;;+7=+++++++);;;;;;;;----;;;;---;;;;)544455333599455499", "99994999955443}_;--;)7==77}}=++);---;_++++++++))_;;;;;;-----;;;;;;;;;;;*244455555554455499", "99999999955552+);--;+=+++7}}7+);---;;_))++++++)_;;;;;;;-----;-----;--;;;754555449455333599", "9999999995555+_;--;)+7=+++=}});----;;;_))+++++))_;;;;;;-----;--------;;;_25444499455333599", "555555445555}_*___)_;)++++);------;;;;___)+)))))_*;-;;;---------------;;;)5444455555533555", "5555555555557)__;;;;;;_)));-------;;;;_)))+))))))_;--;;------------------;)545555555555555", "5555555555552);;;;;;;;;;;---------;;;;_))))))))))_;---;------------------;_555455555555555", "5555555555555+;;;;;__;;*;;--:-----;;;;*)))))))))__;;-------------------;;)3545555555555555", "33333355555551_;;;;;;------::------;;;;))))))))))__;;----------:--------;)5444554445555555" ], [ "8888999888888888$88889999994449544449455499888888888889944999949555555554999998888###88999", "99999998888888888899999889999999455499994444988888889994499445555995555555554998888##0#$89", "9999998$8$888999999999888999999444999988994499888888999998888945549555599455554999988$$$89", "999998$##$8999988899998$89999999998888888999999989999998888888945555555999955555554988$$$8", "889998899999998$$$889998$99999998999444532355944499888888888889999555559989554999455498$0$", "889999999999988$88889999999999999431=7=))))))+71349888988888888994555554945599999944449998", "8999989988889998889988889999999941+)_____)___))))=3988988888888999555555599554999994499944", "889988899988988999980##08999994537)_**;;__))))))_)=549999888888994555555999945494555999944", "9999888899999$$##898&00&8999999527+++=77}111222}+))555554998889455455555988884549945494549", "9999988888999$##b###089999993++}}}}}111123332}))149555549945549945555988894988899555498", "999999999999998$$#898###89999952)+77777}111111111+)399999554444555455555999894988889449999", "99988889999999988$$98$$$899994451==+++++7117=7}1177999999549989945555555999949888899944445", "8888888999889999888999889999998952}7====7}111123211245555449998999455555999959888999899499", "88888894998999949999889999994984}3277====}111222111355549994449999955555555555989998889449", "88888944444555544498888899944449513}77=7}1222222233335998889454999555555549995544499989454", "9989995544999555559988889944495553537=+=}===}111255499998888955553553335499999454499445555", "444555499999955455549988944444445355}==7}+==}311254999998889995335333333599995555449989555", "445549989899954995559998444554995335}==}7++=}211254999998888895349453333599945559454998994", "994549998999449899455999455555445333}==}=+++}111131714499995333349953333599455559955998888", "9955549989994988894444994555555531237==7===71111}33___)=1335333544455333599533599945498888", "995555499994498944499549553217))))13}++==111}}}7143)*;;;;;;_)=}155555533545353359995599889", "94555554999549945554953317+_*;;;;;}5527==232}=72545);;;;;;;;;;;;;)=}2553553545335994598889", "55499945555555549942}=)_;;;;;;;-;;135451}3527154447_;;;;;;;;;;;;;;;;;)15553535553355559999", "5499999555555599991_;;;;;;---;--;;1125553211554457*;;;;;;;;;;;;;;;;;;;)3555554999535554498", "494444944555999994);;;;;;---------_))+====+7}2527);;;;;;;;;;;;;;;;;;;;;}554499999994554998", "499944994555999995_;;-;;------------;)+77===7}}7+_;;;;;;;;;;;;;;;;;;;;;=554449999999444999", "999999999555549991;;;-;;-------------_+777=777=++_;;;;;;;;;;;;;;;;-;;;;)555549998899444988", "99999999955555499=;;------;;---------;+77=+===+++_;;;;;;;;;---;;;----;;_255554999944444988", "99999999455494553);;;----------------;)=7=+++++++_;;;;;;;;;---;;;---;;;;754555545559454988", "99999999455499943);------------------;_=}7+++++++_;;;;;;;-----;;;---;;;;)54455335499444988", "44444499455999993+;;---;--------------;)==++++++));;;;;;;----;;;----;;;;;15444535999455498", "444454494559994537;;;_))_;------------;_)+++++++));;;;;;;-----;-----;;;;;=5455333599455499", "99994999955444445});_)=+_;------------;;))++++++)_;;;;;;;-------------;;;)5455555554455499", "999999999555549417777}}7+);-----------;;))++++++))_;;;;;;-------------;;;_1544449455533599", "9999999995449991+}}}7}}}7);-----------;;))+)++++))_;-;;;---------------;;;)344499455333599", "5555554455549451}=+=}111})------------;;_)+))+++)));--;;------------------;+54445555533555", "555555555554445}==++=7}}+;------------;;*)+))))++))_;--;-------------------;24445555555555", "5555555555544441+))++7}})------------;;;;)+))))))))_;-----------------;;-;)}54445555555555", "5555555555544443))___))_;-------------;;;))))))))))_;;-----------;;;;--;;_3445555555555555", "33333355555444451)__;*__;------:-------;;_))))))))__;;----------;_)+)));;=5444444445555555" ], [ "8888999888888888$88889999999449444449445499888888888888994999944555555554999998888##088999", "9999999888888888889999988999999945449999444498888888999949944555599555555554499888$0#00$89", "9999988$$$888999999999888999999444998988994499888888999998889945549555599455554999888$$$89", "99999$$##$8999988899998$$9999999998999994535554989999998888888945555555999955555554988$$#8", "889998899999998$$$889998$9999998899537}7))))))+}134888888888889999555559989544999454498#0#", "889999999999988$$$8899999999999984}+))))_))___)))+7598988888888994555554945599999944449998", "8999989988889998889988$89999999995})___;;____))))_)=98989998888999555555599554999994499944", "8899888998889888999$&0&&89999995517+))+++=}11121}+))59999888888994555555999945494555999944", "99998$$899999#$##898&0&&$99999953=+7}}}1111123332}))15554998889455455554988884449945494549", "9999988888999$##&098#0#&899999892)+7777}1111222221=)24555599945549945555988894988899455498", "999999999999998#$089$###899999445}=7=++++=11}==}11}=99999554444555455555989894988889449999", "89988888998899988##98#$#89999449941}7=+===}22112331129999449888945555555999949888899944445", "888888899988999988899988999999889133777777}11222221135555449998999455555999459888999899499", "8888889499899999999988999999998895121777==711222222355549994449999955555555554989998889499", "8888894444444444449888889999444994333}7}}}111111225335998889454999555555599995554499989454", "9889995449999455559988889994495555554177}777}111115999998888955555553335499999554499445554", "444455499899944455599988944444445354937}}===}211113449999889995355353333599995555449999555", "44554998889995999555998844455499535545=}7+==}1111125==249999995349453333599945559459999994", "994599998899449899444999445555945332337}=++=}11111147____)=}123549455553599453559955998888", "99555499888949888944449945555552}=++337====7}}11}}541_*;;;;;;;_)+7135555599533599955498888", "9955554998944989444995495531}+);;;;_1551=111777=}5442_;;;;;;;;;;;;;;_)=1545555359995599889", "9455555499959994545495331=+_;;;;;;;;15543333}=724445+_;;;;;;;;;;;;;;;;;_755545335994598889", "554999455555555999993=)_;;;;;;;;;;;;13355553}154445+*;;;;;;;;;;;;;;;;;;;_15555553355549999", "499999955555559999897;;;;;;;;-;;;--;)++=712}}}1251=_;;;;;;;;;;;;;;;;;;;;;=5549999533554498", "99999999955499999994);;;;;;;;;;-------;)+=+=777}7=);;;;;;;;;;;;;;;;;;;;;;)5499999995554998", "99999999455499888895);;;;;;;;;;-------;_+==7}}7==+);;;;;;;;;;;;;;;;;;;;;;_2444999999559999", "99999999955554999993_;;;;;-;;;;--------;)+=777===+);;;;;;;;;;;;;;;;;---;;;=549998999554988", "99999999955445499992_;;-----;;;--------;_++====+++);;;;;;;;;;---;;;---;;;;)344999455554988", "99999999455499554551;;;------;---------;;)++++++++);;;;;;;;;---;;;---;;;;;;}55555559555988", "99999999955999995555_;;;---------------;;)+++++++));;;;;;;;;---;;;---;;;;;;+55335499454988", "49444499455999994545);;;;--------------;;_+++++++));;;;;;;;----;;----;;;;;;)34535999455988", "44444449455999445555+;;----------------;;_+))++++));;;;;;;;----;----;;;;;;;_15533599455499", "99999999955444499951+_;----------------;;_+))++++))_;;;;;;----;;------;;;;;;}5555354455999", "9999999994444499999});-----------------;;_+)))+++)));;;;;;----;-----------;;)3449535335499", "9999999995449999995);------------------;;_+))))+++))_;;;;;;;-;;-------------;+599455333599", "555554444554944553}7+);----------------;;))))))))+))_;-;;;;_);;-------------;)544455533555", "555555545555455531}}1}+_;--------------;;))))+))))))_;--;;_)+=+)));---;;;;;_}5444455555555", "55555554555555211}111}=*;--------------;;_)))++)))))_;--;_))+=}}}}+_;;;;;;)544444445555555", "5555555455555517}11111}_;;-------------;;_);_))))))_;;;-;_)++=7}}}7);;;;;_2444444445555555", "33333355555455517}11117;;----------:----;__;)))___;;;;;---_++=77}7=);;;;)14444444455555555" ] ] ================================================ FILE: js/terminal-ext.js ================================================ // terminal-ext.js — Extends an xterm.js Terminal instance with all the custom // behavior needed to run the Root Ventures CLI. // // Usage: call extend(term) once after creating the Terminal, before calling // runRootTerminal(). This monkey-patches the term object in place rather than // subclassing, which keeps it compatible with xterm addons. // // TODO: make this a proper xterm addon const extend = (term) => { // ── State ────────────────────────────────────────────────────────────────── term.VERSION = term.VERSION || 3; // bumped to 4 by `upgrade` term.currentLine = ""; // text the user has typed so far term.user = "guest"; term.host = "rootpc"; term.cwd = "~"; term.sep = ":"; term._promptChar = "$"; term.history = []; term.historyCursor = -1; term.busy = false; // Tab completion state — reset on any non-tab keypress. term.tabIndex = 0; term.tabOptions = []; term.tabBase = ""; // Cursor position relative to the start of the user's input (after the prompt). // Uses the raw xterm buffer position minus the prompt's character length. term.pos = () => term._core.buffer.x - term._promptRawText().length - 1; // Plain-text prompt string used for length calculations. term._promptRawText = () => `${term.user}${term.sep}${term.host} ${term.cwd} $`; // Deep link: parse the URL hash as a command to run on load. // E.g. /#whois-avidan → runs `whois avidan` (hyphens become spaces). term.deepLink = window.location.hash.replace("#", "").split("-").join(" "); // ── Prompt ───────────────────────────────────────────────────────────────── // Returns the colorized prompt string for display. term.promptText = () => { var text = term ._promptRawText() .replace(term.user, colorText(term.user, "user")) .replace(term.sep, colorText(term.sep, "")) .replace(term.host, colorText(term.host, "")) .replace(term.cwd, colorText(term.cwd, "hyperlink")) .replace(term._promptChar, colorText(term._promptChar, "prompt")); return text; }; // Writes a newline + prompt (default) or a custom prefix/suffix pair. term.prompt = (prefix = "\r\n", suffix = " ") => { term.write(`${prefix}${term.promptText()}${suffix}`); }; // Erases the current input line and redraws the prompt, optionally resetting // the history cursor so the next Up arrow starts from the most recent entry. term.clearCurrentLine = (goToEndofHistory = false) => { term.write("\x1b[2K\r"); term.prompt("", " "); term.currentLine = ""; if (goToEndofHistory) { term.historyCursor = -1; term.scrollToBottom(); } }; // Replaces the current input with newLine, preserving cursor position if asked. term.setCurrentLine = (newLine, preserveCursor = false) => { // Capture position before clearCurrentLine() because the xterm buffer // cursor moves during the erase, making pos() unreliable immediately after. const oldPos = term.pos(); const length = term.currentLine.length; term.clearCurrentLine(); term.currentLine = newLine; term.write(newLine); if (preserveCursor) { term.write("\x1b[D".repeat(length - oldPos)); } }; // ── Output ───────────────────────────────────────────────────────────────── // Prints a line of text with three processing passes applied in order: // 1. URLs are detected and colorized as hyperlinks (disables wrapping for // long URLs since wrapping mid-URL would break clickability). // 2. Long lines are word-wrapped to fit the terminal width (max 76 cols). // 3. %command% tokens are replaced with colorized command names. term.stylePrint = (text, wrap = true) => { const urlRegex = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,24}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g; const urlMatches = text.matchAll(urlRegex); let allowWrapping = true; for (const match of urlMatches) { allowWrapping = match[0].length < 76; // don't wrap lines that contain long URLs text = text.replace(match[0], colorText(match[0], "hyperlink")); } if (allowWrapping && wrap) { text = _wordWrap(text, Math.min(term.cols, 76)); } // Replace %commandName% tokens with styled command names. const cmds = Object.keys(commands); for (const cmd of cmds) { const cmdMatches = text.matchAll(`%${cmd}%`); for (const match of cmdMatches) { text = text.replace(match[0], colorText(cmd, "command")); } } term.writeln(text); }; // Renders the preloaded ASCII art for id into the terminal. // Silently skipped on narrow terminals (< 40 cols). term.printArt = (id) => { if (term.cols >= 40) { const art = getArt(id); if (art) { term.writeln(`\r\n${art}\r\n`); } else { ensureASCIIArt(id); } } }; // Prints the Root Ventures ASCII logotype, or a plain-text fallback on // very narrow terminals. term.printLogoType = () => { term.writeln(term.cols >= 40 ? LOGO_TYPE : "[Root Ventures]\r\n"); }; // Opens a URL in a new tab (default) or navigates the current page. term.openURL = (url, newWindow = true) => { term.stylePrint(`Opening ${url}`); if (term._initialized) { if (newWindow) { window.open(url, "_blank"); } else { window.location.href = url; } } }; // Prints a URL as a styled hyperlink without opening it. term.displayURL = (url) => { term.stylePrint(colorText(url, "hyperlink")); }; // ── Animation Helpers ────────────────────────────────────────────────────── term.timer = (ms) => new Promise((res) => setTimeout(res, ms)); // Prints phrase followed by n dots at 1-second intervals. term.dottedPrint = async (phrase, n, newline = true) => { term.write(phrase); for (let i = 0; i < n; i++) { await term.delayPrint(".", 1000); } if (newline) { term.write("\r\n"); } }; // Renders an animated progress bar that fills over time t (ms). // Randomizes the fill speed to look more authentic. term.progressBar = async (t, msg) => { var r; if (msg) { term.write(msg); } term.write("\r\n["); for (let i = 0; i < term.cols / 2; i = i + 1) { r = Math.round((Math.random() * t) / 20); t = t - r; await term.delayPrint("█", r); } term.write("]\r\n"); }; term.delayPrint = async (str, t) => { await term.timer(t); term.write(str); }; term.delayStylePrint = async (str, t, wrap) => { await term.timer(t); term.stylePrint(str, wrap); }; // ── Command Dispatch ─────────────────────────────────────────────────────── // Parses and executes a command line string. Called both by the Enter handler // in terminal.js and internally by commands that redirect to other commands. term.command = (line) => { const parts = line.split(/\s+/); const cmd = parts[0].toLowerCase(); const args = parts.slice(1, parts.length); const fn = commands[cmd]; if (typeof fn === "undefined") { term.stylePrint(`Command not found: ${cmd}. Try 'help' to get started.`); } else { return fn(args); } }; term.parseCommandLine = (line) => { const trimmedLine = line.trim(); const parts = trimmedLine ? trimmedLine.split(/\s+/) : [""]; return { line: trimmedLine, cmd: (parts[0] || "").toLowerCase(), args: parts.slice(1), }; }; term.normalizeCommandForPreload = (cmd, args) => { switch (cmd) { case "man": case "woman": return { cmd: "tldr", args }; case "tail": case "less": case "head": case "more": return { cmd: "cat", args }; case "open": if (!args.length) { return { cmd, args }; } if ( (args[0].split(".")[0] == "test" && args[0].split(".")[1] == "htm") || args[0].split(".")[1] == "htm" || args.join(" ") == "the pod bay doors" ) { return { cmd, args }; } return { cmd: "cat", args }; default: return { cmd, args }; } }; term.preloadCommandAssets = async (line) => { const parsed = term.parseCommandLine(line); const normalized = term.normalizeCommandForPreload(parsed.cmd, parsed.args); const tasks = []; const artId = getASCIIArtIdForCommand(normalized.cmd, normalized.args); const preloadFile = getPreloadFileForCommand(normalized.cmd, normalized.args); if (artId) { tasks.push(ensureASCIIArt(artId)); } if (preloadFile) { tasks.push(ensureFileLoaded(preloadFile)); } if (tasks.length > 0) { await Promise.all(tasks); } }; term.executeCommandLine = async (line, options = {}) => { const settings = { addToHistory: true, manageBusy: true, promptAfter: true, showLeadingNewline: true, trackAnalytics: true, ...options, }; const parsed = term.parseCommandLine(line); let exitStatus; try { if (settings.manageBusy) { term.busy = true; } await term.preloadCommandAssets(parsed.line); if (settings.showLeadingNewline && parsed.cmd != "upgrade") { term.writeln(""); } if (parsed.line.length > 0) { if (settings.addToHistory) { term.history.push(parsed.line); } exitStatus = term.command(parsed.line); if (settings.trackAnalytics) { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "commandSent", command: parsed.cmd, args: parsed.args.join(" "), }); } } } catch (error) { console.error("Command preparation failed", error); term.stylePrint("Command failed to load required assets. Please try again."); } finally { if (settings.promptAfter && exitStatus != 1 && parsed.cmd != "upgrade") { term.prompt(); term.clearCurrentLine(true); } if (settings.manageBusy) { term.busy = false; } term.scrollToBottom(); } return exitStatus; }; // ── Lifecycle ────────────────────────────────────────────────────────────── // Called on window resize. xterm clears its buffer on resize, so we // reinitialize the terminal and replay the entire command history to restore // the visible output, then re-render the prompt at the bottom. term.resizeListener = () => { term._initialized = false; term.init(term.user, true); if (typeof preloadASCIIArt === "function") { window.scheduleIdleTask(() => preloadASCIIArt(), 1500); } term.runDeepLink(); for (const c of term.history) { term.prompt("\r\n", ` ${c}\r\n`); term.command(c); } term.prompt(); term.scrollToBottom(); term._initialized = true; }; // Resets the terminal to its initial state. If VERSION < 4, shows an upgrade // prompt instead of the welcome message. Announces open jobs if any exist. term.init = (user = "guest", preserveHistory = false) => { window.fitAddon.fit(); term.reset(); term.printLogoType(); if (term.VERSION == 3) { term.stylePrint( `\n${colorText("New version of Root Ventures detected.", "user")}` ); term.stylePrint( `Please upgrade your terminal with ${colorText("upgrade", "command")}.` ); } else { term.stylePrint( "Welcome to the Root Ventures terminal. Seeding bold engineers!" ); term.stylePrint( `Type ${colorText( "help", "command" )} to get started. Or type ${colorText( "exit", "command" )} for web version.`, false ); } if (Object.keys(jobs).length > 0) { term.stylePrint( `\r\nOpen jobs detected. Type ${colorText( "jobs", "command" )} for more info.`, false ); } term.user = user; if (!preserveHistory) { term.history = []; } term.focus(); }; // Runs the deep-link command parsed from the URL hash on page load. term.runDeepLink = () => { if (term.deepLink != "") { term.executeCommandLine(term.deepLink, { addToHistory: false, promptAfter: false, showLeadingNewline: false, trackAnalytics: false, }).catch((error) => { console.error("Deep link failed", error); }); } }; // ── Interactive Input ────────────────────────────────────────────────────── // Prompts the user for a single line of input, suspending the normal input // handler while waiting. Returns a Promise that resolves to: // - A trimmed string if the user pressed Enter (may be "" for optional fields) // - null if the user pressed Ctrl+C (cancelled) term.collectInput = (prompt, isOptional = false) => { return new Promise((resolve) => { term.locked = true; term.write(`\r\n${prompt}${isOptional ? ' (optional)' : ''}: `); let inputBuffer = ''; const inputHandler = term.onData((e) => { switch (e) { case '\r': // Enter — submit term.write('\r\n'); inputHandler.dispose(); term.locked = false; resolve(inputBuffer.trim()); break; case '\u0003': // Ctrl+C — cancel, resolves to null term.write('^C\r\n'); inputHandler.dispose(); term.locked = false; resolve(null); break; case '\u007F': // Backspace case '\u0008': // Ctrl+H if (inputBuffer.length > 0) { inputBuffer = inputBuffer.slice(0, -1); term.write('\b \b'); // erase character from display } break; case '\u0015': // Ctrl+U — clear entire input line while (inputBuffer.length > 0) { term.write('\b \b'); inputBuffer = inputBuffer.slice(0, -1); } break; case '\033[A': // Up arrow case '\033[B': // Down arrow case '\033[C': // Right arrow case '\033[D': // Left arrow // Ignore — cursor movement not supported in collectInput break; default: // Only accept printable ASCII characters if (e.length === 1 && e.charCodeAt(0) >= 32 && e.charCodeAt(0) < 127) { inputBuffer += e; term.write(e); } break; } }); }); }; }; // ── Helpers ────────────────────────────────────────────────────────────────── // Wraps str at word boundaries to fit within maxWidth characters per line. // Falls back to a hard break at maxWidth if no whitespace is found. // TODO: This doesn't work well at detecting existing newlines in the input. // https://stackoverflow.com/questions/14484787/wrap-text-in-javascript function _wordWrap(str, maxWidth) { const newLineStr = "\r\n"; let res = ""; while (str.length > maxWidth) { let found = false; // Scan backwards from maxWidth to find a whitespace break point. for (let i = maxWidth - 1; i >= 0; i--) { if (_testWhite(str.charAt(i))) { res = res + [str.slice(0, i), newLineStr].join(""); str = str.slice(i + 1); found = true; break; } } // No whitespace found — hard-break at maxWidth. if (!found) { res += [str.slice(0, maxWidth), newLineStr].join(""); str = str.slice(maxWidth); } } return res + str; } function _testWhite(x) { const white = /^\s$/; return white.test(x.charAt(0)); } ================================================ FILE: js/terminal.js ================================================ function runRootTerminal(term) { if (term._initialized) { return; } term.init(); term._initialized = true; term.locked = false; term.prompt(); term.runDeepLink(); let resizeQueued = false; window.addEventListener( "resize", () => { if (resizeQueued) { return; } resizeQueued = true; window.requestAnimationFrame(() => { resizeQueued = false; term.resizeListener(); }); }, { passive: true } ); term.onData((e) => { if (term._initialized && !term.locked && !term.busy) { switch (e) { case "\r": // Enter // Reset tab state term.tabIndex = 0; term.tabOptions = []; term.tabBase = ""; term.executeCommandLine(term.currentLine); break; case "\u0001": // Ctrl+A term.write("\x1b[D".repeat(term.pos())); break; case "\u0005": // Ctrl+E if (term.pos() < term.currentLine.length) { term.write("\x1b[C".repeat(term.currentLine.length - term.pos())); } break; case "\u0003": // Ctrl+C // Reset tab state term.tabIndex = 0; term.tabOptions = []; term.tabBase = ""; term.prompt(); term.clearCurrentLine(true); break; case "\u0008": // Ctrl+H case "\u007F": // Backspace (DEL) // Reset tab state term.tabIndex = 0; term.tabOptions = []; term.tabBase = ""; // Do not delete the prompt if (term.pos() > 0) { const newLine = term.currentLine.slice(0, term.pos() - 1) + term.currentLine.slice(term.pos()); term.setCurrentLine(newLine, true); } break; case "\033[A": // up // Reset tab state term.tabIndex = 0; term.tabOptions = []; term.tabBase = ""; var h = [...term.history].reverse(); if (term.historyCursor < h.length - 1) { term.historyCursor += 1; term.setCurrentLine(h[term.historyCursor], false); } break; case "\033[B": // down // Reset tab state term.tabIndex = 0; term.tabOptions = []; term.tabBase = ""; var h = [...term.history].reverse(); if (term.historyCursor > 0) { term.historyCursor -= 1; term.setCurrentLine(h[term.historyCursor], false); } else { term.clearCurrentLine(true); } break; case "\033[C": // right if (term.pos() < term.currentLine.length) { term.write("\x1b[C"); } break; case "\033[D": // left if (term.pos() > 0) { term.write("\x1b[D"); } break; case "\t": // tab const tabParts = term.currentLine.split(" "); const tabCmd = tabParts[0]; const tabRest = tabParts.slice(1).join(" "); // Check if we need to reset tab state (input changed) if (term.tabBase !== term.currentLine) { term.tabIndex = 0; term.tabOptions = []; term.tabBase = term.currentLine; // Get completions based on context if (tabParts.length === 1) { // Completing command term.tabOptions = Object.keys(commands) .filter((c) => c.startsWith(tabCmd)) .sort(); } else if ( [ "cat", "tail", "less", "head", "open", "mv", "cp", "chown", "chmod", "ls", ].includes(tabCmd) ) { term.tabOptions = _filesHere() .filter((f) => f.startsWith(tabRest)) .sort(); } else if (["whois", "finger", "groups"].includes(tabCmd)) { term.tabOptions = Object.keys(team) .filter((f) => f.startsWith(tabRest)) .sort(); } else if (["man", "woman", "tldr"].includes(tabCmd)) { term.tabOptions = Object.keys(portfolio) .filter((f) => f.startsWith(tabRest)) .sort(); } else if (["cd"].includes(tabCmd)) { term.tabOptions = _filesHere() .filter( (dir) => dir.startsWith(tabRest) && !_DIRS[term.cwd].includes(dir) ) .sort(); } } // Handle tab completion if (term.tabOptions.length === 0) { // No completions } else if (term.tabOptions.length === 1) { // Single match - complete it if (tabParts.length === 1) { // Check if it's already an exact match (like typing "ls" completely) if (tabCmd === term.tabOptions[0]) { // Exact match - just add a space term.setCurrentLine(`${term.tabOptions[0]} `); } else { // Partial match - complete it term.setCurrentLine(`${term.tabOptions[0]} `); } } else { term.setCurrentLine(`${tabCmd} ${term.tabOptions[0]}`); } term.tabBase = ""; term.tabIndex = 0; term.tabOptions = []; } else { // Multiple matches if (term.tabIndex === 0) { // First tab - show options term.writeln(`\r\n${term.tabOptions.join(" ")}`); term.prompt(); term.setCurrentLine(term.currentLine); term.tabIndex = 1; } else { // Cycling through options const option = term.tabOptions[(term.tabIndex - 1) % term.tabOptions.length]; if (tabParts.length === 1) { term.setCurrentLine(option); } else { term.setCurrentLine(`${tabCmd} ${option}`); } term.tabIndex++; term.tabBase = term.currentLine; // Update base to current selection } } break; default: // Print all other characters // Reset tab state on any other key term.tabIndex = 0; term.tabOptions = []; term.tabBase = ""; // Optimize: just write the character instead of redrawing entire line if (e.length === 1 && e.charCodeAt(0) >= 32) { const pos = term.pos(); const restOfLine = term.currentLine.slice(pos); term.currentLine = term.currentLine.slice(0, pos) + e + restOfLine; term.write(e); if (restOfLine.length > 0) { term.write(restOfLine); term.write("\x1b[D".repeat(restOfLine.length)); } } break; } term.scrollToBottom(); } }); } function colorText(text, color) { const colors = { command: "\x1b[1;35m", hyperlink: "\x1b[1;34m", user: "\x1b[1;33m", prompt: "\x1b[1;32m", bold: "\x1b[1;37m", }; return `${colors[color] || ""}${text}\x1b[0;38m`; } ================================================ FILE: netlify/functions/submit-application.js ================================================ exports.handler = async (event, context) => { // Only allow POST if (event.httpMethod !== 'POST') { return { statusCode: 405, body: JSON.stringify({ error: 'Method not allowed' }), }; } try { const data = JSON.parse(event.body); // Validate required fields if (!data.name || !data.email) { return { statusCode: 400, body: JSON.stringify({ error: 'Name and email are required' }), }; } // Forward to Attio webhook const attioWebhookUrl = process.env.ATTIO_WEBHOOK_URL; if (!attioWebhookUrl) { throw new Error('ATTIO_WEBHOOK_URL environment variable not set'); } const attioResponse = await fetch( attioWebhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(data), } ); if (!attioResponse.ok) { throw new Error(`Attio API error: ${attioResponse.status}`); } return { statusCode: 200, body: JSON.stringify({ success: true, message: 'Application submitted successfully' }), }; } catch (error) { console.error('Error submitting application:', error); return { statusCode: 500, body: JSON.stringify({ error: 'Failed to submit application', details: error.message }), }; } }; ================================================ FILE: netlify.toml ================================================ [build] publish = "." [functions] directory = "netlify/functions" ================================================ FILE: package.json ================================================ { "name": "rootvc-cli-website", "version": "0.1.0", "description": "Root Ventures' awesome website", "dependencies": { "@xterm/addon-fit": "^0.10.0", "@xterm/addon-web-links": "^0.11.0", "@xterm/xterm": "^5.5.0", "aalib.js": "^2.0.0", "ai": "^3.0.18", "netlify-cli": "^6.14.7" }, "license": "MIT", "repository": { "type": "git", "url": "git@github.com:rootvc/cli-website.git" }, "scripts": { "build": "node scripts/build-assets.js", "start": "netlify dev", "test": "vitest run", "test:watch": "vitest" }, "devDependencies": { "jsdom": "^29.0.2", "terser": "^5.46.1", "vitest": "^4.1.4" } } ================================================ FILE: scripts/build-assets.js ================================================ const fs = require("fs"); const path = require("path"); const { minify } = require("terser"); const rootDir = path.resolve(__dirname, ".."); const vendorScripts = [ { src: "node_modules/@xterm/xterm/lib/xterm.js", dest: "js/xterm.js", minify: true, }, { src: "node_modules/@xterm/addon-fit/lib/addon-fit.js", dest: "js/addon-fit.js", minify: true, }, { src: "node_modules/@xterm/addon-web-links/lib/addon-web-links.js", dest: "js/addon-web-links.js", minify: true, }, { src: "node_modules/aalib.js/dist/aalib.js", dest: "js/aalib.js", minify: true, }, ]; const appBundleSources = [ "js/terminal.js", "js/terminal-ext.js", "js/ascii-art.js", "config/help.js", "config/portfolio.js", "config/team.js", "config/commands.js", "config/fs.js", "config/jobs.js", "js/bootstrap.js", ]; async function minifyJavaScript(source, options = {}) { const result = await minify(source, { compress: { passes: 2, }, mangle: true, ...options, }); if (!result.code) { throw new Error("Terser did not return output"); } return result.code; } function readText(relativePath) { return fs.readFileSync(path.join(rootDir, relativePath), "utf8"); } function writeText(relativePath, content) { const absolutePath = path.join(rootDir, relativePath); fs.mkdirSync(path.dirname(absolutePath), { recursive: true }); fs.writeFileSync(absolutePath, content); } async function copyVendorScript(asset) { const source = readText(asset.src); let output = source; if (asset.minify) { const minified = await minifyJavaScript(source); if (minified.length < source.length) { output = minified; } } writeText(asset.dest, output); console.log(`${asset.dest}: ${source.length} -> ${output.length} bytes`); } async function buildAppBundle() { const source = appBundleSources .map((file) => `// ${file}\n${readText(file)}`) .join("\n;\n"); const output = await minifyJavaScript(source, { compress: { passes: 2, unsafe_arrows: false, }, }); writeText("js/app.bundle.js", output); console.log(`js/app.bundle.js: ${source.length} -> ${output.length} bytes`); } async function buildRickRollBundle() { const source = readText("js/rickroll.js"); const output = await minifyJavaScript(source); writeText("js/rickroll.min.js", output); console.log(`js/rickroll.min.js: ${source.length} -> ${output.length} bytes`); } function copyXtermCss() { const cssSource = path.join( rootDir, "node_modules/@xterm/xterm/css/xterm.css" ); const cssTarget = path.join(rootDir, "css/xterm.css"); fs.mkdirSync(path.dirname(cssTarget), { recursive: true }); fs.copyFileSync(cssSource, cssTarget); console.log("css/xterm.css copied"); } async function main() { copyXtermCss(); for (const asset of vendorScripts) { await copyVendorScript(asset); } await buildAppBundle(); await buildRickRollBundle(); } main().catch((error) => { console.error(error); process.exit(1); }); ================================================ FILE: tests/ascii-art.test.js ================================================ import { afterEach, describe, expect, it, vi } from "vitest"; import { createBrowserEnv } from "./helpers/browser-env"; let env; function loadAsciiArt(globals = {}) { env = createBrowserEnv({ html: `
`, globals: { ensureAALibLoaded: vi.fn(() => Promise.resolve()), portfolio: { esper: { name: "Esper" } }, scheduleIdleTask: vi.fn((task) => task()), team: { lee: { name: "Lee" } }, term: { cols: 80 }, ...globals, }, }); env.loadScripts(["js/ascii-art.js"]); return env.exportValues([ "ensureASCIIArt", "getArt", "getASCIIArtIdForCommand", "isASCIIArtLoaded", "preloadASCIIArt", ]); } afterEach(() => { if (env) { env.cleanup(); env = null; } }); describe("ascii-art", () => { it("maps commands to their preloadable ASCII art ids", () => { const { getASCIIArtIdForCommand } = loadAsciiArt(); expect(getASCIIArtIdForCommand("whois", ["root"])).toBe("rootvc-square"); expect(getASCIIArtIdForCommand("whois", ["lee"])).toBe("lee"); expect(getASCIIArtIdForCommand("tldr", ["esper"])).toBe("esper"); env.window.term.cols = 39; expect(getASCIIArtIdForCommand("whois", ["lee"])).toBeNull(); env.window.term.cols = 59; expect(getASCIIArtIdForCommand("tldr", ["esper"])).toBeNull(); }); it("deduplicates concurrent art loads and marks the art as loaded", async () => { const { ensureASCIIArt, getArt, isASCIIArtLoaded } = loadAsciiArt({ term: { cols: 30 }, }); const first = ensureASCIIArt("lee"); const second = ensureASCIIArt("lee"); expect(first).toBe(second); await Promise.all([first, second]); expect(env.window.ensureAALibLoaded).toHaveBeenCalledTimes(1); expect(isASCIIArtLoaded("lee")).toBe(true); expect(getArt("lee")).toContain("images/lee.png"); }); it("preloads root, team, and portfolio art in idle batches", async () => { const { preloadASCIIArt, isASCIIArtLoaded } = loadAsciiArt({ term: { cols: 30 }, }); await preloadASCIIArt(); expect(isASCIIArtLoaded("rootvc-square")).toBe(true); expect(isASCIIArtLoaded("lee")).toBe(true); expect(isASCIIArtLoaded("esper")).toBe(true); expect(env.window.scheduleIdleTask).toHaveBeenCalled(); }); }); ================================================ FILE: tests/bootstrap.test.js ================================================ import { afterEach, describe, expect, it, vi } from "vitest"; import { createBrowserEnv } from "./helpers/browser-env"; let env; function loadBootstrap(overrides = {}) { const term = { loadAddon: vi.fn(), open: vi.fn(), }; const fitAddon = { fit: vi.fn() }; const webLinksAddon = { open: vi.fn() }; const preloadCommandAssets = vi.fn(() => Promise.resolve()); const extend = vi.fn((instance) => { instance.deepLink = "whois lee"; instance.preloadCommandAssets = preloadCommandAssets; }); const runRootTerminal = vi.fn(); const preloadASCIIArt = vi.fn(); const preloadFiles = vi.fn(); const idleCalls = []; const requestIdleCallback = vi.fn((task, options) => { idleCalls.push({ options, task }); }); const Terminal = vi.fn(function Terminal() { return term; }); const FitAddonCtor = vi.fn(function FitAddon() { return fitAddon; }); const WebLinksAddonCtor = vi.fn(function WebLinksAddon() { return webLinksAddon; }); env = createBrowserEnv({ html: `
`, url: "https://www.root.vc/#whois-lee", globals: { FitAddon: { FitAddon: FitAddonCtor }, Terminal, WebLinksAddon: { WebLinksAddon: WebLinksAddonCtor }, extend, preloadASCIIArt, preloadFiles, requestIdleCallback, runRootTerminal, ...overrides, }, }); env.loadScripts(["js/bootstrap.js"]); return { extend, fitAddon, idleCalls, preloadASCIIArt, preloadCommandAssets, preloadFiles, requestIdleCallback, runRootTerminal, term, Terminal, webLinksAddon, }; } afterEach(() => { if (env) { env.cleanup(); env = null; } }); describe("bootstrap", () => { it("boots the terminal and preloads deep-link assets before idle work", async () => { const state = loadBootstrap(); await env.window.deepLinkAssetPromise; expect(state.term.open).toHaveBeenCalledWith( env.document.getElementById("terminal") ); expect(state.term.loadAddon).toHaveBeenNthCalledWith(1, state.fitAddon); expect(state.term.loadAddon).toHaveBeenNthCalledWith( 2, state.webLinksAddon ); expect(state.extend).toHaveBeenCalledWith(state.term); expect(state.preloadCommandAssets).toHaveBeenCalledWith("whois lee"); expect(state.runRootTerminal).toHaveBeenCalledWith(state.term); expect(state.idleCalls).toHaveLength(1); expect(state.idleCalls[0].options).toEqual({ timeout: 1500 }); state.idleCalls[0].task(); expect(state.preloadASCIIArt).toHaveBeenCalledTimes(1); expect(state.preloadFiles).toHaveBeenCalledTimes(1); }); it("deduplicates optional script loading for aalib and rickroll", async () => { const state = loadBootstrap(); const originalAppendChild = env.document.head.appendChild.bind( env.document.head ); const appendedScripts = []; vi.spyOn(env.document.head, "appendChild").mockImplementation((node) => { appendedScripts.push(node); return originalAppendChild(node); }); const aalibFirst = env.window.ensureAALibLoaded(); const aalibSecond = env.window.ensureAALibLoaded(); expect(aalibFirst).toBe(aalibSecond); expect(appendedScripts).toHaveLength(1); expect(appendedScripts[0].src).toBe("https://www.root.vc/js/aalib.js"); appendedScripts[0].onload(); await aalibFirst; const rickrollPromise = env.window.ensureRickRollLoaded(); expect(appendedScripts).toHaveLength(2); expect(appendedScripts[1].src).toBe( "https://www.root.vc/js/rickroll.min.js" ); appendedScripts[1].onload(); await rickrollPromise; }); }); ================================================ FILE: tests/fs.test.js ================================================ import { afterEach, describe, expect, it, vi } from "vitest"; import { createBrowserEnv } from "./helpers/browser-env"; let env; function loadFs(globals = {}) { env = createBrowserEnv({ html: `
`, globals: { fetch: vi.fn(async () => ({ text: async () => "remote body", })), team: { lee: { name: "Lee" } }, ...globals, }, }); env.loadScripts(["config/fs.js"]); return env.exportValues([ "_insertFileToDOM", "_loadFile", "ensureFileLoaded", "getFileContents", "getPreloadFileForCommand", ]); } afterEach(() => { if (env) { env.cleanup(); env = null; } }); describe("virtual fs", () => { it("deduplicates concurrent remote file loads", async () => { const { _loadFile } = loadFs(); const first = _loadFile("README.md"); const second = _loadFile("README.md"); expect(first).toBe(second); await Promise.all([first, second]); expect(env.window.fetch).toHaveBeenCalledTimes(1); expect(env.document.getElementById("README.md")).not.toBeNull(); }); it("loads local files synchronously without fetching", async () => { const { ensureFileLoaded, getFileContents } = loadFs(); await ensureFileLoaded("id_rsa"); expect(env.window.fetch).not.toHaveBeenCalled(); expect(getFileContents("id_rsa")).toBe("Nice try!"); }); it("reuses existing DOM nodes when inserting file contents", () => { const { _insertFileToDOM } = loadFs(); _insertFileToDOM("README.md", "first"); _insertFileToDOM("README.md", "second"); expect(env.document.querySelectorAll("#README\\.md")).toHaveLength(1); expect(env.document.getElementById("README.md").innerText).toBe("second"); }); it("preloads only remote files for cat and grep", () => { const { getPreloadFileForCommand } = loadFs(); expect(getPreloadFileForCommand("cat", ["README.md"])).toBe("README.md"); expect(getPreloadFileForCommand("grep", ["welcome.htm"])).toBe( "welcome.htm" ); expect(getPreloadFileForCommand("cat", ["id_rsa"])).toBeNull(); expect(getPreloadFileForCommand("open", ["README.md"])).toBeNull(); }); it("returns a loading message for remote files that have not landed yet", () => { const { getFileContents } = loadFs(); expect(getFileContents("README.md")).toBe( "Loading README.md. Try again in a moment." ); expect(env.window.fetch).toHaveBeenCalledTimes(1); }); }); ================================================ FILE: tests/helpers/browser-env.js ================================================ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { JSDOM } from "jsdom"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); export const REPO_ROOT = path.resolve(__dirname, "..", ".."); export function inlineScript(source, label = "inline-script.js") { return { source, label }; } export function createBrowserEnv(options = {}) { const { url = "https://www.root.vc/", html = "", globals = {}, } = options; const dom = new JSDOM(html, { pretendToBeVisual: true, runScripts: "dangerously", url, }); const { window } = dom; window.console = console; Object.defineProperty(window.HTMLElement.prototype, "innerText", { configurable: true, get() { return this.textContent || ""; }, set(value) { this.textContent = value; }, }); for (const [key, value] of Object.entries(globals)) { window[key] = value; } function loadScript(script) { let source; let label; if (typeof script === "string") { label = script; source = fs.readFileSync(path.join(REPO_ROOT, script), "utf8"); } else { source = script.source; label = script.label || "inline-script.js"; } const element = window.document.createElement("script"); element.textContent = `${source}\n//# sourceURL=${label}`; window.document.head.appendChild(element); return element; } function loadScripts(scripts) { scripts.forEach((script) => loadScript(script)); return window; } function exportValues(names, target = "__testExports") { const entries = names .map( (name) => `${JSON.stringify(name)}: typeof ${name} === "undefined" ? undefined : ${name}` ) .join(",\n"); loadScript( inlineScript(`window.${target} = {${entries}};`, `${target}.js`) ); return window[target]; } function cleanup() { window.close(); } return { cleanup, document: window.document, dom, exportValues, loadScript, loadScripts, window, }; } ================================================ FILE: tests/terminal-ext.test.js ================================================ import { afterEach, describe, expect, it, vi } from "vitest"; import { createBrowserEnv } from "./helpers/browser-env"; let env; function loadTerminalExt(globals = {}) { env = createBrowserEnv({ globals: { LOGO_TYPE: "ROOT", colorText: (text) => text, commands: { help: vi.fn() }, ensureASCIIArt: vi.fn(() => Promise.resolve()), ensureFileLoaded: vi.fn(() => Promise.resolve()), fitAddon: { fit: vi.fn() }, getASCIIArtIdForCommand: vi.fn(() => null), getArt: vi.fn(() => ""), getPreloadFileForCommand: vi.fn(() => null), jobs: {}, preloadASCIIArt: vi.fn(() => Promise.resolve()), scheduleIdleTask: vi.fn((task) => task()), ...globals, }, }); env.loadScripts(["js/terminal-ext.js"]); return env.exportValues(["extend"]); } function createTerm(overrides = {}) { const term = { VERSION: 4, _core: { buffer: { x: 0 } }, cols: 80, command: vi.fn(() => 0), currentLine: "", focus: vi.fn(), history: [], loadAddon: vi.fn(), open: vi.fn(), reset: vi.fn(), scrollToBottom: vi.fn(), write: vi.fn(), writeln: vi.fn(), }; return Object.assign(term, overrides); } afterEach(() => { if (env) { env.cleanup(); env = null; } }); describe("terminal-ext", () => { it("normalizes preload-only aliases before resolving assets", async () => { const { extend } = loadTerminalExt({ getASCIIArtIdForCommand: vi.fn(() => "lee"), getPreloadFileForCommand: vi.fn(() => "README.md"), }); const term = createTerm(); extend(term); await term.preloadCommandAssets("open README.md"); expect(term.normalizeCommandForPreload("open", ["README.md"])).toEqual({ args: ["README.md"], cmd: "cat", }); expect(term.normalizeCommandForPreload("open", ["welcome.htm"])).toEqual({ args: ["welcome.htm"], cmd: "open", }); expect(env.window.getASCIIArtIdForCommand).toHaveBeenCalledWith("cat", [ "README.md", ]); expect(env.window.getPreloadFileForCommand).toHaveBeenCalledWith("cat", [ "README.md", ]); expect(env.window.ensureASCIIArt).toHaveBeenCalledWith("lee"); expect(env.window.ensureFileLoaded).toHaveBeenCalledWith("README.md"); }); it("waits for asset preloading before dispatching a command", async () => { const { extend } = loadTerminalExt(); const term = createTerm(); const order = []; extend(term); term.preloadCommandAssets = vi.fn(async () => { order.push("preload"); }); term.command = vi.fn(() => { order.push("command"); return 0; }); await term.executeCommandLine("help"); expect(order).toEqual(["preload", "command"]); expect(term.history).toEqual(["help"]); expect(env.window.dataLayer).toEqual([ { args: "", command: "help", event: "commandSent" }, ]); expect(term.busy).toBe(false); expect(term.command).toHaveBeenCalledWith("help"); }); it("routes deep links through executeCommandLine without double prompts", () => { const { extend } = loadTerminalExt(); const term = createTerm(); extend(term); term.deepLink = "whois lee"; term.executeCommandLine = vi.fn(() => Promise.resolve()); term.runDeepLink(); expect(term.executeCommandLine).toHaveBeenCalledWith("whois lee", { addToHistory: false, promptAfter: false, showLeadingNewline: false, trackAnalytics: false, }); }); it("prints cached art immediately and falls back to loading on cache miss", () => { const { extend } = loadTerminalExt({ getArt: vi.fn() .mockReturnValueOnce("ASCII") .mockReturnValueOnce(""), }); const term = createTerm(); extend(term); term.printArt("lee"); term.printArt("rootvc-square"); expect(term.writeln).toHaveBeenCalledWith("\r\nASCII\r\n"); expect(env.window.ensureASCIIArt).toHaveBeenCalledWith("rootvc-square"); }); }); ================================================ FILE: tests/terminal.test.js ================================================ import { afterEach, describe, expect, it, vi } from "vitest"; import { createBrowserEnv } from "./helpers/browser-env"; const baseGlobals = { _DIRS: { "~": [] }, _filesHere: () => [], commands: { help: () => {} }, portfolio: {}, team: {}, }; let env; function loadTerminalScript(globals = {}) { env = createBrowserEnv({ globals: { ...baseGlobals, ...globals, }, }); env.loadScripts(["js/terminal.js"]); return env.exportValues(["runRootTerminal"]); } function createTerm(overrides = {}) { const term = { _initialized: false, busy: false, clearCurrentLine: vi.fn(), currentLine: "", executeCommandLine: vi.fn(), history: [], historyCursor: -1, init: vi.fn(), locked: false, pos: vi.fn(() => 0), prompt: vi.fn(), resizeListener: vi.fn(), runDeepLink: vi.fn(), scrollToBottom: vi.fn(), setCurrentLine: vi.fn((line) => { term.currentLine = line; }), tabBase: "", tabIndex: 0, tabOptions: [], write: vi.fn(), }; term.onData = vi.fn((handler) => { term._onData = handler; return { dispose: vi.fn() }; }); return Object.assign(term, overrides); } afterEach(() => { if (env) { env.cleanup(); env = null; } }); describe("runRootTerminal", () => { it("initializes once and prompts immediately", () => { const { runRootTerminal } = loadTerminalScript(); const term = createTerm(); runRootTerminal(term); expect(term.init).toHaveBeenCalledTimes(1); expect(term.prompt).toHaveBeenCalledTimes(1); expect(term.runDeepLink).toHaveBeenCalledTimes(1); expect(term.onData).toHaveBeenCalledTimes(1); expect(term._initialized).toBe(true); }); it("sends the current line through executeCommandLine on Enter", () => { const { runRootTerminal } = loadTerminalScript(); const term = createTerm({ currentLine: "help", tabBase: "hel", tabIndex: 2, tabOptions: ["help"], }); runRootTerminal(term); term._onData("\r"); expect(term.executeCommandLine).toHaveBeenCalledWith("help"); expect(term.tabBase).toBe(""); expect(term.tabIndex).toBe(0); expect(term.tabOptions).toEqual([]); expect(term.scrollToBottom).toHaveBeenCalled(); }); it("debounces resize handling with requestAnimationFrame", () => { const rafCallbacks = []; const requestAnimationFrame = vi.fn((callback) => { rafCallbacks.push(callback); return rafCallbacks.length; }); const { runRootTerminal } = loadTerminalScript({ requestAnimationFrame }); const term = createTerm(); runRootTerminal(term); env.window.dispatchEvent(new env.window.Event("resize")); env.window.dispatchEvent(new env.window.Event("resize")); expect(requestAnimationFrame).toHaveBeenCalledTimes(1); expect(term.resizeListener).not.toHaveBeenCalled(); rafCallbacks[0](); expect(term.resizeListener).toHaveBeenCalledTimes(1); }); it("does nothing when the terminal is already initialized", () => { const { runRootTerminal } = loadTerminalScript(); const term = createTerm({ _initialized: true }); runRootTerminal(term); expect(term.init).not.toHaveBeenCalled(); expect(term.prompt).not.toHaveBeenCalled(); expect(term.onData).not.toHaveBeenCalled(); }); }); ================================================ FILE: welcome.htm ================================================ Root Ventures

< Back




R o o t   V e n t u r e s

Seeding bold engineers

Seed stage venture capital firm investing in hard tech.

San Francisco, CA


About Us



Portfolio

     

Team