[
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Package and push to registry repo\non:\n  push:\n    tags: [ v* ]\n\nenv:\n  # the repository to which to push the release version\n  # usually a fork of typst/packages (https://github.com/typst/packages/)\n  # that you have push privileges to\n  REGISTRY_REPO: matchy233/packages\n  # the path within that repo where the \"<name>/<version>\" directory should be put\n  # for the Typst package registry, keep this as is\n  PATH_PREFIX: packages/preview\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Probe runner package cache\n        uses: awalsh128/cache-apt-pkgs-action@v1\n        with:\n          packages: cargo\n          version: 1.0\n\n      - name: Install just from crates.io\n        uses: baptiste0928/cargo-install@v3\n        with:\n          crate: just\n\n      - name: Setup typst\n        uses: typst-community/setup-typst@v3\n        with:\n          typst-version: latest\n\n      - name: Determine and check package metadata\n        run: |\n          . scripts/setup\n          echo \"PKG_NAME=${PKG_PREFIX}\" >> \"${GITHUB_ENV}\"\n          echo \"PKG_VERSION=${VERSION}\" >> \"${GITHUB_ENV}\"\n\n          if [[ \"${GITHUB_REF_NAME}\" != \"v${VERSION}\" ]]; then\n            echo \"package version ${VERSION} does not match release tag ${GITHUB_REF_NAME}\" >&2\n            exit 1\n          fi\n\n      - name: Build package\n        run: |\n          just doc\n          just package out\n\n      - name: Checkout package registry\n        uses: actions/checkout@v4\n        with:\n          repository: ${{ env.REGISTRY_REPO }}\n          token: ${{ secrets.REGISTRY_TOKEN }}\n          path: typst-packages\n\n      - name: Release package\n        run: |\n          mkdir -p \"typst-packages/${{ env.PATH_PREFIX }}/$PKG_NAME\"\n          mv \"out/${PKG_NAME}/${PKG_VERSION}\" \"typst-packages/${{ env.PATH_PREFIX }}/${PKG_NAME}\"\n          rmdir \"out/${PKG_NAME}\"\n          rmdir out\n\n          GIT_USER_NAME=\"$(git log -1 --pretty=format:'%an')\"\n          GIT_USER_EMAIL=\"$(git log -1 --pretty=format:'%ae')\"\n\n          cd typst-packages\n          git config user.name \"${GIT_USER_NAME}\"\n          git config user.email \"${GIT_USER_EMAIL}\"\n          git checkout -b \"${PKG_NAME}-${PKG_VERSION}\"\n          git add .\n          git commit -m \"${PKG_NAME}:${PKG_VERSION}\"\n          git push --set-upstream origin \"${PKG_NAME}-${PKG_VERSION}\"\n"
  },
  {
    "path": ".github/workflows/tests.yml",
    "content": "name: Tests\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  tests:\n    strategy:\n      matrix:\n        # add any other Typst versions that your package should support\n        typst-version: [\"0.11\"]\n        # the docs don't need to build with all versions supported by the package;\n        # the latest one is enough\n        include:\n          - typst-version: \"0.11\"\n            doc: 1\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Probe runner package cache\n        uses: awalsh128/cache-apt-pkgs-action@v1\n        with:\n          packages: imagemagick cargo\n          version: 1.0\n\n      - name: Install oxipng from crates.io\n        uses: baptiste0928/cargo-install@v3\n        with:\n          crate: oxipng\n\n      - name: Install just from crates.io\n        uses: baptiste0928/cargo-install@v3\n        with:\n          crate: just\n\n      - name: Install typst-test from github\n        uses: baptiste0928/cargo-install@v3\n        with:\n          crate: typst-test\n          git: https://github.com/tingerrr/typst-test.git\n          tag: ci-semi-stable\n\n      - name: Setup typst\n        id: setup-typst\n        uses: typst-community/setup-typst@v3\n        with:\n          typst-version: ${{ matrix.typst-version }}\n\n      - name: Run test suite\n        run: just test\n\n      - name: Archive diffs\n        uses: actions/upload-artifact@v4\n        if: always()\n        with:\n          name: typst-${{ steps.setup-typst.outputs.typst-version }}-diffs\n          path: |\n            tests/**/diff/*.png\n            tests/**/out/*.png\n            tests/**/ref/*.png\n          retention-days: 5\n\n      - name: Build docs\n        if: ${{ matrix.doc }}\n        run: just doc\n"
  },
  {
    "path": ".typstignore",
    "content": "# this is not a \"standard\" ignore file, it's specific to this template's `scripts/package` script\n# list any files here that should not be uploaded to Universe when releasing this package\n\n# if you are used to ignore files, be aware that .typstignore is a bit more limited:\n# - only this file is used; .typstignore files in subdirectories are not considered\n# - patterns must match file/directory names from the beginning: `x.typ` will not match `src/x.typ`\n# - `*` in patterns works, but also matches directory separators: `*.typ` _will_ match `src/x.typ`\n# .git and .typstignore are excluded automatically\n\n.github\nscripts\ntests\nJustfile\n# PDF manuals should be included so that they can be linked, but not their sources\ndocs/*\n!docs/*.pdf\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# [v1.1](https://github.com/matchy233/typst-chi-cv-template/releases/tag/1.1)\n\n## Added\n\n- Impelement `#personal-info` function, which accepts the following inputs and generates a line of personal info with icon separated by vertical line symbols accordingly\n  - `email`, `phone`, `github`,` linkedin` and `website`, with predefined styles\n  - `<name of icon>: <link>`, for example: `#personal-info(x-twitter: \"https://x.com/iskyzh\")` will generate an icon link like the figure below:\n  ![image](https://github.com/user-attachments/assets/d3698962-10b2-4b03-835d-02a11ebc79f1)\n  - a dictionary with keys: link, text, icon, solid, which will generate an icon link accordingly\n- Make page margin and padding around cventry blocks adjustable\n- Also alllow adjusting cventry block padding individually\n\n<!-- ## Removed -->\n\n## Changed\n\n- Use `typst-fontawesome` package\n- Make second level heading font size larger (12pt $\\to$ 14pt)\n\n<!-- ## Migration Guide from v0.1.X -->\n\n---\n\n# [v1.0.0](https://github.com/matchy233/typst-chi-cv-template/releases/tag/v1.0)\nInitial Release\n"
  },
  {
    "path": "Justfile",
    "content": "root := justfile_directory()\n\nexport TYPST_ROOT := root\n\n[private]\ndefault:\n\t@just --list --unsorted\n\n# generate manual\ndoc:\n\ttypst compile docs/manual.typ docs/manual.pdf\n\n# run test suite\ntest *args:\n\ttypst-test run {{ args }}\n\n# update test cases\nupdate *args:\n\ttypst-test update {{ args }}\n\n# package the library into the specified destination folder\npackage target:\n  ./scripts/package \"{{target}}\"\n\n# install the library with the \"@local\" prefix\ninstall: (package \"@local\")\n\n# install the library with the \"@preview\" prefix (for pre-release testing)\ninstall-preview: (package \"@preview\")\n\n[private]\nremove target:\n  ./scripts/uninstall \"{{target}}\"\n\n# uninstalls the library from the \"@local\" prefix\nuninstall: (remove \"@local\")\n\n# uninstalls the library from the \"@preview\" prefix (for pre-release testing)\nuninstall-preview: (remove \"@preview\")\n\n# run ci suite\nci: test doc\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2023 Matchy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Chi CV template, but Typst\n\nRip-off of [rip-off of skyzh's CV](https://github.com/matchy233/chi-cv-template), using [Typst](https://github.com/typst/typst).\n\nPRs and suggestions are welcome.\n\n~~⚠️ The implementation of `fontawesome.typ` is far from perfect and **may** conflict with existing `typst` built-in commands! Please report any issues you find.~~\n\n**[🔮New! (2024/10/09)]** I switched to use [`typst-fontawesome`](https://github.com/duskmoon314/typst-fontawesome)\n\n~~`fonts/FontAwesome6.otf` is generated by merging `Font Awesome 6 Free-Solid-900.otf` and `Font Awesome 6 Brands-Regular-400.otf` using [fontforge](https://fontforge.org/en-US/). Original Font Awesome fonts were downloaded from [here (Desktop version)](https://fontawesome.com/download) (6.0.4 as of 2023/04/01).~~\n\n**[🔮New! (2024/10/09)]** As the template is now dependent on `typst-fontawesome`, I decided to provide the original Font Awesome fonts instead of the merged one.\n\n## Sample Output\n\n<p align=\"center\">\n  <img src=\"resume-0.png\" width=\"45%\" alt=\"Page 1 of Chi's CV\">\n  <img src=\"resume-1.png\" width=\"45%\" alt=\"Page 2 of Chi's CV\">\n</p>\n\n[PDF file](resume.pdf)\n\n## Getting Started\n\n### Using Typst web app\n\n**[🚧 WIP (2024/10/09)]** There is plan for releasing the template to [Typst universe](https://typst.app/universe/). Stay tuned!\n\nUpload `chicv.typ`, `resume.typ` and `fonts/*` to [Typst](https://typst.app/), and then you can edit the CV.\n\n### Locally\n\nAssume that you have installed `typst` cli already and it's in your `$PATH`.\n\n```bash\ngit clone https://github.com/matchy233/typst-chi-cv-template.git\ncd typst-chi-cv-template\ntypst compile --font-path ./fonts ./template/resume.typ resume.pdf\n```\n\n## Usage\n\n```typst\n#import \"@preview/chicv-ripoff:1.0.1\": *\n\n// Customize the page margin and cventry paragraph padding\n// It's the same as #set page(...)\n#show: chicv.with(\n  margin: (x: 1cm, top: 1.5cm, bottom: 2cm),\n  par-padding: (left: 0pt, right: 0pt),\n)\n\n// Chi's name\n= Chi Zhang\n\n// Display the input values in one line separated by vertical bars, preceded by a Font Awesome icon\n#personal-info(\n  // email, phone, github, website, linkedin have pre-defined styles\n  email: \"iskyzh@gmail.com\",\n  phone: \"+1 (145) 141-919\",\n  github: \"https://github.com/skyzh\",\n  website: \"https://skyzh.dev\",\n  linkedin: \"https://www.linkedin.com/in/alex-chi-skyzh/\",\n  // It is also possible to feed customized values using:\n  // --> Format 1: <icon-name>: <link>\n  x-twitter: \"https://twitter.com/iskyzh\",\n  // --> Format 2: a dictionary like below\n  (link: \"https://typst.app/\", text: \"Typst\", icon: \"t\", solid: true),\n)\n\n== Education\n\n// by default, #cventry will bold top-left text\n#cventry(\n  tl: \"Carnegie Mellon University\",\n  // #dates(from: xxx, to: xxx) generates a date range, \"to\" is optional\n  tr: dates(from: \"2022/08\", to: \"2023/12\"),\n  bl: \"Master of Science in Computer Science, GPA 4.10/4.33\",\n  br: \"Pittsburgh, PA, USA\"\n)[\n  - Teaching Assistant for 15-445/645 Database Systems (Fall 2022, Spring 2023, Fall 2023)\n  - Courses: Distributed Systems, Compiler Design, Advanced Database Systems, Deep Learning Systems, etc.\n]\n\n// ...\n// omitted\n// ...\n\n== Work Experience\n\n// but you can override the default bold style by passing content blocks\n#cventry(\n  tl: [#link(\"https://neon.tech\")[*Neon*]],\n  tr: dates(from: \"2024/02\"),\n  bl: [Systems Software Engineer],\n  br: [Remote / Pittsburgh, PA, USA],\n  // you can also override the default padding of content blocks\n  padding: (bottom: -5pt)\n)[]\n\n#cventry(\n  tl: [_... and also_],\n  tr: dates(from: \"2023/05\", to: \"2023/08\"),\n  bl: [Software Engineer Intern],\n  br: [Remote / Pittsburgh, PA, USA],\n)[\n // content omitted\n]\n\n// The template also provides #iconlink and #githublink (a shorthand for #iconlink(icon: \"github\", text: ..., ...))\n#iconlink(\"https://github.com/tikv/tikv/issues/9747\", text: \"TiKV\", icon: \"heart\")\n#githublink(\"https://github.com/tikv\", text: \"tikv\")\n\n```\n"
  },
  {
    "path": "docs/manual.typ",
    "content": ""
  },
  {
    "path": "scripts/package",
    "content": "#!/usr/bin/env bash\nset -eu\n\n# adapted from https://github.com/johannes-wolf/cetz/blob/35c0868378cea5ad323cc0d9c2f76de8ed9ba5bd/scripts/package\n# licensed under Apache License 2.0\n\n. \"$(dirname \"${BASH_SOURCE[0]}\")/setup\"\n\nif (( $# < 1 )) || [[ \"${1:-}\" == \"help\" ]]; then\n  echo \"package TARGET\"\n  echo \"\"\n  echo \"Packages all relevant files into a directory named '<name>/<version>'\"\n  echo \"at TARGET. If TARGET is set to @local or @preview, the local Typst package\"\n  echo \"directory will be used so that the package gets installed for local use.\"\n  echo \"The name and version are read from 'typst.toml' in the project root.\"\n  echo \"\"\n  echo \"Local package prefix: $DATA_DIR/typst/package/local\"\n  echo \"Local preview package prefix: $DATA_DIR/typst/package/preview\"\n  exit 1\nfi\n\nTARGET=\"$(resolve-target \"${1:?Missing target path, @local or @preview}\")\"\necho \"Install dir: $TARGET\"\n\n# ignore rules\nreadarray -t ignores < <(grep -v '^#' .typstignore | grep '[^[:blank:]]')\n\n# recursively print all files that are not excluded via .typstignore\nfunction enumerate {\n\tlocal root=\"$1\"\n\tif [[ -f \"$root\" ]]; then\n\t\techo \"$root\"\n\telse\n\t\tlocal files\n\t\treadarray -t files < <(find \"$root\" \\\n      -mindepth 1 -maxdepth 1 \\\n      -not -name .git \\\n      -not -name .typstignore)\n\t\t# declare -p files >&2\n\n\t\tlocal f\n\t\tfor f in \"${files[@]}\"; do\n\t\t\tlocal include\n\t\t\tinclude=1\n\n\t\t\tlocal ignore\n\t\t\tfor ignore in \"${ignores[@]}\"; do\n\t\t\t\tif [[ \"$ignore\" =~ ^! ]]; then\n\t\t\t\t\tignore=\"${ignore:1}\"\n\t\t\t\t\tif [[ \"$f\" == ./$ignore ]]; then\n\t\t\t\t\t\t# echo \"\\\"$f\\\" matched \\\"!$ignore\\\"\" >&2\n\t\t\t\t\t\tinclude=1\n\t\t\t\t\tfi\n\t\t\t\telif [[ \"$f\" == ./$ignore ]]; then\n\t\t\t\t\t# echo \"\\\"$f\\\" matched \\\"$ignore\\\"\" >&2\n\t\t\t\t\tinclude=0\n\t\t\t\tfi\n\t\t\tdone\n\t\t\tif [[ \"$include\" == 1 ]]; then\n\t\t\t\tenumerate \"$f\"\n\t\t\tfi\n\t\tdone\n\tfi\n}\n\n# List of all files that get packaged\nreadarray -t files < <(enumerate \".\")\n# declare -p files >&2\n\nTMP=\"$(mktemp -d)\"\n\nfor f in \"${files[@]}\"; do\n  mkdir -p \"$TMP/$(dirname \"$f\")\" 2>/dev/null\n  cp -r \"$ROOT/$f\" \"$TMP/$f\"\ndone\n\nTARGET=\"${TARGET:?}/${PKG_PREFIX:?}/${VERSION:?}\"\necho \"Packaged to: $TARGET\"\nif rm -r \"${TARGET:?}\" 2>/dev/null; then\n  echo \"Overwriting existing version.\"\nfi\nmkdir -p \"$TARGET\"\n\n# include hidden files by setting dotglob\nshopt -s dotglob\nmv \"$TMP\"/* \"$TARGET\"\n"
  },
  {
    "path": "scripts/setup",
    "content": "# source this script to prepare some common environment variables\n\n# adapted from https://github.com/johannes-wolf/cetz/blob/35c0868378cea5ad323cc0d9c2f76de8ed9ba5bd/scripts/package\n# licensed under Apache License 2.0\n\n# Local package directories per platform\nif [[ \"$OSTYPE\" == \"linux\"* ]]; then\n  DATA_DIR=\"${XDG_DATA_HOME:-$HOME/.local/share}\"\nelif [[ \"$OSTYPE\" == \"darwin\"* ]]; then\n  DATA_DIR=\"$HOME/Library/Application Support\"\nelse\n  DATA_DIR=\"${APPDATA}\"\nfi\n\nfunction read-toml() {\n  local file=\"$1\"\n  local key=\"$2\"\n  # Read a key value pair in the format: <key> = \"<value>\"\n  # stripping surrounding quotes.\n  perl -lne \"print \\\"\\$1\\\" if /^${key}\\\\s*=\\\\s*\\\"(.*)\\\"/\" < \"$file\"\n}\n\nROOT=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\"; pwd -P)/..\" # macOS has no realpath\nPKG_PREFIX=\"$(read-toml \"$ROOT/typst.toml\" \"name\")\"\nVERSION=\"$(read-toml \"$ROOT/typst.toml\" \"version\")\"\n\nfunction resolve-target() {\n  local target=\"$1\"\n\n\tif [[ \"$target\" == \"@local\" ]]; then\n\t\techo \"${DATA_DIR}/typst/packages/local\"\n\telif [[ \"$target\" == \"@preview\" ]]; then\n\t\techo \"${DATA_DIR}/typst/packages/preview\"\n\telse\n\t\techo \"$target\"\n\tfi\n}\n"
  },
  {
    "path": "scripts/uninstall",
    "content": "#!/usr/bin/env bash\nset -eu\n\n# adapted from https://github.com/johannes-wolf/cetz/blob/35c0868378cea5ad323cc0d9c2f76de8ed9ba5bd/scripts/package\n# licensed under Apache License 2.0\n\n. \"$(dirname \"${BASH_SOURCE[0]}\")/setup\"\n\nif (( $# < 1 )) || [[ \"${1:-}\" == \"help\" ]]; then\n  echo \"uninstall TARGET\"\n  echo \"\"\n  echo \"Removes the package installed into a directory named '<name>/<version>'\"\n  echo \"at TARGET. If TARGET is set to @local or @preview, the local Typst package\"\n  echo \"directory will be used so that the package gets installed for local use.\"\n  echo \"The name and version are read from 'typst.toml' in the project root.\"\n  echo \"\"\n  echo \"Local package prefix: $DATA_DIR/typst/package/local\"\n  echo \"Local preview package prefix: $DATA_DIR/typst/package/preview\"\n  exit 1\nfi\n\nTARGET=\"$(resolve-target \"${1:?Missing target path, @local or @preview}\")\"\necho \"Install dir: $TARGET\"\n\nTARGET=\"${TARGET:?}/${PKG_PREFIX:?}/${VERSION:?}\"\necho \"Package to uninstall: $TARGET\"\nif [[ ! -e \"${TARGET:?}\" ]]; then\n  echo \"Package was not found.\"\nelif rm -r \"${TARGET:?}\" 2>/dev/null; then\n  echo \"Successfully removed.\"\nelse\n  echo \"Removal failed.\"\nfi\n"
  },
  {
    "path": "src/chicv.typ",
    "content": "#import \"@preview/fontawesome:0.4.0\": *\n\n#let cventry-padding = (\n  top: 0pt,\n  bottom: 0pt,\n  left: 10pt,\n  right: 5pt,\n)\n\n#let to-string(input) = {\n  if type(input) == \"string\" {\n    input\n  } else if type(input) == \"content\" {\n    if input.has(\"text\") {\n      input.text\n    } else if input.has(\"children\") {\n      input.children.map(to-string).join(\"\")\n    } else if input.has(\"body\") {\n      to-string(input.body)\n    } else if input == [ ] {\n      \"\"\n    } else {\n      // fallback, I don't know how to handle this input\n      input\n    }\n  }\n}\n\n#let short-uri(uri, get-path: false) = {\n  let uri = to-string(uri);\n  let cleaned = uri.replace(\"https://\", \"\")\n                   .replace(\"http://\", \"\")\n                   .replace(\"www.\", \"\")\n                   .replace(regex(\"/$\"), \"\");\n  if get-path {\n    cleaned.split(\"/\").at(-1).split(\"?\").at(0)\n  } else {\n    cleaned\n  }\n}\n\n#let chiline() = {\n  v(-3pt);\n  line(length: 100%, stroke: gray);\n  v(-10pt)\n}\n\n#let iconlink(\n  uri, text: \"\", icon: \"link\", solid: false\n) = {\n  let uri = to-string(uri);\n  let icon = to-string(icon);\n  if text != \"\" {\n    [#box(fa-icon(icon, solid: solid), inset: (right: 2pt))#link(uri)[#text]]\n  } else {\n    link(uri)[#fa-icon(icon, solid: solid)]\n  }\n}\n\n#let githublink(\n  uri, text: \"\"\n) = {\n  iconlink(uri, text: text, icon: \"github\")\n}\n\n#let dates(\n  from: \"\", to: \"\"\n) = {\n  let from = to-string(from);\n  let to = to-string(to);\n  if from != \"\" and to != \"\" {\n    from + \" \" + sym.dash.em + \" \" + to\n  } else if from != \"\" {\n    from + \" \" + sym.dash.em + \" Now\"\n  } else {\n    \"\"\n  }\n}\n\n\n#let personal-info(\n  email: \"\",\n  phone: \"\",\n  github: \"\",\n  website: \"\",\n  linkedin: \"\",\n  ..misc\n) = {\n  let email = if email != \"\" {\n    iconlink(\"mailto:\" + email, text: email, icon: \"envelope\", solid: true)\n  } else { \"\" };\n  let phone = if phone != \"\" {\n    iconlink(\"tel:\" + phone, text: phone, icon: \"phone\")\n  } else { \"\" };\n  let github = if github != \"\" {\n    iconlink(github,\n            text: short-uri(github, get-path: true),\n            icon: \"github\")\n  } else { \"\" };\n  let website = if website != \"\" {\n    iconlink(website,\n             text: short-uri(website),\n             icon: \"globe\")\n  } else { \"\" };\n  let linkedin = if linkedin != \"\" {\n    iconlink(linkedin,\n             text: short-uri(linkedin, get-path: true),\n             icon: \"linkedin\")\n  } else { \"\" };\n\n  let display = (email, phone, github, website, linkedin)\n        .filter(it => it != \"\")\n        .join(\" | \");\n\n  let kv = misc.named()\n  for item in kv {\n    let key = item.at(0);\n    let value = item.at(1);\n    display += \" | \" + iconlink(value, text: short-uri(value), icon: key);\n  }\n\n  let tuples = misc.pos()\n  for t in tuples {\n    if type(t) == \"dictionary\" {\n      let link = if \"link\" in t {\n        t.at(\"link\")\n      } else { \"\" };\n      let text = if \"text\" in t {\n        t.at(\"text\")\n      } else { \"\" };\n      let icon = if \"icon\" in t {\n        t.at(\"icon\")\n      } else { \"link\" };\n      let solid = if \"solid\" in t {\n        t.at(\"solid\")\n      } else { false };\n      display += \" | \" + iconlink(link, text: text, icon: icon, solid: solid);\n    }\n  }\n  display\n}\n\n\n#let cventry(\n  tl: lorem(2),\n  tr: \"2333/23 - 2333/23\",\n  bl: \"\",\n  br: \"\",\n  padding: (:),\n  content\n) = {\n  // if padding has value for override, use it\n  // for key in (\"top\", \"bottom\", \"left\", \"right\") {\n  //   if not key in padding.keys() {\n  //     padding.insert(key, cventry-padding.at(key));\n  //   }\n  // }\n  pad(..padding, block(\n    inset: (left: 0pt),\n    [\n      #if type(tl) == str { strong(tl) } else { tl } #h(1fr) #tr \\\n      #if bl != \"\" or br != \"\" {\n        bl + h(1fr) + br + linebreak()\n      }\n      #content\n    ]\n  ))\n}\n\n#let chicv(\n  margin: (x: 0.9cm, y: 1.3cm),\n  par-padding: cventry-padding,\n  body\n) = {\n  set par(justify: true, leading: 0.7em)\n\n  show heading.where(\n    level: 1\n  ): set text(\n    size: 22pt,\n    font: (\n      \"Avenir Next LT Pro\", // original chi-cv font\n      \"Manrope\", // a font available in the typst environment and looks similar to Avenir\n    ),\n    weight: \"light\",\n  )\n\n  show heading.where(\n    level: 2\n  ): it => text(\n    size: 14pt,\n    font: (\n      \"Avenir Next LT Pro\",\n      \"Manrope\",\n    ),\n    weight: \"light\",\n    block(\n      chiline() + it,\n    )\n  )\n  set list(indent: 0pt)\n\n  set pad(\n    top: if \"top\" in par-padding { par-padding.at(\"top\") } else { cventry-padding.top },\n    bottom: if \"bottom\" in par-padding { par-padding.at(\"bottom\") } else { cventry-padding.bottom },\n    left: if \"left\" in par-padding { par-padding.at(\"left\") } else { cventry-padding.left },\n    right: if \"right\" in par-padding { par-padding.at(\"right\") } else { cventry-padding.right },\n  )\n\n  show link: it => underline(offset: 2pt, it)\n\n  set page(\n    margin: margin,\n    footer: context [\n      #if counter(page).get() != counter(page).final() {\n        align(center, text(fill: gray)[ … continues on the next page …])\n      } else {\n        // show nothing!\n      }\n    ],\n    footer-descent: 10%,\n  )\n\n  body\n}\n\n#let today() = {\n  let month = (\n    \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\",\n    \"August\", \"September\", \"October\", \"November\", \"December\",\n  ).at(datetime.today().month() - 1);\n  let day = datetime.today().day();\n  let year = datetime.today().year();\n  [#month #day, #year]\n}\n"
  },
  {
    "path": "src/fontawesome.typ",
    "content": "\r\n#let fa(name) = {\r\n  text(\r\n    font: \"Font Awesome 6 Free Solid\",\r\n    size: 10pt,\r\n    box[ #name ]\r\n  )\r\n}\r\n\r\n// Regular icons\r\n\r\n#let ad = symbol(\"\\u{f641}\")\r\n#let address-book = symbol(\"\\u{f2b9}\")\r\n#let address-card = symbol(\"\\u{f2bb}\")\r\n#let adjust = symbol(\"\\u{f042}\")\r\n#let air-freshener = symbol(\"\\u{f5d0}\")\r\n#let align-icon = symbol(\r\n  (\"left\",    \"\\u{f036}\"),\r\n  (\"center\",  \"\\u{f037}\"),\r\n  (\"right\",   \"\\u{f038}\"),\r\n  (\"justify\", \"\\u{f039}\"),\r\n)\r\n#let allergies = symbol(\"\\u{f461}\")\r\n#let ambulance = symbol(\"\\u{f0f9}\")\r\n#let american-sign-language-interpreting = symbol(\"\\u{f2a3}\")\r\n#let anchor = symbol(\"\\u{f13d}\")\r\n#let angle = symbol(\r\n  (\"left\",         \"\\u{f104}\"), // by default angle.left\r\n  (\"right\",        \"\\u{f105}\"),\r\n  (\"up\",           \"\\u{f106}\"),\r\n  (\"down\",         \"\\u{f107}\"),\r\n  (\"double.left\",  \"\\u{f100}\"),\r\n  (\"double.right\", \"\\u{f101}\"),\r\n  (\"double.up\",    \"\\u{f102}\"),\r\n  (\"double.down\",  \"\\u{f103}\"),\r\n)\r\n#let angry = symbol(\"\\u{f556}\")\r\n#let ankh = symbol(\"\\u{f644}\")\r\n#let apple = symbol(\r\n  \"\\u{f179}\",\r\n  (\"alt\", \"\\u{f5d1}\"),\r\n  (\"pay\", \"\\u{f415}\"),\r\n  (\"pay.cc\", \"\\u{f416}\")\r\n)\r\n#let archive = symbol(\"\\u{f187}\")\r\n#let archway = symbol(\"\\u{f557}\")\r\n#let arrow-icon = symbol(\r\n  (\"left\",             \"\\u{f060}\"),\r\n  (\"right\",            \"\\u{f061}\"),\r\n  (\"up\",               \"\\u{f062}\"),\r\n  (\"down\",             \"\\u{f063}\"),\r\n  (\"circle.left\",      \"\\u{f0a8}\"),\r\n  (\"circle.right\",     \"\\u{f0a9}\"),\r\n  (\"circle.up\",        \"\\u{f0aa}\"),\r\n  (\"circle.down\",      \"\\u{f0ab}\"),\r\n  (\"circle.alt.down\",  \"\\u{f358}\"),\r\n  (\"circle.alt.left\",  \"\\u{f359}\"),\r\n  (\"circle.alt.right\", \"\\u{f35a}\"),\r\n  (\"circle.alt.up\",    \"\\u{f35b}\"),\r\n  (\"long.down\",        \"\\u{f309}\"),\r\n  (\"long.left\",        \"\\u{f30a}\"),\r\n  (\"long.right\",       \"\\u{f30b}\"),\r\n  (\"long.up\",          \"\\u{f30c}\"),\r\n  (\"plural\", \"\\u{f0b2}\"),\r\n  (\"plural.h\", \"\\u{f337}\"),\r\n  (\"plural.v\", \"\\u{f338}\"),\r\n)\r\n\r\n#let assistive-listening-systems = symbol(\"\\u{f2a2}\")\r\n#let asterisk = symbol(\"\\u{f069}\")\r\n#let at = symbol(\"\\u{f1fa}\")\r\n#let atlas = symbol(\"\\u{f558}\")\r\n#let atom = symbol(\"\\u{f5d2}\")\r\n#let audio-description = symbol(\"\\u{f29e}\")\r\n#let award = symbol(\"\\u{f559}\")\r\n#let baby = symbol(\"\\u{f77c}\")\r\n#let baby-carriage = symbol(\"\\u{f77d}\")\r\n#let backspace = symbol(\"\\u{f55a}\")\r\n#let backward = symbol(\"\\u{f04a}\")\r\n#let bacon = symbol(\"\\u{f7e5}\")\r\n#let bacterium = symbol(\r\n  \"\\u{e05a}\",\r\n  (\"plural\", \"\\u{e059}\")\r\n)\r\n\r\n\r\n#let bahai = symbol(\"\\u{f666}\")\r\n#let balance-scale = symbol(\r\n  \"\\u{f24e}\",\r\n  (\"balance-scale.left\", \"\\u{f515}\"),\r\n  (\"balance-scale.right\", \"\\u{f516}\"),\r\n)\r\n#let ball = symbol(\r\n  (\"basketball\", \"\\u{f434}\"),\r\n  (\"baseball\", \"\\u{f433}\"),\r\n  (\"bowling\", \"\\u{f436}\"),\r\n  (\"football\", \"\\u{f44e}\"),\r\n  (\"golf\", \"\\u{f450}\"),\r\n  (\"volleyball\", \"\\u{f45f}\"),\r\n)\r\n#let ban = symbol(\"\\u{f05e}\")\r\n#let band-aid = symbol(\"\\u{f462}\")\r\n#let barcode = symbol(\"\\u{f02a}\")\r\n#let bars = symbol(\"\\u{f0c9}\")\r\n#let bath = symbol(\"\\u{f2cd}\")\r\n#let battery = symbol(\r\n  (\"empty\", \"\\u{f244}\"),\r\n  (\"full\", \"\\u{f240}\"),\r\n  (\"half\", \"\\u{f242}\"),\r\n  (\"quarter\", \"\\u{f243}\"),\r\n  (\"three-quarters\", \"\\u{f241}\"),\r\n)\r\n#let bed = symbol(\"\\u{f236}\")\r\n#let beer = symbol(\"\\u{f0fc}\")\r\n#let bell = symbol(\r\n  \"\\u{f0f3}\",\r\n  (\"slash\", \"\\u{f1f6}\"),\r\n  (\"concierge\", \"\\u{f562}\"),\r\n)\r\n\r\n#let bezier-curve = symbol(\"\\u{f55b}\")\r\n#let bible = symbol(\"\\u{f647}\")\r\n#let bicycle = symbol(\"\\u{f206}\")\r\n#let biking = symbol(\"\\u{f84a}\")\r\n#let binoculars = symbol(\"\\u{f1e5}\")\r\n#let biohazard = symbol(\"\\u{f780}\")\r\n#let birthday-cake = symbol(\"\\u{f1fd}\")\r\n#let blender = symbol(\r\n  \"\\u{f517}\",\r\n  (\"phone\", \"\\u{f6b6}\"),\r\n)\r\n\r\n#let blind = symbol(\"\\u{f29d}\")\r\n#let blog = symbol(\"\\u{f781}\")\r\n#let bold = symbol(\"\\u{f032}\")\r\n#let bolt = symbol(\"\\u{f0e7}\")\r\n#let bomb = symbol(\"\\u{f1e2}\")\r\n#let bone = symbol(\"\\u{f5d7}\")\r\n#let bong = symbol(\"\\u{f55c}\")\r\n#let book = symbol(\r\n  \"\\u{f02d}\",\r\n  (\"dead\", \"\\u{f6b7}\"),\r\n  (\"medical\", \"\\u{f7e6}\"),\r\n  (\"open\", \"\\u{f518}\"),\r\n  (\"reader\", \"\\u{f5da}\"),\r\n)\r\n\r\n\r\n#let bookmark = symbol(\"\\u{f02e}\")\r\n#let border = symbol(\r\n  (\"all\", \"\\u{f84c}\"),\r\n  (\"none\", \"\\u{f850}\"),\r\n  (\"style\", \"\\u{f853}\"),\r\n)\r\n\r\n#let box-icon = symbol(\r\n  \"\\u{f466}\",\r\n  (\"open\", \"\\u{f49e}\"),\r\n  (\"tissue\", \"\\u{e05b}\"),\r\n  (\"plural\", \"\\u{f468}\"),\r\n)\r\n#let braille = symbol(\"\\u{f2a1}\")\r\n#let brain = symbol(\"\\u{f5dc}\")\r\n#let bread-slice = symbol(\"\\u{f7ec}\")\r\n#let briefcase = symbol(\r\n  \"\\u{f0b1}\",\r\n  (\"medical\", \"\\u{f469}\"),\r\n)\r\n#let broadcast-tower = symbol(\"\\u{f519}\")\r\n#let broom = symbol(\"\\u{f51a}\")\r\n#let brush = symbol(\"\\u{f55d}\")\r\n#let bug = symbol(\"\\u{f188}\")\r\n#let building = symbol(\"\\u{f1ad}\")\r\n#let bullhorn = symbol(\"\\u{f0a1}\")\r\n#let bullseye = symbol(\"\\u{f140}\")\r\n#let burn = symbol(\"\\u{f46a}\")\r\n#let bus = symbol(\r\n  \"\\u{f207}\",\r\n  (\"alt\", \"\\u{f55e}\"),\r\n)\r\n#let business-time = symbol(\"\\u{f64a}\")\r\n#let calculator = symbol(\"\\u{f1ec}\")\r\n#let calendar = symbol(\r\n  \"\\u{f133}\",\r\n  (\"alt\", \"\\u{f073}\"),\r\n  (\"check\", \"\\u{f274}\"),\r\n  (\"day\", \"\\u{f783}\"),\r\n  (\"minus\", \"\\u{f272}\"),\r\n  (\"plus\", \"\\u{f271}\"),\r\n  (\"times\", \"\\u{f273}\"),\r\n  (\"week\", \"\\u{f784}\"),\r\n)\r\n#let camera = symbol(\r\n  \"\\u{f030}\",\r\n  (\"retro\", \"\\u{f083}\"),\r\n)\r\n#let campground = symbol(\"\\u{f6bb}\")\r\n#let candy-cane = symbol(\"\\u{f786}\")\r\n#let cannabis = symbol(\"\\u{f55f}\")\r\n#let capsules = symbol(\"\\u{f46b}\")\r\n#let car = symbol(\r\n  \"\\u{f1b9}\",\r\n  (\"alt\", \"\\u{f5de}\"),\r\n  (\"battery\", \"\\u{f5df}\"),\r\n  (\"crash\", \"\\u{f5e1}\"),\r\n  (\"side\", \"\\u{f5e4}\"),\r\n)\r\n#let caravan = symbol(\"\\u{f8ff}\")\r\n#let caret = symbol(\r\n  (\"down\", \"\\u{f0d7}\"),\r\n  (\"up\", \"\\u{f0d8}\"),\r\n  (\"left\", \"\\u{f0d9}\"),\r\n  (\"right\", \"\\u{f0da}\"),\r\n  (\"square.down\", \"\\u{f150}\"),\r\n  (\"square.up\", \"\\u{f151}\"),\r\n  (\"square.right\", \"\\u{f152}\"),\r\n  (\"square.left\", \"\\u{f191}\"),\r\n)\r\n#let carrot = symbol(\"\\u{f787}\")\r\n#let cart = symbol(\r\n  \"\\u{f07a}\",\r\n  (\"plus\", \"\\u{f217}\"),\r\n  (\"arrow.down\", \"\\u{f218}\"),\r\n)\r\n#let cash-register = symbol(\"\\u{f788}\")\r\n#let cat = symbol(\"\\u{f6be}\")\r\n#let certificate = symbol(\"\\u{f0a3}\")\r\n#let chair = symbol(\"\\u{f6c0}\")\r\n#let chalkboard = symbol(\r\n  \"\\u{f51b}\",\r\n  (\"teacher\", \"\\u{f51c}\"),\r\n)\r\n#let charging-station = symbol(\"\\u{f5e7}\")\r\n#let chart = symbol(\r\n  (\"bar\", \"\\u{f080}\"),\r\n  (\"area\", \"\\u{f1fe}\"),\r\n  (\"pie\", \"\\u{f200}\"),\r\n  (\"line\", \"\\u{f201}\"),\r\n)\r\n#let check = symbol(\r\n  \"\\u{f00c}\",\r\n  (\"circle\", \"\\u{f058}\"),\r\n  (\"double\", \"\\u{f560}\"),\r\n  (\"square\", \"\\u{f14a}\"),\r\n)\r\n#let cheese = symbol(\"\\u{f7ef}\")\r\n#let chess = symbol(\r\n  \"\\u{f439}\",\r\n  (\"bishop\", \"\\u{f43a}\"),\r\n  (\"board\", \"\\u{f43c}\"),\r\n  (\"king\", \"\\u{f43f}\"),\r\n  (\"knight\", \"\\u{f441}\"),\r\n  (\"pawn\", \"\\u{f443}\"),\r\n  (\"queen\", \"\\u{f445}\"),\r\n  (\"rook\", \"\\u{f447}\"),\r\n)\r\n#let chevron = symbol(\r\n  (\"left\", \"\\u{f053}\"),\r\n  (\"right\", \"\\u{f054}\"),\r\n  (\"up\", \"\\u{f077}\"),\r\n  (\"down\", \"\\u{f078}\"),\r\n  (\"circle.left\", \"\\u{f137}\"),\r\n  (\"circle.right\", \"\\u{f138}\"),\r\n  (\"circle.up\", \"\\u{f139}\"),\r\n  (\"circle.down\", \"\\u{f13a}\"),\r\n)\r\n#let child = symbol(\"\\u{f1ae}\")\r\n#let church = symbol(\"\\u{f51d}\")\r\n\r\n#let circle-icon = symbol(\r\n  \"\\u{f111}\",\r\n  (\"notch\", \"\\u{f1ce}\"),\r\n)\r\n#let city = symbol(\"\\u{f64f}\")\r\n#let clinic-medical = symbol(\"\\u{f7f2}\")\r\n#let clipboard = symbol(\r\n  \"\\u{f328}\",\r\n  (\"check\", \"\\u{f46c}\"),\r\n  (\"list\", \"\\u{f46d}\"),\r\n)\r\n#let clock = symbol(\"\\u{f017}\")\r\n#let clone = symbol(\"\\u{f24d}\")\r\n#let closed-captioning = symbol(\"\\u{f20a}\")\r\n#let cloud = symbol(\r\n  \"\\u{f0c2}\",\r\n  (\"download\", \"\\u{f381}\"),\r\n  (\"meatball\", \"\\u{f73b}\"),\r\n  (\"moon\", \"\\u{f6c3}\"),\r\n  (\"moon.rain\", \"\\u{f73c}\"),\r\n  (\"rain\", \"\\u{f73d}\"),\r\n  (\"rain.heavy\", \"\\u{f740}\"),\r\n  (\"sun\", \"\\u{f6c4}\"),\r\n  (\"sun.rain\", \"\\u{f743}\"),\r\n  (\"upload\", \"\\u{f382}\"),\r\n)\r\n#let cocktail = symbol(\"\\u{f561}\")\r\n#let code = symbol(\r\n  \"\\u{f121}\",\r\n  (\"branch\", \"\\u{f126}\"),\r\n)\r\n#let coffee = symbol(\"\\u{f0f4}\")\r\n#let cog = symbol(\r\n  \"\\u{f013}\",\r\n  (\"plural\", \"\\u{f085}\"),\r\n)\r\n#let coins = symbol(\"\\u{f51e}\")\r\n#let columns = symbol(\"\\u{f0db}\")\r\n#let comment = symbol(\r\n  \"\\u{f075}\",\r\n  (\"alt\", \"\\u{f27a}\"),\r\n  (\"dollar\", \"\\u{f651}\"),\r\n  (\"dots\", \"\\u{f4ad}\"),\r\n  (\"medical\", \"\\u{f7f5}\"),\r\n  (\"slash\", \"\\u{f4b3}\"),\r\n  (\"plural.\", \"\\u{f086}\"),\r\n  (\"plural.dollar\", \"\\u{f653}\"),\r\n)\r\n#let compact-disc = symbol(\"\\u{f51f}\")\r\n#let compass = symbol(\"\\u{f14e}\")\r\n#let compress = symbol(\r\n  \"\\u{f066}\",\r\n  (\"alt\", \"\\u{f422}\"),\r\n  (\"alt.arrows\", \"\\u{f78c}\"),\r\n)\r\n\r\n#let cookie = symbol(\r\n  \"\\u{f563}\",\r\n  (\"bite\", \"\\u{f564}\"),\r\n)\r\n#let copy = symbol(\"\\u{f0c5}\")\r\n#let copyright = symbol(\"\\u{f1f9}\")\r\n#let couch = symbol(\"\\u{f4b8}\")\r\n#let credit-card = symbol(\"\\u{f09d}\")\r\n#let crop = symbol(\r\n  \"\\u{f125}\",\r\n  (\"alt\", \"\\u{f565}\"),\r\n)\r\n#let cross = symbol(\"\\u{f654}\")\r\n#let crosshairs = symbol(\"\\u{f05b}\")\r\n#let crow = symbol(\"\\u{f520}\")\r\n#let crown = symbol(\"\\u{f521}\")\r\n#let crutch = symbol(\"\\u{f7f7}\")\r\n#let cube = symbol(\r\n  \"\\u{f1b2}\",\r\n  (\"plural\", \"\\u{f1b3}\"),\r\n)\r\n#let cut = symbol(\"\\u{f0c4}\")\r\n#let database = symbol(\"\\u{f1c0}\")\r\n#let deaf = symbol(\"\\u{f2a4}\")\r\n#let democrat = symbol(\"\\u{f747}\")\r\n#let desktop = symbol(\"\\u{f108}\")\r\n#let dharmachakra = symbol(\"\\u{f655}\")\r\n#let diagnoses = symbol(\"\\u{f470}\")\r\n#let dice = symbol(\r\n  \"\\u{f522}\",\r\n  (\"d20\", \"\\u{f6cf}\"),\r\n  (\"d6\", \"\\u{f6d1}\"),\r\n  (\"five\", \"\\u{f523}\"),\r\n  (\"four\", \"\\u{f524}\"),\r\n  (\"one\", \"\\u{f525}\"),\r\n  (\"six\", \"\\u{f526}\"),\r\n  (\"three\", \"\\u{f527}\"),\r\n  (\"two\", \"\\u{f528}\"),\r\n)\r\n#let digital-tachograph = symbol(\"\\u{f566}\")\r\n#let directions = symbol(\"\\u{f5eb}\")\r\n#let disease = symbol(\"\\u{f7fa}\")\r\n#let divide = symbol(\"\\u{f529}\")\r\n#let dizzy = symbol(\"\\u{f567}\")\r\n#let dna = symbol(\"\\u{f471}\")\r\n#let dog = symbol(\"\\u{f6d3}\")\r\n#let dolly = symbol(\r\n  \"\\u{f472}\",\r\n  (\"flatbed\", \"\\u{f474}\"),\r\n)\r\n#let donate = symbol(\"\\u{f4b9}\")\r\n#let door = symbol(\r\n  (\"closed\", \"\\u{f52a}\"),\r\n  (\"open\", \"\\u{f52b}\"),\r\n)\r\n#let dot-circle = symbol(\"\\u{f192}\")\r\n#let dove = symbol(\"\\u{f4ba}\")\r\n#let download = symbol(\"\\u{f019}\")\r\n#let drafting-compass = symbol(\"\\u{f568}\")\r\n#let dragon = symbol(\"\\u{f6d5}\")\r\n#let draw-polygon = symbol(\"\\u{f5ee}\")\r\n#let drum = symbol(\r\n  \"\\u{f569}\",\r\n  (\"steelpan\", \"\\u{f56a}\"),\r\n)\r\n#let drumstick-bite = symbol(\"\\u{f6d7}\")\r\n#let dumbbell = symbol(\"\\u{f44b}\")\r\n#let dumpster = symbol(\r\n  \"\\u{f793}\",\r\n  (\"fire\", \"\\u{f794}\"),\r\n)\r\n#let dungeon = symbol(\"\\u{f6d9}\")\r\n#let edit = symbol(\"\\u{f044}\")\r\n#let egg = symbol(\"\\u{f7fb}\")\r\n#let eject = symbol(\"\\u{f052}\")\r\n#let ellipsis = symbol(\r\n  (\"h\", \"\\u{f141}\"),\r\n  (\"v\", \"\\u{f142}\"),\r\n)\r\n#let envelope = symbol(\r\n  \"\\u{f0e0}\",\r\n  (\"open\", \"\\u{f2b6}\"),\r\n  (\"open.text\", \"\\u{f658}\"),\r\n  (\"square\", \"\\u{f199}\"),\r\n)\r\n#let equals = symbol(\"\\u{f52c}\")\r\n#let eraser = symbol(\"\\u{f12d}\")\r\n#let ethernet = symbol(\"\\u{f796}\")\r\n\r\n#let exchange = symbol(\"\\u{f362}\")\r\n\r\n#let exclamation = symbol(\r\n  \"\\u{f12a}\",\r\n  (\"circle\", \"\\u{f06a}\"),\r\n  (\"triangle\", \"\\u{f071}\"),\r\n)\r\n#let expand = symbol(\r\n  \"\\u{f065}\",\r\n  (\"alt\", \"\\u{f424}\"),\r\n  (\"alt.arrows\", \"\\u{f31e}\"),\r\n)\r\n#let link-icon = symbol(\"\\u{f0c1}\")\r\n#let external-link = symbol(\r\n  \"\\u{f35d}\",\r\n  (\"square\", \"\\u{f360}\"),\r\n)\r\n\r\n#let eye = symbol(\r\n  \"\\u{f06e}\",\r\n  (\"dropper\", \"\\u{f1fb}\"),\r\n  (\"slash\", \"\\u{f070}\"),\r\n)\r\n#let fan = symbol(\"\\u{f863}\")\r\n#let fast = symbol(\r\n  (\"backward\", \"\\u{f049}\"),\r\n  (\"forward\", \"\\u{f050}\"),\r\n)\r\n#let faucet = symbol(\"\\u{e005}\")\r\n#let fax = symbol(\"\\u{f1ac}\")\r\n#let feather = symbol(\r\n  \"\\u{f52d}\",\r\n  (\"alt\", \"\\u{f56b}\"),\r\n)\r\n#let female = symbol(\"\\u{f182}\")\r\n#let fighter-jet = symbol(\"\\u{f0fb}\")\r\n#let file = symbol(\r\n  \"\\u{f15b}\",\r\n  (\"alt\", \"\\u{f15c}\"),\r\n  (\"archive\", \"\\u{f1c6}\"),\r\n  (\"audio\", \"\\u{f1c7}\"),\r\n  (\"code\", \"\\u{f1c9}\"),\r\n  (\"contract\", \"\\u{f56c}\"),\r\n  (\"csv\", \"\\u{f6dd}\"),\r\n  (\"download\", \"\\u{f56d}\"),\r\n  (\"excel\", \"\\u{f1c3}\"),\r\n  (\"export\", \"\\u{f56e}\"),\r\n  (\"image\", \"\\u{f1c5}\"),\r\n  (\"import\", \"\\u{f56f}\"),\r\n  (\"invoice\", \"\\u{f570}\"),\r\n  (\"invoice.dollar\", \"\\u{f571}\"),\r\n  (\"medical\", \"\\u{f477}\"),\r\n  (\"medical-alt\", \"\\u{f478}\"),\r\n  (\"pdf\", \"\\u{f1c1}\"),\r\n  (\"powerpoint\", \"\\u{f1c4}\"),\r\n  (\"prescription\", \"\\u{f572}\"),\r\n  (\"signature\", \"\\u{f573}\"),\r\n  (\"upload\", \"\\u{f574}\"),\r\n  (\"video\", \"\\u{f1c8}\"),\r\n  (\"word\", \"\\u{f1c2}\"),\r\n)\r\n#let fill = symbol(\r\n  \"\\u{f575}\",\r\n  (\"drip\", \"\\u{f576}\"),\r\n)\r\n#let film = symbol(\"\\u{f008}\")\r\n#let filter = symbol(\"\\u{f0b0}\")\r\n#let fingerprint = symbol(\"\\u{f577}\")\r\n#let fire = symbol(\r\n  \"\\u{f06d}\",\r\n  (\"alt\", \"\\u{f7e4}\"),\r\n  (\"extinguisher\", \"\\u{f134}\"),\r\n)\r\n#let first-aid = symbol(\"\\u{f479}\")\r\n#let fish = symbol(\"\\u{f578}\")\r\n#let fist-raised = symbol(\"\\u{f6de}\")\r\n#let flag = symbol(\r\n  \"\\u{f024}\",\r\n  (\"checkered\", \"\\u{f11e}\"),\r\n  (\"usa\", \"\\u{f74d}\"),\r\n)\r\n#let flask = symbol(\"\\u{f0c3}\")\r\n#let flushed = symbol(\"\\u{f579}\")\r\n#let folder = symbol(\r\n  \"\\u{f07b}\",\r\n  (\"minus\", \"\\u{f65d}\"),\r\n  (\"open\", \"\\u{f07c}\"),\r\n  (\"plus\", \"\\u{f65e}\"),\r\n)\r\n#let font = symbol(\"\\u{f031}\")\r\n#let forward = symbol(\"\\u{f04e}\")\r\n#let frog = symbol(\"\\u{f52e}\")\r\n#let frown = symbol(\r\n  \"\\u{f119}\",\r\n  (\"open\", \"\\u{f57a}\"),\r\n)\r\n#let funnel-dollar = symbol(\"\\u{f662}\")\r\n#let futbol = symbol(\"\\u{f1e3}\")\r\n#let gamepad = symbol(\"\\u{f11b}\")\r\n#let gas-pump = symbol(\"\\u{f52f}\")\r\n#let gavel = symbol(\"\\u{f0e3}\")\r\n#let gem = symbol(\"\\u{f3a5}\")\r\n#let genderless = symbol(\"\\u{f22d}\")\r\n#let ghost = symbol(\"\\u{f6e2}\")\r\n#let gift = symbol(\r\n  \"\\u{f06b}\",\r\n  (\"plural\", \"\\u{f79c}\"),\r\n)\r\n#let glass = symbol(\r\n  (\"cheers\", \"\\u{f79f}\"),\r\n  (\"martini\", \"\\u{f000}\"),\r\n  (\"martini.alt\", \"\\u{f57b}\"),\r\n  (\"whiskey\", \"\\u{f7a0}\"),\r\n  (\"plural\", \"\\u{f530}\"),\r\n)\r\n#let globe = symbol(\r\n  \"\\u{f0ac}\",\r\n  (\"africa\", \"\\u{f57c}\"),\r\n  (\"americas\", \"\\u{f57d}\"),\r\n  (\"asia\", \"\\u{f57e}\"),\r\n  (\"europe\", \"\\u{f7a2}\"),\r\n)\r\n#let gopuram = symbol(\"\\u{f664}\")\r\n#let graduation-cap = symbol(\"\\u{f19d}\")\r\n#let greater-than = symbol(\r\n  \"\\u{f531}\",\r\n  (\"equal\", \"\\u{f532}\"),\r\n)\r\n#let grimace = symbol(\"\\u{f57f}\")\r\n#let grin = symbol(\r\n  \"\\u{f580}\",\r\n  (\"alt\", \"\\u{f581}\"),\r\n  (\"beam\", \"\\u{f582}\"),\r\n  (\"beam-sweat\", \"\\u{f583}\"),\r\n  (\"hearts\", \"\\u{f584}\"),\r\n  (\"squint\", \"\\u{f585}\"),\r\n  (\"squint-tears\", \"\\u{f586}\"),\r\n  (\"stars\", \"\\u{f587}\"),\r\n  (\"tears\", \"\\u{f588}\"),\r\n  (\"tongue\", \"\\u{f589}\"),\r\n  (\"tongue-squint\", \"\\u{f58a}\"),\r\n  (\"tongue-wink\", \"\\u{f58b}\"),\r\n  (\"wink\", \"\\u{f58c}\"),\r\n)\r\n#let grip = symbol(\r\n  (\"horizontal\", \"\\u{f58d}\"),\r\n  (\"lines\", \"\\u{f7a4}\"),\r\n  (\"lines-vertical\", \"\\u{f7a5}\"),\r\n  (\"vertical\", \"\\u{f58e}\"),\r\n)\r\n#let guitar = symbol(\"\\u{f7a6}\")\r\n#let h-square = symbol(\"\\u{f0fd}\")\r\n#let hamburger = symbol(\"\\u{f805}\")\r\n#let hammer = symbol(\"\\u{f6e3}\")\r\n#let hamsa = symbol(\"\\u{f665}\")\r\n#let hand = symbol(\r\n  (\"holding\", \"\\u{f4bd}\"),\r\n  (\"holding.heart\", \"\\u{f4be}\"),\r\n  (\"holding.medical\", \"\\u{e05c}\"),\r\n  (\"holding.usd\", \"\\u{f4c0}\"),\r\n  (\"holding.water\", \"\\u{f4c1}\"),\r\n  (\"lizard\", \"\\u{f258}\"),\r\n  (\"middle-finger\", \"\\u{f806}\"),\r\n  (\"paper\", \"\\u{f256}\"),\r\n  (\"peace\", \"\\u{f25b}\"),\r\n  (\"point.right\", \"\\u{f0a4}\"),\r\n  (\"point.left\", \"\\u{f0a5}\"),\r\n  (\"point.up\", \"\\u{f0a6}\"),\r\n  (\"point.down\", \"\\u{f0a7}\"),\r\n  (\"pointer\", \"\\u{f25a}\"),\r\n  (\"rock\", \"\\u{f255}\"),\r\n  (\"scissors\", \"\\u{f257}\"),\r\n  (\"sparkles\", \"\\u{e05d}\"),\r\n  (\"spock\", \"\\u{f259}\"),\r\n  (\"plural\", \"\\u{f4c2}\"),\r\n  (\"helping\", \"\\u{f4c4}\"),\r\n  (\"wash\", \"\\u{e05e}\"),\r\n  (\"shake\", \"\\u{f2b5}\"),\r\n  (\"shake.slash\", \"\\u{e060}\"),\r\n  (\"shake.slash.alt\", \"\\u{e05f}\"),\r\n  (\"praying\", \"\\u{f684}\"),\r\n)\r\n#let hanukiah = symbol(\"\\u{f6e6}\")\r\n#let hat-icon = symbol(\r\n  (\"hard\", \"\\u{f807}\"),\r\n  (\"cowboy\", \"\\u{f8c0}\"),\r\n  (\"cowboy-side\", \"\\u{f8c1}\"),\r\n  (\"wizard\", \"\\u{f6e8}\"),\r\n)\r\n#let hashtag = symbol(\"\\u{f292}\")\r\n#let hdd = symbol(\"\\u{f0a0}\")\r\n#let head-side = symbol(\r\n  (\"cough\", \"\\u{e061}\"),\r\n  (\"cough-slash\", \"\\u{e062}\"),\r\n  (\"mask\", \"\\u{e063}\"),\r\n  (\"virus\", \"\\u{e064}\"),\r\n)\r\n#let heading-icon = symbol(\"\\u{f1dc}\")\r\n#let headphones = symbol(\r\n  \"\\u{f025}\",\r\n  (\"alt\", \"\\u{f58f}\"),\r\n  (\"mic\", \"\\u{f590}\")\r\n)\r\n#let heart = symbol(\r\n  \"\\u{f004}\",\r\n  (\"broken\", \"\\u{f7a9}\"),\r\n  (\"beat\", \"\\u{f21e}\"),\r\n)\r\n#let helicopter = symbol(\"\\u{f533}\")\r\n#let highlighter = symbol(\"\\u{f591}\")\r\n#let hiking = symbol(\"\\u{f6ec}\")\r\n#let hippo = symbol(\"\\u{f6ed}\")\r\n#let history = symbol(\"\\u{f1da}\")\r\n#let hockey-puck = symbol(\"\\u{f453}\")\r\n#let holly-berry = symbol(\"\\u{f7aa}\")\r\n#let home = symbol(\"\\u{f015}\")\r\n#let horse = symbol(\r\n  \"\\u{f6f0}\",\r\n  (\"head\", \"\\u{f7ab}\"),\r\n)\r\n#let hospital = symbol(\r\n  \"\\u{f0f8}\",\r\n  (\"alt\", \"\\u{f47d}\"),\r\n  (\"symbol\", \"\\u{f47e}\"),\r\n  (\"user\", \"\\u{f80d}\"),\r\n)\r\n#let hot-tub = symbol(\"\\u{f593}\")\r\n#let hotdog = symbol(\"\\u{f80f}\")\r\n#let hotel = symbol(\"\\u{f594}\")\r\n#let hourglass = symbol(\r\n  \"\\u{f254}\",\r\n  (\"start\", \"\\u{f251}\"),\r\n)\r\n#let house = symbol(\r\n  (\"user\", \"\\u{e065}\"),\r\n  (\"damage\", \"\\u{f6f1}\"),\r\n)\r\n#let hryvnia = symbol(\"\\u{f6f2}\")\r\n#let i-cursor = symbol(\"\\u{f246}\")\r\n#let ice-cream = symbol(\"\\u{f810}\")\r\n#let icicles = symbol(\"\\u{f7ad}\")\r\n#let icons = symbol(\"\\u{f86d}\")\r\n#let id = symbol(\r\n  (\"badge\", \"\\u{f2c1}\"),\r\n  (\"card\", \"\\u{f2c2}\"),\r\n  (\"card-alt\", \"\\u{f47f}\"),\r\n)\r\n#let igloo = symbol(\"\\u{f7ae}\")\r\n#let image = symbol(\r\n  \"\\u{f03e}\",\r\n  (\"plural\", \"\\u{f302}\"),\r\n)\r\n#let inbox = symbol(\"\\u{f01c}\")\r\n#let indent = symbol(\"\\u{f03c}\")\r\n#let industry = symbol(\"\\u{f275}\")\r\n#let infinity = symbol(\"\\u{f534}\")\r\n#let info = symbol(\r\n  \"\\u{f129}\",\r\n  (\"circle\", \"\\u{f05a}\"),\r\n)\r\n#let italic = symbol(\"\\u{f033}\")\r\n#let jedi = symbol(\"\\u{f669}\")\r\n#let joint = symbol(\"\\u{f595}\")\r\n#let journal-whills = symbol(\"\\u{f66a}\")\r\n#let kaaba = symbol(\"\\u{f66b}\")\r\n#let key = symbol(\"\\u{f084}\")\r\n#let keyboard = symbol(\"\\u{f11c}\")\r\n#let khanda = symbol(\"\\u{f66d}\")\r\n#let kiss = symbol(\r\n  \"\\u{f596}\",\r\n  (\"beam\", \"\\u{f597}\"),\r\n  (\"wink.heart\", \"\\u{f598}\"),\r\n)\r\n#let kiwi-bird = symbol(\"\\u{f535}\")\r\n#let landmark = symbol(\"\\u{f66f}\")\r\n#let language = symbol(\"\\u{f1ab}\")\r\n#let laptop = symbol(\r\n  \"\\u{f109}\",\r\n  (\"code\", \"\\u{f5fc}\"),\r\n  (\"house\", \"\\u{e066}\"),\r\n  (\"medical\", \"\\u{f812}\"),\r\n)\r\n#let laugh = symbol(\r\n  \"\\u{f599}\",\r\n  (\"beam\", \"\\u{f59a}\"),\r\n  (\"squint\", \"\\u{f59b}\"),\r\n  (\"wink\", \"\\u{f59c}\"),\r\n)\r\n#let layer-group = symbol(\"\\u{f5fd}\")\r\n#let leaf = symbol(\"\\u{f06c}\")\r\n#let lemon = symbol(\"\\u{f094}\")\r\n#let less-than = symbol(\r\n  \"\\u{f536}\",\r\n  (\"equal\", \"\\u{f537}\"),\r\n)\r\n#let level-down = symbol(\"\\u{f3be}\")\r\n#let level-up = symbol(\"\\u{f3bf}\")\r\n#let life-ring = symbol(\"\\u{f1cd}\")\r\n#let lightbulb = symbol(\"\\u{f0eb}\")\r\n#let list-icon = symbol(\r\n  \"\\u{f03a}\",\r\n  (\"alt\", \"\\u{f022}\"),\r\n  (\"ol\", \"\\u{f0cb}\"),\r\n  (\"ul\", \"\\u{f0ca}\"),\r\n)\r\n#let location-arrow = symbol(\"\\u{f124}\")\r\n#let lock = symbol(\r\n  \"\\u{f023}\",\r\n  (\"open\", \"\\u{f3c1}\"),\r\n)\r\n#let low-vision = symbol(\"\\u{f2a8}\")\r\n#let luggage-cart = symbol(\"\\u{f59d}\")\r\n#let lungs = symbol(\r\n  \"\\u{f604}\",\r\n  (\"virus\", \"\\u{e067}\"),\r\n)\r\n#let magic = symbol(\"\\u{f0d0}\")\r\n#let magnet = symbol(\"\\u{f076}\")\r\n#let mail-bulk = symbol(\"\\u{f674}\")\r\n#let male = symbol(\"\\u{f183}\")\r\n#let map-icon = symbol(\r\n  \"\\u{f279}\",\r\n  (\"marked\", \"\\u{f59f}\"),\r\n  (\"marked-alt\", \"\\u{f5a0}\"),\r\n  (\"marker\", \"\\u{f041}\"),\r\n  (\"marker-alt\", \"\\u{f3c5}\"),\r\n  (\"pin\", \"\\u{f276}\"),\r\n  (\"signs\", \"\\u{f277}\"),\r\n)\r\n#let marker = symbol(\"\\u{f5a1}\")\r\n#let mars = symbol(\r\n  \"\\u{f222}\",\r\n  (\"double\", \"\\u{f227}\"),\r\n  (\"stroke\", \"\\u{f229}\"),\r\n  (\"stroke.h\", \"\\u{f22b}\"),\r\n  (\"stroke.v\", \"\\u{f22a}\"),\r\n)\r\n#let mask = symbol(\"\\u{f6fa}\")\r\n#let medal = symbol(\"\\u{f5a2}\")\r\n#let medkit = symbol(\"\\u{f0fa}\")\r\n#let meh = symbol(\r\n  \"\\u{f11a}\",\r\n  (\"blank\", \"\\u{f5a4}\"),\r\n  (\"rolling-eyes\", \"\\u{f5a5}\"),\r\n)\r\n#let memory = symbol(\"\\u{f538}\")\r\n#let menorah = symbol(\"\\u{f676}\")\r\n#let mercury = symbol(\"\\u{f223}\")\r\n#let meteor = symbol(\"\\u{f753}\")\r\n#let microchip = symbol(\"\\u{f2db}\")\r\n#let microphone = symbol(\r\n  \"\\u{f130}\",\r\n  (\"slash\", \"\\u{f131}\"),\r\n  (\"alt\", \"\\u{f3c9}\"),\r\n  (\"alt.slash\", \"\\u{f539}\"),\r\n)\r\n#let microscope = symbol(\"\\u{f610}\")\r\n#let minus = symbol(\r\n  \"\\u{f068}\",\r\n  (\"circle\", \"\\u{f056}\"),\r\n  (\"square\", \"\\u{f146}\"),\r\n)\r\n#let mitten = symbol(\"\\u{f7b5}\")\r\n#let mobile = symbol(\r\n  \"\\u{f10b}\",\r\n  (\"alt\", \"\\u{f3cd}\"),\r\n)\r\n#let money = symbol(\r\n  (\"bill\", \"\\u{f0d6}\"),\r\n  (\"bill.alt\", \"\\u{f3d1}\"),\r\n  (\"bill.wave\", \"\\u{f53a}\"),\r\n  (\"bill.wave.alt\", \"\\u{f53b}\"),\r\n  (\"check\", \"\\u{f53c}\"),\r\n  (\"check.alt\", \"\\u{f53d}\"),\r\n  (\"sign.dollar\", \"\\u{f155}\"),\r\n  (\"sign.euro\", \"\\u{f153}\"),\r\n  (\"sign.pound\", \"\\u{f154}\"),\r\n  (\"sign.ruble\", \"\\u{f158}\"),\r\n  (\"sign.rupee\", \"\\u{f156}\"),\r\n  (\"sign.shekel\", \"\\u{f20b}\"),\r\n  (\"sign.lira\", \"\\u{f195}\"),\r\n  (\"sign.won\", \"\\u{f159}\"),\r\n  (\"sign.yen\", \"\\u{f157}\"),\r\n)\r\n#let monument = symbol(\"\\u{f5a6}\")\r\n#let moon = symbol(\"\\u{f186}\")\r\n#let mortar-pestle = symbol(\"\\u{f5a7}\")\r\n#let mosque = symbol(\"\\u{f678}\")\r\n#let motorcycle = symbol(\"\\u{f21c}\")\r\n#let mountain = symbol(\"\\u{f6fc}\")\r\n#let mouse = symbol(\"\\u{f8cc}\")\r\n#let mouse-pointer = symbol(\"\\u{f245}\")\r\n#let mug-hot = symbol(\"\\u{f7b6}\")\r\n#let music = symbol(\"\\u{f001}\")\r\n#let network-wired = symbol(\"\\u{f6ff}\")\r\n#let neuter = symbol(\"\\u{f22c}\")\r\n#let newspaper = symbol(\"\\u{f1ea}\")\r\n#let not-equal = symbol(\"\\u{f53e}\")\r\n#let notes-medical = symbol(\"\\u{f481}\")\r\n#let object-group = symbol(\"\\u{f247}\")\r\n#let object-ungroup = symbol(\"\\u{f248}\")\r\n#let oil-can = symbol(\"\\u{f613}\")\r\n#let om = symbol(\"\\u{f679}\")\r\n#let otter = symbol(\"\\u{f700}\")\r\n#let outdent = symbol(\"\\u{f03b}\")\r\n#let pager = symbol(\"\\u{f815}\")\r\n#let paintbrush = symbol(\r\n  \"\\u{f1fc}\",\r\n  (\"roller\", \"\\u{f5aa}\"),\r\n)\r\n#let palette = symbol(\"\\u{f53f}\")\r\n#let pallet = symbol(\"\\u{f482}\")\r\n#let paper-plane = symbol(\"\\u{f1d8}\")\r\n#let paperclip = symbol(\"\\u{f0c6}\")\r\n#let parachute-box = symbol(\"\\u{f4cd}\")\r\n#let paragraph = symbol(\"\\u{f1dd}\")\r\n#let parking = symbol(\"\\u{f540}\")\r\n#let passport = symbol(\"\\u{f5ab}\")\r\n#let pastafarianism = symbol(\"\\u{f67b}\")\r\n#let paste = symbol(\"\\u{f0ea}\")\r\n#let pause = symbol(\r\n  \"\\u{f04c}\",\r\n  (\"circle\", \"\\u{f28b}\"),\r\n)\r\n#let paw = symbol(\"\\u{f1b0}\")\r\n#let peace = symbol(\"\\u{f67c}\")\r\n#let pen = symbol(\r\n  \"\\u{f304}\",\r\n  (\"alt\", \"\\u{f305}\"),\r\n  (\"fancy\", \"\\u{f5ac}\"),\r\n  (\"nib\", \"\\u{f5ad}\"),\r\n  (\"square\", \"\\u{f14b}\"),\r\n)\r\n#let pencil = symbol(\r\n  (\"alt\", \"\\u{f303}\"),\r\n  (\"ruler\", \"\\u{f5ae}\"),\r\n)\r\n#let people = symbol(\r\n  (\"arrows\", \"\\u{e068}\"),\r\n  (\"carry\", \"\\u{f4ce}\"),\r\n)\r\n#let pepper-hot = symbol(\"\\u{f816}\")\r\n#let percent = symbol(\"\\u{f295}\")\r\n#let percentage = symbol(\"\\u{f541}\")\r\n#let person-booth = symbol(\"\\u{f756}\")\r\n\r\n#let phone = symbol(\r\n  \"\\u{f095}\",\r\n  (\"alt\", \"\\u{f879}\"),\r\n  (\"slash\", \"\\u{f3dd}\"),\r\n  (\"square\", \"\\u{f098}\"),\r\n  (\"square-alt\", \"\\u{f87b}\"),\r\n  (\"volume\", \"\\u{f2a0}\"),\r\n)\r\n\r\n\r\n#let photo-video = symbol(\"\\u{f87c}\")\r\n#let piggy-bank = symbol(\"\\u{f4d3}\")\r\n#let pills = symbol(\"\\u{f484}\")\r\n#let pizza-slice = symbol(\"\\u{f818}\")\r\n#let place-of-worship = symbol(\"\\u{f67f}\")\r\n#let plane = symbol(\r\n  \"\\u{f072}\",\r\n  (\"arrival\", \"\\u{f5af}\"),\r\n  (\"departure\", \"\\u{f5b0}\"),\r\n  (\"slash\", \"\\u{e069}\"),\r\n)\r\n#let play = symbol(\r\n  \"\\u{f04b}\",\r\n  (\"circle\", \"\\u{f144}\"),\r\n)\r\n#let plug = symbol(\"\\u{f1e6}\")\r\n#let plus = symbol(\r\n  \"\\u{f067}\",\r\n  (\"circle\", \"\\u{f055}\"),\r\n  (\"square\", \"\\u{f0fe}\"),\r\n)\r\n#let podcast = symbol(\"\\u{f2ce}\")\r\n#let poll = symbol(\r\n  \"\\u{f681}\",\r\n  (\"h\", \"\\u{f682}\"),\r\n)\r\n#let poop = symbol(\r\n  \"\\u{f619}\",\r\n  (\"face\", \"\\u{f2fe}\"),\r\n  (\"storm\", \"\\u{f75a}\"),\r\n)\r\n#let portrait = symbol(\"\\u{f3e0}\")\r\n#let power-off = symbol(\"\\u{f011}\")\r\n#let pray = symbol(\"\\u{f683}\")\r\n#let prescription = symbol(\r\n  \"\\u{f5b1}\",\r\n  (\"bottle\", \"\\u{f485}\"),\r\n  (\"bottle.alt\", \"\\u{f486}\"),\r\n)\r\n#let print = symbol(\"\\u{f02f}\")\r\n#let procedures = symbol(\"\\u{f487}\")\r\n#let project-diagram = symbol(\"\\u{f542}\")\r\n\r\n#let pump = symbol(\r\n  (\"soap\", \"\\u{e06b}\"),\r\n  (\"medical\", \"\\u{e06a}\"),\r\n)\r\n#let puzzle-piece = symbol(\"\\u{f12e}\")\r\n#let qrcode = symbol(\"\\u{f029}\")\r\n#let question = symbol(\r\n  \"\\u{f128}\",\r\n  (\"circle\", \"\\u{f059}\"),\r\n)\r\n#let quidditch = symbol(\"\\u{f458}\")\r\n#let quote = symbol(\r\n  (\"left\", \"\\u{f10d}\"),\r\n  (\"right\", \"\\u{f10e}\"),\r\n)\r\n#let quran = symbol(\"\\u{f687}\")\r\n#let radiation = symbol(\r\n  \"\\u{f7b9}\",\r\n  (\"alt\", \"\\u{f7ba}\"),\r\n)\r\n#let rainbow = symbol(\"\\u{f75b}\")\r\n#let random = symbol(\"\\u{f074}\")\r\n#let receipt = symbol(\"\\u{f543}\")\r\n#let record-vinyl = symbol(\"\\u{f8d9}\")\r\n#let recycle = symbol(\"\\u{f1b8}\")\r\n#let redo = symbol(\r\n  \"\\u{f01e}\",\r\n  (\"alt\", \"\\u{f2f9}\"),\r\n)\r\n#let registered = symbol(\"\\u{f25d}\")\r\n#let remove-format = symbol(\"\\u{f87d}\")\r\n#let reply = symbol(\r\n  \"\\u{f3e5}\",\r\n  (\"all\", \"\\u{f122}\"),\r\n)\r\n#let republican = symbol(\"\\u{f75e}\")\r\n#let restroom = symbol(\"\\u{f7bd}\")\r\n#let retweet = symbol(\"\\u{f079}\")\r\n#let ribbon = symbol(\"\\u{f4d6}\")\r\n#let ring = symbol(\"\\u{f70b}\")\r\n\r\n\r\n#let road = symbol(\"\\u{f018}\")\r\n#let robot = symbol(\"\\u{f544}\")\r\n#let rocket = symbol(\"\\u{f135}\")\r\n#let route = symbol(\"\\u{f4d7}\")\r\n#let rss = symbol(\r\n  \"\\u{f09e}\",\r\n  (\"square\", \"\\u{f143}\"),\r\n)\r\n#let ruler = symbol(\r\n  \"\\u{f545}\",\r\n  (\"combined\", \"\\u{f546}\"),\r\n  (\"horizontal\", \"\\u{f547}\"),\r\n  (\"vertical\", \"\\u{f548}\"),\r\n)\r\n#let running = symbol(\"\\u{f70c}\")\r\n#let sad = symbol(\r\n  (\"cry\", \"\\u{f5b3}\"),\r\n  (\"tear\", \"\\u{f5b4}\"),\r\n)\r\n#let satellite = symbol(\r\n  \"\\u{f7bf}\",\r\n  (\"dish\", \"\\u{f7c0}\"),\r\n)\r\n#let save = symbol(\"\\u{f0c7}\")\r\n#let school = symbol(\"\\u{f549}\")\r\n#let screwdriver = symbol(\"\\u{f54a}\")\r\n#let scroll = symbol(\"\\u{f70e}\")\r\n#let sd-card = symbol(\"\\u{f7c2}\")\r\n#let search = symbol(\r\n  \"\\u{f002}\",\r\n  (\"dollar\", \"\\u{f688}\"),\r\n  (\"location\", \"\\u{f689}\"),\r\n  (\"minus\", \"\\u{f010}\"),\r\n  (\"plus\", \"\\u{f00e}\"),\r\n)\r\n#let seedling = symbol(\"\\u{f4d8}\")\r\n#let server = symbol(\"\\u{f233}\")\r\n#let shapes = symbol(\"\\u{f61f}\")\r\n#let share = symbol(\r\n  \"\\u{f064}\",\r\n  (\"alt\", \"\\u{f1e0}\"),\r\n  (\"alt-square\", \"\\u{f1e1}\"),\r\n  (\"square\", \"\\u{f14d}\"),\r\n)\r\n\r\n#let shield = symbol(\r\n  \"\\u{f3ed}\",\r\n  (\"virus\", \"\\u{e06c}\"),\r\n)\r\n#let ship = symbol(\"\\u{f21a}\")\r\n#let shipping-fast = symbol(\"\\u{f48b}\")\r\n#let shoe-prints = symbol(\"\\u{f54b}\")\r\n#let shopping-bag = symbol(\"\\u{f290}\")\r\n#let shopping-basket = symbol(\"\\u{f291}\")\r\n\r\n#let shower = symbol(\"\\u{f2cc}\")\r\n#let shuttle-van = symbol(\"\\u{f5b6}\")\r\n#let sign = symbol(\"\\u{f4d9}\")\r\n#let sign-in = symbol(\"\\u{f2f6}\")\r\n#let sign-out = symbol(\"\\u{f2f5}\")\r\n#let sign-language = symbol(\"\\u{f2a7}\")\r\n#let signal = symbol(\"\\u{f012}\")\r\n#let signature = symbol(\"\\u{f5b7}\")\r\n#let sim-card = symbol(\"\\u{f7c4}\")\r\n#let sink = symbol(\"\\u{e06d}\")\r\n#let sitemap = symbol(\"\\u{f0e8}\")\r\n#let skating = symbol(\"\\u{f7c5}\")\r\n#let skiing = symbol(\r\n  \"\\u{f7c9}\",\r\n  (\"nordic\", \"\\u{f7ca}\"),\r\n)\r\n#let skull = symbol(\r\n  \"\\u{f54c}\",\r\n  (\"crossbones\", \"\\u{f714}\"),\r\n)\r\n#let slash = symbol(\"\\u{f715}\")\r\n#let sleigh = symbol(\"\\u{f7cc}\")\r\n#let sliders-h = symbol(\"\\u{f1de}\")\r\n#let smile = symbol(\r\n  \"\\u{f118}\",\r\n  (\"beam\", \"\\u{f5b8}\"),\r\n  (\"wink\", \"\\u{f4da}\"),\r\n)\r\n#let smog = symbol(\"\\u{f75f}\")\r\n#let smoking = symbol(\r\n  \"\\u{f48d}\",\r\n  (\"ban\", \"\\u{f54d}\"),\r\n)\r\n#let sms = symbol(\"\\u{f7cd}\")\r\n#let snowboarding = symbol(\"\\u{f7ce}\")\r\n#let snowflake = symbol(\"\\u{f2dc}\")\r\n#let snowman = symbol(\"\\u{f7d0}\")\r\n#let snowplow = symbol(\"\\u{f7d2}\")\r\n#let soap = symbol(\"\\u{e06e}\")\r\n#let socks = symbol(\"\\u{f696}\")\r\n#let solar-panel = symbol(\"\\u{f5ba}\")\r\n#let sort = symbol(\r\n  \"\\u{f0dc}\",\r\n  (\"alpha.down\", \"\\u{f15d}\"),\r\n  (\"alpha.down.alt\", \"\\u{f881}\"),\r\n  (\"alpha.up\", \"\\u{f15e}\"),\r\n  (\"alpha.up.alt\", \"\\u{f882}\"),\r\n  (\"amount.down\", \"\\u{f160}\"),\r\n  (\"amount.down.alt\", \"\\u{f884}\"),\r\n  (\"amount.up\", \"\\u{f161}\"),\r\n  (\"amount.up.alt\", \"\\u{f885}\"),\r\n  (\"down\", \"\\u{f0dd}\"),\r\n  (\"numeric.down\", \"\\u{f162}\"),\r\n  (\"numeric.down.alt\", \"\\u{f886}\"),\r\n  (\"numeric.up\", \"\\u{f163}\"),\r\n  (\"numeric.up.alt\", \"\\u{f887}\"),\r\n  (\"up\", \"\\u{f0de}\"),\r\n)\r\n\r\n\r\n#let spa = symbol(\"\\u{f5bb}\")\r\n#let space-shuttle = symbol(\"\\u{f197}\")\r\n#let spell-check = symbol(\"\\u{f891}\")\r\n#let spider = symbol(\"\\u{f717}\")\r\n#let spinner = symbol(\"\\u{f110}\")\r\n#let splotch = symbol(\"\\u{f5bc}\")\r\n#let spray-can = symbol(\"\\u{f5bd}\")\r\n#let square = symbol(\r\n  \"\\u{f0c8}\",\r\n  (\"full\", \"\\u{f45c}\"),\r\n)\r\n#let square-root = symbol(\"\\u{f698}\")\r\n#let stamp = symbol(\"\\u{f5bf}\")\r\n#let star = symbol(\r\n  \"\\u{f005}\",\r\n  (\"crescent\", \"\\u{f699}\"),\r\n  (\"half\", \"\\u{f089}\"),\r\n  (\"half.alt\", \"\\u{f5c0}\"),\r\n  (\"david\", \"\\u{f69a}\"),\r\n  (\"life\", \"\\u{f621}\"),\r\n)\r\n#let step-backward = symbol(\"\\u{f048}\")\r\n#let step-forward = symbol(\"\\u{f051}\")\r\n#let stethoscope = symbol(\"\\u{f0f1}\")\r\n#let sticky-note = symbol(\"\\u{f249}\")\r\n#let stop = symbol(\r\n  \"\\u{f04d}\",\r\n  (\"circle\", \"\\u{f28d}\"),\r\n)\r\n#let stopwatch = symbol(\r\n  \"\\u{f2f2}\",\r\n  (\"sec20\", \"\\u{e06f}\"),\r\n)\r\n#let store = symbol(\r\n  \"\\u{f54e}\",\r\n  (\"slash\", \"\\u{e071}\"),\r\n  (\"alt\", \"\\u{f54f}\"),\r\n  (\"alt.slash\", \"\\u{e070}\"),\r\n)\r\n#let stream = symbol(\"\\u{f550}\")\r\n#let street-view = symbol(\"\\u{f21d}\")\r\n#let strikethrough = symbol(\"\\u{f0cc}\")\r\n#let stroopwafel = symbol(\"\\u{f551}\")\r\n#let subscript = symbol(\"\\u{f12c}\")\r\n#let subway = symbol(\"\\u{f239}\")\r\n#let suitcase = symbol(\r\n  \"\\u{f0f2}\",\r\n  (\"rolling\", \"\\u{f5c1}\"),\r\n)\r\n#let sun = symbol(\"\\u{f185}\")\r\n#let superscript = symbol(\"\\u{f12b}\")\r\n#let surprise = symbol(\"\\u{f5c2}\")\r\n#let swatchbook = symbol(\"\\u{f5c3}\")\r\n#let swimmer = symbol(\"\\u{f5c4}\")\r\n#let swimming-pool = symbol(\"\\u{f5c5}\")\r\n#let synagogue = symbol(\"\\u{f69b}\")\r\n#let sync = symbol(\r\n  \"\\u{f021}\",\r\n  (\"alt\", \"\\u{f2f1}\"),\r\n)\r\n#let syringe = symbol(\"\\u{f48e}\")\r\n#let table = symbol(\"\\u{f0ce}\")\r\n#let table-tennis = symbol(\"\\u{f45d}\")\r\n#let tablet = symbol(\r\n  \"\\u{f10a}\",\r\n  (\"alt\", \"\\u{f3fa}\"),\r\n)\r\n#let tablets = symbol(\"\\u{f490}\")\r\n#let tachometer = symbol(\"\\u{f3fd}\")\r\n#let tag = symbol(\r\n  \"\\u{f02b}\",\r\n  (\"plural\", \"\\u{f02c}\"),\r\n)\r\n#let tape = symbol(\"\\u{f4db}\")\r\n#let tasks = symbol(\"\\u{f0ae}\")\r\n#let taxi = symbol(\"\\u{f1ba}\")\r\n#let teeth = symbol(\r\n  \"\\u{f62e}\",\r\n  (\"open\", \"\\u{f62f}\"),\r\n)\r\n#let temperature = symbol(\r\n  (\"high\", \"\\u{f769}\"),\r\n  (\"low\", \"\\u{f76b}\"),\r\n)\r\n#let tenge = symbol(\"\\u{f7d7}\")\r\n#let terminal = symbol(\"\\u{f120}\")\r\n#let text-height = symbol(\"\\u{f034}\")\r\n#let text-width = symbol(\"\\u{f035}\")\r\n#let th = symbol(\r\n  \"\\u{f00a}\",\r\n  (\"large\", \"\\u{f009}\"),\r\n  (\"list\", \"\\u{f00b}\"),\r\n)\r\n#let theater-masks = symbol(\"\\u{f630}\")\r\n#let thermometer = symbol(\r\n  \"\\u{f491}\",\r\n  (\"empty\", \"\\u{f2cb}\"),\r\n  (\"full\", \"\\u{f2c7}\"),\r\n  (\"half\", \"\\u{f2c9}\"),\r\n  (\"quarter\", \"\\u{f2ca}\"),\r\n  (\"three-quarters\", \"\\u{f2c8}\"),\r\n)\r\n#let thumbs = symbol(\r\n  (\"up\", \"\\u{f164}\"),\r\n  (\"down\", \"\\u{f165}\"),\r\n)\r\n#let thumbtack = symbol(\"\\u{f08d}\")\r\n#let ticket = symbol(\"\\u{f3ff}\")\r\n#let times = symbol(\r\n  \"\\u{f00d}\",\r\n  (\"circle\", \"\\u{f057}\"),\r\n)\r\n#let tint = symbol(\r\n  \"\\u{f043}\",\r\n  (\"slash\", \"\\u{f5c7}\"),\r\n)\r\n#let tired = symbol(\"\\u{f5c8}\")\r\n#let toggle = symbol(\r\n  (\"off\", \"\\u{f204}\"),\r\n  (\"on\", \"\\u{f205}\"),\r\n)\r\n#let toilet = symbol(\"\\u{f7d8}\")\r\n#let toilet-paper = symbol(\r\n  \"\\u{f71e}\",\r\n  (\"slash\", \"\\u{e072}\"),\r\n)\r\n#let toolbox = symbol(\"\\u{f552}\")\r\n#let tools = symbol(\"\\u{f7d9}\")\r\n#let tooth = symbol(\"\\u{f5c9}\")\r\n#let torah = symbol(\"\\u{f6a0}\")\r\n#let torii-gate = symbol(\"\\u{f6a1}\")\r\n#let tractor = symbol(\"\\u{f722}\")\r\n#let trademark = symbol(\"\\u{f25c}\")\r\n#let traffic-light = symbol(\"\\u{f637}\")\r\n#let trailer = symbol(\"\\u{e041}\")\r\n#let train = symbol(\"\\u{f238}\")\r\n#let tram = symbol(\"\\u{f7da}\")\r\n#let transgender = symbol(\r\n  \"\\u{f224}\",\r\n  (\"alt\", \"\\u{f225}\"),\r\n)\r\n#let trash = symbol(\r\n  \"\\u{f1f8}\",\r\n  (\"alt\", \"\\u{f2ed}\"),\r\n  (\"restore\", \"\\u{f829}\"),\r\n  (\"restore.alt\", \"\\u{f82a}\"),\r\n)\r\n#let tree = symbol(\"\\u{f1bb}\")\r\n#let trophy = symbol(\"\\u{f091}\")\r\n#let truck = symbol(\r\n  \"\\u{f0d1}\",\r\n  (\"loading\", \"\\u{f4de}\"),\r\n  (\"monster\", \"\\u{f63b}\"),\r\n  (\"moving\", \"\\u{f4df}\"),\r\n  (\"pickup\", \"\\u{f63c}\"),\r\n)\r\n#let tshirt = symbol(\"\\u{f553}\")\r\n#let tty = symbol(\"\\u{f1e4}\")\r\n#let tv = symbol(\"\\u{f26c}\")\r\n#let umbrella = symbol(\r\n  \"\\u{f0e9}\",\r\n  (\"beach\", \"\\u{f5ca}\"),\r\n)\r\n#let underline-icon = symbol(\"\\u{f0cd}\")\r\n#let undo = symbol(\r\n  \"\\u{f0e2}\",\r\n  (\"alt\", \"\\u{f2ea}\"),\r\n)\r\n#let universal-access = symbol(\"\\u{f29a}\")\r\n#let university = symbol(\"\\u{f19c}\")\r\n#let unlink = symbol(\"\\u{f127}\")\r\n#let unlock = symbol(\r\n  \"\\u{f09c}\",\r\n  (\"alt\", \"\\u{f13e}\"),\r\n)\r\n#let upload = symbol(\"\\u{f093}\")\r\n#let user = symbol(\r\n  \"\\u{f007}\",\r\n  (\"alt\", \"\\u{f406}\"),\r\n  (\"alt.slash\", \"\\u{f4fa}\"),\r\n  (\"astronaut\", \"\\u{f4fb}\"),\r\n  (\"check\", \"\\u{f4fc}\"),\r\n  (\"circle\", \"\\u{f2bd}\"),\r\n  (\"clock\", \"\\u{f4fd}\"),\r\n  (\"cog\", \"\\u{f4fe}\"),\r\n  (\"edit\", \"\\u{f4ff}\"),\r\n  (\"friends\", \"\\u{f500}\"),\r\n  (\"graduate\", \"\\u{f501}\"),\r\n  (\"injured\", \"\\u{f728}\"),\r\n  (\"lock\", \"\\u{f502}\"),\r\n  (\"md\", \"\\u{f0f0}\"),\r\n  (\"minus\", \"\\u{f503}\"),\r\n  (\"ninja\", \"\\u{f504}\"),\r\n  (\"nurse\", \"\\u{f82f}\"),\r\n  (\"plus\", \"\\u{f234}\"),\r\n  (\"secret\", \"\\u{f21b}\"),\r\n  (\"shield\", \"\\u{f505}\"),\r\n  (\"slash\", \"\\u{f506}\"),\r\n  (\"tag\", \"\\u{f507}\"),\r\n  (\"tie\", \"\\u{f508}\"),\r\n  (\"times\", \"\\u{f235}\"),\r\n  (\"plural\", \"\\u{f0c0}\"),\r\n  (\"plural.cog\", \"\\u{f509}\"),\r\n  (\"plural.slash\", \"\\u{e073}\"),\r\n)\r\n#let utensils = symbol(\r\n  \"\\u{f2e7}\",\r\n  (\"spoon\", \"\\u{f2e5}\"),\r\n)\r\n#let vector-square = symbol(\"\\u{f5cb}\")\r\n#let venus = symbol(\r\n  \"\\u{f221}\",\r\n  (\"double\", \"\\u{f226}\"),\r\n  (\"mars\", \"\\u{f228}\"),\r\n)\r\n#let vest = symbol(\r\n  \"\\u{e085}\",\r\n  (\"patches\", \"\\u{e086}\"),\r\n)\r\n#let vial = symbol(\r\n  \"\\u{f492}\",\r\n  (\"plural\", \"\\u{f493}\"),\r\n)\r\n#let video = symbol(\r\n  \"\\u{f03d}\",\r\n  (\"slash\", \"\\u{f4e2}\"),\r\n)\r\n#let vihara = symbol(\"\\u{f6a7}\")\r\n#let virus = symbol(\r\n  \"\\u{e074}\",\r\n  (\"slash\", \"\\u{e075}\"),\r\n  (\"plural\", \"\\u{e076}\"),\r\n)\r\n#let voicemail = symbol(\"\\u{f897}\")\r\n\r\n#let volume = symbol(\r\n  (\"down\", \"\\u{f027}\"),\r\n  (\"mute\", \"\\u{f6a9}\"),\r\n  (\"off\", \"\\u{f026}\"),\r\n  (\"up\", \"\\u{f028}\"),\r\n)\r\n\r\n#let vote-yea = symbol(\"\\u{f772}\")\r\n#let vr-cardboard = symbol(\"\\u{f729}\")\r\n#let walking = symbol(\"\\u{f554}\")\r\n#let wallet = symbol(\"\\u{f555}\")\r\n#let warehouse = symbol(\"\\u{f494}\")\r\n#let water = symbol(\"\\u{f773}\")\r\n#let wave-square = symbol(\"\\u{f83e}\")\r\n#let weight = symbol(\"\\u{f496}\")\r\n#let weight-hanging = symbol(\"\\u{f5cd}\")\r\n#let wheelchair = symbol(\"\\u{f193}\")\r\n#let wifi = symbol(\"\\u{f1eb}\")\r\n#let wind = symbol(\"\\u{f72e}\")\r\n#let window = symbol(\r\n  (\"close\", \"\\u{f410}\"),\r\n  (\"maximize\", \"\\u{f2d0}\"),\r\n  (\"minimize\", \"\\u{f2d1}\"),\r\n  (\"restore\", \"\\u{f2d2}\"),\r\n)\r\n#let wine = symbol(\r\n  (\"bottle\", \"\\u{f72f}\"),\r\n  (\"glass\", \"\\u{f4e3}\"),\r\n  (\"glass-alt\", \"\\u{f5ce}\"),\r\n)\r\n#let wrench = symbol(\"\\u{f0ad}\")\r\n#let x-ray = symbol(\"\\u{f497}\")\r\n#let yin-yang = symbol(\"\\u{f6ad}\")\r\n\r\n// Brand icons\r\n\r\n#let px500 = symbol(\"\\u{f26e}\")\r\n#let accessible-icon = symbol(\"\\u{f368}\")\r\n#let accusoft = symbol(\"\\u{f369}\")\r\n#let acquisitions-incorporated = symbol(\"\\u{f6af}\")\r\n#let adn = symbol(\"\\u{f170}\")\r\n#let adversal = symbol(\"\\u{f36a}\")\r\n#let affiliatetheme = symbol(\"\\u{f36b}\")\r\n#let airbnb = symbol(\"\\u{f834}\")\r\n#let algolia = symbol(\"\\u{f36c}\")\r\n#let alipay = symbol(\"\\u{f642}\")\r\n#let amazon = symbol(\r\n  \"\\u{f270}\",\r\n  (\"pay\", \"\\u{f42c}\"),\r\n  (\"pay.cc\", \"\\u{f42d}\")\r\n)\r\n#let amilia = symbol(\"\\u{f36d}\")\r\n#let android = symbol(\"\\u{f17b}\")\r\n#let angellist = symbol(\"\\u{f209}\")\r\n#let angrycreative = symbol(\"\\u{f36e}\")\r\n#let angular = symbol(\"\\u{f420}\")\r\n#let app-store = symbol(\r\n  \"\\u{f36f}\",\r\n  (\"ios\", \"\\u{f370}\"),\r\n)\r\n#let apper = symbol(\"\\u{f371}\")\r\n#let artstation = symbol(\"\\u{f77a}\")\r\n#let asymmetrik = symbol(\"\\u{f372}\")\r\n#let atlassian = symbol(\"\\u{f77b}\")\r\n#let audible = symbol(\"\\u{f373}\")\r\n#let autoprefixer = symbol(\"\\u{f41c}\")\r\n#let avianex = symbol(\"\\u{f374}\")\r\n#let aviato = symbol(\"\\u{f421}\")\r\n#let aws = symbol(\"\\u{f375}\")\r\n#let bandcamp = symbol(\"\\u{f2d5}\")\r\n#let battle-net = symbol(\"\\u{f835}\")\r\n#let behance = symbol(\r\n  \"\\u{f1b4}\",\r\n  (\"square\", \"\\u{f1b5}\"),\r\n)\r\n#let bimobject = symbol(\"\\u{f378}\")\r\n#let bitbucket = symbol(\"\\u{f171}\")\r\n#let bitcoin = symbol(\"\\u{f379}\")\r\n#let bity = symbol(\"\\u{f37a}\")\r\n#let black-tie = symbol(\"\\u{f27e}\")\r\n#let blackberry = symbol(\"\\u{f37b}\")\r\n#let blogger = symbol(\r\n  \"\\u{f37c}\",\r\n  (\"b\", \"\\u{f37d}\"),\r\n)\r\n#let bluetooth = symbol(\r\n  \"\\u{f293}\",\r\n  (\"b\", \"\\u{f294}\"),\r\n)\r\n#let bootstrap = symbol(\"\\u{f836}\")\r\n#let btc = symbol(\"\\u{f15a}\")\r\n#let buffer = symbol(\"\\u{f837}\")\r\n#let buromobelexperte = symbol(\"\\u{f37f}\")\r\n#let buy-n-large = symbol(\"\\u{f8a6}\")\r\n#let canadian-maple-leaf = symbol(\"\\u{f785}\")\r\n#let amex = symbol(\"\\u{f1f3}\")\r\n#let diners-club = symbol(\"\\u{f24c}\")\r\n#let discover = symbol(\"\\u{f1f2}\")\r\n#let jcb = symbol(\"\\u{f24b}\")\r\n#let mastercard = symbol(\"\\u{f1f1}\")\r\n#let visa = symbol(\"\\u{f1f0}\")\r\n#let centercode = symbol(\"\\u{f380}\")\r\n#let centos = symbol(\"\\u{f789}\")\r\n#let chrome = symbol(\"\\u{f268}\")\r\n#let chromecast = symbol(\"\\u{f838}\")\r\n#let cloudflare = symbol(\"\\u{e07d}\")\r\n#let cloudscale = symbol(\"\\u{f383}\")\r\n#let cloudsmith = symbol(\"\\u{f384}\")\r\n#let cloudversify = symbol(\"\\u{f385}\")\r\n#let codepen = symbol(\"\\u{f1cb}\")\r\n#let codiepie = symbol(\"\\u{f284}\")\r\n#let confluence = symbol(\"\\u{f78d}\")\r\n#let connectdevelop = symbol(\"\\u{f20e}\")\r\n#let contao = symbol(\"\\u{f26d}\")\r\n#let cotton-bureau = symbol(\"\\u{f89e}\")\r\n#let cpanel = symbol(\"\\u{f388}\")\r\n#let creative-commons = symbol(\r\n  \"\\u{f25e}\",\r\n  (\"by\", \"\\u{f4e7}\"),\r\n  (\"nc\", \"\\u{f4e8}\"),\r\n  (\"nc.eu\", \"\\u{f4e9}\"),\r\n  (\"nc.jp\", \"\\u{f4ea}\"),\r\n  (\"nd\", \"\\u{f4eb}\"),\r\n  (\"pd\", \"\\u{f4ec}\"),\r\n  (\"pd.alt\", \"\\u{f4ed}\"),\r\n  (\"remix\", \"\\u{f4ee}\"),\r\n  (\"sa\", \"\\u{f4ef}\"),\r\n  (\"sampling\", \"\\u{f4f0}\"),\r\n  (\"sampling.plus\", \"\\u{f4f1}\"),\r\n  (\"share\", \"\\u{f4f2}\"),\r\n  (\"zero\", \"\\u{f4f3}\"),\r\n)\r\n#let critical-role = symbol(\"\\u{f6c9}\")\r\n#let css3 = symbol(\r\n  \"\\u{f13c}\",\r\n  (\"alt\", \"\\u{f38b}\"),\r\n)\r\n#let cuttlefish = symbol(\"\\u{f38c}\")\r\n#let d-and-d = symbol(\"\\u{f38d}\")\r\n#let d-and-d-beyond = symbol(\"\\u{f6ca}\")\r\n#let dailymotion = symbol(\"\\u{e052}\")\r\n#let dashcube = symbol(\"\\u{f210}\")\r\n#let deezer = symbol(\"\\u{e077}\")\r\n#let delicious = symbol(\"\\u{f1a5}\")\r\n#let deploydog = symbol(\"\\u{f38e}\")\r\n#let deskpro = symbol(\"\\u{f38f}\")\r\n#let dev = symbol(\"\\u{f6cc}\")\r\n#let deviantart = symbol(\"\\u{f1bd}\")\r\n#let dhl = symbol(\"\\u{f790}\")\r\n#let diaspora = symbol(\"\\u{f791}\")\r\n#let digg = symbol(\"\\u{f1a6}\")\r\n#let digital-ocean = symbol(\"\\u{f391}\")\r\n#let discord = symbol(\"\\u{f392}\")\r\n#let discourse = symbol(\"\\u{f393}\")\r\n#let dochub = symbol(\"\\u{f394}\")\r\n#let docker = symbol(\"\\u{f395}\")\r\n#let draft2digital = symbol(\"\\u{f396}\")\r\n#let dribbble = symbol(\r\n  \"\\u{f17d}\",\r\n  (\"square\", \"\\u{f397}\"),\r\n)\r\n#let dropbox = symbol(\"\\u{f16b}\")\r\n#let drupal = symbol(\"\\u{f1a9}\")\r\n#let dyalog = symbol(\"\\u{f399}\")\r\n#let earlybirds = symbol(\"\\u{f39a}\")\r\n#let ebay = symbol(\"\\u{f4f4}\")\r\n#let edge = symbol(\r\n  \"\\u{f282}\",\r\n  (\"legacy\", \"\\u{e078}\"),\r\n)\r\n#let elementor = symbol(\"\\u{f430}\")\r\n#let ello = symbol(\"\\u{f5f1}\")\r\n#let ember = symbol(\"\\u{f423}\")\r\n#let empire = symbol(\"\\u{f1d1}\")\r\n#let envira = symbol(\"\\u{f299}\")\r\n#let erlang = symbol(\"\\u{f39d}\")\r\n#let ethereum = symbol(\"\\u{f42e}\")\r\n#let etsy = symbol(\"\\u{f2d7}\")\r\n#let evernote = symbol(\"\\u{f839}\")\r\n#let expeditedssl = symbol(\"\\u{f23e}\")\r\n#let facebook = symbol(\r\n  \"\\u{f09a}\",\r\n  (\"f\", \"\\u{f39e}\"),\r\n  (\"messenger\", \"\\u{f39f}\"),\r\n  (\"square\", \"\\u{f082}\"),\r\n)\r\n#let fantasy-flight-games = symbol(\"\\u{f6dc}\")\r\n#let fedex = symbol(\"\\u{f797}\")\r\n#let fedora = symbol(\"\\u{f798}\")\r\n#let figma = symbol(\"\\u{f799}\")\r\n#let firefox = symbol(\r\n  \"\\u{f269}\",\r\n  (\"browser\", \"\\u{e007}\"),\r\n)\r\n#let first-order = symbol(\r\n  \"\\u{f2b0}\",\r\n  (\"alt\", \"\\u{f50a}\"),\r\n)\r\n#let firstdraft = symbol(\"\\u{f3a1}\")\r\n#let flickr = symbol(\"\\u{f16e}\")\r\n#let flipboard = symbol(\"\\u{f44d}\")\r\n#let fly = symbol(\"\\u{f417}\")\r\n#let font-awesome = symbol(\r\n  \"\\u{f2b4}\",\r\n  (\"alt\", \"\\u{f35c}\"),\r\n  (\"flag\", \"\\u{f425}\"),\r\n)\r\n#let fonticons = symbol(\r\n  \"\\u{f280}\",\r\n  (\"fi\", \"\\u{f3a2}\"),\r\n)\r\n#let fort-awesome = symbol(\r\n  \"\\u{f286}\",\r\n  (\"alt\", \"\\u{f3a3}\"),\r\n)\r\n#let forumbee = symbol(\"\\u{f211}\")\r\n#let foursquare = symbol(\"\\u{f180}\")\r\n#let free-code-camp = symbol(\"\\u{f2c5}\")\r\n#let freebsd = symbol(\"\\u{f3a4}\")\r\n#let fulcrum = symbol(\"\\u{f50b}\")\r\n#let galactic-republic = symbol(\"\\u{f50c}\")\r\n#let galactic-senate = symbol(\"\\u{f50d}\")\r\n#let get-pocket = symbol(\"\\u{f265}\")\r\n#let gg = symbol(\r\n  \"\\u{f260}\",\r\n  (\"circle\", \"\\u{f261}\"),\r\n)\r\n#let git = symbol(\r\n  \"\\u{f1d3}\",\r\n  (\"alt\", \"\\u{f841}\"),\r\n  (\"square\", \"\\u{f1d2}\"),\r\n)\r\n#let github = symbol(\r\n  \"\\u{f09b}\",\r\n  (\"alt\", \"\\u{f113}\"),\r\n  (\"square\", \"\\u{f092}\"),\r\n)\r\n#let gitkraken = symbol(\"\\u{f3a6}\")\r\n#let gitlab = symbol(\"\\u{f296}\")\r\n#let gitter = symbol(\"\\u{f426}\")\r\n#let glide = symbol(\r\n  \"\\u{f2a5}\",\r\n  (\"g\", \"\\u{f2a6}\"),\r\n)\r\n#let gofore = symbol(\"\\u{f3a7}\")\r\n#let goodreads = symbol(\r\n  \"\\u{f3a8}\",\r\n  (\"g\", \"\\u{f3a9}\"),\r\n)\r\n#let google = symbol(\r\n  \"\\u{f1a0}\",\r\n  (\"drive\", \"\\u{f3aa}\"),\r\n  (\"pay\", \"\\u{e079}\"),\r\n  (\"play\", \"\\u{f3ab}\"),\r\n  (\"plus\", \"\\u{f2b3}\"),\r\n  (\"plus-g\", \"\\u{f0d5}\"),\r\n  (\"plus-square\", \"\\u{f0d4}\"),\r\n  (\"wallet\", \"\\u{f1ee}\"),\r\n)\r\n#let gratipay = symbol(\"\\u{f184}\")\r\n#let grav = symbol(\"\\u{f2d6}\")\r\n#let gripfire = symbol(\"\\u{f3ac}\")\r\n#let grunt = symbol(\"\\u{f3ad}\")\r\n#let guilded = symbol(\"\\u{e07e}\")\r\n#let gulp = symbol(\"\\u{f3ae}\")\r\n#let hacker-news = symbol(\r\n  \"\\u{f1d4}\",\r\n  (\"square\", \"\\u{f3af}\"),\r\n)\r\n#let hackerrank = symbol(\"\\u{f5f7}\")\r\n#let hips = symbol(\"\\u{f452}\")\r\n#let hire-a-helper = symbol(\"\\u{f3b0}\")\r\n#let hive = symbol(\"\\u{e07f}\")\r\n#let hooli = symbol(\"\\u{f427}\")\r\n#let hornbill = symbol(\"\\u{f592}\")\r\n#let hotjar = symbol(\"\\u{f3b1}\")\r\n#let houzz = symbol(\"\\u{f27c}\")\r\n#let html5 = symbol(\"\\u{f13b}\")\r\n#let hubspot = symbol(\"\\u{f3b2}\")\r\n#let ideal = symbol(\"\\u{e013}\")\r\n#let imdb = symbol(\"\\u{f2d8}\")\r\n#let innosoft = symbol(\"\\u{e080}\")\r\n#let instagram = symbol(\r\n  \"\\u{f16d}\",\r\n  (\"square\", \"\\u{e055}\"),\r\n)\r\n#let instalod = symbol(\"\\u{e081}\")\r\n#let intercom = symbol(\"\\u{f7af}\")\r\n#let internet-explorer = symbol(\"\\u{f26b}\")\r\n#let invision = symbol(\"\\u{f7b0}\")\r\n#let ioxhost = symbol(\"\\u{f208}\")\r\n#let itch-io = symbol(\"\\u{f83a}\")\r\n#let itunes = symbol(\r\n  \"\\u{f3b4}\",\r\n  (\"note\", \"\\u{f3b5}\"),\r\n)\r\n#let java = symbol(\"\\u{f4e4}\")\r\n#let jedi-order = symbol(\"\\u{f50e}\")\r\n#let jenkins = symbol(\"\\u{f3b6}\")\r\n#let jira = symbol(\"\\u{f7b1}\")\r\n#let joget = symbol(\"\\u{f3b7}\")\r\n#let joomla = symbol(\"\\u{f1aa}\")\r\n#let js = symbol(\r\n  \"\\u{f3b8}\",\r\n  (\"square\", \"\\u{f3b9}\"),\r\n)\r\n#let jsfiddle = symbol(\"\\u{f1cc}\")\r\n#let kaggle = symbol(\"\\u{f5fa}\")\r\n#let keybase = symbol(\"\\u{f4f5}\")\r\n#let keycdn = symbol(\"\\u{f3ba}\")\r\n#let kickstarter = symbol(\r\n  \"\\u{f3bb}\",\r\n  (\"k\", \"\\u{f3bc}\"),\r\n)\r\n#let korvue = symbol(\"\\u{f42f}\")\r\n#let laravel = symbol(\"\\u{f3bd}\")\r\n#let lastfm = symbol(\"\\u{f202}\")\r\n#let lastfm-square = symbol(\"\\u{f203}\")\r\n#let leanpub = symbol(\"\\u{f212}\")\r\n#let less = symbol(\"\\u{f41d}\")\r\n#let line-icon = symbol(\"\\u{f3c0}\")\r\n#let linkedin = symbol(\r\n  \"\\u{f08c}\",\r\n  (\"in\", \"\\u{f0e1}\"),\r\n)\r\n#let linode = symbol(\"\\u{f2b8}\")\r\n#let linux = symbol(\"\\u{f17c}\")\r\n#let lyft = symbol(\"\\u{f3c3}\")\r\n#let magento = symbol(\"\\u{f3c4}\")\r\n#let mailchimp = symbol(\"\\u{f59e}\")\r\n#let mandalorian = symbol(\"\\u{f50f}\")\r\n#let markdown = symbol(\"\\u{f60f}\")\r\n#let mastodon = symbol(\"\\u{f4f6}\")\r\n#let maxcdn = symbol(\"\\u{f136}\")\r\n#let mdb = symbol(\"\\u{f8ca}\")\r\n#let medapps = symbol(\"\\u{f3c6}\")\r\n#let medium = symbol(\r\n  \"\\u{f23a}\",\r\n  (\"m\", \"\\u{f3c7}\"),\r\n)\r\n#let medrt = symbol(\"\\u{f3c8}\")\r\n#let meetup = symbol(\"\\u{f2e0}\")\r\n#let megaport = symbol(\"\\u{f5a3}\")\r\n#let mendeley = symbol(\"\\u{f7b3}\")\r\n#let microblog = symbol(\"\\u{e01a}\")\r\n#let microsoft = symbol(\"\\u{f3ca}\")\r\n#let mix = symbol(\"\\u{f3cb}\")\r\n#let mixcloud = symbol(\"\\u{f289}\")\r\n#let mixer = symbol(\"\\u{e056}\")\r\n#let mizuni = symbol(\"\\u{f3cc}\")\r\n#let modx = symbol(\"\\u{f285}\")\r\n#let monero = symbol(\"\\u{f3d0}\")\r\n#let napster = symbol(\"\\u{f3d2}\")\r\n#let neos = symbol(\"\\u{f612}\")\r\n#let nimblr = symbol(\"\\u{f5a8}\")\r\n#let node = symbol(\r\n  \"\\u{f419}\",\r\n  (\"js\", \"\\u{f3d3}\"),\r\n)\r\n#let npm = symbol(\"\\u{f3d4}\")\r\n#let ns8 = symbol(\"\\u{f3d5}\")\r\n#let nutritionix = symbol(\"\\u{f3d6}\")\r\n#let octopus-deploy = symbol(\"\\u{e082}\")\r\n#let odnoklassniki = symbol(\r\n  \"\\u{f263}\",\r\n  (\"square\", \"\\u{f264}\"),\r\n)\r\n#let old-republic = symbol(\"\\u{f510}\")\r\n#let opencart = symbol(\"\\u{f23d}\")\r\n#let openid = symbol(\"\\u{f19b}\")\r\n#let opera = symbol(\"\\u{f26a}\")\r\n#let optin-monster = symbol(\"\\u{f23c}\")\r\n#let orcid = symbol(\"\\u{f8d2}\")\r\n#let osi = symbol(\"\\u{f41a}\")\r\n#let page4 = symbol(\"\\u{f3d7}\")\r\n#let pagelines = symbol(\"\\u{f18c}\")\r\n#let palfed = symbol(\"\\u{f3d8}\")\r\n#let patreon = symbol(\"\\u{f3d9}\")\r\n#let paypal = symbol(\r\n  \"\\u{f1ed}\",\r\n  (\"cc\", \"\\u{f1f4}\"),\r\n)\r\n#let penny-arcade = symbol(\"\\u{f704}\")\r\n#let perbyte = symbol(\"\\u{e083}\")\r\n#let periscope = symbol(\"\\u{f3da}\")\r\n#let phabricator = symbol(\"\\u{f3db}\")\r\n#let phoenix-framework = symbol(\"\\u{f3dc}\")\r\n#let phoenix-squadron = symbol(\"\\u{f511}\")\r\n#let php = symbol(\"\\u{f457}\")\r\n#let pied-piper = symbol(\r\n  \"\\u{f2ae}\",\r\n  (\"alt\", \"\\u{f1a8}\"),\r\n  (\"hat\", \"\\u{f4e5}\"),\r\n  (\"pp\", \"\\u{f1a7}\"),\r\n  (\"square\", \"\\u{e01e}\"),\r\n)\r\n#let pinterest = symbol(\r\n  \"\\u{f0d2}\",\r\n  (\"p\", \"\\u{f231}\"),\r\n  (\"square\", \"\\u{f0d3}\"),\r\n)\r\n#let playstation = symbol(\"\\u{f3df}\")\r\n#let product-hunt = symbol(\"\\u{f288}\")\r\n#let pushed = symbol(\"\\u{f3e1}\")\r\n#let python = symbol(\"\\u{f3e2}\")\r\n#let qq = symbol(\"\\u{f1d6}\")\r\n#let quinscape = symbol(\"\\u{f459}\")\r\n#let quora = symbol(\"\\u{f2c4}\")\r\n#let r-project = symbol(\"\\u{f4f7}\")\r\n#let raspberry-pi = symbol(\"\\u{f7bb}\")\r\n#let ravelry = symbol(\"\\u{f2d9}\")\r\n#let react = symbol(\"\\u{f41b}\")\r\n#let reacteurope = symbol(\"\\u{f75d}\")\r\n#let readme = symbol(\"\\u{f4d5}\")\r\n#let rebel = symbol(\"\\u{f1d0}\")\r\n#let red-river = symbol(\"\\u{f3e3}\")\r\n#let reddit = symbol(\r\n  \"\\u{f1a1}\",\r\n  (\"alien\", \"\\u{f281}\"),\r\n  (\"square\", \"\\u{f1a2}\"),\r\n)\r\n#let redhat = symbol(\"\\u{f7bc}\")\r\n#let renren = symbol(\"\\u{f18b}\")\r\n#let replyd = symbol(\"\\u{f3e6}\")\r\n#let researchgate = symbol(\"\\u{f4f8}\")\r\n#let resolving = symbol(\"\\u{f3e7}\")\r\n#let rev = symbol(\"\\u{f5b2}\")\r\n#let rocketchat = symbol(\"\\u{f3e8}\")\r\n#let rockrms = symbol(\"\\u{f3e9}\")\r\n#let rust = symbol(\"\\u{e07a}\")\r\n#let safari = symbol(\"\\u{f267}\")\r\n#let salesforce = symbol(\"\\u{f83b}\")\r\n#let sass = symbol(\"\\u{f41e}\")\r\n#let schlix = symbol(\"\\u{f3ea}\")\r\n#let scribd = symbol(\"\\u{f28a}\")\r\n#let searchengin = symbol(\"\\u{f3eb}\")\r\n#let sellcast = symbol(\"\\u{f2da}\")\r\n#let sellsy = symbol(\"\\u{f213}\")\r\n#let servicestack = symbol(\"\\u{f3ec}\")\r\n#let shirtsinbulk = symbol(\"\\u{f214}\")\r\n#let shopify = symbol(\"\\u{e057}\")\r\n#let shopware = symbol(\"\\u{f5b5}\")\r\n#let simplybuilt = symbol(\"\\u{f215}\")\r\n#let sistrix = symbol(\"\\u{f3ee}\")\r\n#let sith = symbol(\"\\u{f512}\")\r\n#let sketch = symbol(\"\\u{f7c6}\")\r\n#let skyatlas = symbol(\"\\u{f216}\")\r\n#let skype = symbol(\"\\u{f17e}\")\r\n#let slack = symbol(\r\n  \"\\u{f198}\",\r\n  (\"hash\", \"\\u{f3ef}\"),\r\n)\r\n#let slideshare = symbol(\"\\u{f1e7}\")\r\n#let snapchat = symbol(\r\n  \"\\u{f2ab}\",\r\n  (\"ghost\", \"\\u{f2ac}\"),\r\n  (\"square\", \"\\u{f2ad}\"),\r\n)\r\n#let soundcloud = symbol(\"\\u{f1be}\")\r\n#let sourcetree = symbol(\"\\u{f7d3}\")\r\n#let speakap = symbol(\"\\u{f3f3}\")\r\n#let speaker-deck = symbol(\"\\u{f83c}\")\r\n#let spotify = symbol(\"\\u{f1bc}\")\r\n#let squarespace = symbol(\"\\u{f5be}\")\r\n#let stack-exchange = symbol(\"\\u{f18d}\")\r\n#let stack-overflow = symbol(\"\\u{f16c}\")\r\n#let stackpath = symbol(\"\\u{f842}\")\r\n#let staylinked = symbol(\"\\u{f3f5}\")\r\n#let steam = symbol(\r\n  \"\\u{f1b6}\",\r\n  (\"square\", \"\\u{f1b7}\"),\r\n  (\"symbol\", \"\\u{f3f6}\"),\r\n)\r\n#let sticker-mule = symbol(\"\\u{f3f7}\")\r\n#let strava = symbol(\"\\u{f428}\")\r\n#let stripe = symbol(\r\n  \"\\u{f429}\",\r\n  (\"s\", \"\\u{f42a}\"),\r\n  (\"cc\", \"\\u{f1f5}\"),\r\n)\r\n#let studiovinari = symbol(\"\\u{f3f8}\")\r\n#let stumbleupon = symbol(\r\n  \"\\u{f1a4}\",\r\n  (\"circle\", \"\\u{f1a3}\"),\r\n)\r\n#let superpowers = symbol(\"\\u{f2dd}\")\r\n#let supple = symbol(\"\\u{f3f9}\")\r\n#let suse = symbol(\"\\u{f7d6}\")\r\n#let swift = symbol(\"\\u{f8e1}\")\r\n#let symfony = symbol(\"\\u{f83d}\")\r\n#let teamspeak = symbol(\"\\u{f4f9}\")\r\n#let telegram = symbol(\r\n  \"\\u{f2c6}\",\r\n  (\"plane\", \"\\u{f3fe}\"),\r\n)\r\n#let tencent-weibo = symbol(\"\\u{f1d5}\")\r\n#let the-red-yeti = symbol(\"\\u{f69d}\")\r\n#let themeco = symbol(\"\\u{f5c6}\")\r\n#let themeisle = symbol(\"\\u{f2b2}\")\r\n#let think-peaks = symbol(\"\\u{f731}\")\r\n#let tiktok = symbol(\"\\u{e07b}\")\r\n#let trade-federation = symbol(\"\\u{f513}\")\r\n#let trello = symbol(\"\\u{f181}\")\r\n#let tumblr = symbol(\r\n  \"\\u{f173}\",\r\n  (\"square\", \"\\u{f174}\"),\r\n)\r\n#let twitch = symbol(\"\\u{f1e8}\")\r\n#let twitter = symbol(\r\n  \"\\u{f099}\",\r\n  (\"square\", \"\\u{f081}\"),\r\n)\r\n#let typo3 = symbol(\"\\u{f42b}\")\r\n#let uber = symbol(\"\\u{f402}\")\r\n#let ubuntu = symbol(\"\\u{f7df}\")\r\n#let uikit = symbol(\"\\u{f403}\")\r\n#let umbraco = symbol(\"\\u{f8e8}\")\r\n#let uncharted = symbol(\"\\u{e084}\")\r\n#let uniregistry = symbol(\"\\u{f404}\")\r\n#let unity = symbol(\"\\u{e049}\")\r\n#let unsplash = symbol(\"\\u{e07c}\")\r\n#let untappd = symbol(\"\\u{f405}\")\r\n#let ups = symbol(\"\\u{f7e0}\")\r\n#let usb = symbol(\"\\u{f287}\")\r\n#let usps = symbol(\"\\u{f7e1}\")\r\n#let ussunnah = symbol(\"\\u{f407}\")\r\n#let vaadin = symbol(\"\\u{f408}\")\r\n#let viacoin = symbol(\"\\u{f237}\")\r\n#let viadeo = symbol(\r\n  \"\\u{f2a9}\",\r\n  (\"square\", \"\\u{f2aa}\"),\r\n)\r\n#let viber = symbol(\"\\u{f409}\")\r\n#let vimeo = symbol(\r\n  \"\\u{f40a}\",\r\n  (\"square\", \"\\u{f194}\"),\r\n  (\"v\", \"\\u{f27d}\"),\r\n)\r\n#let vine = symbol(\"\\u{f1ca}\")\r\n#let vk = symbol(\"\\u{f189}\")\r\n#let vnv = symbol(\"\\u{f40b}\")\r\n#let vuejs = symbol(\"\\u{f41f}\")\r\n#let watchman-monitoring = symbol(\"\\u{e087}\")\r\n#let waze = symbol(\"\\u{f83f}\")\r\n#let weebly = symbol(\"\\u{f5cc}\")\r\n#let weibo = symbol(\"\\u{f18a}\")\r\n#let weixin = symbol(\"\\u{f1d7}\")\r\n#let whatsapp = symbol(\r\n  \"\\u{f232}\",\r\n  (\"square\", \"\\u{f40c}\"),\r\n)\r\n#let whmcs = symbol(\"\\u{f40d}\")\r\n#let wikipedia = symbol(\"\\u{f266}\")\r\n#let windows = symbol(\"\\u{f17a}\")\r\n#let wix = symbol(\"\\u{f5cf}\")\r\n#let wizards-of-the-coast = symbol(\"\\u{f730}\")\r\n#let wodu = symbol(\"\\u{e088}\")\r\n#let wolf-pack-battalion = symbol(\"\\u{f514}\")\r\n#let wordpress = symbol(\r\n  \"\\u{f19a}\",\r\n  (\"simple\", \"\\u{f411}\"),\r\n)\r\n#let wpbeginner = symbol(\"\\u{f297}\")\r\n#let wpexplorer = symbol(\"\\u{f2de}\")\r\n#let wpforms = symbol(\"\\u{f298}\")\r\n#let wpressr = symbol(\"\\u{f3e4}\")\r\n#let xbox = symbol(\"\\u{f412}\")\r\n#let xing = symbol(\r\n  \"\\u{f168}\",\r\n  (\"square\", \"\\u{f169}\"),\r\n)\r\n#let y-combinator = symbol(\"\\u{f23b}\")\r\n#let yahoo = symbol(\"\\u{f19e}\")\r\n#let yammer = symbol(\"\\u{f840}\")\r\n#let yandex = symbol(\r\n  \"\\u{f413}\",\r\n  (\"international\", \"\\u{f414}\"),\r\n)\r\n#let yarn = symbol(\"\\u{f7e3}\")\r\n#let yelp = symbol(\"\\u{f1e9}\")\r\n#let yoast = symbol(\"\\u{f2b1}\")\r\n#let youtube = symbol(\r\n  \"\\u{f167}\",\r\n  (\"square\", \"\\u{f431}\"),\r\n)\r\n#let zhihu = symbol(\"\\u{f63f}\")\r\n"
  },
  {
    "path": "src/lib.typ",
    "content": "/*\n * Package entry point\n */\n\n#import \"./chicv.typ\": *\n"
  },
  {
    "path": "template/resume.typ",
    "content": "#import \"/src/chicv.typ\": *\n\n#show: chicv.with(\n  margin: (x: 1cm, top: 1.5cm, bottom: 2cm),\n  par-padding: (left: 0pt, right: 0pt),\n)\n\n= Chi Zhang\n\n#personal-info(\n  email: \"iskyzh@gmail.com\",\n  github: \"https://github.com/skyzh\",\n  website: \"https://skyzh.dev\",\n  linkedin: \"https://www.linkedin.com/in/alex-chi-skyzh/\",\n  // x-twitter: \"https://twitter.com/iskyzh\",\n  // (link: \"https://typst.app/\", text: \"Typst\", icon: \"t\", solid: true),\n)\n\n== Education\n\n#cventry(\n  tl: \"Carnegie Mellon University\",\n  tr: dates(from: \"2022/08\", to: \"2023/12\"),\n  bl: \"Master of Science in Computer Science, GPA 4.10/4.33\",\n  br: \"Pittsburgh, PA, USA\"\n)[\n  - Teaching Assistant for 15-445/645 Database Systems (Fall 2022, Spring 2023, Fall 2023)\n  - Courses: Distributed Systems, Compiler Design, Advanced Database Systems, Deep Learning Systems, etc.\n]\n\n// by default, #cventry will bold top-left text\n#cventry(\n  tl: \"Shanghai Jiao Tong University\",\n  tr: dates(from: \"2018/09\", to: \"2022/06\"),\n  bl: \"Bachelor of Engineering in Computer Science and Technology\",\n  br: \"Shangehai, China\"\n)[\n  - GPA 93.80/100, Rank 1/149, National Scholarship 2019 (Top 0.2% national-wide)\n  - A+ Courses: Operating Systems, Computer Architecture, Computer Networks, and 28 others\n]\n\n== Work Experience\n\n// but you can override the default bold style by passing content blocks\n#cventry(\n  tl: [#link(\"https://neon.tech\")[*Neon*]],\n  tr: dates(from: \"2024/02\"),\n  bl: [Systems Software Engineer],\n  br: [Remote / Pittsburgh, PA, USA],\n  // you can also override the default padding of content blocks\n  padding: (bottom: -5pt)\n)[]\n\n#cventry(\n  tl: [_... and also_],\n  tr: dates(from: \"2023/05\", to: \"2023/08\"),\n  bl: [Software Engineer Intern],\n  br: [Remote / Pittsburgh, PA, USA],\n)[\n  - Neon is a fully-managed PostgreSQL service built on a key-value storage engine with point-to-time recovery support.\n  - *Compaction Strategy Enhancement*. Conducted an in-depth analysis and evaluation of the storage engine to assess performance metrics and storage space efficiency. Implemented the RocksDB-style tiered compaction and improved page reconstruction strategy, which reduced space amplification by 2x and enhanced read-update performance by 20%.\n - *Improved User Adoption on the Edge*. Enhanced the overall reliability of the Neon serverless driver and the control plane proxy. Collaborated closely with the #link(\"https://github.com/prisma/prisma\", [Prisma]) ORM team to integrate the serverless driver into Prisma and ensured compatibility with Vercel Edge Runtime by transitioning the Rust Prisma engine codebase to be WebAssembly-ready.\n]\n\n#cventry(\n  tl: [#link(\"https://risingwave.com/\", [*RisingWave Labs*])],\n  tr: dates(from: \"2021/08\", to: \"2022/07\"),\n  bl: [Database System R&D Intern],\n  br: [Shanghai, China]\n)[\n  - *Top contributor of #githublink(\"https://github.com/risingwavelabs/risingwave\", text: \"RisingWave\")*. RisingWave is a database system with PostgreSQL-compatible interface that incrementally maintains materialized views. Worked on features including streaming index joins, query optimization of stream plans, distributed streaming execution, cloud-native LSM state store, vectorized expression framework.\n  - *Streaming Index Joins*:  Designed shared state and streaming index in RisingWave; implemented index lookup join executor; implemented delta join DAG optimizer transformations; implemented distributed delta join scheduler.\n  - *Performance Improvement*:  Conducted intensive benchmarks and analyzed performance issues. Fixed bugs, proposed strategies, and led cross-team collaboration which improved the system throughput by 10x in a 3-month period.\n  - *Developer Experience*.  Initiated the RiseDev development tool and the developer dashboard, which is deeply integrated into the development workflow across debugging, unit testing, integration testing, and benchmarking.\n  - *Mentoring*. Mentored database kernel interns and helped their successful integration into the team. Maintained overview documents of the database kernel to facilitate knowledge transfer and help new hires learn about the system.\n]\n\n#cventry(\n  tl: \"ByteDance\",\n  tr: dates(from: \"2021/06\", to: \"2021/08\"),\n  bl: \"Storage System R&D Intern, TerarkDB Team\",\n  br: \"Beijing, China\"\n)[\n  - *Co-Optimized #githublink(text: \"TerarkDB\", \"https://github.com/bytedance/terarkdb\")* and *#githublink(text: \"ZenFS\", \"https://github.com/westerndigitalcorporation/zenfs\")*. TerarkDB is a fork of RocksDB and ZenFS is a filesystem on Zoned Namespaces (ZNS) SSDs. Implemented Zone-aware Garbage Collection in TerarkDB for ZNS and WAL-Aware Zone Allocator in ZenFS, which reduced 3-4x of space amplification and greatly improved tail latencies caused by zone allocation.\n]\n\n#cventry(\n  tl: \"PingCAP\",\n  tr: dates(from: \"2020/08\", to: \"2021/01\"),\n  bl: \"Storage System R&D Intern, TiKV Storage Team\",\n  br: \"Shanghai, China\"\n)[\n  - Built LSM-based storage engine *#githublink(\"https://github.com/tikv/agatedb\", text: \"AgateDB\")* from ground-up. Inspired by WiscKey and BadgerDB, AgateDB separates large values from the LSM tree into a separate value log, so as to reduce write amplification and improve throughput.\n]\n\n== Open-Source Contributions\n\n#cventry(\n  tl: [\n    *BusTub* #githublink(\"https://github.com/cmu-db/bustub\", text: \"cmu-db/bustub\") _as Teaching Assistant for Database Systems_\n  ],\n  tr: dates(from: \"2022/08\", to: \"2023/12\")\n)[\n  - Lead the development of the BusTub educational database system and course projects in CMU Database Systems course.\n - Added query processing layer to the system with PostgreSQL syntax support. Restructured the query execution project.\n - Added multi-version concurrency control to the system based on HyPer/Umbra undo log version chain implementation.\n - Redesigned course projects to help students better understand the concepts and align with industrial database systems.\n - Developed leaderboard tests to challenge advanced students and enable further study in optimizing database systems.\n]\n\n#cventry(\n  tl: [\n    *RisingLight Maintainer* #githublink(\"https://github.com/risinglightdb\", text: \"risinglightdb\")\n  ],\n  tr: dates(from: \"2022/01\")\n)[\n  -  Lead the development of RisingLight, an OLAP database system in Rust for educational purpose. RisingLight supports simple TPC-H queries, and has a merge-tree based columnar storage.\n]\n\n#cventry(\n  tl: [\n    *TiKV Community* #githublink(\"https://github.com/tikv\", text: \"tikv\")\n  ],\n  tr: dates(from: \"2020/05\")\n)[\n  - Maintains TiKV Coprocessor, the push-down execution framework of TiDB. Mentored community members to contribute features (e.g. new data types, plugin system) in the *LFX Mentorship*. #iconlink(\"https://github.com/tikv/tikv/issues/9066\")  #iconlink(\"https://github.com/tikv/tikv/issues/9747\")\n]\n\n#cventry(\n  tl: [\n    *Personal Projects* #githublink(text: \"skyzh\", \"https://github.com/skyzh\")\n  ],\n  tr: [6.6k followers on GitHub]\n)[\n  - *#githublink(text: \"mini-lsm\", \"https://github.com/skyzh/mini-lsm\")* (#fa-icon(\"star\", solid: true) 2k) Build a simple LSM-Tree storage system in Rust in a week\n  - *#githublink(text: \"type-exercise-in-rust\", \"https://github.com/skyzh/mini-lsm\")* (#fa-icon(\"star\", solid: true) 1k) Learn Rust generics by implementing a vectorized expression evaluation framework\n]\n\n== Research Experience\n\n#cventry(\n  tl: [*Adaptive Query Optimization Framework* #githublink(\"https://github.com/cmu-db/optd\", text: \"cmu-db/optd\")],\n  tr: dates(from: \"2023/09\", to: \"2023/12\"),\n  bl: [CMU Database Group, advised by Professor Andy Pavlo],\n  br: [Pittsburgh, PA, USA]\n)[\n  - *Developed optd*, an optimizer framework based on the Columbia Cascades paper targeting real-time OLAP queries.\n  - *Adaptive Optimization*. optd collects statistics during execution and uses runtime data to guide later plan searches.\n  - *Partial Exploration*. optd explores plans by reusing and incrementally expanding the plan space from the last search.\n]\n\n#cventry(\n tl: [*PostgreSQL Extension Manager* #githublink(\"https://github.com/cmu-db/pgextmgrext\", text: \"cmu-db/pgextmgrext\")],\n tr: dates(from: [2023/02], to: [2023/05]),\n bl: [CMU Database Group, advised by Professor Andy Pavlo],\n br:[Pittsburgh, PA, USA]\n)[\n - *Implemented pgextmgrext*, a PostgreSQL extension that manages other PostgreSQL extensions and provides new APIs to PostgreSQL extension developers that enables them to write new extensions with fewer lines of code.\n - *Integration with PostgreSQL Ecosystem*. Integrated pg_hint_plan with the extension manager. Implemented output rewriter in the extension manager, and based on that, a demo extension pg_poop that rewrites all text to poop emojis.\n]\n\n== Skills\n\n- *Programming Languages*: Rust (6 years), C++, Python, Node.js and Golang\n- *Tech Skills*: Stream-Processing Systems, Database Systems (Optimizer and Query Execution), Key-Value Storage Systems, SSD-optimized File System\n\n#align(right, text(fill: gray)[Last Updated on #today()])\n"
  },
  {
    "path": "tests/.gitignore",
    "content": "diff/\nout/\n"
  },
  {
    "path": "tests/.ignore",
    "content": "**.png\n**.svg\n**.pdf\n"
  },
  {
    "path": "tests/test1/test.typ",
    "content": "Hello World\n"
  },
  {
    "path": "typst.toml",
    "content": "[package]\nname = \"chicv-ripoff\"\nversion = \"1.0.0\"\nentrypoint = \"src/lib.typ\"\nauthors = [\"@matchy233\"]\nlicense = \"MIT\"\ndescription = \"A minimal and fully-customizable CV template.\"\nrepository = \"https://github.com/matchy233/typst-chi-cv-template\"\nkeywords = [\"cv\"]\ncategories = [\"cv\"]\n\n[template]\npath = \"template\"\nentrypoint = \"resume.typ\"\nthumbnail = \"resume.png\"\n"
  }
]